mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Still broken
This commit is contained in:
parent
4ff0392292
commit
734a576cb9
@ -28,6 +28,7 @@ try:
|
|||||||
from app.classes.web.static_handler import CustomStaticHandler
|
from app.classes.web.static_handler import CustomStaticHandler
|
||||||
from app.classes.shared.translation import translation
|
from app.classes.shared.translation import translation
|
||||||
from app.classes.web.upload_handler import UploadHandler
|
from app.classes.web.upload_handler import UploadHandler
|
||||||
|
from app.classes.web.upload_handler import ProxyHandler
|
||||||
|
|
||||||
except ModuleNotFoundError as e:
|
except ModuleNotFoundError as e:
|
||||||
logger.critical("Import Error: Unable to load {} module".format(e, e.name))
|
logger.critical("Import Error: Unable to load {} module".format(e, e.name))
|
||||||
@ -131,6 +132,7 @@ class Webserver:
|
|||||||
(r'/api/stats/node', NodeStats, handler_args),
|
(r'/api/stats/node', NodeStats, handler_args),
|
||||||
(r'/ws', SocketHandler, handler_args),
|
(r'/ws', SocketHandler, handler_args),
|
||||||
(r'/upload', UploadHandler, handler_args),
|
(r'/upload', UploadHandler, handler_args),
|
||||||
|
(r'/proxy', ProxyHandler, handler_args)
|
||||||
]
|
]
|
||||||
|
|
||||||
app = tornado.web.Application(
|
app = tornado.web.Application(
|
||||||
|
@ -7,6 +7,7 @@ from tornado.options import parse_command_line, define, options
|
|||||||
from tornado.web import Application, RequestHandler, stream_request_body
|
from tornado.web import Application, RequestHandler, stream_request_body
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import toro
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -32,3 +33,56 @@ class UploadHandler(RequestHandler):
|
|||||||
print("In PUT")
|
print("In PUT")
|
||||||
logger.info('UploadHandler.put')
|
logger.info('UploadHandler.put')
|
||||||
self.write('ok')
|
self.write('ok')
|
||||||
|
|
||||||
|
@stream_request_body
|
||||||
|
class ProxyHandler(RequestHandler):
|
||||||
|
def prepare(self):
|
||||||
|
logger.info('ProxyHandler.prepare')
|
||||||
|
self.chunks = toro.Queue(1)
|
||||||
|
self.fetch_future = AsyncHTTPClient().fetch(
|
||||||
|
'http://localhost:%d/upload' % options.port,
|
||||||
|
method='PUT',
|
||||||
|
body_producer=self.body_producer,
|
||||||
|
request_timeout=3600.0)
|
||||||
|
|
||||||
|
@gen.coroutine
|
||||||
|
def body_producer(self, write):
|
||||||
|
while True:
|
||||||
|
chunk = yield self.chunks.get()
|
||||||
|
if chunk is None:
|
||||||
|
return
|
||||||
|
yield write(chunk)
|
||||||
|
|
||||||
|
@gen.coroutine
|
||||||
|
def data_received(self, chunk):
|
||||||
|
logger.info('ProxyHandler.data_received(%d bytes: %r)',
|
||||||
|
len(chunk), chunk[:9])
|
||||||
|
yield self.chunks.put(chunk)
|
||||||
|
|
||||||
|
@gen.coroutine
|
||||||
|
def put(self):
|
||||||
|
logger.info('ProxyHandler.put')
|
||||||
|
# Write None to the chunk queue to signal body_producer to exit,
|
||||||
|
# then wait for the request to finish.
|
||||||
|
yield self.chunks.put(None)
|
||||||
|
response = yield self.fetch_future
|
||||||
|
self.set_status(response.code)
|
||||||
|
self.write(response.body)
|
||||||
|
|
||||||
|
@gen.coroutine
|
||||||
|
def client():
|
||||||
|
@gen.coroutine
|
||||||
|
def body_producer(write):
|
||||||
|
for i in range(options.num_chunks):
|
||||||
|
yield gen.Task(IOLoop.current().call_later, options.client_delay)
|
||||||
|
chunk = ('chunk %02d ' % i) * 10000
|
||||||
|
logger.info('client writing %d bytes: %r', len(chunk), chunk[:9])
|
||||||
|
yield write(utf8(chunk))
|
||||||
|
|
||||||
|
response = yield AsyncHTTPClient().fetch(
|
||||||
|
'http://localhost:%d/proxy' % options.port,
|
||||||
|
method='PUT',
|
||||||
|
body_producer=body_producer,
|
||||||
|
request_timeout=3600.0)
|
||||||
|
logger.info('client finished with response %d: %r',
|
||||||
|
response.code, response.body)
|
||||||
|
@ -548,12 +548,13 @@
|
|||||||
files = document.getElementById("upload_files").files
|
files = document.getElementById("upload_files").files
|
||||||
for (i = 0; i < files.length; i++){
|
for (i = 0; i < files.length; i++){
|
||||||
|
|
||||||
|
var xmlHttpRequest = new XMLHttpRequest();
|
||||||
var file = files[i]
|
var file = files[i]
|
||||||
var fileName = files[i].name
|
var fileName = files[i].name
|
||||||
var target = '/upload'
|
var target = '/proxy'
|
||||||
var mimeType = files[i].type
|
var mimeType = files[i].type
|
||||||
|
|
||||||
xmlHttpRequest.open('PUT', target, true);
|
xmlHttpRequest.open('POSTT', target, true);
|
||||||
console.log(xmlHttpRequest);
|
console.log(xmlHttpRequest);
|
||||||
xmlHttpRequest.setRequestHeader('Content-Type', mimeType);
|
xmlHttpRequest.setRequestHeader('Content-Type', mimeType);
|
||||||
xmlHttpRequest.setRequestHeader('Content-Disposition', 'attachment; filename="' + fileName + '"');
|
xmlHttpRequest.setRequestHeader('Content-Disposition', 'attachment; filename="' + fileName + '"');
|
||||||
|
@ -16,10 +16,11 @@ pyminifier==2.1
|
|||||||
pyOpenSSL==19.1.0
|
pyOpenSSL==19.1.0
|
||||||
pyparsing==2.4.7
|
pyparsing==2.4.7
|
||||||
PyYAML==5.3.1
|
PyYAML==5.3.1
|
||||||
requests==2.24.0
|
requests~=2.26.0
|
||||||
schedule==0.6.0
|
schedule==0.6.0
|
||||||
six==1.15.0
|
six==1.15.0
|
||||||
termcolor==1.1.0
|
termcolor==1.1.0
|
||||||
tornado==6.0.4
|
tornado==6.0.4
|
||||||
urllib3==1.25.10
|
urllib3==1.25.10
|
||||||
webencodings==0.5.1
|
webencodings==0.5.1
|
||||||
|
toro~=1.0.1
|
Loading…
Reference in New Issue
Block a user