github euzu/tuliprox v3.0.0
Release v3.0.0

latest releases: v3.2.0, v3.1.8, v3.1.7...
7 months ago

3.0.0 (2025-05-12)

  • !BREAKING_CHANGE! user has now the attribute ui_enabled to disable/enable web_ui for user.
    You need to migrate the user db if you have used use_user_db:true.
    Set it to false run old tuliprox version, then update tuliprox and set use_user_db:trueand start.
  • !BREAKING_CHANGE! all docker images have now tuliprox under /app
  • !BREAKING CHANGE! bandwidth throttle_kbps attribute for reverse_proxy.stream in config.yml
    is now throttle and supports units. Allowed units are KB/s,MB/s,KiB/s,MiB/s,kbps,mbps,Mibps.
    Default unit is kbps.
  • !BREAKING_CHANGE! log config active_clients renamed to log_active_user
  • !BREAKING_CHANGE! web_ui config restructured and added user_ui_enabled attribute
web_ui:
  enabled: true
  user_ui_enabled: true
  path:
  auth:
    enabled: true
    issuer: tuliprox
    secret: ef9ab256a8c0abe5de92c2e05ca92baa810472ab702ff1674e9248308ceeec92
    userfile: user.txt
  • grace_period_millis default set to 300 milliseconds.
  • grace_period_timeout_secs default set to 2 seconds.
  • Fixed user grace period
  • Added default_grace_period_timeout_secs to reverse_proxy.stream config. When grace_period granted,
    until the default_grace_period_timeout_secs elapses no grace_period is granted again.
  • Added method attribute to input config. It can be set to GET or POST.
  • Added optional auto_epg field to input epg config for auto-generating provider epg link.
  • Added rate limiting per IP. The burst_size defines the initial number of available connections,
    while period_millis specifies the interval at which one connection is replenished.
    If behind a proxy x-forwarded-for, x-real-ip or forwarded should be set as header.
    The configuration below allows up to 10 connections initially and then replenishes 1 connection every 500 milliseconds.
reverse_proxy:
  rate_limit:
    enabled: true
    period_millis: 500
    burst_size: 10
  • Multi epg processing/optimization, auto guessing/assigning epg id's
  • Fixed hls redirect url issue
  • Added force_redirect to target config options. valid options are live, vod, series
 options: {ignore_logo: false, share_live_streams: false, force_redirect: [vod, series]}
epg:
  url: ['http://localhost:3001/xmltv.php?epg_id=1', 'http://localhost:3001/xmltv.php?epg_id=2']
  smart_match:
    enabled: true
    fuzzy_matching: true
    match_threshold: 80
    best_match_threshold: 99
    name_prefix: !suffix "."
    name_prefix_separator: [':', '|', '-']
    strip :  ["3840p", "uhd", "fhd", "hd", "sd", "4k", "plus", "raw"]
    normalize_regex: '[^a-zA-Z0-9\-]'

match_thresholdis optional and if not set 80.
best_match_threshold is optional and if not set 99.
name_prefix can be ignore, suffix, prefix. For suffix and prefix you need to define a concat string.
strip : ["3840p", "uhd", "fhd", "hd", "sd", "4k", "plus", "raw"] this is the defualt
normalize_regex: [^a-zA-Z0-9\-] is the default

# single epg
url: 'https://localhost.com/epg.xml'
# multi local file  epg
url: ['file:///${env:TULIPROX_HOME}/epg.xml', 'file:///${env:TULIPROX_HOME}/epg2.xml']
# multi url  epg
url: ['http://localhost:3001/xmltv.php?epg_id=1', 'http://localhost:3001/xmltv.php?epg_id=2']
  • Added strip to input for auto epg matching, if not given ["3840p", "uhd", "fhd", "hd", "sd", "4k", "plus", "raw"] is default
    When no matching epg_id is found, the display name is used to match a channel name. The given strings are stripped to get a better match.
  • Fixed chno assignment issue
  • Redirect Proxy provider cycle implemented (m3u playlist only cycles when output param mask_redirect_url is set).
  • Reverse Proxy mode for user can now be a subset
    • reverse -> all reverse
    • reverse[live] -> only live reverse, vod and series redirect
    • reverse[live,vod] -> series redirect, others reverse
  • /status api endpoint moved to /api/v1/status for auth protection
  • fixed multi provider VOD seek problem (provider cycle on seek request prevented playback)
  • hdhomerun supports now basic auth like http://user:password@ip:port/lineup.json
    you need to enable auth in config
hdhomerun:
  enabled: true
  auth: true
  devices:
  - name: hdhr1
  • A new filter field caption has been added. This field is used to bypass the title/name issue.
    If caption is provided, its value is read from title if available, otherwise from name.
    When setting caption, both title and name are updated.”
  • Counter has now an attribute padding. Which fills the number like 001.
  • Added proxy configuration for all outgoing requests in config.yml. supported http, https, socks5 proxies.
proxy:
  url: socks5://192.168.1.6:8123
  username: uname  # <- optional basic auth
  password: secret # <- optional basic auth
  • Added support for regular expression-based sequence sorting.
    You can now sort both groups and channels using custom regex sequences.
sort:
  groups:
  order: asc
  sequence:
  - '^Freetv'
  - '^Shopping'
  - '^Entertainment'
  - '^Sunrise'
  channels:
  - field: caption
    group_pattern: '^Freetv'
    order: asc
    sequence:
    - '(?P<c1>.*?)\bUHD\b'
    - '(?P<c1>.*?)\bFHD\b'
    - '(?P<c1>.*?)\bHD\b'
    - '(?P<c1>.*?)\bSD\b'

In the example above, groups are sorted based on the specified sequence.
Channels within the Freetv group are first sorted by quality (as matched by the regex sequence), and then by the captured prefix.

To sort by specific parts of the content, use named capture groups such as c1, c2, c3, etc.
The numeric suffix indicates the priority: c1 is evaluated first, followed by c2, and so on.

  • Added ip check config
    • url # URL that may return both IPv4 and IPv6 in one response
    • url_ipv4 # Dedicated URL to fetch only IPv4
    • url_ipv6 # Dedicated URL to fetch only IPv6
    • pattern_ipv4 # Optional regex pattern to extract IPv4
    • pattern_ipv6 # Optional regex pattern to extract IPv6
ipcheck:
  url_ipv4: https://ipinfo.io/ip

Don't miss a new tuliprox release

NewReleases is sending notifications on new releases.