diff --git a/api.php b/api.php new file mode 100644 index 00000000..bc045b3b --- /dev/null +++ b/api.php @@ -0,0 +1,118 @@ + + * @link https://imwcr.cn/ + * @link https://space.bilibili.com/88197958 + * + */ +session_start(); +define('init', true); +if (version_compare(PHP_VERSION, '7.0.0', '<')) { + http_response_code(503); + header('Content-Type: text/plain; charset=utf-8'); + header('Refresh: 5;url=https://www.php.net/downloads.php'); + die("HTTP 503 服务不可用!\r\nPHP 版本过低!无法正常运行程序!\r\n请安装 7.0.0 或以上版本的 PHP!\r\n将在五秒内跳转到 PHP 官方下载页面!"); +} +if (!(file_exists('config.php') && file_exists('functions.php'))) { + http_response_code(503); + header('Content-Type: text/plain; charset=utf-8'); + header('Refresh: 5;url=https://github.com/yuantuo666/baiduwp-php'); + die("HTTP 503 服务不可用!\r\n缺少相关配置和定义文件!无法正常运行程序!\r\n请重新 Clone 项目并配置!\r\n将在五秒内跳转到 GitHub 储存库!"); +} +// 导入配置和函数 +require('config.php'); +require('functions.php'); +// 通用响应头 +header('Content-Type: text/html; charset=utf-8'); +header('X-UA-Compatible: IE=edge,chrome=1'); +//隐藏错误代码,保护信息安全 +if (DEBUG) { + error_reporting(E_ALL); +} else { + error_reporting(0); //关闭错误报告 +} + +$method = (!empty($_GET["m"])) ? $_GET["m"] : ""; +switch ($method) { + case 'LastParse': + //返回数据库中上一次解析的时间,及SVIP状态 + if (USING_DB) { + //开启了数据库 + connectdb(true); + + $sql = "SELECT * FROM `$dbtable` WHERE `size`>=52428800 ORDER BY `ptime` DESC LIMIT 0,1"; //时间倒序输出第一项 + $mysql_query = mysqli_query($conn, $sql); + if ($Result = mysqli_fetch_assoc($mysql_query)) { + //存在数据 + $Time = $Result["ptime"]; + $realLink = $Result["realLink"]; + $SvipState = (strstr('https://' . $realLink, "//qdall")) ? 0 : 1; //1:正常 0:限速 + $SvipStateMsg = ($SvipState) ? "状态正常" : "已被限速"; + $SvipTips = ($SvipState) ? "正常" : "限速"; + EchoInfo(0, array( + "msg" => "SVIP账号状态
上次解析时间:" . $Time . "
上次解析状态:" . $SvipStateMsg . "
", + "svipstate" => $SvipState, + "sviptips" => $SvipTips + )); + } else { + EchoInfo(0, array("msg" => "数据库中没有数据")); + } + } else { + //未开启数据库 + EchoInfo(-1, array("msg" => "未开启数据库功能", "sviptips" => "Unknown")); + } + break; + + case "ParseCount": + //返回数据库中所有的解析总数和文件总大小 + if (USING_DB) { + //开启了数据库 + connectdb(true); + + $sql = "SELECT count(`id`) as AllCount,sum(`size`) as AllSize FROM `$dbtable`"; + $mysql_query = mysqli_query($conn, $sql); + if ($Result = mysqli_fetch_assoc($mysql_query)) { + //存在数据 + $AllCount = $Result["AllCount"]; + $AllSize = formatSize((int)$Result["AllSize"]); //格式化获取到的文件大小 + $ParseCountMsg = "累计解析 $AllCount 个,共 $AllSize"; + } else { + EchoInfo(0, array("msg" => "当前数据库版本不支持此统计操作")); + exit; + } + + $sql = "SELECT count(`id`) as AllCount,sum(`size`) as AllSize FROM `$dbtable` WHERE date(`ptime`)=date(now());"; //获取今天的解析量 + $mysql_query = mysqli_query($conn, $sql); + if ($Result = mysqli_fetch_assoc($mysql_query)) { + //存在数据 + $AllCount = $Result["AllCount"]; + $AllSize = formatSize((int)$Result["AllSize"]); //格式化获取到的文件大小 + $TodayParseCountMsg = "今日解析 $AllCount 个,共 $AllSize"; + } else { + EchoInfo(0, array("msg" => "当前数据库版本不支持此统计操作")); + exit; + } + EchoInfo(0, array("msg" => "系统使用统计
$ParseCountMsg
$TodayParseCountMsg
")); + } else { + //未开启数据库 + EchoInfo(-1, array("msg" => "未开启数据库功能")); + } + break; + default: + EchoInfo(-1, array("msg" => "无传入数据")); + break; +} + +function EchoInfo(int $error, array $Result) +{ + $ReturnArray = array("error" => $error); + $ReturnArray += $Result; + echo json_encode($ReturnArray); +} diff --git a/bdwp.sql b/bdwp.sql new file mode 100644 index 00000000..c5894857 --- /dev/null +++ b/bdwp.sql @@ -0,0 +1,86 @@ +-- MySQL dump 10.13 Distrib 5.6.47, for Linux (x86_64) +-- +-- Host: localhost Database: bdwp +-- ------------------------------------------------------ +-- Server version 5.6.47-log + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `bdwp` +-- + +DROP TABLE IF EXISTS `bdwp`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `bdwp` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `userip` text NOT NULL COMMENT '用户ip', + `filename` text NOT NULL COMMENT '文件名', + `size` text NOT NULL COMMENT '文件大小', + `md5` text NOT NULL COMMENT '文件效验码', + `path` text NOT NULL COMMENT '文件路径', + `server_ctime` text NOT NULL COMMENT '文件创建时间', + `realLink` text NOT NULL COMMENT '文件下载地址', + `ptime` datetime NOT NULL COMMENT '解析时间', + `paccount` int(11) NOT NULL COMMENT '解析账号id', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=5050 DEFAULT CHARSET=utf8mb4; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `bdwp_ip` +-- + +DROP TABLE IF EXISTS `bdwp_ip`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `bdwp_ip` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `ip` text NOT NULL COMMENT 'ip地址', + `remark` text NOT NULL COMMENT '备注', + `add_time` datetime NOT NULL COMMENT '白黑名单添加时间', + `type` tinyint(4) NOT NULL COMMENT '状态(0:允许,-1:禁止)', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `bdwp_svip` +-- + +DROP TABLE IF EXISTS `bdwp_svip`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `bdwp_svip` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` text NOT NULL COMMENT '账号名称', + `svip_bduss` text NOT NULL COMMENT '会员bduss', + `svip_stoken` text NOT NULL COMMENT '会员stoken', + `add_time` datetime NOT NULL COMMENT '会员账号加入时间', + `state` tinyint(4) NOT NULL COMMENT '会员状态(0:正常,-1:限速)', + `is_using` datetime NOT NULL COMMENT '是否正在使用(非零表示真)', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=255 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2020-10-20 23:21:53 diff --git a/config.php b/config.php index 0224d046..226c03e0 100644 --- a/config.php +++ b/config.php @@ -13,37 +13,45 @@ * 请不要使用弱密码!否则后果自负! * 若只在局域网开放,则可根据个人喜好开启或关闭密码。 * - * @version 1.4.3 + * @version 1.4.5 * * @author Yuan_Tuo * @link https://imwcr.cn/ * @link https://space.bilibili.com/88197958 * */ -define('programVersion', '1.4.3'); +define('programVersion', '1.4.5'); if (!defined('init')) { // 直接访问处理程序 - http_response_code(403); - header('Content-Type: text/plain; charset=utf-8'); - header('Refresh: 3;url=./'); - die("HTTP 403 禁止访问!\r\n此文件是 PanDownload 网页复刻版 PHP 语言版项目版本 " . programVersion . " 的配置文件!\r\n禁止直接访问!"); + http_response_code(403); + header('Content-Type: text/plain; charset=utf-8'); + header('Refresh: 3;url=./'); + die("HTTP 403 禁止访问!\r\n此文件是 PanDownload 网页复刻版 PHP 语言版项目版本 " . programVersion . " 的配置文件!\r\n禁止直接访问!"); } define('BDUSS', ''); // 你的 BDUSS define('STOKEN', ''); // 你的 STOKEN define('SVIP_BDUSS', ''); // 你的 SVIP BDUSS + define('IsCheckPassword', true); // 设为 true 则要求密码为变量 Password 的值,否则提示密码错误;设为 false 则不需要密码。 -define('Password', '请在这里填写密码'); // 在下载器首页需要输入的密码,如果将 IsCheckPassWord 设为 false 则无论设置什么都会失效。 +define('Password', ''); // 在下载器首页需要输入的密码,如果将 IsCheckPassWord 设为 false 则无论设置什么都会失效。 define('Footer', ''); // 页脚统计代码放置处 define('APP_ID', '250528'); // 推荐应用ID:498065、309847、778750(油猴脚本默认)、250528(官方)、265486、266719; -define('DEBUG', false);//WARNING! 请勿随意打开此模式,可能造成你的信息泄露。 打开此模式前请先修改密码。 - +define('DEBUG', false); //WARNING! 请勿随意打开此模式,可能造成你的信息泄露。 打开此模式前请先修改密码。 -define('USING_DB', false); //是否开启数据库功能 +//连接数据库 +define('USING_DB', true); define('DbConfig', array( - "servername" => "localhost", - "username" => "", - "password" => "", - "dbname" => "", - "dbtable" => "bdwp" + "servername" => "localhost", + "username" => "root", + "password" => "root", + "dbname" => "test", + "dbtable" => "bdwp" )); + +define('ADMIN_PASSWORD', ' '); //管理员密码 登录地址/setting.php + +// 请勿修改下方内容,如果手动修改后再在后台设置,可能导致config.php文件被清空 +// $DownloadTimes=... 为后台判断依据请勿修改。 +$DownloadTimes=5; +define('DownloadTimes', $DownloadTimes); diff --git a/functions.php b/functions.php index 1f106c36..956ce15d 100644 --- a/functions.php +++ b/functions.php @@ -7,7 +7,7 @@ * * 请勿随意修改此文件!如需更改相关配置请到 config.php ! * - * @version 1.4.3 + * @version 1.4.5 * * @author Yuan_Tuo * @link https://imwcr.cn/ @@ -296,4 +296,4 @@ function connectdb(bool $isAPI = false) mysqli_query($conn, "set sql_mode = ''"); mysqli_query($conn, "set character set 'utf8'"); mysqli_query($conn, "set names 'utf8'"); -} \ No newline at end of file +} diff --git a/index.php b/index.php index 1ff15c3f..19d6acec 100644 --- a/index.php +++ b/index.php @@ -12,7 +12,7 @@ * * 此项目 GitHub 地址:https://github.com/yuantuo666/baiduwp-php * - * @version 1.4.3 + * @version 1.4.5 * * @author Yuan_Tuo * @link https://imwcr.cn/ @@ -75,7 +75,7 @@ function confirmdl(fs_id, timestamp, sign, randsk, share_id, uk, bdstoken, filesize) { swal({ title: "继续解析?", - text: "为保证服务稳定,每个IP每天有一次免费解析次数,是否继续?", + text: "为保证服务稳定,每个IP每天有次免费解析次数,是否继续?", type: "warning", showCancelButton: true, confirmButtonClass: "btn-success", @@ -225,8 +225,8 @@ function() { for ($i = 0; $i < count($filejson["list"]); $i++) { //开始输出文件列表 $file = $filejson["list"][$i]; if ($file["isdir"] === 0) $filecontent .= '
  • - ' . $file["server_filename"] . ' - ' . formatSize($file["size"]) . '
  • '; + ' . $file["server_filename"] . ' + ' . formatSize($file["size"]) . ''; else $filecontent .= '
  • ' . $file["server_filename"] . '
  • '; } @@ -276,6 +276,41 @@ function() { dl_error("密码错误", "密码错误或超时,请返回首页重新验证密码。"); // 密码错误 } elseif ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_POST["fs_id"]) && isset($_POST["time"]) && isset($_POST["sign"]) && isset($_POST["randsk"]) && isset($_POST["share_id"]) && isset($_POST["uk"]) && isset($_POST["bdstoken"]) && isset($_POST["filesize"])) { + function getip() + { + if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) { + $ip = getenv("HTTP_CLIENT_IP"); + } else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) { + $ip = getenv("HTTP_X_FORWARDED_FOR"); + } else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) { + $ip = $_SERVER['REMOTE_ADDR']; + } else { + $ip = "unknown"; + } + return $ip; + } + $ip = getip(); + if (USING_DB) { + connectdb(); + + //查询数据库中是否存在已经保存的数据 + $sql = "SELECT * FROM `" . $dbtable . "_ip` WHERE `ip`='$ip';"; + $mysql_query = mysqli_query($conn, $sql); + if ($result = mysqli_fetch_assoc($mysql_query)) { + //存在 判断类型 + if ($result["type"] == -1) { + //黑名单 + $isipwhite = FALSE; + dl_error("账户错误", "当前ip已被加入黑名单,请联系站长解封"); + exit; + } elseif ($result["type"] == 0) { + //白名单 + echo ""; + $isipwhite = TRUE; + } + } + } + $fs_id = $_POST["fs_id"]; $timestamp = $_POST["time"]; $sign = $_POST["sign"]; @@ -284,6 +319,8 @@ function() { $uk = $_POST["uk"]; $bdstoken = $_POST["bdstoken"]; $filesize = $_POST["filesize"]; + $smallfile = ((int)$filesize < 52428800) ? true : false; //如果是小文件 那么可以不需要传入SVIP的BDUSS 仅需普通用户的即可 + $smallfile = false; //小文件竟然也会限速,醉了,现在先不搞这个 // 文件小于50MB可以使用这种方法获取: // $nouarealLink="";//重置 // if((int)$filesize<=52428800){ @@ -307,25 +344,10 @@ function() { $size = $json4["list"][0]["size"]; $path = $json4["list"][0]["path"]; $server_ctime = (int)$json4["list"][0]["server_ctime"] + 28800; // 服务器创建时间 +8:00 - + if (USING_DB) { connectdb(); - function getip() - { - if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) { - $ip = getenv("HTTP_CLIENT_IP"); - } else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) { - $ip = getenv("HTTP_X_FORWARDED_FOR"); - } else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) { - $ip = $_SERVER['REMOTE_ADDR']; - } else { - $ip = "unknown"; - } - return $ip; - } - $ip = getip(); - //查询数据库中是否存在已经保存的数据 $sql = "SELECT * FROM `$dbtable` WHERE `md5`='$md5' AND `ptime` > DATE_SUB(NOW(),INTERVAL 8 HOUR);"; $mysql_query = mysqli_query($conn, $sql); @@ -334,28 +356,92 @@ function getip() $realLink = $result["realLink"]; $usingcache = true; } else { - //判断cookie - if (!empty($_COOKIE["SESSID"]) and !$smallfile) { - //提示无权继续 - dl_error("免费次数不足", "

    剩余解析次数为零,请明天再试。


    " . FileInfo($filename, $size, $md5, $server_ctime)); - exit; - } + // //判断cookie 取消这个判断 下载次数限制在后台控制 + // if (!$isipwhite and !empty($_COOKIE["SESSID"]) and !$smallfile) { + // //提示无权继续 + // dl_error("免费次数不足", "

    剩余解析次数为零,请明天再试。


    " . FileInfo($filename, $size, $md5, $server_ctime)); + // exit; + // } if (USING_DB) { //判断今天内是否获取过文件 - $sql = "SELECT * FROM `$dbtable` WHERE `userip`='$ip' AND `size`>=52428800 AND date(`ptime`)=date(now());"; - $mysql_query = mysqli_query($conn, $sql); - if ($result = mysqli_fetch_assoc($mysql_query) and !$smallfile) { - //提示无权继续 - dl_error("免费次数不足", "

    数据库中无此文件解析记录。

    您已于 " . $result["ptime"] . " 时解析过文件“" . $result["filename"] . "”。

    剩余解析次数为零,请明天再试。


    " . FileInfo($filename, $size, $md5, $server_ctime)); - exit; + if (!$isipwhite and !$smallfile) { //白名单和小文件跳过 + //获取解析次数 + $sql = "SELECT count(*) as Num FROM `$dbtable` WHERE `userip`='$ip' AND `size`>=52428800 AND date(`ptime`)=date(now());"; + $mysql_query = mysqli_query($conn, $sql); + $result = mysqli_fetch_assoc($mysql_query); + if ($result["Num"] >= DownloadTimes) { + //提示无权继续 + // dl_error("免费次数不足", "

    数据库中无此文件解析记录。

    您已于 " . $result["ptime"] . " 时解析过文件“" . $result["filename"] . "”。

    剩余解析次数为零,请明天再试。


    " . FileInfo($filename, $size, $md5, $server_ctime)); + dl_error("免费次数不足", "

    数据库中无此文件解析记录。

    剩余解析次数为零,请明天再试。


    " . FileInfo($filename, $size, $md5, $server_ctime)); + exit; + } + } + //获取SVIP BDUSS + + $sql = "SELECT `id`,`svip_bduss` FROM `" . $dbtable . "_svip` WHERE `state`!=-1 ORDER BY `is_using` DESC LIMIT 0,1"; //时间倒序输出第一项未被限速账号 + $Result = mysqli_query($conn, $sql); + if ($Result = mysqli_fetch_assoc($Result)) { + $SVIP_BDUSS = $Result["svip_bduss"]; + $id = $Result["id"]; + } else { + //数据库中所有SVIP账号已经用完,启用本地SVIP账号 + $SVIP_BDUSS = SVIP_BDUSS; + $id = "-1"; + } + } else { + $SVIP_BDUSS = SVIP_BDUSS; + $id = "-1"; + } + + + + //开始获取真实链接 + if ($smallfile) $headerArray = array('User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.514.1919.810 Safari/537.36', 'Cookie: BDUSS=' . BDUSS . ';'); + else $headerArray = array('User-Agent: LogStatistic', 'Cookie: BDUSS=' . $SVIP_BDUSS . ';'); //仅此处用到SVIPBDUSS + + $getRealLink = head($dlink, $headerArray); // 禁止重定向 + $getRealLink = strstr($getRealLink, "Location"); + $getRealLink = substr($getRealLink, 10); + if ($smallfile) $realLink = getSubstr($getRealLink, "https://", "\r\n"); // 注意,这里小文件是https + else $realLink = getSubstr($getRealLink, "http://", "\r\n"); // 删除 http:// + $usingcache = false; + + + if (USING_DB) { + //判断账号是否限速,如果限速就将其标记,切换账号 + if (strstr('https://' . $realLink, "//qdall") or $realLink == "") { + //限速 + if ($id != "-1") { + $sql = "UPDATE `" . $dbtable . "_svip` SET `state`= -1 WHERE `id`=$id"; + $mysql_query = mysqli_query($conn, $sql); + if ($mysql_query != false) { + //SVIP账号自动切换成功,对用户界面进行刷新进行重新获取 + ?> +
    +
    + +
    +
    + + 获取下载链接失败

    已获取到文件,但未能获取到下载链接!

    请检查你是否在 config.php 中配置 SVIP 账号的 BDUSS 和 STOKEN!

    未配置或配置了普通账号的均会导致失败!必须要 SVIP 账号!

    ' . FileInfo($filename, $size, $md5, $server_ctime) . ''; // 未配置 SVIP 账号 else { - + //记录下使用者ip,下次进入时提示 if (USING_DB and !$usingcache) { $ptime = date("Y-m-d H:i:s"); - $sql = "INSERT INTO `$dbtable`(`userip`, `filename`, `size`, `md5`, `path`, `server_ctime`, `realLink` , `ptime`) VALUES ('$ip','$filename','$size','$md5','$path','$server_ctime','$realLink','$ptime')"; + $sql = "INSERT INTO `$dbtable`(`userip`, `filename`, `size`, `md5`, `path`, `server_ctime`, `realLink` , `ptime`,`paccount`) VALUES ('$ip','$filename','$size','$md5','$path','$server_ctime','$realLink','$ptime','$id')"; $mysql_query = mysqli_query($conn, $sql); if ($mysql_query == false) { //保存错误 @@ -379,18 +465,19 @@ function getip() //为了防止一些换ip调用,这里写一个cookie } - ?> + ?>
    diff --git a/setting.php b/setting.php new file mode 100644 index 00000000..16d03af7 --- /dev/null +++ b/setting.php @@ -0,0 +1,713 @@ + + * @link https://imwcr.cn/ + * @link https://space.bilibili.com/88197958 + * + */ +session_start(); +define('init', true); +if (version_compare(PHP_VERSION, '7.0.0', '<')) { + http_response_code(503); + header('Content-Type: text/plain; charset=utf-8'); + header('Refresh: 5;url=https://www.php.net/downloads.php'); + die("HTTP 503 服务不可用!\r\nPHP 版本过低!无法正常运行程序!\r\n请安装 7.0.0 或以上版本的 PHP!\r\n将在五秒内跳转到 PHP 官方下载页面!"); +} +if (!(file_exists('config.php') && file_exists('functions.php'))) { + http_response_code(503); + header('Content-Type: text/plain; charset=utf-8'); + header('Refresh: 5;url=https://github.com/yuantuo666/baiduwp-php'); + die("HTTP 503 服务不可用!\r\n缺少相关配置和定义文件!无法正常运行程序!\r\n请重新 Clone 项目并配置!\r\n将在五秒内跳转到 GitHub 储存库!"); +} +// 导入配置和函数 +require('config.php'); +require('functions.php'); +// 通用响应头 +header('Content-Type: text/html; charset=utf-8'); +header('X-UA-Compatible: IE=edge,chrome=1'); +//隐藏错误代码,保护信息安全 +if (DEBUG) { + error_reporting(E_ALL); +} else { + error_reporting(0); //关闭错误报告 +} +$method = (!empty($_GET["m"])) ? $_GET["m"] : ""; +$is_login = (empty($_SESSION["admin_login"])) ? false : $_SESSION["admin_login"]; +if (!$is_login and !empty($_POST["setting_password"])) { + //开始验证密码 + if ($_POST["setting_password"] === ADMIN_PASSWORD) { + //密码正确 + $_SESSION["admin_login"] = true; + $is_login = true; + } else { + //密码错误 + $_SESSION["admin_login"] = false; + echo ""; + } +} +if ($is_login) connectdb(); +if ($method == "API" and $is_login) { + $action = (!empty($_GET["act"])) ? $_GET["act"] : ""; + switch ($action) { + case "AnalyseGetTable": + $page = (!empty($_GET["page"])) ? $_GET["page"] : ""; + echo GetAnalyseTablePage($page); + break; + case "SvipGetTable": + $page = (!empty($_GET["page"])) ? $_GET["page"] : ""; + echo GetSvipTablePage($page); + break; + case "SvipSettingFirstAccount": + $id = (!empty($_GET["id"])) ? $_GET["id"] : ""; + if ($id == "") { + //参数错误 + EchoInfo(-1, array("msg" => "传入参数错误")); + } else { + //开始处理 + //这里最新的时间表示可用账号,按顺序排序 + $is_using = date("Y-m-d H:i:s"); + $sql = "UPDATE `" . $dbtable . "_svip` SET `is_using`= '$is_using' WHERE `id`=$id"; + $mysql_query = mysqli_query($conn, $sql); + if ($mysql_query != false) { + //成功 + EchoInfo(0, array("msg" => "ID为 $id 的账号已被设置为首选账号。3s后将刷新该页面。", "refresh" => true)); + } else { + //失败 + EchoInfo(-1, array("msg" => "修改失败")); + } + } + break; + case "IPGetTable": + $page = (!empty($_GET["page"])) ? $_GET["page"] : ""; + echo GetIPTablePage($page); + break; + default: + echo "

    没有参数传入

    "; + break; + } + exit; +} + +function EchoInfo(int $error, array $Result) +{ + $ReturnArray = array("error" => $error); + $ReturnArray += $Result; + echo json_encode($ReturnArray); +} + +function GetAnalyseTablePage(string $page) +{ + if ($page <= 0) exit; + $EachPageNum = 10; + $conn = $GLOBALS['conn']; + $dbtable = $GLOBALS['dbtable']; + $AllRow = ""; + $StartNum = ((int)$page - 1) * $EachPageNum; + $sql = "SELECT * FROM `$dbtable` ORDER BY `ptime` DESC LIMIT $StartNum,$EachPageNum"; + $mysql_query = mysqli_query($conn, $sql); + while ($Result = mysqli_fetch_assoc($mysql_query)) { + //存在数据 + $EachRow = " + " . $Result["id"] . " + 暂未开发 + " . $Result["userip"] . " + " . $Result["filename"] . " + " . formatSize((int)$Result["size"]) . " + " . $Result["path"] . " + " . substr($Result["realLink"], 0, 35) . "…… + " . $Result["ptime"] . "" . $Result["paccount"] . " + "; + $AllRow .= $EachRow; + } + return $AllRow; +} +function GetSvipTablePage(string $page) +{ + if ($page <= 0) exit; + $EachPageNum = 10; + $conn = $GLOBALS['conn']; + $dbtable = $GLOBALS['dbtable']; + $AllRow = ""; + $StartNum = ((int)$page - 1) * $EachPageNum; + $sql = "SELECT * FROM `" . $dbtable . "_svip` ORDER BY `id` DESC LIMIT $StartNum,$EachPageNum"; + $mysql_query = mysqli_query($conn, $sql); + while ($Result = mysqli_fetch_assoc($mysql_query)) { + //存在数据 + $is_using = ($Result["is_using"] != "0000-00-00 00:00:00") ? $Result["is_using"] : ""; + $state = ($Result["state"] == -1) ? "限速" : "正常"; + $EachRow = " + " . $Result["id"] . " + 设为当前解析账号 + " . $is_using . " + " . $Result["name"] . " + " . $state . " + " . $Result["add_time"] . " + " . substr($Result["svip_bduss"], 0, 20) . "…… + " . substr($Result["svip_stoken"], 0, 20) . "…… + "; + $AllRow .= $EachRow; + } + return $AllRow; +} //name 账号名称 svip_bduss 会员bduss svip_stoken 会员stoken add_time 会员账号加入时间 state 会员状态(0:正常,-1:限速) is_using 是否正在使用(非零表示真) +function GetIPTablePage(string $page) +{ + if ($page <= 0) exit; + $EachPageNum = 10; + $conn = $GLOBALS['conn']; + $dbtable = $GLOBALS['dbtable']; + $AllRow = ""; + $StartNum = ((int)$page - 1) * $EachPageNum; + $sql = "SELECT * FROM `" . $dbtable . "_ip` ORDER BY `id` DESC LIMIT $StartNum,$EachPageNum"; + $mysql_query = mysqli_query($conn, $sql); + while ($Result = mysqli_fetch_assoc($mysql_query)) { + //存在数据 + $type = ($Result["type"] == -1) ? "黑名单" : "白名单"; + $EachRow = " + " . $Result["id"] . " + " . $Result["ip"] . " + " . $type . " + " . $Result["remark"] . " + " . $Result["add_time"] . " + "; + $AllRow .= $EachRow; + } + return $AllRow; +} + +?> + + + + + + + + + + Setting + + + + + + + + + + + + +
    +
    + + +
    +
    +
    Pandownload复刻版-后台登录
    +
    +
    +
    + + 密码是中文,别想破解了~ +
    + +
    +
    +
    + +
    + + +
    +
    + 数据分析 +
    +
    +
    最近解析
    +
    + + + + + + + + + + + + + + + + + + + + + +
    #操作用户ip文件名文件大小文件路径文件下载地址解析时间解析账号
    +
    +
    + 加载更多 + +
    +
    + swal('新增成功');"; + else { + $Error = addslashes(mysqli_error($conn)); + echo ""; + } + } else { + echo ""; + } + } + if (isset($_POST["MULTI_BDUSS"])) { + $BDUSS = (!empty($_POST["MULTI_BDUSS"])) ? trim($_POST["MULTI_BDUSS"]) : ""; + $name = (!empty($_POST["name"])) ? $_POST["name"] : ""; + if ($BDUSS != "") { + //开始录入 + $allsql = ""; + $add_time = date("Y-m-d H:i:s"); + + $AllBduss = explode("\n", $BDUSS); + for ($i = 0; $i < count($AllBduss); $i++) { + $sql = "INSERT INTO `" . $dbtable . "_svip`( `name`, `svip_bduss`, `add_time`, `state`, `is_using`) VALUES ('$name-" . ($i + 1) . "','" . $AllBduss[$i] . "','$add_time',1,'');"; + $allsql .= $sql; + } + + $sccess_result = 0; + if (mysqli_multi_query($conn, $allsql)) { + do { + $sccess_result = $sccess_result + 1; + } while (mysqli_more_results($conn) && mysqli_next_result($conn)); + } + + $affect_row = mysqli_affected_rows($conn); + if ($affect_row == -1) { + $Msg = "错误在" . $sccess_result . "行"; + } else { + $Msg = "成功导入" . $sccess_result . "条数据"; + } + echo ""; + } else { + echo ""; + } + } + + ?> + + +
    +
    + SVIP账号管理 +
    +
    +
    默认账号
    + 累计解析大小:$AllSize"; + } + + echo "

    ID:$id
    "; + echo "名称:$name
    "; + echo "启用时间:$add_time
    "; + echo "是否使用(最新时间将被用于解析):$is_using
    "; + echo "状态:$state
    "; + echo "$ParseCountMsg

    "; + } else echo "

    Error!当前没有可用账户,正使用本地解析。

    "; + ?> +
    +
    所有账号
    +
    + + + + + + + + + + + + + + + + +
    #操作是否正在使用账号名称会员状态添加时间会员bduss会员stoken
    +
    +
    + 加载更多 + +


    + +
    新增会员数据
    + +
    + + +
    +
    + + +
    +
    + + +
    + + + +

    +
    批量导入svip
    +
    +
    + + +
    +
    + + +
    + +
    +
    +
    + swal('新增成功');"; + else { + $Error = addslashes(mysqli_error($conn)); + echo ""; + } + } else { + echo ""; + } + } + ?> + + +
    +
    + 黑/白名单管理 +
    +
    +
    所有IP
    +
    + + + + + + + + + + + + + +
    #IP账号状态备注添加时间
    +
    +
    + 加载更多 + +


    + +
    新增IP
    +
    +
    + + +
    +
    + + +
    +
    + + +
    + +
    + +
    +
    + swal('成功!成功写入config.php共 $len 个字符。刷新页面后可看到修改的内容。');"; + } else { + echo ""; + } + } + ?> + + +
    +
    + 下载次数限制修改 +
    +
    +
    下载次数限制修改
    + +
    + 注意!此功能需要修改config.php的信息,请小心使用。 +


    + +
    修改下载次数
    +
    +
    + + +
    + +
    + +
    +
    + + + +
    +
    + 概览 +
    +
    +
    + +
    +
    使用统计
    +

    + +
    + +

    + 查看详细情况 +

    +
    +
    +
    SVIP账号
    +

    + " . $SvipFailCountMsg; + ?> +

    + 查看详细情况 +

    +
    +
    +
    + +
    +
    黑/白名单
    +

    + " . $SvipFailCountMsg . "
    " . $SvipSuccCountMsg; + ?> +

    + 查看详细情况 +

    +
    +
    +
    下载次数限制修改
    +

    + +

    + 查看详细情况 +

    +
    +
    + +
    + + + +
    +
    + + + + +
    + +
    +
    + + + \ No newline at end of file diff --git "a/\344\275\277\347\224\250\346\226\271\346\263\225.txt" "b/\344\275\277\347\224\250\346\226\271\346\263\225.txt" new file mode 100644 index 00000000..108ead2b --- /dev/null +++ "b/\344\275\277\347\224\250\346\226\271\346\263\225.txt" @@ -0,0 +1,31 @@ +感谢你对本项目的赞助~ + +当你看到这个文本,说明你是通过赞助获得此源码的。 + +需要注意的是: +1.请保留作者版权信息,至少保留帮助页面底部的信息。 +2.此源码请勿对外传播。 +3.此源码不保证更新,出现BUG可联系作者修复。 +4.源码只保证一个月内不在Github首页更新,即一个月后此源码可能会被开源。 + +使用方法: +1.打开config.php文件,修改: +“BDUSS”(用于获取文件列表的百度网盘账号)、 +“STOKEN”(用于获取文件列表的百度网盘账号)、 +“SVIP_BDUSS”(当数据库中SVIP数据用光时,获取下载链接的百度网盘SVIP账号)、 +“DbConfig”(连接数据库信息)、 +“ADMIN_PASSWORD”(管理员面板密码)中的数据。 + +2.上传源码到服务器或虚拟主机上。 +3.导入bdwp.sql数据库文件。 +4.在网站上访问 setting.php 文件,输入之前设置的密码进入,修改信息。 + +1.4.5版本: +增加下载次数设置功能。 + +!!!如果仍有其他问题,请及时通过Telegram或Email联系作者!!! +项目地址:https://github.com/yuantuo666/baiduwp-php +项目作者:Yuan_Tuo +作者邮箱:yuantuo666@gmail.com +作者首页:https://imwcr.cn/ +Telegram:yuantuo666 \ No newline at end of file