GithubHelp home page GithubHelp logo

proxy support about goftp HOT 7 OPEN

secsy avatar secsy commented on June 20, 2024
proxy support

from goftp.

Comments (7)

muirdm avatar muirdm commented on June 20, 2024

I'm not too familiar with FTP proxies. Can you just connect directly to the proxy? It seems like most proxies accept the remote server after an @ sign in the username, e.g. a username of [email protected].

from goftp.

rpetti avatar rpetti commented on June 20, 2024

FTP proxies are just HTTP Connect proxies. Usually you define it by setting the FTP_PROXY environment variable, which is analogous to the HTTP_PROXY and HTTPS_PROXY env vars.

They aren't FTP servers themselves, so connecting directly to it with an FTP client won't work.

from goftp.

muirdm avatar muirdm commented on June 20, 2024

You are saying it proxies FTP over HTTP? When I googled for FTP proxy, all I saw are actual FTP proxy servers where you connect to them using FTP, and they proxy to other FTP servers. Do you have a link describing how your FTP proxy works?

from goftp.

rpetti avatar rpetti commented on June 20, 2024

It's a standard web proxy that you would find at most companies:
https://en.wikipedia.org/wiki/Proxy_server#Web_proxy_servers

Our specific one is Squid, and we need to use it in order to access resources on the internet.

Essentially, an application will read the proxy configuration from the environment or elsewhere, then instead of connecting to the target server directly it will open a tunnel through the proxy using an HTTP CONNECT request. After the connection is established it's used by the application as normal.

Here's an example configuration from filezilla:
https://www.youngzsoft.net/ccproxy/faq_66.htm

Here's an example for lftp:
https://www.librebyte.net/en/ftp/lftp-behind-a-proxy/

I was looking for similar instructions for this client, but after examining the code it doesn't appear to support proxies at all...

from goftp.

muirdm avatar muirdm commented on June 20, 2024

Thanks!

I have no plans to support proxies like this in goftp. It seems like they are various kinds of proxies and they fall outside the purvey of ftp itself.

We could add the ability to create an ftp connection given a generic net.Conn so the user's code could set up the proxy connection and pass that to goftp. Would that solve your problem?

from goftp.

rpetti avatar rpetti commented on June 20, 2024

That would work for any other protocol except FTP. Without knowing what ports the ftp session needs for data transfers, there's no way to create the correct connections ahead of time.

I'm going to see if I can wrap our app in something that can catch connections, or see if there's a way to forward all traffic through the proxy using redsocks and iptables... Failing that I guess we'll just need to rewrite our app using something else.

Thanks anyways!

from goftp.

machship-mm avatar machship-mm commented on June 20, 2024

I have implemented this on my fork of the repo and created a pull request #55

I have used this in conjunction with mwitkow/go-http-dialer to be able to make connections via squid proxy.

from goftp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.