[
  {
    "path": "aliddns/install.sh",
    "content": "#!/bin/sh\n\ncp -r /tmp/aliddns/* /koolshare/\nchmod a+x /koolshare/scripts/aliddns_*\n\n# add icon into softerware center\ndbus set softcenter_module_aliddns_install=1\ndbus set softcenter_module_aliddns_version=0.4\ndbus set softcenter_module_aliddns_description=\"阿里云解析自动更新IP\"\n"
  },
  {
    "path": "aliddns/scripts/aliddns_config.sh",
    "content": "#!/bin/sh\n\nif [ \"`dbus get aliddns_enable`\" = \"1\" ]; then\n    dbus delay aliddns_timer `dbus get aliddns_interval` /koolshare/scripts/aliddns_update.sh\nelse\n    dbus remove __delay__aliddns_timer\nfi\n"
  },
  {
    "path": "aliddns/scripts/aliddns_update.sh",
    "content": "#!/bin/sh\n\neval `dbus export aliddns_`\n\nif [ \"$aliddns_enable\" != \"1\" ]; then\n    echo \"not enable\"\n    exit\nfi\n\nnow=`date`\n\ndie () {\n    echo $1\n    dbus ram aliddns_last_act=\"$now: failed($1)\"\n}\n\n[ \"$aliddns_curl\" = \"\" ] && aliddns_curl=\"curl -s whatismyip.akamai.com\"\n[ \"$aliddns_dns\" = \"\" ] && aliddns_dns=\"223.5.5.5\"\n[ \"$aliddns_ttl\" = \"\" ] && aliddns_ttl=\"600\"\n\nip=`$aliddns_curl 2>&1` || die \"$ip\"\n\ncurrent_ip=`nslookup $aliddns_name.$aliddns_domain $aliddns_dns 2>&1`\n\nif [ \"$?\" -eq \"0\" ]\nthen\n    current_ip=`echo \"$current_ip\" | grep 'Address 1' | tail -n1 | awk '{print $NF}'`\n\n    if [ \"$ip\" = \"$current_ip\" ]\n    then\n        echo \"skipping\"\n        dbus set aliddns_last_act=\"$now: skipped($ip)\"\n        exit 0\n    fi \nfi\n\n\ntimestamp=`date -u \"+%Y-%m-%dT%H%%3A%M%%3A%SZ\"`\n\nurlencode() {\n    # urlencode <string>\n    out=\"\"\n    while read -n1 c\n    do\n        case $c in\n            [a-zA-Z0-9._-]) out=\"$out$c\" ;;\n            *) out=\"$out`printf '%%%02X' \"'$c\"`\" ;;\n        esac\n    done\n    echo -n $out\n}\n\nenc() {\n    echo -n \"$1\" | urlencode\n}\n\nsend_request() {\n    local args=\"AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09\"\n    local hash=$(echo -n \"GET&%2F&$(enc \"$args\")\" | openssl dgst -sha1 -hmac \"$aliddns_sk&\" -binary | openssl base64)\n    curl -s \"http://alidns.aliyuncs.com/?$args&Signature=$(enc \"$hash\")\"\n}\n\nget_recordid() {\n    grep -Eo '\"RecordId\":\"[0-9]+\"' | cut -d':' -f2 | tr -d '\"'\n}\n\nquery_recordid() {\n    send_request \"DescribeSubDomainRecords\" \"SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddns_name.$aliddns_domain&Timestamp=$timestamp\"\n}\n\nupdate_record() {\n    send_request \"UpdateDomainRecord\" \"RR=$aliddns_name&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=A&Value=$ip\"\n}\n\nadd_record() {\n    send_request \"AddDomainRecord&DomainName=$aliddns_domain\" \"RR=$aliddns_name&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=A&Value=$ip\"\n}\n\nif [ \"$aliddns_record_id\" = \"\" ]\nthen\n    aliddns_record_id=`query_recordid | get_recordid`\nfi\nif [ \"$aliddns_record_id\" = \"\" ]\nthen\n    aliddns_record_id=`add_record | get_recordid`\n    echo \"added record $aliddns_record_id\"\nelse\n    update_record $aliddns_record_id\n    echo \"updated record $aliddns_record_id\"\nfi\n\n# save to file\nif [ \"$aliddns_record_id\" = \"\" ]; then\n    # failed\n    dbus ram aliddns_last_act=\"$now: failed\"\nelse\n    dbus ram aliddns_record_id=$aliddns_record_id\n    dbus ram aliddns_last_act=\"$now: success($ip)\"\nfi"
  },
  {
    "path": "aliddns/webs/Module_aliddns.asp",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<meta HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\"/>\n<meta HTTP-EQUIV=\"Expires\" CONTENT=\"-1\"/>\n<link rel=\"shortcut icon\" href=\"images/favicon.png\"/>\n<link rel=\"icon\" href=\"images/favicon.png\"/>\n<title>Aliddns</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"index_style.css\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"form_style.css\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"usp_style.css\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/element.css\">\n<script type=\"text/javascript\" src=\"/js/jquery.js\"></script>\n<script src=\"/state.js\"></script>\n<script src=\"/help.js\"></script>\n</head>\n<body>\n<div id=\"TopBanner\"></div>\n<div id=\"Loading\" class=\"popup_bg\"></div>\n<table class=\"content\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">\n    <tr>\n        <td width=\"17\">&nbsp;</td>\n        <td valign=\"top\" width=\"202\">\n            <div id=\"mainMenu\"></div>\n            <div id=\"subMenu\"></div>\n        </td>\n        <td valign=\"top\">\n            <div id=\"tabMenu\" class=\"submenuBlock\"></div>\n\t\t\t<!--=====Beginning of Main Content=====-->\n            <table width=\"98%\" border=\"0\" align=\"left\" cellpadding=\"0\" cellspacing=\"0\" style=\"display: block;\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td align=\"left\" valign=\"top\">\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<table width=\"760px\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" bordercolor=\"#6b8fa3\" class=\"FormTitle\" id=\"FormTitle\">\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td bgcolor=\"#4D595D\" colspan=\"3\" valign=\"top\">\n\t\t\t\t\t\t\t\t\t\t<div>&nbsp;</div>\n                \t\t\t\t\t\t<div style=\"float:left;\" class=\"formfonttitle\" style=\"padding-top: 12px\">Aliddns - 设置</div>\n\t\t\t\t\t\t\t\t\t\t<div style=\"float:right; width:15px; height:25px;margin-top:10px\"><img id=\"return_btn\" onclick=\"reload_Soft_Center();\" align=\"right\" style=\"cursor:pointer;position:absolute;margin-left:-30px;margin-top:-25px;\" title=\"返回软件中心\" src=\"/images/backprev.png\" onMouseOver=\"this.src='/images/backprevclick.png'\" onMouseOut=\"this.src='/images/backprev.png'\"></img></div>\n\t\t\t\t\t\t\t\t\t\t<div style=\"margin-left:5px;margin-top:10px;margin-bottom:10px\"><img src=\"/images/New_ui/export/line_export.png\"></div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"SimpleNote\" id=\"head_illustrate\"><i></i><em>Aliddns</em>是一款基于阿里云解析的私人ddns解决方案。<a href='http://koolshare.cn/thread-64703-1-1.html' target='_blank'><i>&nbsp;&nbsp;<u>点击查看插件详情</u></i></a></div>\n                \t\t\t\t\t\t<table style=\"margin:20px 0px 0px 0px;\" width=\"100%\" border=\"1\" align=\"center\" cellpadding=\"4\" cellspacing=\"0\" bordercolor=\"#6b8fa3\" class=\"FormTable\">\n\t\t\t\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">Aliddns - 设置面板</td>\n\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t\t\t\t<tr id=\"switch_tr\">\n\t\t\t\t\t\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<label>开启Aliddns</label>\n\t\t\t\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t\t\t\t\t<td colspan=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"switch_field\" style=\"display:table-cell\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"switch\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input id=\"switch\" class=\"switch\" type=\"checkbox\" style=\"display: none;\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"switch_container\" >\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"switch_bar\"></div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"switch_circle transition_style\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div></div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div id=\"koolproxy_install_show\" style=\"padding-top:5px;margin-left:80px;margin-top:-30px;float: left;\"></div>\t\n\t\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t</tr>\n                \t\t\t\t\t\t    <tr id=\"last_act_tr\">\n                \t\t\t\t\t\t        <th>上次运行</th>\n                \t\t\t\t\t\t        <td>\n                \t\t\t\t\t\t            <% dbus_get_def(\"aliddns_last_act\", \"--\"); %>\n                \t\t\t\t\t\t        </td>\n                \t\t\t\t\t\t    </tr>\n                \t\t\t\t\t\t    <tr id=\"ak_tr\">\n                \t\t\t\t\t\t        <th>app key</th>\n                \t\t\t\t\t\t        <td>\n                \t\t\t\t\t\t            <input type=\"text\" id=\"aliddns_ak\" value=\"<% dbus_get_def(\"aliddns_ak\", \"\"); %>\" class=\"input_ss_table\">\n                \t\t\t\t\t\t        </td>\n                \t\t\t\t\t\t    </tr>\n                \t\t\t\t\t\t    <tr id=\"sk_tr\">\n                \t\t\t\t\t\t        <th>app secret</th>\n                \t\t\t\t\t\t        <td><input type=\"password\" id=\"aliddns_sk\" value=\"<% dbus_get_def(\"aliddns_sk\", \"\"); %>\" class=\"input_ss_table\"></td>\n                \t\t\t\t\t\t    </tr>\n                \t\t\t\t\t\t    <tr id=\"interval_tr\">\n                \t\t\t\t\t\t        <th>检查周期</th>\n                \t\t\t\t\t\t        <td><input type=\"text\" style=\"width: 2.5em\" id=\"aliddns_interval\" value=\"<% dbus_get_def(\"aliddns_interval\", \"120\"); %>\" class=\"input_ss_table\">s</td>\n                \t\t\t\t\t\t    </tr>\n                \t\t\t\t\t\t    <tr id=\"name_tr\">\n                \t\t\t\t\t\t        <th>域名</th>\n                \t\t\t\t\t\t        <td>\n                \t\t\t\t\t\t            <input type=\"text\" style=\"width: 4em\" id=\"aliddns_name\" placeholder=\"子域名\" value=\"<% dbus_get_def(\"aliddns_name\", \"home\"); %>\" class=\"input_ss_table\"\n                \t\t\t\t\t\t            >.<input type=\"text\"  id=\"aliddns_domain\" placeholder=\"主域名\" value=\"<% dbus_get_def(\"aliddns_domain\", \"example.com\"); %>\" class=\"input_ss_table\">\n                \t\t\t\t\t\t        </td>\n                \t\t\t\t\t\t    </tr>\n                \t\t\t\t\t\t    <tr id=\"dns_tr\">\n                \t\t\t\t\t\t        <th title=\"查询域名当前IP时使用的DNS解析服务器，默认为阿里云DNS\">DNS服务器(?)</th>\n                \t\t\t\t\t\t        <td><input id=\"aliddns_dns\" class=\"input_ss_table\" value=\"<% dbus_get_def(\"aliddns_dns\", \"223.5.5.5\"); %>\"></td>\n                \t\t\t\t\t\t    </tr>\n                \t\t\t\t\t\t    <tr id=\"curl_tr\">\n                \t\t\t\t\t\t        <th title=\"可自行修改命令行，以获得正确的公网IP。如添加 '--interface vlan2' 以指定多播情况下的端口支持\">获得IP命令(?)</th>\n                \t\t\t\t\t\t        <td><textarea id=\"aliddns_curl\" class=\"input_ss_table\" style=\"width: 94%; height: 2.4em\"><% dbus_get_def(\"aliddns_curl\", \"curl -s whatismyip.akamai.com\"); %></textarea></td>\n                \t\t\t\t\t\t    </tr>\n                \t\t\t\t\t\t    <tr id=\"ttl_tr\">\n                \t\t\t\t\t\t        <th title=\"设置解析TTL，默认10分钟，免费版的范围是600-86400\">TTL(?)</th>\n                \t\t\t\t\t\t        <td><input id=\"aliddns_ttl\" style=\"width: 4.5em\" class=\"input_ss_table\" value=\"<% dbus_get_def(\"aliddns_ttl\", \"600\"); %>\">s (1~86400)</td>\n                \t\t\t\t\t\t    </tr>\n                \t\t\t\t\t\t</table>\n                \t\t\t\t\t\t<div class=\"apply_gen\">\n                \t\t\t\t\t\t    <input class=\"button_gen\" type=\"button\" value=\"提交\">\n                \t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div style=\"margin-left:5px;margin-top:10px;margin-bottom:10px\"><img src=\"/images/New_ui/export/line_export.png\"/></div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"KoolshareBottom\" style=\"margin-top:540px;\">\n\t\t\t\t\t\t\t\t\t\t\t论坛技术支持： <a href=\"http://www.koolshare.cn\" target=\"_blank\"> <i><u>www.koolshare.cn</u></i> </a> <br/>\n\t\t\t\t\t\t\t\t\t\t\tGithub项目： <a href=\"https://github.com/koolshare/koolshare.github.io/tree/acelan_softcenter_ui\" target=\"_blank\"> <i><u>github.com/koolshare</u></i> </a> <br/>\n\t\t\t\t\t\t\t\t\t\t\tShell by： <i>kyrios</i> , Web by： <i>kyrios</i>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t<!--=====end of Main Content=====-->\n        </td>\n    </tr>\n</table>\n<div id=\"footer\"></div>\n<script>\n$(function () {\n    show_menu(menu_hook);\n    var enable = \"<% dbus_get_def(\"aliddns_enable\", \"0\"); %>\";\n    $('#switch').prop('checked', enable === \"1\");\n    buildswitch();\n    update_visibility();\n    var posting = false;\n\tvar inputs = ['ak', 'sk', 'name', 'domain', 'interval', 'dns', 'curl', 'ttl'];\n    $('.button_gen').click(function () {\n        if(posting) return;\n        posting = true; // save\n\t\tvar data = {\n\t\t\taliddns_enable: $('#switch').prop('checked') | 0,\n\t\t\taction_mode: ' Refresh ',\n\t\t\tcurrent_page: 'Module_aliddns.asp',\n\t\t\tnext_page: 'Module_aliddns.asp',\n\t\t\tSystemCmd: 'aliddns_config.sh'\n\t\t};\n\t\tfor(var i = 0; i< inputs.length; i++) {\n\t\t\tvar key = 'aliddns_' + inputs[i];\n\t\t\tdata['aliddns_' + inputs[i]] = $('#aliddns_' + inputs[i]).val()\n\t\t}\n        $.ajax({\n            type: 'POST',\n            url: 'applydb.cgi?p=aliddns_',\n            data: $.param(data)\n        }).then(function () {\n            posting = false;\n            alert('saved');\n        }, function () {\n            posting = false;\n           alert('failed'); \n        })\n    })\n})\n\nvar enable_ss = \"<% nvram_get(\"enable_ss\"); %>\";\nvar enable_soft = \"<% nvram_get(\"enable_soft\"); %>\";\nfunction menu_hook(title, tab) {\n\tif(enable_ss == \"1\" && enable_soft == \"1\"){\n\t\ttabtitle[17] = new Array(\"\", \"Aliddns\");\n\t\ttablink[17] = new Array(\"\", \"Module_aliddns.asp\");\n\t}else{\n\t\ttabtitle[16] = new Array(\"\", \"Aliddns\");\n\t\ttablink[16] = new Array(\"\", \"Module_aliddns.asp\");\n\t}\n}\n\nfunction reload_Soft_Center(){\nlocation.href = \"/Main_Soft_center.asp\";\n}\n\nfunction buildswitch(){\n\t$(\"#switch\").click(\n\tfunction(){\n\t\tupdate_visibility();\n\t});\n}\n\nfunction update_visibility(){\n\tif(document.getElementById('switch').checked){\n\t\tdocument.getElementById(\"last_act_tr\").style.display = \"\";\n\t\tdocument.getElementById(\"ak_tr\").style.display = \"\";\n\t\tdocument.getElementById(\"sk_tr\").style.display = \"\";\n\t\tdocument.getElementById(\"interval_tr\").style.display = \"\";\n\t\tdocument.getElementById(\"name_tr\").style.display = \"\";\n\t\t\n\t}else{\n\t\tdocument.getElementById(\"last_act_tr\").style.display = \"none\";\n\t\tdocument.getElementById(\"ak_tr\").style.display = \"none\";\n\t\tdocument.getElementById(\"sk_tr\").style.display = \"none\";\n\t\tdocument.getElementById(\"interval_tr\").style.display = \"none\";\n\t\tdocument.getElementById(\"name_tr\").style.display = \"none\";\n\t}\n}\n\n</script>\n</body>\n</html>\n\n"
  },
  {
    "path": "build.sh",
    "content": "#!/bin/sh\n\ntar zcvf aliddns.tar.gz aliddns\n"
  }
]