diff --git a/KV.json b/KV.json new file mode 100644 index 0000000..5c986c3 --- /dev/null +++ b/KV.json @@ -0,0 +1,1772 @@ +{ + "categories": [ + { + "name": "常用和搜索AI", + "sites": [ + { + "name": "百度", + "url": "https://www.baidu.com/", + "icon": "jam:baidu" + }, + { + "name": "谷歌搜索", + "url": "https://www.google.com/", + "icon": "logos:google-icon", + "info": "" + }, + { + "name": "必应搜索", + "url": "https://www.bing.com", + "icon": "logos:microsoft-edge", + "info": "" + }, + { + "name": "chatgpt", + "url": "https://chatgpt.com/", + "icon": "logos:openai-icon" + }, + { + "name": "deepseek", + "url": "https://chat.deepseek.com", + "icon": "logos:disqus", + "info": "" + }, + { + "name": "xAi", + "url": "https://grok.com/chat", + "icon": "logos:x", + "info": "马斯卡的AI" + }, + { + "name": "gemini", + "url": "https://gemini.google.com", + "icon": "logos:google-gemini", + "info": "" + }, + { + "name": "kimiAI", + "url": "https://www.kimi.com/chat/d3oaq1tnfo2um1vac0i0", + "icon": "skill-icons:gherkin-light", + "info": "" + }, + { + "name": "阿里通义千问", + "url": "https://www.tongyi.com", + "icon": "logos:itsalive-icon", + "info": "" + }, + { + "name": "豆包", + "url": "https://www.doubao.com/chat/?channel=dkR31", + "icon": "skill-icons:bun-light", + "info": "" + }, + { + "name": "cloudflare", + "url": "https://dash.cloudflare.com/", + "icon": "devicon:cloudflare" + }, + { + "name": "HWTrilium", + "url": "https://trilium.987991.xyz", + "icon": "logos:notion-icon" + }, + { + "name": "githubAI", + "url": "https://github.com/marketplace", + "icon": "logos:github-icon" + }, + { + "name": "nasTrilium", + "url": "https://trilium.9872991.xyz", + "icon": "noto:christmas-tree" + }, + { + "name": "阿里邮箱", + "url": "https://qiye.aliyun.com/", + "icon": "logos:maildeveloper" + }, + { + "name": "备份CF导航", + "url": "https://dispark.xx.kg/", + "icon": "logos:wmr", + "info": "备份测试站\niCloud的CF站点" + }, + { + "name": "cf导航1", + "url": "https://www.wwwzls.dpdns.org/login", + "icon": "oui:nav-overview", + "info": "" + }, + { + "name": "cf导航2", + "url": "https://www.wwwzls.eu.org/login", + "icon": "oui:nav-ui", + "info": "" + }, + { + "name": "cf导航3", + "url": "https://www.wwwzls.pp.ua/login", + "icon": "oui:nav-dashboards", + "info": "" + } + ], + "collapsed": false + }, + { + "name": "CF自建站点", + "sites": [ + { + "name": "NAS导航", + "url": "https://w3.9872991.xyz/", + "icon": "skill-icons:neovim-dark" + }, + { + "name": "备份导航", + "url": "https://w3.9912987.xyz/", + "icon": "skill-icons:dynamodb-dark" + }, + { + "name": "记账本", + "url": "https://w8.9872991.xyz", + "icon": "cryptocurrency-color:bch" + }, + { + "name": "istoreos", + "url": "https://istore.9872991.xyz/cgi-bin/luci/", + "icon": "logos:appwrite-icon" + }, + { + "name": "群晖DSM", + "url": "https://9872991.xyz:2096/", + "icon": "arcticons:synology-assistant" + }, + { + "name": "NASTool", + "url": "https://tool.9872991.xyz/", + "icon": "cbi:nas-v2" + }, + { + "name": "mpTrilium", + "url": "https://wwwzls.com.mp/", + "icon": "logos:notion-icon", + "info": "" + }, + { + "name": "我的微博", + "url": "https://WEIBO.9872991.xyz", + "icon": "fontisto:sina-weibo" + }, + { + "name": "我的云盘", + "url": "https://yun.9872991.xyz/", + "icon": "logos:google-drive" + }, + { + "name": "我的音乐", + "url": "https://yinyue.9872991.xyz/", + "icon": "emojione-v1:musical-notes" + }, + { + "name": "我的jellyfin", + "url": "https://jellyfin.9872991.xyz/", + "icon": "openmoji:jellyfin" + }, + { + "name": "我的emby", + "url": "https://emby.9872991.xyz/web/index.html", + "icon": "mdi:emby" + }, + { + "name": "Alist", + "url": "https://alist.9872991.xyz", + "icon": "arcticons:seek-by-inaturalist" + }, + { + "name": "我的Mail", + "url": "https://mail.9872991.xyz/", + "icon": "noto-v1:e-mail" + }, + { + "name": "我的Chat", + "url": "https://chat.9872991.xyz/", + "icon": "token-branded:chat" + }, + { + "name": "图书馆", + "url": "https://book.9872991.xyz/", + "icon": "twemoji:books" + }, + { + "name": "我的阅读", + "url": "https://reader.9872991.xyz/", + "icon": "la:book-reader" + }, + { + "name": "qBittorrent", + "url": "https://qb.9872991.xyz", + "icon": "simple-icons:qbittorrent" + }, + { + "name": "Transmission", + "url": "https://tran.9872991.xyz/", + "icon": "cbi:transmission-bt" + }, + { + "name": "便签本", + "url": "https://note.9872991.xyz/", + "icon": "emojione-v1:note-pad" + }, + { + "name": "密码本", + "url": "https://bwd.9872991.xyz", + "icon": "simple-icons:bitwarden" + }, + { + "name": "我的照片", + "url": "https://photo.9872991.xyz/", + "icon": "flat-color-icons:stack-of-photos" + }, + { + "name": "联系人", + "url": "https://contacts.9872991.xyz/", + "icon": "typcn:contacts" + }, + { + "name": "日历", + "url": "https://rl.9872991.xyz/", + "icon": "token-branded:time" + }, + { + "name": "tvbox", + "url": "https://tvbox.9872991.xyz/", + "icon": "tabler:device-tv-old" + }, + { + "name": "tv直播源", + "url": "http://tv.987991.xyz", + "icon": "tabler:device-tv" + }, + { + "name": "ITtool", + "url": "https://its.9872991.xyz/", + "icon": "token-branded:bit" + }, + { + "name": "Home Assistant", + "url": "https://home.9872991.xyz/", + "icon": "tabler:home-link" + }, + { + "name": "firefoxTab", + "url": "https://huohu.9872991.xyz/", + "icon": "logos:firefox" + }, + { + "name": "OneAPI", + "url": "https://1api.9872991.xyz/", + "icon": "logos:apidog" + }, + { + "name": "自建openai", + "url": "https://openai.9872991.xyz/", + "icon": "logos:openai" + }, + { + "name": "小雅", + "url": "https://xiaoya.9872991.xyz/", + "icon": "material-symbols:cloud-sync-rounded" + }, + { + "name": "博客", + "url": "https://wwwzlscn.eu.org/", + "icon": "dashicons:wordpress-alt" + }, + { + "name": "测试博客", + "url": "http://wwwzls.endl.site/wp-admin/", + "icon": "logos:wordpress-icon", + "info": "" + }, + { + "name": "webdav", + "url": "https://webdav.9872991.xyz/webdav", + "icon": "token-branded:dweb", + "info": "" + }, + { + "name": "dsmTV", + "url": "https://litv.9872991.xyz/", + "icon": "logos:eclipse-icon", + "info": "" + }, + { + "name": "华为ip", + "url": "https://113.44.203.109:6001/", + "icon": "logos:launchrock", + "info": "" + }, + { + "name": "FnOS", + "url": "https://5ddd.com/wwwzls", + "icon": "logos:inferno", + "info": "" + }, + { + "name": "fnOllama", + "url": "https://fnai.987991.xyz/", + "icon": "logos:anthropic-icon", + "info": "" + }, + { + "name": "fnBitManget", + "url": "http://192.168.3.110:33000/", + "icon": "bitcoin-icons:bitcoin-circle-filled", + "info": "搜索下载资源链接" + }, + { + "name": "fn音乐", + "url": "https://fnyy.987991.xyz/", + "icon": "logos:tiktok-icon", + "info": "" + }, + { + "name": "fn影视", + "url": "https://fn.987991.xyz/v", + "icon": "logos:netflix-icon", + "info": "" + }, + { + "name": "fn面板", + "url": "https://fnkb.987991.xyz/1panel/", + "icon": "logos:sinatra", + "info": "" + }, + { + "name": "fnTV", + "url": "https://fntv.987991.xyz/", + "icon": "logos:eclipse-icon", + "info": "" + }, + { + "name": "fn导航", + "url": "https://fndh.987991.xyz/", + "icon": "logos:internetexplorer", + "info": "" + }, + { + "name": "fn下载", + "url": "https://fnqb.987991.xyz/", + "icon": "logos:dropmark", + "info": "" + }, + { + "name": "fn照片", + "url": "https://fn.987991.xyz/p", + "icon": "logos:adobe-photoshop", + "info": "" + }, + { + "name": "cf音乐", + "url": "https://music.9872991.xyz/", + "icon": "emojione-v1:musical-notes", + "info": "线上音乐" + }, + { + "name": "cfLibreTV", + "url": "https://lv.9872991.xyz/", + "icon": "logos:eclipse-icon", + "info": "" + }, + { + "name": "cf汇总节点", + "url": "https://subs.9872991.xyz/cmxui", + "icon": "logos:react-styleguidist", + "info": "汇总节点" + }, + { + "name": "fn公共节点", + "url": "https://pbulish.wwwzls.dpdns.org/admin", + "icon": "logos:react", + "info": "筛选有用节点" + }, + { + "name": "dsmiStoreOS", + "url": "https://vpn.9872991.xyz/cgi-bin/luci/", + "icon": "streamline-ultimate-color:ethernet-port", + "info": "" + }, + { + "name": "fnomnibox", + "url": "https://fntv.9872991.xyz/", + "icon": "streamline-ultimate-color:modern-tv-4k", + "info": "" + }, + { + "name": "fnchat", + "url": "https://fnchat.9872991.xyz/#/", + "icon": "streamline-ultimate-color:phone-type", + "info": "" + }, + { + "name": "fnNavidrome ", + "url": "https://fnyy.9872991.xyz/", + "icon": "streamline-ultimate-color:playlist-download", + "info": "" + } + ], + "collapsed": false + }, + { + "name": "资源站", + "sites": [ + { + "name": "图标", + "url": "https://icon-sets.iconify.design/", + "icon": "material-symbols:add-home-outline" + }, + { + "name": "Github", + "url": "https://github.com/", + "icon": "mdi:github" + }, + { + "name": "Gitlab", + "url": "https://gitlab.com/", + "icon": "skill-icons:gitlab-light" + }, + { + "name": "Replit", + "url": "https://replit.com/@593014031/WARP-Wireguard-Register", + "icon": "logos:replit" + }, + { + "name": "菜鸟教程", + "url": "https://www.runoob.com/", + "icon": "vscode-icons:file-type-htmlhint" + }, + { + "name": "百度脑图", + "url": "https://naotu.baidu.com/home", + "icon": "jam:baidu-square" + }, + { + "name": "tampermonkey", + "url": "https://www.tampermonkey.net/scripts.php", + "icon": "icon-park-outline:monkey" + }, + { + "name": "istoreOS软件", + "url": "https://github.com/AUK9527/Are-u-ok/tree/main/x86", + "icon": "material-symbols:vpn-key-rounded" + }, + { + "name": "pixabay图片", + "url": "https://pixabay.com/", + "icon": "simple-line-icons:camera" + }, + { + "name": "小雅", + "url": "http://alist.xiaoya.pro/", + "icon": "material-symbols:cloud-sync-rounded" + }, + { + "name": "体重管理", + "url": "https://www.bmi.com.cn/", + "icon": "fluent-color:person-heart-20" + }, + { + "name": "manusAI", + "url": "https://manus.im/app", + "icon": "logos:adobe-illustrator", + "info": "" + }, + { + "name": "DSM套件源", + "url": "https://imnks.com", + "icon": "logos:aws-cloudsearch" + }, + { + "name": "百度云", + "url": "https://cloud.baidu.com/", + "icon": "logos:balena" + }, + { + "name": "图标转换", + "url": "https://favicon.io/favicon-converter/", + "icon": "logos:flattr" + }, + { + "name": "ollama", + "url": "https://ollama.com/", + "icon": "logos:opencollective" + }, + { + "name": "istoreos", + "url": "https://site.istoreos.com/", + "icon": "logos:mist" + }, + { + "name": "飞牛", + "url": "https://www.fnnas.com/", + "icon": "logos:inferno" + }, + { + "name": "端口检测", + "url": "https://tool.chinaz.com/port", + "icon": "logos:aws-iam", + "info": "" + }, + { + "name": "leetcode", + "url": "https://leetcode.cn/", + "icon": "logos:aws-kms", + "info": "IT面试题库" + }, + { + "name": "IT工具包", + "url": "https://www.jyshare.com/", + "icon": "logos:aws-codebuild", + "info": "" + }, + { + "name": "manusAI", + "url": "https://manus.im/app", + "icon": "logos:adobe-illustrator", + "info": "" + }, + { + "name": "WPS编程", + "url": "https://open.wps.cn/previous/docs/client/wpsLoad", + "icon": "logos:microsoft-power-bi", + "info": "" + }, + { + "name": "claude主页", + "url": "https://www.anthropic.com/", + "icon": "streamline-ultimate-color:single-neutral-circle", + "info": "" + }, + { + "name": "claudeAI", + "url": "https://claude.ai", + "icon": "streamline-ultimate-color:single-woman", + "info": "" + }, + { + "name": "pip包", + "url": "https://pypi.org/", + "icon": "streamline-ultimate-color:arrow-rectangle-down-2", + "info": "python的模块包" + }, + { + "name": "istoreos包", + "url": "https://www.vumstar.com/9730/", + "icon": "streamline-ultimate-color:ab-testing-monitors", + "info": "路由软件包" + }, + { + "name": "临时邮箱", + "url": "https://www.mffac.com/moe", + "icon": "streamline-ultimate-color:delivery-drone", + "info": "wwwzls+mffac" + }, + { + "name": "ipv6arpa域名", + "url": "https://tunnelbroker.net/", + "icon": "streamline-ultimate-color:file-code-check", + "info": "免费域名ipv6Arpa" + }, + { + "name": "ip身份生产器", + "url": "https://ip-geoaddress-generator.pages.dev/", + "icon": "streamline-ultimate-color:file-code-edit", + "info": "" + }, + { + "name": "ip身份生产器", + "url": "https://ip-geoaddress-generator.pages.dev/", + "icon": "streamline-ultimate-color:file-code-1", + "info": "" + }, + { + "name": "ipv6arpa域名生产器", + "url": "https://ipv6.jiemi360.workers.dev/", + "icon": "streamline-ultimate-color:file-code-warning", + "info": "" + }, + { + "name": "docker官网", + "url": "https://hub.docker.com/", + "icon": "streamline-ultimate-color:laptop-download", + "info": "" + }, + { + "name": "地址生成", + "url": "https://www.meiguodizhi.com/", + "icon": "material-symbols:add-home", + "info": "" + }, + { + "name": "测速ustc", + "url": "https://test.ustc.edu.cn/", + "icon": "streamline-ultimate-color:cellular-network-lte", + "info": "" + }, + { + "name": "itdog全国测速域名", + "url": "https://www.itdog.cn/ping", + "icon": "streamline-ultimate-color:car-dashboard-speed", + "info": "" + }, + { + "name": "voce.chat", + "url": "https://doc.voce.chat/zh-cn/", + "icon": "streamline-ultimate-color:wechat-logo", + "info": "" + }, + { + "name": "voce.chat", + "url": "https://doc.voce.chat/zh-cn/", + "icon": "streamline-ultimate-color:messages-logo", + "info": "" + }, + { + "name": "声网", + "url": "https://console.shengwang.cn", + "icon": "streamline-ultimate-color:walkman-headphones", + "info": "7 w@g S" + }, + { + "name": "gitee类似github", + "url": "https://gitee.com", + "icon": "mdi:github", + "info": "5@q G" + }, + { + "name": "FRP官网", + "url": "https://gofrp.org/zh-cn/", + "icon": "flat-color-icons:link", + "info": "" + }, + { + "name": "群晖官网", + "url": "https://www.synology.cn/zh-cn/support/download/DS918+?version=7.3#androids", + "icon": "noto:fire", + "info": "" + } + ], + "collapsed": false + }, + { + "name": "VPS服务器", + "sites": [ + { + "name": "甲骨文", + "url": "https://cloud.oracle.com/?tenant=wwwzhanglush", + "icon": "cib:oracle-netsuite", + "info": "最慷慨的免费VPS" + }, + { + "name": "谷歌云", + "url": "https://console.cloud.google.com/compute/instances?invt=AbtSow&project=omega-rhino-380104", + "icon": "logos:google-cloud", + "info": "不让搭代理" + }, + { + "name": "Cloudflare", + "url": "https://dash.cloudflare.com/", + "icon": "devicon:cloudflare", + "info": "免费DNS和各种服务" + }, + { + "name": "华为云", + "url": "https://console.huaweicloud.com/console/?agencyId=31d05f6274b149d7a45c0469801fe1a2®ion=cn-north-4&locale=zh-cn#/home", + "icon": "logos:weebly" + }, + { + "name": "Cloudns", + "url": "https://www.cloudns.net/records/domain/6431435/", + "icon": "iconoir:dns", + "info": "赠送一个免费域名" + }, + { + "name": "HostryDNS", + "url": "https://hostry.com/", + "icon": "eos-icons:dns", + "info": "不记名DNS解析" + }, + { + "name": "阿里云", + "url": "https://dc.console.aliyun.com/next/index?spm=5176.12818093_47.console-base.ddomain.208216d0hancHs#/domain-list/all", + "icon": "ant-design:alibaba-outlined", + "info": "国内域名购买便宜" + }, + { + "name": "freedns", + "url": "https://freedns.afraid.org/", + "icon": "eos-icons:config-map" + }, + { + "name": "COMMP", + "url": "https://www.registry.com.mp/dashboard/domains?page=1&page_size=10&search=&sort=created_at&order=ASC", + "icon": "gridicons:domains", + "info": "免费域名,现在不能用了" + }, + { + "name": "ppua nic.ua", + "url": "https://nic.ua/", + "icon": "material-symbols:domain", + "info": "免费域名申请pp.ua" + }, + { + "name": "nicEuorg", + "url": "https://nic.eu.org/", + "icon": "material-symbols-light:domain", + "info": "免费域名eu.org" + }, + { + "name": "dpdns.org uskg", + "url": "https://dash.domain.digitalplat.org/panel/main?page=%2Fpanel%2Fdomains", + "icon": "eos-icons:cluster-role-binding", + "info": "免费域名us.kg" + }, + { + "name": "Godaddy", + "url": "https://www.godaddy.com/zh-sg", + "icon": "simple-icons:godaddy", + "info": "海外域名购买" + }, + { + "name": "Spaceship", + "url": "https://www.spaceship.com/", + "icon": "simple-icons:spaceship", + "info": "海外域名购买" + }, + { + "name": "飞牛", + "url": "https://www.fnnas.com/", + "icon": "logos:inferno", + "info": "" + }, + { + "name": "WordPress", + "url": "https://wordpress.org/", + "icon": "dashicons:wordpress" + }, + { + "name": "theendlessweb", + "url": "https://portal.theendlessweb.com/client/", + "icon": "material-symbols:weather-snowy-outline" + }, + { + "name": "telw管理", + "url": "https://da.theendlessweb.com:2222/evo/user/dns", + "icon": "material-symbols:weather-snowy" + }, + { + "name": "宝塔面板", + "url": "https://www.bt.cn/new/index.html", + "icon": "logos:loopback-icon" + }, + { + "name": "1panel", + "url": "https://1panel.cn/", + "icon": "logos:100tb" + }, + { + "name": "谷歌idx", + "url": "https://idx.google.com/", + "icon": "logos:google-cloud" + }, + { + "name": "Serv00", + "url": "https://www.serv00.com/", + "icon": "bi:server", + "info": "20250501不让搭建代理被封了" + }, + { + "name": "GVoice", + "url": "https://voice.google.com/u/0/messages", + "icon": "logos:skype", + "info": "20250701没有美国本地手机给封了" + }, + { + "name": "hiddify", + "url": "http://hiddify.com/", + "icon": "logos:hashicorp-icon", + "info": "VPN软件" + }, + { + "name": "OracleARM2BT", + "url": "https://bt2.zls.cloudns.ch:911/faab5371", + "icon": "simple-icons:oracle", + "info": "2ARM" + }, + { + "name": "OracleAmd2BT", + "url": "https://amd2.zls.cloudns.ch:12849/ebaaecec ", + "icon": "logos:workboard" + }, + { + "name": "amdXui1", + "url": "https://xui.wwwzls.eu.org:51234/xui/xui/", + "icon": "logos:box", + "info": "" + }, + { + "name": "AMDXUI2", + "url": "https://amd.wwwzls.pp.ua:911/463/", + "icon": "logos:xtend" + }, + { + "name": "orlARM01panel", + "url": "http://168.138.180.12:29108/13ff2d27e2", + "icon": "logos:100tb", + "info": "甲骨文ARM01服务器上面的1panel面板" + }, + { + "name": "ORARM01trilium", + "url": "https://dispark.qzz.io/", + "icon": "streamline-ultimate-color:notes-book", + "info": "服务器版本" + }, + { + "name": "OraAMD1Panel", + "url": "https://amd1.9912987.xyz:27603/638cb738b4", + "icon": "logos:100tb", + "info": "甲骨文20251001申请的免费电脑芯片主机\nhttps://1panel.wwwzls.netlib.re:27603/638cb738b4\nhttp://138.2.64.140:27603/638cb738b4" + }, + { + "name": "OracleAmd1Frps", + "url": "http://138.2.64.140:57500/static/#/", + "icon": "streamline-ultimate-color:human-resources-workflow", + "info": "服务端口 37000" + }, + { + "name": "谷歌1Panel", + "url": "https://1panel.dispark.xx.kg:22769/a56618cca8", + "icon": "streamline-ultimate-color:human-resources-hierarchy-1", + "info": "http://136.118.10.92:22769/a56618cca8" + }, + { + "name": "CF代理", + "url": "https://npv.dispark.qzz.io/ADMIN", + "icon": "streamline-ultimate-color:github-logo-1", + "info": "太费了流量了https://npv.dispark.qzz.io/sub?token=442474209c236f4e23c7821736fe7fa0" + }, + { + "name": "CFvpnGithub", + "url": "https://gitnpv.dispark.qzz.io/admin", + "icon": "flat-color-icons:radar-plot", + "info": "使用github搭建" + } + ], + "collapsed": false + }, + { + "name": "本地站点", + "sites": [ + { + "name": "记账本", + "url": "http://192.168.1.110:58882", + "icon": "skill-icons:notion-light" + }, + { + "name": "istoreos", + "url": "http://192.168.3.250/", + "icon": "logos:appwrite-icon" + }, + { + "name": "DSM", + "url": "http://192.168.1.110:52000/", + "icon": "arcticons:synology-assistant" + }, + { + "name": "Nastool", + "url": "http://192.168.1.110:13000", + "icon": "cbi:nas-v2" + }, + { + "name": "NAS Trilium", + "url": "http://192.168.1.110:52808/", + "icon": "logos:notion-icon", + "info": "" + }, + { + "name": "我的微博", + "url": "http://192.168.1.2:5230", + "icon": "fontisto:sina-weibo" + }, + { + "name": "我的云盘", + "url": "https://192.168.1.110:51003", + "icon": "logos:google-drive" + }, + { + "name": "我的音乐", + "url": "http://192.168.1.110:58800", + "icon": "emojione-v1:musical-notes" + }, + { + "name": "我的jellyfin", + "url": "http://192.168.1.110:58096/", + "icon": "openmoji:jellyfin" + }, + { + "name": "我的emby", + "url": "http://192.168.3.110:8096", + "icon": "mdi:emby", + "info": "" + }, + { + "name": "Alist", + "url": "http://192.168.1.110:5244", + "icon": "arcticons:seek-by-inaturalist" + }, + { + "name": "我的Mail", + "url": "https://192.168.1.110:51681", + "icon": "noto-v1:e-mail" + }, + { + "name": "我的Chat", + "url": "https://192.168.1.110:521/", + "icon": "token-branded:chat" + }, + { + "name": "图书馆", + "url": "https://192.168.1.110:58084/", + "icon": "twemoji:books" + }, + { + "name": "我的阅读", + "url": "http://192.168.1.2:9060", + "icon": "la:book-reader" + }, + { + "name": "qBittorrent", + "url": "http://192.168.1.110:8085/", + "icon": "simple-icons:qbittorrent" + }, + { + "name": "Transmission", + "url": "http://192.168.1.110:9091/transmission/web/", + "icon": "cbi:transmission-bt" + }, + { + "name": "便签本", + "url": "https://192.168.1.110:59351/", + "icon": "emojione-v1:note-pad" + }, + { + "name": "密码本", + "url": "https://192.168.1.110:53081/", + "icon": "simple-icons:bitwarden" + }, + { + "name": "本地导航", + "url": "http://192.168.1.2:3002", + "icon": "logos:angellist" + }, + { + "name": "照片", + "url": "http://192.168.1.110:52080", + "icon": "flat-color-icons:stack-of-photos" + }, + { + "name": "联系人", + "url": "http://192.168.1.110:52555/", + "icon": "typcn:contacts" + }, + { + "name": "日历", + "url": "http://192.168.1.110:20002/", + "icon": "token-branded:time" + }, + { + "name": "tvbox", + "url": "http://192.168.1.2:4567/", + "icon": "tabler:device-tv-old" + }, + { + "name": "tv直播源", + "url": "http://192.168.1.2:35455/tv.m3u", + "icon": "tabler:device-tv" + }, + { + "name": "Home Assistant", + "url": "http://192.168.3.110:8123", + "icon": "tabler:home-link" + }, + { + "name": "firefoxTab", + "url": "http://192.168.1.2:5800/", + "icon": "logos:firefox" + }, + { + "name": "OneAPI", + "url": "http://192.168.1.2:3005", + "icon": "logos:apidog" + }, + { + "name": "自建openai", + "url": "http://192.168.1.2:3000", + "icon": "logos:openai" + }, + { + "name": "小雅", + "url": "http://192.168.1.110:5678/", + "icon": "material-symbols:cloud-sync-rounded" + }, + { + "name": "PT管理", + "url": "http://192.168.1.110:1919/", + "icon": "logos:typescript-icon-round" + }, + { + "name": "签到", + "url": "http://192.168.1.110:57878/my/", + "icon": "logos:qdrant-icon" + }, + { + "name": "dsmTV", + "url": "http://192.168.1.110:59988/", + "icon": "logos:youtube-icon", + "info": "" + }, + { + "name": "群晖自动搜索", + "url": "https://finds.synology.com/", + "icon": "streamline-ultimate-color:data-file-search", + "info": "当群晖掉线后IP找不到的时候用于测试" + }, + { + "name": "fn公共节点", + "url": "http://192.168.3.110:8199/admin", + "icon": "logos:jwt-icon", + "info": "" + }, + { + "name": "fnos导航", + "url": "http://192.168.3.110:13002/", + "icon": "logos:internetexplorer", + "info": "" + }, + { + "name": "FnOS", + "url": "httpS://192.168.3.110:5667/", + "icon": "logos:inferno", + "info": "https://192.168.1.2:5667/" + }, + { + "name": "Navidrome音乐", + "url": "http://192.168.3.110:4533/app/#/album/all?sort=name&order=ASC&filter={}", + "icon": "logos:tiktok-icon", + "info": "" + }, + { + "name": "fn影视", + "url": "https://192.168.3.110:5667/v", + "icon": "logos:netflix-icon", + "info": "" + }, + { + "name": "fn照片", + "url": "https://192.168.3.110:5667/p", + "icon": "logos:adobe-photoshop", + "info": "" + }, + { + "name": "fn下载", + "url": "http://192.168.3.110:8085/", + "icon": "logos:dropmark", + "info": "" + }, + { + "name": "fn家居", + "url": "http://192.168.3.110:8123/lovelace/0", + "icon": "logos:datadog-icon", + "info": "" + }, + { + "name": "fn导航", + "url": "http://192.168.3.110:13002/", + "icon": "logos:internetexplorer", + "info": "" + }, + { + "name": "fnTV", + "url": "http://192.168.3.110:8899/", + "icon": "logos:youtube-icon", + "info": "" + }, + { + "name": "fnDDNSGO", + "url": "http://192.168.3.110:9876/", + "icon": "logos:react", + "info": "" + }, + { + "name": "fn看板", + "url": "http://192.168.3.110:18090/", + "icon": "logos:sinatra", + "info": "" + }, + { + "name": "fn青龙", + "url": "http://192.168.3.110:15700/crontab", + "icon": "logos:apache-camel", + "info": "" + }, + { + "name": "fnOllama", + "url": "http://192.168.3.110:11436/", + "icon": "logos:openai-icon", + "info": "" + }, + { + "name": "dsmLive", + "url": "http://192.168.1.110:59988/", + "icon": "logos:youtube-icon", + "info": "" + }, + { + "name": "fnTrilium", + "url": "http://192.168.3.110:38080/", + "icon": "logos:notion-icon", + "info": "" + }, + { + "name": "fnasTool", + "url": "http://192.168.3.110:53000/web#mediaserver", + "icon": "logos:yeoman", + "info": "" + }, + { + "name": "fnBitManget", + "url": "http://192.168.3.110:33000/", + "icon": "logos:bitnami", + "info": "下载资源" + }, + { + "name": "fnosOllama", + "url": "http://192.168.3.110:11434/", + "icon": "logos:opencollective", + "info": "" + }, + { + "name": "dsmdockerCopilot ", + "url": "http://192.168.1.110:12712/manager#/containers", + "icon": "streamline-ultimate-color:browser-page-layout", + "info": "dsm dockerCopilot 管理" + }, + { + "name": "fnOpenAI", + "url": "http://192.168.3.110:3030/c/6b443c84-1cec-4237-aba5-a08a1daa849b", + "icon": "logos:opencollective", + "info": "本地搭建的openwebui" + }, + { + "name": "SearXNG搜索", + "url": "http://192.168.3.110:3033/search?q=", + "icon": "streamline-ultimate-color:zoom-in-page", + "info": "自定義搜索http://192.168.3.110:3033/search?q=" + }, + { + "name": "fnbookmarks", + "url": "http://192.168.3.110:39090/bookmarks", + "icon": "streamline-ultimate-color:book-book-pages", + "info": "" + }, + { + "name": "fnosfrpc", + "url": "http://192.168.3.110:57500/static/#/", + "icon": "streamline-ultimate-color:modern-tv-remote", + "info": "" + }, + { + "name": "DS MDC-NG", + "url": "http://192.168.1.110:19208/login", + "icon": "streamline-ultimate-color:video-edit-cut", + "info": "" + }, + { + "name": "dsmistreos", + "url": "http://192.168.1.122/cgi-bin/luci", + "icon": "streamline-ultimate-color:database-connect", + "info": "" + }, + { + "name": "fnfellyfin", + "url": "http://192.168.3.110:8097/web/index.html#!/home.html", + "icon": "openmoji:jellyfin", + "info": "" + }, + { + "name": "fnOmniBox", + "url": "http://192.168.1.2:37023/", + "icon": "tabler:device-tv-old", + "info": "" + }, + { + "name": "fnomniboxHost", + "url": "http://192.168.3.200:7023/", + "icon": "streamline-ultimate-color:video-file-star", + "info": "直接使用本地网络" + }, + { + "name": "fnchat", + "url": "http://192.168.3.110:3009/#/chat/channel/1", + "icon": "token-branded:chat", + "info": "" + }, + { + "name": "音乐剥削Music Tag Web", + "url": "http://192.168.3.110:38002/#/", + "icon": "streamline-ultimate-color:voice-id-approved", + "info": "" + }, + { + "name": "FN音乐Navidrome ", + "url": "http://192.168.3.110:34533/app/#/album/recentlyAdded?sort=recently_added&order=DESC&filter={}", + "icon": "emojione-v1:musical-notes", + "info": "" + } + ], + "collapsed": false + }, + { + "name": "FRP网站", + "sites": [ + { + "name": "华为frp", + "url": "http://113.44.203.109:57500", + "icon": "logos:aws-cloudfront" + }, + { + "name": "DSM", + "url": "https://nas.987991.xyz", + "icon": "logos:aws-appsync" + }, + { + "name": "音乐", + "url": "https://nas.987991.xyz/music/", + "icon": "logos:yii" + }, + { + "name": "日历", + "url": "https://nas.987991.xyz/calendar/", + "icon": "logos:google-calendar" + }, + { + "name": "Chat", + "url": "https://nas.987991.xyz/chat/", + "icon": "logos:rocket-chat-icon" + }, + { + "name": "Contacts", + "url": "https://nas.987991.xyz/contacts/", + "icon": "logos:contentful" + }, + { + "name": "smb", + "url": "https://nas.987991.xyz/smb/", + "icon": "logos:smashingmagazine" + }, + { + "name": "mail", + "url": "https://nas.987991.xyz/mail/", + "icon": "logos:google-gmail" + }, + { + "name": "notebook", + "url": "https://nas.987991.xyz/note/", + "icon": "logos:growth-book-icon" + }, + { + "name": "Cloudyun", + "url": "https://nas.987991.xyz/yun/", + "icon": "logos:apache-cloudstack" + }, + { + "name": "photos", + "url": "https://nas.987991.xyz/photo/", + "icon": "logos:google-photos" + }, + { + "name": "video", + "url": "https://nas.987991.xyz/video/", + "icon": "logos:vivaldi-icon" + }, + { + "name": "Nastool", + "url": "https://yinyue.987991.xyz/", + "icon": "logos:nasm" + }, + { + "name": "HWeibo", + "url": "https://weibo.987991.xyz/explore", + "icon": "logos:sinatra" + }, + { + "name": "HW1panel", + "url": "https://hw.987991.xyz/b57d95db04", + "icon": "logos:100tb", + "info": "" + }, + { + "name": "istoreos", + "url": "https://lyq.987991.xyz", + "icon": "logos:mist" + }, + { + "name": "emby", + "url": "https://jf.987991.xyz/", + "icon": "logos:memcached" + }, + { + "name": "fnos", + "url": "https://fn.987991.xyz/", + "icon": "logos:inferno", + "info": "" + }, + { + "name": "fnTrilium", + "url": "https://fnbj.987991.xyz/", + "icon": "logos:notion-icon", + "info": "" + }, + { + "name": "fnastool", + "url": "https://fnpt.987991.xyz/", + "icon": "logos:yeoman", + "info": "" + }, + { + "name": "fnosOllamaFrp", + "url": "http://113.44.203.109:36612/api/chat", + "icon": "logos:opencollective", + "info": "" + }, + { + "name": "fn1panel", + "url": "http://113.44.203.109:36606/1panel", + "icon": "logos:100tb", + "info": "" + }, + { + "name": "fnosOpenweb", + "url": "http://113.44.203.109:36604/", + "icon": "streamline-ultimate-color:android-1", + "info": "fnos搭建的opwenwebui" + }, + { + "name": "fnosSearxng", + "url": "http://113.44.203.109:36614/", + "icon": "streamline-ultimate-color:book-search", + "info": "" + }, + { + "name": "fnosLinkding", + "url": "http://113.44.203.109:36615/bookmarks", + "icon": "streamline-ultimate-color:app-window-text", + "info": "更多书签收藏夹" + }, + { + "name": "O1fnos", + "url": "https://fnos.dispark.us.ci", + "icon": "streamline-ultimate-color:archive-locker", + "info": "" + }, + { + "name": "o1trilium", + "url": "https://trilium.dispark.us.ci ", + "icon": "streamline-ultimate-color:calendar-edit-1", + "info": "" + }, + { + "name": "o1frpc", + "url": "https://frpc.dispark.us.ci", + "icon": "streamline-ultimate-color:movies-sit-drink", + "info": "" + }, + { + "name": "o1frps", + "url": "https://frps.dispark.us.ci", + "icon": "streamline-ultimate-color:team-meeting", + "info": "" + }, + { + "name": "o1fn1panel", + "url": "https://fn1p.dispark.us.ci/1panel", + "icon": "flat-color-icons:linux", + "info": "" + }, + { + "name": "o1fn音乐", + "url": "https://fnyy.dispark.us.ci", + "icon": "flat-color-icons:music", + "info": "" + }, + { + "name": "o1fn影视", + "url": "https://fntv.dispark.us.ci", + "icon": "flat-color-icons:video-projector", + "info": "" + }, + { + "name": "o1fnQQ", + "url": "https://fnchat.dispark.us.ci", + "icon": "flat-color-icons:online-support", + "info": "" + } + ], + "collapsed": false + }, + { + "name": "ipv6网站", + "sites": [ + { + "name": "6DSM", + "url": "https://nas.dispark.top", + "icon": "streamline-ultimate-color:archive-books", + "info": "" + }, + { + "name": "音乐", + "url": "https://nas.dispark.top/music/", + "icon": "logos:yii", + "info": "" + }, + { + "name": "日历", + "url": "https://nas.dispark.top/calendar/", + "icon": "logos:google-calendar", + "info": "" + }, + { + "name": "Chat", + "url": "https://nas.dispark.top/chat/", + "icon": "logos:rocket-chat-icon", + "info": "" + }, + { + "name": "Contacts", + "url": "https://nas.dispark.top/contacts/", + "icon": "logos:contentful", + "info": "" + }, + { + "name": "smb", + "url": "https://nas.dispark.top/smb/", + "icon": "logos:smashingmagazine", + "info": "" + }, + { + "name": "mail", + "url": "https://nas.dispark.top/mail/", + "icon": "logos:google-gmail", + "info": "" + }, + { + "name": "notebook", + "url": "https://nas.dispark.top/note/", + "icon": "logos:growth-book-icon", + "info": "" + }, + { + "name": "Cloudyun", + "url": "https://nas.dispark.top/yun/", + "icon": "logos:apache-cloudstack", + "info": "" + }, + { + "name": "photos", + "url": "https://nas.dispark.top/photo/", + "icon": "logos:google-photos", + "info": "" + }, + { + "name": "video", + "url": "https://nas.dispark.top/video/", + "icon": "logos:vivaldi-icon", + "info": "" + }, + { + "name": "ipv6webdav", + "url": "https://webdav.dispark.top/", + "icon": "streamline-ultimate-color:database-share-1", + "info": "" + }, + { + "name": "fnomnibox", + "url": "https://fntv.dispark.top/", + "icon": "streamline-ultimate-color:movie-cinema-watch", + "info": "" + }, + { + "name": "4DSM", + "url": "https://nas4.987991.xyz/", + "icon": "streamline-ultimate-color:lift-1", + "info": "阿里云CDN转换" + }, + { + "name": "fniptvapi6", + "url": "https://iptvapi.dispark.top/", + "icon": "streamline-ultimate-color:modern-tv-curvy-edge", + "info": "" + }, + { + "name": "fnchat", + "url": "https://fnchat.dispark.top/", + "icon": "streamline-ultimate-color:line-app-logo", + "info": "" + }, + { + "name": "fnosLinkding", + "url": "https://links.dispark.top", + "icon": "streamline-ultimate-color:browser-com", + "info": "" + }, + { + "name": "fnNavidrome 6", + "url": "https://fnyy.dispark.top/app", + "icon": "emojione-v1:musical-notes", + "info": "" + }, + { + "name": "fnyy4音乐", + "url": "https://fnyy4.987991.xyz/app/#/login", + "icon": "emojione-v1:musical-notes", + "info": "" + } + ], + "collapsed": false + }, + { + "name": "联系方式", + "sites": [ + { + "name": "telegram", + "url": "https://t.me/+BU4ZgQ0fAkw5NDcx", + "icon": "bi:telegram" + }, + { + "name": "Te频道", + "url": "https://t.me/+u-f_u7Kon005NDZh", + "icon": "bi:telegram", + "info": "telegram频道" + }, + { + "name": "个人邮箱", + "url": "mailto:i@dispark.top", + "icon": "logos:google-gmail", + "info": "个人邮箱" + }, + { + "name": "QQ", + "url": "tencent://message/?uin=3931909963", + "icon": "ri:qq-line" + }, + { + "name": "QQ群", + "url": "tencent://groupwpa/?subcmd=all&groupuin=910741414", + "icon": "simple-icons:tencentqq" + }, + { + "name": "sina邮箱", + "url": "https://m1.mail.sina.com.cn/classic/index.php#title=&action=setting&key=&tabUrl=service&innerTab=0&preset=true", + "icon": "logos:microsoft-icon", + "info": "" + }, + { + "name": "微信公众号", + "url": "http://weixin.qq.com/r/mp/nRzv9zHEOGxHrXWU90mP", + "icon": "logos:twitter", + "info": "" + }, + { + "name": "谷歌邮箱", + "url": "https://mail.google.com/mail/u/0/#inbox", + "icon": "streamline-ultimate-color:envelope-back-front", + "info": "" + }, + { + "name": "临时邮箱", + "url": "https://www.mffac.com/", + "icon": "streamline-ultimate-color:email-action-add", + "info": "" + } + ], + "collapsed": false + }, + { + "name": "软件下载", + "sites": [ + { + "name": "DG硬盘", + "url": "https://www.diskgenius.com/", + "icon": "logos:aws-keyspaces", + "info": "HDD硬盘检测和修复" + }, + { + "name": "FinalShell", + "url": "https://www.hostbuf.com/", + "icon": "logos:hyper", + "info": "SSH软件,远程服务器" + }, + { + "name": "IzzyOnDroid", + "url": "https://apt.izzysoft.de/fdroid/repo", + "icon": "logos:android", + "info": "F-Droid 存储库" + }, + { + "name": "Guardian Project", + "url": "https://guardianproject.info/fdroid/repo/", + "icon": "logos:android-vertical", + "info": "F-Droid 存储库" + }, + { + "name": "TriliumDroid", + "url": "https://github.com/FliegendeWurst/TriliumDroid", + "icon": "logos:treehouse", + "info": "TriliumDroid安卓手机客户端" + }, + { + "name": "f-droid", + "url": "https://forum.f-droid.org/", + "icon": "logos:android-icon", + "info": "f-droid安卓库" + }, + { + "name": "Trilium", + "url": "https://github.com/TriliumNext/Trilium", + "icon": "logos:treehouse-icon", + "info": "Trilium软件包" + }, + { + "name": "amcfy音乐APP", + "url": "https://cn.amcfy.com/", + "icon": "emojione-v1:musical-notes", + "info": "" + } + ], + "collapsed": false + }, + { + "name": "影视资源", + "sites": [ + { + "name": "豆瓣", + "url": "https://movie.douban.com/", + "icon": "arcticons:about-you", + "info": "国内评分网站" + }, + { + "name": "youtube", + "url": "https://www.youtube.com/", + "icon": "logos:youtube-icon", + "info": "" + }, + { + "name": "皇后", + "url": "https://open.cd", + "icon": "streamline-ultimate-color:show-theater-mask-happy", + "info": "音乐站" + }, + { + "name": "hdarea", + "url": "https://hdarea.club/", + "icon": "streamline-ultimate-color:move-down-1", + "info": "" + }, + { + "name": "New新闻汇总", + "url": "https://newsnow.busiyi.world/", + "icon": "streamline-ultimate-color:network-browser", + "info": "" + }, + { + "name": "M-team", + "url": "https://kp.m-team.cc/index", + "icon": "streamline-ultimate-color:video-file-download", + "info": "WLS@QQ\nwwwzls\nMteam" + }, + { + "name": "音乐剥削", + "url": "https://musicbrainz.org/user/dispark", + "icon": "streamline-ultimate-color:vinyl-record-player", + "info": "5@q dispark Music..z" + }, + { + "name": "PT邀请网", + "url": "http://www.ptyqm.com/", + "icon": "streamline-ultimate-color:server-share", + "info": "" + }, + { + "name": "B站", + "url": "https://www.bilibili.com/", + "icon": "flat-color-icons:reading-ebook", + "info": "" + } + ], + "collapsed": false + }, + { + "name": "测试", + "sites": [], + "collapsed": true + }, + { + "name": "旅游出行", + "sites": [ + { + "name": "北部湾航空", + "url": "https://www.gxairlines.com/", + "icon": "material-symbols:airplane-ticket-outline", + "info": "" + }, + { + "name": "南方航空", + "url": "https://www.csair.com/cn/", + "icon": "material-symbols:airlines-outline", + "info": "" + }, + { + "name": "长安航空", + "url": "https://www.airchangan.com/", + "icon": "material-symbols:airplanemode-active", + "info": "" + } + ], + "collapsed": false + }, + { + "name": "购物消费", + "sites": [ + { + "name": "淘宝", + "url": "https://www.taobao.com/?spm=a1z02.1.icon.taobaologo", + "icon": "streamline-ultimate-color:shop-sale-1", + "info": "" + } + ], + "collapsed": false + }, + { + "name": "书籍", + "sites": [ + { + "name": "Z-Library", + "url": "https://zh.101isfp.ru/s", + "icon": "streamline-ultimate-color:book-open-bookmark", + "info": "" + } + ], + "collapsed": false + } + ] +} \ No newline at end of file diff --git a/NotFound.html b/NotFound.html new file mode 100644 index 0000000..60fe449 --- /dev/null +++ b/NotFound.html @@ -0,0 +1,10 @@ + + + 404 Not Found + + +

