mirror of
https://github.com/p1neappleXpress/OpenFlux.git
synced 2026-10-02 05:04:39 +08:00
Две крупные вещи плюс их обвязка.
== cups.online как транспорт ==
Пакет transport/cupsonline/ перенесён из upstream/main дословно (с их
тестами на фейковом cups-сервере). Нода без --url создаёт комнаты на
interview.cups.online и печатает base64-строку, которую клиент подаёт
как --url; трафик прячется в сообщениях комнаты. Проведён в main.go через
buildMuxTransport — получает adaptive/batch-кодек (совместимость с
batched-only upstream) и мультиплекс, как остальные doc-транспорты.
Зависимость: не хватало utils.Infof (always-on лог, в отличие от Debugf) —
добавлен по образцу upstream.
KDF-контекст для cups (фикс из ветки hotfix bc9ada0). Список комнат
создаётся НОДОЙ при старте и раздаётся клиентам как URL, поэтому нода его
заранее не знает и берёт контекст "http://#", а клиент вывел бы его из
списка — разные ключи, рукопожатия нет, снаружи как таймаут. Теперь URL
cupsonline трактуется как отсутствующий (в main.go на call-site и в
iOS-мосте wrapEncryption), ровно как upstream-нода. Проверено: cups →
"http://#", yandex → URL документа не затронут.
iOS. Транспорт был в Go-lib, но недостижим из приложения: у мостов свой
switch. Добавлен case "cupsonline" в оба — export_ios.go (локальный SOCKS)
и export_ios_packet.go (System VPN). В Swift: TransportKind.cupsonline
(«Cups.online»), поле ввода строки комнат в редакторе профиля, иконка,
закрыты все исчерпывающие switch по транспорту. Ключ шифрования идёт как у
прочих — из Keychain по профилю. e2e по CLI подтверждён (200 через cups).
== Мастер установки узла ==
Порт из PR #110 (meepo161): установка узла с десктопа/телефона по SSH.
- provision/ — SSH-провижининг с пиннингом хоста (provision.go, pin.go);
- node_wizard.go — режим --node-wizard: ядро говорит с приложением по
stdin/stdout построчным JSON, делает SSH-работу, проверяет документ
канала и собирает openflux://-ссылку. Секреты идут только через stdin,
не в лог и не в командную строку. Проверяется в main.go до разбора
флагов;
- node_wizard_exitnode.go — под тегом exitnode мастер из сборки
исключён (иначе пиннинг-инсталлер пинил бы бинарь, в котором сам лежит);
- deploy/node-install.sh + docker-compose для vyandex client/exit.
Мастеру нужна проверка документа Volga. Вместо переноса разошедшегося
auth-слоя из форка добавлен аддитивный шим CheckVolgaDocument поверх
нашего authorize() в transport/yandex/vyandex.go: успешная авторизация =
редактор открылся = канал годен; капча/логин отдаются как
ErrCaptchaRequired/ErrLoginRequired.
17 lines
414 B
Go
17 lines
414 B
Go
//go:build exitnode
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
)
|
|
|
|
// The exit-node build (deploy/node-install.sh installs it) leaves the
|
|
// desktop wizard out: its pinned installer would otherwise be part of the
|
|
// very binary whose hashes that installer pins.
|
|
func runNodeWizard(_ io.Reader, out io.Writer) int {
|
|
fmt.Fprintln(out, `{"ok":false,"error":"--node-wizard is not part of the exit-node build"}`)
|
|
return 2
|
|
}
|