#!/usr/bin/env python3
import argparse, requests
from http.server import HTTPServer, BaseHTTPRequestHandler
CLIENT_HEADERS = {
'Connection': 'Keep-Alive',
'Content-Type': 'application/octet-stream',
}
class Handler(BaseHTTPRequestHandler):
protocol_version = 'HTTP/1.1'
def do_POST(self):
self.rfile.read(int(self.headers.get('Content-Length')))
self.send_response(200)
self.send_header('Connection', 'keep-alive')
self.send_header('Content-Type', 'application/octet-stream')
self.send_header('Content-Length', '0')
self.end_headers()
return
parser = argparse.ArgumentParser()
parser.add_argument('--client', help = 'client mode', action = 'store_true')
parser.add_argument('--host', type = str, help = 'remote/listen host', required = True)
parser.add_argument('--port', type = int, help = 'remote/listen port', required = True)
parser.add_argument('--size', type = int, help = '(client mode) content length')
parser.add_argument('--count', type = int, help = '(client mode) number of posts (0 = unlimited)')
ns = parser.parse_args()
if ns.client and (ns.size is None or ns.count is None):
parser.error('--client requires --size and --count')
if ns.client:
data = bytes(0 for _ in range(1, ns.size))
client = requests.Session()
count = 0
while count < ns.count or ns.count == 0:
client.post(url = 'http://{}:{}/mqipt'.format(ns.host, ns.port), data = data, headers = CLIENT_HEADERS)
count += 1
if count % 100 == 0:
print('client: {} posts sent'.format(count))
else:
server = HTTPServer((ns.host, ns.port), Handler)
server.serve_forever()
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}