404 Not Found

+

抱歉,您访问的页面不存在。

+

您可以返回 登录页面

+ + \ No newline at end of file diff --git a/STATIC_FILES.html b/STATIC_FILES.html new file mode 100644 index 0000000..cd24f1d --- /dev/null +++ b/STATIC_FILES.html @@ -0,0 +1,107 @@ + + + + + + + 隐私政策 + + + + +
+

隐私政策

+
+ +
+

1. 个人信息收集

+

我们收集您的个人信息,目的是为您提供更好的服务。我们可能会收集以下类型的个人信息:

+ + +

2. 信息使用

+

我们收集的个人信息可能会用于以下目的:

+ + +

3. 信息共享

+

我们不会将您的个人信息出售给第三方,但在以下情况下,您的信息可能会与第三方共享:

+ + +

4. 数据安全

+

我们采取合理的技术和管理措施来保护您的个人信息免受未经授权的访问、披露、更改或销毁。然而,没有任何在线传输或存储方法可以保证绝对的安全。

+ +

5. 您的权利

+

根据适用的数据保护法律,您可能有权访问、更正、删除或限制对您个人信息的处理。您还可以随时撤回您的同意。

+ +

6. 儿童隐私

+

我们不会故意收集13岁以下儿童的个人信息。如果您是家长或监护人,且知道您的孩子已向我们提供个人信息,请与我们联系,我们将尽快删除这些信息。

