GingerCal 1.3: month view, Galician interface, Nginx Proxy Manager bridge option
This commit is contained in:
1 parent
f44ecf4871
commit
42c3d6da91
39 files changed
+1409
-220
No files matched your search
@@ -5,7 +5,15 @@ A small native calendar client for Gingerbread (API 9/10). Built for a Samsung G
|
||||
|
||||
**What it does**
|
||||
|
||||
- Agenda of upcoming events grouped by day, colour-coded per calendar, cached offline (SQLite)
|
||||
- Month view: a 6-week grid with a coloured mark per event (calendar colour), today outlined,
|
||||
the selected day's events listed below. Swipe or tap the arrows to change month; tap the
|
||||
month name for today; long-press a day to create an event on it. Months outside the synced
|
||||
window are fetched from the server when you open them
|
||||
- Agenda view: upcoming events grouped by day (Menu > View switches; the choice is remembered)
|
||||
- Interface in Galician (default) or English: Settings > Lingua / Language. Month and weekday
|
||||
names are built in, since Android 2.3 has no Galician locale data; in Galician weeks start
|
||||
on Monday. The system date/time pickers follow the phone's own language
|
||||
- Offline cache (SQLite) of the last 35 days and the next 60 (Settings: "Days ahead")
|
||||
- Create, edit and delete events (title, all-day, start/end, location, notes, alarm)
|
||||
- Repeating events are shown correctly (server-side expansion, with a client-side fallback);
|
||||
they can be deleted on the phone but edited only in Nextcloud
|
||||
@@ -66,6 +74,24 @@ Protocol** on the resource, add the `pp-transport-v1/v2` block to Pangolin's
|
||||
`listen 8443 ssl proxy_protocol;`, `set_real_ip_from <newt address>;`,
|
||||
`real_ip_header proxy_protocol;`. Enable both sides together or every connection fails.
|
||||
|
||||
### Option C: Nginx Proxy Manager with port forwarding (no Pangolin)
|
||||
|
||||
If your router already forwards 80/443 to Nginx Proxy Manager, the legacy endpoint can live in
|
||||
NPM itself on its own port. NPM's normal sites on 443 keep their modern TLS settings.
|
||||
|
||||
1. `./bridge/make-cert.sh nxc.anosanube.ovh <npm>/data/legacy-caldav`, and note the fingerprint.
|
||||
2. Copy `bridge/npm/http.conf` to `<npm>/data/nginx/custom/http.conf`; if that file already
|
||||
exists, append the block to it. NPM includes it at the end of its `http` block.
|
||||
3. In NPM's `docker-compose.yml` add `- '8443:8443'` under `ports`, then `docker compose up -d`.
|
||||
4. Forward TCP 8443 on the router to the NPM host.
|
||||
5. Phone: `https://nxc.anosanube.ovh:8443`, then tap Trust if the fingerprint matches.
|
||||
|
||||
It forwards to NPM's own `nxc.anosanube.ovh` proxy host over loopback HTTPS, so Nextcloud's
|
||||
backend address, HSTS and forced HTTPS need no extra handling. Check from a PC with
|
||||
`openssl s_client -connect nxc.anosanube.ovh:8443 -tls1 -cipher 'AES128-SHA:@SECLEVEL=0'`.
|
||||
At home, the phone needs your router to support NAT loopback (it already does if
|
||||
`https://nxc.anosanube.ovh` works from your Wi-Fi).
|
||||
|
||||
### Option B: home Wi-Fi only (no Pangolin)
|
||||
|
||||
Use `http://<nextcloud-LAN-IP>` as the server address. Nothing to set up, but it syncs only at
|
||||
@@ -104,7 +130,8 @@ you should turn `proxy_ssl_verify` on.
|
||||
3. Open GingerCal, Menu, Settings. In Nextcloud create an app password: Settings, Security,
|
||||
Devices & sessions. Fill in server, user, app password, then **Save and test connection**.
|
||||
|
||||
Menu key: Sync, New event, Calendars, Settings. Tap an event for details, Edit and Delete.
|
||||
Menu key: View (Month/Agenda), New event, Sync, Today, Calendars, Settings. Tap an event for
|
||||
details, Edit and Delete.
|
||||
|
||||
If installation fails, check the file arrived whole (53 KB; some browsers save a truncated or
|
||||
renamed `.apk.zip`) and that there are a few MB free on the internal storage. On a PC with
|
||||
@@ -135,9 +162,11 @@ Tests (desktop JVM, need a CalDAV server such as Radicale on :5232 with user `xo
|
||||
javac -d out src/org/gingercal/*.java test/org/gingercal/*.java
|
||||
java -cp out org.gingercal.CoreTest # discovery, sync, recurrence, create/edit/delete
|
||||
java -cp out org.gingercal.RedirectTest # forced-HTTPS / redirect-loop handling (no server needed)
|
||||
java -cp out org.gingercal.I18nTest # Galician dates, titles and messages
|
||||
```
|
||||
|
||||
`tools/check_api.py` verifies every framework call in the dex against published Android API
|
||||
`tools/check_i18n.py` (run by the build) fails if any interface text lacks a Galician
|
||||
translation or the placeholders differ. `tools/check_api.py` verifies every framework call in the dex against published Android API
|
||||
declarations.
|
||||
|
||||
## Layout
|
||||
@@ -145,7 +174,8 @@ declarations.
|
||||
- `src/` CalDAV core, platform-neutral: discovery, PROPFIND/REPORT, iCalendar, sync, pinning
|
||||
- `android/` activities, sync service, alarms, SQLite cache, Apache HttpClient transport
|
||||
- `stubs/` compile-only Android API 10 signatures (never packaged)
|
||||
- `bridge/` nginx legacy-TLS bridge: config, compose file, certificate script
|
||||
- `bridge/` legacy-TLS endpoint: standalone nginx (config, compose file), `npm/http.conf` for
|
||||
Nginx Proxy Manager, certificate script
|
||||
- `res/` app name; the icon is drawn at build time (mdpi + ldpi for the Galaxy Mini)
|
||||
- `tools/` icon, dex disassembler helper, zipalign, dex/API checkers, d8 workaround
|
||||
|
||||
|
||||
Reference in new issue
Block a user