[8780cbec] | 1 | package com.nailabs.abac.test; |
---|
| 2 | |
---|
| 3 | import com.nailabs.abac.process.*; |
---|
| 4 | import edu.stanford.peer.rbtm.credential.*; |
---|
| 5 | import java.rmi.*; |
---|
| 6 | import java.rmi.server.*; |
---|
| 7 | import java.rmi.registry.*; |
---|
| 8 | import java.util.*; |
---|
| 9 | |
---|
| 10 | public class ClientAuthenticationService extends UnicastRemoteObject |
---|
| 11 | implements NegotiatorFactory |
---|
| 12 | { |
---|
| 13 | static HashMap configs = new HashMap(); |
---|
| 14 | |
---|
| 15 | public static final int PORT = 6666; |
---|
| 16 | FrontierManager frontiers; |
---|
| 17 | boolean isDone = false; |
---|
| 18 | |
---|
| 19 | static { |
---|
| 20 | try { |
---|
| 21 | LocateRegistry.createRegistry(1099); |
---|
| 22 | } catch(Exception ex) { |
---|
| 23 | ex.printStackTrace(); |
---|
| 24 | } |
---|
| 25 | } |
---|
| 26 | |
---|
| 27 | public ClientAuthenticationService(int port) |
---|
| 28 | throws RemoteException |
---|
| 29 | { |
---|
| 30 | super(); |
---|
| 31 | } |
---|
| 32 | |
---|
| 33 | public ClientAuthenticationService() throws RemoteException |
---|
| 34 | { |
---|
| 35 | this(PORT); |
---|
| 36 | } |
---|
| 37 | |
---|
| 38 | public Remote getNegotiator(String entity, Negotiator peer) |
---|
| 39 | throws RemoteException |
---|
| 40 | { |
---|
| 41 | if(!FrontierManager.getFrontiers().contains(entity))return null; |
---|
| 42 | Entity self = new SimpleEntity(entity); |
---|
| 43 | Entity oppo = peer.getSelf(); |
---|
| 44 | HashMap config = (HashMap)configs.get(self); |
---|
| 45 | config.put("Peer", oppo); |
---|
| 46 | NegotiationContext context = new NegotiationContext(config); |
---|
| 47 | TextGraphObserver observer = new TextGraphObserver(entity); |
---|
| 48 | RMINegotiator agent = null; |
---|
| 49 | Remote stub = null; |
---|
| 50 | // grab a set of credential graph engines |
---|
| 51 | System.out.println("Received request for " + entity + " from " + |
---|
| 52 | oppo.toString()); |
---|
| 53 | try { |
---|
| 54 | agent = new RMINegotiator(context); |
---|
| 55 | context.getGraph().addObserver(observer); |
---|
| 56 | //stub = (Negotiator)exportObject(agent); |
---|
| 57 | stub = (agent == null)? null: toStub(agent); |
---|
| 58 | } |
---|
| 59 | catch(Exception ex) { |
---|
| 60 | ex.printStackTrace(); |
---|
| 61 | } |
---|
| 62 | System.out.println("agent = " + agent); |
---|
| 63 | System.out.println("stub = " + stub); |
---|
| 64 | // construct a new negotiation context |
---|
| 65 | return stub; |
---|
| 66 | } |
---|
| 67 | |
---|
| 68 | public void kill() throws RemoteException { isDone = true; } |
---|
| 69 | |
---|
| 70 | public static void main(String arg[]) |
---|
| 71 | { |
---|
| 72 | //if (System.getSecurityManager() == null) { |
---|
| 73 | // System.setSecurityManager(new RMISecurityManager()); |
---|
| 74 | //} |
---|
| 75 | |
---|
| 76 | System.out.print("Loading from "); |
---|
| 77 | for(int i = 0; i < arg.length; i++) |
---|
| 78 | { |
---|
| 79 | System.out.print(arg[i]); |
---|
| 80 | //check for int port number (TBD) |
---|
| 81 | HashMap config = TestEngine.loadConfiguration(arg[i]); |
---|
| 82 | Entity id = (Entity)config.get("EntityID"); |
---|
| 83 | System.out.println("Loading configuration for " + id); |
---|
| 84 | //System.out.print(" (config = "); |
---|
| 85 | //System.out.print(config); |
---|
| 86 | //System.out.println("), "); |
---|
| 87 | FrontierManager.addFrontier(config); |
---|
| 88 | configs.put(id, config); |
---|
| 89 | } |
---|
| 90 | System.out.println("."); |
---|
| 91 | try { |
---|
| 92 | ClientAuthenticationService service = |
---|
| 93 | new ClientAuthenticationService(); |
---|
| 94 | Naming.rebind("ClientAuthenticationService", service); |
---|
| 95 | } |
---|
| 96 | catch(Exception ex) { |
---|
| 97 | ex.printStackTrace(); |
---|
| 98 | } |
---|
| 99 | } |
---|
| 100 | } |
---|
| 101 | |
---|
| 102 | |
---|
| 103 | |
---|