First, thanks for creating and sharing this. Second, I'd like to offer some thoughts related to what you said above ("some suggestions in detail are welcome"):
You describe it as:
1) An application-layer proxy
2) Which can be controlled by an API
The README and the Swagger API docs do a reasonable job of explaining #2. But it doesn't include much about #1.
First-time visitors might find it helpful if you started off by explaining the basics:
- What are some situation in which you might want to use this?
- What was your motivation for creating this? (What were you using before, and what was missing that made you want something different?)
- An example of how to set it up for a simple use case (not just how to install pichi, but how to point the other software to it (e.g. what protocol do clients use to talk to Pichi?)
For example, let's say I install Pichi, and then use the API to point it to several SS servers. What do I do next? How do connect my web browser to Pichi so that the traffic goes via those servers?
Not similar to haproxy, which works at the transport layer, while pichi works at application layer. I've not really understood what 'redirect' means. Yes if you meant acting as an HTTP proxy.
1. much lower performance than HAProxy;
2. there is no direct design for white/black lists, which has to be setup mannually and carefully;
3. only IP range, domain name, country of IP, regex pattern of domain are supported, no URL yet;
4. no UDP support yet.