Files
dnsmgr/route/app.php
wmwlwmwl 668e2b4ceb Cloudflare增强添加DCV 委派+优化,添加快速解析功能,已有解析记录和智能批量添加 (#442)
* Update RewriteRule in .htaccess for cleaner routing

修复Apache环境下路由重写规则
废弃旧版 index.php/$1 写法,改用兼容新版PHP的PATH_INFO传参方式
解决访问时报错 No input file specified. 问题

* Add files via upload

1.添加DCV 委派一键添加CNAME
2.添加证书验证方法和最低 TLS 版本
3.添加批量添加 修改 删除
4.修复华为云一键txt解析失败(我没其他dns, 其他的需关注)
5.Cloudflare增强改Cloudflare自定义主机名

* 1.添加快速解析 2.Cloudflare自定义主机名添加搜索功能

* Add files via upload

1.Cloudflare自定义主机名自动获取默认线路(支持所有dns,华为云退回之前)
2.优化手机上显示问题
3.一键添加 DCV 委派支持选择要写入的解析域名

* 优化手机显示

* 添加1. 批量 DCV 委派 2. 批量主机名 TXT 验证 3. 批量证书 TXT 验证 4. 批量刷新验证

1. 批量 DCV 委派
2. 批量主机名 TXT 验证
3. 批量证书 TXT 验证
4. 批量刷新验证

* 快速解析改名智能解析,添加已有解析记录和智能批量添加

* 快速解析改名智能解析,添加已有解析记录和智能批量添加

* 由于之前复制保存的,代码有些差异

* 修复已有解析记录的备注功能

* 备注按dns显示

* 修复记录值过长无法复制,优化显示

* 优化显示
2026-04-23 23:15:28 +08:00

188 lines
9.4 KiB
PHP

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
use app\middleware\AuthApi;
use app\middleware\CheckLogin;
use app\middleware\ViewOutput;
use think\facade\Route;
use think\middleware\SessionInit;
Route::pattern([
'id' => '\d+',
]);
Route::any('/install', 'install/index')
->middleware(ViewOutput::class);
Route::any('/login', 'auth/login')->middleware(SessionInit::class)
->middleware(ViewOutput::class);
Route::get('/verifycode', 'auth/verifycode')->middleware(SessionInit::class);
Route::post('/auth/totp', 'auth/totp')->middleware(SessionInit::class);
Route::get('/logout', 'auth/logout');
Route::any('/quicklogin', 'auth/quicklogin');
Route::any('/dmtask/status', 'dmonitor/status');
Route::any('/optimizeip/status', 'optimizeip/status');
Route::get('/cron', 'system/cron');
Route::group(function () {
Route::any('/', 'index/index');
Route::post('/changeskin', 'index/changeskin');
Route::get('/cleancache', 'index/cleancache');
Route::any('/setpwd', 'index/setpwd');
Route::any('/totp/:action', 'index/totp');
Route::get('/test', 'index/test');
Route::post('/user/data', 'user/user_data');
Route::post('/user/op', 'user/user_op');
Route::get('/user', 'user/user');
Route::post('/log/data', 'user/log_data');
Route::get('/log', 'user/log');
Route::post('/account/data', 'domain/account_data');
Route::post('/account/:action', 'domain/account_op');
Route::get('/account/:action', 'domain/account_add');
Route::get('/account', 'domain/account');
Route::get('/cloudflare/hostnames/:id', 'cloudflare/hostnames');
Route::post('/cloudflare/hostnames/data/:id', 'cloudflare/hostnames_data');
Route::post('/cloudflare/hostnames/add/:id', 'cloudflare/hostnames_add');
Route::post('/cloudflare/hostnames/update/:id', 'cloudflare/hostnames_update');
Route::post('/cloudflare/hostnames/delete/:id', 'cloudflare/hostnames_delete');
Route::post('/cloudflare/hostnames/refresh/:id', 'cloudflare/hostnames_refresh');
Route::post('/cloudflare/hostnames/txttargets/:id', 'cloudflare/hostnames_txt_targets');
Route::post('/cloudflare/hostnames/batch_add/:id', 'cloudflare/hostnames_batch_add');
Route::post('/cloudflare/hostnames/batch_delete/:id', 'cloudflare/hostnames_batch_delete');
Route::post('/cloudflare/hostnames/batch_update/:id', 'cloudflare/hostnames_batch_update');
Route::post('/cloudflare/fallback/get/:id', 'cloudflare/fallback_get');
Route::post('/cloudflare/fallback/set/:id', 'cloudflare/fallback_set');
Route::post('/cloudflare/fallback/delete/:id', 'cloudflare/fallback_delete');
Route::post('/cloudflare/dcv_delegation_uuid/:id', 'cloudflare/dcv_delegation_uuid');
Route::post('/cloudflare/get_domain_default_line', 'cloudflare/get_domain_default_line');
Route::get('/cloudflare/tunnels/:id', 'cloudflare/tunnels');
Route::post('/cloudflare/tunnels/data/:id', 'cloudflare/tunnels_data');
Route::post('/cloudflare/tunnels/add/:id', 'cloudflare/tunnels_add');
Route::post('/cloudflare/tunnels/delete/:id', 'cloudflare/tunnels_delete');
Route::post('/cloudflare/tunnels/token/:id', 'cloudflare/tunnels_token');
Route::post('/cloudflare/tunnels/publichostnames/data/:id', 'cloudflare/tunnels_public_hostnames_data');
Route::post('/cloudflare/tunnels/publichostnames/save/:id', 'cloudflare/tunnels_public_hostnames_save');
Route::post('/cloudflare/tunnels/publichostnames/delete/:id', 'cloudflare/tunnels_public_hostnames_delete');
Route::post('/cloudflare/tunnels/cidr/data/:id', 'cloudflare/tunnels_cidr_data');
Route::post('/cloudflare/tunnels/cidr/add/:id', 'cloudflare/tunnels_cidr_add');
Route::post('/cloudflare/tunnels/cidr/delete/:id', 'cloudflare/tunnels_cidr_delete');
Route::post('/cloudflare/tunnels/hostnameroutes/data/:id', 'cloudflare/tunnels_hostname_routes_data');
Route::post('/cloudflare/tunnels/hostnameroutes/add/:id', 'cloudflare/tunnels_hostname_routes_add');
Route::post('/cloudflare/tunnels/hostnameroutes/delete/:id', 'cloudflare/tunnels_hostname_routes_delete');
Route::any('/domain/expirenotice', 'domain/expire_notice');
Route::post('/domain/updatedate', 'domain/update_date');
Route::post('/domain/data', 'domain/domain_data');
Route::post('/domain/op', 'domain/domain_op');
Route::post('/domain/list', 'domain/domain_list');
Route::get('/domain/add', 'domain/domain_add');
Route::get('/domain', 'domain/domain');
Route::post('/record/data/:id', 'domain/record_data');
Route::post('/record/add/:id', 'domain/record_add');
Route::post('/record/update/:id', 'domain/record_update');
Route::post('/record/delete/:id', 'domain/record_delete');
Route::post('/record/status/:id', 'domain/record_status');
Route::post('/record/remark/:id', 'domain/record_remark');
Route::post('/record/batch/:id', 'domain/record_batch');
Route::post('/record/batchedit/:id', 'domain/record_batch_edit');
Route::any('/record/batchadd/:id', 'domain/record_batch_add');
Route::get('/record/batchadd', 'domain/record_batch_add2');
Route::any('/record/batchedit', 'domain/record_batch_edit2');
Route::any('/record/log/:id', 'domain/record_log');
Route::post('/record/list', 'domain/record_list');
Route::post('/record/weight/data/:id', 'domain/weight_data');
Route::any('/record/weight/:id', 'domain/weight');
Route::any('/record/alias/:id', 'domain/alias');
Route::get('/record/:id', 'domain/record');
Route::get('/record/smartparse', 'domain/smartparse');
Route::post('/record/quickinfo/:id', 'domain/quickinfo');
Route::get('/dmonitor/overview', 'dmonitor/overview');
Route::post('/dmonitor/task/data', 'dmonitor/task_data');
Route::post('/dmonitor/task/log/data/:id', 'dmonitor/tasklog_data');
Route::get('/dmonitor/task/info/:id', 'dmonitor/taskinfo');
Route::post('/dmonitor/task/:action', 'dmonitor/task_op');
Route::get('/dmonitor/task/:action', 'dmonitor/taskform');
Route::get('/dmonitor/task', 'dmonitor/task');
Route::post('/dmonitor/clean', 'dmonitor/clean');
Route::any('/optimizeip/opipset', 'optimizeip/opipset');
Route::post('/optimizeip/queryapi', 'optimizeip/queryapi');
Route::post('/optimizeip/opiplist/data', 'optimizeip/opiplist_data');
Route::get('/optimizeip/opiplist', 'optimizeip/opiplist');
Route::any('/optimizeip/opipform/:action', 'optimizeip/opipform');
Route::get('/cert/certaccount', 'cert/certaccount');
Route::get('/cert/deployaccount', 'cert/deployaccount');
Route::post('/cert/account/data', 'cert/account_data');
Route::post('/cert/account/:action', 'cert/account_op');
Route::get('/cert/account/:action', 'cert/account_form');
Route::get('/cert/certorder', 'cert/certorder');
Route::post('/cert/order/data', 'cert/order_data');
Route::post('/cert/order/process', 'cert/order_process');
Route::post('/cert/order/:action', 'cert/order_op');
Route::get('/cert/order/:action', 'cert/order_form');
Route::get('/cert/deploytask', 'cert/deploytask');
Route::post('/cert/deploy/data', 'cert/deploy_data');
Route::post('/cert/deploy/process', 'cert/deploy_process');
Route::post('/cert/deploy/:action', 'cert/deploy_op');
Route::get('/cert/deploy/:action', 'cert/deploy_form');
Route::get('/cert/cname', 'cert/cname');
Route::post('/cert/cname/data', 'cert/cname_data');
Route::post('/cert/cname/:action', 'cert/cname_op');
Route::get('/cert/certset', 'cert/certset');
Route::post('/schedule/stask/data', 'schedule/stask_data');
Route::post('/schedule/stask/:action', 'schedule/stask_op');
Route::get('/schedule/stask/:action', 'schedule/staskform');
Route::get('/schedule/stask', 'schedule/stask');
Route::get('/system/loginset', 'system/loginset');
Route::get('/system/noticeset', 'system/noticeset');
Route::get('/system/proxyset', 'system/proxyset');
Route::post('/system/set', 'system/set');
Route::get('/system/mailtest', 'system/mailtest');
Route::get('/system/tgbottest', 'system/tgbottest');
Route::get('/system/webhooktest', 'system/webhooktest');
Route::post('/system/proxytest', 'system/proxytest');
Route::get('/system/cronset', 'system/cronset');
})->middleware(CheckLogin::class)
->middleware(ViewOutput::class);
Route::group('api', function () {
Route::post('/domain/:id', 'domain/domain_info');
Route::post('/domain', 'domain/domain_data');
Route::post('/record/data/:id', 'domain/record_data');
Route::post('/record/add/:id', 'domain/record_add');
Route::post('/record/update/:id', 'domain/record_update');
Route::post('/record/delete/:id', 'domain/record_delete');
Route::post('/record/status/:id', 'domain/record_status');
Route::post('/record/remark/:id', 'domain/record_remark');
Route::post('/record/batch/:id', 'domain/record_batch');
Route::post('/cert/order', 'cert/order_info');
})->middleware(AuthApi::class);
Route::miss(function() {
return response('404 Not Found')->code(404);
});