From 01a217572fbfb67018f4885ed97c53872df2d409 Mon Sep 17 00:00:00 2001 From: dbird Date: Thu, 5 May 2011 08:46:40 +0000 Subject: [PATCH] --- applet/src/main/java/JRadiusWiFiClient.java | 19 ++++++++++++++++--- applet/src/main/java/WISPrClient.java | 19 ++++++++++++++++--- .../client/gui/AttributesTableEntry.java | 12 ++++++++++++ .../client/gui/AttributesTableModel.java | 9 ++++++--- .../jradius/client/gui/JRadiusSimulator.java | 12 +++++++----- freeradius/dict/dictionary.chillispot | 13 ++++++++++++- pom.xml | 2 +- 7 files changed, 70 insertions(+), 16 deletions(-) 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