atsign-foundation / noports

Connect to any device with no external listening ports open
https://noports.com
BSD 3-Clause "New" or "Revised" License
265 stars 15 forks source link

fix: urgent patch on python sshnpd #1026

Closed Xlin123 closed 4 months ago

Xlin123 commented 4 months ago

related to #1025 - What I did Removed legacy code and cleaned up code for 4.0 support fixed small bugs around monitor, and ssh keys I'm not going to spend anymore time fixing username, for now it will be a required verb. - How I did it A release on at_python removed legacy code to clean up logic

- How to verify it STEPS FOR TESTING: make a venv and pip install -r requirements.txt ./sshnpd.py -a ... -m ... -u ...

- Description for the changelog fix: urgent patch on python sshnpd

cconstab commented 4 months ago

Not sure why but I do not have it working on my Mac..


    RCVD (MONITOR): notification: {"id":"1c283c90-e4f7-431c-ba30-afda30d522f2","from":"@cconstab","to":"@ssh_1","key":"@ssh_1:ssh_request.tari.sshnp@cconstab","value":"l7wOxI/gPHh7RlFEnaONkoR3N6FcqC7xBLTtLDbK4hOLafMO7g8GYY4pwy+jnhAgq+lUlMM4mkf5guEIrDTpUGT7vdow79ENc6O/eczYJbcd6ZoHsiPIiH8mrSBmmBmqit5uEnx/fSFFv4KmfSAqbpNosj0+nJGaiwf3+TJLm6WsQNIbXHzUQYVTbW8w9EFgujuwHAYlde4Dlnpq6d1jrPJM0pxGRsogMJSlt7sJjJUj3FLL4I2X6HZluuDS2U/Ltm4hoXZaIypsDG8YunquYltrtR6JBT6eFWA305ZiyTMa7reEJqvjjis7DxZmKc53oPqAYURrIYmVXnHt5JcHptdftskWyQ2X1jPVu7n6DTIcrAlyJTBHVAFIHBxfebCg3YSonmKwHOm5RAEiCKx9p0xwoW14ZNSbLWiSAxp6LBFLggizHtP5OutUmj0z3fZv2bu7zVCq8f4Gb/Lwx3/MkTTS2/ya59CFbKbhs5h4XsWh6Et1rFvJOeHmhFxBN50Hr53wL+oEVAlLE7QfTxZ1sK9FXTwlrxutIQK/6uVSVQMpdJHqbhbGZuUzvdkc0sc7/1aZbECsRtKKOhPmHeqhjOFS5yEqxhtu6n0bmd/SbNorubNdFp0PsZiL5bHGn9JNK/qL2ivf192SP7ps2L4lkjwqQlUTHUnHRCK3wAxPauv//3ZnFcQkFTm6iO1X0fP0hYk9q71b3+qD7lpuXJah4oRns5Mw9GjgHs65xcSnSshgdVw9Ii9WXq4A2w0R5zSi+KvzUMg5CvCE32pzPtezN517Qg1ami5Gvj6iFpszAouhYsD0CqUTO0GVyTjGIoQy1/yHbVzvMZEZ9Up4k0Wcw3XbR3FaJOVFb8vGcSzjt8rHe5FzyVfh++PCiiZ1CIk5teipJwfSJ5CWZcxAeFSJOD4u1tuNAYe0BUSQbw1LKSxlFhixw3S0ogT1gIpkehUKKWUwJajPkexBX3sgoPuHN2XqVq198RXbvMH8Mx3CUv3qoKgFI/otiLTb0kItp+MRnALQr6++ca4F4GJtJeSL7Mx0utD+rOAUM+CGDjqGR4IYr/ALk7TvBcJVp0LRDKSF+T5/mQUaqc0tpXZDRCaqaML5xaZRN6cxzH0Rildmj6mCeHrNO9UPUHCRekI1mrPCjycJ4rKbIw51B6tilKkoefDr3s/PUJ49q8kkSigXi3YRjiEX7pqWos5BhFDA0VrI9m4rqxjDIoph+SF6FzI9PYSb7lSaJbLVtcfiCnKujMbQ9ocZZ80W3utC/sWkDluvHRficVFs4R7BdpHeSScT2TAeI/NU+v6t4q3vbdmwET/kDMFd/bNBxtRDWNmjQIctpgp7qzg6To4EG88c6ZQMr/jDj4RISpUAHTbLJA4QDYns4YMrpyfr9Qpiz2oXiiRWiAUAXVM6O6CY9tErelu/jEK9DsjShF3+rXsPj+Lad7hyea4njAD7fOn+LYZs3oEVbqfvK/aBHvi6bTLXr1upzg==","operation":"update","epochMillis":1714709094616,"messageType":"MessageType.key","isEncrypted":true,"metadata":{"encKeyName":null,"encAlgo":null,"ivNonce":"SxX61/2Q3urY+TDSDDsjrw==","skeEncKeyName":null,"skeEncAlgo":null}}

    SENT: 'notify:remove:1c283c90-e4f7-431c-ba30-afda30d522f2'
    RCVD: 'data:success\n@ssh_1@'
    SENT: 'lookup:shared_key@cconstab'
    RCVD: 'data:f7atuEMRghi2aHHA+uw4Xl0lgaHTX6PHiz12ilyK9FwG+Teo8u0BHlADeSu/vRbeIoIH38Enb/M6PIRQz0HcvW8aDChPvzpp3hIqTT2OSryEhIW43XIMGJzSSIJIFlL1/3l6YVPK35Vf/kx9I3HCHcqmbDfPt4Pi5P8rO2ELmKVoVfzQMM3L9uyBSmnVSiSPn55j2CpPe4GONMD+0uZaKqo2Ic2kG8OYLzJkJzmU0NEgFYLFvHVUSVBxs+qRbZ2JdGFwRzhkcjGaZ2cXf5TGKjnyZtsan3S7yp7hpU9lefCo3IcThqyI9+IQCf2cP6TITLY6RjRuwz6QKvRIx1XaAQ==\n@ssh_1@'
ssh callback requested from @cconstab notification id : 1c283c90-e4f7-431c-ba30-afda30d522f2
[Errno 8] nodename nor servname provided, or not known
[Errno 2] No such file or directory: '/Users/cconstab/.ssh/tmp/f4f09895-ad36-4d73-a8f3-66588df86c32_sshnp.pub'

On the sshnpd.py I see

(sshnpd) ╭─cconstab@tarial in ~/Documents/GitHub/@foundation/sshnoports/packages/python/sshnpd on xlin-pysshnpd-patch ✘ (origin/xlin-pysshnpd-patch)
╰$ ./sshnpd.py -a @ssh_1 -m @cconstab -d tari      
Monitor started on @ssh_1
[Errno 8] nodename nor servname provided, or not known
[Errno 2] No such file or directory: '/Users/cconstab/.ssh/tmp/e114bbff-5c29-4cb7-9d1f-6dd0f8cdd6f0_sshnp.pub'

on the sshnp side


╰$ sshnp -f @cconstab -t @ssh_1 -h @rv_am -d tari --no-ad --no-et -u cconstab 
2024-05-03 00:06:39.614842 : Sending daemon feature check request
2024-05-03 00:06:39.614866 : Resolving remote username for user session
2024-05-03 00:06:39.614872 : Resolving remote username for tunnel session
2024-05-03 00:06:39.615085 : Fetching host and port from srvd
2024-05-03 00:06:41.433351 : Received host and port from srvd
2024-05-03 00:06:41.433392 : Waiting for daemon feature check response
2024-05-03 00:06:41.433397 : Received daemon feature check response
2024-05-03 00:06:41.435672 : Required daemon features are supported
2024-05-03 00:06:41.498290 : Sending session request to the device daemon
2024-05-03 00:06:41.942652 : Waiting for response from the device daemon

Error : No response from the device daemon
╭─cconstab@tarial in ~ 

Could be me as I am not Python friendly...

Xlin123 commented 4 months ago

Not sure why but I do not have it working on my Mac..


  RCVD (MONITOR): notification: {"id":"1c283c90-e4f7-431c-ba30-afda30d522f2","from":"@cconstab","to":"@ssh_1","key":"@ssh_1:ssh_request.tari.sshnp@cconstab","value":"l7wOxI/gPHh7RlFEnaONkoR3N6FcqC7xBLTtLDbK4hOLafMO7g8GYY4pwy+jnhAgq+lUlMM4mkf5guEIrDTpUGT7vdow79ENc6O/eczYJbcd6ZoHsiPIiH8mrSBmmBmqit5uEnx/fSFFv4KmfSAqbpNosj0+nJGaiwf3+TJLm6WsQNIbXHzUQYVTbW8w9EFgujuwHAYlde4Dlnpq6d1jrPJM0pxGRsogMJSlt7sJjJUj3FLL4I2X6HZluuDS2U/Ltm4hoXZaIypsDG8YunquYltrtR6JBT6eFWA305ZiyTMa7reEJqvjjis7DxZmKc53oPqAYURrIYmVXnHt5JcHptdftskWyQ2X1jPVu7n6DTIcrAlyJTBHVAFIHBxfebCg3YSonmKwHOm5RAEiCKx9p0xwoW14ZNSbLWiSAxp6LBFLggizHtP5OutUmj0z3fZv2bu7zVCq8f4Gb/Lwx3/MkTTS2/ya59CFbKbhs5h4XsWh6Et1rFvJOeHmhFxBN50Hr53wL+oEVAlLE7QfTxZ1sK9FXTwlrxutIQK/6uVSVQMpdJHqbhbGZuUzvdkc0sc7/1aZbECsRtKKOhPmHeqhjOFS5yEqxhtu6n0bmd/SbNorubNdFp0PsZiL5bHGn9JNK/qL2ivf192SP7ps2L4lkjwqQlUTHUnHRCK3wAxPauv//3ZnFcQkFTm6iO1X0fP0hYk9q71b3+qD7lpuXJah4oRns5Mw9GjgHs65xcSnSshgdVw9Ii9WXq4A2w0R5zSi+KvzUMg5CvCE32pzPtezN517Qg1ami5Gvj6iFpszAouhYsD0CqUTO0GVyTjGIoQy1/yHbVzvMZEZ9Up4k0Wcw3XbR3FaJOVFb8vGcSzjt8rHe5FzyVfh++PCiiZ1CIk5teipJwfSJ5CWZcxAeFSJOD4u1tuNAYe0BUSQbw1LKSxlFhixw3S0ogT1gIpkehUKKWUwJajPkexBX3sgoPuHN2XqVq198RXbvMH8Mx3CUv3qoKgFI/otiLTb0kItp+MRnALQr6++ca4F4GJtJeSL7Mx0utD+rOAUM+CGDjqGR4IYr/ALk7TvBcJVp0LRDKSF+T5/mQUaqc0tpXZDRCaqaML5xaZRN6cxzH0Rildmj6mCeHrNO9UPUHCRekI1mrPCjycJ4rKbIw51B6tilKkoefDr3s/PUJ49q8kkSigXi3YRjiEX7pqWos5BhFDA0VrI9m4rqxjDIoph+SF6FzI9PYSb7lSaJbLVtcfiCnKujMbQ9ocZZ80W3utC/sWkDluvHRficVFs4R7BdpHeSScT2TAeI/NU+v6t4q3vbdmwET/kDMFd/bNBxtRDWNmjQIctpgp7qzg6To4EG88c6ZQMr/jDj4RISpUAHTbLJA4QDYns4YMrpyfr9Qpiz2oXiiRWiAUAXVM6O6CY9tErelu/jEK9DsjShF3+rXsPj+Lad7hyea4njAD7fOn+LYZs3oEVbqfvK/aBHvi6bTLXr1upzg==","operation":"update","epochMillis":1714709094616,"messageType":"MessageType.key","isEncrypted":true,"metadata":{"encKeyName":null,"encAlgo":null,"ivNonce":"SxX61/2Q3urY+TDSDDsjrw==","skeEncKeyName":null,"skeEncAlgo":null}}

  SENT: 'notify:remove:1c283c90-e4f7-431c-ba30-afda30d522f2'
  RCVD: 'data:success\n@ssh_1@'
  SENT: 'lookup:shared_key@cconstab'
  RCVD: 'data:f7atuEMRghi2aHHA+uw4Xl0lgaHTX6PHiz12ilyK9FwG+Teo8u0BHlADeSu/vRbeIoIH38Enb/M6PIRQz0HcvW8aDChPvzpp3hIqTT2OSryEhIW43XIMGJzSSIJIFlL1/3l6YVPK35Vf/kx9I3HCHcqmbDfPt4Pi5P8rO2ELmKVoVfzQMM3L9uyBSmnVSiSPn55j2CpPe4GONMD+0uZaKqo2Ic2kG8OYLzJkJzmU0NEgFYLFvHVUSVBxs+qRbZ2JdGFwRzhkcjGaZ2cXf5TGKjnyZtsan3S7yp7hpU9lefCo3IcThqyI9+IQCf2cP6TITLY6RjRuwz6QKvRIx1XaAQ==\n@ssh_1@'
