return to first page linux journal archive
keywordscontents
/* 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);
		}
	}