MicroPython stuff
This commit is contained in:
79
code/MicroPython/http.py
Normal file
79
code/MicroPython/http.py
Normal file
@@ -0,0 +1,79 @@
|
||||
import machine
|
||||
import time
|
||||
import gc
|
||||
|
||||
from microdot import Microdot, send_file, Request, Response
|
||||
|
||||
from microdot.utemplate import Template
|
||||
|
||||
led = machine.Pin(15, machine.Pin.OUT)
|
||||
|
||||
app = Microdot()
|
||||
Response.default_content_type = 'text/html'
|
||||
Request.max_content_length = 1024 * 1024
|
||||
|
||||
|
||||
def cmd_parse(method, args):
|
||||
if method == 'GET':
|
||||
if 'cmd' in args:
|
||||
cmd = args['cmd']
|
||||
|
||||
if 'reboot' == cmd:
|
||||
for x in range(2):
|
||||
led.on()
|
||||
time.sleep_ms(200)
|
||||
led.off()
|
||||
time.sleep_ms(200)
|
||||
|
||||
machine.reset()
|
||||
|
||||
if 'ftp' == cmd:
|
||||
exec(open('ftp.py').read())
|
||||
|
||||
|
||||
@app.route('/static/<path:path>')
|
||||
async def static(request, path):
|
||||
if '..' in path:
|
||||
# directory traversal is not allowed
|
||||
return 'Not found', 404
|
||||
return send_file('static/' + path)
|
||||
|
||||
|
||||
@app.get('/file')
|
||||
async def file(request):
|
||||
return send_file('templates/upload.html')
|
||||
|
||||
|
||||
@app.post('/upload')
|
||||
async def upload(request):
|
||||
filename = request.headers['Content-Disposition'].split('filename=')[1].strip('"')
|
||||
size = int(request.headers['Content-Length'])
|
||||
|
||||
filename = filename.replace('/', '_')
|
||||
|
||||
with open('/' + filename, 'wb') as f:
|
||||
while size > 0:
|
||||
chunk = await request.stream.read(min(size, 1024))
|
||||
f.write(chunk)
|
||||
size -= len(chunk)
|
||||
|
||||
print('Successfully saved file: ' + filename)
|
||||
return ''
|
||||
|
||||
|
||||
@app.route('/')
|
||||
async def index(request):
|
||||
# print(request.args, request.path, request.method, sep='\n')
|
||||
# print(request.url, request.query_string, request.url_args, sep='\n')
|
||||
print(request.args)
|
||||
|
||||
cmd_parse(request.method, request.args)
|
||||
|
||||
ram_f = gc.mem_free()
|
||||
ram_a = gc.mem_alloc()
|
||||
ram_t = ram_a + ram_f
|
||||
return Template('index.html').render(ram_free=int(ram_f / 1024), ram_total=int(ram_t / 1024))
|
||||
|
||||
|
||||
print('HTTP server started')
|
||||
app.run(port=80)
|
||||
Reference in New Issue
Block a user