This is pppkill.c in view mode; [Download] [Up]
Many thanks to: shess@winternet.com (Scott Hess) andrew_abernathy@wire.seanet.com (Andrew Abernathy) michal@ellpspace.math.ualberta.ca (Michal Jaegermann) for contributing programs that can take the place of the pppdown script. I have included Scott Hess's (now modified) here. If you would like to see the other program, please mail Andrew. ====================================================================== From shess@winternet.com Mon Jan 9 02:45 EST 1995 Date: Mon, 9 Jan 95 01:45 CST From: shess@winternet.com (Scott Hess) Reply-To: shess@winternet.com (Scott Hess) To: Steve Perkins <perkins@cps.msu.edu> Subject: Bringing down ppp. [munch] In any case, having to run pppdown as root has been annoying, because I don't like to run things as root more than necessary. In other words, more than about once a week is too often :-). So, I wrote the following quick&dirty hack. Basic operation is to read the pppd pid from a file where it's stored and send a SIGINT to that process. Since there's not a shell script in sight, this should be a reasonably safe program to make setuid root. [I'll have to think on what someone can do if they crack it or /etc/ppp and can send SIGINT to just anyone. Perhaps it should check to see if the process is really a pppd? Oh, well.] howard:/tmp> ls -l /usr/local/ppp/bin/killppp -rwsr-sr-x 1 root 1464 Jan 7 12:41 /usr/local/ppp/bin/killppp* howard:/tmp> cat /usr/local/ppp/src/killppp.c /* * Originally written by Scott Hess <shess@winternet.com> * and later modified by Michal Jaegermann <michal@ellpspace.math.ualberta.ca> */ #include <libc.h> #include <stdio.h> #include <libc.h> #include <stdio.h> #define PIDF "/etc/ppp/ppp0.pid" int main( void) { FILE *ff; int pid; if( NULL == (ff = fopen( PIDF, "r"))) { perror( "opening " PIDF "\nppp0 link does not seem to be active" ); exit(1); } if( fscanf( ff, "%d", &pid)<1) { fprintf( stderr, "Cannot read pid from" PIDF "\n"); exit(1); } fclose( ff); if( kill( pid, SIGINT)==-1) { perror( "killing pppd"); fprintf( stderr, "removing stale" PIDF "file\n"); if (0 != unlink( PIDF)) { perror("cannot remove" PIDF); } exit(1); } return 0; } Later, --- scott hess <shess@winternet.com> (WWW to "http://www.winternet.com/~shess/") Home: 12901 Upton Avenue South, #326 Burnsville, MN 55337 (612) 895-1208 Office: 101 W. Burnsville Pkwy, Suite 108E, Burnsville, MN 55337 890-1332 <?If you haven't the time to design, where will you find the time to debug?>
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.