+ +

7. 隐私政策更新

+

我们可能会不时更新本隐私政策。如果我们对本政策进行重大修改,我们会在网站上发布通知。请定期查看我们的隐私政策,以了解最新的变更。

+
+ + + + + \ No newline at end of file diff --git a/pri.html b/pri.html new file mode 100644 index 0000000..5a5f486 --- /dev/null +++ b/pri.html @@ -0,0 +1,117 @@ + + + + + + + 隐私政策 + + + + +
+

隐私政策

+
+ +
+

1. 个人信息收集

+

我们收集您的个人信息,目的是为您提供更好的服务。我们可能会收集以下类型的个人信息:

+ + +

2. 信息使用

+

我们收集的个人信息可能会用于以下目的:

+ + +

3. 信息共享

+

我们不会将您的个人信息出售给第三方,但在以下情况下,您的信息可能会与第三方共享:

+ + +

4. 信息合规

+

用户应对提交的内容负责,并确保其符合相关法律法规。

+ + +

5. 数据安全

+

我们采取合理的技术和管理措施来保护您的个人信息免受未经授权的访问、披露、更改或销毁。然而,没有任何在线传输或存储方法可以保证绝对的安全。

+ +

6. 您的权利

+

根据适用的数据保护法律,您可能有权访问、更正、删除或限制对您个人信息的处理。您还可以随时撤回您的同意。

