mirror of https://github.com/mashirozx/sakura.git
fix: bug fix
update Meting API, add ipv6 support, fix icon close #255,#243pull/273/head
parent
a831ae70e1
commit
c222fad75d
|
@ -5,8 +5,8 @@ Sakura🌸: A Wonderful WordPress Theme
|
|||
|
||||
![Sakura](https://view.moezx.cc/images/2018/05/26/sakura.png)
|
||||
|
||||
![PHP version](https://img.shields.io/badge/PHP-7.1+-4F5B93.svg?style=flat-square)
|
||||
![WP version](https://img.shields.io/badge/WordPress-5.0+-0073aa.svg?style=flat-square)
|
||||
![PHP version](https://img.shields.io/badge/PHP-7.1+-4F5B93.svg?style=flat-square&logo=php)
|
||||
![WP version](https://img.shields.io/badge/WordPress-5.3-0073aa.svg?style=flat-square&logo=wordpress)
|
||||
[![GitHub release](https://img.shields.io/github/release/mashirozx/Sakura.svg?style=flat-square)](https://github.com/mashirozx/Sakura/releases/latest)
|
||||
[![Github commits (since latest release)](https://img.shields.io/github/commits-since/mashirozx/Sakura/latest/dev.svg?style=flat-square)](https://github.com/mashirozx/Sakura/commits/dev)
|
||||
[![](https://data.jsdelivr.com/v1/package/gh/moezx/cdn/badge)](https://www.jsdelivr.com/package/gh/moezx/cdn)
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
![Sakura](https://view.moezx.cc/images/2018/05/26/sakura.png)
|
||||
|
||||
![PHP version](https://shader.2heng.xin/badge/PHP-7.1+-4F5B93.svg?style=flat-square&logo=php)
|
||||
![WP version](https://shader.2heng.xin/badge/WordPress-5.3-0073aa.svg?style=flat-square&logo=wordpress)
|
||||
![PHP version](https://img.shields.io/badge/PHP-7.1+-4F5B93.svg?style=flat-square&logo=php)
|
||||
![WP version](https://img.shields.io/badge/WordPress-5.3-0073aa.svg?style=flat-square&logo=wordpress)
|
||||
[![GitHub release](https://img.shields.io/github/v/release/mashirozx/Sakura.svg?style=flat-square&logo=github)](https://github.com/mashirozx/Sakura/releases/latest)
|
||||
[![Github commits (since latest release)](https://img.shields.io/github/commits-since/mashirozx/Sakura/latest/dev.svg?style=flat-square&logo=git&color=important)](https://github.com/mashirozx/Sakura/commits/dev)
|
||||
[![](https://data.jsdelivr.com/v1/package/gh/moezx/cdn/badge)](https://www.jsdelivr.com/package/gh/moezx/cdn)
|
||||
|
|
268
functions.php
268
functions.php
|
@ -249,149 +249,159 @@ require get_template_directory() . '/inc/categories-images.php';
|
|||
function convertip($ip)
|
||||
{
|
||||
error_reporting(E_ALL ^ E_NOTICE);
|
||||
$dat_path = dirname(__FILE__) . '/inc/QQWry.Dat';
|
||||
if (!$fd = @fopen($dat_path, 'rb')) {
|
||||
return 'IP date file not exists or access denied';
|
||||
}
|
||||
$ip = explode('.', $ip);
|
||||
$ipNum = intval($ip[0]) * 16777216 + intval($ip[1]) * 65536 + intval($ip[2]) * 256 + intval($ip[3]);
|
||||
$DataBegin = fread($fd, 4);
|
||||
$DataEnd = fread($fd, 4);
|
||||
$ipbegin = implode('', unpack('L', $DataBegin));
|
||||
if ($ipbegin < 0) {
|
||||
$ipbegin += pow(2, 32);
|
||||
}
|
||||
|
||||
$ipend = implode('', unpack('L', $DataEnd));
|
||||
if ($ipend < 0) {
|
||||
$ipend += pow(2, 32);
|
||||
}
|
||||
|
||||
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
|
||||
$BeginNum = 0;
|
||||
$EndNum = $ipAllNum;
|
||||
while ($ip1num > $ipNum || $ip2num < $ipNum) {
|
||||
$Middle = intval(($EndNum + $BeginNum) / 2);
|
||||
fseek($fd, $ipbegin + 7 * $Middle);
|
||||
$ipData1 = fread($fd, 4);
|
||||
if (strlen($ipData1) < 4) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$ip1num = implode('', unpack('L', $ipData1));
|
||||
if ($ip1num < 0) {
|
||||
$ip1num += pow(2, 32);
|
||||
}
|
||||
|
||||
if ($ip1num > $ipNum) {
|
||||
$EndNum = $Middle;
|
||||
continue;
|
||||
}
|
||||
$DataSeek = fread($fd, 3);
|
||||
if (strlen($DataSeek) < 3) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$DataSeek = implode('', unpack('L', $DataSeek . chr(0)));
|
||||
fseek($fd, $DataSeek);
|
||||
$ipData2 = fread($fd, 4);
|
||||
if (strlen($ipData2) < 4) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$ip2num = implode('', unpack('L', $ipData2));
|
||||
if ($ip2num < 0) {
|
||||
$ip2num += pow(2, 32);
|
||||
}
|
||||
|
||||
if ($ip2num < $ipNum) {
|
||||
if ($Middle == $BeginNum) {
|
||||
fclose($fd);
|
||||
return 'Unknown';
|
||||
}
|
||||
$BeginNum = $Middle;
|
||||
}
|
||||
}
|
||||
$ipFlag = fread($fd, 1);
|
||||
if ($ipFlag == chr(1)) {
|
||||
$ipSeek = fread($fd, 3);
|
||||
if (strlen($ipSeek) < 3) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$ipSeek = implode('', unpack('L', $ipSeek . chr(0)));
|
||||
fseek($fd, $ipSeek);
|
||||
$ipFlag = fread($fd, 1);
|
||||
}
|
||||
if ($ipFlag == chr(2)) {
|
||||
$AddrSeek = fread($fd, 3);
|
||||
if (strlen($AddrSeek) < 3) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$ipFlag = fread($fd, 1);
|
||||
if ($ipFlag == chr(2)) {
|
||||
$AddrSeek2 = fread($fd, 3);
|
||||
if (strlen($AddrSeek2) < 3) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$AddrSeek2 = implode('', unpack('L', $AddrSeek2 . chr(0)));
|
||||
fseek($fd, $AddrSeek2);
|
||||
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) {
|
||||
$file_contents = file_get_contents('http://ip.taobao.com/outGetIpInfo?accessKey=alibaba-inc&ip='.$ip);
|
||||
$result = json_decode($file_contents,true);
|
||||
if ($result['data']['country'] != '中国') {
|
||||
return $result['data']['country'];
|
||||
} else {
|
||||
fseek($fd, -1, SEEK_CUR);
|
||||
return $result['data']['region'].' · '.$result['data']['city'].' · '.$result['data']['isp'];
|
||||
}
|
||||
while (($char = fread($fd, 1)) != chr(0)) {
|
||||
$ipAddr2 .= $char;
|
||||
}
|
||||
|
||||
$AddrSeek = implode('', unpack('L', $AddrSeek . chr(0)));
|
||||
fseek($fd, $AddrSeek);
|
||||
while (($char = fread($fd, 1)) != chr(0)) {
|
||||
$ipAddr1 .= $char;
|
||||
}
|
||||
|
||||
} else {
|
||||
fseek($fd, -1, SEEK_CUR);
|
||||
while (($char = fread($fd, 1)) != chr(0)) {
|
||||
$ipAddr1 .= $char;
|
||||
$dat_path = dirname(__FILE__) . '/inc/QQWry.Dat';
|
||||
if (!$fd = @fopen($dat_path, 'rb')) {
|
||||
return 'IP date file not exists or access denied';
|
||||
}
|
||||
$ip = explode('.', $ip);
|
||||
$ipNum = intval($ip[0]) * 16777216 + intval($ip[1]) * 65536 + intval($ip[2]) * 256 + intval($ip[3]);
|
||||
$DataBegin = fread($fd, 4);
|
||||
$DataEnd = fread($fd, 4);
|
||||
$ipbegin = implode('', unpack('L', $DataBegin));
|
||||
if ($ipbegin < 0) {
|
||||
$ipbegin += pow(2, 32);
|
||||
}
|
||||
|
||||
$ipFlag = fread($fd, 1);
|
||||
if ($ipFlag == chr(2)) {
|
||||
$AddrSeek2 = fread($fd, 3);
|
||||
if (strlen($AddrSeek2) < 3) {
|
||||
$ipend = implode('', unpack('L', $DataEnd));
|
||||
if ($ipend < 0) {
|
||||
$ipend += pow(2, 32);
|
||||
}
|
||||
|
||||
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
|
||||
$BeginNum = 0;
|
||||
$EndNum = $ipAllNum;
|
||||
while ($ip1num > $ipNum || $ip2num < $ipNum) {
|
||||
$Middle = intval(($EndNum + $BeginNum) / 2);
|
||||
fseek($fd, $ipbegin + 7 * $Middle);
|
||||
$ipData1 = fread($fd, 4);
|
||||
if (strlen($ipData1) < 4) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$AddrSeek2 = implode('', unpack('L', $AddrSeek2 . chr(0)));
|
||||
fseek($fd, $AddrSeek2);
|
||||
$ip1num = implode('', unpack('L', $ipData1));
|
||||
if ($ip1num < 0) {
|
||||
$ip1num += pow(2, 32);
|
||||
}
|
||||
|
||||
if ($ip1num > $ipNum) {
|
||||
$EndNum = $Middle;
|
||||
continue;
|
||||
}
|
||||
$DataSeek = fread($fd, 3);
|
||||
if (strlen($DataSeek) < 3) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$DataSeek = implode('', unpack('L', $DataSeek . chr(0)));
|
||||
fseek($fd, $DataSeek);
|
||||
$ipData2 = fread($fd, 4);
|
||||
if (strlen($ipData2) < 4) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$ip2num = implode('', unpack('L', $ipData2));
|
||||
if ($ip2num < 0) {
|
||||
$ip2num += pow(2, 32);
|
||||
}
|
||||
|
||||
if ($ip2num < $ipNum) {
|
||||
if ($Middle == $BeginNum) {
|
||||
fclose($fd);
|
||||
return 'Unknown';
|
||||
}
|
||||
$BeginNum = $Middle;
|
||||
}
|
||||
}
|
||||
$ipFlag = fread($fd, 1);
|
||||
if ($ipFlag == chr(1)) {
|
||||
$ipSeek = fread($fd, 3);
|
||||
if (strlen($ipSeek) < 3) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$ipSeek = implode('', unpack('L', $ipSeek . chr(0)));
|
||||
fseek($fd, $ipSeek);
|
||||
$ipFlag = fread($fd, 1);
|
||||
}
|
||||
if ($ipFlag == chr(2)) {
|
||||
$AddrSeek = fread($fd, 3);
|
||||
if (strlen($AddrSeek) < 3) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$ipFlag = fread($fd, 1);
|
||||
if ($ipFlag == chr(2)) {
|
||||
$AddrSeek2 = fread($fd, 3);
|
||||
if (strlen($AddrSeek2) < 3) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$AddrSeek2 = implode('', unpack('L', $AddrSeek2 . chr(0)));
|
||||
fseek($fd, $AddrSeek2);
|
||||
} else {
|
||||
fseek($fd, -1, SEEK_CUR);
|
||||
}
|
||||
while (($char = fread($fd, 1)) != chr(0)) {
|
||||
$ipAddr2 .= $char;
|
||||
}
|
||||
|
||||
$AddrSeek = implode('', unpack('L', $AddrSeek . chr(0)));
|
||||
fseek($fd, $AddrSeek);
|
||||
while (($char = fread($fd, 1)) != chr(0)) {
|
||||
$ipAddr1 .= $char;
|
||||
}
|
||||
|
||||
} else {
|
||||
fseek($fd, -1, SEEK_CUR);
|
||||
while (($char = fread($fd, 1)) != chr(0)) {
|
||||
$ipAddr1 .= $char;
|
||||
}
|
||||
|
||||
$ipFlag = fread($fd, 1);
|
||||
if ($ipFlag == chr(2)) {
|
||||
$AddrSeek2 = fread($fd, 3);
|
||||
if (strlen($AddrSeek2) < 3) {
|
||||
fclose($fd);
|
||||
return 'System Error';
|
||||
}
|
||||
$AddrSeek2 = implode('', unpack('L', $AddrSeek2 . chr(0)));
|
||||
fseek($fd, $AddrSeek2);
|
||||
} else {
|
||||
fseek($fd, -1, SEEK_CUR);
|
||||
}
|
||||
while (($char = fread($fd, 1)) != chr(0)) {
|
||||
$ipAddr2 .= $char;
|
||||
}
|
||||
}
|
||||
while (($char = fread($fd, 1)) != chr(0)) {
|
||||
$ipAddr2 .= $char;
|
||||
fclose($fd);
|
||||
if (preg_match('/http/i', $ipAddr2)) {
|
||||
$ipAddr2 = '';
|
||||
}
|
||||
}
|
||||
fclose($fd);
|
||||
if (preg_match('/http/i', $ipAddr2)) {
|
||||
$ipAddr2 = '';
|
||||
}
|
||||
$ipaddr = "$ipAddr1 $ipAddr2";
|
||||
$ipaddr = preg_replace('/CZ88.Net/is', '', $ipaddr);
|
||||
$ipaddr = preg_replace('/^s*/is', '', $ipaddr);
|
||||
$ipaddr = preg_replace('/s*$/is', '', $ipaddr);
|
||||
if (preg_match('/http/i', $ipaddr) || $ipaddr == '') {
|
||||
$ipaddr = 'Unknown';
|
||||
}
|
||||
$ipaddr = iconv('gbk', 'utf-8//IGNORE', $ipaddr);
|
||||
if ($ipaddr != ' ') {
|
||||
$ipaddr = "$ipAddr1 $ipAddr2";
|
||||
$ipaddr = preg_replace('/CZ88.Net/is', '', $ipaddr);
|
||||
$ipaddr = preg_replace('/^s*/is', '', $ipaddr);
|
||||
$ipaddr = preg_replace('/s*$/is', '', $ipaddr);
|
||||
if (preg_match('/http/i', $ipaddr) || $ipaddr == '') {
|
||||
$ipaddr = 'Unknown';
|
||||
}
|
||||
$ipaddr = iconv('gbk', 'utf-8//IGNORE', $ipaddr);
|
||||
if ($ipaddr != ' ') {
|
||||
return $ipaddr;
|
||||
} else {
|
||||
$ipaddr = 'Unknown';
|
||||
}
|
||||
|
||||
return $ipaddr;
|
||||
} else {
|
||||
$ipaddr = 'Unknown';
|
||||
}
|
||||
|
||||
return $ipaddr;
|
||||
}
|
||||
//Comment Location End
|
||||
|
||||
|
|
|
@ -496,7 +496,7 @@ class Meting
|
|||
case 'netease':
|
||||
$api = array(
|
||||
'method' => 'POST',
|
||||
'url' => 'http://music.163.com/api/v3/playlist/detail',
|
||||
'url' => 'http://music.163.com/api/v6/playlist/detail',
|
||||
'body' => array(
|
||||
's' => '0',
|
||||
'id' => $id,
|
||||
|
@ -1362,4 +1362,4 @@ class Meting
|
|||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue