From 13187e8f6aa0086a8e2e9f460e59e9fd4945ce31 Mon Sep 17 00:00:00 2001 From: saphid <4596216+saphid@users.noreply.github.com> Date: Sun, 27 Sep 2026 11:18:15 +1000 Subject: [PATCH 01/19] iPhone and iPad app: the same features, served from the Frame An iPhone can't run Python or ssh, but the Frame can. The app (ios/, SwiftUI) connects with its own SSH key (Citadel), copies the server and helpers to ~/.cache/frame-control/ on the Frame once per version, starts ui/server.py there with FRAME_LOCAL=1 on the Frame's 127.0.0.1, and shows the page through an SSH tunnel. The server exits when the phone disconnects. Server: FRAME_LOCAL=1 puts ui/local-bin on PATH, whose ssh stand-in runs each `ssh frame COMMAND` locally (and serves as rsync's transport), so desktop and phone share one code path. Android display goes through podman exec there, as the Frame has no adb. FRAME_UI_KEY replaces the fixed X-Frame-UI value with a per-session key. Power actions take the Developer Mode password via sudo -S. --port 0 now prints the port it took. Page: a bottom tab bar and safe areas on phones, Play buttons visible on touch screens, saving through the share sheet, SSH/SFTP/Steam Link/remote desktop opening in their iOS apps, and a password dialog for power. App: pairing with the Developer Mode password once (never stored) or with a key the user adds; host key pinned on first use; plain-language connection errors with quiet retries; frame-control://install links; alerts and confirms. Co-Authored-By: Claude Opus 5.5 (1M context) --- .github/workflows/checks.yml | 16 +- README.md | 3 + docs/iphone.md | 73 +++ ios/.gitignore | 4 + ios/FrameControl.xcodeproj/project.pbxproj | 535 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/swiftpm/Package.resolved | 96 ++++ .../xcschemes/FrameControl.xcscheme | 116 ++++ ios/FrameControl/App/AppModel.swift | 212 +++++++ ios/FrameControl/App/FrameControlApp.swift | 34 ++ ios/FrameControl/App/InstallLink.swift | 27 + .../AccentColor.colorset/Contents.json | 4 + .../AppIcon.appiconset/Contents.json | 4 + .../AppIcon.appiconset/icon-1024.png | Bin 0 -> 194754 bytes .../AppIconImage.imageset/Contents.json | 1 + .../AppIconImage.imageset/icon.png | Bin 0 -> 194754 bytes .../Assets.xcassets/Contents.json | 1 + ios/FrameControl/Info.plist | 69 +++ ios/FrameControl/SSH/FrameLink.swift | 126 +++++ ios/FrameControl/SSH/HeadsetServer.swift | 143 +++++ ios/FrameControl/SSH/Keys.swift | 54 ++ ios/FrameControl/SSH/PortForwarder.swift | 113 ++++ ios/FrameControl/Views/RootView.swift | 70 +++ ios/FrameControl/Views/SetupView.swift | 82 +++ ios/FrameControl/Web/WebShell.swift | 187 ++++++ ios/FrameControlTests/FrameControlTests.swift | 54 ++ ios/project.yml | 76 +++ ios/scripts/icon-ios.svg | 30 + ios/scripts/make_frame_bundle.py | 52 ++ tests/test_server.py | 54 ++ ui/index.html | 161 +++++- ui/local-bin/ssh | 16 + ui/server.py | 73 ++- 33 files changed, 2459 insertions(+), 34 deletions(-) create mode 100644 docs/iphone.md create mode 100644 ios/.gitignore create mode 100644 ios/FrameControl.xcodeproj/project.pbxproj create mode 100644 ios/FrameControl.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/FrameControl.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 ios/FrameControl.xcodeproj/xcshareddata/xcschemes/FrameControl.xcscheme create mode 100644 ios/FrameControl/App/AppModel.swift create mode 100644 ios/FrameControl/App/FrameControlApp.swift create mode 100644 ios/FrameControl/App/InstallLink.swift create mode 100644 ios/FrameControl/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 ios/FrameControl/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/FrameControl/Assets.xcassets/AppIcon.appiconset/icon-1024.png create mode 100644 ios/FrameControl/Assets.xcassets/AppIconImage.imageset/Contents.json create mode 100644 ios/FrameControl/Assets.xcassets/AppIconImage.imageset/icon.png create mode 100644 ios/FrameControl/Assets.xcassets/Contents.json create mode 100644 ios/FrameControl/Info.plist create mode 100644 ios/FrameControl/SSH/FrameLink.swift create mode 100644 ios/FrameControl/SSH/HeadsetServer.swift create mode 100644 ios/FrameControl/SSH/Keys.swift create mode 100644 ios/FrameControl/SSH/PortForwarder.swift create mode 100644 ios/FrameControl/Views/RootView.swift create mode 100644 ios/FrameControl/Views/SetupView.swift create mode 100644 ios/FrameControl/Web/WebShell.swift create mode 100644 ios/FrameControlTests/FrameControlTests.swift create mode 100644 ios/project.yml create mode 100644 ios/scripts/icon-ios.svg create mode 100644 ios/scripts/make_frame_bundle.py create mode 100755 ui/local-bin/ssh diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 654da64..51eea2d 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -20,6 +20,7 @@ jobs: run: sudo apt-get update -qq && sudo apt-get install -y -qq zsh - name: Script syntax run: | + sh -n ui/local-bin/ssh for f in scripts/*.sh frame/*/*.sh; do case "$(head -n 1 "$f")" in *zsh*) zsh -n "$f" ;; @@ -28,7 +29,7 @@ jobs: done - name: Python compiles run: | - python -m py_compile ui/*.py apk-catalog/*.py frame/android/*.py + python -m py_compile ui/*.py apk-catalog/*.py frame/android/*.py ios/scripts/*.py # Valve's devkit-utils (vendored; run by the Frame's python3). Most have no .py suffix. python -m py_compile $(find frame/devkit-utils -type f ! -name '*.*' ! -name LICENSE) frame/devkit-utils/devkit_utils/*.py - name: Server tests @@ -57,3 +58,16 @@ jobs: python-version: ${{ matrix.python }} - name: Server tests run: python -m unittest discover -s tests -v + + # The iPhone app: builds for the Simulator and runs its unit tests. + ios: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: Generate the project + run: brew install xcodegen && cd ios && xcodegen generate + - name: Build and test + run: | + cd ios + udid=$(xcrun simctl list devices available -j | python3 -c 'import json,sys; d=json.load(sys.stdin)["devices"]; print(next(x["udid"] for r in d for x in d[r] if x["name"].startswith("iPhone")))') + xcodebuild -project FrameControl.xcodeproj -scheme FrameControl -destination "platform=iOS Simulator,id=$udid" CODE_SIGNING_ALLOWED=NO test diff --git a/README.md b/README.md index 072790d..089606c 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,9 @@ already ships (sideloading a game copies Valve's own devkit scripts to | **Linux** (x64) | [AppImage](https://github.com/saphid/steam-frame/releases/latest/download/Frame-Control-linux-x86_64.AppImage) · [.deb](https://github.com/saphid/steam-frame/releases/latest/download/Frame-Control-linux-amd64.deb) | `ssh` (most desktops have it) | | **Linux** (arm64) | [AppImage](https://github.com/saphid/steam-frame/releases/latest/download/Frame-Control-linux-arm64.AppImage) · [.deb](https://github.com/saphid/steam-frame/releases/latest/download/Frame-Control-linux-arm64.deb) | `ssh`, and `adb` for Android apps (`sudo apt install adb`) | +**iPhone and iPad:** the same features from your phone, with nothing to install on +a computer. Build it from [`ios/`](ios) in Xcode; see [docs/iphone.md](docs/iphone.md). + The app brings its own Python and `adb`; SSH is built into macOS and Windows. Google doesn't publish `adb` for arm64 Linux, so that build uses your distribution's. If you already have `adb`, the app uses yours. diff --git a/docs/iphone.md b/docs/iphone.md new file mode 100644 index 0000000..cc60d6a --- /dev/null +++ b/docs/iphone.md @@ -0,0 +1,73 @@ +# Frame Control for iPhone + +The iPhone (and iPad) app does what the desktop app does, from the phone: +headset view and live video, battery and status, screenshots, Steam games, +Android apps and their display settings, sideloading, files, clipboard, +Flatpaks, and power. Source: [`ios/`](../ios). + +## How it works + +An iPhone can't run Python or `ssh`, but the Frame can. So the app: + +1. connects to the Frame over SSH itself (the [Citadel](https://github.com/orlandos-nl/Citadel) + Swift SSH library), with its own ed25519 key from the Keychain; +2. copies Frame Control's server and helpers (`ios/scripts/make_frame_bundle.py`, + under 1 MB) to `~/.cache/frame-control/` on the Frame, once per version; +3. starts `ui/server.py` there with `FRAME_LOCAL=1`. It listens only on the + Frame's own 127.0.0.1, and it stops when the phone disconnects (`--exit-on-eof`); +4. tunnels to it through the SSH session and shows the same page as the desktop + app, in a web view. The page carries a fresh key each session, which the + server requires on every request. + +With `FRAME_LOCAL=1`, every `ssh frame COMMAND` the server runs goes to +`ui/local-bin/ssh`, which runs the command on the Frame directly (rsync uses it +as its transport too), so the desktop and phone share one code path. Android +display settings use `podman exec` into each Lepton container instead of adb, +which the Frame doesn't have. + +Nothing is left running on the Frame after the phone disconnects; the copied +files stay in `~/.cache/frame-control` (delete it any time). + +## Pairing + +On the Frame, turn on Developer Mode and set a user password (Steam Settings → +System, then Developer → Set User Password). In the app, enter the headset's +address (`frame.local`, its IP, or its Tailscale name) and that password once. +The app adds its own key to `~/.ssh/authorized_keys` and remembers the Frame's +host key; the password isn't saved. If you already reach the Frame over SSH, +**Or add the key yourself** shows the phone's key to paste into +`authorized_keys`, and connects without a password. + +Valve's tap-to-approve devkit pairing isn't used: it only takes RSA keys, and +the Frame's OpenSSH 9.7 rejects the SHA-1 RSA signatures the Swift SSH library +makes. + +## What's different on the phone + +| Desktop | iPhone | +|---|---| +| Drop files anywhere | Tap **Send to Frame** (or Add a game) and pick files; folders need zipping | +| Screenshots save to `~/Pictures/SteamFrame` | Save opens the share sheet: Save Image puts it in Photos | +| SSH and SFTP open a terminal | They open an app that handles `ssh://` / `sftp://` (Blink Shell, Termius) | +| Steam Link, remote desktop | Open the Steam Link and Windows App apps | +| Sleep, restart, shut down ask in a terminal | The page asks for the Developer Mode password | +| Compatibility reports kept on the computer | Kept on the Frame (`~/.local/share/Frame Control`) | + +## Building + +```sh +cd ios +xcodegen generate # after changing project.yml +open FrameControl.xcodeproj +``` + +The build packs the Frame bundle from the checkout, so the phone always runs +the page and server from the same commit. Running on a phone needs your own +signing team in Xcode (Signing & Capabilities). + +## Verified + +In the iOS Simulator (iOS 26.5) and against a Frame (2026-09-27): the page and +all its reads, headset capture, live video, and file upload through the +on-Frame server. Not yet exercised: pairing with the password, Android display +changes through podman, and power actions. diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..aa95f19 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,4 @@ +xcuserdata/ +*.xcuserstate +build/ +DerivedData/ diff --git a/ios/FrameControl.xcodeproj/project.pbxproj b/ios/FrameControl.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c3de927 --- /dev/null +++ b/ios/FrameControl.xcodeproj/project.pbxproj @@ -0,0 +1,535 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXBuildFile section */ + 0DEE50BD563B1D8C328C4C0A /* HeadsetServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDC7BA8014DBC302D08FD397 /* HeadsetServer.swift */; }; + 12B21D3319BAF5AE79948560 /* FrameLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16644E7FDA7ADD5B232EB700 /* FrameLink.swift */; }; + 1A07EC692B0FF723907EA77B /* WebShell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6C4E6C28315CA8729FCAAEA /* WebShell.swift */; }; + 41A697B9924018DA48F24A1F /* Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237D9AF04EEA257AB382F60E /* Keys.swift */; }; + 4622FE0F0D6499CD642C29A2 /* InstallLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FCA7117DA3ABA449B4EE0 /* InstallLink.swift */; }; + 476D8858DC2C9E6616B084BC /* PortForwarder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7F6ED116569D0ABABF6ED65 /* PortForwarder.swift */; }; + 765661DBC0E6798A27CC60DB /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B24E1BCD4F69A24C7DEF02F /* RootView.swift */; }; + 78427FC66780623F31E7501E /* FrameControlApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93C8E0D7C3F4F628941B3D5A /* FrameControlApp.swift */; }; + 84423CB45629465420180A64 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8F2CB550FC81C01E6BDD5A71 /* Assets.xcassets */; }; + 9657F7BC23E3352E5AB30777 /* SetupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB544223FC60A59CC3E8EF5F /* SetupView.swift */; }; + A8C7AED25A6280682FCE45DC /* Citadel in Frameworks */ = {isa = PBXBuildFile; productRef = 6BA549B6CC0A0CB847126456 /* Citadel */; }; + DC043FB74BE2D23F3A5826BF /* FrameControlTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1740B691F9C25E5FB6F9EFC3 /* FrameControlTests.swift */; }; + F94D0252F8CC5854314B84B2 /* AppModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A11F3431826A26B247C0695 /* AppModel.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + E1823E86AC0698172B566DB0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 72E728699F904E68DEC369D3 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1015B8BE90EB02C2062752A1; + remoteInfo = FrameControl; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 16644E7FDA7ADD5B232EB700 /* FrameLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameLink.swift; sourceTree = ""; }; + 1740B691F9C25E5FB6F9EFC3 /* FrameControlTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameControlTests.swift; sourceTree = ""; }; + 237D9AF04EEA257AB382F60E /* Keys.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Keys.swift; sourceTree = ""; }; + 6B5B6718C5EA77FA67F6B14C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 6FBC8D0B5ED7BF1C06F99892 /* FrameControlTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = FrameControlTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 8A11F3431826A26B247C0695 /* AppModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppModel.swift; sourceTree = ""; }; + 8F2CB550FC81C01E6BDD5A71 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 93C8E0D7C3F4F628941B3D5A /* FrameControlApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameControlApp.swift; sourceTree = ""; }; + 9B24E1BCD4F69A24C7DEF02F /* RootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = ""; }; + A7F6ED116569D0ABABF6ED65 /* PortForwarder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortForwarder.swift; sourceTree = ""; }; + BF0FCA7117DA3ABA449B4EE0 /* InstallLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstallLink.swift; sourceTree = ""; }; + D6C4E6C28315CA8729FCAAEA /* WebShell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebShell.swift; sourceTree = ""; }; + DB544223FC60A59CC3E8EF5F /* SetupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetupView.swift; sourceTree = ""; }; + EDC7BA8014DBC302D08FD397 /* HeadsetServer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadsetServer.swift; sourceTree = ""; }; + F3E2F5607DD877272483D64E /* FrameControl.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = FrameControl.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 35C098707058D19A2E23092E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A8C7AED25A6280682FCE45DC /* Citadel in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1518C8775325C731AD7E2421 = { + isa = PBXGroup; + children = ( + B4F84A5777E9EFEAEB54DB91 /* FrameControl */, + 75A17B1C79C8C3C60FEABBA6 /* FrameControlTests */, + 59B34B34E2BE8BCD237BCF26 /* Products */, + ); + sourceTree = ""; + }; + 5064A5B6FE5B17B18E5FA4B8 /* SSH */ = { + isa = PBXGroup; + children = ( + 16644E7FDA7ADD5B232EB700 /* FrameLink.swift */, + EDC7BA8014DBC302D08FD397 /* HeadsetServer.swift */, + 237D9AF04EEA257AB382F60E /* Keys.swift */, + A7F6ED116569D0ABABF6ED65 /* PortForwarder.swift */, + ); + path = SSH; + sourceTree = ""; + }; + 59B34B34E2BE8BCD237BCF26 /* Products */ = { + isa = PBXGroup; + children = ( + F3E2F5607DD877272483D64E /* FrameControl.app */, + 6FBC8D0B5ED7BF1C06F99892 /* FrameControlTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 68AF00C8593B71502E1FB72B /* App */ = { + isa = PBXGroup; + children = ( + 8A11F3431826A26B247C0695 /* AppModel.swift */, + 93C8E0D7C3F4F628941B3D5A /* FrameControlApp.swift */, + BF0FCA7117DA3ABA449B4EE0 /* InstallLink.swift */, + ); + path = App; + sourceTree = ""; + }; + 75A17B1C79C8C3C60FEABBA6 /* FrameControlTests */ = { + isa = PBXGroup; + children = ( + 1740B691F9C25E5FB6F9EFC3 /* FrameControlTests.swift */, + ); + path = FrameControlTests; + sourceTree = ""; + }; + A939D1267299AE8A48092557 /* Views */ = { + isa = PBXGroup; + children = ( + 9B24E1BCD4F69A24C7DEF02F /* RootView.swift */, + DB544223FC60A59CC3E8EF5F /* SetupView.swift */, + ); + path = Views; + sourceTree = ""; + }; + B4F84A5777E9EFEAEB54DB91 /* FrameControl */ = { + isa = PBXGroup; + children = ( + 8F2CB550FC81C01E6BDD5A71 /* Assets.xcassets */, + 6B5B6718C5EA77FA67F6B14C /* Info.plist */, + 68AF00C8593B71502E1FB72B /* App */, + 5064A5B6FE5B17B18E5FA4B8 /* SSH */, + A939D1267299AE8A48092557 /* Views */, + CC25EAB6C385A68D63F7DDF7 /* Web */, + ); + path = FrameControl; + sourceTree = ""; + }; + CC25EAB6C385A68D63F7DDF7 /* Web */ = { + isa = PBXGroup; + children = ( + D6C4E6C28315CA8729FCAAEA /* WebShell.swift */, + ); + path = Web; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1015B8BE90EB02C2062752A1 /* FrameControl */ = { + isa = PBXNativeTarget; + buildConfigurationList = F08406CA3118DCFFD91EEA4D /* Build configuration list for PBXNativeTarget "FrameControl" */; + buildPhases = ( + 81ACE79C878CE95DC2C74A8B /* Pack the Frame bundle */, + D452F3AE39D323226E2E4D1D /* Sources */, + B6E396EEA6D8BB0EE84E01A4 /* Resources */, + 35C098707058D19A2E23092E /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FrameControl; + packageProductDependencies = ( + 6BA549B6CC0A0CB847126456 /* Citadel */, + ); + productName = FrameControl; + productReference = F3E2F5607DD877272483D64E /* FrameControl.app */; + productType = "com.apple.product-type.application"; + }; + 88565F33E966FD0BAC7AC9C8 /* FrameControlTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3EE44365AF181B5C85B38B07 /* Build configuration list for PBXNativeTarget "FrameControlTests" */; + buildPhases = ( + F220B2041FE675A075E860BB /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + B88C5AA6F25947DCEE51C178 /* PBXTargetDependency */, + ); + name = FrameControlTests; + packageProductDependencies = ( + ); + productName = FrameControlTests; + productReference = 6FBC8D0B5ED7BF1C06F99892 /* FrameControlTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 72E728699F904E68DEC369D3 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1430; + TargetAttributes = { + }; + }; + buildConfigurationList = D6217CB1638429ED91524BB3 /* Build configuration list for PBXProject "FrameControl" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + Base, + en, + ); + mainGroup = 1518C8775325C731AD7E2421; + minimizedProjectReferenceProxies = 1; + packageReferences = ( + AD49230A09C7F457BC247E4D /* XCRemoteSwiftPackageReference "Citadel" */, + ); + preferredProjectObjectVersion = 77; + productRefGroup = 59B34B34E2BE8BCD237BCF26 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1015B8BE90EB02C2062752A1 /* FrameControl */, + 88565F33E966FD0BAC7AC9C8 /* FrameControlTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B6E396EEA6D8BB0EE84E01A4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84423CB45629465420180A64 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 81ACE79C878CE95DC2C74A8B /* Pack the Frame bundle */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Pack the Frame bundle"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "python3 \"${SRCROOT}/scripts/make_frame_bundle.py\" \"${DERIVED_FILE_DIR}/frame-bundle.tar.gz\" > \"${DERIVED_FILE_DIR}/frame-bundle.version\"\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\ncp \"${DERIVED_FILE_DIR}/frame-bundle.tar.gz\" \"${DERIVED_FILE_DIR}/frame-bundle.version\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D452F3AE39D323226E2E4D1D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F94D0252F8CC5854314B84B2 /* AppModel.swift in Sources */, + 78427FC66780623F31E7501E /* FrameControlApp.swift in Sources */, + 12B21D3319BAF5AE79948560 /* FrameLink.swift in Sources */, + 0DEE50BD563B1D8C328C4C0A /* HeadsetServer.swift in Sources */, + 4622FE0F0D6499CD642C29A2 /* InstallLink.swift in Sources */, + 41A697B9924018DA48F24A1F /* Keys.swift in Sources */, + 476D8858DC2C9E6616B084BC /* PortForwarder.swift in Sources */, + 765661DBC0E6798A27CC60DB /* RootView.swift in Sources */, + 9657F7BC23E3352E5AB30777 /* SetupView.swift in Sources */, + 1A07EC692B0FF723907EA77B /* WebShell.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F220B2041FE675A075E860BB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DC043FB74BE2D23F3A5826BF /* FrameControlTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B88C5AA6F25947DCEE51C178 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 1015B8BE90EB02C2062752A1 /* FrameControl */; + targetProxy = E1823E86AC0698172B566DB0 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 0B43879551190738EFF21848 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = FrameControl/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.saphid.framecontrol; + PRODUCT_NAME = "Frame Control"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 3228B6B229BF6430C8338B55 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + MARKETING_VERSION = 0.1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 54BEF779B5906F671E4134CE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "DEBUG=1", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + MARKETING_VERSION = 0.1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 57A1F4BD520A2EDA424181E8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + GENERATE_INFOPLIST_FILE = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.saphid.FrameControlTests; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Frame Control.app/Frame Control"; + }; + name = Release; + }; + 6E69BB8A560DC32B8D0E10A6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + GENERATE_INFOPLIST_FILE = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.saphid.FrameControlTests; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Frame Control.app/Frame Control"; + }; + name = Debug; + }; + C7FCE7EB18B4AEF8EFEC8FDE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = FrameControl/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.saphid.framecontrol; + PRODUCT_NAME = "Frame Control"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3EE44365AF181B5C85B38B07 /* Build configuration list for PBXNativeTarget "FrameControlTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6E69BB8A560DC32B8D0E10A6 /* Debug */, + 57A1F4BD520A2EDA424181E8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + D6217CB1638429ED91524BB3 /* Build configuration list for PBXProject "FrameControl" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 54BEF779B5906F671E4134CE /* Debug */, + 3228B6B229BF6430C8338B55 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + F08406CA3118DCFFD91EEA4D /* Build configuration list for PBXNativeTarget "FrameControl" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C7FCE7EB18B4AEF8EFEC8FDE /* Debug */, + 0B43879551190738EFF21848 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + AD49230A09C7F457BC247E4D /* XCRemoteSwiftPackageReference "Citadel" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/orlandos-nl/Citadel.git"; + requirement = { + kind = exactVersion; + version = 0.12.1; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 6BA549B6CC0A0CB847126456 /* Citadel */ = { + isa = XCSwiftPackageProductDependency; + package = AD49230A09C7F457BC247E4D /* XCRemoteSwiftPackageReference "Citadel" */; + productName = Citadel; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 72E728699F904E68DEC369D3 /* Project object */; +} diff --git a/ios/FrameControl.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/FrameControl.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/FrameControl.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/FrameControl.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/FrameControl.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..0cd5935 --- /dev/null +++ b/ios/FrameControl.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,96 @@ +{ + "originHash" : "06e1233a9a9b220c5f5b14eefc3220aa9e394ac504fece9df28b2a550b7d6017", + "pins" : [ + { + "identity" : "bigint", + "kind" : "remoteSourceControl", + "location" : "https://github.com/attaswift/BigInt.git", + "state" : { + "revision" : "e07e00fa1fd435143a2dcf8b7eec9a7710b2fdfe", + "version" : "5.7.0" + } + }, + { + "identity" : "citadel", + "kind" : "remoteSourceControl", + "location" : "https://github.com/orlandos-nl/Citadel.git", + "state" : { + "revision" : "ae8562f895de06ccb86fdb1cbb65fd99c8976e12", + "version" : "0.12.1" + } + }, + { + "identity" : "swift-asn1", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-asn1.git", + "state" : { + "revision" : "3b6410f7dee09eb33cdd26260c5fd47fda19b0e2", + "version" : "1.7.3" + } + }, + { + "identity" : "swift-atomics", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-atomics.git", + "state" : { + "revision" : "0442cb5a3f98ab802acb777929fdb446bda11a34", + "version" : "1.3.1" + } + }, + { + "identity" : "swift-collections", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-collections.git", + "state" : { + "revision" : "98ef3c98609a1e31b7e157b5b619579001a789d6", + "version" : "1.7.1" + } + }, + { + "identity" : "swift-crypto", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-crypto.git", + "state" : { + "revision" : "95ba0316a9b733e92bb6b071255ff46263bbe7dc", + "version" : "3.15.1" + } + }, + { + "identity" : "swift-log", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-log.git", + "state" : { + "revision" : "9c6fb14227f55d8f711ce3847dc2f419fb0ecacb", + "version" : "1.15.1" + } + }, + { + "identity" : "swift-nio", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-nio.git", + "state" : { + "revision" : "21de5f08c1a166a6dd293d0e587ad977bf8dac5d", + "version" : "2.103.0" + } + }, + { + "identity" : "swift-nio-ssh", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Wellz26/swift-nio-ssh.git", + "state" : { + "revision" : "d88989f3d3bb1dfb2a38ce4af598afbf7fc3095c", + "version" : "0.3.7" + } + }, + { + "identity" : "swift-system", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-system.git", + "state" : { + "revision" : "869129b7bf4ecc57b97d0193ad29690ca2134750", + "version" : "1.8.1" + } + } + ], + "version" : 3 +} diff --git a/ios/FrameControl.xcodeproj/xcshareddata/xcschemes/FrameControl.xcscheme b/ios/FrameControl.xcodeproj/xcshareddata/xcschemes/FrameControl.xcscheme new file mode 100644 index 0000000..7544a28 --- /dev/null +++ b/ios/FrameControl.xcodeproj/xcshareddata/xcschemes/FrameControl.xcscheme @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/FrameControl/App/AppModel.swift b/ios/FrameControl/App/AppModel.swift new file mode 100644 index 0000000..323ff28 --- /dev/null +++ b/ios/FrameControl/App/AppModel.swift @@ -0,0 +1,212 @@ +import Citadel +import Foundation +import SwiftUI +import UIKit + +/// The app's one piece of state: which headset, and how far along connecting to it is. +@MainActor +final class AppModel: ObservableObject { + enum Phase: Equatable { + case setup + case connecting(String) + case ready(URL) + case failed(String) + } + + @Published private(set) var phase: Phase + @Published private(set) var settings: FrameSettings? + /// Install links that arrived before the page was ready for them. + @Published var pendingInstallLinks: [InstallLink] = [] + + private var link: FrameLink? + private var server: HeadsetServer? + private var forwarder: PortForwarder? + private var attempt = 0 + + private static let settingsKey = "frame.settings" + private static let hostKeyKey = "frame.hostKey" + + init() { + let saved = UserDefaults.standard.data(forKey: Self.settingsKey).flatMap { try? JSONDecoder().decode(FrameSettings.self, from: $0) } + settings = saved + phase = saved == nil ? .setup : .connecting("Connecting") + } + + var deviceName: String { UIDevice.current.userInterfaceIdiom == .pad ? "iPad" : "iPhone" } + private var hostKey: String? { UserDefaults.standard.string(forKey: Self.hostKeyKey) } + + // MARK: pairing + + /// First time: log in with the Developer Mode password, add this phone's key to + /// ~/.ssh/authorized_keys, record the Frame's host key, then connect with the key. + func pair(host: String, user: String, password: String) async { + guard let target = Self.parse(host: host, user: user) else { + phase = .failed("Enter the headset's address and user name.") + return + } + await teardown() + attempt += 1 + let mine = attempt + phase = .connecting("Signing in to \(target.host)") + let pin = PinnedHostKey(expected: nil) + do { + let link = try await FrameLink.connect(target, auth: .passwordBased(username: target.user, password: password), hostKey: pin) + defer { Task { await link.close() } } + guard mine == attempt else { return } + phase = .connecting("Adding this \(deviceName)'s key") + let line = authorizedKeysLine + try await link.check("umask 077; mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && " + + "(grep -qxF \(shellQuote(line)) ~/.ssh/authorized_keys || echo \(shellQuote(line)) >> ~/.ssh/authorized_keys)", + "Couldn't add the key on the Frame") + guard let seen = pin.seen else { throw FrameFailure("The Frame didn't show a host key") } + UserDefaults.standard.set(seen, forKey: Self.hostKeyKey) + UserDefaults.standard.set(try JSONEncoder().encode(target), forKey: Self.settingsKey) + settings = target + } catch { + guard mine == attempt else { return } + phase = .failed((error as? FrameFailure)?.message ?? FrameLink.describe(error, host: target.host)) + return + } + await connect() + } + + /// For someone who added this phone's key to the Frame themselves: no password. + /// The Frame's host key is recorded on this first connection. + func useKey(host: String, user: String) async { + guard let target = Self.parse(host: host, user: user) else { + phase = .failed("Enter the headset's address and user name.") + return + } + UserDefaults.standard.removeObject(forKey: Self.hostKeyKey) + UserDefaults.standard.set(try? JSONEncoder().encode(target), forKey: Self.settingsKey) + settings = target + await connect() + } + + /// "host", "host:port" or "[v6]:port", plus a user name. + static func parse(host: String, user: String) -> FrameSettings? { + var target = FrameSettings(host: host.trimmingCharacters(in: .whitespaces), user: user.trimmingCharacters(in: .whitespaces)) + if target.host.hasPrefix("["), let close = target.host.firstIndex(of: "]") { + let rest = target.host[target.host.index(after: close)...] + if rest.hasPrefix(":"), let port = Int(rest.dropFirst()) { target.port = port } + target.host = String(target.host[target.host.index(after: target.host.startIndex).. String { + var bytes = [UInt8](repeating: 0, count: 24) + _ = SecRandomCopyBytes(kSecRandomDefault, bytes.count, &bytes) + return bytes.map { String(format: "%02x", $0) }.joined() + } +} diff --git a/ios/FrameControl/App/FrameControlApp.swift b/ios/FrameControl/App/FrameControlApp.swift new file mode 100644 index 0000000..840e5ce --- /dev/null +++ b/ios/FrameControl/App/FrameControlApp.swift @@ -0,0 +1,34 @@ +import SwiftUI + +@main +struct FrameControlApp: App { + @StateObject private var model = AppModel() + @Environment(\.scenePhase) private var scenePhase + + var body: some Scene { + WindowGroup { + RootView(model: model) + .task { + #if DEBUG + // Simulator testing without the pairing screen: print this device's key, + // and connect to FRAME_TEST_HOST with it (`simctl launch` passes + // SIMCTL_CHILD_FRAME_TEST_HOST through as FRAME_TEST_HOST). + print("FRAME_CONTROL_KEY: \(model.authorizedKeysLine)") + if model.settings == nil, let host = ProcessInfo.processInfo.environment["FRAME_TEST_HOST"] { + await model.useKey(host: host, user: "steamos") + return + } + #endif + if model.settings != nil { await model.connect() } + } + .onOpenURL { url in + // frame-control://install?… from a website (docs/web-install.md). + guard let link = InstallLink(url.absoluteString), model.pendingInstallLinks.count < 5 else { return } + model.pendingInstallLinks.append(link) + } + .onChange(of: scenePhase) { _, phase in + if phase == .active { model.resume() } + } + } + } +} diff --git a/ios/FrameControl/App/InstallLink.swift b/ios/FrameControl/App/InstallLink.swift new file mode 100644 index 0000000..be29576 --- /dev/null +++ b/ios/FrameControl/App/InstallLink.swift @@ -0,0 +1,27 @@ +import Foundation + +/// frame-control://install?manifest=URL or ?url=URL (docs/web-install.md), the same +/// first filter as app/install-link.js. The server on the Frame applies the full +/// rules (HTTPS, no private addresses, redirects) before fetching anything. +struct InstallLink: Equatable { + enum Kind: String { case manifest, url } + let kind: Kind + let target: String + + static let scheme = "frame-control" + private static let maxLink = 4096 + private static let maxURL = 2048 + + init?(_ raw: String) { + guard raw.count <= Self.maxLink, raw.lowercased().hasPrefix("\(Self.scheme):"), + let link = URLComponents(string: raw), link.scheme?.lowercased() == Self.scheme, + link.host?.lowercased() == "install", ["", "/"].contains(link.path) else { return nil } + let items = link.queryItems ?? [] + guard items.count == 1, let item = items.first, let kind = Kind(rawValue: item.name), + let target = item.value, !target.isEmpty, target.count <= Self.maxURL, + let url = URLComponents(string: target), ["https", "http"].contains(url.scheme?.lowercased() ?? ""), + url.host?.isEmpty == false, url.user == nil, url.password == nil else { return nil } + self.kind = kind + self.target = target + } +} diff --git a/ios/FrameControl/Assets.xcassets/AccentColor.colorset/Contents.json b/ios/FrameControl/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..406fe95 --- /dev/null +++ b/ios/FrameControl/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,4 @@ +{ + "colors" : [ { "color" : { "color-space" : "srgb", "components" : { "alpha" : "1.000", "blue" : "0xFF", "green" : "0x9F", "red" : "0x1A" } }, "idiom" : "universal" } ], + "info" : { "author" : "xcode", "version" : 1 } +} diff --git a/ios/FrameControl/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/FrameControl/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..42f5c3f --- /dev/null +++ b/ios/FrameControl/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,4 @@ +{ + "images" : [ { "filename" : "icon-1024.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" } ], + "info" : { "author" : "xcode", "version" : 1 } +} diff --git a/ios/FrameControl/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/ios/FrameControl/Assets.xcassets/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..f17f340acb9f79556addacc67fcf133542f74ae8 GIT binary patch literal 194754 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 ua6c96H))2OCY1{kC*xAD(@|4wRS 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 literal 0 HcmV?d00001 diff --git a/ios/FrameControl/Assets.xcassets/AppIconImage.imageset/Contents.json b/ios/FrameControl/Assets.xcassets/AppIconImage.imageset/Contents.json new file mode 100644 index 0000000..5558bed --- /dev/null +++ b/ios/FrameControl/Assets.xcassets/AppIconImage.imageset/Contents.json @@ -0,0 +1 @@ +{ "images" : [ { "filename" : "icon.png", "idiom" : "universal" } ], "info" : { "author" : "xcode", "version" : 1 } } diff --git a/ios/FrameControl/Assets.xcassets/AppIconImage.imageset/icon.png b/ios/FrameControl/Assets.xcassets/AppIconImage.imageset/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f17f340acb9f79556addacc67fcf133542f74ae8 GIT binary patch literal 194754 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 ua6c96H))2OCY1{kC*xAD(@|4wRS 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 literal 0 HcmV?d00001 diff --git a/ios/FrameControl/Assets.xcassets/Contents.json b/ios/FrameControl/Assets.xcassets/Contents.json new file mode 100644 index 0000000..46cba7d --- /dev/null +++ b/ios/FrameControl/Assets.xcassets/Contents.json @@ -0,0 +1 @@ +{ "info" : { "author" : "xcode", "version" : 1 } } diff --git a/ios/FrameControl/Info.plist b/ios/FrameControl/Info.plist new file mode 100644 index 0000000..210d075 --- /dev/null +++ b/ios/FrameControl/Info.plist @@ -0,0 +1,69 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Frame Control + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleURLTypes + + + CFBundleURLName + com.saphid.framecontrol.install + CFBundleURLSchemes + + frame-control + + + + CFBundleVersion + 1 + LSApplicationQueriesSchemes + + ssh + sftp + steamlink + rdp + + NSAppTransportSecurity + + NSAllowsLocalNetworking + + + NSLocalNetworkUsageDescription + Frame Control connects to your Steam Frame over your local network with SSH. + UILaunchScreen + + UIColorName + + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIUserInterfaceStyle + Dark + + diff --git a/ios/FrameControl/SSH/FrameLink.swift b/ios/FrameControl/SSH/FrameLink.swift new file mode 100644 index 0000000..28c4455 --- /dev/null +++ b/ios/FrameControl/SSH/FrameLink.swift @@ -0,0 +1,126 @@ +import Citadel +import CryptoKit +import Foundation +import NIOCore +import NIOSSH + +/// Where the Frame is and who to log in as. +struct FrameSettings: Codable, Equatable { + var host: String + var port: Int = 22 + var user: String = "steamos" +} + +struct FrameFailure: LocalizedError { + let message: String + init(_ message: String) { self.message = message } + var errorDescription: String? { message } +} + +/// Trust on first use: pairing records the Frame's host key; later connections +/// accept that key and nothing else, as ssh's known_hosts does. +final class PinnedHostKey: NIOSSHClientServerAuthenticationDelegate, @unchecked Sendable { + struct Changed: Error {} + let expected: String? + private let lock = NSLock() + private var _seen: String? + var seen: String? { lock.withLock { _seen } } + + init(expected: String?) { self.expected = expected } + + func validateHostKey(hostKey: NIOSSHPublicKey, validationCompletePromise: EventLoopPromise) { + let key = String(openSSHPublicKey: hostKey) + lock.withLock { _seen = key } + if expected == nil || expected == key { + validationCompletePromise.succeed(()) + } else { + validationCompletePromise.fail(Changed()) + } + } +} + +/// One SSH connection to the Frame, and the few things the app does over it. +final class FrameLink: @unchecked Sendable { + let client: SSHClient + + private init(client: SSHClient) { self.client = client } + + static func connect(_ settings: FrameSettings, auth: SSHAuthenticationMethod, hostKey: PinnedHostKey) async throws -> FrameLink { + do { + let client = try await SSHClient.connect( + host: settings.host, port: settings.port, authenticationMethod: auth, + hostKeyValidator: .custom(hostKey), reconnect: .never, connectTimeout: .seconds(8)) + return FrameLink(client: client) + } catch { + throw FrameFailure(describe(error, host: settings.host)) + } + } + + /// The plain-language reason a connection failed, like the desktop server's messages. + static func describe(_ error: Error, host: String) -> String { + if error is PinnedHostKey.Changed { + return "The Frame's SSH identity changed (after a reinstall, or a different device at \(host)). Pair again." + } + let text = String(describing: error) + if text.contains("allAuthenticationOptionsFailed") || text.contains("authentication") { + return "The Frame didn't accept the login. Pair again, and check the Developer Mode password." + } + if ["timeout", "Timeout", "timed out", "Host is down", "No route to host", "Network is unreachable", + "errno: 64", "errno: 65", "errno: 51", "errno: 60"].contains(where: text.contains) { + return "The Frame isn't answering at \(host). It may be asleep, switched off, or on another network." + } + if text.contains("refused") || text.contains("ECONNREFUSED") { + return "The Frame refused the connection at \(host). Check Developer Mode is still on." + } + if text.contains("NXDOMAIN") || text.contains("resolve") || text.contains("unknownHost") || text.contains("NoAddress") { + return "Can't find \(host) on the network. Check the address, and that the Frame is on the same network." + } + return "Couldn't connect to \(host): \(text)" + } + + var isConnected: Bool { client.isConnected } + + func close() async { + try? await client.close() + } + + /// Runs a shell command; returns its combined output and exit status. + func run(_ command: String) async throws -> (output: String, status: Int) { + // stderr joins stdout (Citadel treats any stderr as a failure), and the + // status comes back as the last line so a non-zero exit isn't an exception. + let buffer = try await client.executeCommand("{ \(command)\n} 2>&1; echo \"@@rc=$?\"") + var text = String(buffer: buffer) + var status = 0 + if let range = text.range(of: "@@rc=", options: .backwards) { + status = Int(text[range.upperBound...].trimmingCharacters(in: .whitespacesAndNewlines)) ?? -1 + text = String(text[.. String { + let r = try await run(command) + guard r.status == 0 else { throw FrameFailure("\(what): \(r.output.isEmpty ? "exit \(r.status)" : r.output)") } + return r.output + } + + /// Writes data to a path relative to the home directory. + func upload(_ data: Data, to path: String) async throws { + let sftp = try await client.openSFTP() + do { + try await sftp.withFile(filePath: path, flags: [.write, .create, .truncate]) { file in + try await file.write(ByteBuffer(bytes: data)) + } + try? await sftp.close() + } catch { + try? await sftp.close() + throw error + } + } +} + +func shellQuote(_ s: String) -> String { + "'" + s.replacingOccurrences(of: "'", with: "'\\''") + "'" +} diff --git a/ios/FrameControl/SSH/HeadsetServer.swift b/ios/FrameControl/SSH/HeadsetServer.swift new file mode 100644 index 0000000..43d23ef --- /dev/null +++ b/ios/FrameControl/SSH/HeadsetServer.swift @@ -0,0 +1,143 @@ +import Citadel +import Foundation +import NIOCore + +/// Frame Control's server, running on the Frame itself. The app copies the bundle +/// (ios/scripts/make_frame_bundle.py) to ~/.cache/frame-control/ once per +/// version, then starts ui/server.py there over SSH. It listens only on the Frame's +/// 127.0.0.1, and it exits when this SSH session ends (--exit-on-eof). +final class HeadsetServer: @unchecked Sendable { + let port: Int + private let lock = NSLock() + private var _exited: String? + /// Set once the server stops, with its last output. + var exited: String? { lock.withLock { _exited } } + var onExit: (@Sendable (String) -> Void)? + + private init(port: Int) { self.port = port } + + static let cacheDir = ".cache/frame-control" + + struct Bundle { + let data: Data + let version: String + + static func fromApp() throws -> Bundle { + guard let url = Foundation.Bundle.main.url(forResource: "frame-bundle", withExtension: "tar.gz"), + let data = try? Data(contentsOf: url), + let vurl = Foundation.Bundle.main.url(forResource: "frame-bundle", withExtension: "version"), + let version = try? String(contentsOf: vurl, encoding: .utf8).trimmingCharacters(in: .whitespacesAndNewlines), + version.range(of: "^[0-9a-f]{16}$", options: .regularExpression) != nil else { + throw FrameFailure("This build of the app is missing its Frame bundle") + } + return Bundle(data: data, version: version) + } + } + + /// Copies the bundle over unless this version is already there; removes older versions. + static func deploy(_ bundle: Bundle, over link: FrameLink, progress: @escaping @Sendable (String) -> Void) async throws -> String { + let dir = "\(cacheDir)/\(bundle.version)" + let py = try await link.run("command -v python3 >/dev/null && python3 -c 'import sys; print(sys.version_info >= (3, 8))'") + guard py.status == 0, py.output.hasSuffix("True") else { + throw FrameFailure("The Frame has no Python 3.8 or later, which Frame Control needs there.") + } + if try await link.run("test -f \(dir)/ui/server.py").status != 0 { + progress("Copying Frame Control to the headset") + try await link.check("mkdir -p \(cacheDir)", "Couldn't make \(cacheDir)") + let archive = "\(dir).tar.gz" + try await link.upload(bundle.data, to: archive) + progress("Unpacking") + try await link.check("rm -rf \(dir).tmp && mkdir \(dir).tmp && tar xzf \(archive) -C \(dir).tmp && rm -f \(archive) " + + "&& rm -rf \(dir) && mv \(dir).tmp \(dir)", "Couldn't unpack Frame Control on the headset") + } + // Older versions: only this one is used from now on. + _ = try? await link.run("cd \(cacheDir) && for d in */; do [ \"${d%/}\" = \(bundle.version) ] || rm -rf -- \"$d\"; done") + return dir + } + + /// Starts the server in dir and waits for it to say which port it took. + static func start(in dir: String, over link: FrameLink, key: String, device: String) async throws -> HeadsetServer { + let command = "cd \(dir) && FRAME_LOCAL=1 FRAME_UI_KEY=\(key) FRAME_DEVICE=\(shellQuote(device)) " + + "exec python3 -I -u -B ui/server.py --port 0 --exit-on-eof 2>&1" + let stream = try await link.client.executeCommandStream(command) + let box = PortWaiter() + let reader = Task { () -> Void in + var text = "" + do { + for try await chunk in stream { + switch chunk { + case .stdout(let b), .stderr(let b): text += String(buffer: b) + } + if text.count > 20_000 { text = String(text.suffix(10_000)) } + if let port = Self.port(in: text) { box.found(port) } + } + } catch { + text += "\n\(error)" + } + box.ended(text) + } + let server: HeadsetServer + do { + server = HeadsetServer(port: try await box.wait(seconds: 30)) + } catch { + reader.cancel() + throw error + } + box.onEnd = { [weak server] tail in + guard let server else { return } + server.lock.withLock { server._exited = tail } + server.onExit?(tail) + } + return server + } + + static func port(in text: String) -> Int? { + guard let r = text.range(of: #"Frame Control on http://127\.0\.0\.1:(\d+)"#, options: .regularExpression) else { return nil } + return Int(text[r].split(separator: ":").last ?? "") + } +} + +/// Hands the port from the output reader to start(), or the output if the server died first. +private final class PortWaiter: @unchecked Sendable { + private let lock = NSLock() + private var continuation: CheckedContinuation? + private var result: Result? + private var endedTail: String? + var onEnd: (@Sendable (String) -> Void)? { + didSet { if let tail = lock.withLock({ endedTail }) { onEnd?(tail) } } + } + + func found(_ port: Int) { finish(.success(port)) } + + func ended(_ text: String) { + let tail = String(text.suffix(600)).trimmingCharacters(in: .whitespacesAndNewlines) + lock.withLock { endedTail = tail } + finish(.failure(FrameFailure("Frame Control's server on the headset stopped: \(tail.isEmpty ? "no output" : tail)"))) + onEnd?(tail) + } + + private func finish(_ r: Result) { + let c: CheckedContinuation? = lock.withLock { + guard result == nil else { return nil } + result = r + defer { continuation = nil } + return continuation + } + c?.resume(with: r) + } + + func wait(seconds: Double) async throws -> Int { + Task { [weak self] in + try? await Task.sleep(nanoseconds: UInt64(seconds * 1e9)) + self?.finish(.failure(FrameFailure("Frame Control's server on the headset didn't start within \(Int(seconds)) s"))) + } + return try await withCheckedThrowingContinuation { c in + let done: Result? = lock.withLock { + if let result { return result } + continuation = c + return nil + } + if let done { c.resume(with: done) } + } + } +} diff --git a/ios/FrameControl/SSH/Keys.swift b/ios/FrameControl/SSH/Keys.swift new file mode 100644 index 0000000..4917b82 --- /dev/null +++ b/ios/FrameControl/SSH/Keys.swift @@ -0,0 +1,54 @@ +import CryptoKit +import Foundation +import NIOSSH +import Security + +/// Small wrapper over the Keychain for this app's secrets. +enum Keychain { + private static let service = "com.saphid.framecontrol" + + private static func query(_ account: String) -> [String: Any] { + [kSecClass as String: kSecClassGenericPassword, kSecAttrService as String: service, + kSecAttrAccount as String: account] + } + + static func data(_ account: String) -> Data? { + var q = query(account) + q[kSecReturnData as String] = true + q[kSecMatchLimit as String] = kSecMatchLimitOne + var out: AnyObject? + return SecItemCopyMatching(q as CFDictionary, &out) == errSecSuccess ? out as? Data : nil + } + + static func set(_ data: Data, _ account: String) { + SecItemDelete(query(account) as CFDictionary) + var q = query(account) + q[kSecValueData as String] = data + // Only on this device and not in backups: the key is this phone's identity. + q[kSecAttrAccessible as String] = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly + SecItemAdd(q as CFDictionary, nil) + } + + static func delete(_ account: String) { + SecItemDelete(query(account) as CFDictionary) + } +} + +/// This phone's SSH key: ed25519, made once, kept in the Keychain. +enum DeviceKey { + private static let account = "ssh-ed25519" + + static func loadOrCreate() -> Curve25519.Signing.PrivateKey { + if let raw = Keychain.data(account), let key = try? Curve25519.Signing.PrivateKey(rawRepresentation: raw) { + return key + } + let key = Curve25519.Signing.PrivateKey() + Keychain.set(key.rawRepresentation, account) + return key + } + + /// The line for ~/.ssh/authorized_keys, e.g. "ssh-ed25519 AAAA… frame-control@iPhone". + static func authorizedKeysLine(_ key: Curve25519.Signing.PrivateKey, comment: String) -> String { + String(openSSHPublicKey: NIOSSHPrivateKey(ed25519Key: key).publicKey) + " " + comment + } +} diff --git a/ios/FrameControl/SSH/PortForwarder.swift b/ios/FrameControl/SSH/PortForwarder.swift new file mode 100644 index 0000000..ab94d34 --- /dev/null +++ b/ios/FrameControl/SSH/PortForwarder.swift @@ -0,0 +1,113 @@ +import Citadel +import Foundation +import NIOCore +import NIOPosix +import NIOSSH + +/// Listens on this phone's 127.0.0.1 and carries each connection to a port on the +/// Frame's 127.0.0.1 through the SSH session (ssh -L). The web view loads the +/// server from here; every API request still needs the session's key. +final class PortForwarder: @unchecked Sendable { + private let channel: Channel + let localPort: Int + + private init(channel: Channel, localPort: Int) { + self.channel = channel + self.localPort = localPort + } + + static func start(over link: FrameLink, to remotePort: Int) async throws -> PortForwarder { + let client = link.client + // The listener shares the SSH connection's event loop, so the glue between + // each pair of channels never crosses threads. + let bootstrap = ServerBootstrap(group: client.eventLoop) + .serverChannelOption(ChannelOptions.socketOption(.so_reuseaddr), value: 1) + .childChannelOption(ChannelOptions.allowRemoteHalfClosure, value: true) + // Nothing is read from the web view until the SSH side is ready for it. + .childChannelOption(ChannelOptions.autoRead, value: false) + .childChannelInitializer { inbound in + inbound.eventLoop.makeFutureWithTask { + let (local, remote) = GlueHandler.matchedPair() + try await inbound.pipeline.addHandler(local).get() + let origin = try inbound.remoteAddress ?? SocketAddress(ipAddress: "127.0.0.1", port: 0) + _ = try await client.createDirectTCPIPChannel( + using: SSHChannelType.DirectTCPIP(targetHost: "127.0.0.1", targetPort: remotePort, originatorAddress: origin) + ) { channel in channel.pipeline.addHandler(remote) } + try await inbound.setOption(ChannelOptions.autoRead, value: true).get() + } + } + let channel = try await bootstrap.bind(host: "127.0.0.1", port: 0).get() + guard let port = channel.localAddress?.port else { throw FrameFailure("Couldn't open a local port") } + return PortForwarder(channel: channel, localPort: port) + } + + func stop() { + channel.close(promise: nil) + } +} + +/// Joins two channels: what one reads, the other writes, with backpressure and +/// half-close passed across (the pattern from SwiftNIO's examples). +final class GlueHandler: ChannelDuplexHandler, @unchecked Sendable { + typealias InboundIn = NIOAny + typealias OutboundIn = NIOAny + typealias OutboundOut = NIOAny + + private var partner: GlueHandler? + private var context: ChannelHandlerContext? + private var pendingRead = false + + static func matchedPair() -> (GlueHandler, GlueHandler) { + let a = GlueHandler(), b = GlueHandler() + a.partner = b + b.partner = a + return (a, b) + } + + private func partnerWrite(_ data: NIOAny) { context?.write(data, promise: nil) } + private func partnerFlush() { context?.flush() } + private func partnerWriteEOF() { context?.close(mode: .output, promise: nil) } + private func partnerClose() { context?.close(promise: nil) } + private var partnerWritable: Bool { context?.channel.isWritable ?? false } + + private func partnerBecameWritable() { + if pendingRead { + pendingRead = false + context?.read() + } + } + + func handlerAdded(context: ChannelHandlerContext) { self.context = context } + + func handlerRemoved(context: ChannelHandlerContext) { + self.context = nil + partner = nil + } + + func channelRead(context: ChannelHandlerContext, data: NIOAny) { partner?.partnerWrite(data) } + func channelReadComplete(context: ChannelHandlerContext) { partner?.partnerFlush() } + func channelInactive(context: ChannelHandlerContext) { partner?.partnerClose() } + + func userInboundEventTriggered(context: ChannelHandlerContext, event: Any) { + if let e = event as? ChannelEvent, case .inputClosed = e { + partner?.partnerWriteEOF() + } + context.fireUserInboundEventTriggered(event) + } + + func errorCaught(context: ChannelHandlerContext, error: Error) { + partner?.partnerClose() + } + + func channelWritabilityChanged(context: ChannelHandlerContext) { + if context.channel.isWritable { partner?.partnerBecameWritable() } + } + + func read(context: ChannelHandlerContext) { + if let partner, partner.partnerWritable { + context.read() + } else { + pendingRead = true + } + } +} diff --git a/ios/FrameControl/Views/RootView.swift b/ios/FrameControl/Views/RootView.swift new file mode 100644 index 0000000..15b938c --- /dev/null +++ b/ios/FrameControl/Views/RootView.swift @@ -0,0 +1,70 @@ +import SwiftUI + +struct RootView: View { + @ObservedObject var model: AppModel + + var body: some View { + ZStack { + Color.frameBackground.ignoresSafeArea() + switch model.phase { + case .setup: + SetupView(model: model) + case .connecting(let step): + ConnectingView(step: step, host: model.settings?.host) { model.showSetup() } + case .failed(let message): + FailedView(message: message, canRetry: model.settings != nil, + retry: { Task { await model.connect() } }, change: { model.showSetup() }) + case .ready(let url): + WebShell(url: url, model: model).ignoresSafeArea() + } + } + .preferredColorScheme(.dark) + .tint(.frameBlue) + } +} + +extension Color { + static let frameBackground = Color(red: 0.055, green: 0.078, blue: 0.106) + static let framePanel = Color(red: 0.118, green: 0.137, blue: 0.161) + static let frameBlue = Color(red: 0.102, green: 0.624, blue: 1.0) + static let frameMuted = Color(red: 0.561, green: 0.596, blue: 0.627) +} + +struct ConnectingView: View { + let step: String + let host: String? + let cancel: () -> Void + + var body: some View { + VStack(spacing: 18) { + Image("AppIconImage").resizable().frame(width: 76, height: 76).clipShape(RoundedRectangle(cornerRadius: 17)) + ProgressView().controlSize(.large) + Text(step).font(.headline).multilineTextAlignment(.center) + if let host { Text(host).font(.subheadline).foregroundStyle(Color.frameMuted) } + Button("Change headset", action: cancel).padding(.top, 8) + } + .padding(32) + } +} + +struct FailedView: View { + let message: String + let canRetry: Bool + let retry: () -> Void + let change: () -> Void + + var body: some View { + VStack(spacing: 16) { + Image(systemName: "wifi.exclamationmark").font(.system(size: 44)).foregroundStyle(.orange) + Text("Can't reach the Frame").font(.title3.bold()) + Text(message).multilineTextAlignment(.center).foregroundStyle(Color.frameMuted) + if canRetry { Text("Trying again every few seconds.").font(.footnote).foregroundStyle(Color.frameMuted) } + if canRetry { + Button("Try again", action: retry).buttonStyle(.borderedProminent).controlSize(.large) + } + Button(canRetry ? "Change headset" : "Back", action: change) + } + .padding(32) + .frame(maxWidth: 480) + } +} diff --git a/ios/FrameControl/Views/SetupView.swift b/ios/FrameControl/Views/SetupView.swift new file mode 100644 index 0000000..aab21e0 --- /dev/null +++ b/ios/FrameControl/Views/SetupView.swift @@ -0,0 +1,82 @@ +import SwiftUI +import UIKit + +/// Pairing: the Developer Mode password is used once, to add this phone's own +/// key to the Frame. It isn't stored. +struct SetupView: View { + @ObservedObject var model: AppModel + @State private var host = "" + @State private var user = "steamos" + @State private var password = "" + @FocusState private var focus: Field? + private enum Field { case host, user, password } + + var body: some View { + NavigationStack { + Form { + Section { + VStack(alignment: .leading, spacing: 10) { + Image("AppIconImage").resizable().frame(width: 64, height: 64).clipShape(RoundedRectangle(cornerRadius: 14)) + Text("Connect to your Steam Frame").font(.title2.bold()) + Text("See what the headset sees, install games and Android apps, and send files and text, from this \(model.deviceName).") + .foregroundStyle(Color.frameMuted) + } + .padding(.vertical, 6) + .listRowBackground(Color.clear) + } + Section { + Label("On the Frame, open Steam Settings → System and turn on Developer Mode.", systemImage: "1.circle") + Label("Then Developer → Set User Password.", systemImage: "2.circle") + Label("Enter the headset's address and that password here, once.", systemImage: "3.circle") + } header: { Text("Before you start") } + Section { + TextField("frame.local or 192.168.1.20", text: $host) + .textContentType(.URL).keyboardType(.URL).autocorrectionDisabled().textInputAutocapitalization(.never) + .focused($focus, equals: .host).submitLabel(.next).onSubmit { focus = .password } + TextField("User", text: $user) + .autocorrectionDisabled().textInputAutocapitalization(.never).focused($focus, equals: .user) + SecureField("Developer Mode password", text: $password) + .textContentType(.password).focused($focus, equals: .password).submitLabel(.go).onSubmit(pair) + } header: { Text("Headset") } footer: { + Text("The password is only used to add this \(model.deviceName)'s own SSH key to the Frame; it isn't saved. The Frame and this \(model.deviceName) need to be on the same network, or both on Tailscale.") + } + Section { + Button(action: pair) { + Text("Pair").frame(maxWidth: .infinity).fontWeight(.semibold) + } + .disabled(host.trimmingCharacters(in: .whitespaces).isEmpty || password.isEmpty) + if model.settings != nil { + Button("Use \(model.settings!.host) again") { Task { await model.connect() } } + Button("Forget this headset", role: .destructive) { Task { await model.forget() } } + } + } + Section { + Text(model.authorizedKeysLine) + .font(.system(.caption2, design: .monospaced)).lineLimit(3).textSelection(.enabled) + Button("Copy this \(model.deviceName)'s key") { UIPasteboard.general.string = model.authorizedKeysLine } + Button("Connect with the key") { + let (h, u) = (host, user) + Task { await model.useKey(host: h, user: u) } + } + .disabled(host.trimmingCharacters(in: .whitespaces).isEmpty) + } header: { Text("Or add the key yourself") } footer: { + Text("If you already reach the Frame over SSH, add this line to ~/.ssh/authorized_keys there, then connect without a password.") + } + } + .scrollContentBackground(.hidden) + .background(Color.frameBackground) + .navigationTitle("Frame Control") + .navigationBarTitleDisplayMode(.inline) + } + .onAppear { + host = model.settings?.host ?? "frame.local" + user = model.settings?.user ?? "steamos" + } + } + + private func pair() { + let (h, u, p) = (host, user, password) + password = "" + Task { await model.pair(host: h, user: u, password: p) } + } +} diff --git a/ios/FrameControl/Web/WebShell.swift b/ios/FrameControl/Web/WebShell.swift new file mode 100644 index 0000000..afd23e4 --- /dev/null +++ b/ios/FrameControl/Web/WebShell.swift @@ -0,0 +1,187 @@ +import SwiftUI +import UIKit +import WebKit + +/// The Frame Control page, served by the server on the headset, in a web view. +/// window.frameApp (the same bridge the desktop app's preload.js provides) lets +/// the page use the phone: clipboard, saving images, other apps, install links. +struct WebShell: UIViewRepresentable { + let url: URL + @ObservedObject var model: AppModel + + func makeCoordinator() -> Coordinator { Coordinator(model: model) } + + func makeUIView(context: Context) -> WKWebView { + let config = WKWebViewConfiguration() + let content = WKUserContentController() + content.addUserScript(WKUserScript(source: Self.bridge, injectionTime: .atDocumentStart, forMainFrameOnly: true)) + content.addScriptMessageHandler(context.coordinator, contentWorld: .page, name: "frameApp") + config.userContentController = content + config.allowsInlineMediaPlayback = true + let web = WKWebView(frame: .zero, configuration: config) + web.navigationDelegate = context.coordinator + web.uiDelegate = context.coordinator + web.isOpaque = false + web.backgroundColor = UIColor(red: 0.055, green: 0.078, blue: 0.106, alpha: 1) + web.scrollView.backgroundColor = web.backgroundColor + web.scrollView.contentInsetAdjustmentBehavior = .never // the page pads for the safe area itself + web.allowsBackForwardNavigationGestures = false + #if DEBUG + web.isInspectable = true + #endif + context.coordinator.web = web + web.load(URLRequest(url: url)) + return web + } + + func updateUIView(_ web: WKWebView, context: Context) { + if context.coordinator.loaded != url { + context.coordinator.loaded = url + web.load(URLRequest(url: url)) + } + context.coordinator.deliverInstallLinks() + } + + static let bridge = """ + (() => { + const call = (name, arg) => window.webkit.messageHandlers.frameApp.postMessage({ name, arg: arg ?? null }); + let installCb = null; + window.frameApp = { + platform: "ios", + readClipboard: () => call("readClipboard"), + setUpConnection: () => call("setUpConnection"), + open: (what) => call("open", what), + saveImages: (images) => call("saveImages", images), + onInstallLink: (cb) => { installCb = cb; return call("installLinkReady"); }, + }; + window.__frameInstallLink = (req) => { if (installCb) installCb(req); }; + })(); + """ + + final class Coordinator: NSObject, WKScriptMessageHandlerWithReply, WKNavigationDelegate, WKUIDelegate { + let model: AppModel + weak var web: WKWebView? + var loaded: URL? + private var installReady = false + + init(model: AppModel) { self.model = model } + + // MARK: bridge + + @MainActor + func userContentController(_ controller: WKUserContentController, didReceive message: WKScriptMessage, + replyHandler: @escaping (Any?, String?) -> Void) { + guard let body = message.body as? [String: Any], let name = body["name"] as? String else { + return replyHandler(nil, "bad message") + } + let arg = body["arg"] + switch name { + case "readClipboard": + replyHandler(UIPasteboard.general.string ?? "", nil) + case "setUpConnection": + model.showSetup() + replyHandler(nil, nil) + case "open": + let result = open(arg as? String ?? "") + replyHandler(result.message.map { ["message": $0] }, result.error) + case "saveImages": + let images = (arg as? [[String: Any]] ?? []).compactMap { item -> UIImage? in + guard let b64 = item["data"] as? String, let data = Data(base64Encoded: b64) else { return nil } + return UIImage(data: data) + } + guard !images.isEmpty else { return replyHandler(nil, "No images to save") } + share(images) + replyHandler(["message": "Choose Save Image to keep \(images.count == 1 ? "it" : "them") in Photos"], nil) + case "installLinkReady": + installReady = true + deliverInstallLinks() + replyHandler(nil, nil) + default: + replyHandler(nil, "unknown request \(name)") + } + } + + @MainActor + func deliverInstallLinks() { + guard installReady, let web, !model.pendingInstallLinks.isEmpty else { return } + let links = model.pendingInstallLinks + model.pendingInstallLinks = [] + for link in links { + let req = ["kind": link.kind.rawValue, "target": link.target] + guard let json = try? JSONSerialization.data(withJSONObject: req), let text = String(data: json, encoding: .utf8) else { continue } + web.evaluateJavaScript("window.__frameInstallLink(\(text))") + } + } + + /// SSH, SFTP, Steam Link and remote desktop open in the apps that handle them. + @MainActor + private func open(_ what: String) -> (message: String?, error: String?) { + guard let s = model.settings else { return (nil, "Not paired with a Frame") } + let host = s.host.contains(":") ? "[\(s.host)]" : s.host + let target: (url: String, app: String, store: String) + switch what { + case "terminal": target = ("ssh://\(s.user)@\(host):\(s.port)", "an SSH app such as Blink Shell or Termius", "https://apps.apple.com/search?term=ssh") + case "sftp": target = ("sftp://\(s.user)@\(host):\(s.port)", "an SFTP app such as Termius or Secure ShellFish", "https://apps.apple.com/search?term=sftp") + case "steamlink": target = ("steamlink://", "Steam Link", "https://apps.apple.com/app/steam-link/id1246969117") + case "rdp": target = ("rdp://full%20address=s:\(s.host):3389", "Windows App (Microsoft Remote Desktop)", "https://apps.apple.com/app/windows-app/id714464092") + default: return (nil, "Can't open \(what) on this \(model.deviceName)") + } + guard let url = URL(string: target.url) else { return (nil, "Bad address") } + if UIApplication.shared.canOpenURL(url) { + UIApplication.shared.open(url) + return ("Opening \(target.app)", nil) + } + if let store = URL(string: target.store) { UIApplication.shared.open(store) } + return (nil, "Install \(target.app) to open this; opening the App Store") + } + + @MainActor + private func share(_ images: [UIImage]) { + guard let web, let root = web.window?.rootViewController else { return } + let sheet = UIActivityViewController(activityItems: images, applicationActivities: nil) + sheet.popoverPresentationController?.sourceView = web + sheet.popoverPresentationController?.sourceRect = CGRect(x: web.bounds.midX, y: web.bounds.midY, width: 1, height: 1) + (root.presentedViewController ?? root).present(sheet, animated: true) + } + + // MARK: navigation: the app's page stays here; other sites open in Safari + + func webView(_ webView: WKWebView, decidePolicyFor action: WKNavigationAction, + decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { + guard let url = action.request.url else { return decisionHandler(.cancel) } + if url.host == "127.0.0.1" || url.scheme == "about" || url.scheme == "blob" || url.scheme == "data" { + return decisionHandler(.allow) + } + UIApplication.shared.open(url) + decisionHandler(.cancel) + } + + func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, + for action: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? { + if let url = action.request.url { UIApplication.shared.open(url) } // target="_blank" links + return nil + } + + // MARK: alert() and confirm(), which the page uses before removing things + + func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, + initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) { + present(message, actions: [UIAlertAction(title: "OK", style: .default) { _ in completionHandler() }], fallback: completionHandler) + } + + func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, + initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) { + present(message, actions: [ + UIAlertAction(title: "Cancel", style: .cancel) { _ in completionHandler(false) }, + UIAlertAction(title: "OK", style: .default) { _ in completionHandler(true) }, + ], fallback: { completionHandler(false) }) + } + + private func present(_ message: String, actions: [UIAlertAction], fallback: @escaping () -> Void) { + guard let root = web?.window?.rootViewController else { return fallback() } + let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert) + actions.forEach(alert.addAction) + (root.presentedViewController ?? root).present(alert, animated: true) + } + } +} diff --git a/ios/FrameControlTests/FrameControlTests.swift b/ios/FrameControlTests/FrameControlTests.swift new file mode 100644 index 0000000..d1d5a99 --- /dev/null +++ b/ios/FrameControlTests/FrameControlTests.swift @@ -0,0 +1,54 @@ +import CryptoKit +import XCTest +@testable import Frame_Control + +final class InstallLinkTests: XCTestCase { + func testAcceptsManifestAndURLLinks() { + XCTAssertEqual(InstallLink("frame-control://install?manifest=https://example.com/app.json"), + InstallLink("frame-control://install/?manifest=https://example.com/app.json")) + XCTAssertEqual(InstallLink("frame-control://install?url=https://example.com/a.apk")?.kind, .url) + XCTAssertEqual(InstallLink("FRAME-CONTROL://install?manifest=https://example.com/m.json")?.target, "https://example.com/m.json") + } + + func testRejectsAnythingElse() { + for raw in ["frame-control://other?url=https://example.com/a.apk", + "frame-control://install?url=ftp://example.com/a.apk", + "frame-control://install?url=https://user:pw@example.com/a.apk", + "frame-control://install?url=https://example.com/a&manifest=https://example.com/b", + "frame-control://install?url=https://a.example/x&url=https://b.example/y", + "frame-control://install?url=", + "frame-control://install/deeper?url=https://example.com/a.apk", + "https://example.com/?url=https://example.com/a.apk", + "frame-control://install?url=https://example.com/" + String(repeating: "a", count: 2100)] { + XCTAssertNil(InstallLink(raw), raw) + } + } +} + +final class HeadsetServerTests: XCTestCase { + func testReadsThePortTheServerPrints() { + XCTAssertEqual(HeadsetServer.port(in: "Frame Control on http://127.0.0.1:41234 (alias: frame; Ctrl-C to stop)\n"), 41234) + XCTAssertNil(HeadsetServer.port(in: "Traceback (most recent call last):")) + } + + func testBundleIsInTheApp() throws { + let bundle = try HeadsetServer.Bundle.fromApp() + XCTAssertGreaterThan(bundle.data.count, 100_000) + XCTAssertEqual(bundle.version.count, 16) + } +} + +final class KeyTests: XCTestCase { + func testAuthorizedKeysLine() { + let line = DeviceKey.authorizedKeysLine(Curve25519.Signing.PrivateKey(), comment: "frame-control@iPhone") + let parts = line.split(separator: " ") + XCTAssertEqual(parts.count, 3) + XCTAssertEqual(parts[0], "ssh-ed25519") + XCTAssertEqual(Data(base64Encoded: String(parts[1]))?.count, 51) // string "ssh-ed25519" + 32-byte key + XCTAssertEqual(parts[2], "frame-control@iPhone") + } + + func testShellQuote() { + XCTAssertEqual(shellQuote("it's"), "'it'\\''s'") + } +} diff --git a/ios/project.yml b/ios/project.yml new file mode 100644 index 0000000..8d91aef --- /dev/null +++ b/ios/project.yml @@ -0,0 +1,76 @@ +name: FrameControl +options: + bundleIdPrefix: com.saphid + deploymentTarget: + iOS: "17.0" + createIntermediateGroups: true +packages: + Citadel: + url: https://github.com/orlandos-nl/Citadel.git + exactVersion: 0.12.1 +settings: + base: + SWIFT_VERSION: "5.0" + MARKETING_VERSION: "0.1.0" + CURRENT_PROJECT_VERSION: "1" +targets: + FrameControl: + type: application + platform: iOS + sources: + - path: FrameControl + dependencies: + - package: Citadel + settings: + base: + PRODUCT_BUNDLE_IDENTIFIER: com.saphid.framecontrol + PRODUCT_NAME: Frame Control + TARGETED_DEVICE_FAMILY: "1,2" + ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon + GENERATE_INFOPLIST_FILE: YES + INFOPLIST_FILE: FrameControl/Info.plist + ENABLE_USER_SCRIPT_SANDBOXING: NO + info: + path: FrameControl/Info.plist + properties: + CFBundleDisplayName: Frame Control + UILaunchScreen: + UIColorName: "" + UISupportedInterfaceOrientations: [UIInterfaceOrientationPortrait, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight] + UISupportedInterfaceOrientations~ipad: [UIInterfaceOrientationPortrait, UIInterfaceOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight] + UIUserInterfaceStyle: Dark + NSLocalNetworkUsageDescription: Frame Control connects to your Steam Frame over your local network with SSH. + NSAppTransportSecurity: + NSAllowsLocalNetworking: true + LSApplicationQueriesSchemes: [ssh, sftp, steamlink, rdp] + CFBundleURLTypes: + - CFBundleURLName: com.saphid.framecontrol.install + CFBundleURLSchemes: [frame-control] + preBuildScripts: + - name: Pack the Frame bundle + # The server, headset helpers and catalogue, as the app copies them to the Frame. + script: | + python3 "${SRCROOT}/scripts/make_frame_bundle.py" "${DERIVED_FILE_DIR}/frame-bundle.tar.gz" > "${DERIVED_FILE_DIR}/frame-bundle.version" + mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + cp "${DERIVED_FILE_DIR}/frame-bundle.tar.gz" "${DERIVED_FILE_DIR}/frame-bundle.version" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/" + basedOnDependencyAnalysis: false + FrameControlTests: + type: bundle.unit-test + platform: iOS + sources: + - path: FrameControlTests + dependencies: + - target: FrameControl + settings: + base: + GENERATE_INFOPLIST_FILE: YES + TEST_HOST: "$(BUILT_PRODUCTS_DIR)/Frame Control.app/Frame Control" + BUNDLE_LOADER: "$(TEST_HOST)" +schemes: + FrameControl: + build: + targets: + FrameControl: all + FrameControlTests: [test] + test: + targets: [FrameControlTests] diff --git a/ios/scripts/icon-ios.svg b/ios/scripts/icon-ios.svg new file mode 100644 index 0000000..7be30e8 --- /dev/null +++ b/ios/scripts/icon-ios.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/scripts/make_frame_bundle.py b/ios/scripts/make_frame_bundle.py new file mode 100644 index 0000000..c26083b --- /dev/null +++ b/ios/scripts/make_frame_bundle.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +"""Pack what Frame Control's server needs to run on the Frame itself (the files the +desktop app ships, plus ui/local-bin) into one reproducible .tar.gz. + +The iPhone app copies it to ~/.cache/frame-control/ on the Frame and +starts ui/server.py there. is the SHA-256 of the archive, so a new +build replaces an old one and an unchanged one isn't copied again. + +Usage: make_frame_bundle.py OUT.tar.gz (prints the version) +""" +import gzip +import hashlib +import io +import sys +import tarfile +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +PATTERNS = ["ui/*.py", "ui/*.html", "ui/local-bin/*", "scripts/*.sh", "frame/android/*.sh", "frame/android/*.py", + "frame/devkit-utils/**/*", "apk-catalog/*.py", "apk-catalog/pins.json", "apk-catalog/site/apps.js"] + + +def files(): + found = set() + for pattern in PATTERNS: + for p in ROOT.glob(pattern): + if p.is_file() and "__pycache__" not in p.parts: + found.add(p) + return sorted(found) + + +def build(): + raw = io.BytesIO() + with tarfile.open(fileobj=raw, mode="w", format=tarfile.PAX_FORMAT) as tar: + for p in files(): + info = tarfile.TarInfo(str(p.relative_to(ROOT))) + data = p.read_bytes() + info.size, info.mtime, info.uid, info.gid, info.uname, info.gname = len(data), 0, 0, 0, "", "" + info.mode = 0o755 if p.stat().st_mode & 0o111 else 0o644 + tar.addfile(info, io.BytesIO(data)) + out = io.BytesIO() + with gzip.GzipFile(fileobj=out, mode="wb", mtime=0) as gz: + gz.write(raw.getvalue()) + return out.getvalue() + + +if __name__ == "__main__": + if len(sys.argv) != 2: + sys.exit(__doc__) + data = build() + Path(sys.argv[1]).write_bytes(data) + print(hashlib.sha256(data).hexdigest()[:16]) diff --git a/tests/test_server.py b/tests/test_server.py index 2dd9484..efae991 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -217,6 +217,60 @@ class ServerGuards(unittest.TestCase): self.assertEqual(self.post("/api/nope", {})[0], 404) +@unittest.skipIf(os.name == "nt", "runs on the Frame (Linux); local-bin/ssh is a POSIX shell script") +class LocalMode(unittest.TestCase): + """FRAME_LOCAL=1, as the iPhone app starts the server on the Frame: its own key + guards /api/, and ssh goes to ui/local-bin/ssh, which runs commands here.""" + + KEY = "0123456789abcdef0123456789abcdef" + + @classmethod + def setUpClass(cls): + env = {**os.environ, "FRAME_LOCAL": "1", "FRAME_UI_KEY": cls.KEY, "FRAME_DEVICE": "iPhone", + "PYTHONDONTWRITEBYTECODE": "1"} + cls.log = tempfile.TemporaryFile() + cls.proc = subprocess.Popen([sys.executable, str(ROOT / "ui" / "server.py"), "--port", "0", "--exit-on-eof"], + env=env, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=cls.log, text=True) + line = cls.proc.stdout.readline() + cls.port = int(line.split("127.0.0.1:")[1].split()[0]) # --port 0: the server prints the port it took + + @classmethod + def tearDownClass(cls): + cls.proc.stdin.close() # --exit-on-eof: the phone disconnecting + cls.proc.wait(timeout=15) + cls.proc.stdout.close() + cls.log.close() + + def request(self, method, path, body=None, key=KEY): + conn = http.client.HTTPConnection("127.0.0.1", self.port, timeout=20) + conn.request(method, path, body=json.dumps(body).encode() if body is not None else None, + headers={"X-Frame-UI": key, "Content-Type": "application/json"}) + r = conn.getresponse() + data = json.loads(r.read() or b"{}") + conn.close() + return r.status, data + + def test_needs_the_session_key(self): + self.assertEqual(self.request("GET", "/api/host", key="1")[0], 403) + self.assertEqual(self.request("GET", "/api/host", key="")[0], 403) + status, host = self.request("GET", "/api/host") + self.assertEqual(status, 200) + self.assertEqual(host, {"os": "SteamOS", "fileManager": None, "computer": "iPhone", "mobile": True}) + + def test_commands_run_locally(self): + # frame_titles lists ~/devkit-game here; with nothing there, the list is empty rather than an ssh error. + status, body = self.request("GET", "/api/titles") + self.assertEqual(status, 200, body) + self.assertIsInstance(body["titles"], list) + + def test_open_is_for_the_app_and_power_needs_a_password(self): + self.assertEqual(self.request("POST", "/api/open", {"what": "terminal"})[0], 400) + status, body = self.request("POST", "/api/open", {"what": "reboot"}) + self.assertEqual(status, 400) + self.assertIn("password", body["error"]) + self.assertEqual(self.request("POST", "/api/open", {"what": "reboot", "password": "a\nb"})[0], 400) + + class UnreachableMessages(unittest.TestCase): """Only ssh's own connection failures are reworded; other errors keep their text.""" diff --git a/ui/index.html b/ui/index.html index 0cb771a..c97603d 100644 --- a/ui/index.html +++ b/ui/index.html @@ -2,7 +2,7 @@ - + Frame Control @@ -327,10 +371,10 @@ FRAME CONTROL

Connecting… @@ -547,10 +591,10 @@

Send to Frame

- Drop files here, or click to choose + Drop files here, or click to chooseTap to choose files Files land in ~/Downloads. .apk files install as their own Android app; a game's .zip, folder or .exe becomes a title in the Steam library. - You can also drop files anywhere in this window. + You can also drop files anywhere in this window.
@@ -585,8 +629,10 @@ -
Sleep, Restart and Shut down open a terminal window for the Developer Mode password.
-