OSDN Git Service

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