No description
  • Kotlin 99.3%
  • Shell 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
sim fe768d066f
All checks were successful
ci/woodpecker/push/main Pipeline was successful
ci/woodpecker/tag/main Pipeline was successful
ci/woodpecker/release/main Pipeline was successful
1.3.3
2026-09-08 15:09:08 +02:00
.woodpecker CI: Use codeberg.org/s1m/android-sdk-image 2026-05-05 16:28:53 +02:00
app 1.3.3 2026-09-08 15:09:08 +02:00
fastlane/metadata/android 1.3.3 2026-09-08 15:09:08 +02:00
gradle Use armored keyring format for gradle dep verification 2026-08-27 14:33:12 +02:00
scripts Migrate from pass to passage 2026-01-11 09:07:02 +01:00
.editorconfig Lint 2025-09-30 16:51:39 +02:00
.gitignore Init 2024-12-24 14:53:28 +00:00
build.gradle.kts Use AGP 9.3.2 2026-08-26 18:53:09 +02:00
distributor Add symlinks to distrib modules 2025-08-28 10:47:54 +02:00
distributor_ui Add symlinks to distrib modules 2025-08-28 10:47:54 +02:00
gradle.properties Use AGP 9.3.2 2026-08-26 18:53:09 +02:00
gradlew Init 2024-12-24 14:53:28 +00:00
gradlew.bat Init 2024-12-24 14:53:28 +00:00
LICENSE Init 2024-12-24 14:53:28 +00:00
README.md Add verification-metadata 2026-08-27 10:54:54 +02:00
settings.gradle.kts Include distributor-base local substitution 2026-02-18 12:07:02 +01:00

Sunup - Android

UnifiedPush provider using Autopush

Get it on F-Droid Get it on IzzyOnDroid Get it on Codeberg

Usage

  1. Install this application
  2. Open it, and grant background usage without restrictions permission
  3. Register your application compatible with UnifiedPush (may be transparently done)

Self-host

It is possible to host your own Autopush server. Autopush is designed to work with Google BigTable but it is also possible to use it with redis.

For this:

  1. Clone Autopush
  2. Generate Fernet keys:
    1. Set a python virtual env, for instance: venv .venv && . .venv/bin/activate
    2. Install cryptography python -m pip install cryptography
    3. Run the generation script: python scripts/fernet_key.py
  3. Replace the following values in redis-docker-compose.yml:
    • AUTOCONNECT__CRYPTO_KEY
    • AUTOCONNECT__ENDPOINT_SCHEME
    • AUTOCONNECT__ENDPOINT_HOSTNAME
    • AUTOCONNECT__ENDPOINT_PORT
    • AUTOEND__CRYPTO_KEYS
    • AUTOEND__ENDPOINT_URL
  4. Setup a reverse proxy to add TLS support, for instance with caddy:
# Autoconnect endpoint
push.domain.tld {
  reverse_proxy 127.0.0.1:8080
}
# Autoend endpoint
updates.push.domain.tld {
  reverse_proxy 127.0.0.1:8000
}
  1. In the android app, change server to the autoconnect endpoint (here push.domain.tld).

Signing certificate hash

The package name along with the SHA-256 hash can be found below.

To verify the APK use the AppVerifier Android application or the apksigner tool.

org.unifiedpush.distributor.sunup
3B:33:D7:8A:5B:CA:C1:B9:52:75:6B:08:FE:88:30:CE:D3:87:AB:B6:B9:56:B0:2A:47:EF:80:32:1D:4A:2B:88

Developers

It is possible to configure a few things with build config:

Name Description Default
DEFAULT_API_URL Define the API Url used by default "https://push.services.mozilla.com"
URGENCY To add support for urgency requirement depending on the battery level false until this is supported by the main server

Debug Websocket connection

To debug the websocket connection with Autopush server, it's possible to use websocat

$ # Create reverse tcp connection from test device to our pc
$ adb reverse tcp:8081 tcp:8081
$ adb reverse tcp:8081 tcp:8081
$ # MITM the connection, and log messages
$ websocat -t log:ws-l:127.0.0.1:8081 wss://push.services.mozilla.com/

Then change <app/build.gradle.kts> DEFAULT_API_URL to http://127.0.0.1:8081.

Dependency verification

To update dependency verification: ./gradlew --write-verification-metadata pgp,sha256 --export-keys --refresh-keys help.

If some keys are ignored because they couldn't be fetched, remove them from <ignored-keys> in <gradle/verification-metadata.xml>, and run the previous command again.

Translations

You can contribute to translations on Weblate