ssh callback requested from @cconstab notification id : 1c283c90-e4f7-431c-ba30-afda30d522f2
[Errno 8] nodename nor servname provided, or not known
[Errno 2] No such file or directory: '/Users/cconstab/.ssh/tmp/f4f09895-ad36-4d73-a8f3-66588df86c32_sshnp.pub'

On the sshnpd.py I see

(sshnpd) ╭─cconstab@tarial in ~/Documents/GitHub/@foundation/sshnoports/packages/python/sshnpd on xlin-pysshnpd-patch ✘ (origin/xlin-pysshnpd-patch)
╰$ ./sshnpd.py -a @ssh_1 -m @cconstab -d tari      
Monitor started on @ssh_1
[Errno 8] nodename nor servname provided, or not known
[Errno 2] No such file or directory: '/Users/cconstab/.ssh/tmp/e114bbff-5c29-4cb7-9d1f-6dd0f8cdd6f0_sshnp.pub'

on the sshnp side


╰$ sshnp -f @cconstab -t @ssh_1 -h @rv_am -d tari --no-ad --no-et -u cconstab 
2024-05-03 00:06:39.614842 : Sending daemon feature check request
2024-05-03 00:06:39.614866 : Resolving remote username for user session
2024-05-03 00:06:39.614872 : Resolving remote username for tunnel session
2024-05-03 00:06:39.615085 : Fetching host and port from srvd
2024-05-03 00:06:41.433351 : Received host and port from srvd
2024-05-03 00:06:41.433392 : Waiting for daemon feature check response
2024-05-03 00:06:41.433397 : Received daemon feature check response
2024-05-03 00:06:41.435672 : Required daemon features are supported
2024-05-03 00:06:41.498290 : Sending session request to the device daemon
2024-05-03 00:06:41.942652 : Waiting for response from the device daemon

Error : No response from the device daemon
╭─cconstab@tarial in ~ 

Could be me as I am not Python friendly...

Looks like it's coming from this, i'll fix.

https://stackoverflow.com/questions/39970606/gaierror-errno-8-nodename-nor-servname-provided-or-not-known-with-macos-sie

cconstab commented 4 months ago

That error has gone but it still does not work for me on mac

╰$ ./sshnpd.py -a @ssh_1 -m @cconstab -d tari -u 
Monitor started on @ssh_1
[Errno 61] Connection refused
[Errno 2] No such file or directory: '/Users/cconstab/.ssh/tmp/829a24a2-147a-434a-8366-86b119c2a7aa_sshnp.pub'
[Errno 61] Connection refused
[Errno 2] No such file or directory: '/Users/cconstab/.ssh/tmp/e33b93f5-90fe-459d-8b1f-cac35900df76_sshnp.pub'
[Errno 61] Connection refused
[Errno 2] No such file or directory: '/Users/cconstab/.ssh/tmp/18478a0e-59da-4770-acf0-c87dfba17341_sshnp.pub'
Xlin123 commented 4 months ago

That error has gone but it still does not work for me on mac

╰$ ./sshnpd.py -a @ssh_1 -m @cconstab -d tari -u 
Monitor started on @ssh_1
[Errno 61] Connection refused
[Errno 2] No such file or directory: '/Users/cconstab/.ssh/tmp/829a24a2-147a-434a-8366-86b119c2a7aa_sshnp.pub'
[Errno 61] Connection refused
[Errno 2] No such file or directory: '/Users/cconstab/.ssh/tmp/e33b93f5-90fe-459d-8b1f-cac35900df76_sshnp.pub'
[Errno 61] Connection refused
[Errno 2] No such file or directory: '/Users/cconstab/.ssh/tmp/18478a0e-59da-4770-acf0-c87dfba17341_sshnp.pub'

