use right multicast address

master
Kevin Froman 2020-03-23 01:24:13 -05:00
parent d77f802fdd
commit eec7efd38d
1 changed files with 7 additions and 10 deletions

View File

@ -25,7 +25,7 @@ from utils.bettersleep import better_sleep
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. along with this program. If not, see <https://www.gnu.org/licenses/>.
""" """
MCAST_GRP = '224.13.3.7' MCAST_GRP = '224.0.0.112'
MCAST_PORT = 1337 MCAST_PORT = 1337
IS_ALL_GROUPS = True IS_ALL_GROUPS = True
ANNOUNCE_LOOP_SLEEP = 30 ANNOUNCE_LOOP_SLEEP = 30
@ -54,20 +54,18 @@ def learn_services(lan_service_list: List):
service_ips = service_ips.replace('onionr-', '').split('-') service_ips = service_ips.replace('onionr-', '').split('-')
port = 0 port = 0
for service in service_ips: for service in service_ips:
print(service)
try: try:
ip_address(service) ip_address(service)
if not ip_address(service).is_private: raise ValueError
except ValueError: except ValueError:
service_ips.remove(service) service_ips.remove(service)
continue continue
# remove our own ips # remove our own ips
service_ips = set(lan_ips) ^ set(service_ips) service_ips = set(lan_ips) ^ set(service_ips)
# remove known ips and add to external list # remove known ips and add to external list
lan_service_list = set(service_ips) ^ set(lan_service_list) lan_service_list = list(set(service_ips) ^ set(lan_service_list))
print('discover', list(lan_service_list))
sock.shutdown(SHUT_RDWR)
sock.close()
# no return intended, list modified by reference
def advertise_service(specific_ips=None): def advertise_service(specific_ips=None):
@ -84,7 +82,6 @@ def advertise_service(specific_ips=None):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, MULTICAST_TTL) sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, MULTICAST_TTL)
while True: while True:
sock.sendto(f"onionr-{ips}".encode('utf-8'), (MCAST_GRP, MCAST_PORT)) sock.sendto(f"onionr-{ips}", (MCAST_GRP, MCAST_PORT))
better_sleep(ANNOUNCE_LOOP_SLEEP) better_sleep(ANNOUNCE_LOOP_SLEEP)
sock.shutdown(SHUT_RDWR)
sock.close()