Skip to content

plumbicon/godwit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Godwit

❗НАМ НУЖНЫ ДЕНЬГИ НА ПУБЛИКАЦИЮ В TESTFLIGHT❗

ETH20 (USDT, USDC, ETH, etc): 0xb0292E226b140F3CC14B83777a09dF6d33Bc8613

BTC: bc1qxj5cxnkeqj3rmhaydj8cfnz7frstl3p6dac7zw

❗НАМ НУЖНЫ ДЕНЬГИ НА ПУБЛИКАЦИЮ В TESTFLIGHT❗

Image Image

macOS/iOS-клиент Godwit для olcRTC.

Требования

  • macOS 13 или новее.
  • Go.
  • Xcode или Command Line Tools для macOS/SwiftPM-сборок.
  • Полный Xcode с iOS SDK для iOS-сборок.
  • gomobile.
  • xcodegen, если нужно пересоздавать apple/Godwit.xcodeproj.
  • Sideloadly, если нужно установить неподписанный local-SOCKS IPA на iPhone.

Если Xcode только что установлен:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -license accept

Сборка

Кодовая база OlcRTC поставляется отдельно и не хранится внутри этого репозитория. Для скриптов, которые собирают Go CLI или Mobile.xcframework, передайте путь к внешнему checkout:

./apple/Scripts/build-xcframework.sh --olcrtc-root /path/to/olcrtc

То же можно задавать через переменную окружения:

OLCRTC_REPO_ROOT=/path/to/olcrtc ./apple/Scripts/build-xcframework.sh

Если запускается цепочка команд через &&, переменную нужно экспортировать заранее или передавать флаг каждому скрипту:

export OLCRTC_REPO_ROOT=/path/to/olcrtc
./apple/Scripts/build-macos-app.sh && ./apple/Scripts/build-ios-unsigned-local-ipa.sh

Сборка неподписанного iOS-клиента

Неподписанная сборка предназначена для local SOCKS режима на реальном iPhone без Network Extension entitlement:

./apple/Scripts/build-ios-unsigned-local-ipa.sh --olcrtc-root /path/to/olcrtc

Результат:

apple/.build/ios-unsigned-local/Godwit-unsigned-local.ipa

Этот IPA собирается с LOCAL_SOCKS_ONLY: в нем остается local SOCKS proxy, но удаляется Packet Tunnel extension. Поэтому приложение не поднимает системный VPN и не маршрутизирует весь iOS-трафик само. Системный трафик нужно направлять в локальный прокси через стороннее приложение, например Happ, указав SOCKS5 127.0.0.1:<port>.

При старте local SOCKS на iOS в Events должно появиться:

iOS background runtime is active for local SOCKS.

Установка через Sideloadly:

  1. Установить Sideloadly с официального сайта: https://sideloadly.io/.

  2. Подключить iPhone к Mac по USB и нажать Trust/Доверять на телефоне, если iOS спросит.

  3. Собрать IPA:

    ./apple/Scripts/build-ios-unsigned-local-ipa.sh
  4. Открыть Sideloadly.

  5. Перетащить файл apple/.build/ios-unsigned-local/Godwit-unsigned-local.ipa в окно Sideloadly или выбрать его через кнопку IPA.

  6. Выбрать подключенный iPhone в списке устройств.

  7. Ввести Apple ID. Для local-SOCKS IPA подходит обычный бесплатный Apple ID. Лучше использовать отдельный Apple ID для sideloading, а не основной.

  8. Нажать Start и дождаться завершения установки.

  9. На iPhone открыть Settings -> General -> VPN & Device Management и доверить developer profile, связанный с использованным Apple ID.

  10. На iOS 16 и новее включить Developer Mode: Settings -> Privacy & Security -> Developer Mode, затем перезагрузить устройство, если iOS попросит.

  11. Запустить Godwit на iPhone, выбрать профиль и нажать Start.

  12. В Happ или другом приложении для маршрутизации трафика указать SOCKS5 proxy 127.0.0.1:<port>.

Важно:

  • Бесплатный Apple ID обычно требует периодической переустановки/обновления sideloaded app.
  • Неподписанный local-SOCKS IPA не содержит Packet Tunnel extension.
  • Если нужен системный VPN/Packet Tunnel без стороннего маршрутизатора, нужна подписанная сборка с правильными Apple Developer entitlements.

Сборка macOS-клиента

Из корня репозитория:

./apple/Scripts/build-macos-app.sh --olcrtc-root /path/to/olcrtc
open ./apple/.build/Godwit.app

Скрипт собирает:

  • apple/.build/olcrtc-macos: Go CLI helper.
  • apple/.build/Godwit.app: запускаемый macOS app bundle.

При успешном старте в Events должно появиться:

SOCKS proxy is ready at 127.0.0.1:<port>.
System SOCKS proxy enabled for <service> on 127.0.0.1:<port>.

Если приложение было принудительно закрыто, пока системный SOCKS-прокси macOS включен:

networksetup -setsocksfirewallproxystate "Wi-Fi" off

Сборка подписанного iOS-клиента

Подписанная сборка нужна для полной VPN/Packet Tunnel версии. Для нее нужен Apple Developer Team и provisioning profiles с Network Extension packet-tunnel-provider entitlement для обоих iOS targets:

  • OlcRTCClient iOS
  • OlcRTCPacketTunnel

IPA для разработки:

DEVELOPMENT_TEAM=ABCDE12345 \
EXPORT_METHOD=development \
./apple/Scripts/build-ios-ipa.sh --olcrtc-root /path/to/olcrtc

Ad-hoc IPA:

DEVELOPMENT_TEAM=ABCDE12345 \
EXPORT_METHOD=ad-hoc \
./apple/Scripts/build-ios-ipa.sh --olcrtc-root /path/to/olcrtc

Поддерживаемые значения EXPORT_METHOD:

  • development
  • ad-hoc
  • app-store
  • enterprise

Скрипт пишет архив и экспортированный IPA сюда:

apple/.build/ios-archive/
apple/.build/ios-ipa/

Для тестирования с реального iPhone через Xcode:

open ./apple/Godwit.xcodeproj

В Xcode нужно настроить signing для обоих targets:

  • OlcRTCClient iOS
  • OlcRTCPacketTunnel

Используемые bundle IDs:

community.openlibre.olcrtc.ios
community.openlibre.olcrtc.ios.PacketTunnel

Если bundle IDs меняются, extension bundle ID должен начинаться с bundle ID основного приложения.

Дополнительно

  • Детали структуры проекта, XcodeGen и ограничения: docs/dev.md.
  • Формат профилей и подписок описан в docs/sub.md и docs/uri.md внешнего репозитория OlcRTC.

About

Клиент над OlcRTC для macOS и iOS

Resources

License

Stars

Watchers

Forks

Contributors