-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
54 lines (50 loc) · 1.8 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from flask import Flask, render_template, send_from_directory, redirect, request
import os
import random
import subprocess
from jinja2 import Environment
from jinja2.loaders import FileSystemLoader
app = Flask(__name__)
@app.route("/")
def index():
return redirect(os.environ.get('MAIN_PAGE'))
@app.route("/favicon.ico")
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'),'ahmesen.png', mimetype='image/png')
@app.route("/server/dls/<ip>/<op>")
def pingServerSide(ip,op):
# userip = request.environ['REMOTE_ADDR']
#nginx request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
dest = ip.lstrip('ip=')
dest = dest.lower()
cmd = "ping -c 4"
root = ""
if(op == "op=1"):
cmd = "ping -c 4 -4"
if(op == "op=2"):
cmd = "ping -c 4 -6"
if(op == "op=3"):
cmd = "traceroute -I -4"
root = "sudo"
if(op == "op=4"):
cmd = "traceroute -I -6"
root = "sudo"
if(op == "op=5"):
cmd = "mtr -4 --report --report-wide"
if(op == "op=6"):
cmd = "mtr -6 --report --report-wide"
chars_to_remove = "!\"#$%&'()*+,;/<= >?@[\\]^_`{|}~\t\n\r " # \t TAB, \r: RETURN, \n NEWLINE
translation_table = {ord(c): None for c in chars_to_remove }
destsan = dest.translate(translation_table)
if(destsan != dest):
return render_template("nice-try.html"),500
# operation = ('ping -c 4'+' '+dest)
operation = (root+' '+cmd+' '+' '+dest)
result = subprocess.run(operation, shell=True, check=True, stdout=subprocess.PIPE)
if result.returncode == 1:
return "No response from Host."
result = result.stdout.decode("utf-8")
return render_template("serverside.html", result=result, dest=dest, cmd=cmd)
@app.route("/wait")
def waitpage():
return render_template("wait.html")