55import shutil
66import sys
77import os
8+ import time
89import urllib2
910import fcntl
1011import struct
@@ -49,17 +50,17 @@ def start_hostapd(cls):
4950 hostapd_type = cls .hostapds .get (adapter )
5051 try :
5152 print "starting hostapd..."
52- #os.system("start-stop-daemon --start --oknodo --quiet --exec /usr/sbin/" + hostapd_type + " -- /etc/hostapd/" + hostapd_type + " &")
53- os .system ("/usr/sbin/" + hostapd_type + " /etc/hostapd/" + hostapd_type + " -B" )
54-
53+ out = os .system ("/usr/sbin/" + hostapd_type + " /etc/hostapd/" + hostapd_type + " -B" )
54+ print "hostapd out: " + str (out )
5555 except subprocess .CalledProcessError as e :
5656 print e .output
5757
5858 @classmethod
5959 def stop_hostapd (cls ):
6060 try :
61- out = subprocess .check_output (["pkill" , "-9" , "hostapd" ])
62- print out
61+ print "stopping hostapd..."
62+ out = subprocess .check_output (["sudo" , "pkill" , "-9" , "hostapd" ])
63+ print "hostapd out: " + str (out )
6364 except subprocess .CalledProcessError as e :
6465 print e .output
6566
@@ -71,20 +72,16 @@ def get_ipaddr(cls, ifname):
7172 0x8915 , # SIOCGIFADDR
7273 struct .pack ('256s' , ifname [:15 ])
7374 )[20 :24 ])
74- ipaddr = socket .gethostbyname (socket .gethostname ())
75- return ipaddr
7675
7776 @classmethod
78- def register_ipaddr (cls , ipaddr , botname ):
77+ def register_ipaddr (cls , botname , ipaddr ):
7978 try :
8079 ret = urllib2 .urlopen (cls .web_url + "?name=" + botname + "&ipaddr=" + ipaddr )
81- print str (ret .getcode ())
8280 if ret .getcode () != 200 :
8381 raise Exception ()
8482 except URLError as e :
85- print e
83+ print "except: " + str ( e )
8684 raise
87- print botname , ": " , ipaddr
8885
8986 @classmethod
9087 def get_wlans (cls ):
@@ -110,10 +107,11 @@ def set_start_as_client(cls):
110107 def start_as_client (cls ):
111108 cls .stop_hostapd ()
112109 try :
113- out = subprocess .check_output (["ifdown" , "wlan0" ])
110+ time .sleep (1.0 )
111+ out = subprocess .check_output (["ifdown" , "--force" , "wlan0" ])
114112 out = subprocess .check_output (["ifup" , "wlan0" ])
115- print "registering ip..."
116- cls . register_ipaddr (cls .get_ipaddr ("wlan0" ), self .get_config ().get ('bot_name' , 'CoderBot' ))
113+ cls . register_ipaddr ( cls . get_config (). get ( 'bot_name' , 'CoderBot' ), cls . get_ipaddr ( "wlan0" ))
114+ print "registered bot, ip: " + str (cls .get_ipaddr ("wlan0" ) + " name: " + cls .get_config ().get ('bot_name' , 'CoderBot' ))
117115 except subprocess .CalledProcessError as e :
118116 print e .output
119117 raise
@@ -126,7 +124,8 @@ def set_start_as_ap(cls):
126124
127125 @classmethod
128126 def start_as_ap (cls ):
129- out = subprocess .check_output (["ifdown" , "wlan0" ])
127+ time .sleep (1.0 )
128+ out = subprocess .check_output (["ifdown" , "--force" , "wlan0" ])
130129 out = subprocess .check_output (["ifup" , "wlan0" ])
131130 cls .start_hostapd ()
132131
@@ -149,20 +148,21 @@ def main():
149148 if len (sys .argv ) > 2 and sys .argv [1 ] == "updatecfg" :
150149 if len (sys .argv ) > 2 and sys .argv [2 ] == "ap" :
151150 w .set_start_as_ap ()
152- w .start_as_ap ()
151+ # w.start_as_ap()
153152 elif len (sys .argv ) > 2 and sys .argv [2 ] == "client" :
154153 if len (sys .argv ) > 3 :
155154 w .set_client_params (sys .argv [3 ], sys .argv [4 ])
156155 w .set_start_as_client ()
157- w . stop_hostapd ()
156+ """
158157 try:
159158 w.start_as_client()
160159 except:
161160 print "Unable to register ip, revert to ap mode"
162161 w.start_as_ap()
162+ """
163163 elif len (sys .argv ) > 3 and sys .argv [2 ] == "bot_name" :
164- self .get_config ()['bot_name' ] = sys .argv [3 ]
165- self .save_config ()
164+ WiFi .get_config ()['bot_name' ] = sys .argv [3 ]
165+ WiFi .save_config ()
166166 else :
167167 w .start_service ()
168168
0 commit comments