init
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package faketls
|
||||
|
||||
// SNIDomain returns hostname bytes for TLS SNI from the raw ee-secret domain suffix.
|
||||
//
|
||||
// В ссылке tg:// после 16-байтного ключа часто идёт «хвост» домена: один служебный байт (часто 0xd0)
|
||||
// и дальше ASCII hostname в hex (например …d0632e61… → "c.api.stepa.one").
|
||||
// В extension server_name нужно передавать только hostname в ASCII, иначе прокси обрывает сессию.
|
||||
func SNIDomain(raw []byte) []byte {
|
||||
if len(raw) >= 2 {
|
||||
// Типичный префикс Telegram для ASCII-имени после ключа
|
||||
if raw[0] == 0xd0 && raw[1] >= 0x20 && raw[1] < 0x7f {
|
||||
return raw[1:]
|
||||
}
|
||||
}
|
||||
// Fallback: пропускаем ведущие не-hostname байты до первой буквы/цифры/точки
|
||||
i := 0
|
||||
for i < len(raw) {
|
||||
b := raw[i]
|
||||
if (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || (b >= '0' && b <= '9') {
|
||||
break
|
||||
}
|
||||
if b == '.' || b == '-' {
|
||||
break
|
||||
}
|
||||
i++
|
||||
}
|
||||
if i >= len(raw) {
|
||||
return raw
|
||||
}
|
||||
return raw[i:]
|
||||
}
|
||||
Reference in New Issue
Block a user