Đăng nhập FTP dùng một kết nối điều khiển. Sau đó, danh sách thư mục hoặc tải xuống cần một kết nối dữ liệu, có thể thất bại dù đăng nhập qua SOCKS đã thành công.

Trước hết hãy xác định chế độ thụ động hay chủ động. Ở chế độ thụ động, máy khách mở kết nối mới tới địa chỉ và cổng do máy chủ FTP cung cấp. Kết nối đó cũng cần tuyến proxy dự kiến.

Tích hợp socket trong Ruby

Net::FTP API của Ruby tài liệu hóa hành vi kết nối và chế độ thụ động. Một tích hợp SOCKS phải bao phủ việc tạo socket mà cả đường điều khiển lẫn đường dữ liệu sử dụng; thiết lập proxy của máy khách HTTP ở nơi khác không cấu hình chúng.

Nếu tích hợp thay đổi hành vi socket trên toàn cục, hãy xem lại phạm vi theo luồng của nó. Một khối quanh một lần truyền không thể cô lập các luồng khác khỏi thay đổi trạng thái dùng chung.

Nhà cung cấp có thể đưa ra một điểm cuối tĩnh, nhưng đó là tính năng dịch vụ chứ không phải yêu cầu chung của SOCKS. Ở nơi các kết nối riêng có thể dùng lối ra khác nhau, hãy kiểm tra cách máy chủ FTP liên kết kết nối dữ liệu của nó với kết nối điều khiển đã xác thực.

Ghi lại giai đoạn đã đạt, chế độ và điểm cuối dữ liệu, sau khi bỏ thông tin xác thực. Điều này phân biệt đường dữ liệu bị chặn với lỗi đăng nhập proxy.

Bài viết liên quan