| @@ -0,0 +1,67 @@ | |||||
| #!/usr/bin/env python3 | |||||
| # -*- coding: utf-8 -*- | |||||
| ## Utilisez la commande 'python3 -m pip install cowsay' pour ajouter ce MOTD. | |||||
| ## Sinon, supprimez cette partie du programme jusqu'au prochain commentaire | |||||
| import socket | |||||
| import cowsay | |||||
| ## Editez le fichier config.py pour y mettre les bonnes variables. | |||||
| #cowsay.ghostbusters("SSH-Notifier \n The owner has been notified of this login") | |||||
| ## importation des dependances | |||||
| import re | |||||
| import sys | |||||
| from config import config | |||||
| sys.path.insert(1, config["plateform_directory"]) | |||||
| from telegram import telegram_send_message | |||||
| from discord import discord_send_message | |||||
| import os | |||||
| import subprocess | |||||
| import json | |||||
| import requests | |||||
| #Pattern pour reconnaitre une IP | |||||
| ip_pattern = "(?:^|\b(?<!\.))(?:1?\d\d?|2[0-4]\d|25[0-5])(?:\.(?:1?\d\d?|2[0-4]\d|25[0-5])){3}(?=$|[^\w.])" | |||||
| def main(): | |||||
| out = subprocess.Popen(['tail', '-3', '/var/log/auth.log'], | |||||
| stdout=subprocess.PIPE, | |||||
| stderr=subprocess.STDOUT) | |||||
| stdout,stderr = out.communicate() | |||||
| resultat = stdout.decode('ascii') | |||||
| auth = resultat.split(' ') | |||||
| for i in range(len(auth)): | |||||
| line = auth[i] | |||||
| if find_ip(line) != None : | |||||
| IP = line | |||||
| where = geoip(IP) | |||||
| message = "Nouvelle connexion sur " + socket.gethostname() + " Provenant de " + IP + '\n' + 'Pays : ' + where['countryName'] + '\n' + 'Ville : ' + where['cityName'] + '\n' + 'Code Postal : ' + where['zipCode'] | |||||
| if config["plateform"] == 'telegram' : | |||||
| telegram_send_message(message) | |||||
| if config["plateform"] == 'discord' : | |||||
| discord_send_message(message) | |||||
| def find_ip(str) : | |||||
| pattern = re.compile(ip_pattern) | |||||
| ip = re.match(pattern, str) | |||||
| return ip | |||||
| def geoip(ip): | |||||
| key = config['ipinfodb_key'] | |||||
| url_api = 'http://api.ipinfodb.com/v3/ip-city/?key=' + key + '&ip=' + ip + "&format=json" | |||||
| localisation = requests.get(url_api) | |||||
| if str(localisation) != '<Response [200]>' : | |||||
| print("Mauvaise réponse de l'api") | |||||
| return "Echec de la recuperation du lieu" | |||||
| data = localisation | |||||
| return data.json() | |||||
| if __name__ == '__main__': | |||||
| main() | |||||