Локални SOCKS слушалац из AsyncSSH везе
Направите динамичко TCP прослеђивање помоћу AsyncSSH forward_socks API-ја и одржите слушалац живим на asyncio петљи догађаја.
AsyncSSH нуди динамичко TCP прослеђивање кроз forward_socks(). Апликација која већ има AsyncSSH може да створи локални SOCKS слушалац преко SSH везе:
import asyncio
import asyncssh
async def main():
async with asyncssh.connect(
'jump.example.net', username='operator'
) as connection:
listener = await connection.forward_socks('127.0.0.1', 1080)
await listener.wait_closed()
asyncio.run(main())
SSH сервер и налог су примери. Примењује се уобичајена AsyncSSH провера кључева домаћина. Сервер мора да дозволи тражено TCP прослеђивање. За еквивалент у командној линији локално динамичко прослеђивање OpenSSH-а користи исти смер од SSH ка одредишту.
Локални клијенти сада могу да користе 127.0.0.1:1080 као своју SOCKS крајњу тачку. Сваки SOCKS захтев наводи своје одредиште; SSH сервер отвара одговарајућу одлазну TCP везу. Апликација не мора да покреће удаљени преузимач за сваки URL.
Чекање задржава асинхрону функцију унутар домета везе. Тренутни повратак након стварања слушаоца напустио би тај домет и затворио везу која га подржава. Већа asyncio апликација може да држи ову везу отвореном док извршава остале задатке на истој петљи догађаја.