123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- // Created by Hulimin 2018-11-14
- var Global = require("Global");
- var crypto = require('crypto');
- var BaseDefine = require("BaseDefine");
- class DDOSDefense {
- constructor() {
- }
- static getInstance() {
- if (!DDOSDefense.instance) {
- cc.ddos_refresh = true;
- DDOSDefense.instance = new DDOSDefense();
- DDOSDefense.instance.Req_GetTransIP();
- }
- return DDOSDefense.instance;
- }
-
- // //获取token
- // Req_OnOff() {
- // var url = "http://ddjjupdate.wzzyzmq.cn/update/ddjj/defense.txt";
- // //Global.print("get data: " + url);
- // //get
- // // var self = this;
- // var xhr = new XMLHttpRequest();
- // xhr.open("GET", url, true);
- // xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- // xhr.onreadystatechange = function () {
- // //Global.print("Req_OnOff state:" + xhr.readyState + " response:" + xhr.responseText);
- // if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
- // // this.ddos_onoff = xhr.responseText
- // //客户端非强制关闭状态,启用服务端配置
- // if (cc.ddos_onoff != 2)
- // cc.ddos_onoff = parseInt(xhr.responseText);
- // }
- // };
- // xhr.send("");
- // }
- //获取token
- // Req_GetTransToken() {
- // var url = "https://i.e-link.ltd/i.e-link.ltd";
- // var uid = cc.sys.localStorage.getItem('ddos_uid');
- // if (uid == null) {
- // uid = (new Date()).getTime() + Math.random() * 10000 + "";
- // uid = crypto.createHash('md5').update(uid).digest('hex');
- // cc.sys.localStorage.setItem('ddos_uid', uid);
- // }
- // var data = "gid=850C45A7385BE9887C05FF47AF00C98F" +"&uid="+uid;
- // //Global.print("post data:" + data);
-
- // //post
- // var self = this;
- // var xhr = new XMLHttpRequest();
- // xhr.open("POST", url, true);
- // xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- // xhr.onreadystatechange = function () {
- // //Global.print("Req_GetTransToken state:" + xhr.readyState + " response:" + xhr.responseText);
- // if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
- // self.Resp_GetTransToken(xhr.responseText);
- // }
- // };
- // xhr.send(data);
- // }
- // Resp_GetTransToken(responseText) {
- // var data = JSON.parse(responseText);
- // if (data.success == true) {
- // //保存token
- // this.ddos_token = data.message
- // //获取IP
- // this.Req_GetTransIP()
- // }
- // }
- // //获取IP
- // Req_GetTransIP() {
- // if (!cc.ddos_refresh || cc.ddos_onoff==2)
- // return;
- // //获取高仿开关
- // this.Req_OnOff();
- // if (cc.ddos_onoff != 1)
- // return;
- // // if (this.ddos_token == null)
- // // {
- // // this.Req_GetTransToken()
- // // }
- // // else{
- // //接口地址:https://www.ddosworks.com/v1.html
- // // AccessKey:919f488284b256d088bfdf0795c98b04
- // // SecretKey:5c086d918b1b651d83827f6742f97d03
- // // 签名计算方法为参数
- // // access_key:timestamp:client:nonce:secret_key进行md5
- // // 注意:号为英文符号
- // //参数:
- // // signature 签名 string Y 根据算法计算
- // // access_key 访问密钥 string Y -
- // // timestamp 10位时间戳 string Y 时间戳
- // // nonce 随机值 string Y 随机值最大32位
- // // client 客户名 string Y 用户唯一名,建议提交时进行md5加密
- // //返回值
- // // {
- // // "client_ip": "111.222.222.163",
- // // "client": "123",
- // // "ips": [
- // // "1.106.9.154",
- // // "1.5.4.154"
- // // ]
- // // }
- // var url = "https://i.e-link.ltd/resolve";
- // var timestamp = Math.round(new Date() / 1000); // (new Date()).getTime() + "";
- // var nonce = Math.random() * 10000000
-
- // var client = cc.sys.localStorage.getItem('ddos_uid');
- // if (client == null) {
- // client = (new Date()).getTime() + Math.random() * 10000 + "";
- // client = crypto.createHash('md5').update(client).digest('hex');
- // cc.sys.localStorage.setItem('ddos_uid', client);
- // }
- // var signature = "919f488284b256d088bfdf0795c98b04:" + timestamp + ":" + client + ":" + nonce + ":5c086d918b1b651d83827f6742f97d03";
- // signature = crypto.createHash('md5').update(signature).digest('hex');
- // var data = "access_key=919f488284b256d088bfdf0795c98b04&signature="+signature + "×tamp=" + timestamp + "&nonce=" + nonce + "&client=" + client;
- // Global.print("post data:" + data);
-
- // //post
- // var self = this;
- // var xhr = new XMLHttpRequest();
- // xhr.open("POST", url, true);
- // xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- // xhr.onreadystatechange = function () {
- // Global.print("Req_GetTransIP state:" + xhr.readyState + " response:" + xhr.responseText);
- // if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
- // self.Resp_GetTransIP(xhr.responseText);
- // }
- // };
- // xhr.send(data);
- // // }
- // }
- // Resp_GetTransIP(responseText) {
- // var data = JSON.parse(responseText);
- // Global.print("Resp_GetTransIP::"+JSON.stringify(data));
- // if (data.ips && data.ips.length > 0) {
- // cc.ddos_IP = data.ips[0];
- // // cc.ddos_PORT = arr[1];
- // }
- // else{
- // // Req_GetTransToken()
- // }
- // }
- //获取token
- Req_GetTransIP() {
- // if (!cc.ddos_refresh || cc.ddos_onoff==2)
- // return;
-
- // // {
- // // "onoff":0, //防御开关:0-关,1-开
- // // "type":1, //防御类型:1-IP转发;2-SDK
- // // "apiurl":"https://i.e-link.ltd/resolve",
- // // "ip":"43.228.66.131"
- // // }
- // var url = BaseDefine.BROWER_PATH + "Congig/ddos.txt";
- // var self = this;
- // var xhr = new XMLHttpRequest();
- // xhr.open("GET", url, true);
- // xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- // xhr.onreadystatechange = function () {
- // //Global.print("Req_OnOff state:" + xhr.readyState + " response:" + xhr.responseText);
- // if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
- // self.Resp_GetTransIP(xhr.responseText);
- // }
- // };
- // xhr.send("");
- }
- Resp_GetTransIP(responseText) {
- var data = JSON.parse(responseText);
- Global.print("Resp_GetTransIP::"+JSON.stringify(data));
- //客户端非强制关闭状态,启用服务端配置
- if (cc.ddos_onoff != 2 && data.onoff != null)
- {
- cc.ddos_onoff = data.onoff;
- if (cc.ddos_onoff != 1)
- return;
- if (data.type == 1) {
- cc.ddos_IP = data.ip;
- }
- else
- {
- this.Req_GetIPByAPI(data.apiurl)
- }
- }
- }
- //获取IP
- Req_GetIPByAPI(api_url) {
- if (!cc.ddos_refresh)
- return;
- //接口地址:https://www.ddosworks.com/v1.html
- // AccessKey:919f488284b256d088bfdf0795c98b04
- // SecretKey:5c086d918b1b651d83827f6742f97d03
- // 签名计算方法为参数
- // access_key:timestamp:client:nonce:secret_key进行md5
- // 注意:号为英文符号
- //参数:
- // signature 签名 string Y 根据算法计算
- // access_key 访问密钥 string Y -
- // timestamp 10位时间戳 string Y 时间戳
- // nonce 随机值 string Y 随机值最大32位
- // client 客户名 string Y 用户唯一名,建议提交时进行md5加密
- //返回值
- // {
- // "client_ip": "111.222.222.163",
- // "client": "123",
- // "ips": [
- // "1.106.9.154",
- // "1.5.4.154"
- // ]
- // }
- var url = "https://i.e-link.ltd/resolve";
- if ((typeof api_url) == "string")
- url = api_url;
- var timestamp = Math.round(new Date() / 1000); // (new Date()).getTime() + "";
- var nonce = Math.random() * 10000000
-
- var client = cc.sys.localStorage.getItem('ddos_uid');
- if (client == null) {
- client = (new Date()).getTime() + Math.random() * 10000 + "";
- client = crypto.createHash('md5').update(client).digest('hex');
- cc.sys.localStorage.setItem('ddos_uid', client);
- }
- var accessKey = '65a3d9f8f127a05570292ce37299810b';
- var secretKey = '97a34771870a25ce416100743f7076db';
- var signature = accessKey + ":" + timestamp + ":" + client + ":" + nonce + ":" + secretKey;
- signature = crypto.createHash('md5').update(signature).digest('hex');
- var data = "access_key=" + accessKey + "&signature="+signature + "×tamp=" + timestamp + "&nonce=" + nonce + "&client=" + client;
- Global.print("post data:" + url + "?" + data);
-
- //post
- var self = this;
- var xhr = new XMLHttpRequest();
- xhr.open("POST", url, true);
- xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- xhr.onreadystatechange = function () {
- Global.print("Req_GetIPByAPI state:" + xhr.readyState + " response:" + xhr.responseText);
- if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
- self.Resp_GetIPByAPI(xhr.responseText);
- }
- };
- xhr.send(data);
- }
- Resp_GetIPByAPI(responseText) {
- var data = JSON.parse(responseText);
- Global.print("Resp_GetIPByAPI::"+JSON.stringify(data));
- if (data.ips && data.ips.length > 0) {
- cc.ddos_IP = data.ips[0];
- }
- }
- }
- module.exports = DDOSDefense.getInstance();
|