xtproxy is an FTP/TFTP/HTTP file server proxy.
Originally, xtproxy was intended to serve image files for network switches.
It helps when:
- You can't spin up a file server in a directly connected network.
- Files are too big to serve from the local file system.
- TFTP from a remote source is too slow and unreliable, but clients are too limited for FTP/HTTP.
- Clients are smart enough for FTP, but your firewall is not, or you have no control over it.
- You have an IPv6-only segment, but the client does not support it without an upgrade.
- Serves files simultaneously with FTP/TFTP/HTTP/Webdav.
- Sources files from S3 bucket/HTTP/Webdav file share/local directory.
- Can combine multiple sources of files.
- Supports IPv4/IPv6.
- No client authentication.
- No directory listing.
- Limited testing.
- No upload capability.
export XTPROXY_S3_CREDENTIALS="ACCESSKEYID:secretaccesskeyvalue"
./xtproxy "s3://s3.amazonaws.com/eu-north-1/myownbucket /"
export XTPROXY_S3_CREDENTIALS="ACCESSKEYID:secretaccesskeyvalue"
./xtproxy \
"s3://s3.amazonaws.com/eu-north-1/myownbucket /" \
"file:///var/spool/localfileshare /localfileshare"
Sometimes its useful to have an additional proxy layer. It can be achived by daisy chaining two instances via webdav.
# serves data from s3 and runs in aws
user@aws-vm1:~$ xtproxy "s3://s3.amazonaws.com/eu-north-1/myownbucket /"
# runs on remote site and serves data from aws-vm proxy
user@remotesite1:~$ xtproxy "webdav://aws-vm1.example.com/.webdav /"