#!/usr/bin/perl

require '/var/smoothwall/header.pl';

my %pppsettings;

# read vars back from file.
&readhash("${swroot}/ppp/settings", \%pppsettings);

if ($pppsettings{'COMPORT'} =~ /ttyS[0-3]/)
{
	$lockfile = "/var/lock/LCK..${pppsettings{'COMPORT'}}";
	if (! -e $lockfile)
	{
		&domodemdial();
	}
}

sub domodemdial
{
	my $pppoptions = '';
	my $loginscript = '';

	my $device = "/dev/${pppsettings{'COMPORT'}}";

	if ($pppsettings{'DNS'} eq 'Automatic') {
		$pppoptions = "$pppoptions usepeerdns"; }

	if ($pppsettings{'AUTH'} eq 'standard-login-script') {
		$loginscript = 'standardloginscript'; }
	elsif ($pppsettings{'AUTH'} eq 'demon-login-script') {
		$loginscript = 'demonloginscript'; }
	else {
		$loginscript = $pppsettings{'LOGINSCRIPT'}; }

	$dialscript = "\"/etc/ppp/dialer \'$pppsettings{'TELEPHONE'}\' \
		 \'$pppsettings{'USERNAME'}\' \'$pppsettings{'PASSWORD'}\' 
		 \'$loginscript\'\"";
 
	if ($pppsettings{'PERSISTANT'} eq 'on') {
		$pppoptions = "$pppoptions persist"; }
	
	$extrapppoptions = 'novj novjccomp holdoff 1';

	$args = "debug lock modem crtscts \'$device\' 115200 asyncmap \ 
		20A0000 escape FF kdebug 0 defaultroute connect \
		$dialscript user \'$pppsettings{'USERNAME'}\' maxfail \
		'$pppsettings{'MAXRETRIES'}\' $pppoptions $extrapppoptions";

	$args =~ s/\n//g;
	$args =~ s/\$\`\(\)//g;	# Kill shell characters	

	system "/usr/sbin/pppd $args";
}
