say ok on login, not x

This commit is contained in:
2026-03-21 15:26:45 +01:00
parent 6d1b600b0b
commit 90435b477a
4 changed files with 34 additions and 46 deletions
+8 -13
View File
@@ -67,7 +67,6 @@ def authenticate(conn: socket.socket):
salt = "".join(secrets.choice(string.ascii_lowercase) for _ in range(SALT_LENGTH))
conn.sendall(salt.encode() + b"\n")
expected_hash = hashlib.sha1((salt + PASSWORD).encode()).hexdigest().encode()
tries = 0
while True:
try:
@@ -75,15 +74,13 @@ def authenticate(conn: socket.socket):
if not data: break
if data.strip() == expected_hash.strip():
conn.sendall(b"o1,0\n")
conn.sendall(b"o1,0\nOK\n")
return True
else:
tries += 1
conn.sendall(b"a0\n") # You failed
except BlockingIOError:
if tries > 2:
conn.close()
break
except BlockingIOError: pass
conn.close()
return False
def process_command(tef: TEF6686, data: bytes, state: State, conn: socket.socket):
@@ -103,17 +100,15 @@ def process_command(tef: TEF6686, data: bytes, state: State, conn: socket.socket
out += f"G{bin(eqims).removeprefix('0b').zfill(2)}\n".encode()
state.last_eqims = eqims
elif cmd.startswith(b"B"):
mono = bool(int(cmd.decode().removeprefix("B").strip(), 2))
tef.FM_Set_Stereo_Min(2 if mono else 0)
out += f"B{int(mono)}\n".encode()
state.forced_mono = mono
state.forced_mono = bool(int(cmd.decode().removeprefix("B").strip(), 2))
tef.FM_Set_Stereo_Min(2 if state.forced_mono else 0)
out += f"B{int(state.forced_mono)}\n".encode()
elif cmd.startswith(b"D"):
state.deemp = int(cmd.decode().removeprefix("D").strip())
dtime = 500 if state.deemp == 0 else (750 if state.deemp == 1 else 0)
tef.FM_Set_Deemphasis(dtime)
out += f"D{state.deemp}\n".encode()
elif cmd.startswith(b"x"):
out += b"OK\n"
tef.APPL_Set_OperationMode(False) # Enable
tef.FM_Tune_To(TEF6686.TuneTo_Mode.Preset, state.last_tune)
elif cmd.startswith(b"X"): tef.APPL_Set_OperationMode(True) # turn off
@@ -122,10 +117,10 @@ def process_command(tef: TEF6686, data: bytes, state: State, conn: socket.socket
auto = (state.bw == 0)
tef.FM_Set_Bandwidth(auto, 2360 if auto else (state.bw // 100))
out += f"W{state.bw}\n".encode()
elif cmd.startswith(b"?"): out += b".XRD Python driver\n"
elif cmd.startswith(b"?"): out += b">XRD Python driver\n"
elif cmd.startswith(b"S"):
cmd = cmd[1:]
if cmd != b"":
if cmd.strip():
arg = int(cmd.decode()[1:].strip())
match cmd[0]:
case 97: state.scan_start = (arg + 5) // 10