embystream 0.0.36

Another Emby streaming application (frontend/backend separation) written in Rust.
Documentation
[Log]
level = "info"
prefix = ""
root_path = "./logs"

[General]
memory_mode = "middle"
stream_mode = "frontend"
encipher_key = "change_this_to_a_secure_key"
encipher_iv = "change_this_to_a_secure_iv"

[Emby]
url = "http://127.0.0.1"
port = "8096"
token = ""

[UserAgent]
mode = "allow"
allow_ua = []
deny_ua = []

[Http2]
ssl_cert_file = ""
ssl_key_file = ""

[Fallback]
video_missing_path = ""

[Frontend]
listen_port = 60001
check_file_existence = false

[[Frontend.PathRewrite]]
enable = false
pattern = "^(/.*)$"
replacement = "https://my-cdn.com$1"

[[Frontend.PathRewrite]]
enable = false
pattern = "^/media(/.*)$"
replacement = "$1"

[[Frontend.PathRewrite]]
enable = false
pattern = "^/stream(/.*)$"
replacement = "/proxy$1"

[Frontend.AntiReverseProxy]
enable = false
host = ""

[Backend]
listen_port = 60002
base_url = "https://example.com"
port = "443"
path = "stream"
check_file_existence = true
problematic_clients = []

[[BackendNode]]
name = "LocalDisk"
type = "Disk"
pattern = "/mnt/media/.*"
base_url = "http://127.0.0.1"
port = "60002"
path = ""
priority = 0
proxy_mode = "proxy"
client_speed_limit_kbs = 0
client_burst_speed_kbs = 0

[[BackendNode.PathRewrite]]
enable = false
pattern = "^(/.*)$"
replacement = "https://my-cdn.com$1"

[[BackendNode.PathRewrite]]
enable = false
pattern = "^/media(/.*)$"
replacement = "$1"

[BackendNode.AntiReverseProxy]
enable = false
host = ""

[[BackendNode]]
name = "MyOpenList"
type = "OpenList"
pattern = "/openlist/.*"
base_url = "http://alist.example.com"
port = "5244"
path = "/openlist"
priority = 0
proxy_mode = "redirect"
client_speed_limit_kbs = 0
client_burst_speed_kbs = 0

[[BackendNode.PathRewrite]]
enable = false
pattern = "^/openlist(/.*)$"
replacement = "$1"

[BackendNode.AntiReverseProxy]
enable = false
host = ""

[BackendNode.OpenList]
base_url = "http://alist.example.com"
token = ""

[[BackendNode]]
name = "CloudDrive"
type = "DirectLink"
pattern = "/cloud/.*"
base_url = "https://cloud.example.com"
port = "443"
path = "/cloud"
priority = 0
proxy_mode = "redirect"
client_speed_limit_kbs = 0
client_burst_speed_kbs = 0

[[BackendNode.PathRewrite]]
enable = false
pattern = "^/cloud(/.*)$"
replacement = "https://cdn.example.com$1"

[BackendNode.AntiReverseProxy]
enable = false
host = ""

[BackendNode.DirectLink]
user_agent = ""

[[BackendNode]]
name = "GoogleDriveMedia"
type = "googleDrive"
pattern = "/gdrive/.*"
base_url = "https://www.googleapis.com"
port = "443"
path = ""
priority = 0
proxy_mode = "proxy"
client_speed_limit_kbs = 0
client_burst_speed_kbs = 0
# The root config template uses `proxy` as the easiest first validation mode.
# Switch to `accel_redirect` after Google Drive lookup and token refresh are
# known-good in your environment.

[[BackendNode.PathRewrite]]
enable = false
pattern = "^/gdrive(/.*)$"
replacement = "$1"

[BackendNode.AntiReverseProxy]
enable = false
host = ""

[BackendNode.GoogleDrive]
node_uuid = "google_drive_node_a"
client_id = "replace_with_google_client_id"
client_secret = "replace_with_google_client_secret"
drive_id = ""
drive_name = "SharedMedia"
access_token = "replace_with_google_access_token"
refresh_token = "replace_with_google_refresh_token"
# `refresh_token` is the durable credential. `access_token` is only a cache
# snapshot and may be rotated by EmbyStream. Runtime may also write back a
# preferred `token = { access_token = ..., refresh_token = ..., token_type = ...,
# expiry = ... }` blob later.

[[BackendNode]]
name = "RcloneWebDav"
type = "WebDav"
pattern = "/rclone/.*"
base_url = "http://127.0.0.1"
port = "60005"
path = ""
priority = 0
proxy_mode = "accel_redirect"
client_speed_limit_kbs = 0
client_burst_speed_kbs = 0

[[BackendNode.PathRewrite]]
enable = false
pattern = "^/rclone(/.*)$"
replacement = "$1"

[BackendNode.AntiReverseProxy]
enable = false
host = ""

[BackendNode.WebDav]
node_uuid = "webdav_node_a"
url_mode = "path_join"
query_param = "path"
url_template = ""
username = ""
password = ""
user_agent = ""