2.1 KiB
2.1 KiB
TODO:
-
listen and connect for UDP
listener { mainsock = new UdpSocket(true) mainsock.bind(in_end) do { pac = mainsock.receiveAny(out sender_end) } while (pac is not ConnectionRequest) skip package connector_end = sender_end mainsock.sendTo(ConnectionConfirmation, connector_end) attemptN = 0 while(attemptN < 20){ try { pac = mainsock.receiveAny(out sender_end) if(sender_end == connector_end) { connector_pac = new ConnectorPackage.parse(pac) mainsock.sendTo(connector_pac.data, connector_pac.destination), } else { extern_pac = new ExternPackage(pac, sender_end) mainsock.sendTo(extern_pac, connector_end) } attemptN = 0 } catch { attemptN++ sleep(10ms) } } log("connector is unreachable") } connector { if(output_mode == bind) { mainsock = new UdpSocket(true) mainsock.bind(out_end) } else if(output_mode == send) { mainsock = new UdpSocket(false) } else throw attemptN = 0 while(attemptN < 20) { try { pac = mainsock.receiveAny(out sender_end) if(sender_end == out_end) { connector_pac = new ConnectorPackage(pac) } else { extern_pac = ExternPackage.parse(pac) mainsock.sendTo(extern_pac.data, out_end) } attemptN = 0 } catch { attemptN++ sleep(10ms) } } log("connector is unreachable") } -
listen and connect for TCP
-
encrypt/decrypt input/output
- generate temp password from key every 10 minutes:
rng(seed: time()/(10*60*CLOCKS_PER_SECOND), salt: hash(key))
- generate temp password from key every 10 minutes: