diff options
author | Jesusaves <cpntb1@ymail.com> | 2020-12-17 14:56:21 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2020-12-17 14:56:21 -0300 |
commit | 0f001ee4db66e8154c0405eb2cf4434803fbde1c (patch) | |
tree | f9bf72f51505b6ecf81e391ec4c6dd0566441fa5 /security.py | |
parent | 4da1730136fdca575bf403e5f54736853325c3d2 (diff) | |
download | server-0f001ee4db66e8154c0405eb2cf4434803fbde1c.tar.gz server-0f001ee4db66e8154c0405eb2cf4434803fbde1c.tar.bz2 server-0f001ee4db66e8154c0405eb2cf4434803fbde1c.tar.xz server-0f001ee4db66e8154c0405eb2cf4434803fbde1c.zip |
Move blacklist functions to security.py
Diffstat (limited to 'security.py')
-rw-r--r-- | security.py | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/security.py b/security.py new file mode 100644 index 0000000..a2d5a92 --- /dev/null +++ b/security.py @@ -0,0 +1,81 @@ +######################################################################################## +# This file is part of Spheres. +# Copyright (C) 2019 Jesusalva + +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +######################################################################################## +# Adds an extra layer of security to the server +# Really basic stuff, still better than nothing, though +import threading +from utils import now, stdout, dl_search +from consts import BL_UPDATETIME, INT_MAX + +blacklist = [] + +############################################################### +# Import K-Line, G-Line and Z-Line +try: + f=open("Z-Line.txt", "r") + for ip in f: + blacklist.append([ip.replace("\n", ""), INT_MAX]) + f.close() +except: + stdout("No Z-Line.txt config file found") + pass + +try: + f=open("G-Line.txt", "r") + for ip in f: + blacklist.append([ip.replace("\n", ""), INT_MAX]) + f.close() +except: + stdout("No G-Line.txt config file found") + pass + +try: + f=open("K-Line.txt", "r") + for ip in f: + blacklist.append([ip.replace("\n", ""), INT_MAX]) + f.close() +except: + stdout("No K-Line.txt config file found") + pass + +# Inform what is current blacklist +stdout("Blacklist configuration:\n%s\n\n" % str(blacklist)) + +############################################################################### +def is_banned(ip): + global blacklist + print("Searching on blacklist") + bl=dl_search(blacklist, 0, ip) + print("Result: %s" % str(bl)) + if (bl != "ERROR"): + return True + else: + return False + +############################################################################### +def blacklist_update(): + for ban in blacklist: + if ban[1] < now(): + blacklist.remove(ban) + stdout("Unbanning %s..." % ban[0]) + bl_update=threading.Timer(BL_UPDATETIME, blacklist_update) + bl_update.daemon=True + bl_update.start() + +# Run, and keep running forever +blacklist_update() |