MCPcopy Index your code
hub / github.com/MagiTrickle/MagiTrickle

github.com/MagiTrickle/MagiTrickle @0.7.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.7.0 ↗ · + Follow
685 symbols 2,102 edges 126 files 80 documented · 12%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

MagiTrickle logo

MagiTrickle

Назначение

MagiTrickle (произносится как Мэджитрикл) – утилита для точечной маршрутизации сетевого трафика по заданным доменным именам. Представляет собой установочный пакет, устанавливаемый в дополнение к операционной системе маршрутизатора.

MagiTrickle Screenshot

Принцип работы основан на подмене основного DNS-сервера через промежуточный компонент без его отключения. Это позволяет перехватывать входящие DNS-запросы, кешировать ответы и сопоставлять IP-адреса с доменными именами. Благодаря этому становится возможной маршрутизация трафика без необходимости очистки DNS-кэша на стороне клиентов. Очистка кэша требуется только при запуске или перезапуске сервиса MagiTrickle, поскольку в этот момент кэш ещё не прогрет, и маршрутизация невозможна до первого запроса к нужному домену.

Установка (Entware)

  1. Добавление репозитория в пакетный менеджер:
wget -qO- http://bin.magitrickle.dev/packages/add_repo.sh | sh
  1. Установка пакета:
opkg update && opkg install magitrickle
  1. Запуск пакета:
/opt/etc/init.d/S99magitrickle start

Дальнейшее обновление можно осуществлять с помощью:

opkg update && opkg install magitrickle
/opt/etc/init.d/S99magitrickle restart

Установка (OpenWrt >= 25.12.X)

  1. Добавление репозитория в пакетный менеджер:
wget -qO- http://bin.magitrickle.dev/packages/add_repo.sh | sh
  1. Установка пакета:
apk update && apk add magitrickle
  1. Запуск пакета:
service magitrickle start

Дальнейшее обновление можно осуществлять с помощью:

apk update && apk add magitrickle
service magitrickle restart

Установка (OpenWrt <= 24.10.X)

  1. Добавление репозитория в пакетный менеджер:
wget -qO- http://bin.magitrickle.dev/packages/add_repo.sh | sh
  1. Установка пакета:
opkg update && opkg install magitrickle
  1. Запуск пакета:
service magitrickle start

Дальнейшее обновление можно осуществлять с помощью:

opkg update && opkg install magitrickle
service magitrickle restart

Описание типов правил

Namespace (Именное пространство)

Охватывает указанный домен и все его поддомены.

Например, при записи example.com будут обрабатываться:

✅ example.com
✅ sub.example.com
✅ sub.sub.example.com
❌ anotherexample.com
❌ example.net

Wildcard (Подстановочный шаблон)

Шаблон с * и ? — позволяет задавать гибкие условия: - * — любое количество любых символов - ? — ровно один любой символ

Например, при записи *example.com будут обрабатываться:

✅ example.com
✅ sub.example.com
✅ sub.sub.example.com
✅ anotherexample.com
❌ example.net

Domain (Точный домен)

Правило применяется только к строго указанному домену, без поддоменов.

Например, при записи sub.example.com будут обрабатываться:

❌ example.com
✅ sub.example.com
❌ sub.sub.example.com
❌ anotherexample.com
❌ example.net

RegExp (Регулярное выражение)

Для опытных пользователей. Используется парсер dlclark/regexp2.

Например, при записи ^[a-z]*example\.com$ будут обрабатываться:

✅ example.com
❌ sub.example.com
❌ sub.sub.example.com
✅ anotherexample.com
❌ example.net

Поддержка

Extension points exported contracts — how you extend this code

Executable (Interface)
(no doc) [2 implementers]
src/backend/utils/iptables/executable.go
WindowEventMap (Interface)
(no doc)
src/frontend/src/types.ts
Main (Interface)
(no doc) [1 implementers]
src/backend/app/magitrickle.go
RuleSet (Interface)
(no doc) [1 implementers]
src/backend/app/magitrickle.go

Core symbols most depended-on inside this repo

Write
called by 54
src/backend/api/auth/crypt.go
Get
called by 43
src/backend/utils/dnsMITMProxy/connPool.go
String
called by 37
src/backend/utils/intID/id.go
isValidNamespace
called by 30
src/frontend/src/utils/rule-validators.ts
Close
called by 28
src/backend/utils/dnsMITMProxy/mitm.go
isValidDomain
called by 26
src/frontend/src/utils/rule-validators.ts
isValidWildcard
called by 25
src/frontend/src/utils/rule-validators.ts
AddAlias
called by 25
src/backend/utils/recordsCache/records.go

Shape

Method 316
Function 270
Struct 77
Class 10
Interface 6
TypeAlias 6

Languages

Go68%
TypeScript32%

Modules by API surface

src/frontend/src/modules/groups/groups.svelte.ts44 symbols
src/backend/app/magitrickle.go34 symbols
src/backend/rule_set.go30 symbols
src/frontend/src/modules/subscriptions/subscriptions.svelte.ts23 symbols
src/frontend/src/utils/change-tracker.svelte.ts22 symbols
src/backend/utils/recordsCache/records_test.go20 symbols
src/backend/utils/netfilterTools/ipset.go19 symbols
src/backend/api/v1/handlers.go18 symbols
src/frontend/tests/e2e/pages/GroupsPage.ts17 symbols
src/frontend/src/lib/dnd/draggable.ts16 symbols
src/backend/utils/netfilterTools/ipset-to-link.go16 symbols
src/backend/utils/iptables/iptables_test.go16 symbols

For agents

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

⬇ download graph artifact

Ask about this repo answers extend the page