source: TI12-security/trunk/NDGSecurity/python/ndg_security_server/ndg/security/server/paster_templates/services/securityservicesapp.py @ 7847

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI12-security/trunk/NDGSecurity/python/ndg_security_server/ndg/security/server/paster_templates/services/securityservicesapp.py@7847
Revision 7847, 2.9 KB checked in by pjkersha, 11 years ago (diff)

Incomplete - task 16: NDG Security 2.x.x - incl. updated Paster templates

  • fixes to the ndgsecurity_services template
Line 
1#!/usr/bin/env python
2"""NDG Security test harness for security web services middleware stack
3
4NERC DataGrid Project
5
6"""
7__author__ = "P J Kershaw"
8__date__ = "20/11/08"
9__copyright__ = "(C) 2009 Science and Technology Facilities Council"
10__contact__ = "Philip.Kershaw@stfc.ac.uk"
11__revision__ = "$Id: securityservicesapp.py 7843 2011-01-25 10:22:43Z pjkersha $"
12from os import path, environ
13import optparse 
14     
15from OpenSSL import SSL
16
17from ndg.security.test.unit import BaseTestCase, TEST_CONFIG_DIR
18from ndg.security.server.utils.paste_utils import PasteDeployAppServer
19
20INI_FILENAME = 'securityservices.ini'
21#
22#environ['NDGSEC_INTEGRATION_TEST_DIR'] = os.path.dirname(os.path.dirname(
23#                                                                    __file__))
24#environ[BaseTestCase.configDirEnvVarName] = TEST_CONFIG_DIR
25
26
27# To start run
28# $ paster serve services.ini or run this file as a script, see
29# $ ./securityservicesapp.py -h
30if __name__ == '__main__':   
31    cfgFilePath = path.join(path.dirname(path.abspath(__file__)), INI_FILENAME) 
32     
33    defCertFilePath = path.join(BaseTestCase.NDGSEC_TEST_CONFIG_DIR, 
34                                'pki', 
35                                'localhost.crt')
36    defPriKeyFilePath = path.join(BaseTestCase.NDGSEC_TEST_CONFIG_DIR, 
37                                  'pki', 
38                                  'localhost.key')
39       
40    parser = optparse.OptionParser()
41    parser.add_option("-p",
42                      "--port",
43                      dest="port",
44                      default=7443,
45                      type='int',
46                      help="port number to run under")
47
48    parser.add_option("-s",
49                      "--with-ssl",
50                      dest="withSSL",
51                      default='True',
52                      help="Run with SSL")
53
54    parser.add_option("-c",
55                      "--cert-file",
56                      dest='certFilePath',
57                      default=defCertFilePath,
58                      help="SSL Certificate file")
59
60    parser.add_option("-k",
61                      "--private-key-file",
62                      default=defPriKeyFilePath,
63                      dest='priKeyFilePath',
64                      help="SSL private key file")
65
66    parser.add_option("-f",
67                      "--conf",
68                      dest="configFilePath",
69                      default=cfgFilePath,
70                      help="Configuration file path")
71   
72    opt = parser.parse_args()[0]
73   
74    if opt.withSSL.lower() == 'true':
75       
76        ssl_context = SSL.Context(SSL.SSLv23_METHOD)
77        ssl_context.set_options(SSL.OP_NO_SSLv2)
78   
79        ssl_context.use_privatekey_file(opt.priKeyFilePath)
80        ssl_context.use_certificate_file(opt.certFilePath)
81    else:
82        ssl_context = None
83
84    server = PasteDeployAppServer(cfgFilePath=opt.configFilePath, 
85                                  port=opt.port,
86                                  ssl_context=ssl_context) 
87    server.start()
Note: See TracBrowser for help on using the repository browser.