Hmm, looks to me like the socket connector is failing on your machine.. I'll see if I can reproduce.

cconstab commented 4 months ago

Test now on Linux (Ubuntu 22.0.4) working fine so far

cconstab commented 4 months ago

spoke too soon.. Broken ..

Restarting sshnpd in 3 seconds..
    SENT: 'llookup:shared_key.cconstab@ssh_1'
Restarting sshnpd in 3 seconds..
    RCVD: 'data:k0Er2lWbM2bWWjlGDTII4b8xI8pg+++3DJ8Vouw7rPcKu8oXIsg+3bWCcMWOJ1VpqmshXN76Ry4OAENJwF8iXIqxC7UznDdCq0/cdCDD9UIQol7Dxwj5I+1fIzLbJNDWkey1LBkqcVxCzbOZvn323e4+Hua+UnFQPtU6TCkwKstlA62vT7WoInlDPRnwoOojABD7037N8DGFPeZjQAGnlQYK7+d9SZgQqIhgJhWAHX3TUUHpQRVPBmTBIWVZYbOsi+k7WRWVDIFP4rmu2DP5cJklBbSPCM2Pa8KkYszEfa5/HQGYcI8n6b3B3lyCbL/UT+iDl9ay6yY6epkHVL1fOw==\n@ssh_1@'
    SENT: 'update:ttr:-1:ccd:True:isEncrypted:true:ivNonce:5igKjeGHrLQHN01xtHPLkg==:@cconstab:username.spy.sshnp@ssh_1 PVNT3SFtaVTiE0qT2diZ+g=='
    RCVD: 'data:98747\n@ssh_1@'
Exception in thread Thread-16 (start):
Traceback (most recent call last):
  File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.10/threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
  File "/home/cconstab/noports/packages/python/sshnpd/./sshnpd.py", line 144, in start
    thread.start()
  File "/usr/lib/python3.10/threading.py", line 930, in start
    raise RuntimeError("threads can only be started once")
RuntimeError: threads can only be started once
    SENT: 'llookup:shared_key.cconstab@ssh_1'
Restarting sshnpd in 3 seconds..
    RCVD: 'data:k0Er2lWbM2bWWjlGDTII4b8xI8pg+++3DJ8Vouw7rPcKu8oXIsg+3bWCcMWOJ1VpqmshXN76Ry4OAENJwF8iXIqxC7UznDdCq0/cdCDD9UIQol7Dxwj5I+1fIzLbJNDWkey1LBkqcVxCzbOZvn323e4+Hua+UnFQPtU6TCkwKstlA62vT7WoInlDPRnwoOojABD7037N8DGFPeZjQAGnlQYK7+d9SZgQqIhgJhWAHX3TUUHpQRVPBmTBIWVZYbOsi+k7WRWVDIFP4rmu2DP5cJklBbSPCM2Pa8KkYszEfa5/HQGYcI8n6b3B3lyCbL/UT+iDl9ay6yY6epkHVL1fOw==\n@ssh_1@'
    SENT: 'update:ttr:-1:ccd:True:isEncrypted:true:ivNonce:1JatbfIXBbiSUYzs7VWnuw==:@cconstab:username.spy.sshnp@ssh_1 PVNT3SFtaVTiE0qT2diZ+g=='
    RCVD: 'data:98748\n@ssh_1@'
Exception in thread Thread-20 (start):
Traceback (most recent call last):
  File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.10/threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
  File "/home/cconstab/noports/packages/python/sshnpd/./sshnpd.py", line 144, in start
    thread.start()
  File "/usr/lib/python3.10/threading.py", line 930, in start
    raise RuntimeError("threads can only be started once")
RuntimeError: threads can only be started once
    SENT: 'llookup:shared_key.cconstab@ssh_1'
