You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.0 KiB
84 lines
2.0 KiB
|
|
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler |
|
import socket |
|
import cgi |
|
import json |
|
import time |
|
import os.path |
|
import threading |
|
|
|
TELNET_HOST = 'localhost' |
|
TELNET_PORT = 4243 |
|
|
|
DOCROOT = '/var/tmp/blup2/blayer-webif' |
|
UPLOAD_DIR = '/var/tmp/blup2/blm/incoming' |
|
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
sock.connect((TELNET_HOST, TELNET_PORT)) |
|
socklock = threading.Lock() |
|
|
|
class HTTPRequestHandler(BaseHTTPRequestHandler): |
|
def do_GET(self): |
|
self.send_response(200) |
|
self.send_header('Content-type', 'text/html') |
|
self.end_headers() |
|
print self.path |
|
#self.wfile.write('<form action="bla" method="post"><input type="text" name="text" /><input type="submit" value="ok" /></form>') |
|
|
|
p = os.path.join(DOCROOT, self.path[1:]) |
|
print p |
|
if os.path.isfile(p): |
|
f = open(p, 'r') |
|
data = f.read() |
|
f.close() |
|
self.wfile.write(data) |
|
|
|
|
|
|
|
def do_POST(self): |
|
|
|
if self.path == '/do_upload': |
|
formdata = cgi.FieldStorage( |
|
fp=self.rfile, headers=self.headers, |
|
environ={'REQUEST_METHOD': 'POST', 'CONTENT_TYPE': self.headers['Content-Type']}) |
|
|
|
fileField = formdata['file'] |
|
|
|
f = open(os.path.join(UPLOAD_DIR, fileField.filename), 'w') |
|
f.write(fileField.file.read()) |
|
f.close() |
|
|
|
sock.send(json.dumps({"cmd": "refresh"}) + '\n') |
|
print 'server answer to refresh cmd: ', sock.recv(1024) |
|
|
|
self.send_response(200); |
|
self.end_headers(); |
|
|
|
return |
|
|
|
postdata = self.rfile.read(int(self.headers.getheader('content-length'))) |
|
#self.wfile.write('test') |
|
|
|
if postdata[-1:] != '\n': |
|
postdata += '\n' |
|
print 'postdata:', postdata |
|
|
|
with socklock: |
|
sock.send(postdata) |
|
time.sleep(0.1) |
|
resp = sock.recv(1024 * 10) |
|
#sock.shutdown(socket.SHUT_RDWR) |
|
#sock.close() |
|
|
|
self.send_response(200) |
|
self.send_header('Content-type', 'text/html') |
|
self.send_header('Content-length', len(resp)) |
|
self.end_headers() |
|
print 'resp:', resp |
|
self.wfile.write(resp) |
|
|
|
|
|
|
|
server = HTTPServer(('0.0.0.0',8080), HTTPRequestHandler) |
|
server.serve_forever() |
|
|
|
|