Skip to content

Commit 6b7584f

Browse files
committed
fix #111
1 parent 5485411 commit 6b7584f

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

wifi.py

+40
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,45 @@ def start_service(cls):
184184
print("Unable to register ip, revert to ap mode")
185185
cls.start_as_ap()
186186

187+
@classmethod
188+
def get_hostapd_config_file(cls):
189+
adapter = cls.get_adapter_type()
190+
hostapd_type = cls.hostapds.get(adapter)
191+
return "/etc/hostapd/" + hostapd_type + ".conf"
192+
193+
@classmethod
194+
def set_unique_ssid(cls):
195+
"""
196+
See if ssid is already a unique id based on CPU serial number.
197+
If not, set it in hostapd.conf
198+
"""
199+
try:
200+
inconfig = None
201+
with open(cls.get_hostapd_config_file()) as infile:
202+
inconfig = infile.read()
203+
inconfig = inconfig.replace("CHANGEMEATFIRSTRUN", str(abs(hash(cls.get_serial())))[0:4])
204+
with open(cls.get_hostapd_config_file(), "w") as outfile:
205+
outfile.write(inconfig)
206+
except:
207+
print("Unexpected error: ", sys.exc_info()[0])
208+
raise
209+
210+
@classmethod
211+
def get_serial(cls):
212+
"""
213+
Extract serial from cpuinfo file
214+
"""
215+
cpuserial = "0000000000000000"
216+
try:
217+
f = open('/proc/cpuinfo','r')
218+
for line in f:
219+
if line[0:6]=='Serial':
220+
cpuserial = line[10:26]
221+
f.close()
222+
except:
223+
cpuserial = "ERROR000000000"
224+
return cpuserial
225+
187226
def main():
188227
w = WiFi()
189228
if len(sys.argv) > 2 and sys.argv[1] == "updatecfg":
@@ -199,6 +238,7 @@ def main():
199238
WiFi.get_config()['bot_name'] = sys.argv[3]
200239
WiFi.save_config()
201240
else:
241+
w.set_unique_ssid()
202242
w.start_service()
203243

204244
if __name__ == "__main__":

0 commit comments

Comments
 (0)