diff --git a/yimian/.viminfo b/yimian/.viminfo index d7aef2bc..2ad347f1 100755 --- a/yimian/.viminfo +++ b/yimian/.viminfo @@ -14,17 +14,17 @@ $ # Command Line History (newest to oldest): -:q! :wq +:Wq :w +:q +:q! :Q! :q1 -:q :! :Q :!q :s -:Wq # Search String History (newest to oldest): ?/imgbed @@ -39,17 +39,11 @@ $ # Input Line History (newest to oldest): # Registers: -""0 CHAR 0 - - - /* obs get img */ - function getImg($path, $time = 300){ - - return str_replace('yimian-image.obs.cn-east-2.myhuaweicloud.com:443','image.yimian.xyz',trim(exec("obs sign obs://yimian-image/". $path ." -e=". $time))); - } - - -"1 CHAR 0 +"0 LINE 0 + Header("HTTP/1.1 301 Moved Permanently"); +""1 LINE 0 + Header("HTTP/1.1 301 Moved Permanently"); +"2 CHAR 0 function getMatchedKeys($str, $arr){ if(!is_array($str)){ @@ -66,7 +60,7 @@ $ return $o; } } -"2 CHAR 0 +"3 CHAR 0 elseif($type){ $arr = getImgsInfo($type); @@ -117,36 +111,41 @@ $ }while($R18 != true && $arr[6][$arr_keys[$index]] != "normal"); $path = $type. '/' .$arr[0][$arr_keys[$index]]; -"3 LINE 0 - "4 LINE 0 "5 LINE 0 - if(isset($range) && $range > 0) $range = $range; else $range = 0; + "6 LINE 0 - if($R18 != "true") $R18 = false; else $R18 = true; + if(isset($range) && $range > 0) $range = $range; else $range = 0; "7 LINE 0 - if($display != "true") $display = false; else $display = true; + if($R18 != "true") $R18 = false; else $R18 = true; "8 LINE 0 - if(!isset($path)) $path = null; + if($display != "true") $display = false; else $display = true; "9 LINE 0 - if(!isset($size)) $size = null; + if(!isset($path)) $path = null; "- CHAR 0 # File marks: -'0 14 32 ~/conf/nginx/settlement.yimian.xyz.conf -'1 308 60 ~/www/settlement/index.html -'2 22 28 /home/ushio/www/img/usr/themes/photograph/index.php -'3 1 0 /home/ushio/www/img/usr/themes/photograph/index. -'4 1 0 /home/lib/php/anti-ddos.php -'5 1 0 /home/ushio/www/img/index.php -'6 1 0 /home/ushio/www/img/in -'7 38 0 /home/ushio/www/img/index.php -'8 32 0 /home/ushio/www/api/video/index.php -'9 291 3 /home/ushio/www/api/functions.php +'0 14 28 ~/www/shorturl/index.php +'1 3 44 ~/www/shorturl/index.php +'2 3 50 ~/www/shorturl/index.php +'3 6 21 ~/www/shorturl/.db.key.php +'4 2 33 ~/www/shorturl/functions.php +'5 14 32 ~/conf/nginx/settlement.yimian.xyz.conf +'6 308 60 ~/www/settlement/index.html +'7 22 28 /home/ushio/www/img/usr/themes/photograph/index.php +'8 1 0 /home/ushio/www/img/usr/themes/photograph/index. +'9 1 0 /home/lib/php/anti-ddos.php # Jumplist (newest first): +-' 14 28 ~/www/shorturl/index.php +-' 3 0 ~/www/shorturl/index.php +-' 6 21 ~/www/shorturl/.db.key.php +-' 1 0 ~/www/shorturl/.db.key.php +-' 2 33 ~/www/shorturl/functions.php +-' 1 0 ~/www/shorturl/functions.php +-' 1 0 ~/www/shorturl/index.php -' 14 32 ~/conf/nginx/settlement.yimian.xyz.conf -' 1 0 ~/conf/nginx/settlement.yimian.xyz.conf -' 308 60 ~/www/settlement/index.html @@ -237,18 +236,39 @@ $ -' 277 9 ~/www/settlement/index.html -' 192 8 ~/www/settlement/api/index.php -' 162 8 ~/www/settlement/api/index.php --' 179 8 ~/www/settlement/api/index.php --' 214 0 ~/www/settlement/api/index.php --' 205 8 ~/www/settlement/api/index.php --' 161 4 ~/www/settlement/api/index.php --' 4 423 ~/www/settlement/imgbed/js/jquery.imageuploader.js --' 9 452 ~/www/settlement/imgbed/js/jquery.imageuploader.js --' 22 4 ~/www/settlement/imgbed/js/jquery.imageuploader.js --' 16 12 ~/www/settlement/imgbed/js/jquery.imageuploader.js --' 69 8 ~/www/settlement/imgbed/index.html # History of marks within files (newest to oldest): +> ~/www/shorturl/index.php + " 14 28 + ^ 14 29 + . 14 28 + + 2 0 + + 3 50 + + 3 50 + + 3 44 + + 9 28 + + 10 0 + + 7 0 + + 6 0 + + 10 41 + + 13 0 + + 11 9 + + 14 28 + +> ~/www/shorturl/.db.key.php + " 6 21 + ^ 6 22 + . 6 20 + + 4 22 + + 6 20 + +> ~/www/shorturl/functions.php + " 2 33 + ^ 2 34 + . 2 33 + + 2 33 + > ~/conf/nginx/settlement.yimian.xyz.conf " 14 32 ^ 14 33 @@ -588,136 +608,3 @@ $ + 10 4 + 4 376 + 4 0 - -> ~/www/settlement/func/functions.php - " 46 0 - ^ 46 1 - . 73 93 - + 3 37 - + 9 2 - + 4 0 - + 61 95 - + 71 56 - + 72 86 - + 73 93 - -> ~/www/settlement/api/getWeekData.php - " 51 64 - ^ 51 65 - . 51 64 - + 23 161 - + 35 0 - + 56 23 - + 57 18 - + 58 17 - + 68 0 - + 21 20 - + 12 0 - + 10 39 - + 11 0 - + 12 36 - + 14 35 - + 15 15 - + 56 1 - + 57 1 - + 58 1 - + 59 1 - + 15 11 - + 17 39 - + 18 33 - + 19 32 - + 18 38 - + 19 7 - + 21 40 - + 45 0 - + 68 8 - + 29 32 - + 7 3 - + 29 34 - + 7 10 - + 29 42 - + 29 4 - + 29 37 - + 29 73 - + 68 0 - + 56 0 - + 57 0 - + 58 0 - + 59 0 - + 58 23 - + 30 0 - + 31 0 - + 28 4 - + 26 8 - + 28 10 - + 23 193 - + 28 22 - + 31 36 - + 45 42 - + 46 4 - + 45 9 - + 46 18 - + 26 0 - + 30 17 - + 31 17 - + 46 67 - + 45 34 - + 46 68 - + 50 47 - + 51 3 - + 50 37 - + 51 32 - + 52 39 - + 47 0 - + 47 0 - + 50 34 - + 46 33 - + 45 34 - + 47 25 - + 27 0 - + 26 6 - + 54 52 - + 54 61 - + 54 9 - + 55 0 - + 36 6 - + 37 0 - + 36 40 - + 38 37 - + 39 7 - + 62 35 - + 63 47 - + 63 55 - + 64 21 - + 63 10 - + 64 64 - + 66 0 - + 64 36 - + 65 0 - + 66 34 - + 63 9 - + 64 44 - + 66 25 - + 39 37 - + 39 41 - + 39 7 - + 39 30 - + 40 10 - + 41 13 - + 51 64 - -> ~/www/settlement/imgbed/index.html - " 69 8 - ^ 14 37 - . 14 36 - + 7 24 - + 18 50 - + 22 90 - + 35 60 - + 39 75 - + 47 123 - + 50 88 - + 49 27 - + 52 198 - + 54 35 - + 14 36 diff --git a/yimian/conf/nginx/eee.dog.conf b/yimian/conf/nginx/eee.dog.conf new file mode 100644 index 00000000..87868ab6 --- /dev/null +++ b/yimian/conf/nginx/eee.dog.conf @@ -0,0 +1,50 @@ +server { + listen 80; + #listen [::]:80; + server_name eee.dog; + rewrite ^(.*)$ https://$host$1 permanent; +} + + +server { + #listen 80; + #listen [::]:80; + listen 443 ssl; + + server_name eee.dog; + root /home/yimian/www/blog; + index index.php index.html; + + ssl_certificate /etc/letsencrypt/live/www.eee.dog/fullchain.pem; #2 + ssl_certificate_key /etc/letsencrypt/live/www.eee.dog/privkey.pem; #3 + + ssl_session_cache shared:SSL:1m; + ssl_session_timeout 5m; + ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_prefer_server_ciphers on; + #error_page 404 = /404.php; + + rewrite ^(.*)$ https://www.$host$1 permanent; + + # Load configuration files for the default server block. + include /etc/nginx/default.d/*.conf; + include /home/ushio/conf/nginx/default.d/*.conf; + + if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } + if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } + if (!-f $request_filename){ rewrite (.*) /index.php; } + if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } + + location /s/ { + rewrite ^(.*)$ /s/index.php?s=$1 last; + } + + error_page 404 /404.html; + location = /40x.html { + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + } +} diff --git a/yimian/www/shorturl/.db.key.php b/yimian/www/shorturl/.db.key.php new file mode 100755 index 00000000..63c1ef00 --- /dev/null +++ b/yimian/www/shorturl/.db.key.php @@ -0,0 +1,6 @@ +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="",$sql_plus = "") +{ + + $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 $sql_plus"; + elseif($clmnName2=="") $sql = "SELECT * FROM $table where $clmnName='$value' $sql_plus"; + else $sql = "SELECT * FROM $table where $clmnName='$value' AND $clmnName2='$value2' $sql_plus"; + + $result = $conn->query($sql); + //no data + if ($result->num_rows > 0) {}else{return 404;} + + $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 get img */ +function getImg($path, $time = 300){ + + return str_replace('yimian-image.obs.cn-east-2.myhuaweicloud.com:443','image.yimian.xyz',trim(exec("obs sign obs://yimian-image/". $path ." -e=". $time))); +} + +function getImgsInfo($type){ + $arr_os = array(); + $arr = array(); + ini_set("pcre.backtrack_limit" , -1); ini_set("pcre.recursion_limit" , -1); ini_set("memory_limit" , "1024M"); + exec('obs ls obs://yimian-image/'.$type.' -limit=-1', $arr_os); + //echo count($arr_os); + + $str = implode ($arr_os); + preg_match_all('/img_(\S*?)_(\d{2,4})x(\d{2,4})_(\S*?)_(\S*?)_(\S*?).(jpe?g|png|gif|svg)\b/', $str, $arr); + + 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); +} + diff --git a/yimian/www/shorturl/index.php b/yimian/www/shorturl/index.php new file mode 100644 index 00000000..79b6608b --- /dev/null +++ b/yimian/www/shorturl/index.php @@ -0,0 +1,14 @@ +