mirror of
https://github.com/tznb1/TwoNav.git
synced 2025-08-10 08:51:49 +00:00
v2.0.38-20230906
This commit is contained in:
@@ -441,6 +441,16 @@ function write_link(){
|
||||
}
|
||||
//插入数据库
|
||||
insert_db('user_links',$data);
|
||||
//读取站点地图配置并判断是否需要更新
|
||||
$sitemap_config = unserialize( get_db("global_config", "v", ["k" => "sitemap_config"]));
|
||||
if(isset($sitemap_config['zhudong']) && $sitemap_config['zhudong'] == '1'){
|
||||
$sitemap_path = DIR . "/data/user/{$u}/sitemap.php";
|
||||
require DIR .'/system/expand/sitemap_create.php';
|
||||
if(is_Update_Sitemap($sitemap_config,$sitemap_path)){
|
||||
create_sitemap($sitemap_config,$sitemap_path,$u);
|
||||
}
|
||||
}
|
||||
|
||||
msgA(['code'=>1,'msg'=>'添加成功','id'=>$lid]);
|
||||
//上传图标
|
||||
}elseif($_GET['type'] === 'upload_images'){
|
||||
@@ -1823,6 +1833,9 @@ function read_data(){
|
||||
msgA( ['code'=>1,'data'=>[$category_count,$link_count,$index_count,$click_count] ]);
|
||||
//连通测试
|
||||
}elseif($_GET['type'] == 'connectivity_test'){
|
||||
if($GLOBALS['global_config']['offline'] == '1'){
|
||||
msg(1,'您已开启离线模式,无法使用该功能!');
|
||||
}
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $_POST['url']);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
|
||||
@@ -2026,7 +2039,63 @@ function write_article(){
|
||||
require DIR . '/system/api_article.php';
|
||||
exit;
|
||||
}
|
||||
|
||||
//百度推送
|
||||
function other_baidu_push(){
|
||||
global $u,$global_config;
|
||||
if ( $global_config['offline'] == '1'){
|
||||
msg(-1,"离线模式无法使用此功能");
|
||||
}
|
||||
if(!is_subscribe('bool')){
|
||||
msg(-1,"未检测到有效授权,无法使用该功能!");
|
||||
}
|
||||
if(empty($_POST['push_api'])){
|
||||
msg(-1,'请输入接口地址');
|
||||
}
|
||||
if(empty($_POST['id'])){
|
||||
msg(-1,'请提交链接ID');
|
||||
}
|
||||
$host = $_SERVER['HTTP_HOST']; // 获取主机名
|
||||
$port = isset($_SERVER['SERVER_PORT']) ? ($_SERVER['SERVER_PORT'] == 80 ? '' : ':'.$_SERVER['SERVER_PORT']) : ''; // 获取端口号
|
||||
$scheme = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; // 获取协议
|
||||
$host = $scheme.$host.$port;
|
||||
$ids = json_decode($_POST['id']) ?? 0;
|
||||
if(count($ids)<1){
|
||||
msg(-1,'解析数据失败,请检查格式是否正确');
|
||||
}
|
||||
$urls=[];
|
||||
if($_POST['type'] == 'link'){
|
||||
foreach($ids as $id){
|
||||
$urls[] = "{$host}/{$u}/click/{$id}.html";
|
||||
}
|
||||
}elseif($_POST['type'] == 'article'){
|
||||
foreach($ids as $id){
|
||||
$urls[] = "{$host}/{$u}/article/{$id}.html";
|
||||
}
|
||||
}else{
|
||||
msg(-1,'无效类型');
|
||||
}
|
||||
|
||||
if(!empty($urls)){
|
||||
$api = $_POST['push_api'];
|
||||
write_user_config('baidu_push_api',$api,'config','百度推送API');
|
||||
$ch = curl_init();
|
||||
$options = array(
|
||||
CURLOPT_URL => $api,
|
||||
CURLOPT_POST => true,
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_POSTFIELDS => implode("\n", $urls),
|
||||
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
|
||||
);
|
||||
curl_setopt_array($ch, $options);
|
||||
$result = curl_exec($ch);
|
||||
$result = json_decode($result,true) ?? '';
|
||||
if(empty($result)){
|
||||
msg(-1,'推送失败');
|
||||
}else{
|
||||
msgA(['code'=>curl_getinfo($ch, CURLINFO_HTTP_CODE),'data'=>$result]);
|
||||
}
|
||||
}
|
||||
}
|
||||
//获取链接信息
|
||||
function other_get_link_info(){
|
||||
global $global_config;
|
||||
|
||||
@@ -798,6 +798,12 @@ function other_root(){
|
||||
}
|
||||
|
||||
msg(1,'操作成功');
|
||||
}elseif($_GET['type'] == 'write_sitemap_config'){
|
||||
if(!is_subscribe('bool')){
|
||||
msg(-1,'未检测到有效授权');
|
||||
}
|
||||
write_global_config('sitemap_config',$_POST,'站点地图配置');
|
||||
msg(1,'保存成功');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
46
system/expand/sitemap.php
Normal file
46
system/expand/sitemap.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
if(!is_subscribe('bool')){exit;}
|
||||
|
||||
//设置协议头
|
||||
header('Content-Type: application/xml');
|
||||
|
||||
//读取配置
|
||||
$sitemap_config = unserialize( get_db("global_config", "v", ["k" => "sitemap_config"]));
|
||||
|
||||
//储存路径
|
||||
$sitemap_path = DIR . "/data/user/{$u}/sitemap.php";
|
||||
|
||||
//载入生成脚本
|
||||
require 'sitemap_create.php';
|
||||
|
||||
//是否为手动生成
|
||||
if(!empty($_GET['mode'])){
|
||||
if($sitemap_config['switch'] != '1'){
|
||||
msg(-1,'请将功能开关设为开启并保存');
|
||||
}else{
|
||||
create_sitemap($sitemap_config,$sitemap_path,$u);
|
||||
msg(1,'生成完毕');
|
||||
}
|
||||
}else{
|
||||
//未开启被动请求时,如果有缓存文件则返回
|
||||
if($sitemap_config['beidong'] != '1'){
|
||||
if(file_exists($sitemap_path)){
|
||||
exit(file_get_contents($sitemap_path) ?? '');
|
||||
}
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
//未开启功能时不输出任何数据
|
||||
if($sitemap_config['switch'] != '1'){
|
||||
exit;
|
||||
}
|
||||
|
||||
//判断是否需要更新
|
||||
if(is_Update_Sitemap($sitemap_config,$sitemap_path)){
|
||||
exit (create_sitemap($sitemap_config,$sitemap_path,$u));
|
||||
}else{
|
||||
exit(file_get_contents($sitemap_path) ?? '');
|
||||
}
|
||||
|
||||
?>
|
||||
134
system/expand/sitemap_create.php
Normal file
134
system/expand/sitemap_create.php
Normal file
@@ -0,0 +1,134 @@
|
||||
<?php
|
||||
//判断是否需要更新缓存
|
||||
function is_Update_Sitemap($sitemap_config,$sitemap_path){
|
||||
if (file_exists($sitemap_path)) {
|
||||
$up_time = filemtime($sitemap_path);
|
||||
$timeIntervals = [
|
||||
'monthly' => 30 * 24 * 60 * 60, // 30天
|
||||
'weekly' => 7 * 24 * 60 * 60, // 7天
|
||||
'daily' => 24 * 60 * 60, // 1天
|
||||
'hourly' => 60 * 60, // 1小时
|
||||
'minute' => 60, //1分钟
|
||||
'second' => 1 //1秒
|
||||
];
|
||||
|
||||
$interval_seconds = $timeIntervals[$sitemap_config['changefreq']] ?? 86400; //间隔秒
|
||||
if (time() - $up_time >= $interval_seconds){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
//缓存文件不存在时重新创建地图
|
||||
}else{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
//创建地图数据函数
|
||||
function create_sitemap($sitemap_config,$sitemap_path,$u){
|
||||
//创建一个空的 XML 文档
|
||||
$xml = new DOMDocument('1.0', 'UTF-8');
|
||||
$xml->formatOutput = true;
|
||||
//创建根元素
|
||||
$urlset = $xml->createElement('urlset');
|
||||
$urlset->setAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
|
||||
$xml->appendChild($urlset);
|
||||
//今天
|
||||
$today = date("Y-m-d\TH:i:s", time());
|
||||
//域名
|
||||
$host = $_SERVER['HTTP_HOST']; // 获取主机名
|
||||
$port = isset($_SERVER['SERVER_PORT']) ? ($_SERVER['SERVER_PORT'] == 80 ? '' : ':'.$_SERVER['SERVER_PORT']) : ''; // 获取端口号
|
||||
$scheme = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://'; // 获取协议
|
||||
$host = $scheme.$host.$port;
|
||||
//用户主页 0.关闭 1.动态地址 2.静态地址 3.二级域名
|
||||
if($sitemap_config['user_homepage'] > 0){
|
||||
//读取用户列表
|
||||
$user_list = select_db('global_user','User','');
|
||||
if($sitemap_config['user_homepage'] == '3'){
|
||||
$strings = explode('.',$_SERVER['HTTP_HOST']);
|
||||
if(count($strings) == 3){
|
||||
$root_domain = "{$strings[1]}.{$strings[2]}";
|
||||
}elseif(count($strings) == 2){
|
||||
$root_domain = $_SERVER['HTTP_HOST'];
|
||||
}else{
|
||||
$sitemap_config['user_homepage'] == '1';
|
||||
}
|
||||
}
|
||||
//遍历用户列表
|
||||
foreach($user_list as $user){
|
||||
if($sitemap_config['user_homepage'] == '2'){
|
||||
$locurl = "{$host}/{$user}.html";
|
||||
}elseif($sitemap_config['user_homepage'] == '3'){
|
||||
$locurl = "{$scheme}{$user}.{$root_domain}";
|
||||
}else{
|
||||
$locurl = "{$host}/index.php?u={$user}";
|
||||
}
|
||||
//生成数据
|
||||
$url = createUrlElement($xml, $locurl, $today, $sitemap_config['user_homepage_changefreq'], $sitemap_config['user_homepage_weight']);
|
||||
$urlset->appendChild($url);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//过度页面 0.关闭 1.动态 2.静态
|
||||
if($sitemap_config['click_page'] > 0){
|
||||
$category_parent = []; //父分类
|
||||
$categorys = []; //全部分类
|
||||
//查找条件 - 分类
|
||||
$where['uid'] = UID;
|
||||
$where['fid'] = 0;
|
||||
$where['pid'] = 0;
|
||||
$where['status'] = 1;
|
||||
$where['ORDER'] = ['weight'=>'ASC'];
|
||||
$where['property'] = 0;
|
||||
//查找一级分类
|
||||
$category_parent = select_db('user_categorys','cid',$where);
|
||||
//遍历二级分类
|
||||
foreach ($category_parent as $cid) {
|
||||
$where['fid'] = $cid;
|
||||
$category_subitem = select_db('user_categorys','cid',$where);
|
||||
array_push($categorys,$cid);
|
||||
$categorys = array_merge ($categorys,$category_subitem);
|
||||
}
|
||||
|
||||
//遍历链接
|
||||
foreach ($categorys as $cid) {
|
||||
$where['fid'] = $cid;
|
||||
$links = select_db('user_links',['lid','up_time'],$where);
|
||||
foreach ($links as $link) {
|
||||
if($sitemap_config['click_page'] == '2'){
|
||||
$locurl = "{$host}/{$u}/click/{$link['lid']}.html";
|
||||
}else{
|
||||
$locurl = "{$host}/index.php?c=click&id={$link['lid']}&u={$u}";
|
||||
}
|
||||
$url = createUrlElement($xml, $locurl, date("Y-m-d\TH:i:s", $link['up_time']), $sitemap_config['click_page_changefreq'], $sitemap_config['click_page_weight']);
|
||||
$urlset->appendChild($url);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//保存 XML 内容到文件
|
||||
$xml->save($sitemap_path);
|
||||
|
||||
//返回内容
|
||||
return $xml->saveXML();
|
||||
}
|
||||
|
||||
// 生成URL元素
|
||||
function createUrlElement($xml, $loc, $lastmod, $changefreq, $priority) {
|
||||
$url = $xml->createElement('url');
|
||||
|
||||
$locElem = $xml->createElement('loc', htmlspecialchars($loc));
|
||||
$url->appendChild($locElem);
|
||||
|
||||
$lastmodElem = $xml->createElement('lastmod', $lastmod);
|
||||
$url->appendChild($lastmodElem);
|
||||
|
||||
$changefreqElem = $xml->createElement('changefreq', $changefreq);
|
||||
$url->appendChild($changefreqElem);
|
||||
|
||||
$priorityElem = $xml->createElement('priority', $priority);
|
||||
$url->appendChild($priorityElem);
|
||||
|
||||
return $url;
|
||||
}
|
||||
@@ -288,8 +288,8 @@ function Write_Config(){
|
||||
$o_config['RegOption'] = '0'; //注册配置
|
||||
$o_config['Libs'] = './static'; //静态库路径
|
||||
$o_config['Default_User'] = $_POST['User']; //默认用户
|
||||
$o_config['XSS_WAF'] = '1'; //防XSS脚本
|
||||
$o_config['SQL_WAF'] = '1'; //防SQL注入
|
||||
$o_config['XSS_WAF'] = '0'; //防XSS脚本
|
||||
$o_config['SQL_WAF'] = '0'; //防SQL注入
|
||||
$o_config['offline'] = '0'; //离线模式
|
||||
$o_config['Debug'] = '0'; //调试模式
|
||||
$o_config['Maintenance'] = '0'; //维护模式
|
||||
|
||||
@@ -55,7 +55,7 @@ if($c == 'index'){
|
||||
$dir_path = DIR.'/templates/guestbook';
|
||||
}elseif($c == 'apply'){ //收录
|
||||
$theme = $s_templates['apply'];
|
||||
$dir_path = DIR.'/templates/guestbook/';
|
||||
$dir_path = DIR.'/templates/apply/';
|
||||
}elseif($c == $global_config['Login'] || $c == $USER_DB['Login']){ //登录
|
||||
$theme = $s_templates['login'];
|
||||
$dir_path = DIR.'/templates/login';
|
||||
|
||||
@@ -1 +1 @@
|
||||
v2.0.37-20230830
|
||||
v2.0.38-20230906
|
||||
Reference in New Issue
Block a user