initial
This commit is contained in:
commit
dbc9e6b36b
8
README
Normal file
8
README
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
msshpd
|
||||||
|
|
||||||
|
My Simple Socket HTTP Proxy Daemon.
|
||||||
|
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
|
||||||
|
MIT
|
67
msshpd
Executable file
67
msshpd
Executable file
@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import logging, json, socket
|
||||||
|
|
||||||
|
from aiohttp import web
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
|
routes = web.RouteTableDef()
|
||||||
|
mss_host = None
|
||||||
|
mss_port = None
|
||||||
|
|
||||||
|
|
||||||
|
class MySimpleSocketClient:
|
||||||
|
def __init__(self, port, host):
|
||||||
|
self._host = host
|
||||||
|
self._port = port
|
||||||
|
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
self.sock.connect((self._host, self._port))
|
||||||
|
|
||||||
|
def __del__(self):
|
||||||
|
self.sock.close()
|
||||||
|
|
||||||
|
def write(self, line):
|
||||||
|
self.sock.sendall((line+'\r\n').encode())
|
||||||
|
|
||||||
|
def read(self):
|
||||||
|
buf = bytearray()
|
||||||
|
while True:
|
||||||
|
buf.extend(self.sock.recv(256))
|
||||||
|
if b'\r\n' in buf:
|
||||||
|
break
|
||||||
|
|
||||||
|
response = buf.decode().strip()
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
@routes.get('/{command}/')
|
||||||
|
async def variable_handler(request):
|
||||||
|
command = request.match_info['command']
|
||||||
|
|
||||||
|
client = MySimpleSocketClient(host=mss_host, port=mss_port)
|
||||||
|
client.write(command)
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = {'data': client.read()}
|
||||||
|
except Exception as e:
|
||||||
|
response = {'error': str(e)}
|
||||||
|
|
||||||
|
return web.json_response(response, dumps=lambda x: json.dumps(x, separators=(',', ':')))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
parser = ArgumentParser()
|
||||||
|
parser.add_argument('--mss-host', required=True, type=str)
|
||||||
|
parser.add_argument('--mss-port', required=True, type=int)
|
||||||
|
parser.add_argument('--host', default='0.0.0.0', type=str)
|
||||||
|
parser.add_argument('--port', default=8080, type=int)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
mss_host = args.mss_host
|
||||||
|
mss_port = args.mss_port
|
||||||
|
|
||||||
|
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||||||
|
level=logging.INFO)
|
||||||
|
|
||||||
|
app = web.Application()
|
||||||
|
app.add_routes(routes)
|
||||||
|
web.run_app(app, host=args.host, port=args.port)
|
Loading…
x
Reference in New Issue
Block a user