Jump to content

Recommended Posts

Posted (edited)

Телеграм публикует список подсетей на которых он работает.
https://core.telegram.org/resources/cidr.txt

 

Если на маршрутизаторе имеется VPN тоннель за границу, то можно добавить маршруты руками, но это не наш метод )
В интернете полно скриптов для ручного запуска.

Я немного автоматизировал данный процесс.
Скрипт по расписанию качает актуальный список, парсит его и добавляет маршруты IPv4, т.к. IPv6 я не использую.

Подробнее выложил в телеге https://t.me/xren_vsyakaya/187

 

Цитата

# Скрипт для загрузки и добавления маршрутов Telegram
# Автоматически обновляет список IPv4-сетей Telegram

:local url "https://core.telegram.org/resources/cidr.txt"
:local fileName "telegram-cidr.txt"
:local routeComment "Telega"
:local routeGateway "Здесь укажите ваш маршрут, например WG-01"

:log info "=== Загрузка списка сетей Telegram ==="

# Загрузка файла со списком сетей
/tool fetch url=$url mode=https dst-path=$fileName keep-result=yes check-certificate=no

# Проверка, что файл загрузился
:if ([:len [/file find name=$fileName]] > 0) do={
:local content [/file get $fileName contents]
:local line ""
:local count 0

:log info "Файл загружен, размер: $[/file get $fileName size] байт"

# Удаление старых маршрутов с комментарием "Telega"
/ip route
:foreach r in=[find where comment=$routeComment] do={
remove $r
}

# Парсинг файла посимвольно
:for i from=0 to=([:len $content] - 1) do={
:local ch [:pick $content $i ($i + 1)]

# Пропускаем символ возврата каретки (\r)
:if ($ch = "\r") do={
# Ничего не делаем
} else={
# Если встретили перевод строки (\n) - обрабатываем накопленную строку
:if ($ch = "\n") do={
:if ([:len $line] > 0) do={
# Проверяем, что это IPv4 (содержит . и /)
:if (([:find $line "."] != -1) && ([:find $line "/"] != -1)&&([:find $line "::/"] <=0) ) do={
:log info "Добавляю $line"
add dst-address=$line gateway=$routeGateway comment=$routeComment
:set count ($count + 1)
} else={
:log info "Исключаю IPv6 - $line***"
}
}
:set line ""
} else={
# Накопление символов для текущей строки
:set line ($line . $ch)
}
}
}

# Обработка последней строки (если файл не заканчивается на \n)
:if ([:len $line] > 0) do={
:if (([:find $line "."] != -1) && ([:find $line "/"] != -1)&&([:find $line "::/"] <=0) ) do={
add dst-address=$line gateway=$routeGateway comment=$routeComment
:set count ($count + 1)
}
}

# Удаление временного файла
/file remove $fileName

:log info "=== Добавлено маршрутов: $count ==="

} else={
:log error "Не удалось загрузить файл $fileName"
}

 

Edited by p9160ff

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...