-
Notifications
You must be signed in to change notification settings - Fork 1
/
daemon.py
83 lines (65 loc) · 2.53 KB
/
daemon.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# coding=utf-8
from twisted.application import service
from twisted.internet import reactor
from twisted.internet import ssl
from twisted.python import log as tw_log
import ConfigParser
from os import path as os_path
from ampauth import server as amp_server
import sys
import pytz
"""
Copyright 2015, 2015 Xabier Crespo Álvarez
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
:Author:
Xabier Crespo Álvarez (xabicrespog@gmail.com)
"""
__author__ = 'xabicrespog@gmail.com'
DEFAULT_SETTINGS_FILE = '.settings'
def read_configuration():
"""Read configuration
This function reads the configuration file for the protocol.
:return: Dictionary with the pairs key, values as read from the file
"""
settings_path = DEFAULT_SETTINGS_FILE
if dir:
settings_path = cwd + '/' + DEFAULT_SETTINGS_FILE
config = ConfigParser.ConfigParser()
config.read(settings_path)
return {
'server': config.get('protocol', 'host'),
'port': config.get('protocol', 'port'),
'name': config.get('protocol', 'name'),
'serverkey': config.get('protocol', 'serverkey'),
'publickey': config.get('protocol', 'publickey')
}
application = service.Application('satnetProtocol')
# tw_log.startLogging(sys.stdout)
tw_log.msg('SatNet protocol starting...')
cwd = os_path.dirname(os_path.realpath(__file__))
tw_log.msg('>>> cwd = ' + str(cwd))
configuration = read_configuration()
tw_log.msg('>>> configuration = ' + str(configuration))
configuration['serverkey'] = cwd + '/' + configuration['serverkey']
configuration['publickey'] = cwd + '/' + configuration['publickey']
tw_log.msg(configuration['serverkey'])
tw_log.msg(configuration['publickey'])
# noinspection PyUnresolvedReferences
reactor.listenSSL(
int(configuration['port']),
amp_server.CredAMPServerFactory(),
contextFactory=ssl.DefaultOpenSSLContextFactory(
configuration['serverkey'], configuration['publickey']
)
)
tw_log.msg('>>> SSL AMP Server configured, starting reactor...')
# noinspection PyUnresolvedReferences
# reactor.run()