47 lines
1.1 KiB
Python
Executable file
47 lines
1.1 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
import sys
|
|
import json
|
|
import time
|
|
from urllib import request
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
host = sys.argv[1]
|
|
port = sys.argv[2]
|
|
tunnel_id = host + '-' + port
|
|
|
|
caddy_add_route_request = {
|
|
"@id": tunnel_id,
|
|
"match": [{
|
|
"host": [host],
|
|
}],
|
|
"handle": [{
|
|
"handler": "reverse_proxy",
|
|
"upstreams":[{
|
|
"dial": ':' + port
|
|
}]
|
|
}]
|
|
}
|
|
|
|
body = json.dumps(caddy_add_route_request).encode('utf-8')
|
|
headers = {
|
|
'Content-Type': 'application/json'
|
|
}
|
|
create_url = 'http://127.0.0.1:2019/config/apps/http/servers/boreman/routes'
|
|
req = request.Request(method='POST', url=create_url, headers=headers)
|
|
request.urlopen(req, body)
|
|
|
|
print("Tunnel created successfully")
|
|
|
|
while True:
|
|
try:
|
|
time.sleep(1)
|
|
except KeyboardInterrupt:
|
|
|
|
print("Cleaning up tunnel")
|
|
delete_url = 'http://127.0.0.1:2019/id/' + tunnel_id
|
|
req = request.Request(method='DELETE', url=delete_url)
|
|
request.urlopen(req)
|
|
break
|