Browse Source
modified: README.md
modified: README.md
modified: README_CN.md modified: netinstall.py deleted: upgrade.pypull/55/head
4 changed files with 6 additions and 68 deletions
-
5README.md
-
5README_CN.md
-
5netinstall.py
-
59upgrade.py
@ -1,59 +0,0 @@ |
|||||
from mitmproxy.tools.dump import DumpMaster |
|
||||
from mitmproxy import options,http |
|
||||
import os |
|
||||
|
|
||||
#https://upgrade.mikrotik.com/routeros/NEWESTa7.stable |
|
||||
#https://upgrade.mikrotik.com/routeros/7.15.1/CHANGELOG |
|
||||
|
|
||||
|
|
||||
class UpgradeAddon: |
|
||||
def __init__(self, upstream_server): |
|
||||
self.upstream_server = upstream_server |
|
||||
def request(self,flow: http.HTTPFlow) -> None: |
|
||||
flow.request.host = self.upstream_server |
|
||||
flow.request.scheme = "https" |
|
||||
flow.request.port = 443 |
|
||||
print(flow.request.url) |
|
||||
if len(flow.request.path_components)==3 and flow.request.path_components[0] == 'routeros': |
|
||||
version = flow.request.path_components[1] |
|
||||
file = os.path.join(version,flow.request.path_components[2]) |
|
||||
if flow.request.method == 'HEAD': |
|
||||
if os.path.exists(version) and os.path.isfile(file): |
|
||||
flow.response = http.Response.make( |
|
||||
status_code=200, |
|
||||
headers={ |
|
||||
'Content-Type': 'application/octet-stream', |
|
||||
'Accept-Ranges':'bytes', |
|
||||
'Content-Length': str(os.stat(file).st_size), |
|
||||
} |
|
||||
) |
|
||||
else: |
|
||||
flow.response = http.Response.make(status_code=404) |
|
||||
elif flow.request.method == 'GET' and flow.request.path_components[2].endswith('.npk'): |
|
||||
if os.path.exists(version) and os.path.isfile(file): |
|
||||
flow.response = http.Response.make( |
|
||||
status_code=200, |
|
||||
content=open(file,'rb').read(), |
|
||||
headers={'Content-Type': 'application/octet-stream',}, |
|
||||
) |
|
||||
else: |
|
||||
flow.response = http.Response.make(status_code=404) |
|
||||
|
|
||||
async def start_listen(port): |
|
||||
opts = options.Options(listen_host='0.0.0.0',listen_port=port) |
|
||||
upstream_server = "upgrade.mikrotik.com" |
|
||||
master = DumpMaster(opts) |
|
||||
master.addons.add(UpgradeAddon(upstream_server)) |
|
||||
try: |
|
||||
await master.run() |
|
||||
except KeyboardInterrupt: |
|
||||
master.shutdown() |
|
||||
if __name__ == "__main__": |
|
||||
import asyncio |
|
||||
from package import check_install_package |
|
||||
check_install_package(['mitmproxy']) |
|
||||
print(f'ip dns static add name=upgrade.mikrotik.com address=<your ip address>') |
|
||||
print(f'ip dns cache flush') |
|
||||
asyncio.run(start_listen(80)) |
|
||||
|
|
||||
|
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue