OSDN Git Service

added maps.google.com as alternate rgeocode server
[keitairc/keitairc.git] / lib / Keitairc / Config.pm
1 # -*- mode: perl; coding: utf-8 -*-
2 # Keitairc::Config
3 # $Id: Config.pm,v 1.23 2008-12-28 15:26:03 morimoto Exp $
4 # $Source: /home/ishikawa/work/keitairc/tmp/keitairc/lib/Keitairc/Config.pm,v $
5 #
6 # Copyright (c) 2008 Jun Morimoto <morimoto@mrmt.net>
7 # This program is covered by the GNU General Public License 2
8
9 package Keitairc::Config;
10 use AppConfig qw(:argcount);
11 use Cwd;
12 use strict;
13 use warnings;
14 our @ISA = qw(AppConfig);
15
16 ################################################################
17 sub new{
18         my $class = shift;
19         my $arg = shift;
20         my @argv = @{$arg->{argv}};
21         my $me = $class->SUPER::new(
22                 {
23                         CASE => 1,
24                         GLOBAL => {
25                                 ARGCOUNT => ARGCOUNT_ONE,
26                         }
27                 },
28                 qw(irc_nick irc_username irc_desc
29                    irc_server irc_port irc_password
30                    irc_keyword irc_charset
31                    au_subscriber_id au_pcsv
32                    docomo_foma_icc docomo_imodeid
33                    softbank_serial_key emobile_userid
34                    use_cookie cookie_ttl session_ttl
35                    web_port web_title web_lines web_root
36                    web_username web_password web_host web_charset
37                    fontsize mobile_fontsize silent_config
38                    show_newmsgonly show_joinleave show_console
39                    ping_delay reconnect_delay follow_nick
40                    smtp_server smtp_from smtp_to debug use_iui
41                    version daemonize pid_dir pid_file
42                    template_dir plugin_dir public_dir
43                    rgeocode_server
44                    reverse_message reverse_recent reverse_unread)
45                 );
46
47         # set default values
48         $me->version($arg->{version});
49         $me->silent_config($arg->{silent});
50         $me->irc_desc('keitairc');
51         $me->irc_port(6667);
52         $me->irc_charset('iso-2022-jp-1');
53         $me->web_port(8080);
54         $me->web_title('keitairc');
55         $me->web_lines(100);
56         $me->web_root('/');
57         $me->web_charset('shiftjis');
58         $me->ping_delay(30);
59         $me->reconnect_delay(10);
60         $me->cookie_ttl(86400 * 3);  # 3 days
61         $me->session_ttl(60 * 30);  # 30 min
62         $me->pid_dir('/var/run');
63         $me->pid_file('keitairc.pid');
64         $me->plugin_dir(getcwd() . '/lib/plugins:/usr/share/keitairc/lib/plugins');
65         $me->template_dir(getcwd() . '/lib/templates:/usr/share/keitairc/lib/templates');
66         $me->public_dir(getcwd() . '/lib/public:/usr/share/keitairc/lib/public');
67         $me->reverse_message(1);
68         $me->reverse_recent(1);
69         $me->reverse_unread(1);
70         $me->show_joinleave(1);
71         $me->fontsize('+0');
72         $me->use_iui(0);
73         $me->mobile_fontsize(-1);
74         $me->follow_nick(1);
75         $me->rgeocode_server('refits');
76         $me->debug(0);
77
78         if(-r '/etc/keitairc'){
79                 $me->file('/etc/keitairc');
80         }
81         if(-r $ENV{HOME} . '/.keitairc'){
82                 $me->file($ENV{HOME} . '/.keitairc');
83         }
84
85         if(defined $argv[0]){
86                 if(-r $argv[0]){
87                         $me->file($argv[0]);
88                         shift(@argv);
89                 }
90         }
91
92         $me->args(\@argv);
93
94         if(defined $me->show_newmsgonly()){
95                 Keitairc::Log::log('show_newmsgonly has obsoleted from keitairc 2.0');
96         }
97
98         if(defined $me->web_username()){
99                 Keitairc::Log::log('web_username has obsoleted from keitairc 2.0');
100         }
101
102         if(defined $me->use_cookie()){
103                 Keitairc::Log::log('use_cookie has obsoleted from keitairc 2.0');
104         }
105
106         if(defined $me->au_pcsv()){
107                 Keitairc::Log::log('au_pcsv has obsoleted from keitairc 2.0');
108         }
109
110         if(!defined($me->irc_nick()) || !length($me->irc_nick())){
111                 Keitairc::Log::log_die('irc_nick does not specified');
112         }
113
114         if(!defined($me->irc_username()) || !length($me->irc_username())){
115                 Keitairc::Log::log_die('irc_username does not specified');
116         }
117
118         if(!defined($me->irc_server()) || !length($me->irc_server())){
119                 Keitairc::Log::log_die('irc_server does not specified');
120         }
121
122         if(!defined($me->web_port()) || !length($me->web_port())){
123                 Keitairc::Log::log_die('web_port does not specified');
124         }
125
126         if(!defined($me->web_host()) || !length($me->web_host())){
127                 Keitairc::Log::log_die('web_host does not specified');
128         }
129
130         if(!defined($me->web_password()) || !length($me->web_password())){
131                 Keitairc::Log::log_die('web_password does not specified');
132         }
133
134         $me;
135 }
136
137 ################################################################
138 sub file{
139         my $me = shift;
140         my $file = shift;
141         if(-r $file){
142                 $me->SUPER::file($file);
143                 Keitairc::Log::log("Loaded configuration file: $file")
144                         unless $me->silent_config();
145                 return;
146         }
147         Keitairc::Log::log("$file does not exist");
148 }
149
150 1;