feat: refactor CLI to support multi-domain OSMAP token generation and update documentation accordingly

This commit is contained in:
2026-09-01 10:28:28 +07:00
parent f357ef8fd7
commit 9f6af37b16
2 changed files with 719 additions and 524 deletions
+84 -120
View File
@@ -1,143 +1,107 @@
# OSMAP CLI - Embed Map Navigator & Token Manager
# OSMAP Embed Map & Token CLI
A lightweight CLI tool for developers and administrators to manage authentication tokens and quickly navigate or launch OSMAP KAI embed map routes across different environments (`live`, `beta`, `staging`, `demo`, `local`).
Unified CLI utility and API reference for generating embed tokens and URLs for all **OSMAP** domains:
1. **`app.osmap.id`** (Share-Map Token API)
2. **`live.osmap.id`** (KAI Live App Token)
3. **`beta.osmap.id`** (KAI Beta App Token)
---
## ⚡ Quick Start (No Installation Needed)
## 🚀 cURL Reference by Domain
### 1. Prerequisites
- **Bash** (`Git Bash`, `WSL`, `Linux`, or `macOS`)
- **`curl`**
- **`jq`** (JSON processor)
- **Windows (PowerShell as Admin)**: `choco install jq -y`
- **Ubuntu / Debian / WSL**: `sudo apt update && sudo apt install -y jq`
- **macOS**: `brew install jq`
### 1. New Share-Map System (`app.osmap.id`)
**API Endpoint**: `POST https://api.osmap.id/apps/token/share-map`
**Embed Format**: `https://app.osmap.id/maps/embed/<map_id>?token=<token>`
---
## 🚀 Running the CLI
### Option A: Direct Execution via `curl`
#### Using Git Bash / Linux / macOS:
#### Map 1: Accelerometer (Map ID: 94)
```bash
curl -sSL https://git.oslog.pro/dandy/osmap_cli/raw/branch/main/osmap-embed.sh | bash
curl -X POST "https://api.osmap.id/apps/token/share-map" \
-H "Content-Type: application/json" \
-d '{"app_id":"6f728437e6c4d361fb811913b8acd70e","app_secret":"ab9419a7fed7c51a6ff6daf501d408f2aed25c0ccd148a6c18b76f54949f55d8","expires_in":86400,"map_id":94}'
```
To pass arguments / flags:
#### Map 2: ROCC (Map ID: 46)
```bash
# Open Executive Map directly in browser
curl -sSL https://git.oslog.pro/dandy/osmap_cli/raw/branch/main/osmap-embed.sh | bash -s -- executive --env live --open
# Get all embed URLs for beta environment
curl -sSL https://git.oslog.pro/dandy/osmap_cli/raw/branch/main/osmap-embed.sh | bash -s -- all --env beta
curl -X POST "https://api.osmap.id/apps/token/share-map" \
-H "Content-Type: application/json" \
-d '{"app_id":"6f728437e6c4d361fb811913b8acd70e","app_secret":"ab9419a7fed7c51a6ff6daf501d408f2aed25c0ccd148a6c18b76f54949f55d8","expires_in":86400,"map_id":46}'
```
#### Using Windows PowerShell:
```powershell
bash -c "curl -sSL https://git.oslog.pro/dandy/osmap_cli/raw/branch/main/osmap-embed.sh | bash"
#### Map 3: Genset (Map ID: 74)
```bash
curl -X POST "https://api.osmap.id/apps/token/share-map" \
-H "Content-Type: application/json" \
-d '{"app_id":"6f728437e6c4d361fb811913b8acd70e","app_secret":"ab9419a7fed7c51a6ff6daf501d408f2aed25c0ccd148a6c18b76f54949f55d8","expires_in":86400,"map_id":74}'
```
#### Map 4: RCS (Map ID: 72)
```bash
curl -X POST "https://api.osmap.id/apps/token/share-map" \
-H "Content-Type: application/json" \
-d '{"app_id":"6f728437e6c4d361fb811913b8acd70e","app_secret":"ab9419a7fed7c51a6ff6daf501d408f2aed25c0ccd148a6c18b76f54949f55d8","expires_in":86400,"map_id":72}'
```
#### Map 5: JPL (Map ID: 70)
```bash
curl -X POST "https://api.osmap.id/apps/token/share-map" \
-H "Content-Type: application/json" \
-d '{"app_id":"2ee1aa4876f6b7fa3c43c75ca1c83139","app_secret":"073d0929a74bb664c402de98d24153c1f9f2f648d59c381f2fef3c32610fa174","expires_in":86400,"map_id":70}'
```
---
### Option B: Clone & Run Locally
### 2. OSMAP KAI System (`live.osmap.id`)
**API Endpoint**: `POST https://live.osmap.id/api/apps/token`
**Embed Format**: `https://live.osmap.id/<route>?token=<token>`
```bash
git clone https://git.oslog.pro/dandy/osmap_cli.git
cd osmap_cli
chmod +x osmap-embed.sh
curl -X POST "https://live.osmap.id/api/apps/token" \
-H "Content-Type: application/json" \
-d '{
"app_id": "IrSIcf06QRwUCmsRCZ0JvsVibSfuPUG4",
"app_secret": "Z8tPOBHGbwWu9TrIddRqkiDFDymtiPAhMNbSz6aUOOTkqdZoQYuTWXTra5m2mPQa",
"expires_in_hours": 24
}'
```
# Launch Interactive Menu
---
### 3. OSMAP KAI System (`beta.osmap.id`)
**API Endpoint**: `POST https://beta.osmap.id/api/apps/token`
**Embed Format**: `https://beta.osmap.id/<route>?token=<token>`
```bash
curl -X POST "https://beta.osmap.id/api/apps/token" \
-H "Content-Type: application/json" \
-d '{
"app_id": "IrSIcf06QRwUCmsRCZ0JvsVibSfuPUG4",
"app_secret": "Z8tPOBHGbwWu9TrIddRqkiDFDymtiPAhMNbSz6aUOOTkqdZoQYuTWXTra5m2mPQa",
"expires_in_hours": 24
}'
```
---
## 🛠️ CLI Usage (`osmap-embed.sh`)
```bash
chmod +x ./osmap-embed.sh
```
### Launch Interactive Navigator
```bash
./osmap-embed.sh
```
*Allows selecting maps from `app.osmap.id` or routes from `live.osmap.id` / `beta.osmap.id` with live environment switching!*
---
### Quick Commands
## 📖 Usage & Commands
```bash
./osmap-embed.sh [route|command] [options]
```
### Commands
| Command | Description |
| :--- | :--- |
| `interactive` *(default)* | Opens an interactive CLI menu to pick routes, copy tokens, or switch environments |
| `all` | Prints a formatted table of all map embed URLs with a valid token |
| `token` | Fetches and prints the raw active access token only |
| `validate` | Checks whether the locally cached token is still valid |
| `revoke` | Revokes active tokens on the server and clears local cache |
| `register` | Registers a new application and saves credentials |
### Available Map Routes
| Route Identifier | Map Name | Target Path |
| :--- | :--- | :--- |
| `executive` | Executive Map | `/executive` |
| `rolling` | Rolling Map | `/rolling` |
| `iris-jpl` | IRIS JPL | `/iris-jpl` |
| `iris-jpl-v2` | IRIS JPL (v2) | `/v2/iris-jpl` |
| `accelerometer` | Executive Accelerometer | `/executive/accelerometer` |
| `genset` | Genset Monitoring | `/genset` |
| `managerial` | Managerial / Asset View | `/managerial` |
| `fatigue` | Fatigue Monitoring | `/fatigue` |
| `sigap-tracker` | SIGAP Tracker | `/sigap-tracker` |
| `sigap-dashboard` | SIGAP Dashboard | `/sigap-dashboard` |
| `railway-cargo-system` | Railway Cargo System (RCS) | `/railway-cargo-system` |
---
## ⚙️ Options & Flags
| Flag | Description | Default |
| :--- | :--- | :--- |
| `-e`, `--env <env>` | Target environment (`live`, `beta`, `staging`, `demo`, `local`, or custom URL) | `live` |
| `-o`, `--open` | Automatically open the generated URL in your default browser | `false` |
| `-c`, `--copy` | Automatically copy the URL to system clipboard | `false` |
| `--app-id <id>` | Override App ID credential | Default Built-in / Env |
| `--app-secret <sec>` | Override App Secret credential | Default Built-in / Env |
| `--save` | Save provided `--app-id` and `--app-secret` to `.osmap_credentials` | `false` |
| `-h`, `--help` | Show command line help and usage | - |
---
## 💡 Examples
- **Interactive Menu (live environment):**
```bash
./osmap-embed.sh
```
- **Open IRIS JPL in browser on Live environment:**
```bash
./osmap-embed.sh iris-jpl --open
```
- **Get the raw token string for scripts / automation:**
```bash
TOKEN=$(./osmap-embed.sh token --env live)
echo "Current Token: $TOKEN"
```
- **Open Managerial Map on Beta environment:**
```bash
./osmap-embed.sh managerial --env beta --open
```
- **Test against Local development server (`http://localhost:8000`):**
```bash
./osmap-embed.sh --env local
```
---
## 🔐 Credentials & Configuration Precedence
Credentials are automatically loaded in the following order:
1. CLI Flags (`--app-id`, `--app-secret`)
2. Environment Variables (`OSMAP_APP_ID`, `OSMAP_APP_SECRET`)
3. Local config file (`.osmap_credentials`)
4. Current directory `.env` file
5. Built-in default credentials
| Goal | Command |
|---|---|
| Show all cURL commands | `./osmap-embed.sh curls` |
| View `app.osmap.id` embed URLs | `./osmap-embed.sh all` |
| View `live.osmap.id` embed URLs | `./osmap-embed.sh all --env live` |
| View `beta.osmap.id` embed URLs | `./osmap-embed.sh all --env beta` |
| Open map from `app.osmap.id` in browser | `./osmap-embed.sh accelerometer --open` |
| Open KAI route in browser | `./osmap-embed.sh executive --env live --open` |
| Get token string only | `./osmap-embed.sh token 94` or `./osmap-embed.sh token executive` |
+635 -404
View File
File diff suppressed because it is too large Load Diff