mirror of
https://codeberg.org/YGGverse/psocks.git
synced 2026-03-31 16:35:28 +00:00
2.1 KiB
2.1 KiB
psocks
Filtering asynchronous SOCKS5 (TCP/UDP) proxy server based on fast-socks5, featuring allowlist-based access control that drops everything except what is allowed by the user. Includes JSON/API based on Rocket framework.
Goals
- Ad/tracking protection (before sending a DNS request)
- Reduce CPU usage by filtering extra SSL traffic on background
Roadmap
- SOCKS5 (TCP/UDP) server
- Web JSON/API
- Web UI
Install
cargo install psocks
Usage
RUST_LOG=trace psokcs -c=/path/to/config.toml no-auth
- set
socks5://127.0.0.1:1080proxy in your application - use http://127.0.0.1:8010 for API:
/api/totals- blocking summary/api/list/enable/<ID>- enable all parsed rules of given list ID ([list.ID]in your config)/api/list/disable/<ID>- disable all parsed rules of given list ID ([list.ID]in your config)
Allow list example
# /path/to/allow.txt
// exact match
duckduckgo.com
// google.com with subdomains
.google.com
// IP
1.2.3.4
- see also:
example/listdirectory or personal asset by @ps
systemd
git clone https://codeberg.org/yggverse/psocks.git
cd psocks
cargo build --release --locked
sudo install target/release/psocks /usr/local/bin
sudo cp example/config.toml /etc/psocks.toml
sudo useradd -s /usr/sbin/nologin -Mr psocks
sudo mkdir /var/log/psocks && sudo chown psocks:psocks /var/log/psocks
#/etc/systemd/system/psocks.service
[Unit]
After=network-online.target
Wants=network-online.target
[Service]
User=psocks
Group=psocks
ExecStart=/usr/local/bin/psocks -c=/etc/psocks.toml no-auth
Restart=always
Environment="RUST_LOG=psocks=warn"
Environment="NO_COLOR=1"
StandardOutput=file:///var/log/psocks/debug.log
StandardError=file:///var/log/psocks/error.log
[Install]
WantedBy=multi-user.target
sudo systemctl restart psockssudo systemctl enable psockssudo systemctl status psocks