diff --git a/package.json b/package.json index 6928cf8..896a354 100644 --- a/package.json +++ b/package.json @@ -7,12 +7,14 @@ }, "dependencies": { "cookie-parser": "~1.4.4", + "cors": "^2.8.5", "debug": "~2.6.9", "express": "~4.16.1", "express-ws": "^4.0.0", "http-errors": "~1.6.3", "md5": "^2.3.0", "morgan": "~1.9.1", + "mysql": "^2.18.1", "pug": "^2.0.4", "redis": "^2.8.0", "ws": "^7.0.1" diff --git a/php/del.php b/php/del.php new file mode 100644 index 0000000..036e1d1 --- /dev/null +++ b/php/del.php @@ -0,0 +1,26 @@ +connect('redis',6379); + + +$mask = $_REQUEST['mask']; +$del = $_REQUEST['del']; +$t = $_REQUEST['t']; +if(!isset($mask)) die(); +if(!isset($del)) die(); +if(!isset($t)) die(); + +if($t < time() - 10000) die(); + + +$addr = getAddress($mask, $redis); + +$redis->hDel('session/dialog/'.$addr, $del); + + +echo json_encode($redis->hGetAll('session/dialog/'.$addr)); + diff --git a/php/functions.php b/php/functions.php new file mode 100755 index 0000000..0c440f4 --- /dev/null +++ b/php/functions.php @@ -0,0 +1,656 @@ +connect_error) + { + die("Mysql Connect Failed: " . $conn->connect_error); + } + + return ($conn); +} + +//get table row number::(data_cnnct var,table name) ::(row number) +function db__rowNum($conn,$table,$clmnName="",$value="",$clmnName2="",$value2="") +{ + + $table=db__antisql($table); + $clmnName=db__antisql($clmnName); + $value=db__antisql($value); + $clmnName2=db__antisql($clmnName2); + $value2=db__antisql($value2); + + + if($clmnName=="") $sql = "SELECT COUNT(*) FROM $table"; + elseif($clmnName2=="") $sql = "SELECT COUNT(*) FROM $table where $clmnName='$value'"; + else $sql = "SELECT COUNT(*) FROM $table where $clmnName='$value' AND $clmnName2='$value2'"; + + $row_count = $conn->query($sql); + list($row_num) = $row_count->fetch_row(); + return ($row_num); +} + +//get row data from database::(data_cnnct var, table name,column name, column value)::(row info) +function db__getData($conn,$table,$clmnName="",$value="",$clmnName2="",$value2="") +{ + + $table=db__antisql($table); + $clmnName=db__antisql($clmnName); + $value=db__antisql($value); + $clmnName2=db__antisql($clmnName2); + $value2=db__antisql($value2); + + + if($clmnName=="") $sql = "SELECT * FROM $table"; + elseif($clmnName2=="") $sql = "SELECT * FROM $table where $clmnName='$value'"; + else $sql = "SELECT * FROM $table where $clmnName='$value' AND $clmnName2='$value2'"; + + $result = $conn->query($sql); + //no data + if ($result->num_rows > 0) {}else{return array();} + + $i=0; + $arr=array(); + while($row = $result->fetch_assoc()) { + $arr[$i++]=$row; + } + return ($arr); +} + + +//fnct for insert a row to database +function db__insertData($conn,$table,$content) +{ + $table=db__antisql($table); + + $key=array_keys($content); + + $key=db__antisql($key); + + $sql="insert INTO $table ("; + + for($i=0;$iquery($sql) === TRUE)) echo "SQL Insert Error: " . $sql . "
" . $conn->error; + +} + + +//fnct for update a row to database without check +function db__updateData($conn,$table,$content,$index) +{ + $key=array_keys($content); + $key=db__antisql($key); + + $sql="UPDATE $table SET "; + + for($i=0;$iquery($sql) === TRUE)) echo "SQL Insert Error: " . $sql . "
" . $conn->error; + +} + + + + +//push row data from database::(data_cnnct var, table name,column name, column value)::(row info) +function db__pushData($conn,$table,$content,$index="",$is_force=1) +{ + if($index) + { + $index_keys=array_keys($index); + + if(count($index_keys)==1) $result=db__rowNum($conn,$table,$index_keys[0],$index[$index_keys[0]]); + + elseif(count($index_keys)==2) $result=db__rowNum($conn,$table,$index_keys[0],$index[$index_keys[0]],$index_keys[1],$index[$index_keys[1]]); + + else return -1; + + if($result>0) db__updateData($conn,$table,$content,$index); + else if($is_force) db__insertData($conn,$table,$content); + + } + else + db__insertData($conn,$table,$content); +} + + +function db__delData($conn, $table, $clmnName, $value) +{ + $value=db__antisql($value); + $clmnName=db__antisql($clmnName); + + $sql = "DELETE FROM $table WHERE $clmnName = '$value'"; + $conn->query($sql); +} + + +//anti sql +function db__antisql($str) +{ + return(str_ireplace("'","",$str)); +} + + +/*****log******/ +function yimian__log($table, $val, $index = "", $cnt = null){ + + if(!isset($cnt)) $cnt = db__connect("log"); + if($index != "") db__pushData($cnt, $table, $val, $index); + else db__pushData($cnt, $table, $val); +} + +/** get from address **/ +function get_from(){ + + if($_SERVER['HTTP_REFERER']) return $_SERVER['HTTP_REFERER']; + elseif($_REQUEST['from']) return $_REQUEST['from']; +} + +function get_from_domain(){ + + $str = str_replace("http://","",get_from()); + $str = str_replace("https://","",$str); + $strdomain = explode("/",$str); + return $strdomain[0]; +} + + +/*****curl*****/ + +function curl__post($url = '', $param) { + + if(empty($url)) { + return false; + } + + $o = ""; + foreach ($param as $k => $v) { + $o .= "$k=".urlencode($v)."&" ; + } + + $postUrl = $url; + $curlPost = substr($o,0,-1); + $ch = curl_init();//初始化curl + curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页 + curl_setopt($ch, CURLOPT_HEADER, 0);//设置header + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 + curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 + curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); + $data = curl_exec($ch);//运行curl + curl_close($ch); + + return $data; +} + + + +/* get IP */ +function get_ip(){ + return getIp(); +} +function getIp() +{ + if (isset($_SERVER)) { + if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { + $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); + + foreach ($arr as $ip) { + $ip = trim($ip); + + if ($ip != 'unknown') { + $realip = $ip; + break; + } + } + } else if (isset($_SERVER['HTTP_CLIENT_IP'])) { + $realip = $_SERVER['HTTP_CLIENT_IP']; + } else if (isset($_SERVER['REMOTE_ADDR'])) { + $realip = $_SERVER['REMOTE_ADDR']; + } else { + $realip = '0.0.0.0'; + } + } else if (getenv('HTTP_X_FORWARDED_FOR')) { + $realip = getenv('HTTP_X_FORWARDED_FOR'); + } else if (getenv('HTTP_CLIENT_IP')) { + $realip = getenv('HTTP_CLIENT_IP'); + } else { + $realip = getenv('REMOTE_ADDR'); + } + + preg_match('/[\\d\\.]{7,15}/', $realip, $onlineip); + $realip = (!empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0'); + return $realip; +} + +/* obs sdk */ +require '/home/lib/huaweicloud-sdk-php-obs/vendor/autoload.php'; +require '/home/lib/huaweicloud-sdk-php-obs/obs-autoloader.php'; + +use Obs\ObsClient; + + +/* obs get video */ +function getVideo($path, $time = 120*60){ + + return obsSign($path, $time); +} + + +/* obs get img */ +function getImg($path, $time = 300){ + + return str_replace('yimian-image.obs.cn-east-2.myhuaweicloud.com:443','image.yimian.xyz',obsSign($path, $time)); +} + + + + +function obsSign($path, $expires = 300){ + + $obsClient = new ObsClient([ + 'key' => $GLOBALS['huawei_AK'], + 'secret' => $GLOBALS['huawei_SK'], + 'endpoint' => "https://obs.cn-east-2.myhuaweicloud.com", + ]); + + + $resp = $obsClient->createSignedUrl( [ + 'Method' => 'GET', + 'Bucket' => 'yimian-image', + 'Key' => $path, + 'Expires' => $expires + ] ); + + $obsClient -> close(); + return $resp['SignedUrl']; + +} + + + + + +function getImgsInfo($type, $isFast = false){ + + $obsClient = new ObsClient([ + 'key' => $GLOBALS['huawei_AK'], + 'secret' => $GLOBALS['huawei_SK'], + 'endpoint' => "https://obs.cn-east-2.myhuaweicloud.com", + ]); + + $resp = $obsClient -> listObjects([ + 'Bucket' => 'yimian-image', + 'MaxKeys' => 10000, + 'Prefix' => $type.'/', + 'Marker' => $type.'/img' + ]); + + + //ini_set("pcre.backtrack_limit" , -1); ini_set("pcre.recursion_limit" , -1); ini_set("memory_limit" , "1024M"); + + foreach($resp['Contents'] as $index => $val){ + $str .= $val['Key'].' '; + }; + + $obsClient -> close(); + + + preg_match_all('/img_(\S*?)_(\d{2,4})x(\d{2,4})_(\S*?)_(\S*?)_(\S*?).(jpe?g|png|gif|svg)\b/', $str, $arr); + +//echo var_dump($str); + + return $arr; + +} + +/*****gugu*****/ + +function yimian__gugu($body){ + + $body = iconv("UTF-8","gbk//TRANSLIT",$body); + $url = "http://open.memobird.cn/home/printpaper"; + return curl__post($url, array("ak" => $GLOBALS['ggj_ak'], "userID" => $GLOBALS['ggj_userID'], "memobirdID" => $GLOBALS['ggj_memobirdID'], "printcontent" => "T:".base64_encode($body)."", "timestamp" => "".time()."")); +} + + +function gugu__send($ak, $userID, $memobirdID, $body){ + + $body = iconv("UTF-8","gbk//TRANSLIT",$body); + $url = "http://open.memobird.cn/home/printpaper"; + return curl__post($url, array("ak" => $ak, "userID" => $userID, "memobirdID" => $memobirdID, "printcontent" => "T:".base64_encode($body)."", "timestamp" => "".time()."")); +} + + + +/** function for mail **/ + +function yimian__mail($to, $subject, $body, $from){ + + + if($from == "") $from = "IoTcat 呓喵酱"; + if($body == "") $body = "额(⊙﹏⊙) 未找到指定的邮件内容耶( •̀ ω •́ )y

更多信息请咨询IoTcat期待你的回应啦~"; + if($subject == "") $subject = "来自IoTcat的一声问候~"; + + $data = array( + 'fromName' => $from, // 发件人名称 + 'from' => "admin@iotcat.xyz", // 发件地址 + 'to' => $to, // 收件地址 + 'replyTo' => "i@iotcat.me", // 回信地址 + 'subject' => $subject, + 'html' => $body + ); + + // 当前请求区域 + // 杭州 + // API地址 + $data['api'] = 'https://dm.aliyuncs.com/'; + // API版本号 + $data['version'] = '2015-11-23'; + // 机房信息 + $data['region'] = 'cn-hangzhou'; + + // AccessKeyId + $data['accessid'] = $GLOBALS['aym_AccessKey']; + // AccessKeySecret + $data['accesssecret'] = $GLOBALS['aym_SecretKey']; + // 是否成功 + return aliyun($data); + +} + + + +//mail alliyun api +function aliyun($param) +{ + // 重新组合为阿里云所使用的参数 + $data = array( + 'Action' => 'SingleSendMail', // 操作接口名 + 'AccountName' => $param['from'], // 发件地址 + 'ReplyToAddress' => "true", // 回信地址 + 'AddressType' => 1, // 地址类型 + 'ToAddress' => $param['to'], // 收件地址 + 'FromAlias' => $param['fromName'], // 发件人名称 + 'Subject' => $param['subject'], // 邮件标题 + 'HtmlBody' => $param['html'], // 邮件内容 + 'Format' => 'JSON', // 返回JSON + 'Version' => $param['version'], // API版本号 + 'AccessKeyId' => $param['accessid'], // Access Key ID + 'SignatureMethod' => 'HMAC-SHA1', // 签名方式 + 'Timestamp' => gmdate('Y-m-d\TH:i:s\Z'), // 请求时间 + 'SignatureVersion' => '1.0', // 签名算法版本 + 'SignatureNonce' => md5(time()), // 唯一随机数 + 'RegionId' => $param['region'] // 机房信息 + ); + // 请求签名 + $data['Signature'] = sign($data, $param['accesssecret']); + // 初始化Curl + $ch = curl_init(); + // 设置为POST请求 + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); + // 请求地址 + curl_setopt($ch, CURLOPT_URL, $param['api']); + // 返回数据 + curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); + // 提交参数 + curl_setopt($ch, CURLOPT_POSTFIELDS, getPostHttpBody($data)); + // 关闭ssl验证 + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); + // 执行请求 + $result = curl_exec($ch); + // 获取错误代码 + $errno = curl_errno($ch); + // 获取错误信息 + $error = curl_error($ch); + // 获取返回状态码 + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + // 关闭请求 + curl_close($ch); + // 成功标识 + $flag = TRUE; + // 如果开启了Debug + if (1) { + // 记录时间 + $log = '[Aliyun] ' . date('Y-m-d H:i:s') . ': ' . PHP_EOL; + // 如果失败 + if ( $errno ) { + // 设置失败 + $flag = FALSE; + $log .= '邮件发送失败, 错误代码:' . $errno . ',错误提示: ' . $error . PHP_EOL; + } + // 如果失败 + if ( 400 <= $httpCode ) { + // 设置失败 + $flag = FALSE; + // 尝试转换json + if ( $json = json_decode($result) ) { + $log .= '邮件发送失败,错误代码:' . $json->Code . ',错误提示:' . $json->Message . PHP_EOL; + } else { + $log .= '邮件发送失败, 请求返回HTTP Code:' . $httpCode . PHP_EOL; + } + } + // 记录返回值 + $log .= '邮件发送返回数据:' . serialize($result) . PHP_EOL; + // 写入文件 + } + yimian__log("log_mail",array("timestamp" => date('Y-m-d H:i:s', time()), "to_" => $param['to'], "from_" => $param['fromName'], "subject" => $param['subject'], "body" => $param['html'], "success" => (($flag)?1:0), "return_" => $log)); + // 返回结果 + //echo $log; + return $flag; +} + + +/** + * 阿里云签名 + * + * @static + * @access private + * + * @param array $param 签名参数 + * @param string $accesssecret 秘钥 + * + * @return string + */ +function sign($param, $accesssecret) +{ + // 参数排序 + ksort($param); + // 组合基础 + $stringToSign = 'POST&' . percentEncode('/') . '&'; + // 临时变量 + $tmp = ''; + // 循环参数列表 + foreach ( $param as $k => $v ) { + // 组合参数 + $tmp .= '&' . percentEncode($k) . '=' . percentEncode($v); + } + // 去除最后一个& + $tmp = trim($tmp, '&'); + // 组合签名参数 + $stringToSign = $stringToSign . percentEncode($tmp); + // 数据签名 + $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accesssecret . '&', TRUE)); + // 返回签名 + return $signature; +} + +/** + * 阿里云签名编码转换 + * + * @static + * @access private + * + * @param string $val 要转换的编码 + * + * @return string|string[]|null + */ +function percentEncode($val) +{ + // URL编码 + $res = urlencode($val); + // 加号转换为%20 + $res = preg_replace('/\+/', '%20', $res); + // 星号转换为%2A + $res = preg_replace('/\*/', '%2A', $res); + // %7E转换为~ + $res = preg_replace('/%7E/', '~', $res); + return $res; +} + +/** + * 阿里云请求参数组合 + * + * @static + * @access private + * + * @param array $param 发送参数 + * + * @return bool|string + */ +function getPostHttpBody($param) +{ + // 空字符串 + $str = ""; + // 循环参数 + foreach ( $param as $k => $v ) { + // 组合参数 + $str .= $k . '=' . urlencode($v) . '&'; + } + // 去除第一个& + return substr($str, 0, -1); +} + + +/* sms */ +require __DIR__ . "/../../../lib/qcloudsms/src/index.php"; + +use Qcloud\Sms\SmsSingleSender; +use Qcloud\Sms\SmsMultiSender; +use Qcloud\Sms\SmsVoiceVerifyCodeSender; +use Qcloud\Sms\SmsVoicePromptSender; +use Qcloud\Sms\SmsStatusPuller; +use Qcloud\Sms\SmsMobileStatusPuller; + +use Qcloud\Sms\VoiceFileUploader; +use Qcloud\Sms\FileVoiceSender; +use Qcloud\Sms\TtsVoiceSender; + + +function yimian__sms($to, $tpl, $msg1, $msg2, $msg3){ + + $msg = array(); + if($tpl == 3) array_push($msg, $msg1, $msg2, $msg3); + else array_push($msg, $msg1, $msg2); + + $appid = $GLOBALS['sms_appid']; + + $appkey = $GLOBALS['sms_appkey']; + + $smsSign = $GLOBALS['sms_smsSign']; + + if($tpl == 1) $templateId = 287129; /*由于{1},本站{2}。给您带来不便深表歉意!*/ + if($tpl == 2) $templateId = 300726; /*您好!您收到一条来自{1}的消息,内容是{2}。感谢您使用本站的服务!*/ + if($tpl == 3) $templateId = 205311; /*您{1}的{2}为{3},请于5分钟内填写。如非本人操作,请忽略本短信。祝好!*/ + if($tpl == 4) $templateId = 244004; /*{1}已解决,本站{2}服务已恢复!给您带来不便深表歉意!特此告知!*/ + if($tpl == 5) $templateId = 300722; /*你好呀,你收到了一条来自访客{1}的评论,内容是{2}。感谢你使用本站的服务啦 ~*/ + + try { + $ssender = new SmsSingleSender($appid, $appkey); + $params = $msg; + $result = $ssender->sendWithParam("86", $to, $templateId, + $params, $smsSign, "", ""); /* 签名参数未提供或者为空时,会使用默认签名发送短信*/ + $rsp = json_decode($result); + echo $result; + } catch(\Exception $e) { + echo var_dump($e); + } + +} + + + + +/* get address */ +function getAddress($mask, $redis){ + $cnn = db__connect(); + $res = db__getData($cnn, "mask", "mask", $mask); + $token = $res[0]['token']; + if(!db__rowNum($cnn, "token", "token", $token)){ + return $token; + } + $hash = db__getData($cnn, "token", "token", $token); + return $hash[0]['hash']; +} + + + + + + + + + diff --git a/php/get.php b/php/get.php new file mode 100644 index 0000000..8c2ef66 --- /dev/null +++ b/php/get.php @@ -0,0 +1,19 @@ +connect('redis',6379); + + +$mask = $_REQUEST['mask']; +if(!isset($mask)) die(); + + + +$addr = getAddress($mask, $redis); + + +echo json_encode($redis->hGetAll('session/dialog/'.$addr)); + diff --git a/php/set.php b/php/set.php new file mode 100644 index 0000000..05c45d4 --- /dev/null +++ b/php/set.php @@ -0,0 +1,28 @@ +connect('redis',6379); + + +$mask = $_REQUEST['mask']; +$key = $_REQUEST['key']; +$val = $_REQUEST['val']; +$t = $_REQUEST['t']; +if(!isset($mask)) die(); +if(!isset($key)) die(); +if(!isset($val)) die(); +if(!isset($t)) die(); + +if($t < time() - 10000) die(); + + +$addr = getAddress($mask, $redis); + +$redis->hSet('session/dialog/'.$addr, $key, $val); + + +echo json_encode($redis->hGetAll('session/dialog/'.$addr)); + diff --git a/src/app.js b/src/app.js index 099b3b3..a9ee59b 100644 --- a/src/app.js +++ b/src/app.js @@ -1,4 +1,5 @@ var createError = require('http-errors'); +var cors = require('cors'); var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); @@ -7,9 +8,11 @@ var expressWs = require('express-ws'); var indexRouter = require('./routes/index'); //var usersRouter = require('./routes/users'); - var app = express(); +/* cross domain */ +app.use(cors()); + // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'pug'); @@ -25,6 +28,14 @@ app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); +/*app.all(" * ", function(req, res, next) { + res.header("Access-Control-Allow-Origin", " * "); + res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With"); + res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); + res.header("X-Powered-By",'3.2.1'); + next(); +}); +*/ app.use('/', indexRouter); //app.use('/users', usersRouter); diff --git a/src/routes/index.js b/src/routes/index.js index a663c37..1009a87 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -3,7 +3,11 @@ var expressWs = require('express-ws'); var router = express.Router(); var redis = require('redis'); var md5 = require('md5'); +var mysql = require('mysql'); +/* mysql start */ +var sql = mysql.createConnection(require('/mnt/config/dbKeys/auth.js')); +sql.connect(); /* redis start */ var rc = new redis.createClient({ @@ -11,38 +15,35 @@ var rc = new redis.createClient({ }); -var checkRedirect = (id, resolve, reject) => { - rc.get('session/redirect/'+id, (err, val) => { - if(err || !val){ - setTimeout(checkRedirect, 20, id, resolve, reject); - }else{ - checkRedirect2(val, resolve, reject); - } - }); -} - -var checkRedirect2 = (token, resolve, reject) => { - rc.get('auth/token/'+token, (err, val) => { - if(!val){ - resolve(token); - }else{ - resolve(val); - } +var getAddress = (mask) => { + return new Promise((resolve, reject)=>{ + sql.query("SELECT * FROM mask where mask=?", [mask], (err, res, fields)=>{ + if(err || !res){ + resolve(null); + return; + } + var token = res[0]['token']; + sql.query("SELECT * FROM token where token=?", [token], (err, res, fields)=>{ + if(err || !res){ + resolve(token); + return; + } + if(!res[0]['state']){ + resolve(token); + return; + } + var hash = res[0]['hash']; + resolve(hash); + }) + }); }); } -var getAddress = (fp, mask) => { - let id = md5(fp+mask); - return new Promise((resolve, reject) => { - checkRedirect(id, resolve, reject); - }); -} - router.get('/set', async function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); - if(!req.query.key || !req.query.val || !req.query.fp || !req.query.t || !req.query.mask) {res.send({"code":"500"});;return;} - let hash = await getAddress(req.query.fp, req.query.mask); + if(!req.query.key || !req.query.val || !req.query.t || !req.query.mask) {res.send({"code":"500"});;return;} + let hash = await getAddress(req.query.mask); rc.hset('session/dialog/'+hash, req.query.key, req.query.val); rc.hset('session/dialog/'+hash, 'LastOperateTime', req.query.t); res.send({code:"200"}); @@ -50,9 +51,9 @@ router.get('/set', async function(req, res, next) { router.get('/del', async function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); - if(!req.query.del || !req.query.fp || !req.query.mask || !req.query.t) {res.send({"code":"500"});;return;} + if(!req.query.del || !req.query.mask || !req.query.t) {res.send({"code":"500"});;return;} - let hash = await getAddress(req.query.fp, req.query.mask); + let hash = await getAddress(req.query.mask); rc.hdel('session/dialog/'+hash, req.query.del); rc.hset('session/dialog/'+hash, 'LastOperateTime', req.query.t); res.send({code:"200"}); @@ -61,8 +62,8 @@ router.get('/del', async function(req, res, next) { router.get('/get', async function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); - if(!req.query.fp || !req.query.mask) {res.send({"code":"500"});;return;} - let hash = await getAddress(req.query.fp, req.query.mask); + if(!req.query.mask) {res.send({"code":"500"});;return;} + let hash = await getAddress(req.query.mask); var o = {}; rc.hkeys('session/dialog/'+hash, function(err, keys){ if(!err){ @@ -91,15 +92,12 @@ expressWs(router); router .ws('/', async function (ws, req){ - if(req.query.fp.length == 6 && req.query.mask){ - var fp = req.query.fp; - var mask = req.query.mask; - var hash = await getAddress(req.query.fp, req.query.mask); + if(req.query.mask){ + var hash = await getAddress(req.query.mask); }else{ ws.close(); } ws.on('message', async function (msg) { - hash = await getAddress(req.query.fp, req.query.mask); if(msg == 'get'){ var o = {}; rc.hkeys('session/dialog/'+hash, function(err, keys){ diff --git a/yarn.lock b/yarn.lock index 91aeb0b..9321d32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -93,6 +93,11 @@ basic-auth@~2.0.0: dependencies: safe-buffer "5.1.2" +bignumber.js@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" + integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== + body-parser@1.18.3: version "1.18.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" @@ -203,6 +208,19 @@ core-js@^2.4.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cors@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + crypt@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" @@ -358,6 +376,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -388,6 +411,11 @@ is-regex@^1.0.3: dependencies: has-symbols "^1.0.1" +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + js-stringify@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" @@ -480,12 +508,22 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +mysql@^2.18.1: + version "2.18.1" + resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" + integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== + dependencies: + bignumber.js "9.0.0" + readable-stream "2.3.7" + safe-buffer "5.1.2" + sqlstring "2.3.1" + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -517,6 +555,11 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + promise@^7.0.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -657,6 +700,19 @@ raw-body@2.3.3: iconv-lite "0.4.23" unpipe "1.0.0" +readable-stream@2.3.7: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + redis-commands@^1.2.0: version "1.5.0" resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.5.0.tgz#80d2e20698fe688f227127ff9e5164a7dd17e785" @@ -700,7 +756,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -safe-buffer@5.1.2: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -754,6 +810,11 @@ source-map@~0.6.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sqlstring@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" + integrity sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A= + "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" @@ -764,6 +825,13 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -802,12 +870,17 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -vary@~1.1.2: +vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=