X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fplugins%2Fradius%2Fradiusclient%2Flogin.radius%2Fmigs%2Fip-up;fp=pppd%2Fplugins%2Fradius%2Fradiusclient%2Flogin.radius%2Fmigs%2Fip-up;h=0000000000000000000000000000000000000000;hb=4abe4296f0eddbb2b6ff11dbbd27100156c85f87;hp=c1e06db46470ee3e4b4b634c18247c6e6fae4b5f;hpb=4b9bf9ae2701487191810e564aaa4672eb95130e;p=ppp.git diff --git a/pppd/plugins/radius/radiusclient/login.radius/migs/ip-up b/pppd/plugins/radius/radiusclient/login.radius/migs/ip-up deleted file mode 100644 index c1e06db..0000000 --- a/pppd/plugins/radius/radiusclient/login.radius/migs/ip-up +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/perl -# -# ip-up -# -# Script started when the PPP daemon makes a connection. -# - -# This script is given: -# interface-name tty-device speed local-IP-address remote-IP-address -# Since this is a PPP server, local-IP-address does not change. - -# TODO: Clean up this file and make it really modular. - -use strict; -use GDBM_File; - -#### RADIUS section Begins - -# Configuration section. - -# Port information database. -my $path_portinfo = "/var/ipoint/acct/portinfo"; - - -# Radius accounting record generator. - my $prog_radacct = "/usr/local/lib/radiusclient/radacct"; - -sub netmask -{ - my $count = int ($_[0] / 8); - - my $c1 = ("255." x $count); - $c1 = substr ($c1, 0, -1) if ($count == 4); - my $c2 = (256 - (1<<(8 - ($_[0] - $count * 8)))) || "0"; - $c2 .= '.' if ($count < 3); - my $c3 = substr (("0." x (3-$count)), 0, -1); - return $c1 . $c2. $c3; -} - -my ($sessionid, $username, $port, $portid, $timeout, $routelist) = - split (/:/, $ARGV[5]); - -if ($sessionid) -{ -# I-Way code to inform the server that we're getting in. - -# If there was routing, add it. Format for $route, from the Framed-Route -# parameter, is address/netmask gateway metric. If gateway is 0.0.0.0, -# add the route here. - -# Unescape the route list. - $routelist =~ s/%20/ /g; - - my $route; - - # Debug this. - open (H, ">>/tmp/ip-up.log"); - print H "ROUTELIST: " . $routelist . "\n"; - - foreach $route (split ("@", $routelist)) { - # Split the route into the components. - my @routevalue = split (' ', $route); - my ($netmaskcmd, $gwcmd, $metriccmd); - my @network = split ("/", $routevalue[0]); - - if ($network[1]) { - $netmaskcmd = "netmask " . netmask($network[1]); - } - - if ($routevalue[1] eq "0.0.0.0") { - $gwcmd = "gw $ARGV[4]"; - } - elsif ($routevalue[1]) { - $gwcmd = "gw $routevalue[1]"; - } - - if ($routevalue[2]) { - $metriccmd = "metric $routevalue[2]"; - } - - my $routecmd = "/sbin/route add -net $network[0] $netmaskcmd $gwcmd " . - "$metriccmd"; - - system ($routecmd); - print H "COMMAND: " . $routecmd . "\n"; - } - close (H); - -# The session ID, username, raw port and ID are given to this script -# through the ipparam parameter of pppd 2.2.0e and above. - -# Generate the accounting entry, and hand it over to RADIUS. - - open (H, "| $prog_radacct -i $port"); - - my $cmd = - "Acct-Session-ID = \"$sessionid\"\n" . - "User-Name = \"$username\"\n" . - "Acct-Status-Type = Start\n" . - "Acct-Authentic = RADIUS\n" . - "Service-Type = Framed\n" . - "Framed-Protocol = PPP\n" . - "Framed-IP-Address = $ARGV[4]\n"; - - print H $cmd; - close (H); -} - -# Store the username, the connection type, the IP address, the PID of pppd. -# Index it on the port ID, since 'portman' makes use of this. - -my ($timenow, %s); -$timenow = time(); -tie (%s, "GDBM_File", $path_portinfo, GDBM_WRCREAT, 0600); -$s{$portid} = join (':', $username, "Framed-User/PPP", $ARGV[4], getppid (), - $timenow, $timeout); -untie (%s); - - -#### RADIUS ends -