Make README more friendly

This commit is contained in:
9seconds
2018-06-19 10:55:44 +03:00
parent 0e7521b7e4
commit 1ab5139705
+25 -99
View File
@@ -8,109 +8,35 @@ Bullshit-free MTPROTO proxy for Telegram
# Rationale # Rationale
Telegram supports proxies and proxies act as a shield for censorship There are several available proxies for Telegram MTPROTO available. Here
and blocking actions of different goverments. At the moment of writing, are the most notable:
Telegram supports 2 types of proxies:
1. SOCKS5 * [Official](https://github.com/TelegramMessenger/MTProxy)
2. MTPROTO * [Python](https://github.com/alexbers/mtprotoproxy)
* [Erlang](https://github.com/seriyps/mtproto_proxy)
* [JS](https://github.com/FreedomPrevails/JSMTProxy)
SOCKS5 proxy is general SOCKS proxy as defined in Almost all of them follow the way how official proxy was build. This
[RFC1928](https://www.ietf.org/rfc/rfc1928.txt). The problem is that includes support of multiple secrets, support of promoted channels etc.
by default SOCKS5 proxy has an access to the whole internet so a lot
of people tend to hide them "just for a case". It is possible to setup
SOCKS5 proxy so it is able to access just some IPs/CIDRs but, you know,
yeah.
MTPROTO proxy is a native Telegram proxy. It has several advantages: mtg is an implementation in golang which is intended to be:
1. Traffic is obfuscated by AES-CTR; * **Lightweight**
2. It allows connections only to Telegram services; It has to consume as less resources as possible but not by losing
3. It gives proxy maintainer an ability to promote its channel. maintainability.
* **Easily deployable**
But in reality, MTPROTO have 2 advantages (from my biased view): I strongly believe that Telegram proxies should follow the way of
ShadowSocks: promoted channels is a strange way of doing business
1. Obfuscation I suppose. I think the only viable way is to have a proxy with
2. Simplify connection chain. minimum configuration which should work everywhere.
* **Single secret**
Here is how it looks like to work with SOCKS5 proxy: I think that multiple secrets solves no problems and just complexify
software. I also believe that in case of throwout proxies, this feature
``` is useless luxury.
Client -> SOCKS -> MTPROTO -> Telegram * **Minimum docker image size**
``` Official image is less than 2 megabytes. Literally.
* **No management WebUI**
SOCKS5 connects to IPs of Telegram proxies. AFAIK this is because This is an implementation of simple lightweight proxy. I won't do that.
Telegram wants us to avoid censorship and regulations.
What MTPROTO proxies do:
```
Client -> MTPROTO -> Telegram
```
And promoted channels. I do not tend to use them because mtg was created
for slightly other way of using it but yeah. People want moneys.
There are a number of unofficial proxies and one
[OFFICIAL](https://github.com/TelegramMessenger/MTProxy), so why bother?
<start-biased-rant>
I'm a big fan of [ShadowSocks](http://www.shadowsocks.org/en/index.html)
project and I like how people use it. The majority of SS proxies are
disposable ones which are blocked/unblocked frequently. There are some
public lists of them in Internet so if one proxy has stopped to work,
you throw it out and use another one.
Some SS proxies are long-living. This is because they are not public and
intended to be used only by limited number of people. And single secret
is fine there.
What I do not get about official and some unofficial implementation is
why they decided to support multiple secrets? I mean, WTF with all of
you?
1. MTPROTO obfuscation (called obfuscated2) does not allow to verify
client easily. You need to decrypt the frame for every secret. So, you
need a number of workers which will constantly try to crack initial
handshake frames with a list of secrets. That does not scale and will
never be.
2. Why do you need a multiple secrets? Which task are you trying to
solve with them? Valid secret means only 1 thing: access to Telegram. A
binary thing. Absurd and rudimentarty access control.
Okay, you want to revoke an access, thats fine. Will you ssh to the
machine and restart the container? Do you want to have API for that? Web
UI? Maybe store secrets in database and collect statisitcs per each?
With all respect, this is idiotic thing. Guysngals, this is a proxy.
Gateway to Telegram. This is not a webservice, or SASS or name that
shit. This is disposable stuff. Blocked? Fine, go to the next one. Just
look at ShadowSocks. There is multiple user implementation available,
with control you want. Does anyone gives a flying fuck about it?
> Those Who Do Not Learn History Are Doomed To Repeat It
- George Santayana
What I want to have?
1. Minimal tool for me and my friends (which are not all my FB friends but
a limited number of close friends).
2. Minimum viable configuration.
3. Single artifact runnable on every platform (not always Docker, some
environments may have no Docker)
4. Smallest Docker image
5. Lightweight
6. Have as less management as possible.
</end-biased-rant>
So, please do not ask for:
1. Multiple users/secrets
2. Web UI
3. Detailed statistics/histograms etc.
# How to build # How to build