MCPcopy Index your code
hub / github.com/LowderPlay/cheburcheck

github.com/LowderPlay/cheburcheck @v1.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.0 ↗ · + Follow
206 symbols 304 edges 40 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Cheburcheck Logo Cheburcheck.ru

Cheburcheck.ru — open-source сервис для проверки доменов и IP-адресов на наличие в списках блокировок Роскомнадзора и популярных заблокированных CDN-провайдеров.


О проекте

Этот сервис реализован на языке Rust с использованием веб-фреймворка Rocket.rs. Основная задача — проверять, заблокирован ли домен или IP-адрес, основываясь на актуальных данных из реестров Роскомнадзора и других источниках.


Технологии

  • Rust — язык программирования, на котором написан весь бекенд.
  • Rocket.rs — веб-фреймворк для построения HTTP API и серверной логики.
  • DoH резолвер Quad9 — для разрешения DNS-запросов используется DNS-over-HTTPS, что позволяет обойти локальные ограничения и получать актуальные данные.
  • SvelteKit — SSR-фронтенд, который запускается отдельным Node.js сервисом.
  • nginx — публичная точка входа, проксирует API в Rocket, а страницы в SvelteKit.
  • lucide — библиотека иконок, применяемая для визуального оформления интерфейса.

Как это работает

  1. Пользователь вводит домен или IP-адрес в форму на сайте.
  2. Сервер выполняет DNS-запрос через Quad9 DoH для получения актуальной информации.
  3. Полученный домен/IP проверяется на наличие в блокировочных списках через префиксные деревья.
  4. Результат возвращается через API и отображается SSR-фронтендом SvelteKit.

Списки

Для проверки используются списки 123jjck/cdn-ip-ranges, antifilter.download и antifilter.network.

Мы собираем собственные белые списки с помощью Cheburcheck Reporter.


Структура проекта

  • querying — модуль проверки сайтов по базам данных
  • reporterCheburcheck Reporter
  • reports — общий протокол для отправки отчетов
  • website — Rocket API и серверная логика
  • probeCheburcheck Probe
  • frontend — SvelteKit SSR-интерфейс

Запуск через Docker Compose

docker compose up --build

По умолчанию nginx слушает http://localhost:8080. Порт можно изменить через HTTP_PORT, например:

HTTP_PORT=80 docker compose up --build

Маршрутизация:

  • /api/v1/*, /agency/*, /whitelist/* идут в Rocket
  • остальные запросы идут в SvelteKit SSR

Вклад

Если хотите помочь с разработкой — открывайте issue или присылайте pull requests. Если хотите помочь финансово: - TON: UQAACsiwpGryjP-kqp4TJPAWpXytuB6M_puuO0Cg5zNvaSJW


Контакты

Для вопросов и обсуждений можно написать на support@cheburcheck.ru.

Extension points exported contracts — how you extend this code

Updatable (Interface)
(no doc) [3 implementers]
querying/src/updater.rs
ImportMetaEnv (Interface)
(no doc)
frontend/src/app.d.ts
ImportMeta (Interface)
(no doc)
frontend/src/app.d.ts
Heading (Interface)
(no doc)
frontend/src/lib/context/kb.svelte.ts

Core symbols most depended-on inside this repo

load
called by 8
querying/src/lists.rs
contains
called by 8
querying/src/lists.rs
fetch_db
called by 6
querying/src/updater.rs
add
called by 4
reporter/src/counter.rs
update
called by 4
querying/src/lists.rs
is_strict_majority
called by 4
website/src/api/probe.rs
sortPrefixes
called by 2
frontend/src/lib/api/check.ts
wait_for_connection
called by 2
probe/src/main.rs

Shape

Method 72
Function 68
Class 50
Enum 12
Interface 4

Languages

Rust87%
TypeScript13%

Modules by API surface

website/src/mqtt.rs19 symbols
querying/src/asn.rs16 symbols
querying/src/lists.rs15 symbols
probe/src/main.rs14 symbols
querying/src/lib.rs12 symbols
website/src/mqtt_auth.rs10 symbols
website/src/api/probe.rs9 symbols
reporter/src/main.rs9 symbols
querying/src/geoip.rs9 symbols
reports/src/probe.rs8 symbols
querying/src/target.rs7 symbols
querying/src/resolver.rs7 symbols

For agents

$ claude mcp add cheburcheck \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact