OSDN Git Service

add maxlength to handle privmsg maxlength
[keitairc/keitairc.git] / keitairc
index baf1f7a..fc7afd4 100755 (executable)
--- a/keitairc
+++ b/keitairc
@@ -36,24 +36,29 @@ use strict;
 use warnings;
 
 our $cf = new Keitairc::Config({version => '2.1a1', argv => \@ARGV});
-our $ib = new Keitairc::IrcBuffer({history => $cf->web_lines()});
-our $sm = new Keitairc::SessionManager({default_ttl => $cf->session_ttl()});
-our $pl = new Keitairc::Plugins({config => $cf});
 
 # daemonize
 if($cf->daemonize()){
-       use Proc::Daemon;
-
-       Proc::Daemon::Init;
-       if(length $cf->pid_dir()){
-               if (open(PID, '> ' . $cf->pid_dir() . '/' . $cf->pid_file())) {
-                       print PID $$, "\n";
-                       close(PID);
+       if (eval 'require Proc::Daemon') {
+               require Proc::Daemon;
+               Proc::Daemon::Init();
+               if(length $cf->pid_dir()){
+                       if (open(PID, '> ' . $cf->pid_dir() . '/' . $cf->pid_file())) {
+                               print PID $$, "\n";
+                               close(PID);
+                       }
                }
+               $poe_kernel->has_forked if ($poe_kernel->can('has_forked'));
+       } else {
+               warn('Proc::Daemon module is not installed, could not daemonize');
        }
-       $poe_kernel->has_forked if ($poe_kernel->can('has_forked'));
 }
 
+our $log = new Keitairc::Log({config => $cf});
+our $ib = new Keitairc::IrcBuffer({history => $cf->web_lines()});
+our $sm = new Keitairc::SessionManager({default_ttl => $cf->session_ttl()});
+our $pl = new Keitairc::Plugins({config => $cf});
+
 # create irc component
 our $irc = POE::Component::IRC->spawn(
        Alias => 'keitairc_irc',
@@ -117,8 +122,10 @@ sub http_request{
        # the responses as they are and finish up.
        if($request->isa('HTTP::Response')){
                $heap->{client}->put($request);
+               $log->log_error($request->as_string());
        }elsif(my $response = dispatch($request)){
                $heap->{client}->put($response);
+               $log->log_access($heap->{'remote_ip'}, $request, $response);
        }
 
        $kernel->yield('shutdown');
@@ -130,7 +137,7 @@ sub dispatch{
        my $uri = $request->uri();
        my $ci = new Keitairc::ClientInfo($request);
 
-       Keitairc::Log::log_debug("dispatch: $uri");
+       $log->log_debug("dispatch: $uri");
 
        {
                # chop off $cf->web_root()
@@ -203,8 +210,8 @@ sub action_login{
        my $content = $request->decoded_content();
        my ($password) = ($content =~ /^password=(.*)/);
 
-       Keitairc::Log::log_debug("password [$password]");
-       Keitairc::Log::log_debug("web_password [" . $cf->web_password() . "]");
+       $log->log_debug("password [$password]");
+       $log->log_debug("web_password [" . $cf->web_password() . "]");
 
        if($cf->web_password() eq $password){
                my $s = $sm->add($ci->user_agent(), $ci->serial_key());
@@ -233,12 +240,12 @@ sub action_error {
 }
 
 ################################################################
-sub action_public{
+sub action_public {
        my $request = shift;
        my $uri = shift;        # such as '/favicon.ico'
        my $ci = new Keitairc::ClientInfo($request);
        my $view = new Keitairc::View($cf, $ci);
-       return $view->public($uri);
+       return $view->public($request, $uri);
 }
 
 ################################################################
@@ -253,14 +260,14 @@ sub action_login_icc{
                if(length $docomo_foma_icc){
                        if(my $s = $sm->verify({serial_key => $docomo_foma_icc,
                                                user_agent => $ci->user_agent()})){
-                               Keitairc::Log::log_debug("redirect to /$s->{id}/index from docomo_foma_icc");
+                               $log->log_debug("redirect to /$s->{id}/index from docomo_foma_icc");
                                my $view = new Keitairc::View($cf, $ci, $s->{id});
                                return $view->redirect("/$s->{id}/index");
                        }
 
                        if($docomo_foma_icc eq $cf->docomo_foma_icc()){
                                my $s = $sm->add($ci->user_agent(), $docomo_foma_icc);
-                               Keitairc::Log::log_debug("redirect to /$s->{id}/index from docomo_foma_icc");
+                               $log->log_debug("redirect to /$s->{id}/index from docomo_foma_icc");
                                my $view = new Keitairc::View($cf, $ci, $s->{id});
                                return $view->redirect("/$s->{id}/index");
                        }
@@ -289,14 +296,14 @@ sub action_login_imodeid{
                if(length $docomo_imodeid){
                        if(my $s = $sm->verify({serial_key => $docomo_imodeid,
                                                user_agent => $ci->user_agent()})){
-                               Keitairc::Log::log_debug("redirect to /$s->{id}/index from docomo_imodeid");
+                               $log->log_debug("redirect to /$s->{id}/index from docomo_imodeid");
                                my $view = new Keitairc::View($cf, $ci, $s->{id});
                                return $view->redirect("/$s->{id}/index");
                        }
 
                        if($docomo_imodeid eq $cf->docomo_imodeid()){
                                my $s = $sm->add($ci->user_agent(), $docomo_imodeid);
-                               Keitairc::Log::log_debug("redirect to /$s->{id}/index from docomo_imodeid");
+                               $log->log_debug("redirect to /$s->{id}/index from docomo_imodeid");
                                my $view = new Keitairc::View($cf, $ci, $s->{id});
                                return $view->redirect("/$s->{id}/index");
                        }
@@ -323,7 +330,7 @@ sub action_root{
                if(defined($session_id) && length($session_id)){
                        if($sm->verify({session_id => $session_id,
                                        user_agent => $ci->user_agent()})){
-                               Keitairc::Log::log_debug("redirect to /$session_id/index from cookie");
+                               $log->log_debug("redirect to /$session_id/index from cookie");
                                my $view = new Keitairc::View($cf, $ci, $session_id);
                                if ($ci->is_webkit() && $cf->webkit_newui()) {
                                        return add_cookie($view->render('root_home.html', {sid => $session_id}), $session_id);
@@ -339,14 +346,14 @@ sub action_root{
                if(length $subscriber_id){
                        if(my $s = $sm->verify({serial_key => $subscriber_id,
                                                user_agent => $ci->user_agent()})){
-                               Keitairc::Log::log_debug("redirect to /$s->{id}/index from subscriber_id");
+                               $log->log_debug("redirect to /$s->{id}/index from subscriber_id");
                                my $view = new Keitairc::View($cf, $ci, $s->{id});
                                return $view->redirect("/$s->{id}/index");
                        }
 
                        if($subscriber_id eq $cf->au_subscriber_id()){
                                my $s = $sm->add($ci->user_agent(), $subscriber_id);
-                               Keitairc::Log::log_debug("redirect to /$s->{id}/index from au_subscriber_id");
+                               $log->log_debug("redirect to /$s->{id}/index from au_subscriber_id");
                                my $view = new Keitairc::View($cf, $ci, $s->{id});
                                return $view->redirect("/$s->{id}/index");
                        }
@@ -358,13 +365,13 @@ sub action_root{
                if(length $serial_key){
                        if(my $s = $sm->verify({serial_key => $serial_key,
                                                user_agent => $ci->user_agent()})){
-                               Keitairc::Log::log_debug("redirect to /$s->{id}/index from softbank serial_key");
+                               $log->log_debug("redirect to /$s->{id}/index from softbank serial_key");
                                my $view = new Keitairc::View($cf, $ci, $s->{id});
                                return $view->redirect("/$s->{id}/index");
                        }
                        if($serial_key eq $cf->softbank_serial_key()){
                                my $s = $sm->add($ci->user_agent(), $serial_key);
-                               Keitairc::Log::log_debug("redirect to /$s->{id}/index from softbank_serial_key");
+                               $log->log_debug("redirect to /$s->{id}/index from softbank_serial_key");
                                my $view = new Keitairc::View($cf, $ci, $s->{id});
                                return $view->redirect("/$s->{id}/index");
                        }
@@ -376,14 +383,14 @@ sub action_root{
                if(length $userid){
                        if(my $s = $sm->verify({serial_key => $userid,
                                                user_agent => $ci->user_agent()})){
-                               Keitairc::Log::log_debug("redirect to /$s->{id}/index from userid");
+                               $log->log_debug("redirect to /$s->{id}/index from userid");
                                my $view = new Keitairc::View($cf, $ci, $s->{id});
                                return $view->redirect("/$s->{id}/index");
                        }
 
                        if($userid eq $cf->emobile_userid()){
                                my $s = $sm->add($ci->user_agent(), $userid);
-                               Keitairc::Log::log_debug("redirect to /$s->{id}/index from emobile_userid");
+                               $log->log_debug("redirect to /$s->{id}/index from emobile_userid");
                                my $view = new Keitairc::View($cf, $ci, $s->{id});
                                return $view->redirect("/$s->{id}/index");
                        }