FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
MicroPythonSamples/MicroPythonSamples/networkconfig.py at master · cpopp/MicroPythonSamples · GitHub
cpopp
/
MicroPythonSamples
Public
Notifications
You must be signed in to change notification settings
Fork
10
Star
32
Code
Issues
1
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
MicroPythonSamples
/
MicroPythonSamples
/
networkconfig.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
109 lines (81 loc) · 2.94 KB
Breadcrumbs
MicroPythonSamples
/
MicroPythonSamples
/
networkconfig.py
Copy path
File metadata and controls
109 lines (81 loc) · 2.94 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import
network
import
socket
import
ure
wlan_ap
=
network
.
WLAN
(
network
.
AP_IF
)
wlan_sta
=
network
.
WLAN
(
network
.
STA_IF
)
server_socket
=
None
def
send_response
(
client
,
payload
,
status_code
=
200
):
client
.
sendall
(
"HTTP/1.0 {} OK
\r
\n
"
.
format
(
status_code
))
client
.
sendall
(
"Content-Type: text/html
\r
\n
"
)
client
.
sendall
(
"Content-Length: {}
\r
\n
"
.
format
(
len
(
payload
)))
client
.
sendall
(
"
\r
\n
"
)
if
len
(
payload
)
>
0
:
client
.
sendall
(
payload
)
def
handle_root
(
client
):
response_header
=
"""
<h1>Wi-Fi Client Setup</h1>
<form action="configure" method="post">
<label for="ssid">SSID</label>
<select name="ssid" id="ssid">
"""
response_variable
=
""
for
ssid
,
*
_
in
wlan_sta
.
scan
():
response_variable
+=
'<option value="{0}">{0}</option>'
.
format
(
ssid
.
decode
(
"utf-8"
))
response_footer
=
"""
</select> <br/>
Password: <input name="password" type="password"></input> <br />
<input type="submit" value="Submit">
</form>
"""
send_response
(
client
,
response_header
+
response_variable
+
response_footer
)
def
handle_configure
(
client
,
request
):
match
=
ure
.
search
(
"ssid=([^&]*)&password=(.*)"
,
request
)
if
match
is
None
:
send_response
(
client
,
"Parameters not found"
,
status_code
=
400
)
return
ssid
=
match
.
group
(
1
)
password
=
match
.
group
(
2
)
if
len
(
ssid
)
==
0
:
send_response
(
client
,
"SSID must be provided"
,
status_code
=
400
)
return
wlan_sta
.
active
(
True
)
wlan_sta
.
connect
(
ssid
,
password
)
send_response
(
client
,
"Wi-Fi configured for SSID {}"
.
format
(
ssid
))
def
handle_not_found
(
client
,
url
):
send_response
(
client
,
"Path not found: {}"
.
format
(
url
),
status_code
=
404
)
def
stop
():
global
server_socket
if
server_socket
:
server_socket
.
close
()
def
start
(
port
=
80
):
addr
=
socket
.
getaddrinfo
(
'0.0.0.0'
,
port
)[
0
][
-
1
]
global
server_socket
stop
()
server_socket
=
socket
.
socket
()
server_socket
.
bind
(
addr
)
server_socket
.
listen
(
1
)
print
(
'listening on'
,
addr
)
while
True
:
client
,
addr
=
server_socket
.
accept
()
client
.
settimeout
(
5.0
)
print
(
'client connected from'
,
addr
)
request
=
b""
try
:
while
not
"
\r
\n
\r
\n
"
in
request
:
request
+=
client
.
recv
(
512
)
except
OSError
:
pass
print
(
"Request is: {}"
.
format
(
request
))
if
"HTTP"
not
in
request
:
# skip invalid requests
client
.
close
()
continue
url
=
ure
.
search
(
"(?:GET|POST) /(.*?)(?:
\\
?.*?)? HTTP"
,
request
.
decode
(
'ascii'
)).
group
(
1
).
rstrip
(
"/"
)
print
(
"URL is {}"
.
format
(
url
))
if
url
==
""
:
handle_root
(
client
)
elif
url
==
"configure"
:
handle_configure
(
client
,
request
)
else
:
handle_not_found
(
client
,
url
)
client
.
close
()
Back
|
FazBrowse Home
|
New Git URL