+ +

7. 儿童隐私

+

我们不会故意收集13岁以下儿童的个人信息。如果您是家长或监护人,且知道您的孩子已向我们提供个人信息,请与我们联系,我们将尽快删除这些信息。

+ +

8. 隐私政策更新

+

我们可能会不时更新本隐私政策。如果我们对本政策进行重大修改,我们会在网站上发布通知。请定期查看我们的隐私政策,以了解最新的变更。

+

9. 协议生效

+

使用本服务即表示您已阅读、理解并同意本声明中的所有条款。

+
+ + + + + diff --git a/worker.js b/worker.js new file mode 100644 index 0000000..52de3f3 --- /dev/null +++ b/worker.js @@ -0,0 +1,2097 @@ +addEventListener('fetch', (event) => { + event.respondWith(handleRequest(event.request)); + }); + + async function handleRequest(request) { + const url = new URL(request.url); + const { pathname } = url; + + try { + // 登录请求处理 + if (pathname === '/login' && request.method === 'POST') { + const formData = new URLSearchParams(await request.text()); + const username = formData.get('username'); + const password = formData.get('password'); + + if (username === envusername && password === envpassword) { + return new Response(await renderNavigationPage(), { + headers: { 'Content-Type': 'text/html; charset=utf-8' }, + }); + } + // 登录失败时直接返回登录页面并显示错误 + return new Response(await renderLoginPage(true), { + headers: { 'Content-Type': 'text/html; charset=utf-8' } + }); + } + + // 路由处理 + switch (pathname) { + case '/': + case '/login.html': + return new Response(await renderLoginPage(), { + headers: { 'Content-Type': 'text/html; charset=utf-8' } + }); + + case '/privacy': + return serveStaticFile('privacy.html'); + + case '/data': + return fetchNavigationData(); + + case '/add-category': + if (request.method === 'POST') return addCategory(request); + break; + + case '/add-site': + if (request.method === 'POST') return addSite(request); + break; + + case '/delete-category': + if (request.method === 'POST') return deleteCategory(request); + break; + + case '/delete-site': + if (request.method === 'POST') return deleteSite(request); + break; + + case '/edit-site': + if (request.method === 'POST') return editSite(request); + break; + case '/edit-category': + if (request.method === 'POST') return editCategory(request); + break; + // 在handleRequest中添加切换分类状态的路由 + case '/toggle-category': + if (request.method === 'POST') return toggleCategory(request); + break; + // 在handleRequest的switch语句中添加新路由 + case '/reorder-site': + if (request.method === 'POST') return reorderSite(request); + break; + case '/load-notification': + return loadNotification(); + } + + // 未匹配的路由返回404 + return serveStaticFile('NotFound.html', 404); + } catch (error) { + console.error('Error handling request:', error); + return new Response('Internal Server Error', { status: 500 }); + } + } + + // KV 数据操作函数 + async function getNavigationData() { + const data = await NAVIGATION_DATA.get('data'); + const parsedData = data ? JSON.parse(data) : { categories: [] }; + + // 初始化折叠状态 + parsedData.categories.forEach(category => { + if (typeof category.collapsed === 'undefined') { + category.collapsed = false; // 默认展开状态 + } + }); + + return parsedData; + } + // 添加站点重新排序功能 + async function reorderSite(request) { + const requestBody = await request.json(); + const { categoryIndex, oldIndex, newIndex } = requestBody; + const navigationData = await getNavigationData(); + + // 验证分类索引 + if (categoryIndex < 0 || categoryIndex >= navigationData.categories.length) { + return new Response(JSON.stringify({ error: '无效分类索引' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + const category = navigationData.categories[categoryIndex]; + // 验证站点索引 + if (oldIndex < 0 || oldIndex >= category.sites.length || + newIndex < 0 || newIndex >= category.sites.length) { + return new Response(JSON.stringify({ error: '无效站点索引' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + // 移动站点位置 + const siteToMove = category.sites.splice(oldIndex, 1)[0]; + category.sites.splice(newIndex, 0, siteToMove); + + await setNavigationData(navigationData); + return new Response(JSON.stringify({ message: '站点顺序已更新' }), { + headers: { 'Content-Type': 'application/json; charset=utf-8' } + }); + } + // 添加编辑分类的API处理函数 +async function editCategory(request) { + const requestBody = await request.json(); + const navigationData = await getNavigationData(); + + // 验证索引有效性 + if (requestBody.categoryIndex < 0 || + requestBody.categoryIndex >= navigationData.categories.length) { + return new Response(JSON.stringify({ error: '无效分类索引' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + // 检查新名称是否已存在 + const newName = requestBody.newName.trim(); + const categoryExists = navigationData.categories.some( + (cat, index) => index !== requestBody.categoryIndex && cat.name === newName + ); + + if (categoryExists) { + return new Response(JSON.stringify({ error: '分类名称已存在' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + // 更新分类名称 + navigationData.categories[requestBody.categoryIndex].name = newName; + + await setNavigationData(navigationData); + return new Response(JSON.stringify({ message: '分类名称修改成功' }), { + headers: { 'Content-Type': 'application/json; charset=utf-8' } + }); + } + // 添加切换分类折叠状态的API处理函数 +async function toggleCategory(request) { + const requestBody = await request.json(); + const navigationData = await getNavigationData(); + + // 验证索引有效性 + if (requestBody.categoryIndex < 0 || + requestBody.categoryIndex >= navigationData.categories.length) { + return new Response(JSON.stringify({ error: '无效分类索引' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + // 切换折叠状态 + const category = navigationData.categories[requestBody.categoryIndex]; + category.collapsed = !category.collapsed; + + await setNavigationData(navigationData); + return new Response(JSON.stringify({ + message: '状态更新成功', + collapsed: category.collapsed + }), { + headers: { 'Content-Type': 'application/json; charset=utf-8' } + }); + } + + // 切换分类折叠状态 +async function toggleCategoryState(categoryIndex) { + const response = await fetch('/toggle-category', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ categoryIndex }) + }); + + if (response.ok) { + const result = await response.json(); + const categoryElement = document.getElementById(`category-sites-${categoryIndex}`); + const toggleIcon = document.querySelector(`.toggle-btn[onclick="toggleCategoryState(${categoryIndex})"] .iconify`); + + if (result.collapsed) { + categoryElement.style.display = 'none'; + toggleIcon.setAttribute('data-icon', 'mdi:chevron-right'); + } else { + categoryElement.style.display = 'flex'; + toggleIcon.setAttribute('data-icon', 'mdi:chevron-down'); + } + } + } + + + async function setNavigationData(data) { + await NAVIGATION_DATA.put('data', JSON.stringify(data)); + } + + // 静态文件服务 + async function serveStaticFile(filename, status = 200) { + const content = await STATIC_FILES.get(filename); + if (content) { + return new Response(content, { + status, + headers: { 'Content-Type': 'text/html; charset=utf-8' } + }); + } + return new Response(`${filename} not found`, { status: 404 }); + } + + // API 端点处理函数 + async function fetchNavigationData() { + const navigationData = await getNavigationData(); + return new Response(JSON.stringify(navigationData), { + headers: { + 'Content-Type': 'application/json; charset=utf-8', + 'Cache-Control': 'no-cache' + } + }); + } + + async function addCategory(request) { + const requestBody = await request.json(); + const navigationData = await getNavigationData(); + + // 检查分类是否已存在 + const categoryExists = navigationData.categories.some( + cat => cat.name === requestBody.name + ); + + if (categoryExists) { + return new Response(JSON.stringify({ error: '分类已存在' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + navigationData.categories.push({ + name: requestBody.name, + sites: [] + }); + + await setNavigationData(navigationData); + return new Response(JSON.stringify({ message: '分类添加成功' }), { + headers: { 'Content-Type': 'application/json; charset=utf-8' } + }); + } + + async function addSite(request) { + const requestBody = await request.json(); + const navigationData = await getNavigationData(); + + // 验证索引有效性 + if (requestBody.categoryIndex < 0 || + requestBody.categoryIndex >= navigationData.categories.length) { + return new Response(JSON.stringify({ error: '无效分类索引' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + // 添加站点描述字段 + navigationData.categories[requestBody.categoryIndex].sites.push({ + name: requestBody.siteName, + url: requestBody.siteUrl, + icon: requestBody.siteIcon, + info: requestBody.siteInfo || '' // 添加站点描述 + }); + + await setNavigationData(navigationData); + return new Response(JSON.stringify({ message: '站点添加成功' }), { + headers: { 'Content-Type': 'application/json; charset=utf-8' } + }); + } + + async function editSite(request) { + const requestBody = await request.json(); + const navigationData = await getNavigationData(); + + // 获取原始分类索引和新分类索引 + const originalCategoryIndex = requestBody.originalCategoryIndex; + const newCategoryIndex = requestBody.newCategoryIndex; + const siteIndex = requestBody.siteIndex; + + // 验证索引有效性 + if (originalCategoryIndex < 0 || + originalCategoryIndex >= navigationData.categories.length || + newCategoryIndex < 0 || + newCategoryIndex >= navigationData.categories.length) { + return new Response(JSON.stringify({ error: '无效分类索引' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + const originalCategory = navigationData.categories[originalCategoryIndex]; + if (siteIndex < 0 || siteIndex >= originalCategory.sites.length) { + return new Response(JSON.stringify({ error: '无效站点索引' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + // 获取站点对象 + const site = originalCategory.sites[siteIndex]; + + // 更新站点信息 + site.name = requestBody.siteName; + site.url = requestBody.siteUrl; + site.icon = requestBody.siteIcon; + site.info = requestBody.siteInfo || ''; + + // 如果分类发生变化,移动站点到新分类 + if (originalCategoryIndex !== newCategoryIndex) { + // 从原分类移除 + originalCategory.sites.splice(siteIndex, 1); + + // 添加到新分类 + navigationData.categories[newCategoryIndex].sites.push(site); + } + + await setNavigationData(navigationData); + return new Response(JSON.stringify({ message: '站点更新成功' }), { + headers: { 'Content-Type': 'application/json; charset=utf-8' } + }); + } + + async function deleteCategory(request) { + const requestBody = await request.json(); + const navigationData = await getNavigationData(); + + // 验证索引有效性 + if (requestBody.categoryIndex < 0 || + requestBody.categoryIndex >= navigationData.categories.length) { + return new Response(JSON.stringify({ error: '无效分类索引' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + navigationData.categories.splice(requestBody.categoryIndex, 1); + await setNavigationData(navigationData); + return new Response(JSON.stringify({ message: '分类删除成功' }), { + headers: { 'Content-Type': 'application/json; charset=utf-8' } + }); + } + + async function deleteSite(request) { + const requestBody = await request.json(); + const navigationData = await getNavigationData(); + + // 验证索引有效性 + if (requestBody.categoryIndex < 0 || + requestBody.categoryIndex >= navigationData.categories.length) { + return new Response(JSON.stringify({ error: '无效分类索引' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + const category = navigationData.categories[requestBody.categoryIndex]; + if (requestBody.siteIndex < 0 || requestBody.siteIndex >= category.sites.length) { + return new Response(JSON.stringify({ error: '无效站点索引' }), { + status: 400, + headers: { 'Content-Type': 'application/json' } + }); + } + + category.sites.splice(requestBody.siteIndex, 1); + await setNavigationData(navigationData); + return new Response(JSON.stringify({ message: '站点删除成功' }), { + headers: { 'Content-Type': 'application/json; charset=utf-8' } + }); + } + + async function loadNotification() { + const notification = await NAVIGATION_DATA.get('info'); + return new Response(notification || '', { + headers: { 'Cache-Control': 'no-cache' } + }); + } + + // 页面渲染函数 + async function renderLoginPage(showError = false) { + return ` + + + + + + Dispark|点滴星火登录页 + + + +

+ + Prometheus Icon + + Dispark|点滴星火 +

+ +
+
用户名或密码错误,请重试
+
+ + + +
+
+ + + + `; + } + + async function renderNavigationPage() { + const navigationData = await getNavigationData(); + + const html = ` + + + + + + Dispark|点滴星火 + + + + + +
+ +
+ +
+
+ + Logo +

Dispark

+
+
+
+ 正在加载时间... +
+
+ + +
+ + + +
+
+ + +
+ +
点滴星火导航站
+
探索 · 连接 · 发现
+
+ + +
+ + + + + + + +
+
+
+ +
+ ${renderCategories(navigationData.categories)} + +
+ +
+
+
+
+ + +
+
+
+ + + + + + + + + + + + + + + + `; + + return html; + } + + /// 修复renderCategories函数 - 关键修改 +function renderCategories(categories) { + return categories.map((category, categoryIndex) => ` +
+

+ + + + ${category.name} + + + + + + + + + +

+ + +
+ `).join(''); +} + + // 辅助函数:转义特殊字符 + function escapeString(str) { + return str ? str + .replace(/\\/g, '\\\\') + .replace(/'/g, "\\'") + .replace(/"/g, '\\"') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') : ''; + }