This topic describes how to use the EdgeScript (ES) CLI to create, save, test, and publish scripts.

Note For more information about how to use the ES CLI, see Use the EdgeScript CLI to manage scripts.
The following examples show how to use the ES CLI to manage scripts:
  • Save a script as a local file.
    For example, use the m3u8.es script to block all M3U8 requests.
    $cat m3u8.es
    if eq(substr($uri, -5, -1), '.m3u8') {
        add_rsp_header('X-DEBUG-DENY-REASON', 'block m3u8')
        exit(400)
    }
  • Publish a script to the staging environment.
    $./es.py action=push_test_env domain=<your domain> rule='{"pos":"head","pri":"0","rule_path":"./m3u8.es","enable":"on"}'
    
    Response Code:
    =============
    200 OK
    
    Response Info:
    ==============
    {
        "RequestId": "FB98CC67-8FBA-44CF-A98A-BCE3B19FE510"
    }
  • Query scripts in the staging environment.
    $./es.py action=query_test_env domain=<your domain>
    Response Code:
    =============
    200 OK
    
    Response Info:
    ==============
    {
        "DomainConfigs": [
            {
                "Status": "success",    # If success is returned, the script is configured.
                "ConfigId": 17432558, 
                "FunctionArgs": [
                    {
                        "ArgName": "enable", 
                        "ArgValue": "on"
                    }, 
                    {
                        "ArgName": "pri", 
                        "ArgValue": "0"
                    }, 
                    {
                        "ArgName": "pos", 
                        "ArgValue": "head"
                    }, 
                    {
                        "ArgName": "rule", 
                        "ArgValue": "if eq(substr($uri, -5, -1), '.m3u8') {\n    add_rsp_header('X-DEBUG-DENY-REASON', 'block m3u8')\n    exit(400)\n}\n"
                    }
                ], 
                "FunctionName": "dsl_ex"
            }
        ], 
        "RequestId": "4DDBF3DB-BCAC-4074-AC1E-B6C1F1C6CBFB"
    }
  • Test a script.
    $curl -x Staging environment IP:80 -o /dev/null -v 'http://www.archnote.net/test.m3u8'
    < HTTP/1.1 400 Bad Request
    < Server: Tengine
    < Date: Thu, 18 Jul 2019 09:40:41 GMT
    < Content-Type: text/html
    < Content-Length: 265
    < Connection: close
    < X-DEBUG-DENY-REASON: block m3u8
    < Via: cache1.cn1191-1[,0]
    < Timing-Allow-Origin: *
    < EagleId: 2a7b771b15634428415537484e
  • Publish a script to the production environment.
    $./es.py action=push_product_env domain=<your domain>
    Response Code:
    =============
    200 OK
    
    Response Info:
    ==============
    {
        "RequestId": "F4B378F8-6AAE-457A-A70C-E856ED8341D8"
    }
  • Query scripts in the production environment.
    $./es.py action=query_product_env domain=<your domain>
    Response Code:
    =============
    200 OK
    
    Response Info:
    ==============
    {
        "DomainConfigs": {
            "DomainConfig": [
                {
                    "Status": "success", 
                    "ConfigId": 17432558, 
                    "FunctionArgs": {
                        "FunctionArg": [
                            {
                                "ArgName": "enable", 
                                "ArgValue": "on"
                            }, 
                            {
                                "ArgName": "pri", 
                                "ArgValue": "0"
                            }, 
                            {
                                "ArgName": "pos", 
                                "ArgValue": "head"
                            }, 
                            {
                                "ArgName": "rule", 
                                "ArgValue": "if eq(substr($uri, -5, -1), '.m3u8') {\n    add_rsp_header('X-DEBUG-DENY-REASON', 'block m3u8')\n    exit(400)\n}\n"
                            }
                        ]
                    }, 
                    "FunctionName": "dsl_ex"
                }
            ]
        }, 
        "RequestId": "36D57C1D-C820-43DA-8E70-DADC4B8BD4DD"
    }