Skip to content

Commit

Permalink
Merge pull request #17 from wildekat/main
Browse files Browse the repository at this point in the history
bugfixes (#16), code cleanup
  • Loading branch information
ValdikSS authored Aug 7, 2024
2 parents b072ff2 + 480e2cf commit 2e68d0c
Showing 1 changed file with 16 additions and 18 deletions.
34 changes: 16 additions & 18 deletions src/tor_relay_scanner/scanner.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,12 @@ def start_browser():


def str_list_with_prefix(prefix, list_):
return "\n".join([prefix + r for r in list_])
return "\n".join(prefix + r for r in list_)


def chunked_list(l, size):
for i in range(0, len(l), size):
yield l[i:i+size]


async def main_async(args):
Expand Down Expand Up @@ -168,42 +173,35 @@ async def main_async(args):
relays_new.append(relay_copy)
relays = relays_new
if not relays:
print("There are no relays within specified port number constrains!", file=sys.stderr)
print("There are no relays within specified port number constraints!", file=sys.stderr)
print("Try changing port numbers.", file=sys.stderr)
return 2

working_relays = list()
ntry = 0
relaypos = 0
numtries = round(len(relays) / NUM_RELAYS)
for ntry in range(numtries):
numtries = (len(relays) + NUM_RELAYS - 1) // NUM_RELAYS
for ntry, chunk in enumerate(chunked_list(relays, NUM_RELAYS)):
if len(working_relays) >= WORKING_RELAY_NUM_GOAL:
break

relaynum = min(NUM_RELAYS, len(relays) - relaypos - 1)
test_relays = [TorRelay(relays[x])
for x in range(relaypos, relaypos+relaynum)]
relaypos += NUM_RELAYS

if not test_relays:
break
relaynum = len(chunk)
test_relays = [TorRelay(r) for r in chunk]

print(
f"\nTry {ntry}/{numtries}, We'll test the following {NUM_RELAYS} random relays:", file=sys.stderr)
f"\nTry {ntry+1}/{numtries}, We'll test the following {relaynum} random relays:", file=sys.stderr)
for relay in test_relays:
print(relay, file=sys.stderr)
print("", file=sys.stderr)
print(file=sys.stderr)

if ntry:
print(f"Found {len(working_relays)} good relays so far. Test {ntry}/{numtries} started…", file=sys.stderr)
print(f"Found {len(working_relays)} good relays so far. Test {ntry+1}/{numtries} started…", file=sys.stderr)
else:
print(f"Test started…", file=sys.stderr)

tasks = list()
for relay in test_relays:
tasks.append(asyncio.create_task(relay.check(TIMEOUT)))
fin = await asyncio.gather(*tasks)
print("", file=sys.stderr)
print(file=sys.stderr)

print("The following relays are reachable this try:", file=sys.stderr)
for relay in test_relays:
Expand All @@ -216,7 +214,7 @@ async def main_async(args):
print("No relays are reachable this try.", file=sys.stderr)

if ntry > 1:
print("", file=sys.stderr)
print(file=sys.stderr)
print("All reachable relays:", file=sys.stderr)
for relay in working_relays:
if relay:
Expand Down

0 comments on commit 2e68d0c

Please sign in to comment.