summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorwill <will@FreeBSD.org>2001-12-19 02:30:02 +0000
committerwill <will@FreeBSD.org>2001-12-19 02:30:02 +0000
commitf7050b317cc1633774bb7119d4b865d7e730ef8b (patch)
tree47050c2230564a8794d68e70891757b87dbce7f5 /net
parente2301ba3955ceaa1a19ad43a74669da9141452a1 (diff)
downloadFreeBSD-ports-f7050b317cc1633774bb7119d4b865d7e730ef8b.zip
FreeBSD-ports-f7050b317cc1633774bb7119d4b865d7e730ef8b.tar.gz
Add icradius 0.18.1, a variant of Cistron RADIUS, but with a MySQL
backend. PR: 29080 Submitted by: Sergey N. Voronkov <serg@tmn.ru>
Diffstat (limited to 'net')
-rw-r--r--net/Makefile1
-rw-r--r--net/icradius/Makefile89
-rw-r--r--net/icradius/distinfo1
-rw-r--r--net/icradius/files/icradiusd.sh59
-rw-r--r--net/icradius/files/patch-raddb::dictionary11
-rw-r--r--net/icradius/files/patch-raddb::dictionary.cisco10
-rw-r--r--net/icradius/files/patch-scripts::radius.cgi29
-rw-r--r--net/icradius/files/patch-scripts::radius.db38
-rw-r--r--net/icradius/files/patch-scripts::radwatch55
-rw-r--r--net/icradius/files/patch-src::Make.inc22
-rw-r--r--net/icradius/files/patch-src::Makefile.BSD12
-rw-r--r--net/icradius/files/patch-src::auth.c11
-rw-r--r--net/icradius/files/patch-src::checkrad.pl24
-rw-r--r--net/icradius/files/patch-src::conf.h10
-rw-r--r--net/icradius/files/patch-src::mysql.c49
-rw-r--r--net/icradius/files/patch-src::radiusd.c46
-rw-r--r--net/icradius/files/patch-src::radiusd.h10
-rw-r--r--net/icradius/files/pcisco-raddb::dictionary.cisco_my31
-rw-r--r--net/icradius/files/pcisco-scripts::radius.cgi106
-rw-r--r--net/icradius/files/pcisco-scripts::radius.db34
-rw-r--r--net/icradius/files/pcisco-src::acct.c101
-rw-r--r--net/icradius/files/pcisco-src::mysql.c199
-rw-r--r--net/icradius/files/pcisco-src::proxy.c10
-rw-r--r--net/icradius/files/pcisco-src::radius.h16
-rw-r--r--net/icradius/files/pcisco-src::radiusd.h33
-rw-r--r--net/icradius/pkg-comment1
-rw-r--r--net/icradius/pkg-descr24
-rw-r--r--net/icradius/pkg-message14
-rw-r--r--net/icradius/pkg-plist57
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
OpenPOWER on IntegriCloud