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