No description
- Java 96.1%
- Shell 3.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| app | ||
| gradle/wrapper | ||
| scripts | ||
| .gitignore | ||
| build.gradle | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle | ||
SMS2Discord
Kleine native Android-App, die alle eingehenden SMS an einen Discord-Webhook weiterleitet. Keine Fremd-SDKs, kein Tracking, keine Werbung, keine Cloud-Backups.
Funktionen
- Empfang ueber den Android-System-Broadcast
SMS_RECEIVED - Multipart-SMS werden vor dem Versand zusammengesetzt
- Absender, SMS-Text und Empfangszeit in UTC
- Versand mit HTTPS und
allowed_mentions: [], damit SMS keine Discord-Mentions ausloesen - Nachrichten ueber dem Discord-Limit werden aufgeteilt
- Persistente Warteschlange bei fehlendem Netz oder Discord-Fehlern
- Systemverwalteter
JobSchedulermit exponentiellem Retry - Wiederanlauf nach Reboot und App-Update
- Webhook nur in den privaten App-Einstellungen, niemals in Logs oder Cloud-Backups
- Release ohne Debug-Flag und ohne Cleartext-Traffic
Installation
dist/SMS2Discord-1.0.0.apkauf das Android-Telefon kopieren und installieren. Installation aus unbekannten Quellen fuer den Browser/Dateimanager erlauben.- App oeffnen und ueber SMS-Berechtigungen pruefen
SMS empfangenundSMS lesenerlauben. - In Discord im gewuenschten Kanal: Kanal bearbeiten → Integrationen → Webhooks → Neuer Webhook und URL kopieren.
- URL in der App eintragen, Webhook speichern, danach Test an Discord senden.
- Fuer zuverlaessigen Dauerbetrieb die Akkuoptimierung fuer SMS2Discord deaktivieren.
- Telefon eingeschaltet, mit WLAN/Mobilfunk und nach Moeglichkeit am Ladegeraet lassen.
Wichtig: Alle Personen mit Zugriff auf den Discord-Kanal koennen die 2FA-Codes lesen. Einen privaten, eng begrenzten Kanal verwenden. Der Webhook ist ein Geheimnis und gehoert nicht in Chats, Screenshots oder Git.
Build
Voraussetzungen: JDK 21, Android SDK Platform 35, Build-Tools 35.0.0.
export ANDROID_HOME=/opt/android-sdk
./gradlew testDebugUnitTest lintDebug assembleDebug
Signierter Release:
scripts/build-release.sh
Das Skript nutzt bei vorhandener lokaler Signaturkonfiguration:
/root/.hermes/secrets/sms2discord-release.jks/root/.hermes/secrets/sms2discord-keystore.properties
Die Dateien bleiben ausserhalb des Repos und sind per .gitignore ausgeschlossen. Alternativ koennen SMS2DISCORD_KEYSTORE, SMS2DISCORD_STORE_PASSWORD und SMS2DISCORD_KEY_PASSWORD selbst gesetzt werden.
APK pruefen:
$ANDROID_HOME/build-tools/35.0.0/apksigner verify --verbose --print-certs dist/SMS2Discord-1.0.0.apk
$ANDROID_HOME/build-tools/35.0.0/aapt dump badging dist/SMS2Discord-1.0.0.apk
sha256sum dist/SMS2Discord-1.0.0.apk
Betriebsgrenzen
- Ohne Strom, Netz oder gueltigen Webhook kann das Telefon nicht zustellen. Nachrichten bleiben dann in der lokalen Warteschlange.
- Discord-Rate-Limits werden durch Retry abgefedert, nicht durch Dauerfeuer.
- Ein echter Discord- und Geraete-Endtest erfolgt nach der Installation ueber den Testbutton; der Build- und Signaturtest allein ersetzt ihn nicht.