From 1feb8e5fc72430481432e3e1d623dc56336c260d Mon Sep 17 00:00:00 2001 From: Alexander Bersenev Date: Fri, 20 Sep 2019 17:52:30 +0500 Subject: [PATCH] export proxy links as metrics --- mtprotoproxy.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/mtprotoproxy.py b/mtprotoproxy.py index 6cbfcb4..529e7ec 100755 --- a/mtprotoproxy.py +++ b/mtprotoproxy.py @@ -87,6 +87,7 @@ last_clients_with_time_skew = {} last_clients_with_first_pkt_error = collections.Counter() last_clients_with_same_handshake = collections.Counter() proxy_start_time = 0 +proxy_links = [] config = {} @@ -1603,6 +1604,7 @@ async def handle_metrics(reader, writer): global user_stats global my_ip_info global proxy_start_time + global proxy_links global last_clients_with_time_skew global last_clients_with_first_pkt_error global last_clients_with_same_handshake @@ -1621,6 +1623,11 @@ async def handle_metrics(reader, writer): metrics.append(["handshake_timeouts", "counter", "number of timed out handshakes", stats["handshake_timeouts"]]) + for link in proxy_links: + link_as_metric = link.copy() + link_as_metric["val"] = 1 + metrics.append(["proxy_link_info", "counter", "the info about proxy", link_as_metric]) + user_metrics_desc = [ ["user_connects", "counter", "user connects", "connects"], ["user_connects_curr", "gauge", "current user connects", "curr_connects"], @@ -1924,6 +1931,7 @@ def init_ip_info(): def print_tg_info(): global my_ip_info + global proxy_links print_default_warning = False @@ -1937,17 +1945,23 @@ def print_tg_info(): if not ip_addrs: ip_addrs = ["YOUR_IP"] + proxy_links = [] + for user, secret in sorted(config.USERS.items(), key=lambda x: x[0]): for ip in ip_addrs: if not config.TLS_ONLY: if not config.SECURE_ONLY: params = {"server": ip, "port": config.PORT, "secret": secret} params_encodeded = urllib.parse.urlencode(params, safe=':') - print("{}: tg://proxy?{}".format(user, params_encodeded), flush=True) + classic_link = "tg://proxy?{}".format(params_encodeded) + proxy_links.append({"user": user, "link": classic_link}) + print("{}: {}".format(user, classic_link), flush=True) params = {"server": ip, "port": config.PORT, "secret": "dd" + secret} params_encodeded = urllib.parse.urlencode(params, safe=':') - print("{}: tg://proxy?{}".format(user, params_encodeded), flush=True) + dd_link = "tg://proxy?{}".format(params_encodeded) + proxy_links.append({"user": user, "link": dd_link}) + print("{}: {}".format(user, dd_link), flush=True) tls_secret = "ee" + secret + config.TLS_DOMAIN.encode().hex() # the base64 links is buggy on ios @@ -1955,7 +1969,9 @@ def print_tg_info(): # tls_secret_base64 = base64.urlsafe_b64encode(tls_secret) params = {"server": ip, "port": config.PORT, "secret": tls_secret} params_encodeded = urllib.parse.urlencode(params, safe=':') - print("{}: tg://proxy?{} (new)".format(user, params_encodeded), flush=True) + tls_link = "tg://proxy?{}".format(params_encodeded) + proxy_links.append({"user": user, "link": tls_link}) + print("{}: {} (new)".format(user, tls_link), flush=True) if secret in ["00000000000000000000000000000000", "0123456789abcdef0123456789abcdef"]: msg = "The default secret {} is used, this is not recommended".format(secret)