Upload Server
This commit is contained in:
parent
4e4ad51596
commit
508bab867f
74
server.py
Normal file
74
server.py
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
|
||||||
|
import tornado.ioloop
|
||||||
|
import tornado.httpclient
|
||||||
|
import tornado.web
|
||||||
|
import json
|
||||||
|
import joblib
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
arguments = sys.argv
|
||||||
|
lib = arguments[1]
|
||||||
|
model = joblib.load('./models/' + lib)
|
||||||
|
head_names=["received_bytes","send_bytes","port_duration","total_duration","jitter","differents_port"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class GenericHandler(tornado.web.RequestHandler):
|
||||||
|
|
||||||
|
TelegramBot=""
|
||||||
|
ChatTelegramId=""
|
||||||
|
message = "Alerta por escaneo. Puertos UDP escaneados desde la IP: "
|
||||||
|
|
||||||
|
def send_telegram(self,ip):
|
||||||
|
|
||||||
|
url = f"https://api.telegram.org/bot{self.TelegramBot}/sendMessage"
|
||||||
|
data = {"chat_id": self.ChatTelegramId, "text": self.message + ip}
|
||||||
|
headers = {"Content-Type": "application/json"}
|
||||||
|
body = json.dumps(data)
|
||||||
|
|
||||||
|
http_client = tornado.httpclient.AsyncHTTPClient()
|
||||||
|
try:
|
||||||
|
response = http_client.fetch(
|
||||||
|
url,
|
||||||
|
method="POST",
|
||||||
|
body=body,
|
||||||
|
headers=headers,
|
||||||
|
)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
finally:
|
||||||
|
http_client.close()
|
||||||
|
|
||||||
|
def post(self):
|
||||||
|
|
||||||
|
plain_text = self.request.body.decode('utf-8')
|
||||||
|
metrics = plain_text.split("||")[0]
|
||||||
|
ip_src = plain_text.split("||")[1]
|
||||||
|
|
||||||
|
check_data = list(map(lambda x: float(x), metrics.split(',')))
|
||||||
|
df_predict = pd.DataFrame([check_data])
|
||||||
|
df_predict.columns = head_names
|
||||||
|
pre = model.predict(df_predict)
|
||||||
|
result = pre[0]
|
||||||
|
self.set_header("Content-Type", "text/plain")
|
||||||
|
self.write(str(result))
|
||||||
|
if round(result) == 1:
|
||||||
|
self.send_telegram(ip_src)
|
||||||
|
self.finish()
|
||||||
|
|
||||||
|
|
||||||
|
def make_app():
|
||||||
|
return tornado.web.Application([
|
||||||
|
(r"/check", GenericHandler),
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
app = make_app()
|
||||||
|
app.listen(8888)
|
||||||
|
tornado.ioloop.IOLoop.current().start()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user