diff options
Diffstat (limited to 'net')
29 files changed, 1103 insertions, 0 deletions
diff --git a/net/Makefile b/net/Makefile index 0cc844e..3e90448 100644 --- a/net/Makefile +++ b/net/Makefile @@ -159,6 +159,7 @@ SUBDIR += icqlib SUBDIR += icqlib0 SUBDIR += icqnix + SUBDIR += icradius SUBDIR += icukrell SUBDIR += ip-tun SUBDIR += ip6_int diff --git a/net/icradius/Makefile b/net/icradius/Makefile new file mode 100644 index 0000000..91a97be --- /dev/null +++ b/net/icradius/Makefile @@ -0,0 +1,89 @@ +# New ports collection makefile for: p5-IC-Radius +# Date created: 04 Jul 2001 +# Whom: Sergey N. Voronkov <serg@tmn.ru> +# +# $FreeBSD$ +# + +PORTNAME= icradius +PORTVERSION= 0.18.1 +CATEGORIES= net +MASTER_SITES= ftp://ftp.innercite.com/pub/icradius/ + +MAINTAINER= serg@tmn.ru + +MAKEFILE= Makefile.BSD + +.if defined(WITH_CGI) +RUN_DEPENDS= ${LOCALBASE}/lib/perl5/site_perl/${PERL_VER}/IC/Radius.pm:${PORTSDIR}/net/p5-IC-Radius \ + ${LOCALBASE}/lib/perl5/site_perl/${PERL_VER}/${PERL_ARCH}/Date/Calc.pm:${PORTSDIR}/devel/p5-Date-Calc \ + ${LOCALBASE}/lib/perl5/site_perl/${PERL_VER}/MD5.pm:${PORTSDIR}/security/p5-MD5 +.endif +LIB_DEPENDS= mysqlclient.10:${PORTSDIR}/databases/mysql323-client + +MAN8= radiusd.8 + +IC_LIB= ${PREFIX}/share/icradius +.if !defined(NOPORTDOCS) +IC_DOC= ${PREFIX}/share/doc/icradius +.endif + +.if defined(WITH_CGI) +PLIST_SUB+= CGI="" +.else +PLIST_SUB+= CGI="@comment " +.endif + +# Define FOR_CISCO=yes to make it CISCO specific + +.if defined(FOR_CISCO) +post-patch: + ( cd ${WRKSRC} ; \ + for fn in ${FILESDIR}/pcisco-*; do \ + ${PATCH} < $$fn; \ + done ) +.endif + +do-build: + cd ${WRKSRC}/src && ${SETENV} ${MAKE_ENV} ${MAKE} -f ${MAKEFILE} + +do-install: + [ -d /var/log/radacct ] || ${MKDIR} -m 700 /var/log/radacct + @${MKDIR} ${PREFIX}/etc/raddb + ${INSTALL_DATA} -m 600 ${WRKSRC}/raddb/radius.conf \ + ${PREFIX}/etc/raddb/radius.conf.sample +.if !defined(NOPORTDOCS) + @${MKDIR} ${IC_DOC} + ${INSTALL_DATA} ${WRKSRC}/COPY* ${IC_DOC} + ${INSTALL_DATA} ${WRKSRC}/doc/README* ${IC_DOC} + ${INSTALL_DATA} ${WRKSRC}/doc/FAQ ${IC_DOC} + ${INSTALL_DATA} ${WRKSRC}/doc/THANKS ${IC_DOC} + ${INSTALL_DATA} ${WRKSRC}/doc/TODO ${IC_DOC} +.endif + @${MKDIR} ${IC_LIB} + @${MKDIR} ${IC_LIB}/raddb + for fn in dictionary dictionary.ascend dictionary.cisco \ + dictionary.compat dictionary.foundry dictionary.livingston \ + dictionary.merit dictionary.redback dictionary.shiva \ + dictionary.tunnel dictionary.usr dictionary.versanet \ + huntgroups; do \ + ${INSTALL_DATA} ${WRKSRC}/raddb/$$fn ${IC_LIB}/raddb; \ + done + @${MKDIR} ${IC_LIB}/scripts + cd ${WRKSRC}/scripts && ${CP} -rp *.pl radius.db images \ + radlast radwho README ${IC_LIB}/scripts + ${INSTALL_PROGRAM} ${WRKSRC}/src/radiusd ${PREFIX}/sbin + ${SED} "s#%%PREFIX%%#${PREFIX}#" ${WRKSRC}/src/checkrad.pl > ${PREFIX}/sbin/checkrad + ${CHMOD} 711 ${PREFIX}/sbin/checkrad + ${CHOWN} ${BINOWN}:${BINGRP} ${PREFIX}/sbin/checkrad + ${SED} "s#%%PREFIX%%#${PREFIX}#" ${WRKSRC}/scripts/radwatch > ${PREFIX}/sbin/radwatch + ${CHMOD} 755 ${PREFIX}/sbin/radwatch + ${CHOWN} ${BINOWN}:${BINGRP} ${PREFIX}/sbin/radwatch + ${INSTALL_MAN} ${WRKSRC}/doc/radiusd.8 ${MANPREFIX}/man/man8 +.if defined(WITH_CGI) + ${INSTALL_SCRIPT} ${WRKSRC}/scripts/radius.cgi ${PREFIX}/libexec + ${INSTALL_SCRIPT} ${WRKSRC}/scripts/usage.cgi ${PREFIX}/libexec +.endif + ${INSTALL_SCRIPT} ${FILESDIR}/icradiusd.sh ${PREFIX}/etc/rc.d + +.include <bsd.port.mk> diff --git a/net/icradius/distinfo b/net/icradius/distinfo new file mode 100644 index 0000000..2322960 --- /dev/null +++ b/net/icradius/distinfo @@ -0,0 +1 @@ +MD5 (icradius-0.18.1.tar.gz) = 55585fd9947d40ab3243deb4f7738770 diff --git a/net/icradius/files/icradiusd.sh b/net/icradius/files/icradiusd.sh new file mode 100644 index 0000000..a603533 --- /dev/null +++ b/net/icradius/files/icradiusd.sh @@ -0,0 +1,59 @@ +#!/bin/sh +# +# radiusd Start the radius daemon. + +NAME1=radiusd +NAME2=radwatch + +ARGS="-y -p 1645" + +if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/$(basename $0)\$"); then + echo "$0: Cannot determine the PREFIX" >&2 + exit 1 +fi + +RADIUSD=${PREFIX}/sbin/${NAME1} +WATCHER=${PREFIX}/sbin/${NAME2} + +test -f $RADIUSD || exit 0 + +case "$1" in + start) + if [ ! -f /var/log/radutmp ] + then + :>/var/log/radutmp + fi + if [ -x $WATCHER ] + then + echo -n ' radwatch' + $WATCHER $RADIUSD $ARGS + else + echo -n ' radiusd' + $RADIUSD $ARGS + fi + ;; + stop) + if [ -x $WATCHER ] + then + echo -n ' radwatch' + kill -TERM `cat /var/run/$NAME2.pid` + else + kill -TERM `cat /var/run/$NAME1.pid` + echo -n ' radiusd' + fi + ;; + reload|force-reload) + echo "Reloading radiusd configuration files." + kill -HUP `cat /var/run/$NAME1.pid` + ;; + restart) + $0 stop + sleep 3 + $0 start + ;; + *) + echo "Usage: `basename $0` {start|stop|reload|restart}" + exit 1 +esac + +exit 0 diff --git a/net/icradius/files/patch-raddb::dictionary b/net/icradius/files/patch-raddb::dictionary new file mode 100644 index 0000000..8e4c2fd --- /dev/null +++ b/net/icradius/files/patch-raddb::dictionary @@ -0,0 +1,11 @@ +--- raddb/dictionary.old Tue Mar 7 09:57:19 2000 ++++ raddb/dictionary Wed Jan 17 17:22:35 2001 +@@ -158,7 +158,8 @@ + VALUE Service-Type Outbound-User 5 + VALUE Service-Type Administrative-User 6 + VALUE Service-Type NAS-Prompt-User 7 + VALUE Service-Type Call-Check 10 ++VALUE Service-Type Auth-Only 8 + + # Framed Protocols + diff --git a/net/icradius/files/patch-raddb::dictionary.cisco b/net/icradius/files/patch-raddb::dictionary.cisco new file mode 100644 index 0000000..f1cc583 --- /dev/null +++ b/net/icradius/files/patch-raddb::dictionary.cisco @@ -0,0 +1,10 @@ +--- raddb/dictionary.cisco.old Wed Apr 7 04:34:53 1999 ++++ raddb/dictionary.cisco Thu Nov 2 09:30:04 2000 +@@ -42,6 +42,7 @@ + ATTRIBUTE Cisco-Call-Filter 243 integer Cisco + ATTRIBUTE Cisco-Idle-Limit 244 integer Cisco + ATTRIBUTE Cisco-Xmit-Rate 255 integer Cisco ++ATTRIBUTE Cisco-Line-Name 65538 string Cisco + + VALUE Cisco-Disconnect-Cause Unknown 2 + VALUE Cisco-Disconnect-Cause CLID-Authentication-Failure 4 diff --git a/net/icradius/files/patch-scripts::radius.cgi b/net/icradius/files/patch-scripts::radius.cgi new file mode 100644 index 0000000..387f31f --- /dev/null +++ b/net/icradius/files/patch-scripts::radius.cgi @@ -0,0 +1,29 @@ +--- scripts/radius.cgi.orig Tue Jun 26 23:44:45 2001 ++++ scripts/radius.cgi Thu Jul 5 18:03:08 2001 +@@ -54,8 +54,8 @@ + my $radhost = 'radius.mydomain.com'; # radius host (if $authentication_type is 2) + my $radsecret = ''; # radius secret (if $authentication_type is 2) + my $highlight = 'lightblue'; # highlight color of tables +-my $fontname = 'Comic Sans MS'; # default font +-my $fontsize = '8'; # default font size ++my $fontname = 'Helvetica'; # default font ++my $fontsize = '12'; # default font size + + use IC::Radius; + my $radius = new IC::Radius; +@@ -1613,6 +1613,7 @@ + print q! selected! if (exists $selected_options->{$option}); + print qq!>$option\n!; + } ++ print "</select>\n"; + + print qq~ + <tr><td><br></td></tr> +@@ -3007,6 +3008,7 @@ + } + + my $session = $query->cookie(-name => $cookie_name); ++ $session = "" if ( !defined($session) ); + + open SESSIONS, "<$sessions_file" or do { + &print_header; terminal_error("Unable to open file $sessions_file: $!\n"); diff --git a/net/icradius/files/patch-scripts::radius.db b/net/icradius/files/patch-scripts::radius.db new file mode 100644 index 0000000..1aece3f --- /dev/null +++ b/net/icradius/files/patch-scripts::radius.db @@ -0,0 +1,38 @@ +--- scripts/radius.db.old Thu Jun 15 23:20:48 2000 ++++ scripts/radius.db Wed Jan 17 13:05:15 2001 +@@ -74,7 +74,7 @@ + id int(10) DEFAULT '0' NOT NULL auto_increment, + UserName varchar(30) DEFAULT '' NOT NULL, + Attribute varchar(30), +- Value varchar(40), ++ Value varchar(40) binary, + PRIMARY KEY (id), + KEY UserName (UserName) + ); +@@ -86,7 +86,7 @@ + id int(10) DEFAULT '0' NOT NULL auto_increment, + GroupName varchar(20) DEFAULT '' NOT NULL, + Attribute varchar(40), +- Value varchar(40), ++ Value varchar(40) binary, + PRIMARY KEY (id), + KEY GroupName (GroupName) + ); +@@ -98,7 +98,7 @@ + id int(10) DEFAULT '0' NOT NULL auto_increment, + GroupName varchar(20) DEFAULT '' NOT NULL, + Attribute varchar(40), +- Value varchar(40), ++ Value varchar(128), + PRIMARY KEY (id), + KEY GroupName (GroupName) + ); +@@ -110,7 +110,7 @@ + id int(10) DEFAULT '0' NOT NULL auto_increment, + UserName varchar(30) DEFAULT '' NOT NULL, + Attribute varchar(30), +- Value varchar(40), ++ Value varchar(128), + PRIMARY KEY (id), + KEY UserName (UserName) + ); diff --git a/net/icradius/files/patch-scripts::radwatch b/net/icradius/files/patch-scripts::radwatch new file mode 100644 index 0000000..830beb1 --- /dev/null +++ b/net/icradius/files/patch-scripts::radwatch @@ -0,0 +1,55 @@ +--- scripts/radwatch.orig Sat Jun 9 02:02:03 2001 ++++ scripts/radwatch Thu Jul 5 16:00:31 2001 +@@ -8,9 +8,9 @@ + # + + RWLOG="/var/log/radwatch.log" # Use "/dev/null" for no logging +-RWCMD="/usr/local/sbin/radiusd -y" # Path to radiusd + run-time arguments +-RWRCP="foo@bar.com" # Recipient for alerts. Comment out to disable +-RWINT=10 # Time in seconds between process list polls ++RWCMD="%%PREFIX%%/sbin/radiusd" # Path to radiusd + run-time arguments ++#RWRCP="foo@bar.com" # Recipient for alerts. Comment out to disable ++RWINT=8 # Time in seconds between process list polls + + UNAME=`uname` + +@@ -35,7 +35,16 @@ + ;; + esac + ++# get the path to the radiusd ++if [ "$1" ] && [ -x "$1" ] ++then ++ RWCMD=$1 ++ shift ++fi ++ + ( ++trap "" HUP TSTP ++ + while : + do + +@@ -54,16 +63,21 @@ + fi + + if [ $COUNT -lt 2 ]; then ++ sleep 3 + STAMP=`date "+%m/%d/%y %H:%M:%S"` + ALERT="$COUNT processes. Restarting ICRADIUS." + echo "$STAMP `basename $0`: $ALERT" >> $RWLOG + if [ "$RWRCP" != "" ]; then + echo "`basename $0`: $ALERT" | mail -s "ICRADIUS Restarted" $RWRCP + fi +- kill $PIDS 2>/dev/null; $RWCMD ++ kill $PIDS 2>/dev/null; $RWCMD $* + fi + + sleep $RWINT + + done + ) & ++ ++echo "$!" > /var/run/radwatch.pid ++ ++sleep 1 diff --git a/net/icradius/files/patch-src::Make.inc b/net/icradius/files/patch-src::Make.inc new file mode 100644 index 0000000..369e33a --- /dev/null +++ b/net/icradius/files/patch-src::Make.inc @@ -0,0 +1,22 @@ +--- src/Make.inc.orig Wed Jun 6 23:21:33 2001 ++++ src/Make.inc Tue Jun 26 12:43:50 2001 +@@ -4,7 +4,7 @@ + # + # + +-RADIUS_DIR = /etc/raddb ++RADIUS_DIR = ${PREFIX}/etc/raddb + + SERVER_OBJS = radiusd.o dict.o files.o filters.o util.o md5.o attrprint.o \ + acct.o radius.o pam.o log.o version.o proxy.o \ +@@ -92,8 +92,8 @@ + install -d $(SBINDIR) + install -d $(BINDIR) + install -d $(RADIUS_DIR) +- install -m 755 -s radiusd $(SBINDIR)/radiusd +- install -m 755 checkrad.pl $(SBINDIR)/checkrad ++ install -c -m 755 -s radiusd $(SBINDIR)/radiusd ++ install -c -m 755 checkrad.pl $(SBINDIR)/checkrad + # Install the config files + @echo "Creating/updating files in $(RADIUS_DIR)"; \ + cd ../raddb; \ diff --git a/net/icradius/files/patch-src::Makefile.BSD b/net/icradius/files/patch-src::Makefile.BSD new file mode 100644 index 0000000..aff6922 --- /dev/null +++ b/net/icradius/files/patch-src::Makefile.BSD @@ -0,0 +1,12 @@ +--- src/Makefile.BSD.old Sat Oct 21 23:28:04 2000 ++++ src/Makefile.BSD Wed Oct 25 12:51:01 2000 +@@ -4,7 +4,7 @@ + # + + CC = gcc +-CFLAGS = -I/usr/local/include -Wall -g -DBSD -DNOSHADOW +-LDFLAGS = -L/usr/local/lib/mysql # -s #tatic ++CFLAGS += -I${LOCALBASE}/include -DNOSHADOW -DBSD -DRADIUS_DIR=\"${PREFIX}/etc/raddb\" ++LDFLAGS += -L${LOCALBASE}/lib/mysql -s #tatic + LIBS = -lmysqlclient -lm + LCRYPT = -lcrypt diff --git a/net/icradius/files/patch-src::auth.c b/net/icradius/files/patch-src::auth.c new file mode 100644 index 0000000..17a8c99 --- /dev/null +++ b/net/icradius/files/patch-src::auth.c @@ -0,0 +1,11 @@ +--- src/auth.c.old Tue Sep 5 23:16:10 2000 ++++ src/auth.c Fri Jan 5 10:14:11 2001 +@@ -420,7 +420,7 @@ + /* + * Plain text password. + */ +- snprintf(dbpass, 128, " Password should be '%s'", password_pair->strvalue); ++ strncpy(dbpass," Password mismatch",128); + if (password_pair == NULL || + strcmp(password_pair->strvalue, string)!=0) + result = -1; diff --git a/net/icradius/files/patch-src::checkrad.pl b/net/icradius/files/patch-src::checkrad.pl new file mode 100644 index 0000000..2477517 --- /dev/null +++ b/net/icradius/files/patch-src::checkrad.pl @@ -0,0 +1,24 @@ +--- src/checkrad.pl.orig Thu Oct 26 07:35:29 2000 ++++ src/checkrad.pl Wed Jul 4 16:43:11 2001 +@@ -35,17 +35,17 @@ + # $naspass is the location of your NAS admin password file + # + +-$prefix = "/usr/local"; ++$prefix = "%%PREFIX%%"; + $localstatedir = "/var"; + $logdir = "${localstatedir}/log"; +-$sysconfdir = "/etc"; ++$sysconfdir = "${prefix}/etc"; + $raddbdir = "${sysconfdir}/raddb"; + + $debug = ""; + #$debug = "$logdir/checkrad.log"; + +-$snmpget = "/usr/bin/snmpget"; +-$snmpwalk = "/usr/bin/snmpwalk"; ++$snmpget = "${prefix}/bin/snmpget"; ++$snmpwalk = "${prefix}/bin/snmpwalk"; + $rusers = "/usr/bin/rusers"; + $naspass = "$raddbdir/naspasswd"; + diff --git a/net/icradius/files/patch-src::conf.h b/net/icradius/files/patch-src::conf.h new file mode 100644 index 0000000..e712123 --- /dev/null +++ b/net/icradius/files/patch-src::conf.h @@ -0,0 +1,10 @@ +--- src/conf.h.old Wed Mar 8 07:12:21 2000 ++++ src/conf.h Tue Dec 19 09:14:49 2000 +@@ -1,6 +1,6 @@ + /* Default Database File Names */ + +-#define RADIUS_DIR "/etc/raddb" ++/* #define RADIUS_DIR "/etc/raddb" */ + #define RADACCT_DIR "/var/log/radacct" + #define RADLOG_DIR "/var/log" + diff --git a/net/icradius/files/patch-src::mysql.c b/net/icradius/files/patch-src::mysql.c new file mode 100644 index 0000000..1b0fe81 --- /dev/null +++ b/net/icradius/files/patch-src::mysql.c @@ -0,0 +1,49 @@ +--- src/mysql.c.orig Thu Jun 14 23:32:02 2001 ++++ src/mysql.c Wed Jun 27 11:22:09 2001 +@@ -443,7 +443,7 @@ + #if defined(F_LOCK) && !defined(BSD) + (void)lockf((int)mysqlfile, (int)F_LOCK, (off_t)SQL_LOCK_LEN); + #else +- (void)flock(mysqlfile, LOCK_EX); ++ (void)flock(fileno(mysqlfile), LOCK_EX); + #endif + } + +@@ -1463,8 +1463,6 @@ + + char querystr[2048]; + SQL_ROW row; +- char opts1[32]; +- char opts2[32]; + REALM *c; + + realm_free(realms); +@@ -1483,11 +1481,11 @@ + return -1; + } + +- opts1[0] = opts2[0] = 0; + c->realm[0] = 0; + c->server[0] = 0; + c->striprealm = 1; + c->dohints = 0; ++ c->loglocal = 0; + + if (c->realm != NULL) + strNcpy(c->realm, row[0], sizeof(c->realm)); +@@ -1503,12 +1501,9 @@ + c->auth_port = strtol(row[3], NULL, 0); + c->acct_port = c->auth_port + 1; + if (row[4] != NULL) { +- sscanf(row[4], "%31s%31s", opts1, opts2); +- +- c->striprealm = strcmp(opts1, "nostrip") != 0 && +- strcmp(opts2, "nostrip") != 0; +- c->dohints = strcmp(opts1, "hints") == 0 || +- strcmp(opts2, "hints") == 0; ++ c->striprealm = strstr(row[4], "nostrip") == NULL; ++ c->dohints = strstr(row[4], "hints") != NULL; ++ c->loglocal = strstr(row[4], "loglocal") != NULL; + } + + c->next = realms; diff --git a/net/icradius/files/patch-src::radiusd.c b/net/icradius/files/patch-src::radiusd.c new file mode 100644 index 0000000..14aea15 --- /dev/null +++ b/net/icradius/files/patch-src::radiusd.c @@ -0,0 +1,46 @@ +--- src/radiusd.c.old Wed Sep 13 23:45:42 2000 ++++ src/radiusd.c Thu Jan 25 17:51:17 2001 +@@ -429,7 +429,7 @@ + if(pid > 0) { + exit(0); + } +-#if defined(__linux__) || defined(__svr4__) || defined(__hpux__) ++#if defined(__linux__) || defined(__svr4__) || defined(__hpux__) || defined(__FreeBSD__) + setsid(); + #endif + } +@@ -577,6 +577,10 @@ + * Relay reply back to original NAS. + * + */ ++int rad_accounting_sql(AUTH_REQ *, int, char *, SQLSOCK *); ++int rad_accounting_file(AUTH_REQ *, int, char *); ++ ++ + int radrespond(AUTH_REQ *authreq, int activefd, SQLSOCK *acctsock) { + int dospawn; + FUNP fun; +@@ -603,8 +607,22 @@ + namepair = pairfind(authreq->request, PW_USER_NAME); + if (namepair == NULL) + break; +- if (proxy_send(authreq, activefd) != 0) ++ if ((e = proxy_send(authreq, activefd)) != 0){ ++ REALM *realm = NULL; ++ ++ if( (authreq->code == PW_ACCOUNTING_REQUEST) && ++ (e != -1) && (realm = realm_find(authreq->realm)) ) { ++ if( realm->loglocal ){ ++ extern char *accounting_method; ++ ++ if(strchr(accounting_method, 'f') != NULL) ++ rad_accounting_file(authreq, 1, NULL); ++ if(strchr(accounting_method, 's') != NULL) ++ rad_accounting_sql(authreq, 1, NULL, acctsock); ++ } ++ } + return 0; ++ } + break; + + case PW_AUTHENTICATION_ACK: diff --git a/net/icradius/files/patch-src::radiusd.h b/net/icradius/files/patch-src::radiusd.h new file mode 100644 index 0000000..12dd9d9 --- /dev/null +++ b/net/icradius/files/patch-src::radiusd.h @@ -0,0 +1,10 @@ +--- src/radiusd.h.old Tue Sep 5 05:50:25 2000 ++++ src/radiusd.h Thu Jan 25 14:53:27 2001 +@@ -123,6 +123,7 @@ + int acct_port; + int striprealm; + int dohints; ++ int loglocal; + struct realm *next; + } REALM; + diff --git a/net/icradius/files/pcisco-raddb::dictionary.cisco_my b/net/icradius/files/pcisco-raddb::dictionary.cisco_my new file mode 100644 index 0000000..60869da --- /dev/null +++ b/net/icradius/files/pcisco-raddb::dictionary.cisco_my @@ -0,0 +1,31 @@ +--- raddb/dictionary.cisco_my.old Thu Jan 1 05:00:00 1970 ++++ raddb/dictionary.cisco_my Thu Nov 2 09:30:53 2000 +@@ -0,0 +1,28 @@ ++# Extra attributes sent by the Cisco, if you configure ++# "radius-server vsa accounting" (requires IOS11.2+). ++# (Removed VENDOR tag - dosn't work for some IOSes) ++ATTRIBUTE Cisco-Multilink-ID 187 integer ++ATTRIBUTE Cisco-Num-In-Multilink 188 integer ++ATTRIBUTE Cisco-Pre-Input-Octets 190 integer ++ATTRIBUTE Cisco-Pre-Output-Octets 191 integer ++ATTRIBUTE Cisco-Pre-Input-Packets 192 integer ++ATTRIBUTE Cisco-Pre-Output-Packets 193 integer ++ATTRIBUTE Cisco-Maximun-Time 194 integer ++ATTRIBUTE Cisco-Disconnect-Cause 195 integer ++ATTRIBUTE Cisco-Data-Rate 197 integer ++ATTRIBUTE Cisco-PreSession-Time 198 integer ++ATTRIBUTE Cisco-PW-Lifetime 208 integer ++ATTRIBUTE Cisco-IP-Direct 209 integer ++ATTRIBUTE Cisco-PPP-VJ-Slot-Comp 210 integer ++ATTRIBUTE Cisco-PPP-Async-Map 212 integer ++ATTRIBUTE Cisco-IP-Pool-Definition 217 integer ++ATTRIBUTE Cisco-Asing-IP-Pool 218 integer ++ATTRIBUTE Cisco-Route-IP 228 integer ++ATTRIBUTE Cisco-Link-Compression 233 integer ++ATTRIBUTE Cisco-Target-Util 234 integer ++ATTRIBUTE Cisco-Maximun-Channels 235 integer ++ATTRIBUTE Cisco-Data-Filter 242 integer ++ATTRIBUTE Cisco-Call-Filter 243 integer ++ATTRIBUTE Cisco-Idle-Limit 244 integer ++ATTRIBUTE Cisco-Xmit-Rate 255 integer ++ATTRIBUTE Cisco-Line-Name 65538 string diff --git a/net/icradius/files/pcisco-scripts::radius.cgi b/net/icradius/files/pcisco-scripts::radius.cgi new file mode 100644 index 0000000..83d31e5 --- /dev/null +++ b/net/icradius/files/pcisco-scripts::radius.cgi @@ -0,0 +1,106 @@ +--- scripts/radius.cgi.orig Wed Jul 18 16:03:17 2001 ++++ scripts/radius.cgi Wed Jul 18 15:30:03 2001 +@@ -2283,7 +2283,7 @@ + <select name="terminate_cause"> + <option value=''> + ~; +- my $terminate_causes = $radius->fetch_attribute_values('Acct-Terminate-Cause'); ++ my $terminate_causes = $radius->fetch_attribute_values('Cisco-Disconnect-Cause'); + foreach my $cause (@$terminate_causes) { + print qq!<option value="$cause"!; + print q! selected! if ($terminate_cause eq $cause); +@@ -2334,7 +2334,10 @@ + $sql .= " AND radacct.NASPortId = '$nas_port'" if $nas_port; + $sql .= " AND radacct.NASPortType = '$nas_port_type'" if $nas_port_type; + $sql .= " AND radacct.FramedIPAddress = '$framed_ipaddr'" if $framed_ipaddr; +- $sql .= " AND radacct.AcctTerminateCause = '$terminate_cause'" if $terminate_cause; ++ if( $terminate_cause ){ ++ my %list = &get_attr_list('Cisco-Disconnect-Cause'); ++ $sql .= " AND radacct.CiscoDisconnectCause = \"".$list{$terminate_cause}."\""; ++ } + + $sql .= " ORDER BY radacct.UserName, radacct.AcctStartTime DESC"; + +@@ -2427,7 +2430,13 @@ + + my $session = $radius->fetch_session_info($radacctid); + +- print qq~ ++ my $NASPortType = &get_attr($session->{NASPortType},"NAS-Port-Type"); ++ my $AcctAuthentic = &get_attr($session->{AcctAuthentic},"Acct-Authentic"); ++ my $CiscoDisconnectCause = &get_attr($session->{CiscoDisconnectCause},"Cisco-Disconnect-Cause"); ++ my $ServiceType = &get_attr($session->{ServiceType},"Service-Type"); ++ my $FramedProtocol = &get_attr($session->{FramedProtocol},"Framed-Protocol"); ++ ++ print qq~ + <center> + <table cellspacing="4" cellpadding="2" border="1" cols="2"> + <tr><th bgcolor="$highlight">Attribute</th><th bgcolor="$highlight">Value</th></tr> +@@ -2436,24 +2445,23 @@ + <tr><td align="center">Realm</td><td align="center">$session->{Realm}</td></tr> + <tr><td align="center">NAS-IP-Address</td><td align="center">$session->{NASIPAddress}</td></tr> + <tr><td align="center">NAS-Port-Id</td><td align="center">$session->{NASPortId}</td></tr> +- <tr><td align="center">NAS-Port-Type</td><td align="center">$session->{NASPortType}</td></tr> ++ <tr><td align="center">NAS-Port-Type</td><td align="center">$NASPortType</td></tr> + <tr><td align="center">Acct-Start-Time</td><td align="center">$session->{AcctStartTime}</td></tr> + <tr><td align="center">Acct-Stop-Time</td><td align="center">$session->{AcctStopTime}</td></tr> + <tr><td align="center">Acct-Session-Time</td><td align="center">$session->{AcctSessionTime}</td></tr> +- <tr><td align="center">Acct-Authentic</td><td align="center">$session->{AcctAuthentic}</td></tr> +- <tr><td align="center">Connect-Info</td><td align="center">$session->{ConnectInfo}</td></tr> ++ <tr><td align="center">Acct-Authentic</td><td align="center">$AcctAuthentic</td></tr> + <tr><td align="center">Acct-Input-Octets</td><td align="center">$session->{AcctInputOctets}</td></tr> + <tr><td align="center">Acct-Output-Octets</td><td align="center">$session->{AcctOutputOctets}</td></tr> +- <tr><td align="center">Called-Station-Id</td><td align="center">$session->{CalledStationId}</td></tr> +- <tr><td align="center">Calling-Station-Id</td><td align="center">$session->{CallingStationId}</td></tr> +- <tr><td align="center">Acct-Terminate-Cause</td><td align="center">$session->{AcctTerminateCause}</td></tr> +- <tr><td align="center">Service-Type</td><td align="center">$session->{ServiceType}</td></tr> +- <tr><td align="center">Framed-Protocol</td><td align="center">$session->{FramedProtocol}</td></tr> ++ <tr><td align="center">Cisco-Disconnect-Cause</td><td align="center">$CiscoDisconnectCause</td></tr> ++ <tr><td align="center">Service-Type</td><td align="center">$ServiceType</td></tr> ++ <tr><td align="center">Framed-Protocol</td><td align="center">$FramedProtocol</td></tr> + <tr><td align="center">Framed-IP-Address</td><td align="center">$session->{FramedIPAddress}</td></tr> + <tr><td align="center">Acct-Start-Delay-Time</td><td align="center">$session->{AcctStartDelay}</td></tr> + <tr><td align="center">Acct-Stop-Delay-Time</td><td align="center">$session->{AcctStopDelay}</td></tr> +- </table> +- </center> ++ <tr><td align="center">Cisco-Data-Rate</td><td align="center">$session->{CiscoDataRate}</td></tr> ++ <tr><td align="center">Cisco-Xmit-Rate</td><td align="center">$session->{CiscoXmitRate}</td></tr> ++ <tr><td align="center">Calling-Station-Id</td><td align="center">$session->{CallingStationId}</td></tr> ++ <tr><td align="center">Called-Station-Id</td><td align="center">$session->{CalledStationId}</td></tr></table></center> + ~; + } + +@@ -3160,3 +3168,33 @@ + + unlink $tmp_sessions_file; + } ++ ++# Get attribute description ++sub get_attr { ++ my( $attr ) = shift; ++ my( $attr_name) = shift; ++ my( $sth ) = ++ $radius->{dbh}->prepare("SELECT Value from dictionary WHERE ++ Type='VALUE' AND Attribute='$attr_name' AND ++ Format='$attr'"); ++ $sth->execute || &terminal_error; ++ my @row = $sth->fetchrow_array; ++ $sth->finish; ++ ++ return (( $#row >= 0 )? $row[0]:$attr); ++} ++ ++# Make a list of values of the specified attribute ++sub get_attr_list { ++ my( $attr ) = shift; ++ my( %list, @row ); ++ my( $sth ) = ++ $radius->{dbh}->prepare("SELECT Value,Format FROM dictionary WHERE ++ Type='VALUE' AND Attribute='$attr'"); ++ $sth->execute || &terminal_error; ++ while( @row = $sth->fetchrow_array ){ ++ $list{$row[0]}=$row[1]; ++ } ++ $sth->finish; ++ return %list; ++} diff --git a/net/icradius/files/pcisco-scripts::radius.db b/net/icradius/files/pcisco-scripts::radius.db new file mode 100644 index 0000000..008eccb --- /dev/null +++ b/net/icradius/files/pcisco-scripts::radius.db @@ -0,0 +1,34 @@ +--- scripts/radius.db.old Thu Jun 15 23:20:48 2000 ++++ scripts/radius.db Wed Jan 17 13:05:15 2001 +@@ -42,22 +42,23 @@ + Realm varchar(30) DEFAULT '', + NASIPAddress varchar(15) DEFAULT '' NOT NULL, + NASPortId int(12), +- NASPortType varchar(32), ++ NASPortType int(12), + AcctStartTime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, + AcctStopTime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, + AcctSessionTime int(12), +- AcctAuthentic varchar(32), +- ConnectInfo varchar(32), ++ AcctAuthentic int(12), + AcctInputOctets int(12), + AcctOutputOctets int(12), +- CalledStationId varchar(10) DEFAULT '' NOT NULL, +- CallingStationId varchar(10) DEFAULT '' NOT NULL, +- AcctTerminateCause varchar(32) DEFAULT '' NOT NULL, +- ServiceType varchar(32), +- FramedProtocol varchar(32), ++ CiscoDisconnectCause int(12), ++ ServiceType int(12), ++ FramedProtocol int(12), + FramedIPAddress varchar(15) DEFAULT '' NOT NULL, + AcctStartDelay int(12), + AcctStopDelay int(12), ++ CiscoDataRate int(12), ++ CiscoXmitRate int(12), ++ CallingStationID varchar(30) DEFAULT '', ++ CalledStationID varchar(30) DEFAULT '', + PRIMARY KEY (RadAcctId), + KEY UserName (UserName), + KEY FramedIPAddress (FramedIPAddress), diff --git a/net/icradius/files/pcisco-src::acct.c b/net/icradius/files/pcisco-src::acct.c new file mode 100644 index 0000000..c9782bf --- /dev/null +++ b/net/icradius/files/pcisco-src::acct.c @@ -0,0 +1,101 @@ +--- src/acct.c.orig Tue Jun 12 07:31:23 2001 ++++ src/acct.c Tue Jun 26 17:00:10 2001 +@@ -84,7 +84,7 @@ + struct stat backup; + SQLREC backuprecord = {"", "", "", "", 0, "", "", 0, "", 0, "", "", 0, 0, "", "", "", "", "", "", 0}; + #endif +- SQLREC sqlrecord = {"", "", "", "", 0, "", "", 0, "", 0, "", "", 0, 0, "", "", "", "", "", "", 0}; ++ SQLREC sqlrecord = {"", "", "", "", 0, 0, 0, "", 0, 0, 0, 0, 0, 0, 0, "", 0, 0, "", "", 0}; + VALUE_PAIR *pair; + int ret = 0; + +@@ -111,18 +111,11 @@ + break; + + case PW_NAS_PORT_TYPE: +- valbuf = (char *)dict_valgetname(pair->lvalue, pair->name); +- if(valbuf != (char *)NULL) { +- strncpy(sqlrecord.NASPortType, valbuf, SQLBIGREC); +- } ++ sqlrecord.NASPortType = pair->lvalue; + break; + + case PW_ACCT_STATUS_TYPE: + sqlrecord.AcctStatusTypeId = pair->lvalue; +- valbuf = (char *)dict_valgetname(pair->lvalue, pair->name); +- if(valbuf != (char *)NULL) { +- strncpy(sqlrecord.AcctStatusType, valbuf, SQLBIGREC); +- } + break; + + case PW_ACCT_SESSION_TIME: +@@ -130,16 +123,9 @@ + break; + + case PW_ACCT_AUTHENTIC: +- valbuf = (char *)dict_valgetname(pair->lvalue, pair->name); +- if(valbuf != (char *)NULL) { +- strncpy(sqlrecord.AcctAuthentic, valbuf, SQLBIGREC); +- } ++ sqlrecord.AcctAuthentic = pair->lvalue; + break; + +- case PW_CONNECT_INFO: +- strncpy(sqlrecord.ConnectInfo, pair->strvalue, SQLBIGREC); +- break; +- + case PW_ACCT_INPUT_OCTETS: + sqlrecord.AcctInputOctets = pair->lvalue; + break; +@@ -148,33 +134,32 @@ + sqlrecord.AcctOutputOctets = pair->lvalue; + break; + +- case PW_CALLED_STATION_ID: +- strncpy(sqlrecord.CalledStationId, pair->strvalue, SQLLILREC); +- break; ++ case PW_CISCO_DISCONNECT_CAUSE: ++ sqlrecord.CiscoDisconnectCause = pair->lvalue; ++ break; + +- case PW_CALLING_STATION_ID: +- strncpy(sqlrecord.CallingStationId, pair->strvalue, SQLLILREC); +- break; ++ case PW_CISCO_DATA_RATE: ++ sqlrecord.CiscoDataRate = pair->lvalue; ++ break; + +- case PW_ACCT_TERMINATE_CAUSE: +- valbuf = (char *)dict_valgetname(pair->lvalue, pair->name); +- if(valbuf != (char *)NULL) { +- strncpy(sqlrecord.AcctTerminateCause, valbuf, SQLBIGREC); +- } ++ case PW_CISCO_XMIT_RATE: ++ sqlrecord.CiscoXmitRate = pair->lvalue; + break; + ++ case PW_CALLED_STATION_ID: ++ strncpy(sqlrecord.CalledStationID, pair->strvalue, SQLBIGREC); ++ break; ++ ++ case PW_CALLING_STATION_ID: ++ strncpy(sqlrecord.CallingStationID, pair->strvalue, SQLBIGREC); ++ break; ++ + case PW_SERVICE_TYPE: +- valbuf = (char *)dict_valgetname(pair->lvalue, pair->name); +- if(valbuf != (char *)NULL) { +- strncpy(sqlrecord.ServiceType, valbuf, SQLBIGREC); +- } ++ sqlrecord.ServiceType = pair->lvalue; + break; + + case PW_FRAMED_PROTOCOL: +- valbuf = (char *)dict_valgetname(pair->lvalue, pair->name); +- if(valbuf != (char *)NULL) { +- strncpy(sqlrecord.FramedProtocol, valbuf, SQLBIGREC); +- } ++ sqlrecord.FramedProtocol = pair->lvalue; + break; + + case PW_FRAMED_IP_ADDRESS: diff --git a/net/icradius/files/pcisco-src::mysql.c b/net/icradius/files/pcisco-src::mysql.c new file mode 100644 index 0000000..16f6dddf --- /dev/null +++ b/net/icradius/files/pcisco-src::mysql.c @@ -0,0 +1,199 @@ +--- src/mysql.c.old Sat Oct 21 23:28:04 2000 ++++ src/mysql.c Thu Jan 25 14:51:54 2001 +@@ -471,7 +475,15 @@ + /* The Terminal server informed us that it was rebooted + * STOP all records from this NAS */ + +- sprintf(querystr, "UPDATE %s SET AcctStopTime='%s', AcctSessionTime=unix_timestamp('%s') - unix_timestamp(AcctStartTime), AcctTerminateCause='%s', AcctStopDelay = %ld WHERE AcctSessionTime=0 AND AcctStopTime=0 AND NASIPAddress= '%s' AND AcctStartTime <= '%s'", sql->config->sql_acct_table, sqlrecord->AcctTimeStamp, sqlrecord->AcctTimeStamp, sqlrecord->AcctTerminateCause, sqlrecord->AcctDelayTime, sqlrecord->NASIPAddress, sqlrecord->AcctTimeStamp); ++ sprintf(querystr, "UPDATE %s SET AcctStopTime='%s', " ++ "AcctSessionTime=unix_timestamp('%s') - unix_timestamp(AcctStartTime)," ++ " CiscoDisconnectCause = %lu, AcctStopDelay = %lu " ++ "WHERE AcctSessionTime=0 AND AcctStopTime=0 AND " ++ "NASIPAddress= '%s' AND AcctStartTime <= '%s'", ++ sql->config->sql_acct_table, sqlrecord->AcctTimeStamp, ++ sqlrecord->AcctTimeStamp, ++ sqlrecord->CiscoDisconnectCause, sqlrecord->AcctDelayTime, ++ sqlrecord->NASIPAddress, sqlrecord->AcctTimeStamp); + + if (!sql_query(socket, querystr)) { + log(L_ERR, "Acct: Couldn't update SQL accounting after NAS reboot - %s", sql_error(socket)); +@@ -488,7 +500,12 @@ + } + + if (sqlrecord->AcctStatusTypeId == PW_STATUS_ALIVE) { +- sprintf(querystr, "UPDATE %s SET FramedIPAddress = '%s' WHERE AcctSessionId = '%s' AND UserName = '%s' AND NASIPAddress= '%s'", sql->config->sql_acct_table, sqlrecord->FramedIPAddress, sqlrecord->AcctSessionId, sqlrecord->UserName, sqlrecord->NASIPAddress); ++ sprintf(querystr, "UPDATE %s SET FramedIPAddress = '%s' " ++ "WHERE AcctSessionId = '%s' AND UserName = '%s' AND " ++ "NASIPAddress= '%s'", ++ sql->config->sql_acct_table, sqlrecord->FramedIPAddress, ++ sqlrecord->AcctSessionId, sqlrecord->UserName, ++ sqlrecord->NASIPAddress); + if (!sql_query(socket, querystr)) { + log(L_ERR, "Acct: Couldn't update SQL accounting for ALIVE packet - %s", sql_error(socket)); + ret = 0; +@@ -507,7 +524,10 @@ + if(sqlrecord->AcctStatusTypeId == PW_STATUS_START) { + + /* Set start time on record with only a stop record */ +- snprintf(querystr, 2048, "UPDATE %s SET AcctStartTime = '%s', AcctStartDelay = %ld WHERE AcctSessionId = '%s' AND UserName = '%s' AND NASIPAddress = '%s' AND NASPortId = '%ld'", ++ snprintf(querystr, 2048, ++ "UPDATE %s SET AcctStartTime = '%s', AcctStartDelay = %lu " ++ "WHERE AcctSessionId = '%s' AND UserName = '%s' AND " ++ "NASIPAddress = '%s' AND NASPortId = %lu", + sql->config->sql_acct_table, + sqlrecord->AcctTimeStamp, + sqlrecord->AcctDelayTime, +@@ -527,24 +547,34 @@ + if (num == 0 && ret > 0) { + + /* Insert new record with blank stop time until we receive the stop record */ +- snprintf(querystr, 2048, "INSERT INTO %s VALUES (0, '%s', '%s', '%s', '%s', %ld, '%s', '%s', 0, 0, '%s', '%s', 0, 0, '%s', '%s', '', '%s', '%s', '%s', %ld, 0)", +- sql->config->sql_acct_table, +- sqlrecord->AcctSessionId, +- sqlrecord->UserName, +- sqlrecord->Realm, +- sqlrecord->NASIPAddress, +- sqlrecord->NASPortId, +- sqlrecord->NASPortType, +- sqlrecord->AcctTimeStamp, +- sqlrecord->AcctAuthentic, +- sqlrecord->ConnectInfo, +- sqlrecord->CalledStationId, +- sqlrecord->CallingStationId, +- sqlrecord->ServiceType, +- sqlrecord->FramedProtocol, +- sqlrecord->FramedIPAddress, +- sqlrecord->AcctDelayTime +- ); ++ snprintf(querystr, 2048, "INSERT INTO %s VALUES " ++ "(0, '%s', '%s', '%s', " ++ "'%s', %lu, %lu, " ++ "'%s', 0, 0, " ++ "%lu, 0, 0, '', " ++ "%lu, %lu, '', " ++ "%lu, 0, 0, 0, '%s', '%s')", ++ sql->config->sql_acct_table, ++ ++ sqlrecord->AcctSessionId, ++ sqlrecord->UserName, ++ sqlrecord->Realm, ++ ++ sqlrecord->NASIPAddress, ++ sqlrecord->NASPortId, ++ sqlrecord->NASPortType, ++ ++ sqlrecord->AcctTimeStamp, ++ ++ sqlrecord->AcctAuthentic, ++ ++ sqlrecord->ServiceType, ++ sqlrecord->FramedProtocol, ++ ++ sqlrecord->AcctDelayTime, ++ ++ sqlrecord->CallingStationID, ++ sqlrecord->CalledStationID ); + + if (!sql_query(socket, querystr)) { + log(L_ERR, "Acct: Couldn't insert SQL accounting START record - %s", sql_error(socket)); +@@ -563,7 +593,10 @@ + else + sprintf(authstr, "UserName = '%s'", sqlrecord->UserName); + +- sprintf(querystr, "SELECT RadAcctId FROM %s WHERE AcctSessionId='%s' AND NASIPAddress='%s' AND %s", sql->config->sql_acct_table, sqlrecord->AcctSessionId, sqlrecord->NASIPAddress, authstr); ++ sprintf(querystr, "SELECT RadAcctId FROM %s WHERE " ++ "AcctSessionId='%s' AND NASIPAddress='%s' AND %s", ++ sql->config->sql_acct_table, ++ sqlrecord->AcctSessionId, sqlrecord->NASIPAddress, authstr); + sql_select_query(socket, querystr); + num = sql_num_rows(socket); + sql_finish_select_query(socket); +@@ -571,19 +604,25 @@ + if (num > 0) { + + /* Set stop time on matching record with start time */ +- snprintf(querystr, 2048, "UPDATE %s SET AcctStopTime = '%s', AcctSessionTime = '%lu', AcctInputOctets = '%lu', AcctOutputOctets = '%lu', AcctTerminateCause = '%s', AcctStopDelay = %ld WHERE AcctSessionId = '%s' AND UserName = '%s' AND NASIPAddress = '%s' AND NASPortId = '%ld'", +- sql->config->sql_acct_table, +- sqlrecord->AcctTimeStamp, +- sqlrecord->AcctSessionTime, +- sqlrecord->AcctInputOctets, +- sqlrecord->AcctOutputOctets, +- sqlrecord->AcctTerminateCause, +- sqlrecord->AcctDelayTime, +- sqlrecord->AcctSessionId, +- sqlrecord->UserName, +- sqlrecord->NASIPAddress, +- sqlrecord->NASPortId +- ); ++ snprintf(querystr, 2048, ++ "UPDATE %s SET " ++ "AcctStopTime = '%s', AcctSessionTime = %lu, " ++ "AcctInputOctets = %lu, AcctOutputOctets = %lu, " ++ "FramedIPAddress = '%s', CiscoDisconnectCause = %lu, " ++ "AcctStopDelay = %lu, " ++ "CiscoDataRate = %lu, CiscoXmitRate = %lu, " ++ "CallingStationID = '%s', CalledStationID = '%s' " ++ "WHERE AcctSessionId = '%s' AND UserName = '%s' AND " ++ "NASIPAddress = '%s' AND NASPortId = %lu", ++ sql->config->sql_acct_table, ++ sqlrecord->AcctTimeStamp, sqlrecord->AcctSessionTime, ++ sqlrecord->AcctInputOctets, sqlrecord->AcctOutputOctets, ++ sqlrecord->FramedIPAddress, sqlrecord->CiscoDisconnectCause, ++ sqlrecord->AcctDelayTime, ++ sqlrecord->CiscoDataRate, sqlrecord->CiscoXmitRate, ++ sqlrecord->CallingStationID,sqlrecord->CalledStationID, ++ sqlrecord->AcctSessionId, sqlrecord->UserName, ++ sqlrecord->NASIPAddress, sqlrecord->NASPortId); + + if (!sql_query(socket, querystr)) { + log(L_ERR, "Acct: Couldn't update SQL accounting STOP record - %s", sql_error(socket)); +@@ -607,28 +646,42 @@ + #endif /* CISCO_ACCOUNTING_HACK */ + + /* Insert record with no start time until matching start record comes */ +- snprintf(querystr, 2048, "INSERT INTO %s VALUES (0, '%s', '%s', '%s', '%s', %ld, '%s', 0, '%s', '%lu', '%s', '%s', '%lu', '%lu', '%s', '%s', '%s', '%s', '%s', '%s', 0, %ld)", ++ snprintf(querystr, 2048, "INSERT INTO %s VALUES " ++ "(0, '%s', '%s', '%s', " ++ "'%s', %lu, %lu, " ++ "0, '%s', %lu, " ++ "%lu, %lu, %lu, " ++ "%lu, %lu, " ++ "%lu, '%s', " ++ "0, %lu, %lu, %lu, '%s', '%s')", + sql->config->sql_acct_table, ++ + sqlrecord->AcctSessionId, + sqlrecord->UserName, + sqlrecord->Realm, ++ + sqlrecord->NASIPAddress, + sqlrecord->NASPortId, + sqlrecord->NASPortType, ++ + sqlrecord->AcctTimeStamp, + sqlrecord->AcctSessionTime, ++ + sqlrecord->AcctAuthentic, +- sqlrecord->ConnectInfo, + sqlrecord->AcctInputOctets, + sqlrecord->AcctOutputOctets, +- sqlrecord->CalledStationId, +- sqlrecord->CallingStationId, +- sqlrecord->AcctTerminateCause, ++ ++ sqlrecord->CiscoDisconnectCause, + sqlrecord->ServiceType, ++ + sqlrecord->FramedProtocol, + sqlrecord->FramedIPAddress, +- sqlrecord->AcctDelayTime +- ); ++ ++ sqlrecord->AcctDelayTime, ++ sqlrecord->CiscoDataRate, ++ sqlrecord->CiscoXmitRate, ++ sqlrecord->CallingStationID, ++ sqlrecord->CalledStationID); + + if (!sql_query(socket, querystr)) { + log(L_ERR, "Acct: Couldn't insert SQL accounting STOP record - %s", sql_error(socket)); diff --git a/net/icradius/files/pcisco-src::proxy.c b/net/icradius/files/pcisco-src::proxy.c new file mode 100644 index 0000000..f847eee --- /dev/null +++ b/net/icradius/files/pcisco-src::proxy.c @@ -0,0 +1,10 @@ +--- src/proxy.c.old Sat Oct 21 23:28:04 2000 ++++ src/proxy.c Tue Mar 6 18:18:14 2001 +@@ -44,6 +44,7 @@ + PW_SESSION_TIMEOUT, + PW_IDLE_TIMEOUT, + PW_PORT_LIMIT, ++ PW_CISCO_MAXIMUM_TIME, + 0, + }; + diff --git a/net/icradius/files/pcisco-src::radius.h b/net/icradius/files/pcisco-src::radius.h new file mode 100644 index 0000000..4835711 --- /dev/null +++ b/net/icradius/files/pcisco-src::radius.h @@ -0,0 +1,16 @@ +--- src/radius.h.old Tue Nov 21 23:35:27 2000 ++++ src/radius.h Tue Mar 6 18:16:58 2001 +@@ -126,6 +126,13 @@ + + #define PW_RADIUS_OPERATOR 100 + ++#define PW_CISCO_MAXIMUM_TIME 194 ++#define PW_CISCO_DISCONNECT_CAUSE 195 ++#define PW_CISCO_DATA_RATE 197 ++#define PW_CISCO_XMIT_RATE 255 ++ ++ ++ + #define PW_FALL_THROUGH 500 + #define PW_ADD_PORT_TO_IP_ADDRESS 501 + #define PW_EXEC_PROGRAM 502 diff --git a/net/icradius/files/pcisco-src::radiusd.h b/net/icradius/files/pcisco-src::radiusd.h new file mode 100644 index 0000000..2e24d8a --- /dev/null +++ b/net/icradius/files/pcisco-src::radiusd.h @@ -0,0 +1,33 @@ +--- src/radiusd.h.old Tue Sep 5 05:50:25 2000 ++++ src/radiusd.h Thu Jan 25 14:53:27 2001 +@@ -142,21 +142,21 @@ + char Realm[SQLBIGREC]; + char NASIPAddress[SQLLILREC]; + unsigned long NASPortId; +- char NASPortType[SQLBIGREC]; +- char AcctStatusType[SQLBIGREC]; ++ unsigned long NASPortType; + unsigned int AcctStatusTypeId; + char AcctTimeStamp[20]; + unsigned long AcctSessionTime; +- char AcctAuthentic[SQLBIGREC]; +- char ConnectInfo[SQLBIGREC]; ++ unsigned long AcctAuthentic; + unsigned long AcctInputOctets; + unsigned long AcctOutputOctets; +- char CalledStationId[SQLLILREC]; +- char CallingStationId[SQLLILREC]; +- char AcctTerminateCause[SQLBIGREC]; +- char ServiceType[SQLBIGREC]; +- char FramedProtocol[SQLBIGREC]; ++ unsigned long CiscoDisconnectCause; ++ unsigned long ServiceType; ++ unsigned long FramedProtocol; + char FramedIPAddress[SQLLILREC]; ++ unsigned long CiscoDataRate; ++ unsigned long CiscoXmitRate; ++ char CallingStationID[SQLBIGREC]; ++ char CalledStationID[SQLBIGREC]; + unsigned long AcctDelayTime; + } SQLREC; + diff --git a/net/icradius/pkg-comment b/net/icradius/pkg-comment new file mode 100644 index 0000000..4f7a452 --- /dev/null +++ b/net/icradius/pkg-comment @@ -0,0 +1 @@ +A variant of Cistron RADIUS, but with a MySQL backend diff --git a/net/icradius/pkg-descr b/net/icradius/pkg-descr new file mode 100644 index 0000000..e927982 --- /dev/null +++ b/net/icradius/pkg-descr @@ -0,0 +1,24 @@ +IC-RADIUS is a variant of Cistron RADIUS, but with a MySQL backend. + +It includes a web interface for user management, as well as a CGI for +your users to check their usage history. IC-RADIUS conforms to RFC 2865 +and RFC 2866. IC-RADIUS is released under the GPL. + +Features + + Database backend - Easy intergration to other programs + Web based management tools + Simultaneous restrictions + Roaming support via realms + Scalable to large environments + Compatable with the FreeRADIUS rlm_sql_mysql table structure + +Source code is developed and mainained by InnerCite (http://www.innercite.com) + +Projects Home: + +WWW: http://icradius.hislora.com.au/ + +Additional changes: +1) Add missed loglocal feature for radius proxy. +2) Add special hacks to make it CISCO-specific (optional, see Makefile). diff --git a/net/icradius/pkg-message b/net/icradius/pkg-message new file mode 100644 index 0000000..0334273 --- /dev/null +++ b/net/icradius/pkg-message @@ -0,0 +1,14 @@ +Please, read ${PREFIX}/share/doc/icradius/README. It +helps you to configure your system. + +Don't forget to make required changes to +${PREFIX}/etc/raddb/radius.conf. + +Also you need to customize your database. Required files +are placed into ${PREFIX}/share/icradius. + +To use multiple login limitations, you need to install +some additional ports: + +${PORTSDIR}/net/p5-Net-Telnet +${PORTSDIR}/net/p5-SNMP_Session diff --git a/net/icradius/pkg-plist b/net/icradius/pkg-plist new file mode 100644 index 0000000..3b47649 --- /dev/null +++ b/net/icradius/pkg-plist @@ -0,0 +1,57 @@ +etc/raddb/radius.conf.sample +etc/rc.d/icradiusd.sh +sbin/radiusd +sbin/checkrad +sbin/radwatch +%%CGI%%libexec/radius.cgi +%%CGI%%libexec/usage.cgi +%%PORTDOCS%%share/doc/icradius/COPYING +%%PORTDOCS%%share/doc/icradius/COPYRIGHT.Cistron +%%PORTDOCS%%share/doc/icradius/COPYRIGHT.ICRADIUS +%%PORTDOCS%%share/doc/icradius/COPYRIGHT.Livingston +%%PORTDOCS%%share/doc/icradius/README +%%PORTDOCS%%share/doc/icradius/README.Y2K +%%PORTDOCS%%share/doc/icradius/README.cisco +%%PORTDOCS%%share/doc/icradius/README.hints +%%PORTDOCS%%share/doc/icradius/README.proxy +%%PORTDOCS%%share/doc/icradius/README.simul +%%PORTDOCS%%share/doc/icradius/FAQ +%%PORTDOCS%%share/doc/icradius/THANKS +%%PORTDOCS%%share/doc/icradius/TODO +share/icradius/raddb/dictionary +share/icradius/raddb/dictionary.ascend +share/icradius/raddb/dictionary.cisco +share/icradius/raddb/dictionary.compat +share/icradius/raddb/dictionary.foundry +share/icradius/raddb/dictionary.livingston +share/icradius/raddb/dictionary.merit +share/icradius/raddb/dictionary.redback +share/icradius/raddb/dictionary.shiva +share/icradius/raddb/dictionary.tunnel +share/icradius/raddb/dictionary.usr +share/icradius/raddb/dictionary.versanet +share/icradius/raddb/huntgroups +share/icradius/scripts/images/l.gif +share/icradius/scripts/images/lc.gif +share/icradius/scripts/images/r.gif +share/icradius/scripts/images/rc.gif +share/icradius/scripts/images/rr.gif +share/icradius/scripts/radwho +share/icradius/scripts/radlast +share/icradius/scripts/radius.db +share/icradius/scripts/usonlineconv.pl +share/icradius/scripts/userimport.pl +share/icradius/scripts/userexport.pl +share/icradius/scripts/syncaccounting.pl +share/icradius/scripts/radiusfixup.pl +share/icradius/scripts/dictimport.pl +share/icradius/scripts/acctsummarize.pl +share/icradius/scripts/acctimport.pl +share/icradius/scripts/README +share/icradius/scripts/acctexport.pl +@dirrm etc/raddb +%%PORTDOCS%%@dirrm share/doc/icradius +@dirrm share/icradius/scripts/images +@dirrm share/icradius/scripts +@dirrm share/icradius/raddb +@dirrm share/icradius |