# ranvirrox/gce-wifi-autologin architecture

> Architecture diagram of the GitHub repository ranvirrox/gce-wifi-autologin, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ranvirrox/gce-wifi-autologin
- Repository: https://github.com/ranvirrox/gce-wifi-autologin

## Overview

GCE Wi-Fi AutoLogin automates captive-portal sign-in through the app, a Quick Settings tile, or a home-screen widget. The documented workflow submits stored credentials, reports successful connectivity to Android, probes Google connectivity, and checks for mandatory updates. The README supports these capabilities and stages, but source excerpts were not provided, so implementation-level call wiring beyond that documented flow is uncertain.

Main entry points: [`app/src/main/java/com/example/AutoLogin/AuthClient.kt`](https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/AuthClient.kt) (Portal authentication), [`app/src/main/java/com/example/AutoLogin/MainActivity.kt`](https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/MainActivity.kt) (App interface), [`app/src/main/java/com/example/AutoLogin/MyTileServices.kt`](https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/MyTileServices.kt) (Quick Settings tile), [`app/src/main/java/com/example/AutoLogin/LoginWidgetProvider.kt`](https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/LoginWidgetProvider.kt) (Home widget)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Login entry points"]
  node_main["App interface<br/>[MainActivity.kt]"]
  node_tile["Quick Settings tile<br/>[MyTileServices.kt]"]
  node_widget["Home widget"]
end

subgraph group_auth["Authentication"]
  node_session[("Credential session<br/>[SessionManager.kt]")]
  node_authclient["Portal authentication<br/>[AuthClient.kt]"]
end

subgraph group_connectivity["Connectivity and updates"]
  node_android{{"Android connectivity"}}
  node_probe{{"Google connectivity probe"}}
  node_updates["Update check<br/>[MainActivity.kt]"]
end

node_user(("User"))
node_portal{{"24online portal"}}
node_updatehost{{"Update host"}}

node_user -->|"opens app"| node_main
node_user -->|"taps tile"| node_tile
node_user -->|"taps widget"| node_widget
node_main -->|"requests login"| node_authclient
node_tile -->|"triggers login"| node_authclient
node_widget -->|"triggers login"| node_authclient
node_session -->|"provides credentials"| node_authclient
node_authclient -->|"POST credentials"| node_portal
node_authclient -->|"reports success"| node_android
node_authclient -->|"verifies connectivity"| node_probe
node_main -->|"checks version"| node_updates
node_updates -->|"compares versions"| node_updatehost

click node_main "https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/MainActivity.kt"
click node_tile "https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/MyTileServices.kt"
click node_widget "https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/LoginWidgetProvider.kt"
click node_session "https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/SessionManager.kt"
click node_authclient "https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/AuthClient.kt"
click node_updates "https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/MainActivity.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_tile,node_widget,node_user toneBlue
class node_session,node_authclient toneAmber
class node_android,node_probe,node_updates toneMint
class node_portal,node_updatehost toneIndigo
```

## Components

### Login entry points

- [App interface](https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/MainActivity.kt): `app/src/main/java/com/example/AutoLogin/MainActivity.kt`
- [Quick Settings tile](https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/MyTileServices.kt): `app/src/main/java/com/example/AutoLogin/MyTileServices.kt`
- [Home widget](https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/LoginWidgetProvider.kt): `app/src/main/java/com/example/AutoLogin/LoginWidgetProvider.kt`

### Authentication

- [Credential session](https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/SessionManager.kt): `app/src/main/java/com/example/AutoLogin/SessionManager.kt`
- [Portal authentication](https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/AuthClient.kt): `app/src/main/java/com/example/AutoLogin/AuthClient.kt`

### Connectivity and updates

- **Android connectivity**
- **Google connectivity probe**
- [Update check](https://github.com/ranvirrox/gce-wifi-autologin/blob/main/app/src/main/java/com/example/AutoLogin/MainActivity.kt): `app/src/main/java/com/example/AutoLogin/MainActivity.kt`

### Other components

- **User**
- **24online portal**
- **Update host**

## Connections

- User → App interface: opens app
- User → Quick Settings tile: taps tile
- User → Home widget: taps widget
- App interface → Portal authentication: requests login
- Quick Settings tile → Portal authentication: triggers login
- Home widget → Portal authentication: triggers login
- Credential session → Portal authentication: provides credentials
- Portal authentication → 24online portal: POST credentials
- Portal authentication → Android connectivity: reports success
- Portal authentication → Google connectivity probe: verifies connectivity
- App interface → Update check: checks version
- Update check → Update host: compares versions
