CH-J SM Mobilegestión de servidores a través de SSH
Menú
Fuente publicada

CH-J SM Mobile

Busque directorios y archivos para obtener una versión de aplicación específica.

Descargar fuente ZIP
CH-J / SM Mobile 134 archivos
sm-mobile-20261016T050549Z-3678f2a05fa9 Añadido: · Construido:
Archivos
README.md Añadido: Fecha no registrada 9,4 KB · 161 líneas
Descargar archivo
1# SM Mobile — CH-J
3SM Mobile is a standalone Android and iOS edition of CH-J Server Manager, built with Flutter and Dart. It connects directly to servers over SSH and SFTP, without an account, cloud service, or telemetry. The project is currently a development alpha (0.0.1). The desktop application is not a dependency.
5## Requirements
7- Flutter with Dart compatible with the SDK constraint in `pubspec.yaml` (`>=3.10.0 <4.0.0`).
8- For Android development: OpenJDK 17, Android SDK and platform tools, and an Android device or emulator. Android Studio is optional; the command-line tools can be used instead.
9- For iOS development: macOS, Xcode, CocoaPods, and an iOS device or simulator.
10- Python 3 for the build and integration test scripts.
12The application supports Android 11 and later (API 30+), and iOS 15 and later on iPhone and iPad. Run `flutter doctor -v` to check your development environment before building.
14## Getting started
16Run the following commands from the project directory:
18```sh
19flutter pub get
20flutter devices
21flutter run -d <device-id>
22```
24Replace `<device-id>` with a device listed by `flutter devices`. To use an Android emulator, list available emulators with `flutter emulators` and launch one with `flutter emulators --launch <emulator-id>`. On macOS, you can open the iOS Simulator with `open -a Simulator`.
26For VS Code, install the Dart and Flutter extensions, open `SM Mobile.code-workspace`, select a device in the status bar, and press F5.
28## Using the application
301. Choose a language, read the security recommendations and the full CH-J license version 1.14, and explicitly accept the license.
312. Create a Vault with a master password of 12–128 characters. This password cannot be recovered. You can enable biometric authentication or the device passcode later in Settings.
323. Add a server. Hostnames are stored as entered; DNS results are never written back to profiles. IPv6 addresses can also be entered in square brackets.
334. Select a server and connect using a password or a securely stored private key. Private key passphrases are requested when connecting and are not stored.
345. Verify the SSH host key fingerprint through an independent channel before accepting it for the first time. A change to a known host key blocks the connection.
356. Use the terminal with a real PTY shell. CTRL and ALT apply to the next input only; ESC, TAB, and arrow keys are available on the scrollable toolbar.
367. Use Files to browse over SFTP, upload files, download through the system share/save interface, rename items, create directories, and delete items after confirmation. Directory deletion is non-recursive. Existing destination files are not overwritten; choose a different name.
378. Open Monitor to collect Linux metrics while that screen is visible and the application is in the foreground. Diagnostics provides IPv4/IPv6 DNS and TCP checks, plus details of the active SSH connection. TCP checks are not ICMP ping.
39On phones, Servers, Terminal, and Files appear in the bottom navigation bar; the last item opens Monitor, Diagnostics, and Settings. Wider displays use a scrollable navigation sidebar. Settings offers Czech, German, and English, along with light, dark, and system themes.
41## Importing and exporting profiles
43Settings → Import / Export profiles uses the desktop-compatible `chj-server-profiles` JSON format, version 1. Each profile contains only `name`, `host`, `username`, and `port`. Passwords, private keys, passphrases, and host key fingerprints are never transferred.
45Imports are limited to 5 MiB and 10,000 records. A preview lets you skip duplicates, update existing profiles, or create copies. Updating a profile clears its credentials. Equivalent IPv6 representations are normalized only for duplicate comparison; hostnames are not resolved. Configure authentication after importing or duplicating profiles. CSV is not supported in the mobile edition.
47## Building and validation
49Use the build script when preparing builds to share. Each run creates a new build ID, refreshes third-party license notices, and runs static analysis and tests:
51```sh
52python3 tool/build.py all
53```
55The `all` target requires macOS and both Android and iOS toolchains. It produces the following development artifacts:
57- APK: `build/app/outputs/flutter-apk/app-debug.apk`
58- App bundle: `build/app/outputs/bundle/debug/app-debug.aab`
59- iOS simulator application: `build/ios/iphonesimulator/Runner.app`
61The APK and app bundle produced by this command are debug builds, not release packages. To build a single target, use `apk`, `aab`, or `ios-simulator` instead of `all`.
63You can also run the checks and builds individually:
65```sh
66flutter pub get
67flutter analyze
68flutter test
69flutter build apk --debug
70flutter build appbundle --debug
71flutter build ios --simulator
72```
74### Website distribution
76```sh
77python3 tool/build.py distribution
78# Optional simulator build with the same build ID:
79flutter build ios --simulator --debug
80python3 tool/prepare_release.py
81```
83This target requires macOS, both toolchains, and `android/key.properties`. It creates a signed release APK and AAB plus an **unsigned** iOS device application, all with the same new build ID. An unsigned IPA made from that application requires your own Apple signing and provisioning before installation; it is not an installable Ad Hoc release. The AAB is for distribution tooling, not direct installation. Use the APK on Android.
85The website offers separate Desktop and Mobile editions and a source browser with the exact mobile build snapshot. Source archives exclude signing keys, password configuration, provisioning profiles, local SDK paths, caches and build outputs. Keep the Android release keystore and its password configuration backed up privately; future Android updates must use the same signing identity.
87### Android release
89Create your own `android/key.properties` with `storeFile`, `storePassword`, `keyAlias`, and `keyPassword`, then run:
91```sh
92python3 tool/build.py aab --release
93```
95Signing keys and the password configuration file are excluded by `.gitignore`. Release builds do not fall back to a debug signing identity.
97### iOS release
99Prepare an unsigned device build:
101```sh
102python3 tool/build.py ios
103```
105Open `ios/Runner.xcworkspace`, configure your own development team, provisioning, and distribution certificate, then use Xcode's Archive and App Store Connect workflow. The script does not publish anything automatically.
107Direct `flutter build` commands retain the existing build ID. Do not reuse that ID for a different distributed build; use `tool/build.py` to generate a new one.
109## Testing
111`flutter test` covers models, profile import/export, Vault cryptography, host key verification, license acceptance, application lifecycle, and widgets. Six network scenarios are skipped unless explicitly enabled. A successful standard test run does not replace these integration tests.
113### Local OpenSSH integration tests
115On macOS or Linux, with OpenSSH available and port 22229 free, run:
117```sh
118python3 tool/test_openssh.py
119python3 tool/test_openssh.py --device <ios-simulator-id>
120python3 tool/test_openssh.py --device <android-device-id> --android
121```
123These are alternative invocations for the default test runner, an iOS simulator, or an Android emulator. Replace device placeholders with the appropriate IDs.
125The script creates temporary keys in a private directory, starts a server listening only on `127.0.0.1`, and stops it after testing. It does not configure the system SSH server or modify `~/.ssh`. The test account is the current local user. The fixture is not chrooted, so test operations stay within a temporary directory. Run it on a development machine. Docker is not required.
127For physical devices, follow the scenarios in [Testing](docs/TESTING.md) against your own isolated test server.
129### Optional Linux container tests
131An optional container test covers a real Linux environment, SSH password authentication, and monitoring. Docker and Colima are test tools, not dependencies of the application or its builds.
133With a Docker-compatible runtime running, use:
135```sh
136python3 tool/test_linux.py --context <docker-context>
137```
139For example, on macOS with Colima installed:
141```sh
142colima start --profile sm-mobile-test --vm-type vz --cpu 2 --memory 2 --disk 10
143python3 tool/test_linux.py --context colima-sm-mobile-test
144colima stop --profile sm-mobile-test
145```
147The fixture listens only on `127.0.0.1:22239`, uses a randomly generated password for each run, removes the container automatically, and pins the image by digest. See the [OpenSSH image documentation](https://docs.linuxserver.io/images/docker-openssh-server/) and [Colima project](https://github.com/abiosoft/colima) for the underlying tools.
149## Documentation
151- [Source audit](docs/AUDIT.md)
152- [Security](docs/SECURITY.md)
153- [Dependencies](docs/DEPENDENCIES.md)
154- [Test scenarios and results](docs/TESTING.md)
155- [Resolved components](docs/RESOLVED_COMPONENTS.md)
157## License
159This edition is licensed under the **CH-J Proprietary Software License 1.14**. See [LICENSE](LICENSE) for the full terms and [NOTICE](NOTICE) for distribution notices.
161Third-party components retain their own licenses. Full license texts are available in [Third-party notices](assets/legal/third_party_notices.txt), with a component list in [Resolved components](docs/RESOLVED_COMPONENTS.md). They are also available in the application under Settings → Component licenses. The security recommendations are adapted from the CH-J desktop project in Czech, German, and English.
SHA-25621120ce2eb68a02fc4b60880185eb6bab30d65fee40f78820e0a081aaa8c2fbd

CH-J Proprietary Software License 1.14 · La fuente se proporciona en el CH-J Proprietary Software License 1.14. Su disponibilidad no cambia los términos de la licencia ni otorga derechos adicionales.

Archivo SHA-256c486a807e4828998b9c57ab0f2e760f7980b31965fe118e89d3e1a5a2b65be65