LJ Archive
/* ppp.c -- PPP control for mortals by Phil Hughes
 * -- 12-28-96 */
/*
 * Call with one argument:
 *   on -- start PPP
 *   off -- stop PPP
 * Install owned by root.
 * If you want anyone to be able to run it, set
 * permissions to 4711
 * If you only want a set of users to be able to
 * run it: chgrp it to the group that should be
 * able to run it and set permissions to 4710
 */

#include <stdio.h>
#include <strings.h>

/* define strings for what needs to be run */
#define PPP_ON "/usr/sbin/pseanet" /* turn PPP on */
#define PPP_OFF   "/usr/sbin/ppp-off" /* turn PPP off */

/* just for safety, set a sane search path */
char *env[] = {
   "PATH=/bin:/usr/bin:/usr/sbin/",
   NULL};

int main(int argc, char *argv[])
   {
   /* must be called with an argument */
   if (argc != 2)
      {
      fprintf(stderr,
       "Usage: %s: {on|off}\n", argv[0]);
      exit(1);
      }

   setuid(0);  /* become root */
   if (strcmp(argv[1], "on") == 0)
      {
      execle(PPP_ON, (const char *) NULL,
         &env);
      }
   else if (strcmp(argv[1], "off") == 0)
      {
      execle(PPP_OFF, (const char *) NULL,
         &env);
      }
   else
      {
      fprintf(stderr, "%s: invalid argument\n",
         argv[0]);
      exit(2);
      }
   }
LJ Archive