Skip to content

Instantly share code, notes, and snippets.

View Snawoot's full-sized avatar

Snawoot

  • Odessa, Ukraine
View GitHub Profile
View xray_setup_guide.md

Сегодня 12 августа 2023 года

Метод, описанный в данной статье, создан для борьбы с китайским файерволом, который, начиная с 2019 года, учился блокировать зашифрованный трафик (протокол Shadowsocks) на основе анализа длины первого пакета соединения и энтропию его полезной нагрузки. Более подробно про этот метод блокировки описан в статье Роскомсвободы: https://roskomsvoboda.org/post/chinese-firewall/.

Метод XTLS-Reality отличается от других методов обхода блокировки тем, что определение свой/чужой сервером Xray происходит на этапе так называемого TLS-рукопожатия, когда клиент и сервер обмениваются сообщениями ClientHello. Подробнее про TLS-рукопожатия написано здесь: https://tproger.ru/articles/tls-handshake-explained/. Так вот, когда цензор стучится в этот сервер и пытается методом active probing проверить сервер, последний отправляет цензора на совершенно реальный и безобидный сайт, поддерживающий TLS1.3, и цензол получает настоящие данные этого сайта.

Данный гайд написан новичком для новичков. Я в гайде

@Snawoot
Snawoot / exclude_routes.sh
Created August 29, 2023 11:29
exclude IP address from wireguard routes
View exclude_routes.sh
{ ipcalc -j -d 0.0.0.0-167.235.232.135 ; ipcalc -j -d 167.235.232.137-223.255.255.255 ; } | jq -r -s 'map(.DEAGGREGATEDNETWORK) | flatten | join(",")'
0.0.0.0/1,128.0.0.0/3,160.0.0.0/6,164.0.0.0/7,166.0.0.0/8,167.0.0.0/9,167.128.0.0/10,167.192.0.0/11,167.224.0.0/13,167.232.0.0/15,167.234.0.0/16,167.235.0.0/17,167.235.128.0/18,167.235.192.0/19,167.235.224.0/21,167.235.232.0/25,167.235.232.128/29,167.235.232.137/32,167.235.232.138/31,167.235.232.140/30,167.235.232.144/28,167.235.232.160/27,167.235.232.192/26,167.235.233.0/24,167.235.234.0/23,167.235.236.0/22,167.235.240.0/20,167.236.0.0/14,167.240.0.0/12,168.0.0.0/5,176.0.0.0/4,192.0.0.0/3
View poor_mans_gtm.md

Poor Man's Global Traffic Manager

Sometimes we need to add redundancy to some service or server which happen to be a public-facing entry point of our infrastructure. For example, imagine we want to add a high availability pair for a load balancer which sits on the edge of network and forwards traffic to alive backend servers.

                                             ┌─────────────┐
                                             │             │
                                      ┌─────►│  Backend 1  │
                                      │      │             │
                                      │      └─────────────┘
@Snawoot
Snawoot / remote.conf
Created July 10, 2022 13:08
syslog-ng config for nice remote logging. place it into /etc/syslog-ng/conf.d/remote.conf
View remote.conf
template remote {
template("${ISODATE} ${LEVEL} ${MSGHDR}${MESSAGE}\n");
};
destination d_sorted {
file(
"/var/log/remote/${PROGRAM}/${C_YEAR}_${C_MONTH}_${C_DAY}_${C_HOUR}.log"
create-dirs(yes)
template(remote)
time_zone("UTC")
@Snawoot
Snawoot / tanos.sh
Last active August 23, 2022 04:22
Halves old logs
View tanos.sh
#!/bin/bash
set -euo pipefail
treshold=${HIGH_WATER_PCT:-85}
cleanup_dir=${DIR:-/var/log/remote/}
fraction=${DELETE_FRACTION:-0.5}
(
if ! flock -n 9 ; then
View filter.js
let genre_re = /Жанр:.*(adventure|приключен|quest|квест|пошагов|TBS|turn-based)/iu;
let neg_genre_re = /Жанр:.*(шутер|shooter|FPS|аниме|симулятор|ходь|RPG|ролев|платформер|platform|текстов|хоррор|horror|Survival|выжива|инди|indie|поиск предметов|аркада|arcade|Sandbox|песочница|музыка)/iu;
let neg_title_re = /(remaster|reloaded|в разработке|\[(Air|Flash)\]|\bags\b)/iu;
let year_re = /Год.*:.*(\d{4}).*/iu;
(function (elem) {
if (elem.Deleted == 1) return
if (elem.Title.match(neg_title_re)) return
let stripped = strip_bbcode(elem.Content)
if (stripped.match(neg_genre_re)) return
@Snawoot
Snawoot / discardd.py
Last active June 27, 2021 18:56
TCP discard daemon
View discardd.py
#!/usr/bin/env python3
import asyncio
class EchoServerProtocol(asyncio.Protocol):
def connection_made(self, transport):
self.transport = transport
def data_received(self, data):
pass
@Snawoot
Snawoot / rutracker-topic-watch.gs
Created June 14, 2021 22:06
Скрипт Google App Script для получения уведомлений о новых сообщений в темах на рутрекере (rutracker.org) на почту
View rutracker-topic-watch.gs
const TRACKED_TOPICS = [
6027310,
6046402,
5887367,
5440705,
5591249,
];
const CONTENT_CHARSET = 'cp1251';
const TOPIC_URL_TMPL = 'https://rutracker.org/forum/viewtopic.php?t=%d&start=%d';
View downgrade-digest.py
#!/usr/bin/env python3
import ssl
import http.server
import socketserver
from http import HTTPStatus
class Handler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
self.send_response(HTTPStatus.UNAUTHORIZED)
@Snawoot
Snawoot / appscript.json
Created March 3, 2021 17:25
Google App Script for notifying about new releases of The Expanse series
View appscript.json
{
"timeZone": "Europe/Bucharest",
"dependencies": {
},
"oauthScopes": [
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/script.send_mail"
],