182.92.215.19
Geolocation
| Network | 182.92.0.0/16 |
| Postal Code | N/A |
| City | Beijing |
| Country | China (CN) |
| Continent | Asia |
| Locale Code | en |
| Geo Point | 39.911, 116.395 |
| Updated At | 22 Nov 2025, 00:43:15 UTC |
Whois
| Network | 182.92.215.0/24 |
| Organization | China Internet Network Information Center |
| Desc | China Internet Network Information Center,
Floor1, Building No.1 C/-Chinese Academy of Sciences,
4, South 4th Street,
Haidian District, |
| Updated At | 09 Dec 2024, 11:27:07 UTC |
Geolocation
| Network | 182.92.0.0/16 |
| Postal Code | N/A |
| City | Beijing |
| Country | China (CN) |
| Continent | Asia |
| Locale Code | en |
| Geo Point | 39.911, 116.395 |
| Updated At | 22 Nov 2025, 00:43:15 UTC |
Whois
| Network | 182.92.215.0/24 |
| Organization | China Internet Network Information Center |
| Desc | China Internet Network Information Center,
Floor1, Building No.1 C/-Chinese Academy of Sciences,
4, South 4th Street,
Haidian District, |
| Updated At | 09 Dec 2024, 11:27:07 UTC |
| Product | nginx |
| Version | N/A |
| Extra Info | N/A |
| Status Code | 200 |
| Title | 欢迎您使用OneinStack |
| Body SHA256 | 8c8760d21905300ab86d1bbcf36ba3fccf7d5fc037fe05d0a5d4181a924d3a3c |
| Component | Nginx |
| Response Headers | |
| connection | keep-alive |
| content type | text/html |
| date | Fri, 07 Nov 2025 15:27:39 GMT |
| etag | W/"67502a90-40af" |
| last modified | Wed, 04 Dec 2024 10:10:24 GMT |
| server | nginx |
| vary | Accept-Encoding |
{
"body": "<!doctype html>\n<html lang=\"zh-CN\">\n <head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n <meta name=\"description\" content=\"OneinStack是一键PHP/JAVA安装脚本工具,包含lnmp,lamp,lnmpa,ltmp,lnmh,MySQL,PostgreSQL,MongoDB等,官网oneinstack.com\">\n <meta name=\"author\" content=\"yeho\">\n <title>欢迎您使用OneinStack</title>\n <link href=\"https://static.oneinstack.com/assets/ois.css\" rel=\"stylesheet\">\n </head>\n\n <body>\n <nav class=\"navbar navbar-dark fixed-top bg-dark flex-md-nowrap p-0 shadow\">\n <a class=\"navbar-brand col-sm-3 col-md-2 mr-0\" href=\"\">OneinStack</a>\n\n <form class=\"w-100\" action=\"https://oneinstack.com/qa/\" method=\"GET\" target=\"_blank\">\n \t<input class=\"form-control form-control-dark w-100\" type=\"text\" placeholder=\"搜索OneinStack官网问答\" aria-label=\"搜索OneinStack官网问答\" name=\"qs\">\n </form>\n\n <ul class=\"navbar-nav px-3\">\n <li class=\"nav-item text-nowrap\">\n <a class=\"nav-link\" href=\"https://oneinstack.com\" target=\"_blank\">OneinStack官网</a>\n </li>\n </ul>\n </nav>\n\n <div class=\"container-fluid\">\n <div class=\"row\">\n <nav class=\"col-md-2 d-none d-md-block bg-light sidebar\">\n <div class=\"sidebar-sticky\">\n <ul class=\"nav flex-column\">\n <li class=\"nav-item\">\n <a class=\"nav-link active\" href=\"###home\" id=\"home_link\">\n <span data-feather=\"home\"></span>\n 控制中心 <span class=\"sr-only\">(current)</span>\n </a>\n </li>\n <!--<li class=\"nav-item\">\n <a class=\"nav-link\" href=\"###step\" id=\"step_link\">\n <span data-feather=\"file\"></span>\n </a>\n </li>-->\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"###vhost\" id=\"vhost_link\">\n <span data-feather=\"layers\"></span>\n 虚拟主机管理\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"###db\" id=\"db_link\">\n <span data-feather=\"shopping-cart\"></span>\n 数据库管理\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"###ftp\" id=\"ftp_link\">\n <span data-feather=\"users\"></span>\n FTP管理\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"###tools\" id=\"tools_link\">\n <span data-feather=\"briefcase\"></span>\n 运维工具\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"###manage\" id=\"manage_link\">\n <span data-feather=\"bar-chart-2\"></span>\n 管理服务\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"###backup\" id=\"backup_link\">\n <span data-feather=\"disc\"></span>\n 备份\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"###upgrade\" id=\"upgrade_link\">\n <span data-feather=\"trending-up\"></span>\n 升级 & 卸载\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"###port\" id=\"port_link\">\n <span data-feather=\"cloud\"></span>\n 端口开放教程\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"###donation\" id=\"donation_link\">\n <span data-feather=\"heart\"></span>\n 捐赠\n </a>\n </li>\n </ul>\n\n <h6 class=\"sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted\">\n <span>OneinStack官网</span>\n <a class=\"d-flex align-items-center text-muted\" href=\"https://oneinstack.com/\" target=\"_blank\">\n <span data-feather=\"chevron-down\"></span>\n </a>\n </h6>\n <ul class=\"nav flex-column mb-2\">\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"https://oneinstack.com/\" target=\"_blank\">\n <span data-feather=\"home\"></span>\n OneinStack首页\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"https://oneinstack.com/install/\" target=\"_blank\">\n <span data-feather=\"help-circle\"></span>\n 安装、使用方法\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"https://oneinstack.com/faq/\" target=\"_blank\">\n <span data-feather=\"link\"></span>\n FAQ\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" href=\"https://oneinstack.com/changelog/\" target=\"_blank\">\n <span data-feather=\"link\"></span>\n 更新日志\n </a>\n </li>\n </ul>\n </div>\n </nav>\n\n <main role=\"main\" class=\"col-md-9 ml-sm-auto col-lg-10 px-4\">\n\n\t <div class=\"d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom\">\n\t <h1 class=\"h2\" id=\"home\">控制中心</h1>\n\t <div class=\"btn-toolbar mb-2 mb-md-0\">\n\t <div class=\"btn-group mr-2\">\n\t <a class=\"btn btn-sm btn-outline-primary btn_prober\" href=\"xprober.php\" target=\"_blank\"><span data-feather=\"compass\"></span> 探针</a>\n\t <a class=\"btn btn-sm btn-outline-info btn_phpinfo\" href=\"phpinfo.php\" target=\"_blank\"><span data-feather=\"info\"></span> phpinfo</a>\n\t <a class=\"btn btn-sm btn-outline-secondary btn_op\" href=\"ocp.php\" target=\"_blank\"><span data-feather=\"cpu\"></span> Opcache</a>\n\t </div>\n\t <a class=\"btn btn-sm btn-outline-warning mr-2 btn_pma\" href=\"phpMyAdmin/\" target=\"_blank\">\n\t <span data-feather=\"database\"></span> phpMyAdmin\n\t </a>\n\t </div>\n\t </div>\n\t\t\n\t\t\t<section class=\"section\" id=\"home_section\">\n\t \t<h2>Congratulations, OneinStack installed successfully!</h2>\n\t \t<h3><a href=\"https://oneinstack.com\" target=\"_blank\" class=\"links\">OneinStack </a><a href=\"https://linuxeye.com/\" target=\"_blank\">Linux</a>+Nginx/Tengine+MySQL/MariaDB/Percona</br>+PHP+Pureftpd+phpMyAdmin+redis+memcached+jemalloc.</h3>\n\n \t\t\t</section>\n\t\t\n\t\t\t<section class=\"section\" id=\"tools_section\">\n\t <h2 class=\"mt-5\" id=\"tools\">主机工具</h2>\n\t \t<a class=\"btn btn-primary btn_prober\" href=\"xprober.php\" target=\"_blank\" role=\"button\">探针</a>\n\t \t<a class=\"btn btn-info btn_phpinfo\" href=\"phpinfo.php\" target=\"_blank\" role=\"button\">phpinfo</a>\n\t \t<a class=\"btn btn-success btn_pma\" href=\"phpMyAdmin/\" target=\"_blank\" role=\"button\">phpMyAdmin</a>\n\t \t<a class=\"btn btn-secondary btn_op\" href=\"ocp.php\" target=\"_blank\" role=\"button\">Opcache</a>\n \t\t\t</section>\n\t\t\n\t\t\t<section class=\"section\" id=\"step_section\">\n\t <h2 class=\"mt-5\" id=\"step\">基本使用步骤</h2>\n\t\t\t\t<div class=\"card-deck mb-3 text-center\">\n\t\t\t <div class=\"card mb-4 box-shadow\">\n\t\t\t <div class=\"card-header\">\n\t\t\t <h4 class=\"my-0 font-weight-normal\">域名解析</h4>\n\t\t\t </div>\n\t\t\t <div class=\"card-body\">\n\t\t\t <h1 class=\"card-title pricing-card-title\">域名<small class=\"text-muted\">控制</small></h1>\n\t\t\t <ul class=\"list-unstyled mt-3 mb-4\">\n\t\t\t <li>阿里云(万网)</li>\n\t\t\t <li>DNSPOD</li>\n\t\t\t <li>Cloudflare</li>\n\t\t\t </ul>\n\t\t\t <a href=\"https://help.aliyun.com/document_detail/29716.html\" target=\"_blank\" type=\"role\" class=\"btn btn-lg btn-block btn-primary\">详细教程</a>\n\t\t\t </div>\n\t\t\t </div>\n\t\t\t <div class=\"card mb-4 box-shadow\">\n\t\t\t <div class=\"card-header\">\n\t\t\t <h4 class=\"my-0 font-weight-normal\">新建虚拟主机</h4>\n\t\t\t </div>\n\t\t\t <div class=\"card-body\">\n\t\t\t <h1 class=\"card-title pricing-card-title\">建立<small class=\"text-muted\">网站</small></h1>\n\t\t\t <ul class=\"list-unstyled mt-3 mb-4\">\n\t\t\t <li>新建虚拟主机 ./vhost.sh</li>\n\t\t\t <li>删除虚拟主机 ./vhost.sh --del</li>\n\t\t\t <li>管理FTP账号 ./pureftpd_vhost.sh</li>\n\t\t\t </ul>\n\t\t\t <a href=\"https://oneinstack.com/install/\" target=\"_blank\" type=\"role\" class=\"btn btn-lg btn-block btn-primary\">详细教程</a>\n\t\t\t </div>\n\t\t\t </div>\n\t\t\t <div class=\"card mb-4 box-shadow\">\n\t\t\t <div class=\"card-header\">\n\t\t\t <h4 class=\"my-0 font-weight-normal\">部署网站</h4>\n\t\t\t </div>\n\t\t\t <div class=\"card-body\">\n\t\t\t <h1 class=\"card-title pricing-card-title\">上线<small class=\"text-muted\">运行</small></h1>\n\t\t\t <ul class=\"list-unstyled mt-3 mb-4\">\n\t\t\t <li><a href=\"phpMyAdmin/\" target=\"_blank\">phpMyAdmin</a></li>\n\t\t\t <li>管理FTP账号 ./pureftpd_vhost.sh</li>\n\t\t\t <li>备份 ./backup_setup.sh</li>\n\t\t\t </ul>\n\t\t\t <a href=\"https://oneinstack.com/install/\" target=\"_blank\" type=\"role\" class=\"btn btn-lg btn-block btn-primary\">详细教程</a>\n\t\t\t </div>\n\t\t\t </div>\n\t\t\t </div>\n\t\t\t</section>\n\t\t\n\t\t\t<section class=\"section\" id=\"vhost_section\">\n\t <h2 class=\"mt-5\" id=\"vhost\">如何添加虚拟主机?</h2>\n\t <div class=\"alert alert-primary\" role=\"alert\">\n\t \t<code>./vhost.sh</code>\n\t </div>\n\t <img class=\"img-fluid\" src=\"https://static.oneinstack.com/images/vhost.png\" alt=\"《交互安装》\">\n\t <h2 class=\"mt-5\">如何删除虚拟主机?</h2>\n\t <div class=\"alert alert-primary\" role=\"alert\">\n\t \t<code>./vhost.sh --del</code>\n\t </div>\n\t <img class=\"img-fluid\" src=\"https://static.oneinstack.com/images/vhost_del.png\" alt=\"《交互安装》\">\n\t\t\t</section>\n\t\t\n\t\t\t<section class=\"section\" id=\"ftp_section\">\t\t\t\n\t <h2 class=\"mt-5\">FTP客户端推荐</h2>\n\t <h3>FileZilla: <a href=\"https://filezilla-project.org/download.php\" target=\"_blank\" class=\"links\">下载地址</a></h3>\n\t <h2 class=\"mt-5\" id=\"ftp\">如何管理FTP账号?</h2>\n\t <div class=\"alert alert-primary\" role=\"alert\"><code>./pureftpd_vhost.sh</code></pre></div>\n\t <img class=\"img-fluid\" src=\"https://static.oneinstack.com/images/pureftpd.png\" alt=\"《交互安装》\">\n\t\t\t</section>\n\t\t\n\t\t\t<section class=\"section\" id=\"db_section\">\t\t\t\n\t <h2 class=\"mt-5\" id=\"db\">数据库</h2>\n\t <div class=\"list-group\">\n\t\t\t\t <a href=\"phpMyAdmin\" target=\"_blank\" class=\"list-group-item list-group-item-action active\">\n\t\t\t\t phpMyAdmin\n\t\t\t\t </a>\n\t\t\t\t <a href=\"https://oneinstack.com/question/17347/\" target=\"_blank\" class=\"list-group-item list-group-item-action\">如何获取MySQL root密码?</a>\n\t\t\t\t <a href=\"https://oneinstack.com/question/oneinstack-how-to-configure-mysql-remote-connection/\" target=\"_blank\" class=\"list-group-item list-group-item-action\">如何配置MySQL远程连接?</a>\n\t\t\t\t</div>\t \t\n\t\t\t</section>\n\n\t\t\t<section class=\"section\" id=\"backup_section\">\t\t\t\n\t <h2 class=\"mt-5\" id=\"backup\">如何备份?</h2>\n\t <div class=\"alert alert-primary\" role=\"alert\"><code>./backup_setup.sh # Set backup options</code></div>\n\t <img class=\"img-fluid\" src=\"https://static.oneinstack.com/images/backup_setup.png\" alt=\"《交互安装》\">\n\t <div class=\"alert alert-primary\" role=\"alert\"><pre><code>./backup.sh # Start backup, You can add cron jobs\n # crontab -l # Examples\n 0 1 * * * ~/oneinstack/backup.sh > /dev/null 2>&1 &</code></pre></div>\n\t\t\t</section>\n\n\t\t\t<section class=\"section\" id=\"manage_section\">\t\n\t <h2 class=\"mt-5\" id=\"manage\">如何管理服务?</h2>\n\t \t<p class=\"mt-4\">Nginx/Tengine/OpenResty:</p>\n\t\t\t<div class=\"alert alert-primary\" role=\"alert\"><code>systemctl {start|stop|status|restart|reload} nginx</code></div>\n\t\t\t<p class=\"mt-4\">MySQL/MariaDB/Percona:</p>\n\t\t\t<div class=\"alert alert-primary\" role=\"alert\"><code>systemctl {start|stop|restart|reload|status} mysqld</code></div>\n\t\t\t<p class=\"mt-4\">PostgreSQL:</p>\n\t\t\t<div class=\"alert alert-primary\" role=\"alert\"><code>systemctl {start|stop|restart|status} postgresql</code></div>\n\t\t\t<p class=\"mt-4\">MongoDB:</p>\n\t\t\t<div class=\"alert alert-primary\" role=\"alert\"><code>systemctl {start|stop|status|restart|reload} mongod</code></div>\n\t\t\t<p class=\"mt-4\">PHP:</p>\n\t\t\t<div class=\"alert alert-primary\" role=\"alert\"><code>systemctl {start|stop|restart|reload|status} php-fpm</code></div>\n\t\t\t<p class=\"mt-4\">Apache:</p>\n\t\t\t<div class=\"alert alert-primary\" role=\"alert\"><code>systemctl {start|restart|stop} httpd</code></div>\n\t\t\t<p class=\"mt-4\">Tomcat:</p>\n\t\t\t<div class=\"alert alert-primary\" role=\"alert\"><code>systemctl {start|stop|status|restart} tomcat</code></div>\n\t\t\t<p class=\"mt-4\">Pure-Ftpd:</p>\n\t\t\t<div class=\"alert alert-primary\" role=\"alert\"><code>systemctl {start|stop|restart|status} pureftpd</code></div>\n\t\t\t<p class=\"mt-4\">Redis:</p>\n\t\t\t<div class=\"alert alert-primary\" role=\"alert\"><code>systemctl {start|stop|status|restart|reload} redis-server</code></div>\n\t\t\t<p class=\"mt-4\">Memcached:</p>\n\t\t\t<div class=\"alert alert-primary\" role=\"alert\"><code>systemctl {start|stop|status|restart|reload} memcached</code></div>\n\t\t\t</section>\n\n\t\t\t<section class=\"section\" id=\"upgrade_section\">\t\t\t\n\t <h2 class=\"mt-5\" id=\"upgrade\">如何更新版本?</h2>\n\t <div class=\"alert alert-primary\" role=\"alert\"><code>./upgrade.sh</code></div>\n\t <img class=\"img-fluid\" src=\"https://static.oneinstack.com/images/upgrade.png\" alt=\"\">\n\t <h2 class=\"mt-5\">如何卸载?</h2>\n \t <div class=\"alert alert-primary\" role=\"alert\"><code>./uninstall.sh</code></div>\n\t <img class=\"img-fluid\" src=\"https://static.oneinstack.com/images/uninstall.png\" alt=\"\">\n\t\t\t</section>\n\t\t\t\t\n\t\t\t<section class=\"section\" id=\"port_section\">\n\t <!--<h2 class=\"mt-5\" id=\"port\">云主机安全组端口开放教程<span class=\"badge badge-secondary\">Version 1.0.0</span></h2>-->\n\t <div class=\"card text-white bg-danger\" style=\"width: 18rem;\">\n\t\t\t\t <div class=\"card-header\">\n\t\t\t\t 云主机安全组必须打开如下端口:\n\t\t\t\t </div>\n\t\t\t\t <ul class=\"list-group list-group-flush\">\n\t\t\t\t <li class=\"list-group-item text-danger\">ssh: 22</li>\n\t\t\t\t <li class=\"list-group-item text-danger\">http: 80</li>\n\t\t\t\t <li class=\"list-group-item text-danger\">https: 443</li>\n\t\t\t\t <li class=\"list-group-item text-danger\">ftp: 21, 20000~30000</li>\n\t\t\t\t </ul>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"list-group mt-5\" style=\"width: 18rem;\">\n\t\t\t\t <a class=\"list-group-item list-group-item-action active\">\n\t\t\t\t 云主机安全组端口开放教程\n\t\t\t\t </a>\n\t\t\t\t <a href=\"https://oneinstack.com/docs/securitygroup/#11\" target=\"_blank\" class=\"list-group-item list-group-item-action\">阿里云安全组端口</a>\n\t\t\t\t <a href=\"https://oneinstack.com/docs/securitygroup/#12\" target=\"_blank\" class=\"list-group-item list-group-item-action\">腾讯云安全组端口</a>\n\t\t\t\t <a href=\"https://oneinstack.com/docs/securitygroup/#13\" target=\"_blank\" class=\"list-group-item list-group-item-action\">华为云安全组端口</a>\n\t\t\t\t</div>\t \t\n\t\t\t</section>\n\n \t<div align=\"center\" class=\"mt-5\"><iframe src=\"https://static.oneinstack.com/ad_buttom.html\" width=\"475\" frameborder=\"0\" scrolling=\"no\"></iframe></div>\n \t<div> \t\t\n \t\t<p>\n \t\t\t<a href=\"https://oneinstack.com\" target=\"_blank\">OneinStack</a> by <a href=\"https://linuxeye.com/\" target=\"_blank\">LinuxEye</a>\n \t\t\t QQ群: 262601796(新) 558540514(付费千人群)</a>\n \t\t</p>\n \t\t<p align=\"right\"><a href=\"#\">回顶部</a></p>\n \t</div>\n </main>\n </div>\n </div>\n <script src=\"https://static.oneinstack.com/assets/ois20190114.js\"></script>\n </body>\n</html>\n",
"body_murmur": 1297644166,
"body_sha256": "8c8760d21905300ab86d1bbcf36ba3fccf7d5fc037fe05d0a5d4181a924d3a3c",
"component": [
"Nginx"
],
"content_length": -1,
"headers": {
"connection": [
"keep-alive"
],
"content_type": [
"text/html"
],
"date": [
"Fri, 07 Nov 2025 15:27:39 GMT"
],
"etag": [
"W/\"67502a90-40af\""
],
"last_modified": [
"Wed, 04 Dec 2024 10:10:24 GMT"
],
"server": [
"nginx"
],
"vary": [
"Accept-Encoding"
]
},
"protocol": "HTTP/1.1",
"request": {
"headers": {
"accept": [
"*/*"
],
"user_agent": [
"Mozilla/5.0 (compatible; Odin; https://docs.getodin.com/)"
]
},
"method": "GET",
"url": {
"host": "182.92.215.19",
"path": "",
"scheme": "http"
}
},
"status_code": 200,
"title": "欢迎您使用OneinStack",
"transfer_encoding": [
"chunked"
]
}| Product | nginx |
| Version | N/A |
| Extra Info | N/A |
| Status Code | 200 |
| Title | 熊猫自考-AI助手 |
| Body SHA256 | d7e1a2ead66b700d45f66f49394813e42b0b4fd14568f99ac10712cfb486a4ca |
| Component | NginxBootstrap |
| Favicon | |
| Path | |
| MD5 Hash | b3e9e98252682d0a0c52990b3e5e2367 |
| Murmur Hash | 797260298 |
| Size | 270398 |
| Response Headers | |
| access control allow origin | * |
| connection | keep-alive |
| content type | text/html;charset=utf-8 |
| date | Mon, 17 Nov 2025 16:27:08 GMT |
| server | nginx |
| set cookie | PHPSID=1cb41c37d346da4129af755da3568151; Max-Age=31536000; Path=/; HttpOnly |
| unknown | [{"key":"access_control_allow_credentials","value":["true"]},{"key":"access_control_allow_methods","value":["*"]},{"key":"access_control_allow_headers","value":["*"]}] |
| vary | Accept-Encoding |
| Fingerprint | |
| MD5 | 794CFC8AE00095BC7E8C059D92F09EA0 |
| SHA1 | B005AAB8FF6F57860B06F7D7D8DEABDE0D6E54D3 |
| SHA256 | 18686D4004B1C4A9C8F8394B78566F91669AF9D5DD865188D907714947B35BE5 |
| JARM | 21d19d00021d21d21c42d43d0000009c19eb5d1f46a7a29c1602d080891400 |
{
"body": "<!doctype html>\r\n<html lang=\"zh-cn\">\r\n<head>\r\n <meta charset=\"utf-8\">\r\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover\">\r\n <link rel=\"shortcut icon\" href=\"/favicon.ico\" />\r\n <script src=\"/app/ai/js/jquery.min.js\"></script>\r\n <link href=\"/app/ai/css/bootstrap.min.css?v=5.3\" rel=\"stylesheet\" crossorigin=\"anonymous\">\r\n <script src=\"/app/ai/js/bootstrap.bundle.min.js?v=5.3\" crossorigin=\"anonymous\"></script>\r\n <!-- markdown css -->\r\n <link rel=\"stylesheet\" href=\"/app/ai/css/github-markdown.css?v=1716784492\">\r\n <!-- CSS -->\r\n <link rel=\"stylesheet\" href=\"/app/ai/css/app.css?v=1716784492\">\r\n <title>熊猫自考-AI助手</title>\r\n <meta name=\"description\" content=\"熊猫自考AI助手主要提供学习,生活以及工作上提供解答和便利!\" />\r\n</head>\r\n\r\n<body class=\"ready sticky overflow-hidden h-100\" data-bs-theme=\"light\" style=\"background: var(--ai-body-bg);\">\r\n\r\n <!-- webman ai 主应用 -->\r\n <div id=\"app\" class=\"h-100 d-flex align-items-center justify-content-center\">\r\n <div class=\"loading\" v-if=\"showLoading\">\r\n <div class=\"dot dot1\"></div>\r\n <div class=\"dot dot2\"></div>\r\n <div class=\"dot dot3\"></div>\r\n </div>\r\n <div class=\"flex-column-reverse flex-md-row container-fluid h-100 d-flex shadow-sm ai-container\" :class=\"{'small-window':isSmallWindow}\" v-cloak @click=\"hideAll\" @mouseup=\"onMouseUp()\">\r\n <!-- 左侧工具栏 -->\r\n <div class=\"left-bar black-bg\" :class=\"{'rounded-start':!isMobile}\" v-show=\"showAddressBook\">\r\n <a href=\"/app/user\" target=\"_blank\" v-show=\"!isMobile\"><img :src=\"loginUser.avatar\" class=\"d-none d-md-flex avatar shadow-sm flex-shrink-0\"></a>\r\n <div class=\"mt-md-4 ai-menu\" @click=\"switchModule('chat')\" title=\"聊天\">\r\n <span v-if=\"module==='chat'\" class=\"text-primary\"><i class=\"icon-chat-fill\"></i></span>\r\n <span v-else><i class=\"icon-chat\"></i></span>\r\n </div>\r\n\r\n <template v-for=\"(menu, key) in setting.menus\">\r\n <div :title=\"menu.title\" @click=\"switchModule(key)\" class=\"mt-md-4 ai-menu\" v-show=\"menu.enabled&&(!isMobile||menu.mobile)\">\r\n <span v-if=\"module===key\" v-html=\"menu.icon.active\" class=\"text-primary d-flex align-center\"></span>\r\n <span class=\"d-flex align-center\" v-else v-html=\"menu.icon[theme]\"></span>\r\n </div>\r\n </template>\r\n\r\n <div class=\"d-none d-md-flex align-items-center justify-content-center flex-column pb-3\" >\r\n <div class=\"mt-md-4 icon-btn\" @click=\"toggleTheme()\" :title=\"theme==='dark'?'深色主题':'浅色主题'\">\r\n {{theme===\"light\"?\"\":\"\"}}\r\n </div>\r\n <div class=\"mt-md-4 icon-btn\" @click=\"saveData('smallWindow' , smallWindow=!smallWindow)\" :title=\"smallWindow?'全屏模式':'窗口模式'\">\r\n {{smallWindow?\"\":\"\"}}\r\n </div>\r\n <div class=\"mt-md-4 icon-btn\" :class=\"{selected:module==='setting'}\" @click.stop=\"box.showMore=!box.showMore\" title=\"更多设置\">\r\n {{module===\"setting\"?\"\":\"\"}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 对话列表 -->\r\n <div class=\"chat-bar dark-bg\" v-show=\"showAddressBook&&module==='chat'\">\r\n <div class=\"d-flex justify-content-center align-items-center px-3 header search-box\">\r\n <div class=\"d-flex align-items-center w-100\">\r\n <input class=\"form-control form-control-sm\" type=\"text\" v-model=\"keyword\" placeholder=\"搜索\">\r\n <button class=\"btn btn-sm border ms-2 me-0 f15 font-weight-bold add-btn\" @click.stop=\"showRoleInfoBox\"><span class=\"iconfont p-0\"></span></button>\r\n </div>\r\n </div>\r\n <div class=\"chat-list\">\r\n <template v-for=\"item in filter\">\r\n <div class=\"item\" @click=\"switchRoleId(item.roleId)\" :class=\"{'selected-bg': roleId==item.roleId || contextMenu.roleId==item.roleId}\" @contextmenu.prevent=\"openContextMenu(item.roleId, $event)\">\r\n <div class=\"d-flex\">\r\n <img class=\"avatar\" :src=\"item.avatar+'?v=5.1'\" alt=\"avatar\"/>\r\n <div class=\"ms-2\">\r\n <div class=\"name\">{{item.name}}</div>\r\n <div class=\"text-secondary-sm text-truncate\">{{item.desc}}</div>\r\n </div>\r\n </div>\r\n <div class=\"text-right text-secondary f12\">\r\n <div style=\"height:1.3rem\">{{formatDate(item.lastTime)}}</div>\r\n <div class=\"iconfont\" v-if=\"item.pinned\"></div>\r\n </div>\r\n </div>\r\n </template>\r\n </div>\r\n </div>\r\n\r\n <!-- 聊天框 -->\r\n <div class=\"chat-box gray-bg rounded-end\" :style=\"{width:showAddressBook?'calc(100% - 250px)':'100%'}\" :class=\"{'slide-in': isSlidedIn, 'slide-out': isSlidedOut}\" v-show=\"(!isMobile || !showAddressBook) && module==='chat'\">\r\n <div class=\"header d-flex justify-content-between shadow-sm\" @click=\"scrollToTop()\">\r\n <b class=\"iconfont\" @click=\"slideOut\" v-show=\"isMobile\"></b>\r\n <span v-html=\"chat.name\"></span>\r\n <b class=\"iconfont\" @click.stop=\"editRole(roleId)\"></b>\r\n </div>\r\n <div class=\"body\" :style=\"{height: 'calc(100% - '+(footerHeight+(isMobile?50:60))+'px)'}\">\r\n <ul class=\"list-unstyled overflow-auto h-100 mb-0 message-list\" ref=\"messageBox\">\r\n <template v-for=\"message in chat.messages\" :key=\"message.id\">\r\n <li class=\"d-flex mt-4\" :class=\"{'flex-row-reverse':message.role=='user'}\">\r\n <img class=\"avatar message-avatar flex-shrink-0\" alt=\"avatar\" :src=\"message.role!=='user'?chat.avatar+'?v=5.1':loginUser.avatar\" width=\"40\" height=\"40\">\r\n <div class=\"position-relative d-flex align-items-center\" @mouseenter=\"hoverMessageId=message.id\" @mouseleave=\"hoverMessageId=0\">\r\n <div class=\"mx-2 markdown-body message rounded message-bg\"\r\n v-html=\"markdown(Array.isArray(message.content)?this.implodeContent(message.content):message.content)||(!message.completed?'<b class=\\'animate-blink\\'>|</b>':'')\"\r\n >\r\n </div>\r\n\r\n <div class=\"p-1 rounded shadow-sm position-absolute message-bg\" style=\"top:-20px;\" v-show=\"hoverMessageId===message.id && message.completed\" :style=\"message.role==='user'?'left:0':'right:0'\">\r\n <span class=\"icon-btn p-1\" v-show=\"message.role!=='user'&&message.prompt&&message===this.lastMessage(chat)\" @click=\"regenerate(chat, message)\"></span>\r\n <span class=\"icon-btn block-copy\" @click=\"copyToClipboard(message.content)\"></span>\r\n <span class=\"icon-btn p-1\" v-if=\"supportSpeak\" @click=\"speak(message.content)\"></span>\r\n <span class=\"icon-btn p-1\" @click=\"deleteMessage(message.id)\"></span>\r\n </div>\r\n </div>\r\n </li>\r\n </template>\r\n </ul>\r\n <div class=\"stop-btn\">\r\n <button type=\"button\" class=\"btn btn-sm btn-outline-secondary\" v-show=\"chat.loading\" @click=\"cancel()\" style=\"display: none\">停止</button>\r\n </div>\r\n\r\n <div class=\"images-box rounded\" v-if=\"chat.images && chat.images.length\" >\r\n <div class=\"images-item\" v-for=\"(image,index) in chat.images\">\r\n <img class=\"rounded\" :src=\"image\" @click=\"previewImage(image)\">\r\n <span class=\"del\" @click=\"deleteImage(index)\"><i class=\"bi bi-x-lg\"></i></span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"footer position-relative\" v-show=\"chat.name\" :style=\"{height: footerHeight + 'px'}\">\r\n <div style=\"height:3px;cursor:s-resize\" @mousedown=\"dragEagle\" v-if=\"!isMobile\"></div>\r\n <div style=\"border-top:2px solid var(--bs-primary)\" :class=\"{'fade-out':uploadPercent>=100}\" :style=\"'width:' + uploadPercent+'%'\"></div>\r\n <div class=\"tools\" @click=\"scrollToBottom(true)\">\r\n <span class=\"icon chat-tools-item\" v-if=\"!isMobile\" title=\"通讯录关闭/开启\" @click.stop=\"showAddressBook=!showAddressBook\" :class=\"{'text-primary':!showAddressBook}\"></span>\r\n <span class=\"icon chat-tools-item\" title=\"历史话题\" @click.stop=\"showHistory(chat.roleId)\"></span>\r\n <span class=\"icon chat-tools-item\" title=\"新话题\" @click.stop=\"newChat\"></span>\r\n <span class=\"icon chat-tools-item\" title=\"参数调整\" :class=\"{selected:box.showParams}\" @click.stop=\"showPanel('Params')\"></span>\r\n <span class=\"icon chat-tools-item\" title=\"语音对话\" v-if=\"setting.audio.enable_xunfei_iat\" @click.stop=\"toggleVoice()\" :class=\"{'text-primary':chat.voice}\"></span>\r\n <span class=\"icon chat-tools-item\" title=\"上传图片\" v-show=\"chat.model&&modelSupportImage(chat.model)\" @click.stop=\"openUploadImage\"></span>\r\n\r\n <form style=\"display: none\" ref=\"uploadForm\"><input type=\"file\" ref=\"uploadInput\" @change=\"uploadImage\"></form>\r\n\r\n <span class=\"icon chat-tools-item float-end f20 d-none d-md-block\" title=\"发送方式\" :class=\"{selected:box.showSendMethod}\" @click.stop=\"showPanel('SendMethod')\"></span>\r\n </div>\r\n <div v-show=\"chat.voice\" class=\"user-select-none\">\r\n\r\n <div class=\"d-flex justify-content-center align-items-center text-secondary f13\" :style=\"{height:(footerHeight-65)+'px'}\">\r\n <template v-if=\"microphoneError\">\r\n <span class=\"text-danger\">{{microphoneError}}</span>\r\n </template>\r\n <template v-else>\r\n <div class=\"d-flex flex-column align-items-center\" v-if=\"!isMobile\">\r\n <div class=\"rounded-pill iconfont voice-btn bg-primary text-light f28 d-flex align-items-center justify-content-center mb-2\"\r\n :class=\"{'btn-primary-light':chat.voice==='listening', 'bg-secondary':chat.loading}\"\r\n @mousedown.stop=\"onMouseDown()\" @mouseup.stop=\"onMouseUp()\" @mouseleave=\"mouseLeave=true\" @mouseenter=\"mouseLeave=false\" @click.prevent>{{!chat.loading?\"\":\"\"}}</div>\r\n <div :class=\"{'text-danger':mouseDown&&mouseLeave}\">{{voiceBtnTip()}}</div>\r\n </div>\r\n <div class=\"d-flex flex-column align-items-center\" v-else>\r\n <div class=\"btn\" @contextmenu.prevent.stop\r\n :class=\"{'btn-primary-light':chat.voice==='listening'&&!mouseLeave, 'btn-secondary':chat.loading, 'btn-danger':mouseDown&&mouseLeave, 'btn-primary':!mouseDown||!mouseLeave}\"\r\n @touchstart=\"onTouch($event)\" @touchend=\"onTouchEnd()\" @touchmove=\"onTouchMove($event)\" @click.prevent>\r\n {{voiceBtnTip()}}\r\n </div>\r\n </div>\r\n </template>\r\n </div>\r\n </div>\r\n\r\n <textarea :style=\"{height: (footerHeight - (isMobile?70:90))+'px'}\" v-show=\"!chat.voice\" @drop=\"handleDrop\" @paste=\"handlePaste\" class=\"input\" placeholder=\"说点什么吧...\" v-model=\"chat.content\" @keyup.enter=\"handleEnter\" ref=\"input\" @focus=\"handleInputFocus\" @input=\"resizeInput()\" @change=\"resizeInput()\"></textarea>\r\n\r\n <div class=\"footer-txt-box\" v-if=\"!isMobile\">\r\n <a class=\"me-2\" v-if=\"setting.icp\" target=\"_blank\" href=\"http://beian.miit.gov.cn/\">{{setting.icp}}</a>\r\n <a class=\"me-2\" v-if=\"setting.beian\" target=\"_blank\" :href=\"'http://www.beian.gov.cn/portal/registerSystemInfo?recordcode='+(setting.beian.match(/\\d+/)||[])[0]\">{{setting.beian}}</a>\r\n <span class=\"me-2\" v-if=\"setting.footer_txt\" v-html=\"setting.footer_txt\"></span>\r\n </div>\r\n <div class=\"send-btn\"><a href=\"https://www.workerman.net/app/view/ai\" v-if=\"!isMobile&&showBuyLink\" target=\"_blank\" class=\"pe-2 text-secondary\">购买此程序</a><button v-show=\"!chat.voice\" class=\"btn btn-sm btn-primary px-3 ms-3 iconfont f18\" :disabled=\"chat.loading||!chat.content\" @click=\"send()\"></button></div>\r\n <button v-show=\"!isMobile&&chat.voice==='listening'\" class=\"btn btn-sm btn-primary px-3 ms-3 send-btn\" :disabled=\"chat.voice!=='listening'\" @click=\"cancelVoice()\">取消</button>\r\n </div>\r\n </div>\r\n\r\n <!-- 聊天框里相关浮层 -->\r\n <div class=\"overlay bg-transparent\" v-show=\"showShadowLayer&&module==='chat'\" @contextmenu.prevent=\"hideAll\">\r\n <!-- 对话列表右键菜单 -->\r\n <div class=\"position-fixed shadow-sm p-2 rounded cursor-pointer black-bg\" @click.stop :style=\"{top:contextMenu.top+'px', left:contextMenu.left+'px'}\" v-show=\"box.showContextMenu\">\r\n <a class=\"dropdown-item iconfont\" @click=\"pinRole(contextMenu.roleId)\"> 置顶</a>\r\n <a class=\"dropdown-item iconfont\" @click=\"editRole(contextMenu.roleId)\"> 编辑</a>\r\n <a class=\"dropdown-item iconfont\" @click=\"deleteRole(contextMenu.roleId)\"> 删除</a>\r\n </div>\r\n\r\n <!-- 参数设置 -->\r\n <div class=\"params-box border shadow-sm slide-up\" @click.stop v-show=\"box.showParams\" :style=\"{left:showAddressBook?'300px':'0', bottom:footerHeight+'px'}\">\r\n <div class=\"font-weight-bolder mt-1 mb-3\">参数调整</div>\r\n <form>\r\n <div class=\"form-group row align-items-center\">\r\n <label for=\"Model\" class=\"col-sm-3 col-form-label\">模型</label>\r\n <div class=\"col-sm-7\">\r\n <select class=\"form-select form-select-sm\" id=\"Model\" v-model=\"chat.model\">\r\n <option v-for=\"(name, value) in setting.defaultModels\" :value=\"value\">{{name}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div v-if=\"chat.model&&!(/(cogview|dall)/.test(chat.model))\">\r\n <div class=\"form-group row align-items-center\">\r\n <label for=\"ContextNum\" class=\"col-sm-3 col-form-label\">上下文数 <span class=\"text-secondary\" v-if=\"isMobile\">{{chat.contextNum}}</span></label>\r\n <div class=\"col-sm-7\">\r\n <input type=\"range\" class=\"form-range\" min=\"0\" max=\"32\" v-model=\"chat.contextNum\">\r\n </div>\r\n <div class=\"col-sm-2\" v-if=\"!isMobile\">\r\n <input type=\"text\" class=\"form-control form-control-sm\" id=\"ContextNum\" v-model=\"chat.contextNum\">\r\n </div>\r\n </div>\r\n <div class=\"form-group row align-items-center\">\r\n <label for=\"MaxTokens\" class=\"col-sm-3 col-form-label\">最大token <span class=\"text-secondary\" v-if=\"isMobile\">{{chat.maxTokens}}</span></label>\r\n <div class=\"col-sm-7\">\r\n <input type=\"range\" class=\"form-range\" min=\"1\" max=\"4096\" v-model=\"chat.maxTokens\">\r\n </div>\r\n <div class=\"col-sm-2\" v-if=\"!isMobile\">\r\n <input type=\"text\" class=\"form-control form-control-sm\" id=\"MaxTokens\" v-model=\"chat.maxTokens\">\r\n </div>\r\n </div>\r\n <div class=\"form-group row align-items-center\">\r\n <label for=\"Temperature\" class=\"col-sm-3 col-form-label\">创造性 <span class=\"text-secondary\" v-if=\"isMobile\">{{chat.temperature}}</span></label>\r\n <div class=\"col-sm-7\">\r\n <input type=\"range\" class=\"form-range\" min=\"0\" max=\"1\" step=\"0.1\" v-model=\"chat.temperature\">\r\n </div>\r\n <div class=\"col-sm-2\" v-if=\"!isMobile\">\r\n <input type=\"text\" class=\"form-control form-control-sm\" id=\"Temperature\" v-model=\"chat.temperature\">\r\n </div>\r\n </div>\r\n <div class=\"form-group row align-items-center\">\r\n <label for=\"Language\" class=\"col-sm-3 col-form-label\">语言</label>\r\n <div class=\"col-sm-7\">\r\n <select class=\"form-select form-select-sm\" id=\"Language\" v-model=\"chat.language\">\r\n <option value=\"zh_cn\">zh_cn</option>\r\n <option value=\"en_us\">en_us</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"form-group row align-items-center\" v-if=\"setting.audio.enable_yingying_tts || setting.audio.enable_gpt_tts\">\r\n <label for=\"Speaker\" class=\"col-sm-3 col-form-label\">朗读者</label>\r\n <div class=\"col-sm-7\">\r\n <select class=\"form-select form-select-sm\" id=\"Speaker\" v-model=\"chat.speaker\">\r\n <option value=\"yingying\" v-if=\"setting.audio.enable_yingying_tts\">莹莹</option>\r\n <option value=\"alloy\" v-if=\"setting.audio.enable_gpt_tts\">Alloy</option>\r\n <option value=\"echo\" v-if=\"setting.audio.enable_gpt_tts\">Echo</option>\r\n <option value=\"fable\" v-if=\"setting.audio.enable_gpt_tts\">Fable</option>\r\n <option value=\"onyx\" v-if=\"setting.audio.enable_gpt_tts\">Onyx</option>\r\n <option value=\"nova\" v-if=\"setting.audio.enable_gpt_tts\">Nova</option>\r\n <option value=\"shimmer\" v-if=\"setting.audio.enable_gpt_tts\">Shimmer</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <!-- 发送方式 -->\r\n <div class=\"send-method-box shadow-sm\" @click.stop v-show=\"box.showSendMethod\" :style=\"{bottom:footerHeight+'px'}\">\r\n <a class=\"dropdown-item iconfont\" @click=\"sendMethodSelect('Enter')\" :class=\"{'alert-success':sendMethod=='Enter', selected:sendMethod=='Enter', 'ps-4': sendMethod!='Enter'}\">Enter发送</a>\r\n <a class=\"dropdown-item iconfont\" @click=\"sendMethodSelect('Ctrl-Enter')\" :class=\"{'alert-success':sendMethod=='Ctrl-Enter', selected:sendMethod=='Ctrl-Enter', 'ps-4': sendMethod!='Ctrl-Enter'}\">Ctrl+Enter发送</a>\r\n </div>\r\n\r\n <!-- 历史对话 -->\r\n <div class=\"right-box shadow-sm h-100 p-4 chat-list black-bg\" v-show=\"box.showHistory\" @click.stop :class=\"{'slide-in' : isMobile||!smallWindow}\">\r\n <input class=\"form-control form-control-sm\" type=\"text\" v-model=\"historyKeyword\" placeholder=\"搜索\">\r\n\r\n <div v-if=\"!Object.keys(historyItems).length\" class=\"d-flex flex-column align-items-center justify-content-center\">\r\n <div class=\"iconfont text-secondary mt-5 cursor-default\" style=\"font-size:60px;\"></div>\r\n <div class=\"text-secondary mt-2\">没有相关记录</div>\r\n </div>\r\n <div v-else class=\"mt-3 py-1 px-1 px-md-3 item rounded align-items-center cursor-pointer\" v-for=\"item in historyItems\" @click=\"historyGet(chat.roleId, item.chatId)\">\r\n <div>\r\n <div class=\"text-truncate\"><b>{{item.title}}</b></div>\r\n <div class=\"text-secondary f12 mt-1\">{{formatDate(item.time)}}</div>\r\n </div>\r\n <div class=\"icon-btn p-1 f18\" @click.stop=\"deleteHistory(chat.roleId, item.chatId)\"></div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- 角色设置 -->\r\n <div class=\"center-box border shadow-sm slide-up\" @click.stop v-show=\"box.showRoleInfo\">\r\n <h4 class=\"mb-4\">角色设置</h4>\r\n <form enctype=\"multipart/form-data\" id=\"avatarForm\" class=\"mb-3\">\r\n <img :src=\"roleInfo.avatar\" height=\"64\" width=\"64\" class=\"rounded-pill\">\r\n <label class=\"btn btn-primary btn-sm uploadBtn font-size-14 ms-4\">\r\n 上传头像\r\n <input type=\"file\" name=\"avatar\" id=\"avatar\" class=\"d-none\" accept=\"image/*\" @change=\"uploadAvatar\">\r\n </label>\r\n </form>\r\n <div class=\"form-group row no-gutters align-items-center\">\r\n <label for=\"name\" class=\"col-sm-3 col-form-label\">昵称</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control form-control-sm\" id=\"name\" v-model=\"roleInfo.name\">\r\n </div>\r\n </div>\r\n <div class=\"form-group row no-gutters align-items-center\">\r\n <label for=\"desc\" class=\"col-sm-3 col-form-label\">简介</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control form-control-sm\" id=\"desc\" v-model=\"roleInfo.desc\">\r\n </div>\r\n </div>\r\n <div class=\"form-group row no-gutters align-items-center\">\r\n <label for=\"greeting\" class=\"col-sm-3 col-form-label\">问候语</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control form-control-sm\" id=\"greeting\" v-model=\"roleInfo.greeting\">\r\n </div>\r\n </div>\r\n <div class=\"form-group row no-gutters align-items-center\">\r\n <label for=\"rolePrompt\" class=\"col-sm-3 col-form-label\">角色指令</label>\r\n <div class=\"col-sm-9\">\r\n <textarea class=\"form-control form-control-sm\" rows=\"3\" id=\"rolePrompt\" v-model=\"roleInfo.rolePrompt\"></textarea>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-center mt-4\">\r\n <div>\r\n <button type=\"submit\" class=\"btn btn-secondary\" @click=\"hideAll\">取消</button>\r\n <button type=\"submit\" class=\"btn btn-primary ms-2\" @click=\"saveRole()\">保存</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- 菜单的iframe -->\r\n <template v-for=\"(menu, key) in setting.menus\">\r\n <template v-if=\"menu.keep\">\r\n <div class=\"page-box w-100 h-100\" v-show=\"module===key\">\r\n <iframe v-if=\"menu.urlKeep\" class=\"iframe\" :id=\"key\" :src=\"menu.urlKeep\" @load=\"handleIframeLoaded(key)\" style=\"display:none\"></iframe>\r\n </div>\r\n </template>\r\n <template v-else>\r\n <div class=\"page-box w-100 h-100\" v-if=\"module===key\">\r\n <iframe class=\"iframe\" :id=\"key\" :src=\"menu.url\" @load=\"setIframeTheme(key)\" style=\"display:none\"></iframe>\r\n </div>\r\n </template>\r\n </template>\r\n\r\n <!-- 关于 -->\r\n <div class=\"border shadow-sm card p-0 overflow-hidden center-div\" style=\"max-width:360px;z-index: 10001\" v-show=\"box.showAiInfo\" @click.stop>\r\n <img src=\"https://www.workerman.net/upload/img/20240416/16661e848c8371.png\">\r\n <div class=\"card-body\">\r\n <h5 class=\"card-title\">熊猫自考-AI助手</h5>\r\n <p class=\"card-text\">熊猫自考AI助手主要提供学习,生活以及工作上提供解答和便利!</p>\r\n <p class=\"card-text text-secondary\">版本 5.3.5</p>\r\n <a v-show=\"showBuyLink\" href=\"https://www.workerman.net/app/view/ai\" class=\"btn btn-primary btn-sm\" target=\"_blank\">了解更多</a>\r\n </div>\r\n </div>\r\n\r\n <!-- 系统菜单 -->\r\n <div class=\"more-box shadow-sm border-top rounded\" style=\"z-index:10000\" @click.stop v-show=\"box.showMore\" :class=\"{'slide-up':box.showMore}\">\r\n <a class=\"dropdown-item py-2 px-4 cursor-pointer\" @click=\"showPanel('AiInfo')\">关于AI</a>\r\n <a class=\"dropdown-item py-2 px-4 cursor-pointer\" @click=\"resetSystem\">重置系统</a>\r\n <a class=\"dropdown-item py-2 px-4 cursor-pointer\" @click=\"switchModule('me')\" v-show=\"!loginUser.nickname\">登录</a>\r\n <a class=\"dropdown-item py-2 px-4 cursor-pointer\" @click=\"logout\" v-show=\"loginUser.nickname\">退出</a>\r\n </div>\r\n\r\n <!-- 图片预览 -->\r\n <div class=\"overlay img-preview\" ref=\"image-preview-box\" style=\"display:none;position:fixed\">\r\n <span class=\"close\">×</span>\r\n <img alt=\"展示图片\" ref=\"image-preview\">\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <audio id=\"chat-message-audio\">\r\n <source id=\"chat-message-audio-source\" src=\"\" type=\"audio/mpeg\" />\r\n </audio>\r\n\r\n <!-- 在线统计代码 -->\r\n <script src=\"/app/ai/js/push.js\"></script>\r\n\r\n <!-- 代码高亮 -->\r\n <script src=\"/app/ai/js/highlight.min.js\"></script>\r\n\r\n <!-- markdown -->\r\n <script src=\"/app/ai/js/markdown-it.min.js\"></script>\r\n\r\n <!-- 数学公式 -->\r\n <link rel=\"stylesheet\" href=\"/app/ai/css/katex.min.css\">\r\n <script src=\"/app/ai/js/katex.min.js\"></script>\r\n <script src=\"/app/ai/js/texmath.js\"></script>\r\n\r\n <!-- webman ai 主应用-->\r\n <script type=\"text/javascript\" src=\"/app/ai/js/vue.global.js\"></script>\r\n <script type=\"module\" src=\"/app/ai/js/app.js?v=1725416964\"></script>\r\n\r\n <!-- 五彩纸屑效果 -->\r\n <script src=\"/app/ai/js/confetti.browser.min.js\"></script>\r\n\r\n <!-- js调试 -->\r\n \r\n\r\n <script src=\"/app/ai/js/xunfei/lib/index.umd.js\"></script>\r\n\r\n <!-- 图标库 -->\r\n <link rel=\"stylesheet\" href=\"/app/ai/css/bootstrap-icons.min.css\">\r\n\r\n <script src=\"/app/user/js/webman.js\" async></script>\r\n\r\n <script>\r\n $(document).click(function () {\r\n ai.hideAll();\r\n });\r\n\r\n $(function () {\r\n function __() {\r\n const b = document.getElementById(\"chat-message-audio\");\r\n const p = b.play();\r\n p && p.then(function(){}).catch(function(e){});\r\n $(document).unbind(\"click\", __);\r\n }\r\n $(document).on(\"click\", __);\r\n });\r\n\r\n var _hmt = _hmt || [];\r\n (function() {\r\n var hm = document.createElement(\"script\");\r\n var t = /bla\\.cn|workerman\\.net/.test(window.location.hostname)?\"6dcab9d5b81bdc85575378d1f140efa4\":\"979554dcc93d8d2f549795a47af1abe7\";\r\n hm.src = \"https://hm.baidu.com/hm.js?\"+t;\r\n var s = document.getElementsByTagName(\"script\")[0];\r\n s.parentNode.insertBefore(hm, s);\r\n })();\r\n </script>\r\n\r\n\r\n</body>\r\n</html>\r\n",
"body_murmur": -1852189728,
"body_sha256": "d7e1a2ead66b700d45f66f49394813e42b0b4fd14568f99ac10712cfb486a4ca",
"component": [
"Nginx",
"Bootstrap"
],
"content_length": -1,
"favicon": {
"md5_hash": "b3e9e98252682d0a0c52990b3e5e2367",
"murmur_hash": 797260298,
"path": "https://182.92.215.19:443/favicon.ico",
"size": 270398
},
"headers": {
"access_control_allow_origin": [
"*"
],
"connection": [
"keep-alive"
],
"content_type": [
"text/html;charset=utf-8"
],
"date": [
"Mon, 17 Nov 2025 16:27:08 GMT"
],
"server": [
"nginx"
],
"set_cookie": [
"PHPSID=1cb41c37d346da4129af755da3568151; Max-Age=31536000; Path=/; HttpOnly"
],
"unknown": [
{
"key": "access_control_allow_credentials",
"value": [
"true"
]
},
{
"key": "access_control_allow_methods",
"value": [
"*"
]
},
{
"key": "access_control_allow_headers",
"value": [
"*"
]
}
],
"vary": [
"Accept-Encoding"
]
},
"protocol": "HTTP/1.1",
"request": {
"headers": {
"accept": [
"*/*"
],
"user_agent": [
"Mozilla/5.0 (compatible; Odin; https://docs.getodin.com/)"
]
},
"method": "GET",
"url": {
"host": "182.92.215.19",
"path": "",
"scheme": "https"
}
},
"status_code": 200,
"title": "熊猫自考-AI助手",
"transfer_encoding": [
"chunked"
]
}| Product | MySQL |
| Version | N/A |
| Extra Info | unauthorized |