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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file cf_secure_edge-0.0.1.tar.gz.

File metadata

  • Download URL: cf_secure_edge-0.0.1.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for cf_secure_edge-0.0.1.tar.gz
Algorithm Hash digest
SHA256 a8668220e266dc98eec718ee44300fe963db4d1c34c55c9ba79c98249cabfd27
MD5 44e12331419060cc539f210b1f715662
BLAKE2b-256 bf9842b761fdd14b1f054cc1af8c3dc1b95887e935bf3506b345b46ab3d7683e

See more details on using hashes here.

File details

Details for the file cf_secure_edge-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: cf_secure_edge-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 3.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for cf_secure_edge-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b5436845443853c9e38d89b340d18d81b94368a931101cbbaf4237f36719de2c
MD5 0ec2d6f2db4e08cee3dec4bb47f9ce77
BLAKE2b-256 8a25e8d46fe64c875d1a5972ee9e4de48c5cdba0dceb88a22d3912000b8b7656

See more details on using hashes here.

Supported by

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