OSDN Git Service

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