Skip to content

Commit 9484cc8

Browse files
committed
Server (config): moving variables to main program
1 parent 57ffe0b commit 9484cc8

3 files changed

Lines changed: 27 additions & 27 deletions

File tree

server/config.py

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,28 +21,25 @@
2121
"""
2222

2323
# SERVER:
24-
ip = '127.0.0.1' # IP or hostname
24+
ip = '127.0.0.1' # IP, domain name or empty string (= all interfaces)
2525
port = 4711
2626

2727
# FRAMEWORK:
2828
game_timeout = 1000 # seconds, timeout for inactive games and for joining a game
2929

3030
# LOGGING:
31-
log_server_errors = True # errors during tcp connections
32-
log_server_info = False # useful for debugging tcp connections (verbose)
33-
log_framework_request = True # client requests
34-
log_framework_response = True # server responses
35-
log_framework_actions = True # actions performed by the framework, such as terminating games
36-
37-
# TCP CONNECTIONS:
38-
# pick a higher value for request_size_max if required by a new game
31+
log_server_errors = True # errors related to client-server communication
32+
log_server_tcp = False # useful for debugging TCP connections
33+
log_framework_request = True # client requests such as moves, game state or join request
34+
log_framework_response = True # server responses such as game states or error messages
35+
log_framework_actions = True # starting and terminating game sessions
36+
37+
# TCP:
38+
# Pick a higher value for request_size_max if required by a new game.
3939
request_size_max = int(1e6) # bytes, prevents clients from sending too much data
4040

41-
# it should not be necessary to change buffer_size or connection_timeout
42-
buffer_size = 4096 # bytes, corresponds to client-side buffer size value
43-
connection_timeout = 60 # seconds, timeout for tcp transactions
44-
4541
# TLS:
46-
# to enable TLS, specify certificate and key (clients must enable TLS as well)
47-
tls_cert = ''
42+
# To enable TLS, specify certificate and key. Clients must enable TLS as well.
43+
# Enabled TLS is indicated by a log message on server startup.
44+
tls_cert = '' # certificate in PEM format
4845
tls_key = ''

server/game_server.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141
class ClientDisconnect(Exception): pass
4242
class RequestSizeExceeded(Exception): pass
4343

44+
connection_timeout = 60 # seconds, timeout for tcp transactions
45+
buffer_size = 4096 # bytes, corresponds to client-side buffer size value
46+
4447
def handle_connection(conn, client):
4548
"""
4649
Handling a connection.
@@ -53,33 +56,32 @@ def handle_connection(conn, client):
5356
5457
Data is expected to be received in JSON format and it is also sent back to
5558
the client in JSON format. The connection has a server side timeout and the
56-
amount of data accepted in a single request is limited by the server. The
57-
corresponding parameters are defined in the config module. Whenever
58-
possible, error messages are sent back to the client.
59+
amount of data accepted in a single request is limited by the server.
60+
Whenever possible, error messages are sent back to the client.
5961
6062
Parameters:
6163
conn (socket or SSLSocket): connection socket
6264
client (tuple(str, int)): client IP and port
6365
"""
6466
ip, port = client
6567
log = utility.ServerLogger(ip, port)
66-
log.info('connection accepted')
68+
log.tcp('connection accepted')
6769

68-
conn.settimeout(config.connection_timeout)
70+
conn.settimeout(connection_timeout)
6971

7072
try:
7173
try:
7274
# receive data from client:
7375
request = bytearray()
7476

7577
while True:
76-
data = conn.recv(config.buffer_size)
78+
data = conn.recv(buffer_size)
7779
if not data: raise ClientDisconnect
7880
request += data
7981
if len(request) > config.request_size_max: raise RequestSizeExceeded
8082
if request.endswith(b'EOT\0'): break
8183

82-
log.info(f'received {len(request)} bytes: {request}')
84+
log.tcp(f'received {len(request)} bytes: {request}')
8385
request = request[:-4] # strip EOT
8486
request = json.loads(request.decode())
8587

@@ -122,7 +124,7 @@ def handle_connection(conn, client):
122124
response = json.dumps(response).encode()
123125

124126
conn.sendall(response)
125-
log.info(f'responding: {response}')
127+
log.tcp(f'responding: {response}')
126128

127129
except BrokenPipeError:
128130
log.error('connection closed by client after sending request')
@@ -132,7 +134,7 @@ def handle_connection(conn, client):
132134
log.error('unexpected exception on the server:\n' + traceback.format_exc())
133135
finally:
134136
conn.close()
135-
log.info('connection closed by server')
137+
log.tcp('connection closed by server')
136138

137139
def secure_socket(socket):
138140
"""
@@ -153,6 +155,7 @@ def secure_socket(socket):
153155
context.load_cert_chain(
154156
certfile=utility.abs_path(config.tls_cert),
155157
keyfile=utility.abs_path(config.tls_key))
158+
156159
print('TLS enabled')
157160

158161
return context.wrap_socket(socket, server_side=True)

server/utility.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ def __init__(self, ip=None, port=None):
6464
"""
6565
self._client = f' {ip}:{port}' if ip else ''
6666

67-
def info(self, message):
67+
def tcp(self, message):
6868
"""
69-
Log server information. See function _log for details.
69+
Log TCP related information. See function _log for details.
7070
"""
71-
if config.log_server_info:
71+
if config.log_server_tcp:
7272
self._log(message)
7373

7474
def error(self, message):

0 commit comments

Comments
 (0)