更新内容
1.监控用户接口显示到期时间
2.增加接口到期禁止开通主机功能
3.key安全码后台隐藏
4.增加了一套layui模板
5.添加用户列表搜索功能
6.添加主机列表搜索功能
7.修复站长后台登入不跳转
8.修复api对接开通ssl
9.修复api ssl加密传输功能
10.增加两套首页模板 站长可在后台更换模板
11.接口状态改为本地检测
12.修复QQ登录
QQ登录修复,修改/includes/function.php 文件32行
HTTPS://qqlogin.vience.cn/Oauth/request.api?state=
接口状态监测改为本地检测
/includes/function.php 25-26行 引用api.php 121-130行 引用如下:
PHP
复制
if($act == 'apistatus'){
$ip = $_REQUEST['ip'];
$key = $_REQUEST['key'];
$url = $_REQUEST['url'];
$r = rand(100,999);
$a = 'add';
$s = md5($a . $key . $r);
$api = "http://{$ip}:3312/api/index.php?c=whm&a={$a}&r={$r}&s={$s}&json=1";
$result = curl_get($api);
if(($result === false) || strpos($result ,'403')){
$code = 0;
}else{
$code = 1;
}
echo json_encode(array(
'code' => $code
));
exit();
}
includes/common.php文件展示
PHP
复制
<?php
header('Content-type:text/html;Charset=utf-8');
define('VERSION', '2.7s');
define('AUTH_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/');
define('AUTH_API_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/api.php');
define('DEC', DIRECTORY_SEPARATOR);
// 系统分隔符
define('ROOT_PATH', str_replace(strrchr(__DIR__, DEC), '', __DIR__) . DEC);
// 根目录
define('INCLUDES_PATH', __DIR__ . DEC);
// 引入目录
define('INSTALL_PATH', ROOT_PATH . 'install' . DEC);
// 安装目录
$isLogin = false;
$isUserLogin = false;
$mod = isset($mod) ? $mod : '';
require_once INCLUDES_PATH . 'function.php';
require_once INCLUDES_PATH . 'common.class.php';
require_once ROOT_PATH . 'config.php';
require_once INCLUDES_PATH . 'epay.class.php';
require_once INCLUDES_PATH . 'codepay.class.php';
if (phpversion() != 5.6) {
Tips::error('要求PHP版本5.6');
}
if (!file_exists(INSTALL_PATH . 'install.lock') && $mod != 'install') {
Tips::error('请先安装!', '/install');
}
if ($mod != 'install') {
$dsn = 'MySQL:host=' . $db['dbHost'] . ';port=' . $db['dbPort'] . ';dbname=' . $db['dbName'] . ';charset=utf8';
try {
$DB = new PDO($dsn, $db['dbUser'], $db['dbPwd']);
} catch (Exception $e) {
Tips::error('数据库连接错误,请检查根目录 config.php 文件');
}
$allDb = $DB->query('show tables')->fetchAll(PDO::FETCH_ASSOC);
if (empty($allDb)) {
unlink(INSTALL_PATH . 'install.lock');
if ($mod != 'install') {
Tips::error('数据库为空,请重新安装!', '/install');
}
}
}
if ($mod == 'install' && file_exists(INSTALL_PATH . 'install.lock')) {
Tips::error('已安装,重新安装请删除 /install/install.lock 文件', '/');
}
session_start();
if ($mod != 'install') {
if (isset($_SESSION['adminUser'])) {
$adminUser = $_SESSION['adminUser'];
$ip = Gets::ip();
$version = json_decode(file_get_contents(AUTH_API_URL . '?act=version'), true);
$adminData = $DB->query("SELECT * FROM `impepd_admin` WHERE `adminUser` = '{$adminUser}'")->fetch(PDO::FETCH_ASSOC);
if (!empty($adminData) && $adminData['adminLoginIp'] == $ip) {
$isLogin = true;
}
}
if (!isset($notLogin) && $mod == 'admin' && !$isLogin) {
header('Location:/admin/login.php');
}
if (isset($_SESSION['userName'])) {
$userName = $_SESSION['userName'];
$ip = Gets::ip();
$userData = $DB->query("SELECT * FROM `impepd_user` WHERE `userName` = '{$userName}'")->fetch(PDO::FETCH_ASSOC);
if (!empty($userData) && $userData['userIp'] == $ip && $userData['userState'] == 1) {
$isUserLogin = true;
}
}
if (!isset($notLogin) && $mod == 'user' && !$isUserLogin) {
header('Location:/user/login.php');
}
$confData = $DB->query('SELECT * FROM `impepd_config`')->fetchAll(PDO::FETCH_ASSOC);
foreach ($confData as $value) {
$conf[$value['k']] = $value['v'];
}
}
vendor/IMPEPD/IMPEPD.php 文件展示
PHP
复制
<?php
function IMPEPD_ConfigOptions()
{
return array(
'空间大小' => array('Type' => 'text','Size' => '5','Description' => 'MB'),
'数据库大小' => array('Type' => 'text','Size' => '5','Description' => 'MB'),
'绑定域名数' => array('Type' => 'text','Size' => '5','Description' => '个,-1为无限'),
'绑定子目录数' => array('Type' => 'text','Size' => '5','Description' => '个,0为无限'),
'流量限制' => array('Type' => 'text','Size' => '5','Description' => 'GB/月'),
'产品类型' => array('Type' => 'text','Size' => '5','Description' => '0为虚拟主机,1为CDN'),
'端口(可留空)' => array('Type' => 'text','Size' => '5','Description' => '多个端口由,分开,ssl端口请加s,如80,443s')
);
}
function IMPEPD_AdminLink($params)
{
$act = 'AdminLink';
$data = array(
'apiUrl' => isset($params['product_id']) ? $params['serverdomain'] : $params['serverhostname'],
'userName' => $params['serverusername'],
'userKey' => $params['serverpassword']
);
$result = GetCloud($act, $data);
$str = '<span class="btn btn-success btn-xs">' . $result['msg'] . '</span>';
if($result['code'] != 1)$str = '<span class="btn btn-danger btn-xs">' . $result['msg'] . '</span>';
return $str;
}
function IMPEPD_CheckName($params)
{
if (!preg_match('/^[a-z0-9][a-z0-9_]{3,16}$/', $params['username']))return 'failed';
return 'success';
}
function IMPEPD_ClientArea($params)
{
if(isset($params['configoption25'])){
$str1 = '<ui><form action="http://' . $params["serverip"] . ':3312/vhost/index.php?c=session&a=login" method="post" target="_blank"><input type="hidden" name="username" value="' . $params['username'] . '" /><input type="hidden" name="passwd" value="' . $params['password'] . '" /><input type="submit" class="btn btn-success btn-block" value="直接登录(自定义密码无效)"/></form>';
$str2 = '<a href="http://' . $params["serverip"] . ':3312/vhost/?c=session&a=login" target="_blank" class="btn btn-primary btn-block">打开登录地址</a>';
return array($str1, $str2);
} else {
$str = '<body onLoad="document.impepd.submit()"><form action="http://' . $params['serverip'] . ':3312/vhost/?c=session&a=login" method="POST" name="impepd"><input name="username" value="' . $params['username'] . '" hidden><input name="passwd" value="' . $params['password'] . '" hidden></form></body>';
exit($str);
}
}
function IMPEPD_CreateAccount($params)
{
if (!$params['configoption6'] && ($params['configoption1'] == NULL || $params['configoption2'] == NULL)) return '容量设置错误';
$act = 'CreateAccount';
$data = array(
'apiUrl' => isset($params['product_id']) ? $params['serverdomain'] : $params['serverhostname'],
'userName' => $params['serverusername'],
"userKey" => $params['serverpassword'],
'apiIp' => $params['serverip'],
'hostName' => $params['username'],
'hostPwd' => $params['password'],
'hostDomain' => $params['domain'],
'hostLimit' => $params['configoption1'],
'dbLimit' => $params['configoption2'],
'domainLimit' => $params['configoption3'],
'dirLimit' => $params['configoption4'],
'flowLimit' => $params['configoption5'],
'hostType' => $params['configoption6'],
'prot' => $params['configoption7']
);
$result = GetCloud($act, $data);
$str = 'success';
if(isset($params['configoption25']))$str = '成功';
if($result['code'] != 1)$str = $result['msg'];
return $str;
}
function IMPEPD_ChangePassword($params)
{
$act = 'ChangePassword';
$data = array(
'apiUrl' => isset($params['product_id']) ? $params['serverdomain'] : $params['serverhostname'],
'userName' => $params['serverusername'],
"userKey" => $params['serverpassword'],
'apiIp' => $params['serverip'],
'hostName' => $params['username']
);
$result = GetCloud($act, $data);
$str = 'success';
if(isset($params['configoption25']))$str = '成功';
if($result['code'] != 1)$str = $result['msg'];
return $str;
}
function IMPEPD_TerminateAccount($params)
{
$act = 'TerminateAccount';
$data = array(
'apiUrl' => isset($params['product_id']) ? $params['serverdomain'] : $params['serverhostname'],
'userName' => $params['serverusername'],
"userKey" => $params['serverpassword'],
'apiIp' => $params['serverip'],
'hostName' => $params['username']
);
$result = GetCloud($act, $data);
$str = 'success';
if(isset($params['configoption25']))$str = '成功';
if($result['code'] != 1)$str = $result['msg'];
return $str;
}
function IMPEPD_SuspendAccount($params)
{
$act = 'SuspendAccount';
$data = array(
'apiUrl' => isset($params['product_id']) ? $params['serverdomain'] : $params['serverhostname'],
'userName' => $params['serverusername'],
"userKey" => $params['serverpassword'],
'apiIp' => $params['serverip'],
'hostName' => $params['username'],
'hostState' => 1
);
$result = GetCloud($act, $data);
$str = 'success';
if(isset($params['configoption25']))$str = '成功';
if($result['code'] != 1)$str = $result['msg'];
return $str;
}
function IMPEPD_UnsuspendAccount($params)
{
$act = 'SuspendAccount';
$data = array(
'apiUrl' => isset($params['product_id']) ? $params['serverdomain'] : $params['serverhostname'],
'userName' => $params['serverusername'],
"userKey" => $params['serverpassword'],
'apiIp' => $params['serverip'],
'hostName' => $params['username'],
'hostState' => 0
);
$result = GetCloud($act, $data);
$str = 'success';
if(isset($params['configoption25']))$str = '成功';
if($result['code'] != 1)$str = $result['msg'];
return $str;
}
function GetCloud($act, $data){
$apiUrl = $data['apiUrl'];
unset($data['apiUrl']);
$url = $apiUrl . '?act=' . $act;
foreach ($data as $k => $v) {
$url .= '&' . $k . '=' . $v;
}
return json_decode(file_get_contents($url), TRUE);
}
?>
PS:文件仅供学习参考,请勿商用!
夜河资源网提供的所有内容仅供学习与交流。通过使用本站内容随之而来的风险以及法律责任与本站无关,所承担的法律责任由使用者承担。
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!