""" Onionr - Private P2P Communication Ensure sockets don't get made to non localhost """ import ipaddress import logger from onionrexceptions import NetworkLeak """ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ def detect_socket_leaks(socket_event): """is called by the big brother broker whenever a socket connection happens. raises exception & logs if not to loopback """ ip_address = socket_event[1][0] # validate is valid ip address (no hostname, etc) # raises NetworkLeak if not try: ipaddress.ip_address(ip_address) except ValueError: logger.warn(f'Conn made to {ip_address} outside of Tor/similar') raise NetworkLeak('Conn to non local IP, this is a privacy concern!') # Validate that the IP is localhost ipv4 if not ip_address.startswith('127'): logger.warn(f'Conn made to {ip_address} outside of Tor/similar') raise NetworkLeak('Conn to non local IP, this is a privacy concern!')