OSDN Git Service

728c2a115dbbf045eda022a149871ed9d48a3e61
[keitairc/keitairc.git] / lib / Keitairc / Config.pm
1 # -*- mode: perl; coding: utf-8 -*-
2 # Keitairc::Config
3 # $Id: Config.pm,v 1.31 2009-01-03 07:28:15 nyan_ 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_listen_port
36                    web_port web_title web_lines web_root web_schema
37                    web_username web_password web_host web_charset
38                    extra_header fontsize mobile_fontsize silent_config
39                    show_newmsgonly show_joinleave show_console
40                    ping_delay reconnect_delay follow_nick
41                    smtp_server smtp_from smtp_to debug
42                    version daemonize pid_dir pid_file
43                    template_dir plugin_dir public_dir
44                    url_target url_redirect
45                    rgeocode_server
46                    reverse_message reverse_recent reverse_unread)
47                 );
48
49         # set default values
50         $me->version($arg->{version});
51         $me->silent_config($arg->{silent});
52         $me->irc_desc('keitairc');
53         $me->irc_port(6667);
54         $me->irc_charset('iso-2022-jp-1');
55         $me->web_port(8080);
56         $me->web_title('keitairc');
57         $me->web_lines(100);
58         $me->web_root('/');
59         $me->web_charset('shiftjis');
60         $me->web_schema('http');
61         $me->ping_delay(30);
62         $me->reconnect_delay(10);
63         $me->cookie_ttl(86400 * 3);  # 3 days
64         $me->session_ttl(60 * 30);  # 30 min
65         $me->pid_dir('/var/run');
66         $me->pid_file('keitairc.pid');
67         $me->plugin_dir(getcwd() . '/lib/plugins:/usr/share/keitairc/lib/plugins');
68         $me->template_dir(getcwd() . '/lib/templates:/usr/share/keitairc/lib/templates');
69         $me->public_dir(getcwd() . '/lib/public:/usr/share/keitairc/lib/public');
70         $me->reverse_message(1);
71         $me->reverse_recent(1);
72         $me->reverse_unread(1);
73         $me->show_joinleave(1);
74         $me->show_console(0);
75         $me->fontsize('+0');
76         $me->mobile_fontsize(-1);
77         $me->url_target('_self');
78         $me->follow_nick(1);
79         $me->rgeocode_server('refits');
80         $me->debug(0);
81         $me->daemonize(0);
82
83         if(-r '/etc/keitairc'){
84                 $me->file('/etc/keitairc');
85         }
86         if(-r $ENV{HOME} . '/.keitairc'){
87                 $me->file($ENV{HOME} . '/.keitairc');
88         }
89
90         if(defined $argv[0]){
91                 if(-r $argv[0]){
92                         $me->file($argv[0]);
93                         shift(@argv);
94                 }
95         }
96
97         $me->args(\@argv);
98
99         if(defined $me->show_newmsgonly()){
100                 Keitairc::Log::log('show_newmsgonly has obsoleted from keitairc 2.0');
101         }
102
103         if(defined $me->web_username()){
104                 Keitairc::Log::log('web_username has obsoleted from keitairc 2.0');
105         }
106
107         if(defined $me->use_cookie()){
108                 Keitairc::Log::log('use_cookie has obsoleted from keitairc 2.0');
109         }
110
111         if(defined $me->au_pcsv()){
112                 Keitairc::Log::log('au_pcsv has obsoleted from keitairc 2.0');
113         }
114
115         if(!defined($me->irc_nick()) || !length($me->irc_nick())){
116                 Keitairc::Log::log_die('irc_nick does not specified');
117         }
118
119         if(!defined($me->irc_username()) || !length($me->irc_username())){
120                 Keitairc::Log::log_die('irc_username does not specified');
121         }
122
123         if(!defined($me->irc_server()) || !length($me->irc_server())){
124                 Keitairc::Log::log_die('irc_server does not specified');
125         }
126
127         if(!defined($me->web_listen_port()) || !length($me->web_listen_port())){
128                 $me->web_listen_port($me->web_port());
129         }
130
131         if(!defined($me->web_host()) || !length($me->web_host())){
132                 Keitairc::Log::log_die('web_host does not specified');
133         }
134
135         if(!defined($me->web_password()) || !length($me->web_password())){
136                 Keitairc::Log::log_die('web_password does not specified');
137         }
138
139         $me;
140 }
141
142 ################################################################
143 sub file{
144         my $me = shift;
145         my $file = shift;
146         if(-r $file){
147                 $me->SUPER::file($file);
148                 Keitairc::Log::log("Loaded configuration file: $file")
149                         unless $me->silent_config();
150                 return;
151         }
152         Keitairc::Log::log("$file does not exist");
153 }
154
155 1;