From b5727f0e807de138edfcd3aa9c7b7c29da39cfb1 Mon Sep 17 00:00:00 2001
From: Robert Anderson <randerson@lbsd.net>
Date: Wed, 2 Sep 2009 08:02:08 +0000
Subject: [PATCH] Updated terminate cause as per RFC 2866 Fixed incorrect row
 name when fetching terminate cause

---
 .../include/ajax/functions/AdminUserLogs.php  |  2 +-
 .../include/ajax/functions/WiSPUserLogs.php   |  2 +-
 webgui/include/radiuscodes.php                | 64 ++++++++++++-------
 webui/user/include/radiuscodes.php            | 64 ++++++++++++-------
 4 files changed, 82 insertions(+), 50 deletions(-)

diff --git a/webgui/include/ajax/functions/AdminUserLogs.php b/webgui/include/ajax/functions/AdminUserLogs.php
index 0d11e94b..251a4a6f 100644
--- a/webgui/include/ajax/functions/AdminUserLogs.php
+++ b/webgui/include/ajax/functions/AdminUserLogs.php
@@ -401,7 +401,7 @@ function getAdminUserLogs($params) {
 		$item['AcctInputMbyte'] = $acctInputMbyte;
 		$item['AcctOutputMbyte'] = $acctOutputMbyte;
 		$item['AcctSessionTime'] = $acctSessionTime;
-		$item['ConnectTermReason'] = strRadiusTermCode($row->servicetype);
+		$item['ConnectTermReason'] = strRadiusTermCode($row->acctterminatecause);
 
 		# Push this row onto main array
 		array_push($resultArray,$item);
diff --git a/webgui/include/ajax/functions/WiSPUserLogs.php b/webgui/include/ajax/functions/WiSPUserLogs.php
index c8ffd4c0..d2d6b5f1 100644
--- a/webgui/include/ajax/functions/WiSPUserLogs.php
+++ b/webgui/include/ajax/functions/WiSPUserLogs.php
@@ -400,7 +400,7 @@ function getWiSPUserLogs($params) {
 		$item['AcctInputMbyte'] = $acctInputMbyte;
 		$item['AcctOutputMbyte'] = $acctOutputMbyte;
 		$item['AcctSessionTime'] = $acctSessionTime;
-		$item['ConnectTermReason'] = strRadiusTermCode($row->servicetype);
+		$item['ConnectTermReason'] = strRadiusTermCode($row->acctterminatecause);
 
 		# Push this row onto main array
 		array_push($resultArray,$item);
diff --git a/webgui/include/radiuscodes.php b/webgui/include/radiuscodes.php
index a66697a8..64a5c898 100644
--- a/webgui/include/radiuscodes.php
+++ b/webgui/include/radiuscodes.php
@@ -23,38 +23,54 @@
 function strRadiusTermCode($errCode) {
 
 	if (is_numeric($errCode)) {
-
+		# Terminate codes RFC 2866
 		switch ($errCode) {
-			case 0:
-				return "Still logged in";
-			case 45: # Unknown
-			case 46: # Unknown
-			case 63: # Unknown
 			case 1:
-				return "User request";
+				return "User Request";
 			case 2:
-			case 816: # TCP connection reset? unknown
-				return "Carrier loss";
+				return "Lost Carrier";
+			case 3:
+				return "Lost Service";
+			case 4:
+				return "Idle Timeout";
 			case 5:
-				return "Session timeout";
-			case 6: # Admin reset
-			case 10: # NAS request
-			case 11: # NAS reboot
-			case 831: # NAS request? unknown
-			case 841: # NAS request? unknown
-				return "Router reset/reboot";
-			case 8: # Port error
-				return "Port error";
-			case 180: # Unknown
-				return "Local hangup";
-			case 827: # Unknown
-				return "Service unavailable";
+				return "Session Timeout";
+			case 6:
+				return "Admin Reset";
+			case 7:
+				return "Admin Reboot";
+			case 8:
+				return "Port Error";
+			case 9:
+				return "NAS Error";
+			case 10:
+				return "NAS Request";
+			case 11:
+				return "NAS Reboot";
+			case 12:
+				return "Port Unneeded";
+			case 13:
+				return "Port Preempted";
+			case 14:
+				return "Port Suspended";
+			case 15:
+				return "Service Unavailable";
+			case 16:
+				return "Callback";
+			case 17:
+				return "User Error";
+			case 18:
+				return "Host Request";
 			default:
 				return "Unkown";
 		}
-
 	} else {
-		return "Unknown";
+		switch ($errCode) {
+			case NULL:
+				return "Still logged in";
+			default:
+				return "Unkown";
+		}
 	}
 
 }
diff --git a/webui/user/include/radiuscodes.php b/webui/user/include/radiuscodes.php
index a66697a8..64a5c898 100644
--- a/webui/user/include/radiuscodes.php
+++ b/webui/user/include/radiuscodes.php
@@ -23,38 +23,54 @@
 function strRadiusTermCode($errCode) {
 
 	if (is_numeric($errCode)) {
-
+		# Terminate codes RFC 2866
 		switch ($errCode) {
-			case 0:
-				return "Still logged in";
-			case 45: # Unknown
-			case 46: # Unknown
-			case 63: # Unknown
 			case 1:
-				return "User request";
+				return "User Request";
 			case 2:
-			case 816: # TCP connection reset? unknown
-				return "Carrier loss";
+				return "Lost Carrier";
+			case 3:
+				return "Lost Service";
+			case 4:
+				return "Idle Timeout";
 			case 5:
-				return "Session timeout";
-			case 6: # Admin reset
-			case 10: # NAS request
-			case 11: # NAS reboot
-			case 831: # NAS request? unknown
-			case 841: # NAS request? unknown
-				return "Router reset/reboot";
-			case 8: # Port error
-				return "Port error";
-			case 180: # Unknown
-				return "Local hangup";
-			case 827: # Unknown
-				return "Service unavailable";
+				return "Session Timeout";
+			case 6:
+				return "Admin Reset";
+			case 7:
+				return "Admin Reboot";
+			case 8:
+				return "Port Error";
+			case 9:
+				return "NAS Error";
+			case 10:
+				return "NAS Request";
+			case 11:
+				return "NAS Reboot";
+			case 12:
+				return "Port Unneeded";
+			case 13:
+				return "Port Preempted";
+			case 14:
+				return "Port Suspended";
+			case 15:
+				return "Service Unavailable";
+			case 16:
+				return "Callback";
+			case 17:
+				return "User Error";
+			case 18:
+				return "Host Request";
 			default:
 				return "Unkown";
 		}
-
 	} else {
-		return "Unknown";
+		switch ($errCode) {
+			case NULL:
+				return "Still logged in";
+			default:
+				return "Unkown";
+		}
 	}
 
 }
-- 
GitLab