Skip to content

Commit 2f6d23a

Browse files
authored
Add option in dot1x config to enable debug logs and make config file … (#851)
1 parent b91e8b6 commit 2f6d23a

6 files changed

Lines changed: 50 additions & 10 deletions

File tree

subset/dot1x/authenticator/authenticator.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
from heartbeat_scheduler import HeartbeatScheduler
55
from radius_module import RadiusModule, RadiusPacketInfo, RadiusSocketInfo, port_id_to_int
66
from message_parser import IdentityMessage, FailureMessage
7-
from utils import get_logger, get_interface_name, get_interface_ip, get_interface_mac
87

98
import json
109
import threading
1110
import time
11+
import utils
1212

1313

1414
class AuthStateMachine:
@@ -24,7 +24,7 @@ def __init__(self, src_mac, auth_mac, idle_time, retry_count,
2424
self.state = None
2525
self._state_lock = threading.Lock()
2626
self._timer_lock = threading.RLock()
27-
self.logger = get_logger('AuthSM')
27+
self.logger = utils.get_logger('AuthSM')
2828
self.src_mac = src_mac
2929
self.eap_send_callback = eap_send_callback
3030
self.radius_send_callback = radius_send_callback
@@ -143,7 +143,7 @@ def __init__(self, config_file):
143143
self.results = {}
144144
self.eap_module = None
145145
self.radius_module = None
146-
self.logger = get_logger('Authenticator')
146+
self.logger = utils.get_logger('Authenticator')
147147
self._config_file = config_file
148148
self._threads = []
149149
self._radius_socket_info = None
@@ -153,6 +153,7 @@ def __init__(self, config_file):
153153
self._idle_time = None
154154
self._max_retry_count = None
155155
self._current_timeout = None
156+
self._debug = False
156157

157158
self._setup()
158159

@@ -161,21 +162,25 @@ def _load_config(self):
161162
full_config = json.load(file_stream)
162163
config = full_config.get('modules').get('dot1x')
163164

165+
self._debug = config.get('debug')
166+
if self._debug:
167+
utils.enable_debug_logs(self.logger)
168+
164169
self.logger.debug('Loaded config from %s:\n %s', self._config_file, config)
165170

166-
self._interface = config.get('interface', get_interface_name())
171+
self._interface = config.get('interface', utils.get_interface_name())
167172

168173
radius_config = config.get('radius_server', {})
169174
radius_socket_info = radius_config.get('radius_socket_info', {})
170175

171-
listen_ip = radius_socket_info.get('listen_ip', get_interface_ip(self._interface))
176+
listen_ip = radius_socket_info.get('listen_ip', utils.get_interface_ip(self._interface))
172177
listen_port = radius_socket_info.get('listen_port', 0)
173178
remote_ip = radius_socket_info.get('remote_ip', '127.0.0.1')
174179
remote_port = radius_socket_info.get('remote_port', self.RADIUS_PORT)
175180

176181
self._radius_socket_info = RadiusSocketInfo(listen_ip, listen_port, remote_ip, remote_port)
177182
self._radius_secret = radius_config.get('secret', 'SECRET')
178-
self._radius_id = radius_config.get('id', get_interface_mac(self._interface))
183+
self._radius_id = radius_config.get('id', utils.get_interface_mac(self._interface))
179184

180185
def _setup(self):
181186
self._load_config()
@@ -184,6 +189,10 @@ def _setup(self):
184189
self._radius_id, self.received_radius_response)
185190
self.eap_module = EapModule(self._interface, self.received_eap_request)
186191

192+
if self._debug:
193+
utils.enable_debug_logs(self.radius_module.logger)
194+
utils.enable_debug_logs(self.eap_module.logger)
195+
187196
# TODO: Take value from config and then revert to default
188197
interval = self.HEARTBEAT_INTERVAL
189198

subset/dot1x/authenticator/test_dot1x.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,20 @@ def main():
99
TEST_NAME = "dot1x.dot1x"
1010

1111
LOGGER = get_logger('test_dot1x')
12-
write_file = sys.argv[1]
12+
arg_length = len(sys.argv)
13+
if arg_length > 1:
14+
write_file = sys.argv[1]
15+
else:
16+
write_file = '/tmp/dot1x_result.txt'
17+
if arg_length > 2:
18+
config_file = sys.argv[2]
19+
else:
20+
config_file = '/config/device/module_config.json'
21+
1322
# TODO: Link with authentucation module once ready.
1423
# Currently simply writes an empty result into the file.
1524
LOGGER.info('Initialising authenticator')
16-
authenticator = Authenticator('/config/device/module_config.json')
25+
authenticator = Authenticator(config_file)
1726
LOGGER.info('Running auth test')
1827
result_summary, test_result = authenticator.run_authentication_test()
1928
result_line = "RESULT %s %s %s" % (test_result, TEST_NAME, result_summary)

subset/dot1x/authenticator/utils.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,13 @@ def get_logger(logname):
2727
return logger
2828

2929

30+
def enable_debug_logs(logger):
31+
"""Enable debug logs for logger"""
32+
logger.setLevel(logging.DEBUG)
33+
for handler in logger.handlers:
34+
handler.setLevel(logging.DEBUG)
35+
36+
3037
def get_interface_name():
3138
"""Get main interface name from test container"""
3239
return '%s-eth0' % socket.gethostname()

subset/dot1x/base_config.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"modules": {
3+
"dot1x": {
4+
"enabled": true,
5+
"interface": "eth0",
6+
"debug": true
7+
}
8+
}
9+
}

subset/dot1x/docker-compose.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ services:
2222
context: ../..
2323
dockerfile: ./subset/dot1x/Dockerfile.test_dot1x
2424
image: 'authenticator/authenticator:latest'
25+
command: './test_dot1x /config/device/test_config.json'
2526
networks:
2627
00wpasupplicant-net:
2728
ipv4_address: 10.20.0.3
@@ -30,6 +31,7 @@ services:
3031
- ALL
3132
volumes:
3233
- ../../resources/setups/common/base_config.json:/config/device/module_config.json
34+
- ./../../subset/dot1x/base_config.json:/config/device/test_config.json
3335

3436
tcpdump:
3537
image: kaazing/tcpdump

subset/dot1x/test_dot1x

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#!/bin/bash -e
22

3+
dot1x_config=$1
4+
35
freeradius -xx -l /tmp/radius_log
46

57
source reporting.sh
@@ -8,10 +10,12 @@ REPORT=/tmp/report.txt
810
TEST_NAME="dot1x.dot1x"
911
TEST_DESCRIPTION="Dot1x authentication tests"
1012

11-
route add default gw $GATEWAY_IP
13+
if [ -n "$GATEWAY_IP" ] ; then
14+
route add default gw $GATEWAY_IP
15+
fi
1216
echo 'Dot1x Authentication tests'
1317

14-
python3 authenticator/test_dot1x.py /tmp/dot1x_result.txt
18+
python3 authenticator/test_dot1x.py /tmp/dot1x_result.txt $1
1519

1620
RESULT_AND_SUMMARY=$(cat /tmp/dot1x_result.txt)
1721

0 commit comments

Comments
 (0)