1 | #!/usr/bin/env python |
---|
2 | """NDG Security Attribute Authority .tac file |
---|
3 | |
---|
4 | This file enables the Session Manager web service to be |
---|
5 | called under the Twisted framework |
---|
6 | |
---|
7 | NERC Data Grid Project |
---|
8 | |
---|
9 | P J Kershaw 23/11/06 |
---|
10 | |
---|
11 | Copyright (C) 2006 CCLRC & NERC |
---|
12 | |
---|
13 | This software may be distributed under the terms of the Q Public License, |
---|
14 | version 1.0 or later. |
---|
15 | """ |
---|
16 | import socket |
---|
17 | |
---|
18 | from ZSI.twisted.WSresource import WSResource |
---|
19 | from twisted.application import service, internet |
---|
20 | from twisted.web.server import Site |
---|
21 | from twisted.web.resource import Resource |
---|
22 | |
---|
23 | from SessionMgr_services_server import SessionMgrService |
---|
24 | from ndg.security.server.SessionMgr import SessionMgr |
---|
25 | |
---|
26 | from ndg.security.common.SessionCookie import SessionCookie |
---|
27 | from datetime import datetime, timedelta |
---|
28 | |
---|
29 | class SessionMgrServiceSub(SessionMgrService, WSResource): |
---|
30 | def __init__(self): |
---|
31 | WSResource.__init__(self) |
---|
32 | |
---|
33 | # Initialize Attribute Authority class |
---|
34 | self.__sm = SessionMgr() |
---|
35 | |
---|
36 | def soap_addUser(self, ps, **kw): |
---|
37 | #import pdb;pdb.set_trace() |
---|
38 | request, response = SessionMgrService.soap_addUser(self, ps) |
---|
39 | return request, response |
---|
40 | |
---|
41 | def soap_connect(self, ps, **kw): |
---|
42 | #import pdb;pdb.set_trace() |
---|
43 | request, response = SessionMgrService.soap_connect(self, ps) |
---|
44 | response.set_element_proxyCert('PROXY CERT') |
---|
45 | |
---|
46 | dtExpiry = datetime.utcnow() + timedelta(seconds=60*60) |
---|
47 | cookie = SessionCookie(ndgID1='9'*64, |
---|
48 | ndgID2='0'*64, |
---|
49 | dtExpiry=dtExpiry) |
---|
50 | |
---|
51 | response.set_element_cookie(cookie) |
---|
52 | return request, response |
---|
53 | |
---|
54 | def soap_disconnect(self, ps, **kw): |
---|
55 | #import pdb;pdb.set_trace() |
---|
56 | request, response = SessionMgrService.soap_disconnect(self, ps) |
---|
57 | return request, response |
---|
58 | |
---|
59 | def soap_reqAuthorisation(self, ps, **kw): |
---|
60 | #import pdb;pdb.set_trace() |
---|
61 | request, response = SessionMgrService.soap_reqAuthorisation(self, ps) |
---|
62 | response.set_element_attCert('ATTRIBUTE CERTIFICATE') |
---|
63 | response.set_element_statusCode('AcessGranted') |
---|
64 | return request, response |
---|
65 | |
---|
66 | def soap_getX509Cert(self, ps, **kw): |
---|
67 | #import pdb;pdb.set_trace() |
---|
68 | request, response = SessionMgrService.soap_getX509Cert(self, ps) |
---|
69 | response.set_element_x509Cert('X.509 Cert.') |
---|
70 | return request, response |
---|
71 | |
---|
72 | portNum = 5000 |
---|
73 | hostname = socket.gethostname() |
---|
74 | |
---|
75 | root = Resource() |
---|
76 | root.putChild('SessionManager', SessionMgrServiceSub()) |
---|
77 | siteFactory = Site(root) |
---|
78 | application = service.Application("ndgSecurityContainer") |
---|
79 | |
---|
80 | # Try SSL |
---|
81 | from twisted.internet import ssl |
---|
82 | kw = {} |
---|
83 | priKeyFilePath = '../../../../../Tests/Junk2-key.pem' |
---|
84 | certFilePath = '../../../../../Tests/Junk2-cert.pem' |
---|
85 | ctxFactory = ssl.DefaultOpenSSLContextFactory(priKeyFilePath, certFilePath) |
---|
86 | port = internet.SSLServer(portNum, siteFactory, ctxFactory) |
---|
87 | |
---|
88 | #port = internet.TCPServer(portNum, siteFactory)#, interface=hostname) |
---|
89 | port.setServiceParent(application) |
---|