]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - html/cgi-bin/dial.cgi
Großes Update:
[ipfire-2.x.git] / html / cgi-bin / dial.cgi
index 88f7bad3cd397963be68b5c675f72f014e7394a5..67b40b038a5baab9843601f92519cfa57856794f 100644 (file)
@@ -1,35 +1,70 @@
-#!/usr/bin/perl\r
-#\r
-# SmoothWall CGIs\r
-#\r
-# This code is distributed under the terms of the GPL\r
-#\r
-# (c) The SmoothWall Team\r
-#\r
-# $Id: dial.cgi,v 1.4.2.3 2005/02/22 22:21:55 gespinasse Exp $\r
-#\r
-\r
-use strict;\r
-\r
-# enable only the following on debugging purpose\r
-#use warnings;\r
-#use CGI::Carp 'fatalsToBrowser';\r
-\r
-require 'CONFIG_ROOT/general-functions.pl';\r
-require "${General::swroot}/lang.pl";\r
-require "${General::swroot}/header.pl";\r
-\r
-my %cgiparams=();\r
-\r
-$cgiparams{'ACTION'} = '';\r
-&Header::getcgihash(\%cgiparams);\r
-\r
-if ($cgiparams{'ACTION'} eq $Lang::tr{'dial'}) {\r
-       system('/etc/rc.d/rc.red','start') == 0\r
-       or &General::log("Dial failed: $?"); }\r
-elsif ($cgiparams{'ACTION'} eq $Lang::tr{'hangup'}) {\r
-       system('/etc/rc.d/rc.red','stop') == 0\r
-       or &General::log("Hangup failed: $?"); }\r
-sleep 1;\r
-\r
-print "Status: 302 Moved\nLocation: /cgi-bin/index.cgi\n\n";\r
+#!/usr/bin/perl
+#
+# SmoothWall CGIs
+#
+# This code is distributed under the terms of the GPL
+#
+# (c) The SmoothWall Team
+#
+# $Id: dial.cgi,v 1.4.2.3 2005/02/22 22:21:55 gespinasse Exp $
+#
+
+use strict;
+
+# enable only the following on debugging purpose
+#use warnings;
+#use CGI::Carp 'fatalsToBrowser';
+
+require 'CONFIG_ROOT/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "${General::swroot}/header.pl";
+
+my %cgiparams=();
+
+$cgiparams{'ACTION'} = '';
+&Header::getcgihash(\%cgiparams);
+
+if ($cgiparams{'ACTION'} eq $Lang::tr{'dial profile'})
+{
+       my $profile = $cgiparams{'PROFILE'};
+       my %tempcgiparams = ();
+       $tempcgiparams{'PROFILE'} = '';
+       &General::readhash("${General::swroot}/ppp/settings-$cgiparams{'PROFILE'}",
+               \%tempcgiparams);
+
+       # make a link from the selected profile to the "default" one.
+       unlink("${General::swroot}/ppp/settings");
+       link("${General::swroot}/ppp/settings-$cgiparams{'PROFILE'}",
+               "${General::swroot}/ppp/settings");
+       system ("/bin/touch", "${General::swroot}/ppp/updatesettings");
+
+       # read in the new params "early" so we can write secrets.
+       %cgiparams = ();
+       &General::readhash("${General::swroot}/ppp/settings", \%cgiparams);
+       $cgiparams{'PROFILE'} = $profile;
+       $cgiparams{'BACKUPPROFILE'} = $profile;
+       &General::writehash("${General::swroot}/ppp/settings-$cgiparams{'PROFILE'}",
+               \%cgiparams);
+
+       # write secrets file.
+       open(FILE, ">/${General::swroot}/ppp/secrets") or die "Unable to write secrets file.";
+       flock(FILE, 2);
+       my $username = $cgiparams{'USERNAME'};
+       my $password = $cgiparams{'PASSWORD'};
+       print FILE "'$username' * '$password'\n";
+       chmod 0600, "${General::swroot}/ppp/secrets";
+       close FILE;
+
+       &General::log("$Lang::tr{'profile made current'} $tempcgiparams{'PROFILENAME'}"); 
+       $cgiparams{'ACTION'} = "$Lang::tr{'dial'}";
+}
+
+if ($cgiparams{'ACTION'} eq $Lang::tr{'dial'}) {
+       system('/etc/rc.d/rc.red','start') == 0
+       or &General::log("Dial failed: $?"); }
+elsif ($cgiparams{'ACTION'} eq $Lang::tr{'hangup'}) {
+       system('/etc/rc.d/rc.red','stop') == 0
+       or &General::log("Hangup failed: $?"); }
+sleep 1;
+
+print "Status: 302 Moved\nLocation: /cgi-bin/index.cgi\n\n";