X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=.inspircd.inc;h=71eb3a75430be6a377555347b0b40b59fdb855dc;hb=5ab9ec7ecf0ff48dd345b5815ef678622f60a195;hp=cb59bc3cb47f5f50cf4b82343c538ed4baa337e0;hpb=ffe8c3ce60e83c48aa393fa718602c070f4149e2;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/.inspircd.inc b/.inspircd.inc index cb59bc3cb..71eb3a754 100644 --- a/.inspircd.inc +++ b/.inspircd.inc @@ -15,10 +15,12 @@ # I HATE PERL.. kthxbye # --------------------------------------------------- -my $confpath = "@CONFIG_DIR@/"; -my $binpath = "@BINARY_DIR@"; -my $libpath = "@LIBRARY_DIR@"; -my $executable = "@EXECUTABLE@"; +my $basepath = "@BASE_DIR@"; +my $confpath = "@CONFIG_DIR@/"; +my $binpath = "@BINARY_DIR@"; +my $libpath = "@LIBRARY_DIR@"; +my $executable = "@EXECUTABLE@"; +my $version = "@VERSION@"; my @filesparsed; # Lets see what they want to do.. Set the variable (Cause i'm a lazy coder) @@ -45,7 +47,7 @@ if ($arg eq "rehash") { if (getstatus() == 1) { my $pid = getprocessid(); system("kill -HUP $pid >/dev/null 2>&1"); - print "InspIRCd rehashed.\n"; + print "InspIRCd rehashed (pid: $pid).\n"; exit(); } else { print "InspIRCd is not running. (Or PID File not found)\n"; @@ -58,8 +60,14 @@ if ($arg eq "cron") { exit(); } +if ($arg eq "version") { + print "InspIRCd version: $version\n"; + exit(); +} + if ($arg eq "restart") { stop(); + unlink($pidfile) if (-e $pidfile); start(); # kthxbye(); exit(); @@ -75,7 +83,7 @@ if ($arg eq "Cheese-Sandwich") { # If we get here.. bad / no parameters. ### print "Invalid Argument: $arg\n"; -print "Usage: inspircd (start|stop|restart|rehash|status|cron)\n"; +print "Usage: inspircd (start|stop|restart|rehash|status|cron|version)\n"; exit(); ### @@ -86,6 +94,8 @@ sub start { # Check to see its not 'running' already. if (getstatus() == 1) { print "InspIRCd is already running.\n"; return 0; } # If we are still alive here.. Try starting the IRCd.. + print "$binpath/$executable doesn't exist\n" and return 0 unless(-e "$binpath/$executable"); + system("$binpath/$executable"); return 1; } @@ -93,12 +103,14 @@ sub start { sub debug { # Check to see its not 'running' already. if (getstatus() == 1) { print "InspIRCd is already running.\n"; return 0; } - + + print "$binpath/$executable doesn't exist\n" and return 0 unless(-e "$binpath/$executable"); + # Check we have gdb checkgdb(); # If we are still alive here.. Try starting the IRCd.. - system("gdb --command=.gdbargs --args $binpath/$executable -nofork -debug -nolog"); + system("gdb --command=$basepath/.gdbargs --args $binpath/$executable -nofork -debug -nolog"); } sub screendebug @@ -106,6 +118,8 @@ sub screendebug # Check to see its not 'running' already. if (getstatus() == 1) { print "InspIRCd is already running.\n"; return 0; } + print "$binpath/$executable doesn't exist\n" and return 0 unless(-e "$binpath/$executable"); + #Check we have gdb checkgdb(); checkscreen(); @@ -113,7 +127,7 @@ sub screendebug # If we are still alive here.. Try starting the IRCd.. print "Starting InspIRCd in `screen`, type `screen -r` when the ircd crashes to view the gdb output and get a backtrace.\n"; print "Once you're inside the screen session press ^C + d to re-detach from the session\n"; - system("screen -m -d gdb --command=.gdbargs --args $binpath/$executable -nofork -debug -nolog"); + system("screen -m -d gdb --command=$basepath/.gdbargs --args $binpath/$executable -nofork -debug -nolog"); } sub valdebug @@ -121,6 +135,8 @@ sub valdebug # Check to see its not 'running' already. if (getstatus() == 1) { print "InspIRCd is already running.\n"; return 0; } + print "$binpath/$executable doesn't exist\n" and return 0 unless(-e "$binpath/$executable"); + # Check we have valgrind and gdb checkvalgrind(); checkgdb(); @@ -136,6 +152,8 @@ sub screenvaldebug # Check to see its not 'running' already. if (getstatus() == 1) { print "InspIRCd is already running.\n"; return 0; } + print "$binpath/$executable doesn't exist\n" and return 0 unless(-e "$binpath/$executable"); + #Check we have gdb checkvalgrind(); checkgdb(); @@ -151,11 +169,13 @@ sub stop { if (getstatus() == 0) { print "InspIRCd is not running. (Or PID File not found)\n"; return 0; } # Get to here, we have something to kill. my $pid = getprocessid(); - print "Stopping InspIRCd...\n"; + print "Stopping InspIRCd (pid: $pid)...\n"; system("kill -TERM $pid >/dev/null 2>&1"); + # Give it a second to exit + sleep(1); if (getstatus() == 1) { - print "InspIRCd not dying Quietly -- Forcing Kill\n"; + print "InspIRCd not dying quietly -- forcing kill\n"; system("kill -9 $pid >/dev/null 2>&1"); } print "InspIRCd Stopped.\n"; @@ -166,6 +186,13 @@ sub stop { # when it is added, it comes around and BITES ME IN THE ASS, # because i then have to code support into this script.. Evil. +# Craig got bitten in the ass again -- +# in 1.1 beta the include file is manditory, therefore +# if we cant find it, default to %conf%/inspircd.pid. +# Note, this also contains a fix for when the pid file is +# defined, but defined in a comment (line starts with #) +# -- Brain + sub getpidfile { my ($file) = @_; # Before we start, do we have a PID already? (Should never occur) @@ -190,7 +217,7 @@ sub getpidfile { $filesparsed[$filesparsed] = $file; # Open the File.. - open INFILE, "< $file" or die "Unable to Open file $file\n"; + open INFILE, "< $file" or die "Unable to open file $file\n"; # Grab entire file contents.. my(@lines) = ; # Close the file @@ -204,7 +231,8 @@ sub getpidfile { my $tmp = join("",@lines); # Does this file have a pid? - if ($tmp =~ //i) { + if (($tmp =~ //i) && ($tmp !~ /^#/)) + { # Set the PID file and return. $pidfile = $1; return; @@ -213,7 +241,7 @@ sub getpidfile { # If we get here, NO PID FILE! -- Check for includes (Seeing as we will eventually return, # The while (1) is safe.) while (1) { - if ($tmp =~ s/\//i) + if (($tmp =~ s/\//i) && ($tmp !~ /^#/)) { # Decend into that file, and check for PIDs.. (that sounds like an STD ;/) getpidfile($1); @@ -224,6 +252,7 @@ sub getpidfile { } } else { # End of includes / No includes found. + $pidfile = $confpath . "inspircd.pid"; return; } }