Skip to content

Commit 33ec6dc

Browse files
author
Ritwick DSouza
committed
[raspbian] Added support for WPA-EAP mode
1 parent 660cfba commit 33ec6dc

2 files changed

Lines changed: 47 additions & 20 deletions

File tree

netjsonconfig/backends/raspbian/converters/wireless.py

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -75,23 +75,35 @@ def _get_encryption(self, wireless):
7575
if encryption.get('cipher'):
7676
wpa_pairwise = str(encryption.get('cipher').replace('+', ' ')).upper()
7777
new_encryption.update({'wpa_pairwise': wpa_pairwise})
78-
else:
79-
if encryption.get('cipher'):
80-
cipher = str(encryption.get('cipher').replace('+', ' ').upper())
81-
new_encryption.update({'cipher': cipher})
82-
if encryption.get('eap_type'):
83-
eap_type = encryption.get('eap_type').upper()
84-
new_encryption.update({'eap_type': eap_type})
85-
new_encryption.update({
86-
'protocol': 'wpa',
87-
'method': 'enterprise',
88-
'identity': encryption.get('identity', None),
89-
'password': encryption.get('password', None),
90-
'ca_cert': encryption.get('ca_cert', None),
91-
'client_cert': encryption.get('client_cert', None),
92-
'priv_key': encryption.get('priv_key', None),
93-
'priv_key_pwd': encryption.get('priv_key_pwd', None)
94-
})
78+
elif method == 'enterprise':
79+
if wireless.get('mode') == 'access_point':
80+
new_encryption.update({
81+
'protocol': 'wpa',
82+
'method': 'enterprise',
83+
'auth_algs': '1',
84+
'wpa': '1' if protocol == 'wpa' else '2',
85+
'wpa_key_mgmt': 'WPA-EAP',
86+
'auth_server_addr': encryption.get('server'),
87+
'auth_server_port': encryption.get('port', 1812),
88+
'auth_server_shared_secret': encryption.get('key', None),
89+
})
90+
elif wireless.get('mode') == 'station':
91+
if encryption.get('cipher'):
92+
cipher = str(encryption.get('cipher').replace('+', ' ').upper())
93+
new_encryption.update({'cipher': cipher})
94+
if encryption.get('eap_type'):
95+
eap_type = encryption.get('eap_type').upper()
96+
new_encryption.update({'eap_type': eap_type})
97+
new_encryption.update({
98+
'protocol': 'wpa',
99+
'method': 'enterprise',
100+
'identity': encryption.get('identity', None),
101+
'password': encryption.get('password', None),
102+
'ca_cert': encryption.get('ca_cert', None),
103+
'client_cert': encryption.get('client_cert', None),
104+
'priv_key': encryption.get('priv_key', None),
105+
'priv_key_pwd': encryption.get('priv_key_pwd', None)
106+
})
95107
elif 'wep' in protocol:
96108
new_encryption.update({
97109
'protocol': 'wep',

netjsonconfig/backends/raspbian/templates/hostapd.jinja2

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,24 @@
4646
auth_algs={{ wireless.encryption.auth_algs }}
4747
wpa={{ wireless.encryption.wpa }}
4848
wpa_key_mgmt={{ wireless.encryption.wpa_key_mgmt }}
49-
wpa_passphrase={{ wireless.encryption.wpa_passphrase }}
50-
{% if wireless.encryption.wpa_pairwise != 'AUTO' %}
51-
wpa_pairwise={{ wireless.encryption.wpa_pairwise }}
49+
{% if wireless.encryption.method == 'personal' %}
50+
wpa_passphrase={{ wireless.encryption.wpa_passphrase }}
51+
{% if wireless.encryption.wpa_pairwise != 'AUTO' %}
52+
wpa_pairwise={{ wireless.encryption.wpa_pairwise }}
53+
{% endif %}
54+
{% elif wireless.encryption.method == 'enterprise'%}
55+
ieee8021x=1
56+
eap_server=1
57+
eapol_version=1
58+
{% if wireless.encryption.auth_server_addr %}
59+
auth_server_addr={{ wireless.encryption.auth_server_addr }}
60+
{% endif %}
61+
{% if wireless.encryption.auth_server_port %}
62+
auth_server_port={{ wireless.encryption.auth_server_port }}
63+
{% endif %}
64+
{% if wireless.encryption.auth_server_shared_secret %}
65+
auth_server_shared_secret={{ wireless.encryption.auth_server_shared_secret }}
66+
{% endif %}
5267
{% endif %}
5368
{% endif %}
5469

0 commit comments

Comments
 (0)