/
dinruspro
/
reference
Обзор
Документация
Войти
/
dinruspro
/
reference
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
SshBasics/Tunnel.cpp
44 строки
1 KB
EnergonV
Справка по коду перекочевала в репозиторий (наконец-то!)
09 янв 2024, 19:20
09 янв 2024, 19:20
e333663
Код
Авторство
О чём код?
#include "SshBasics.h" // OpenTcpTunnel: // Demonstrates tcp-ip and port forwarding feature of the ssh protocol. // This example requires upp/reference/SocketServer and upp/reference/SocketClient examples. // SocketClient: Set the port number to 3215. bool ServerSendRecv(SshSession& session, String& data) { // SshTunnel <-> SocketServer SshTunnel tunnel(session); if(!tunnel.Connect("127.0.0.1", 3214)) { LOG("ServerSendRecv(): " << tunnel.GetErrorDesc()); return false; } tunnel.Put(data + '\n'); data = tunnel.GetLine(); return !data.IsEmpty(); } void ForwardTcpIp(SshSession& session) { SshTunnel listener(session); if(!listener.Listen(3215, 5)) { LOG("ForwardTcpIp(): " << listener.GetErrorDesc()); return; } LOG("SSH tunnel (server mode): Waiting for the requests to be tunneled..."); for(;;) { SshTunnel tunnel(session); if(!tunnel.Accept(listener)) { LOG("ForwardTcpIp(): " << tunnel.GetErrorDesc()); return; } // SocketClient <-> SshTunnel String data = tunnel.GetLine(); LOG("Tunneled Request: " << data); if(!data.IsEmpty() && ServerSendRecv(session, data)) { LOG("Tunneled Response: " << data); tunnel.Put(data + '\n'); } } }