Skip to main content

AWS CloudFront token generator

Project description

main.py

import datetime
import os
from cf_secure_edge import cf_token


def get_timedelta(str_val = ''):
    if str_val.endswith("m"):
        return datetime.timedelta(minutes=int(str_val[0:-1]))
    if str_val.endswith("h"):
        return datetime.timedelta(hours=int(str_val[0:-1]))
    if str_val.endswith("d"):
        return datetime.timedelta(days=int(str_val[0:-1]))
    return int(str_val)


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    url = os.environ["URL"]
    key = os.environ["KEY"]
    key_id = os.environ["KEY_ID"]
    exp = os.environ.get("EXP", "24h")
    firstExp = os.environ.get("FIRST_EXP", "5m")
    country = os.environ.get("CO", "")
    region = os.environ.get("REG", "")
    no_session = os.environ.get("NO_SSN", False)
    user_agent = os.environ.get("UA", "")
    referer = os.environ.get("REF", "")

    token_policy = cf_token.TokenPolicy()
    token_policy.expiry = get_timedelta(exp)
    token_policy.first_access_expiry = get_timedelta(firstExp)
    token_policy.session = not no_session
    token_policy.country = len(country) > 0
    token_policy.region = len(region) > 0
    token_policy.headers = []
    if len(user_agent) > 0:
        token_policy.headers.append("user-agent")
    if len(referer) > 0:
        token_policy.headers.append("referer")

    viewer_attrs = cf_token.ViewerAttributes()
    viewer_attrs.country = country
    viewer_attrs.region = region
    viewer_attrs.headers = {
        "user-agent": user_agent,
        "referer": referer,
    }

    cf_token = cf_token.CfToken(secrets={key_id: key})

    url_with_token = cf_token.generate_url(url, key_id, token_policy, viewer_attrs)
    print(url_with_token)
URL=https://your-media-endpoint.com/master.m3u8 \
  KEY_ID=your-key-id KEY=your-key \
  UA="your-user-agent" \
  REF=your-referrer \
  python3 main.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cf_secure_edge-0.0.1.tar.gz (2.9 kB view hashes)

Uploaded Source

Built Distribution

cf_secure_edge-0.0.1-py3-none-any.whl (3.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page