+ disclaimer

This commit is contained in:
Pari Malam
2026-06-16 00:28:31 +08:00
parent 7c8b2bebd9
commit cb23fc4bd7
+153 -211
View File
@@ -1,16 +1,17 @@
# O11 Pro Cracked - Unpacked Version # O11 Pro Cracked Unpacked Version
**O11 Pro** is a streaming media server capable of proxying, remuxing, and redistributing IPTV/OTT live and VOD streams. It features a built-in web UI, EPG support, HLS/DASH handling, and DRM decryption via CDM integration. **O11 Pro** is a streaming media server capable of proxying, remuxing, and redistributing IPTV/OTT live and VOD streams. It features a built-in web UI, EPG support, HLS/DASH handling, and DRM decryption via CDM integration.
--- ---
## Further Reading ## Further Reading
| Document | Description | | Document | Description |
|----------|-------------| | ---------------------------------- | ------------------------------------------------------------------------------------------------------- |
| [DISCLAIMER.md](DISCLAIMER/API.md) | To avoid misunderstandings, here are some things to know about this release. | | [DISCLAIMER.md](DISCLAIMER/API.md) | To avoid misunderstandings, here are some things to know about this release |
| [API.md](docs/API.md) | Complete REST API reference all endpoints, methods, and auth details | | [API.md](docs/API.md) | Complete REST API reference: endpoints, methods, and authentication details |
| [WSL.md](docs/WSL.md) | Complete WSL setup guide | | [WSL.md](docs/WSL.md) | Complete WSL setup guide |
| [RE.md](docs/RE.md) | Reverse engineering notes frontend deobfuscation analysis, Vue component map, config schema, and TODO | [RE.md](docs/RE.md) | Reverse engineering notes: frontend deobfuscation analysis, Vue component map, config schema, and TODOs |
--- ---
@@ -47,132 +48,146 @@ Open `http://<your-ip>:<port>` in a browser to access the web interface.
### Server & Network ### Server & Network
| Flag | Description | Default | | Flag | Description | Default |
|------|-------------|---------| | ------------- | ----------------------------------------------------- | ----------------- |
| `-p` | **HTTP port** to listen on (required) | `0` (none must be set) | | `-p` | HTTP port to listen on (required) | `0` (must be set) |
| `-b` | HTTP bind address | `0.0.0.0` (all interfaces) | | `-b` | HTTP bind address | `0.0.0.0` |
| `-https` | Enable HTTPS (requires `server.crt` and `server.key` in the O11 directory) | `false` | | `-https` | Enable HTTPS (requires `server.crt` and `server.key`) | `false` |
| `-baseurl` | HTTP base URL (for reverse proxy setups) | *(empty)* | | `-baseurl` | HTTP base URL for reverse proxy setups | *(empty)* |
| `-streamport` | Dedicated streaming port. If not set, the HTTP port is used | `0` (shares HTTP port) | | `-streamport` | Dedicated streaming port (0 = same as HTTP port) | `0` |
| `-streambind` | Streaming bind address | `0.0.0.0` | | `-streambind` | Streaming bind address | `0.0.0.0` |
| `-epgport` | EPG (Electronic Program Guide) port | `0` (disabled) | | `-epgport` | EPG (Electronic Program Guide) port | `0` |
| `-epgbind` | EPG bind address | `0.0.0.0` | | `-epgbind` | EPG bind address | `0.0.0.0` |
| `-allow` | Comma-separated list of no-auth admin source IP addresses (e.g. `192.168.1.0/24,10.0.0.1`) | *(empty)* | | `-allow` | Comma-separated IP whitelist for no-auth admin access | *(empty)* |
---
### Authentication & Security ### Authentication & Security
| Flag | Description | Default | | Flag | Description | Default |
|------|-------------|---------| | ------------ | ----------------------- | ---------------------------------- |
| `-user` | Static admin username for web UI login | *(empty temp account generated)* | | `-user` | Static admin username | *(empty temp account generated)* |
| `-password` | Static admin password for web UI login | *(empty temp account generated)* | | `-password` | Static admin password | *(empty temp account generated)* |
| `-jwtsecret` | JWT secret for login sessions. Default is randomly generated on each start | *(random)* | | `-jwtsecret` | JWT secret for sessions | *(random)* |
---
### Configuration & Files ### Configuration & Files
| Flag | Description | Default | | Flag | Description | Default |
|------|-------------|---------| | ------------ | ---------------------- | ----------------- |
| `-c` | Main config file path | `o11.cfg` | | `-c` | Main config file path | `o11.cfg` |
| `-job` | Jobs config file path | `o11-job.cfg` | | `-job` | Jobs config file | `o11-job.cfg` |
| `-rec` | Recordings config file path | `o11-rec.cfg` | | `-rec` | Recordings config file | `o11-rec.cfg` |
| `-path` | Working directory. All sub-directories (HLS, logs, etc.) are created here | current directory | | `-path` | Working directory | current directory |
| `-providers` | Providers directory path | `providers/` | | `-providers` | Providers directory | `providers/` |
| `-keys` | File with KID:KEY pairs for decryption fallback | `keys.txt` | | `-keys` | KID:KEY fallback file | `keys.txt` |
| `-f` | FFmpeg binary path | `ffmpeg` | | `-f` | FFmpeg binary path | `ffmpeg` |
| `-tsplay` | Tsplay binary path (for UDP output mode) | `tsplay` | | `-tsplay` | Tsplay binary path | `tsplay` |
---
### Logging ### Logging
| Flag | Description | Default | | Flag | Description | Default |
|------|-------------|---------| | ---------------- | --------------------------------- | --------- |
| `-v` | Log level: `0`=error, `1`=warning, `2`=info, `3`=debug, `4`=verbose, `5`=trace | `2` (info) | | `-v` | Log level (05) | `2` |
| `-stdout` | Log to stdout instead of log files | `false` | | `-stdout` | Output logs to stdout | `false` |
| `-logsize` | Max log file size in MB (per file) | `100` | | `-logsize` | Max log size (MB) | `100` |
| `-logscount` | Number of log file rotations to keep | `7` | | `-logscount` | Log rotation count | `7` |
| `-logtomain` | Also send stream-specific logs to the main log | `false` | | `-logtomain` | Send stream logs to main log | `false` |
| `-logtomainonly` | Only send stream logs to main log (no separate stream logs) | `false` | | `-logtomainonly` | Only main log output | `false` |
| `-V` | Module to enable special debug logs from (e.g. `subtitles`) | *(empty)* | | `-V` | Enable module-specific debug logs | *(empty)* |
---
### Runtime Behavior ### Runtime Behavior
| Flag | Description | Default | | Flag | Description | Default |
|------|-------------|---------| | ---------------- | ------------------------------- | --------- |
| `-headless` | Run without the web UI | `false` | | `-headless` | Run without web UI | `false` |
| `-noautostart` | Do not auto-start providers/channels on launch | `false` | | `-noautostart` | Disable auto-start of providers | `false` |
| `-flushperiod` | Seconds between config/key flushes to disk. `0` to disable | `300` | | `-flushperiod` | Config flush interval (seconds) | `300` |
| `-keep` | Keep temp media files after processing (debugging) | `true` | | `-keep` | Keep temporary files | `true` |
| `-noramfs` | Allow FFmpeg mode even if `./hls/live` is not a RAMFS | `false` | | `-noramfs` | Disable RAMFS requirement | `false` |
| `-remuxondisk` | Write internal remuxer temporary files to disk instead of RAM | `false` | | `-remuxondisk` | Store remux temp files on disk | `false` |
| `-debugspeed` | Print current fragment download queue per channel/media type | `false` | | `-debugspeed` | Show stream download queue | `false` |
| `-defaultprovid` | Default provider ID to display when none specified | *(empty)* | | `-defaultprovid` | Default provider ID | *(empty)* |
### Playlist & Stream Naming ---
| Flag | Description | Default | ### Playlist & Naming
|------|-------------|---------|
| `-plstreamname` | Format for stream names in playlists. `%p` = provider name, `%s` = stream name | `[%p] %s` | | Flag | Description | Default |
| `-alteventdateformat` | Use alternate date format `02 Jan. 2006 15:04` for EPG events | `false` | | --------------------- | ------------------------- | ------------------ |
| `-novodmetadata` | Disable metadata for VOD tracks | `false` | | `-plstreamname` | Stream name format | `[%p] %s` |
| `-pipeoutputcmd` | Pipe output command format (overridable per provider). `%s` = format placeholder | `tsplay -stdin %s` | | `-alteventdateformat` | Alternate EPG date format | `false` |
| `-novodmetadata` | Disable VOD metadata | `false` |
| `-pipeoutputcmd` | Pipe output command | `tsplay -stdin %s` |
---
### Replay Mode ### Replay Mode
| Flag | Description | Default | | Flag | Description | Default |
|------|-------------|---------| | ------------- | ----------------- | ----------------- |
| `-replay` | Local stream path to replay (from `hls/live/`) | *(empty)* | | `-replay` | Local stream path | *(empty)* |
| `-replaymode` | Replay mode: `ffmpeg`, `internalremuxer`, etc. | `internalremuxer` | | `-replaymode` | Replay mode | `internalremuxer` |
### User-Agent & HTTP Headers ---
| Flag | Description | Default | ### User-Agent & HTTP
|------|-------------|---------|
| `-a` | Default User-Agent for HTTP connections | Chrome 122 on macOS | | Flag | Description | Default |
| ---- | ------------------ | ---------------- |
| `-a` | Default User-Agent | Chrome 122 macOS |
---
### VOD Downloader ### VOD Downloader
These options are used when downloading and converting VOD (Video On Demand) streams: | Flag | Description | Default |
| -------------- | ----------------------------- | --------- |
| `-manifest` | Download manifest and convert | *(empty)* |
| `-video` | Video track index | all |
| `-audio` | Audio track indexes | all |
| `-subs` | Subtitle indexes | none |
| `-extrasubs` | External subtitle URL | *(empty)* |
| `-maxsegments` | Max segments | `0` |
| `-dashperiod` | DASH period index | `-2` |
| Flag | Description | Default | ---
|------|-------------|---------|
| `-manifest` | Download and convert this manifest URL to MP4, then exit | *(empty)* |
| `-video` | Video track index to grab | *(empty all)* |
| `-audio` | Audio track indexes to grab (comma-separated) | *(empty all)* |
| `-subs` | Subtitle indexes to grab (comma-separated or `all`) | *(empty none)* |
| `-extrasubs` | Extra subtitle file URL. Can be used multiple times | *(empty)* |
| `-maxsegments` | Max segments to download (`0` = unlimited) | `0` |
| `-dashperiod` | Force DASH period index. `-1` = all non-ad periods | `-2` |
### DRM / CDM Decryption ### DRM / CDM
| Flag | Description | Default | | Flag | Description | Default |
|------|-------------|---------| | ------------ | --------------------- | ---------- |
| `-usecdm` | Enable CDM script for DRM decryption | `false` | | `-usecdm` | Enable CDM decryption | `false` |
| `-cdmtype` | CDM type: `widevine`, `playready`, or `verimatrix` | `widevine` | | `-cdmtype` | CDM type | `widevine` |
| `-cdmmode` | CDM mode: `internal` or `external` | `internal` | | `-cdmmode` | CDM mode | `internal` |
| `-script` | CDM script name | `auto` | | `-script` | CDM script | `auto` |
| `-cdmparams` | CDM script parameters | *(empty)* | | `-cdmparams` | Script parameters | *(empty)* |
| `-key` | KID:KEY pair for decryption. Can be used multiple times | *(empty)* | | `-key` | KID:KEY pair | *(empty)* |
| `-doh` | DNS-over-HTTPS URL for CDM requests | *(empty)* | | `-doh` | DNS-over-HTTPS URL | *(empty)* |
| `-H` | Custom HTTP header for VOD requests (format: `key:value`). Can be used multiple times | *(empty)* | | `-H` | Custom HTTP headers | *(empty)* |
--- ---
## Web UI Pages ## Web UI Pages
The Vue.js frontend provides the following pages accessible via the navigation sidebar: | Page | Route | Description |
| ---------- | --------------------------- | ------------------------- |
| Page | Route | Description | | Providers | `/providers` | Manage IPTV/OTT providers |
|------|-------|-------------| | Linear | `/linear` | Live stream control |
| **Providers** | `/providers` | List of configured IPTV/OTT providers. Add, edit, delete, import, export providers | | Events | `/events/:provider?` | Scheduled streams |
| **Linear** | `/linear` | Live channel management. Start/stop streams, view on-air status | | VOD | `/vod` | Video-on-demand library |
| **Events** | `/events/:provider?` | Scheduled event streams with filtering and replay support | | Recordings | `/recordings/:provider?` | Stream recordings |
| **VOD** | `/vod` | Video-on-demand library per provider. Download and convert to MP4 | | Monitoring | `/monitoring` | Live stream status |
| **Recordings** | `/recordings/:provider?` | Manage stream recordings. Schedule and review recorded events | | Logs | `/logs/:provider?/:stream?` | Log viewer |
| **Monitoring** | `/monitoring` | Real-time stream status overview, running streams dashboard | | Users | `/users` | User management |
| **Logs** | `/logs/:provider?/:stream?` | Per-channel and main log viewer. Export and clean logs | | Config | `/config` | System configuration |
| **Users** | `/users` | User management. Create/edit users, set admin, assign provider access | | Help | `/help` | Documentation |
| **Config** | `/config` | Provider configuration (script, CDM, network, channels, stream options) | | Login | `/login` | Authentication |
| **Help** | `/help` | Built-in documentation with table of contents |
| **Login** | `/login` | Authentication page. JWT-based token auth |
--- ---
@@ -184,146 +199,73 @@ The Vue.js frontend provides the following pages accessible via the navigation s
./o11pro_unpacked -p 8080 -user admin -password mysecretpass ./o11pro_unpacked -p 8080 -user admin -password mysecretpass
``` ```
Access the web UI at `http://localhost:8080`, log in with `admin` / `mysecretpass`, and add your providers through the interface. ### Separate Streaming + EPG
### Separate Streaming + EPG Ports
```bash ```bash
./o11pro_unpacked -p 8080 -streamport 9090 -epgport 9091 -user admin -password pass ./o11pro_unpacked -p 8080 -streamport 9090 -epgport 9091
``` ```
- **Web UI**: `http://localhost:8080`
- **Streaming**: `http://localhost:9090`
- **EPG**: `http://localhost:9091`
### HTTPS Mode ### HTTPS Mode
```bash ```bash
# Place your certificates in the working directory first ./o11pro_unpacked -p 8443 -https
cp server.crt server.key /path/to/o11/
./o11pro_unpacked -p 8443 -https -user admin -password pass
```
Access via `https://localhost:8443`.
### VOD Download with DRM
```bash
# Download with manual decryption keys
./o11pro_unpacked -manifest "https://example.com/manifest.mpd" \
-key "eb676abbcb345e96bbcf616630f1a3da:234567890abcdef1234567890abcdef1" \
-video 0 -audio 0,1 -subs all
# Download with CDM script
./o11pro_unpacked -manifest "https://example.com/manifest.mpd" \
-usecdm -cdmtype widevine -cdmmode internal
```
### Headless with Custom Config
```bash
./o11pro_unpacked -p 8080 -headless -c /etc/o11/myconfig.cfg \
-path /var/lib/o11 -providers /etc/o11/providers/
```
### Bind to Localhost Only
```bash
./o11pro_unpacked -p 8080 -b 127.0.0.1 -streambind 127.0.0.1
``` ```
### Full Debug Mode ### Full Debug Mode
```bash ```bash
./o11pro_unpacked -p 8080 -v 5 -stdout -debugspeed ./o11pro_unpacked -p 8080 -v 5 -stdout
```
### Replay a Local Stream
```bash
./o11pro_unpacked -p 8080 -replay my_channel_stream -replaymode internalremuxer
``` ```
--- ---
## Directory Structure ## Directory Structure
When using `-path`, O11 creates the following sub-directories:
``` ```
o11pro-unpacked/ o11pro-unpacked/
├── hls/ ├── hls/
│ ├── live/ # Live HLS segments (recommend RAMFS)
│ ├── replay/ # Replayed stream segments
│ └── vod/ # VOD stream segments
├── dl/ ├── dl/
│ └── tmp/ # VOD download temp files ├── epg/
├── epg/ # EPG data cache ├── fonts/
├── fonts/ # Custom fonts ├── logos/
├── logos/ # Channel/provider logos ├── logs/
├── logs/ # Rotating log files ├── manifests/
├── manifests/ # Downloaded manifest cache ├── offair/
├── offair/ # Off-air placeholder media ├── overlay/
├── overlay/ # Picture overlays for streams ├── providers/
├── providers/ # Provider configuration files & scripts ├── rec/
├── rec/ # Recording output files ├── scripts/
├── scripts/ # CDM scripts (o11.py auto-generated) ├── keys.txt
├── keys.txt # KID:KEY decryption fallback ├── o11.cfg
├── o11.cfg # Main configuration ├── o11-job.cfg
── o11-job.cfg # Jobs configuration ── o11-rec.cfg
└── o11-rec.cfg # Recordings configuration
``` ```
--- ---
## EPG Access ## EPG Access
O11 serves EPG data in multiple formats: | Format | URL |
| ---------- | ----------------------------------- |
| Format | URL | | XML (gzip) | `http://ip:epgport/provider.xml.gz` |
|--------|-----| | XML | `http://ip:epgport/provider.xml` |
| XML (gzip) | `http://ip:epgport/providerid.xml.gz` | | API | `/epg/:provider?/:stream?` |
| XML (plain) | `http://ip:epgport/providerid.xml` |
| Web UI | `http://ip:port/epg` |
| API | `GET /epg/:provider?/:stream?` |
Use the `-epgport` flag to enable the EPG endpoint.
---
## Playlist Access
Streams are accessible via playlist format. The `-plstreamname` flag controls the display name format:
- Default: `[%p] %s` shows `[ProviderName] StreamName`
- Custom: `-plstreamname "%s (%p)"` shows `StreamName (ProviderName)`
---
## Log Levels Reference
| Level | Name | Description |
|-------|------|-------------|
| `0` | Error | Critical errors only |
| `1` | Warning | Warnings and errors |
| `2` | Info | General operational info (default) |
| `3` | Debug | Detailed debug information |
| `4` | Verbose | Very detailed output |
| `5` | Trace | Maximum verbosity, including internal state |
--- ---
## Notes ## Notes
- **The `-p` flag is required.** The binary will not start without an HTTP port. * `-p` is required
- Without `-user` / `-password`, a temporary admin account is generated on each start and printed to the log. * Temp admin is generated if no credentials provided
- For HTTPS, both `server.crt` and `server.key` must exist in the O11 working directory. * HTTPS requires valid cert + key
- The `-key` flag accepts KID:KEY pairs in hex format and can be specified multiple times for multiple keys. * `-manifest` runs download-only mode
- The `-H` flag for custom headers can be repeated: `-H "Authorization:Bearer token" -H "X-Custom:value"`. * Multiple `-key` and `-H` flags supported
- VOD downloader mode (`-manifest`) downloads, converts, and exits it does not start the server.
- Script accounts use the format: `user=join@mail.com password=mypassword device=123456 pin=1234` ---
- Proxy support: `http://user:pass@ip:port` and `socks5://user:pass@ip:port`
## Credits ## Credits
- Nulled (Cracked o11pro)
- Lossui011 * Nulled (Cracked O11Pro)
* Lossui011
---