diff --git a/applet/src/main/java/JRadiusWiFiClient.java b/applet/src/main/java/JRadiusWiFiClient.java
index b764a20..9440212 100644
--- a/applet/src/main/java/JRadiusWiFiClient.java
+++ b/applet/src/main/java/JRadiusWiFiClient.java
@@ -29,6 +29,8 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.MalformedURLException;
@@ -219,8 +221,12 @@ public void init()
{
try
{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- netscape.security.PrivilegeManager.enablePrivilege("UniversalConnect");
+ @SuppressWarnings("rawtypes")
+ Class privilegeManager = Class.forName("netscape.security.PrivilegeManager");
+ @SuppressWarnings("unchecked")
+ Method enablePrivilege = privilegeManager.getMethod("enablePrivilege", new Class[] {String.class});
+ enablePrivilege.invoke(null, new Object[] { "UniversalXPConnect" });
+ enablePrivilege.invoke(null, new Object[] { "UniversalConnect" });
}
catch (Throwable e)
{ }
@@ -229,7 +235,14 @@ public void init()
{
try
{
- com.ms.security.PolicyEngine.assertPermission(com.ms.security.PermissionID.NETIO);
+ @SuppressWarnings("rawtypes")
+ Class policyEngine = Class.forName("com.ms.security.PolicyEngine");
+ @SuppressWarnings("rawtypes")
+ Class permissionID = Class.forName("com.ms.security.PermissionID");
+ @SuppressWarnings("unchecked")
+ Method assertPermission = policyEngine.getMethod("assertPermission", new Class[] {permissionID});
+ Field permId = permissionID.getField("NETIO");
+ assertPermission.invoke(null, new Object[] { permId.get(null) });
}
catch (Throwable e)
{ }
diff --git a/applet/src/main/java/WISPrClient.java b/applet/src/main/java/WISPrClient.java
index 5cca1f7..a029907 100644
--- a/applet/src/main/java/WISPrClient.java
+++ b/applet/src/main/java/WISPrClient.java
@@ -24,6 +24,8 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.HttpURLConnection;
@@ -125,8 +127,12 @@ public void init()
{
try
{
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- netscape.security.PrivilegeManager.enablePrivilege("UniversalConnect");
+ @SuppressWarnings("rawtypes")
+ Class privilegeManager = Class.forName("netscape.security.PrivilegeManager");
+ @SuppressWarnings("unchecked")
+ Method enablePrivilege = privilegeManager.getMethod("enablePrivilege", new Class[] {String.class});
+ enablePrivilege.invoke(null, new Object[] { "UniversalXPConnect" });
+ enablePrivilege.invoke(null, new Object[] { "UniversalConnect" });
}
catch (Throwable e)
{ }
@@ -135,7 +141,14 @@ public void init()
{
try
{
- com.ms.security.PolicyEngine.assertPermission(com.ms.security.PermissionID.NETIO);
+ @SuppressWarnings("rawtypes")
+ Class policyEngine = Class.forName("com.ms.security.PolicyEngine");
+ @SuppressWarnings("rawtypes")
+ Class permissionID = Class.forName("com.ms.security.PermissionID");
+ @SuppressWarnings("unchecked")
+ Method assertPermission = policyEngine.getMethod("assertPermission", new Class[] {permissionID});
+ Field permId = permissionID.getField("NETIO");
+ assertPermission.invoke(null, new Object[] { permId.get(null) });
}
catch (Throwable e)
{ }
diff --git a/extended/src/main/java/net/jradius/client/gui/AttributesTableEntry.java b/extended/src/main/java/net/jradius/client/gui/AttributesTableEntry.java
index 8913d6c..6d08d7b 100644
--- a/extended/src/main/java/net/jradius/client/gui/AttributesTableEntry.java
+++ b/extended/src/main/java/net/jradius/client/gui/AttributesTableEntry.java
@@ -37,6 +37,7 @@ public class AttributesTableEntry implements Serializable {
private Boolean accountingStart = Boolean.FALSE;
private Boolean accountingUpdate = Boolean.FALSE;
private Boolean accountingStop = Boolean.FALSE;
+ private Boolean coaRequest = Boolean.FALSE;
private Class valueClass;
public AttributesTableEntry()
@@ -92,6 +93,13 @@ public Boolean getAccountingStop() {
return accountingStop;
}
+ /**
+ * @return Returns the coaRequest.
+ */
+ public Boolean getCoARequest() {
+ return coaRequest;
+ }
+
/**
* @param accountingStop The accountingStop to set.
*/
@@ -155,5 +163,9 @@ public void setValueClass(Class valueClass) {
this.valueClass = valueClass;
}
+ public void setCoARequest(Boolean v) {
+ this.coaRequest = v;
+ }
+
};
diff --git a/extended/src/main/java/net/jradius/client/gui/AttributesTableModel.java b/extended/src/main/java/net/jradius/client/gui/AttributesTableModel.java
index c24ecea..0678a94 100644
--- a/extended/src/main/java/net/jradius/client/gui/AttributesTableModel.java
+++ b/extended/src/main/java/net/jradius/client/gui/AttributesTableModel.java
@@ -44,6 +44,7 @@ public class AttributesTableModel extends AbstractTableModel {
"AcctStart",
"AcctUpdate",
"AcctStop",
+ "CoA",
"Attribute Value"
};
@@ -82,7 +83,8 @@ public Object getValueAt(int row, int col) {
case 3: return entry.getAccountingStart();
case 4: return entry.getAccountingUpdate();
case 5: return entry.getAccountingStop();
- case 6: return entry.getAttributeValue();
+ case 6: return entry.getCoARequest();
+ case 7: return entry.getAttributeValue();
}
return null;
}
@@ -91,7 +93,7 @@ public Object getValueAt(int row, int col) {
* @see javax.swing.table.AbstractTableModel#getColumnClass(int)
*/
public Class getColumnClass(int col) {
- if (col == 0 || col == 6) return String.class;
+ if (col == 0 || col == 7) return String.class;
return Boolean.class;
}
@@ -116,7 +118,8 @@ public void setValueAt(Object v, int row, int col) {
case 3: entry.setAccountingStart((Boolean)v); break;
case 4: entry.setAccountingUpdate((Boolean)v); break;
case 5: entry.setAccountingStop((Boolean)v); break;
- case 6: entry.setAttributeValue((String)v); break;
+ case 6: entry.setCoARequest((Boolean)v); break;
+ case 7: entry.setAttributeValue((String)v); break;
}
fireTableCellUpdated(row, col);
}
diff --git a/extended/src/main/java/net/jradius/client/gui/JRadiusSimulator.java b/extended/src/main/java/net/jradius/client/gui/JRadiusSimulator.java
index 41012e8..f907c27 100644
--- a/extended/src/main/java/net/jradius/client/gui/JRadiusSimulator.java
+++ b/extended/src/main/java/net/jradius/client/gui/JRadiusSimulator.java
@@ -948,12 +948,12 @@ private JTable getAttributesTable()
if (attributesTable == null)
{
attributesTable = new JTable(attributesTableModel);
- TableColumn col = attributesTable.getColumnModel().getColumn(6);
+ TableColumn col = attributesTable.getColumnModel().getColumn(7);
col.setCellEditor(new ValueTableCellEditor());
for (int i = 0; i < attributesTableModel.getColumnCount(); i++)
{
col = attributesTable.getColumnModel().getColumn(i);
- if (i == 0 || i == 6) {
+ if (i == 0 || i == 7) {
col.setPreferredWidth(120);
} else {
col.setPreferredWidth(40);
@@ -2444,7 +2444,7 @@ public void run()
}
AttributeList[] authAttributes = { new AttributeList(), new AttributeList() };
- AttributeList[] acctAttributes = { new AttributeList(), new AttributeList(), new AttributeList() };
+ AttributeList[] acctAttributes = { new AttributeList(), new AttributeList(), new AttributeList(), new AttributeList() };
Object[] entries = attributesTableModel.getEntries().toArray();
for (int i = 0; i < entries.length; i++)
@@ -2461,6 +2461,7 @@ public void run()
if ((bool = entry.getAccountingStart()) != null && bool.booleanValue()) acctAttributes[0].add(AttributeFactory.copyAttribute(attribute), false);
if ((bool = entry.getAccountingUpdate()) != null && bool.booleanValue()) acctAttributes[1].add(AttributeFactory.copyAttribute(attribute), false);
if ((bool = entry.getAccountingStop()) != null && bool.booleanValue()) acctAttributes[2].add(AttributeFactory.copyAttribute(attribute), false);
+ if ((bool = entry.getCoARequest()) != null && bool.booleanValue()) acctAttributes[3].add(AttributeFactory.copyAttribute(attribute), false);
}
catch (UnknownAttributeException e)
{
@@ -2610,11 +2611,11 @@ public void onBeforeSend(RadiusClientTransport transport, RadiusPacket packet)
{
if (sendDisconnectRequest)
{
- request = PacketFactory.newPacket(DisconnectRequest.CODE, radiusClient, authAttributes[0]);
+ request = PacketFactory.newPacket(DisconnectRequest.CODE, radiusClient, acctAttributes[3]);
}
else if (sendCoARequest)
{
- request = PacketFactory.newPacket(CoARequest.CODE, radiusClient, authAttributes[0]);
+ request = PacketFactory.newPacket(CoARequest.CODE, radiusClient, acctAttributes[3]);
}
else
{
@@ -2735,6 +2736,7 @@ else if (sendCoARequest)
acctAttributes[0].clear();
acctAttributes[1].clear();
acctAttributes[2].clear();
+ acctAttributes[3].clear();
System.out.println("Sent: "+sent+" Recd: "+recd+" in "+((System.currentTimeMillis() - startTime))+"ms");
}
diff --git a/freeradius/dict/dictionary.chillispot b/freeradius/dict/dictionary.chillispot
index 14b7ab6..64b04bf 100644
--- a/freeradius/dict/dictionary.chillispot
+++ b/freeradius/dict/dictionary.chillispot
@@ -17,7 +17,6 @@ ATTRIBUTE ChilliSpot-Lang 7 string
ATTRIBUTE ChilliSpot-Version 8 string
ATTRIBUTE ChilliSpot-OriginalURL 9 string
ATTRIBUTE ChilliSpot-Acct-View-Point 10 integer
-ATTRIBUTE ChilliSpot-Config-File 11 string
VALUE ChilliSpot-Acct-View-Point ChilliSpot-NAS-View-Point 1
VALUE ChilliSpot-Acct-View-Point ChilliSpot-Client-View-Point 2
@@ -25,6 +24,12 @@ VALUE ChilliSpot-Acct-View-Point ChilliSpot-Client-View-Point 2
ATTRIBUTE ChilliSpot-Require-UAM 11 string
ATTRIBUTE ChilliSpot-Require-Splash 12 string
ATTRIBUTE ChilliSpot-Route-To-Interface 13 string
+ATTRIBUTE ChilliSpot-Config-File 14 string
+
+ATTRIBUTE ChilliSpot-Session-State 15 integer
+
+VALUE ChilliSpot-Session-State Authorized 1
+VALUE ChilliSpot-Session-State NotAuthorized 2
ATTRIBUTE ChilliSpot-Max-Input-Gigawords 21 integer
ATTRIBUTE ChilliSpot-Max-Output-Gigawords 22 integer
@@ -46,6 +51,12 @@ ATTRIBUTE ChilliSpot-DHCP-Server-Name 55 string
ATTRIBUTE ChilliSpot-DHCP-Client-FQDN 56 string
ATTRIBUTE ChilliSpot-DHCP-Parameter-Request-List 57 octets
+ATTRIBUTE ChilliSpot-DHCP-IP-Address 60 ipaddr
+ATTRIBUTE ChilliSpot-DHCP-Netmask 61 ipaddr
+ATTRIBUTE ChilliSpot-DHCP-DNS1 62 ipaddr
+ATTRIBUTE ChilliSpot-DHCP-DNS2 63 ipaddr
+ATTRIBUTE ChilliSpot-DHCP-Gateway 64 ipaddr
+
# Configuration management parameters (ChilliSpot Only)
ATTRIBUTE ChilliSpot-UAM-Allowed 100 string
ATTRIBUTE ChilliSpot-MAC-Allowed 101 string
diff --git a/pom.xml b/pom.xml
index 3928ef8..c743d9c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -134,8 +134,8 @@
client
applet
ssl
+-->
server