zoukankan      html  css  js  c++  java
  • 用 openresty 编写 lua

    """
    
    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
            listen       80;
            server_name  localhost;
            charset utf-8;  
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            #location / {
            #    root   html;
            #    index  index.html index.htm;
            #}
            location /one {
                default_type 'text/html';
                content_by_lua_block {
                    local function encodeBase64(source_str)
                        local b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
                        local s64 = ''
                        local str = source_str
    
                        while #str > 0 do
                            local bytes_num = 0
                            local buf = 0
    
                            for byte_cnt=1,3 do
                                buf = (buf * 256)
                                if #str > 0 then
                                    buf = buf + string.byte(str, 1, 1)
                                    str = string.sub(str, 2)
                                    bytes_num = bytes_num + 1
                                end
                            end
    
                            for group_cnt=1,(bytes_num+1) do
                                local b64char = math.fmod(math.floor(buf/262144), 64) + 1
                                s64 = s64 .. string.sub(b64chars, b64char, b64char)
                                buf = buf * 64
                            end
    
                            for fill_cnt=1,(3-bytes_num) do
                                s64 = s64 .. '='
                            end
                        end
    
                        return s64
                    end            
                    local salt = "78t2cs5nim6fpy"
                    local address = "www.7893015.com"
                    local base = encodeBase64(address)
                    local str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                    local str2 = "GsW8O7iy1FS02VEIbjwzmH3fZQUBq5T9hrl4CvgNnRMDupYAJokK+ecadtL/P6xX"
                    ans = ""
                    for i=1,#base do
                        local one = string.sub(base,i,i)
                        local num = string.find(str1,one)
                        two = string.sub(str2,num,num)
                        ans = ans..two
                    end
                    local timestamp = os.time()
                    tmp = "d="..ans.."&t="..timestamp.."&v="..salt
                    local rightsign = ngx.md5(tmp)
                    local url = "/two?".."d="..ans.."&t="..timestamp.."&s="..rightsign
                    html = string.format(
                    [[
                    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
                    <html><head>
                    <meta http-equiv="refresh" content="61;url=http://www.baidu.com">
                    <title></title>
                    </head><body>
                    <!--<h1>Service Temporarily Unavailable</h1>
                    <p>The server is temporarily unable to service your
                    request due to maintenance downtime or capacity
                    problems. Please try again later.</p>-->
                    <a href="" id="baidu"></a>
                    <script type="text/javascript">
                    baidu.href = "%s" ;
                    //IE
                    if(document.all) {
                    document.getElementById("baidu").click();
                    }
                    //Other Browser
                    else {
                    var e = document.createEvent("MouseEvents");
                    e.initEvent("click", true, true);
                    document.getElementById("baidu").dispatchEvent(e);
                    }
                    </script>
                    </body></html>
                    ]],url
                    )
                    ngx.say(html)
                }
            }
    
            location /two {
                default_type 'text/html';
                content_by_lua_block {
                    local function decodeBase64(str64)
                        local b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
                        local temp={}
                        for i=1,64 do
                            temp[string.sub(b64chars,i,i)] = i
                        end
                        temp['=']=0
                        local str=""
                        for i=1,#str64,4 do
                            if i>#str64 then
                                break
                            end
                            local data = 0
                            local str_count=0
                            for j=0,3 do
                                local str1=string.sub(str64,i+j,i+j)
                                if not temp[str1] then
                                    return
                                end
                                if temp[str1] < 1 then
                                    data = data * 64
                                else
                                    data = data * 64 + temp[str1]-1
                                    str_count = str_count + 1
                                end
                            end
                            for j=16,0,-8 do
                                if str_count > 0 then
                                    str=str..string.char(math.floor(data/math.pow(2,j)))
                                    data=math.fmod(data,math.pow(2,j))
                                    str_count = str_count - 1
                                end
                            end
                        end
                        local last = tonumber(string.byte(str, string.len(str), string.len(str)))
                        if last == 0 then
                            str = string.sub(str, 1, string.len(str) - 1)
                        end
                        return str
                    end
                    local salt = "78t2cs5nim6fpy"
                    local arg = ngx.req.get_uri_args()
                    local address = arg["d"]
                    local timestamp = arg["t"]
                    local sign = arg["s"]            
                    if address and timestamp and value then 
                        ngx.exit(403)
                    end
                    tmp = "d="..address.."&t="..timestamp.."&v="..salt
                    local rightsign = ngx.md5(tmp)
                    if sign ~= rightsign then
                        ngx.exit(403)
                    end
                    local time_out = 600
                    local time_now = os.time()
                    if tonumber(timestamp)+time_out<time_now then
                        ngx.exit(403)
                    end
                    local str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                    local str2 = "GsW8O7iy1FS02VEIbjwzmH3fZQUBq5T9hrl4CvgNnRMDupYAJokK+ecadtL/P6xX"
                    ans = ""
                    for i=1,#address do
                        local one = string.sub(address,i,i)
                        local num = string.find(str2,one)
                        two = string.sub(str1,num,num)
                        ans = ans..two
                    end
                    url = decodeBase64(ans)
                    html = string.format(
                    [[
                    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
                    <html><head>
                    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
                    <meta http-equiv="Content-Language" content="zh-cn">
                    <style>a:hover,a:visited{color:#337FFD;} </style>
                    <title></title></head><body>    
                    <p align="center"></p>
                    <p align="center"><b><font style="font-size: 30pt">
                    <script type="text/javascript">
                    function checkurl(){
                    window.location.href="https://%s";
                    }
                    </script>
                    <br><br><br>
                    <center>
                    
                    <a id="BAIDU" href="https://www.baidu.com/?Open=normal&BaiduPartner=360&BaiduVIP=73499" title="360维护网络健康计划:浏览器安全检查通过,请点击进入。" onclick="checkurl();return false;" style="background: #077727;padding: 10px 40px;margin: 15px;color: #fff;border-radius:8px;cursor: pointer;text-decoration:none;">浏览器安全检查通过,请点击进入</a>
                    </center>
                    </body></html>
                    ]],url
                    )
                    ngx.say(html) 
                }
            }
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ .php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ .php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /.ht {
            #    deny  all;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    
        # HTTPS server
        #
        #server {
        #    listen       443 ssl;
        #    server_name  localhost;
    
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
    
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
    
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    }
    """
  • 相关阅读:
    苹果开发者账号注册申请(二)
    css3 media媒体查询器用法总结
    CSS,font-family,好看常用的中文字体
    行内元素和块级元素
    苹果开发者账号注册申请(一)
    web前端利用leaflet生成粒子风场,类似windy
    激光雷达--看图
    linux screen 多任务后台执行
    linux 系统监控和进程管理
    linux下postgresql的连接数配置
  • 原文地址:https://www.cnblogs.com/weilaibuxiangshuo/p/10400958.html
Copyright © 2011-2022 走看看