Restarting sshnpd in 3 seconds..
    RCVD: 'data:k0Er2lWbM2bWWjlGDTII4b8xI8pg+++3DJ8Vouw7rPcKu8oXIsg+3bWCcMWOJ1VpqmshXN76Ry4OAENJwF8iXIqxC7UznDdCq0/cdCDD9UIQol7Dxwj5I+1fIzLbJNDWkey1LBkqcVxCzbOZvn323e4+Hua+UnFQPtU6TCkwKstlA62vT7WoInlDPRnwoOojABD7037N8DGFPeZjQAGnlQYK7+d9SZgQqIhgJhWAHX3TUUHpQRVPBmTBIWVZYbOsi+k7WRWVDIFP4rmu2DP5cJklBbSPCM2Pa8KkYszEfa5/HQGYcI8n6b3B3lyCbL/UT+iDl9ay6yY6epkHVL1fOw==\n@ssh_1@'
    SENT: 'update:ttr:-1:ccd:True:isEncrypted:true:ivNonce:Qoco2DxRVNyzZcu+Qjbwnw==:@cconstab:username.spy.sshnp@ssh_1 PVNT3SFtaVTiE0qT2diZ+g=='
    RCVD: 'data:98749\n@ssh_1@'
Exception in thread Thread-24 (start):
Traceback (most recent call last):
  File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.10/threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
  File "/home/cconstab/noports/packages/python/sshnpd/./sshnpd.py", line 144, in start
    thread.start()
  File "/usr/lib/python3.10/threading.py", line 930, in start
    raise RuntimeError("threads can only be started once")
RuntimeError: threads can only be started once
    SENT: 'llookup:shared_key.cconstab@ssh_1'
Restarting sshnpd in 3 seconds..
    RCVD: 'data:k0Er2lWbM2bWWjlGDTII4b8xI8pg+++3DJ8Vouw7rPcKu8oXIsg+3bWCcMWOJ1VpqmshXN76Ry4OAENJwF8iXIqxC7UznDdCq0/cdCDD9UIQol7Dxwj5I+1fIzLbJNDWkey1LBkqcVxCzbOZvn323e4+Hua+UnFQPtU6TCkwKstlA62vT7WoInlDPRnwoOojABD7037N8DGFPeZjQAGnlQYK7+d9SZgQqIhgJhWAHX3TUUHpQRVPBmTBIWVZYbOsi+k7WRWVDIFP4rmu2DP5cJklBbSPCM2Pa8KkYszEfa5/HQGYcI8n6b3B3lyCbL/UT+iDl9ay6yY6epkHVL1fOw==\n@ssh_1@'
    SENT: 'update:ttr:-1:ccd:True:isEncrypted:true:ivNonce:umsGAXgqFf8YtqyYhZuH9g==:@cconstab:username.spy.sshnp@ssh_1 PVNT3SFtaVTiE0qT2diZ+g=='
    RCVD: 'data:98750\n@ssh_1@'
Exception in thread Thread-28 (start):
Traceback (most recent call last):
  File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.10/threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
  File "/home/cconstab/noports/packages/python/sshnpd/./sshnpd.py", line 144, in start
    thread.start()
  File "/usr/lib/python3.10/threading.py", line 930, in start
    raise RuntimeError("threads can only be started once")
RuntimeError: threads can only be started once
    SENT: 'llookup:shared_key.cconstab@ssh_1'
Restarting sshnpd in 3 seconds..
    RCVD: 'data:k0Er2lWbM2bWWjlGDTII4b8xI8pg+++3DJ8Vouw7rPcKu8oXIsg+3bWCcMWOJ1VpqmshXN76Ry4OAENJwF8iXIqxC7UznDdCq0/cdCDD9UIQol7Dxwj5I+1fIzLbJNDWkey1LBkqcVxCzbOZvn323e4+Hua+UnFQPtU6TCkwKstlA62vT7WoInlDPRnwoOojABD7037N8DGFPeZjQAGnlQYK7+d9SZgQqIhgJhWAHX3TUUHpQRVPBmTBIWVZYbOsi+k7WRWVDIFP4rmu2DP5cJklBbSPCM2Pa8KkYszEfa5/HQGYcI8n6b3B3lyCbL/UT+iDl9ay6yY6epkHVL1fOw==\n@ssh_1@'
    SENT: 'update:ttr:-1:ccd:True:isEncrypted:true:ivNonce:NZoJMHn5fg7XgHalhdHQVg==:@cconstab:username.spy.sshnp@ssh_1 PVNT3SFtaVTiE0qT2diZ+g=='
    RCVD: 'data:98751\n@ssh_1@'
