Ruby Net::FTP праз SOCKS: уваход працуе, загрузкі завісаюць
Прасочвайце кіруючае і датавае злучэнні Ruby FTP праз той жа прадугледжаны шлях проксі.
Уваход у FTP выкарыстоўвае кіруючае злучэнне. Затым спіс каталога або загрузка патрабуюць датавае злучэнне, якое можа не ўдасца, нават калі ўваход праз SOCKS прайшоў.
Спачатку вызначце пасіўны або актыўны рэжым. У пасіўным рэжыме кліент адкрывае новае злучэнне да адраса і порта, якія паведамляе FTP-сервер. Гэтае злучэнне таксама патрабуе прадугледжанага шляху проксі.
Інтэграцыя сокетаў у Ruby
Net::FTP API у Ruby дакументуе паводзіны злучэння і пасіўнага рэжыму. Інтэграцыя SOCKS павінна ахопліваць стварэнне сокета, якое выкарыстоўваюць абодва шляхі — кіруючы і датавы; наладка проксі HTTP-кліента ў іншым месцы іх не канфігуруе.
Калі інтэграцыя змяняе паводзіны сокета глабальна, перагледзьце яе межы па паралельнасці. Блок вакол адной перадачы не можа ізаляваць іншыя патокавыя ад змен агульнага стану.
Пастаўшчык можа прапанаваць статычную канчатковую кропку, але гэта ўласцівасць сэрвісу, а не агульнае патрабаванне SOCKS. Там, дзе асобныя злучэнні могуць выкарыстоўваць розныя выхады, праверце, як FTP-сервер суадносіць сваё датавае злучэнне з аўтэнтыфікаваным кіруючым.
Запішыце дасягнутую стадыю, рэжым і канчатковую кропку даных, прыбраўшы ўліковыя даныя. Гэта адрознівае заблакаваны шлях даных ад няўдалага ўваходу праз проксі.