]>
jfr.im git - irc/SurrealServices/srsv.git/blob - branches/erry-devel/modules/core.pm
1 # This file is part of SurrealServices.
3 # SurrealServices is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
8 # SurrealServices is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with SurrealServices; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #use SrSv::Conf 'main';
20 use SrSv
::Conf2Consts
'main';
21 use SrSv
::RunLevel
'main_shutdown';
22 use SrSv
::IRCd
::Event
'addhandler';
23 use SrSv
::IRCd
::IO
'ircsend';
24 use SrSv
::Timer
'add_timer';
25 use SrSv
::Time
'time_rel_long_all';
27 use SrSv
::Process
::Init
; #FIXME - only needed for ccode
28 use SrSv
::User
::Notice
;
31 my $startTime = time();
33 our %ccode; #FIXME - Split out
35 open ((my $COUNTRY), main
::PREFIX
()."/data/country-codes.txt");
36 while(my $x = <$COUNTRY>) {
38 my($code, $country) = split(/ /, $x);
39 $ccode{uc $code} = $country;
44 our $rsnick = 'ServServ';
46 addhandler
('STATS', undef, undef, 'core::stats');
48 my ($src, $token) = @_;
50 ircsend
('242 '.$src.' :Server up '.time_rel_long_all
($startTime),
51 '219 '.$src.' u :End of /STATS report')
55 addhandler
('PING', undef, undef, 'ircd::pong', 1);
59 add_timer
('perlserv__pingtimer', 60, __PACKAGE__
,
63 agent_connect
($rsnick, 'service', undef, '+ABHSNaopqz', 'Services Control Agent');
64 agent_join
($rsnick, main_conf_diag
);
65 ircd
::setmode
($rsnick, main_conf_diag
, '+o', $rsnick);
67 addhandler
('SEOS', undef, undef, 'core::ev_connect', 1);
68 addhandler
('ENDBURST', undef, undef, 'core::ev_connect', 1);
70 add_timer
('perlserv__pingtimer', 60, __PACKAGE__
,
74 addhandler
('PRIVMSG', undef, 'servserv', 'core::dispatch', 1);
77 print "DISPATCH CALLED\n";
78 my ($src, $dst, $msg) = @_;
79 my $user = { NICK
=> $src, AGENT
=> $rsnick };
80 if(!adminserv
::is_ircop
($user)) {
81 notice
($user, 'Access Denied');
82 ircd
::globops
($rsnick, "\002$src\002 failed access to $rsnick $msg");
85 if($msg =~ /^lsmod/i) {
86 notice
($user, main_conf_load
);
89 if($msg =~ /^shutdown/i) {
90 if(!adminserv
::is_svsop
($user, adminserv
::S_ADMIN
() )) {
91 notice
($user, 'You do not have sufficient rank for this command');
98 if(!adminserv
::is_svsop
($user, adminserv
::S_ROOT
() )) {
99 notice
($user, 'You do not have sufficient rank for this command');
106 if($msg =~ /^help$/) {
107 sendhelp
($user, lc 'core');
110 if(main
::DEBUG
and $msg =~ /^eval\s+(.*)/) {
112 notice
($user, split(/\n/, $out.$@));