Exception in thread Thread-32 (start):
Traceback (most recent call last):
  File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.10/threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
  File "/home/cconstab/noports/packages/python/sshnpd/./sshnpd.py", line 144, in start
    thread.start()
  File "/usr/lib/python3.10/threading.py", line 930, in start
    raise RuntimeError("threads can only be started once")
RuntimeError: threads can only be started once

agina could be me but the penv seemed OK..

╭─cconstab@servalan in ~/noports/packages/python/sshnpd on xlin-pysshnpd-patch ✔ (origin/xlin-pysshnpd-patch)
╰$ source my_env/bin/activate
(my_env) ╭─cconstab@servalan in ~/noports/packages/python/sshnpd on xlin-pysshnpd-patch ✔ (origin/xlin-pysshnpd-patch)
╰$ pip install -r requirements.txt
Collecting atsdk==0.2.11 (from -r requirements.txt (line 1))
  Downloading atsdk-0.2.11-py3-none-any.whl (32 kB)
Collecting bcrypt==4.1.2 (from -r requirements.txt (line 4))
  Downloading bcrypt-4.1.2-cp39-abi3-manylinux_2_28_x86_64.whl (698 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 698.9/698.9 kB 2.1 MB/s eta 0:00:00
Collecting certifi==2024.2.2 (from -r requirements.txt (line 32))
  Downloading certifi-2024.2.2-py3-none-any.whl (163 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 163.8/163.8 kB 2.0 MB/s eta 0:00:00
Collecting cffi==1.16.0 (from -r requirements.txt (line 35))
  Downloading cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (443 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 443.9/443.9 kB 1.3 MB/s eta 0:00:00
Collecting charset-normalizer==3.3.2 (from -r requirements.txt (line 88))
  Downloading charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 142.1/142.1 kB 1.8 MB/s eta 0:00:00
Collecting cryptography==42.0.5 (from -r requirements.txt (line 179))
  Downloading cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl (4.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.6/4.6 MB 3.0 MB/s eta 0:00:00
Collecting idna==3.7 (from -r requirements.txt (line 212))
  Downloading idna-3.7-py3-none-any.whl (66 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.8/66.8 kB 978.5 kB/s eta 0:00:00
Collecting paramiko==3.4.0 (from -r requirements.txt (line 215))
  Downloading paramiko-3.4.0-py3-none-any.whl (225 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 225.9/225.9 kB 1.7 MB/s eta 0:00:00
Collecting pycparser==2.22 (from -r requirements.txt (line 218))
  Downloading pycparser-2.22-py3-none-any.whl (117 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.6/117.6 kB 1.4 MB/s eta 0:00:00
Collecting pynacl==1.5.0 (from -r requirements.txt (line 221))
  Downloading PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (856 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 856.7/856.7 kB 2.1 MB/s eta 0:00:00
Collecting python-dateutil==2.9.0.post0 (from -r requirements.txt (line 232))
  Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 229.9/229.9 kB 1.7 MB/s eta 0:00:00
Collecting requests==2.31.0 (from -r requirements.txt (line 235))
  Downloading requests-2.31.0-py3-none-any.whl (62 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.6/62.6 kB 707.7 kB/s eta 0:00:00
Requirement already satisfied: setuptools==69.5.1 in ./my_env/lib/python3.10/site-packages (from -r requirements.txt (line 238)) (69.5.1)
Collecting six==1.16.0 (from -r requirements.txt (line 241))
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting urllib3==2.2.1 (from -r requirements.txt (line 244))
  Downloading urllib3-2.2.1-py3-none-any.whl (121 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.1/121.1 kB 1.3 MB/s eta 0:00:00
Installing collected packages: urllib3, six, pycparser, idna, charset-normalizer, certifi, bcrypt, requests, python-dateutil, cffi, pynacl, cryptography, paramiko, atsdk
Successfully installed atsdk-0.2.11 bcrypt-4.1.2 certifi-2024.2.2 cffi-1.16.0 charset-normalizer-3.3.2 cryptography-42.0.5 idna-3.7 paramiko-3.4.0 pycparser-2.22 pynacl-1.5.0 python-dateutil-2.9.0.post0 requests-2.31.0 six-1.16.0 urllib3-2.2.1
(my_env) ╭─cconstab@servalan in ~/noports/packages/python/sshnpd on xlin-pysshnpd-patch ✔ (origin/xlin-pysshnpd-patch)
╰$