├── LICENSE ├── README.md ├── app └── redirect │ ├── mirror │ ├── r │ └── r2 ├── build ├── build.ts ├── buttons.yml ├── modules │ ├── base.css │ ├── buttons.css │ ├── change-visible.js │ ├── footer.html │ └── meta.html └── pages │ └── index.html ├── docker └── redirect │ └── dockerfile ├── nginx-domains ├── cert-ldtstore-domains.conf ├── cert-ldtstore-old-domain.conf ├── guide-page-redirect.conf ├── hsts.conf ├── http.conf ├── nginx-domestic.conf ├── nginx-intl.conf ├── page.conf ├── paths.conf └── redirect.conf ├── nginx-main ├── cert-ldtstore-main.conf ├── hsts.conf ├── nginx.conf ├── paths.conf ├── redirect.conf └── static.conf ├── nginx └── nginx.conf └── wwwroot └── robots.txt /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021-2024 stackinspector 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LDTstore 2 | 3 | ## NOTICE 4 | 5 | The current role of this repository is **only** the configuration of **nginx (for both main and short/reserved domains) and dynamic services**. 6 | 7 | The three directories `build` (for old pages and their build system before November 2021), `nginx` (for previous nginx configuration of the main site) and `wwwroot` are reserved **for historical reasons** only. 8 | 9 | For the source code of **current pages** and their build system, see [ldtstore-homepage](https://github.com/stackinspector/ldtstore-homepage/) 10 | 11 | For **images** on the pages, see [ldtstore-assert](https://github.com/stackinspector/ldtstore-assert/) 12 | 13 | For the generic http **redirect** service used on `r.ldt.pc.wiki`, see [http-redirector](https://github.com/stackinspector/http-redirector/) 14 | 15 | ## Build Docker Images for Redirect Service 16 | 17 | Prepare a linux VM with docker installed locally for building images. Login as `root`. 18 | 19 | ```bash 20 | mkdir redirect && cd "$_" 21 | # [repo]/docker/redirect/dockerfile -> [remote]/root/redirect/dockerfile 22 | wget -O- https://github.com/stackinspector/http-redirector/releases/download/v0.8.1/http-redirector_v0.8.1_x86_64-unknown-linux-musl.tar.xz | tar xv --lzma 23 | chmod 755 hr 24 | docker build -t path/to/redirect:v0.8.1 . 25 | docker push path/to/redirect:v0.8.1 26 | ``` 27 | 28 | ## Build, Deploy and Recycle for Main Domains 29 | 30 | ``` 31 | [assert]/image -> [static]/s0-ldt/image 32 | [built]/code -> [static]/s0-ldt 33 | [built]/page-boot -> [static]/s0-ldt 34 | [built]/ldt/error.html -> [static]/s0-ldt 35 | [built]/ldt/robots.txt -> [static]/s0-ldt 36 | [built]/ldt -> [static] 37 | [built]/tool -> [static] 38 | [tool] -> [static] 39 | 40 | [static] -> [remote]/server 41 | [repo]/app/redirect -> [remote]/server/app 42 | [hr-release]/hr -> [remote]/server/app/redirect 43 | [repo]/nginx-main -> [remote]/server/nginx 44 | 45 | tmux new -s hr 46 | cd /server/app/redirect 47 | ./hr -p 38010 -c "r,r;r2,r2;mirror,mirror;mirror-cn,mirror;mirror-os,mirror" -l log 48 | tmux attach -t hr 49 | ``` 50 | 51 | ## Build, Deploy and Recycle for Short/Reserved Domains 52 | 53 | Ensure that `/server/certs/ldtstore-domains` contains `key.pem` and `fullchain.pem` and dhparam file is on `/server/certs/dh4096.pem`. 54 | 55 | Nginx installed from debian apt and `libnginx-mod-http-brotli-static` and `libnginx-mod-http-brotli-filter` is installed. 56 | 57 | Log in to the remote server as `root`. 58 | 59 | ### Deploy and Recycle Nginx 60 | 61 | ```bash 62 | cd /server 63 | nginx -s quit 64 | tail -n 20 nginx/logs/error # test 65 | tar caf nginx.tar.xz nginx 66 | sha256sum nginx.tar.xz 67 | # [remote]/server/nginx.tar.xz -> [local](archive) 68 | rm -r nginx nginx.tar.xz 69 | # [repo]/nginx-domains -> [remote]/server 70 | mv nginx-domains nginx 71 | mkdir nginx/logs 72 | nginx -p /server/nginx -c /server/nginx/nginx.conf 73 | cat nginx/logs/error # test 74 | ``` 75 | 76 | Note that after updating nginx, the service will automatically start with the default path, so it is necessary to stop the service first after the update before starting it with the specified path. 77 | 78 | ### Update Guide Pages 79 | 80 | For building see [ldtstore-homepage](https://github.com/stackinspector/ldtstore-homepage/). 81 | 82 | ```bash 83 | # first update 84 | cd /server 85 | mkdir pages 86 | # [built]/guide-page -> [remote]/server/pages 87 | # [built]/guide-page-intl -> [remote]/server/pages 88 | ``` 89 | -------------------------------------------------------------------------------- /app/redirect/mirror: -------------------------------------------------------------------------------- 1 | aida64 d1.tool.pc.wiki/namedblobs/aida64-0dc981b8.zip 2 | cdi d1.tool.pc.wiki/namedblobs/cdi-80e57e88.zip 3 | cdm d1.tool.pc.wiki/namedblobs/cdm-f2fb23ff.zip 4 | choeazycopy d1.tool.pc.wiki/namedblobs/choeazycopy-171bb883.zip 5 | cmwtat d1.tool.pc.wiki/namedblobs/cmwtat-2593ce8c.zip 6 | cpuz d1.tool.pc.wiki/namedblobs/cpuz-0cb1f16a.zip 7 | ctr d1.tool.pc.wiki/namedblobs/ctr-f055ea01.zip 8 | ddu d1.tool.pc.wiki/namedblobs/ddu-417412d1.zip 9 | dismxx d1.tool.pc.wiki/namedblobs/dismxx-5560f377.zip 10 | fancontrol d1.tool.pc.wiki/namedblobs/fancontrol-9567e4c5.zip 11 | gpucaps d1.tool.pc.wiki/namedblobs/gpucaps-20656a72.zip 12 | gpuz d1.tool.pc.wiki/namedblobs/gpuz-65cca1b6.zip 13 | ryzen-controller d1.tool.pc.wiki/namedblobs/ryzen-controller-8258d485.zip 14 | traffic-monitor d1.tool.pc.wiki/namedblobs/traffic-monitor-aaf8d5d3.zip 15 | asssd d1.tool.pc.wiki/namedblobs/asssd-16716b36.zip 16 | atto d1.tool.pc.wiki/namedblobs/atto-a93059e0.zip 17 | bootice d1.tool.pc.wiki/namedblobs/bootice-88ab4678.zip 18 | chipgenius d1.tool.pc.wiki/namedblobs/chipgenius-6d7ca6e0.zip 19 | cinebench-r115 d1.tool.pc.wiki/namedblobs/cinebench-r115-fb96fa4d.zip 20 | cinebench-r15 d1.tool.pc.wiki/namedblobs/cinebench-r15-c859352a.zip 21 | cinebench-r20 d1.tool.pc.wiki/namedblobs/cinebench-r20-66da0cef.zip 22 | cinebench-r23 d1.tool.pc.wiki/namedblobs/cinebench-r23-1037ae38.zip 23 | cru d1.tool.pc.wiki/namedblobs/cru-fa3fb1e8.zip 24 | desktopok d1.tool.pc.wiki/namedblobs/desktopok-fae2b5cc.zip 25 | displayx d1.tool.pc.wiki/namedblobs/displayx-16dccd14.zip 26 | fritz-chess d1.tool.pc.wiki/namedblobs/fritz-chess-8ea05ab3.zip 27 | gpuinfo d1.tool.pc.wiki/namedblobs/gpuinfo-9a027ce1.zip 28 | h2testw d1.tool.pc.wiki/namedblobs/h2testw-2c1922a9.zip 29 | intel-mlc d1.tool.pc.wiki/namedblobs/intel-mlc-8d83dbef.zip 30 | keyboard-test d1.tool.pc.wiki/namedblobs/keyboard-test-eafae05e.zip 31 | logviewer d1.tool.pc.wiki/namedblobs/logviewer-507152b0.zip 32 | memtest d1.tool.pc.wiki/namedblobs/memtest-c804d598.zip 33 | monitorgamut d1.tool.pc.wiki/namedblobs/monitorgamut-7cbc851b.zip 34 | mouse-test d1.tool.pc.wiki/namedblobs/mouse-test-6e9973d4.zip 35 | mydisktest d1.tool.pc.wiki/namedblobs/mydisktest-52d05daf.zip 36 | p95 d1.tool.pc.wiki/namedblobs/p95-d691e794.zip 37 | passmark-keytest d1.tool.pc.wiki/namedblobs/passmark-keytest-7df15033.zip 38 | rmtp d1.tool.pc.wiki/namedblobs/rmtp-9bd706cc.zip 39 | superpi d1.tool.pc.wiki/namedblobs/superpi-b7f5c085.zip 40 | thaiphoon d1.tool.pc.wiki/namedblobs/thaiphoon-58216ea2.zip 41 | tm5-config d1.tool.pc.wiki/namedblobs/tm5-config-a705dbfd.zip 42 | tm5 d1.tool.pc.wiki/namedblobs/tm5-c74e3dfe.zip 43 | urwtest d1.tool.pc.wiki/namedblobs/urwtest-2411d19d.zip 44 | vcrtpack d1.tool.pc.wiki/namedblobs/vcrtpack-139fb2fd.zip 45 | victoria d1.tool.pc.wiki/namedblobs/victoria-01bd2bc0.zip 46 | windirstat d1.tool.pc.wiki/namedblobs/windirstat-f38b5ffb.zip 47 | winnt-setup d1.tool.pc.wiki/namedblobs/winnt-setup-23a9139e.zip 48 | wiztree d1.tool.pc.wiki/namedblobs/wiztree-bb0e4cde.zip 49 | wprime d1.tool.pc.wiki/namedblobs/wprime-04c01d78.zip 50 | zentimings d1.tool.pc.wiki/namedblobs/zentimings-8cecec3f.zip 51 | 7zip d1.tool.pc.wiki/namedblobs/7zip-bba0537d.zip 52 | fastcopy d1.tool.pc.wiki/namedblobs/fastcopy-c0eb67b8.zip 53 | hwmon d1.tool.pc.wiki/namedblobs/hwmon-d6ad0c97.zip 54 | rufus d1.tool.pc.wiki/namedblobs/rufus-4828e0a9.zip 55 | spacesniffer d1.tool.pc.wiki/namedblobs/spacesniffer-9d3280d8.zip 56 | txbench d1.tool.pc.wiki/namedblobs/txbench-6c41e64f.zip 57 | -------------------------------------------------------------------------------- /app/redirect/r: -------------------------------------------------------------------------------- 1 | home space.bilibili.com/178429408/ 2 | home-ops space.bilibili.com/690466688/ 3 | store shop294008044.taobao.com/ 4 | afdian afdian.com/a/LaodiTeachTips 5 | 6 | yjws t.bilibili.com/topic/16378017/ 7 | yjws-newtopic www.bilibili.com/v/topic/detail?topic_id=3011 8 | yjws-vspec-1 www.bilibili.com/video/BV1Y3411v7b9 9 | yjws-spec-31 www.bilibili.com/read/cv14598102 10 | yjws-spec-3 www.bilibili.com/read/cv14130391 11 | yjws-apdx-1 t.bilibili.com/511987830001645385 12 | yjws-guide-21 www.bilibili.com/read/cv9982935 13 | yjws-spec-21 www.bilibili.com/read/cv9981724 14 | yjws-spec-2 www.bilibili.com/read/cv9963318 15 | yjws-spec-1 www.bilibili.com/read/cv9441770 16 | 17 | icu t.bilibili.com/topic/19015795/ 18 | icu-newtopic www.bilibili.com/v/topic/detail?topic_id=3519 19 | icu-spec-11 t.bilibili.com/517514512308129375 20 | icu-spec-1 t.bilibili.com/509713064997691116 21 | 22 | live-room live.bilibili.com/10308958 23 | live-faq-1 www.bilibili.com/read/cv10061466 24 | live-rec-yjws space.bilibili.com/690466688/channel/detail?cid=150000 25 | live-rec-other space.bilibili.com/690466688/channel/detail?cid=186989 26 | 27 | group-readme-1 t.bilibili.com/500869057318825248 28 | 29 | outer-zh www.zhihu.com/people/LaodiTeachTips/zvideos 30 | outer-ac www.acfun.cn/u/53658423 31 | outer-yt www.youtube.com/channel/UC5BPdu6lNfDYBox78SBntRQ 32 | outer-wb weibo.com/LaodiTeachTips 33 | outer-tt www.toutiao.com/c/user/token/MS4wLjABAAAAfpflzn18BjudpSxvqMXv_9rWvNqyWE9z202xRgVwaLg/ 34 | outer-xg www.ixigua.com/home/440269985559069/ 35 | outer-bh haokan.baidu.com/author/WWiwovLsveLsAPwUnKDEVQ 36 | outer-mz www.henzan.com/u/104522504 37 | outer-ks www.kuaishou.com/profile/3xqknk4srw8j2y2 38 | outer-zm zhiyou.smzdm.com/member/2721627775/ 39 | 40 | ops-top-1 t.bilibili.com/536891502082244016 41 | 42 | poweredby-1 space.bilibili.com/573732342/ 43 | poweredby-2 space.bilibili.com/355580496/ 44 | poweredby-3 space.bilibili.com/198340919/ 45 | website-github github.com/stackinspector/LDTstore/ 46 | homepage-github github.com/stackinspector/ldtstore-homepage/ 47 | 48 | fw-ltt-cn ldt.pc.wiki/ 49 | fw-ltt-com ldt.pc.wiki/ 50 | fw-ldt-cn ldt.pc.wiki/ 51 | fw-icu t.bilibili.com/topic/19015795/ 52 | fw-icu-newtopic www.bilibili.com/v/topic/detail?topic_id=3519 53 | fw-ldtool tool.pc.wiki/ 54 | fw-ldtools tool.pc.wiki/ 55 | fw-ldt-tools tool.pc.wiki/ 56 | fw-ldt-tools-plain tool.pc.wiki/plain.html 57 | 58 | fw-intl-main ldt.pc.wiki/?fw=legacy-intl-root 59 | fw-emerg-main ldt.pc.wiki/?fw=legacy-emerg-root 60 | fw-intl-ltt-cn ldt.pc.wiki/?fw=legacy-intl 61 | fw-intl-ltt-com ldt.pc.wiki/?fw=legacy-intl 62 | fw-intl-ldtool tool.pc.wiki/?fw=legacy-intl 63 | fw-intl-ldtools tool.pc.wiki/?fw=legacy-intl 64 | fw-intl-ldt-tools tool.pc.wiki/?fw=legacy-intl 65 | fw-intl-ldt-tools-plain tool.pc.wiki/plain.html 66 | 67 | fw-back-main ldt.pc.wiki/ 68 | fw-back-ldtools tool.pc.wiki/ 69 | 70 | fw-old-home ldt.pc.wiki/ 71 | fw-old-tool tool.pc.wiki/ 72 | fw-old-tool-plain tool.pc.wiki/plain.html 73 | 74 | fw-old-intl-home ldt.pc.wiki/ 75 | fw-old-intl-tool tool.pc.wiki/ 76 | fw-old-intl-tool-plain tool.pc.wiki/plain.html 77 | 78 | rlwj t.bilibili.com/topic/22702524/ 79 | rlwj-newtopic www.bilibili.com/v/topic/detail?topic_id=6971 80 | rlwj-spec-1 www.bilibili.com/read/cv14042076 81 | 82 | pcwiki-beta1 beta1.pc.wiki/ 83 | -------------------------------------------------------------------------------- /app/redirect/r2: -------------------------------------------------------------------------------- 1 | tbtool www.tbtool.cn 2 | kbtool http://www.kbtool.cn 3 | kbtool-d-od http://wp.smxdiy.top/%E5%8D%A1%E7%A1%AC%E5%B7%A5%E5%85%B7%E7%AE%B1(%E5%AF%86%E7%A0%81%EF%BC%9A1234)/kaying_tools_V2.97_setup.zip 4 | dismxx www.chuyu.me 5 | dismxx-ghr github.com/Chuyu-Team/Dism-Multi-language/releases/ 6 | techpowerup www.techpowerup.com/download/ 7 | geeks3d www.geeks3d.com/dlz/ 8 | guru3d www.guru3d.com/files/index.html 9 | nirsoft www.nirsoft.net 10 | 11 | itellyou-old msdn.itellyou.cn 12 | itellyou-next next.itellyou.cn 13 | techbench-os tb.rg-adguard.net/public.php 14 | techbench-store store.rg-adguard.net/ 15 | 16 | rank-cpu-qdy tieba.baidu.com/p/5005825360 17 | rank-gpu-qdy tieba.baidu.com/p/6133450546 18 | rank-expreview topic.expreview.com/Power/ 19 | rank-passmark-cpu www.cpubenchmark.net/cpu_list.php 20 | rank-passmark-gpu www.videocardbenchmark.net/directCompute.html 21 | rank-passmark-ssd www.harddrivebenchmark.net/ssd.html 22 | rank-techpowerup www.techpowerup.com/gpu-specs/ 23 | rank-kkj rank.kkj.cn/Computer73.shtml 24 | rank-zol cpu.zol.com.cn/soc/ 25 | rank-socpk www.socpk.com 26 | rank-p-pccomp zhuanlan.zhihu.com/p/127042304 27 | rank-p-supergsg-v2 bbs.kafan.cn/thread-2091905-1-1.html 28 | rank-fcp www.fcpowerup.com/fcpmark/ 29 | rank-p-mem zhuanlan.zhihu.com/p/163842976 30 | rank-p-laptop-cpu www.365pcbuy.com/article-409.html 31 | rank-p-laptop-gpu www.365pcbuy.com/article-398.html 32 | rank-toms-cpu www.tomshardware.com/reviews/cpu-hierarchy,4312.html 33 | rank-toms-gpu www.tomshardware.com/reviews/gpu-hierarchy,4388.html 34 | data-ark ark.intel.com/content/www/cn/zh/ark.html 35 | data-cw www.cpu-world.com 36 | data-cpumonkey www.cpu-monkey.com/zh-cn/ 37 | data-panelook www.panelook.cn 38 | rank-versus versus.com/cn 39 | rank-octanebench render.otoy.com/octanebench/results.php 40 | rank-keyshot www.kayshot.com/keyshot9 41 | 42 | drv-intel www.intel.cn/content/www/cn/zh/download-center/home.html 43 | drv-amd www.amd.com/zh-hans/support 44 | drv-nvidia-old www.nvidia.cn/Download/index.aspx?lang=cn 45 | drv-nvidia-new www.nvidia.cn/geforce/drivers/ 46 | drv-asus www.asus.com.cn/support/Download-Center/ 47 | drv-msi www.msi.com/support/download 48 | drv-asrock www.asrockchina.com.cn/support/index.cn.asp 49 | drv-maxsun www.maxsun.com.cn/down/mb/intel/ 50 | drv-biostar www.biostar.com.tw/app/tw/support/download.php 51 | drv-gigabyte www.gigabyte.cn/Support 52 | drv-colorful www.colorful.cn/home/download 53 | drv-galaxy www.szgalaxy.com/service/driversystem 54 | drv-soyo www.soyocn.net/down/zbdrv/INTEL/ 55 | drv-shengqi www.shengqipc.cn/d0.html 56 | drv-onda http://www.onda.cn/Services.aspx 57 | 58 | aida64 www.aida64.com 59 | hwinfo www.hwinfo.com 60 | logviewer www.hwinfo.com/forum/threads/logviewer-for-hwinfo-is-available.802/ 61 | speccy www.ccleaner.com/speccy 62 | geekbench www.geekbench.com 63 | sisoft www.sisoftware.co.uk 64 | hwmon www.cpuid.com/softwares/hwmonitor.html 65 | coretemp www.alcpu.com/CoreTemp/ 66 | traffic-monitor github.com/zhongyang219/TrafficMonitor/ 67 | 68 | cpuz www.cpuid.com/softwares/cpu-z.html 69 | cinebench www.maxon.net/zh/cinebench 70 | cinebench-d-r23 installer.maxon.net/cinebench/CinebenchR23.zip 71 | fritz-chess www.jens-hartmann.at/Fritzmarks/ 72 | superpi-tpu www.techpowerup.com/download/super-pi/ 73 | baiyan epcdiy.org 74 | blender-test opendata.blender.org 75 | intel-xtu www.intel.com/content/www/us/en/download/17881/intel-extreme-tuning-utility-intel-xtu.html 76 | intel-burntest www.techpowerup.com/download/intelburntest/ 77 | vray www.chaos.com/cn/vray/benchmark 78 | amd-ryzen-master www.amd.com/zh-hans/technologies/ryzen-master 79 | throttle-stop www.techpowerup.com/download/techpowerup-throttlestop/ 80 | ryzen-controller ryzencontroller.com 81 | ryzen-controller-gl gitlab.com/ryzen-controller-team/ryzen-controller 82 | ctr www.guru3d.com/files-details/clocktuner-for-ryzen-download.html 83 | hydra www.patreon.com/1usmus 84 | setfsb www.majorgeeks.com/files/details/setfsb.html 85 | 86 | memtest www.memtest.org 87 | rmtp nga.178.com/read.php?tid=20355919 88 | tm5 ngabbs.com/read.php?tid=19968200 89 | tm5-official testmem.tz.ru 90 | zentimings zentimings.protonrom.com 91 | intel-mlc www.intel.cn/content/www/cn/zh/developer/articles/tool/intelr-memory-latency-checker.html 92 | 93 | gpuz www.techpowerup.com/gpuz/ 94 | gpuinfo newbietech.net 95 | gpucaps ozone3d.net/gpu_caps_viewer/ 96 | easymats www.bilibili.com/read/cv9422803 97 | ddu www.wagnardsoft.com 98 | msi-afterburner www.msi.com/Landing/afterburner 99 | msi-afterburner-guru3d www.guru3d.com/download/msi-afterburner-beta-download/ 100 | nvidia-inspector www.techpowerup.com/download/nvidia-inspector/ 101 | nvidia-inspector-profile github.com/Orbmu2k/nvidiaProfileInspector/ 102 | vgabios www.techpowerup.com/vgabios/ 103 | 104 | diskgen www.diskgenius.cn 105 | asssd www.guru3d.com/files-details/as-ssd-benchmark.html 106 | cdi crystalmark.info/en/software/crystaldiskinfo/ 107 | cdm crystalmark.info/en/software/crystaldiskmark/ 108 | atto www.atto.com/disk-benchmark/ 109 | hdtune www.hdtune.com 110 | mydisktest http://bbs.mydigit.cn/read.php?tid=257909 111 | partassist www.disktool.cn 112 | victoria hdd.by/victoria/ 113 | ssdz http://aezay.dk/aezay/ssdz/ 114 | txbench www.texim.jp/txbenchus.html 115 | llf hddguru.com/software/HDD-LLF-Low-Level-Format-Tool/ 116 | h2testw h2testw.en.lo4d.com/windows 117 | urwtest http://bbs.mydigit.cn/read.php?tid=1920114 118 | iometer http://www.iometer.org/ 119 | anvil www.guru3d.com/files-details/anvils-storage-utilities-download.html 120 | hdsentinel www.hdsentinel.com 121 | hdsentinel-zh www.52pojie.cn/forum.php?mod=viewthread&tid=1429692 122 | rstudio www.r-studio.com/zhcn/data-recovery-software/ 123 | recuva www.ccleaner.com/recuva 124 | ssd-fresh www.abelssoft.de/en/windows/system-utilities/ssd-fresh 125 | 126 | rufus rufus.ie 127 | ventoy www.ventoy.net 128 | wmct-10 www.microsoft.com/zh-cn/software-download/windows10 129 | wmct-11 www.microsoft.com/zh-cn/software-download/windows11 130 | cmwtat cmwtat.cloudmoe.com 131 | vcrt-latest-x64 aka.ms/vs/17/release/vc_redist.x64.exe 132 | vcrt-latest-x86 aka.ms/vs/17/release/vc_redist.x86.exe 133 | vcrt-latest-arm64 aka.ms/vs/17/release/vc_redist.arm64.exe 134 | vcrtpack www.techpowerup.com/download/visual-c-redistributable-runtime-package-all-in-one/ 135 | vcrtpack-ya www.mefcl.com/yxk-dreamcast.html 136 | dx-repair blog.csdn.net/vbcom/article/details/6962388 137 | intel-dsa-download www.intel.cn/content/www/cn/zh/support/detect.html 138 | intel-dsa-access www.intel.cn/content/www/cn/zh/support/intel-driver-support-assistant.html 139 | easyu www.upe.net 140 | wepe www.wepe.com.cn 141 | edgeless home.edgeless.top 142 | firpe www.firpe.cn 143 | hotpe www.hotpe.top 144 | uui www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/ 145 | wtga bbs.luobotou.org/thread-761-1-1.html 146 | wtga-gh github.com/nkc3g4/wtg-assistant 147 | 148 | p95 www.mersenne.org/download/ 149 | furmark www.geeks3d.com/furmark/ 150 | 151 | cru www.monitortests.com/forum/Thread-Custom-Resolution-Utility-CRU 152 | ufotest www.testufo.com 153 | keyboard-trigger www.zfrontier.com/lab/keyboardTester 154 | monitor-test http://www.lagom.nl/lcd-test/zhs_index.php 155 | mouse-test-web cps-check.com 156 | monitor-bdw linustechtips.com/topic/729232-guide-to-display-cables-adapters-v2/ 157 | mouse-rate-checker clickspeeder.com/mouse-rate-checker/ 158 | passmark-keytest www.passmark.com/products/keytest/index.php 159 | 160 | chipgenius www.mydigit.cn/forum.php?mod=viewthread&tid=263544 161 | geekuninstaller geekuninstaller.com 162 | windbg docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debugger-download-tools 163 | windbg-msstore apps.microsoft.com/detail/9pgjgd53tn86 164 | everything www.voidtools.com/zh-cn/ 165 | windirstat windirstat.net 166 | wiztree www.diskanalyzer.com 167 | spacesniffer http://www.uderzo.it/main_products/space_sniffer/ 168 | desktopok www.softwareok.com/?Download=DesktopOK 169 | ccleaner www.ccleaner.com 170 | 7zip 7-zip.org 171 | nanazip github.com/M2Team/NanaZip 172 | nanazip-msstore apps.microsoft.com/detail/9n8g7tscl18r 173 | bandizip www.bandisoft.com/bandizip/ 174 | bandizip-dl www.bandisoft.com/bandizip/dl/ 175 | bandizip-v6 www.bandisoft.com/bandizip/old/6/ 176 | bandizip-d-v6 it.bandisoft.com/bandizip/dl.php?old 177 | bandizip-d-v6-portable it.bandisoft.com/bandizip/dl.php?old-portable 178 | fastcopy fastcopy.jp 179 | choeazycopy github.com/Cinchoo/ChoEazyCopy 180 | freefilesync freefilesync.org 181 | softcnkiller blog.csdn.net/hfhbutn/article/details/104799162 182 | speedtest www.speedtest.net 183 | speedtest-cn www.speedtest.cn 184 | powertoys docs.microsoft.com/zh-cn/windows/powertoys/ 185 | autoruns docs.microsoft.com/en-us/sysinternals/downloads/autoruns 186 | eartrumpet eartrumpet.app 187 | eartrumpet-msstore apps.microsoft.com/detail/9nblggh516xp 188 | snipaste zh.snipaste.com 189 | snipaste-msstore apps.microsoft.com/detail/9p1wxpkb68kx 190 | ditto ditto-cp.sourceforge.io 191 | ditto-msstore apps.microsoft.com/detail/9nblggh3zbjq 192 | utools www.u.tools 193 | winaero-tweaker winaerotweaker.com 194 | quicklook-msstore apps.microsoft.com/detail/9nv4bs3l1h4s 195 | revo-uninst www.revouninstaller.com 196 | uninstall-tool crystalidea.com/uninstall-tool 197 | landrop landrop.app 198 | duplicatecleaner www.duplicatecleaner.com 199 | autosizer http://www.southbaypc.com/AutoSizer/ 200 | uninst-adobe-cc helpx.adobe.com/cn/creative-cloud/help/uninstall-creative-cloud-desktop-app.html 201 | lenovo-winupdate iknow.lenovo.com.cn/detail/dc_178562.html 202 | fancontrol github.com/Rem0o/FanControl.Releases 203 | 204 | ventoy-d-bfsu-windows mirrors.bfsu.edu.cn/github-release/ventoy/Ventoy/Ventoy%201.0.97%20release/ventoy-1.0.97-windows.zip 205 | ventoy-d-bfsu-linux mirrors.bfsu.edu.cn/github-release/ventoy/Ventoy/Ventoy%201.0.97%20release/ventoy-1.0.97-linux.tar.gz 206 | ventoy-d-bfsu-livecd mirrors.bfsu.edu.cn/github-release/ventoy/Ventoy/Ventoy%201.0.97%20release/ventoy-1.0.97-livecd.iso 207 | powertoys-d-bfsu-x64-user mirrors.bfsu.edu.cn/github-release/microsoft/PowerToys/Release%20v0.80.1/PowerToysUserSetup-0.80.1-x64.exe 208 | powertoys-d-bfsu-x64-system mirrors.bfsu.edu.cn/github-release/microsoft/PowerToys/Release%20v0.80.1/PowerToysSetup-0.80.1-x64.exe 209 | powertoys-d-bfsu-arm64-user mirrors.bfsu.edu.cn/github-release/microsoft/PowerToys/Release%20v0.80.1/PowerToysUserSetup-0.80.1-arm64.exe 210 | powertoys-d-bfsu-arm64-system mirrors.bfsu.edu.cn/github-release/microsoft/PowerToys/Release%20v0.80.1/PowerToysSetup-0.80.1-arm64.exe 211 | nanazip-d-bfsu mirrors.bfsu.edu.cn/github-release/M2Team/NanaZip/NanaZip%202.0%20Update%201%20%282.0.450.0%29/40174MouriNaruto.NanaZip_2.0.450.0_gnj4mf6z9tkrc.msixbundle 212 | cdm-d-bfsu mirrors.bfsu.edu.cn/osdn/crystaldiskmark/77936/CrystalDiskMark8_0_4c.zip 213 | cdm-d-bfsu-shizuku mirrors.bfsu.edu.cn/osdn/crystaldiskmark/77936/CrystalDiskMark8_0_4cShizuku.zip 214 | cdi-d-bfsu mirrors.bfsu.edu.cn/osdn/crystaldiskinfo/78992/CrystalDiskInfo9_1_1.zip 215 | cdi-d-bfsu-shizuku mirrors.bfsu.edu.cn/osdn/crystaldiskinfo/78992/CrystalDiskInfo9_1_1Shizuku.zip 216 | cdi-d-bfsu-kureikei mirrors.bfsu.edu.cn/osdn/crystaldiskinfo/78992/CrystalDiskInfo9_1_1KureiKei.zip 217 | 218 | guide-xtu-1 www.bilibili.com/video/BV1Sp4y1e7mr 219 | guide-amd-ryzen-master-1 www.bilibili.com/video/BV1bs411E79U 220 | guide-ctr-1 www.bilibili.com/video/BV1DP4y1s76A 221 | guide-ctr-2 www.bilibili.com/video/BV12v4y1Z7kJ 222 | guide-ctr-3 zhuanlan.zhihu.com/p/324617420 223 | guide-ryzen-controller-1 zhuanlan.zhihu.com/p/166356750 224 | guide-cpu-burning-1 www.bilibili.com/video/BV1Uk4y1m7a4 225 | guide-mem-overclock-1 zhuanlan.zhihu.com/p/119451297 226 | guide-mem-overclock-2 www.bilibili.com/read/cv8789214 227 | 228 | p-itellyou-msdn t.bilibili.com/599980727663243686 229 | 230 | memes-d-noncdn pan.baidu.com/s/1w6k9YIwArFx5To8hgEmATg 231 | 232 | doc-1-1 d1.tool.pc.wiki/doc/1/文案.docx 233 | doc-1-2 d1.tool.pc.wiki/doc/1/水冷横评测试计划v1.0-数据.docx 234 | -------------------------------------------------------------------------------- /build/build.ts: -------------------------------------------------------------------------------- 1 | import { parse as parseYaml } from "https://deno.land/std@0.102.0/encoding/yaml.ts" 2 | import { encodeText, decodeText } from "https://cdn.jsdelivr.net/gh/stackinspector/DenoBase@latest/textcodec.ts" 3 | import { insert } from "https://cdn.jsdelivr.net/gh/stackinspector/DenoBase@latest/insert-string.ts" 4 | 5 | const dynamic: Record Promise> = { 6 | buttons: async () => { 7 | type Button = { 8 | type: "button" 9 | target: string 10 | text: string | null 11 | } 12 | 13 | type Text = { 14 | type: "text" 15 | footer: boolean 16 | text: string 17 | } 18 | 19 | type List = { 20 | type: "list" 21 | id: string 22 | text: string 23 | content: (Button | Text)[] 24 | } 25 | 26 | type Container = { 27 | type: "container" 28 | content: (Button | Text | List)[] 29 | } 30 | 31 | const handleButton = (input: Button, top: boolean): string => input.target === null ? 32 | `

${input.text}

` : 33 | `

${input.text}

` 34 | 35 | const handleText = (input: Text): string => `${input.text}` 36 | 37 | const handleList = (input: List): string => `

${input.text}

${input.content.map(matcher(false)).join("")}
` 38 | 39 | const matcher = (top: boolean) => (input: Button | Text | List): string => { 40 | switch (input.type) { 41 | case "button": return handleButton(input, top) 42 | case "text": return handleText(input) 43 | case "list": { 44 | if (!top) throw new Error("no recursive lists") 45 | return handleList(input) 46 | } 47 | default: throw new Error("unknown type") 48 | } 49 | } 50 | 51 | const handleContainer = (input: Container): string => `
${input.content.map(matcher(true)).join("")}
` 52 | 53 | return handleContainer(parseYaml(await Deno.readTextFile("./build/buttons.yml")) as Container) 54 | } 55 | } 56 | 57 | const gitProc = Deno.run({ 58 | cmd: `git log -1 --pretty=format:"%h"`.split(" "), 59 | stdout: "piped", 60 | }) 61 | const copyright = ` 66 | ` 67 | 68 | const inserts: Map = new Map() 69 | for await (const item of Deno.readDir("./build/modules")) { 70 | if (!item.isFile) continue 71 | inserts.set(`/*{{${item.name}}}*/`, await Deno.readTextFile("./build/modules/" + item.name)) 72 | } 73 | for (const [name, func] of Object.entries(dynamic)) { 74 | inserts.set(``, await func()) 75 | } 76 | 77 | const minify = async (input: string): Promise => { 78 | const nodeProc = Deno.run({ 79 | cmd: `html-minifier.cmd --collapse-whitespace --remove-comments --remove-tag-whitespace --minify-css true --minify-js true`.split(" "), 80 | stdin: "piped", stdout: "piped", 81 | }) 82 | await nodeProc.stdin.write(encodeText(input)) 83 | nodeProc.stdin.close() 84 | return decodeText(await nodeProc.output()) 85 | } 86 | 87 | for await (const item of Deno.readDir("./build/pages")) { 88 | if (!(item.isFile && item.name.substring(item.name.length - 5) === ".html")) continue 89 | await Deno.writeTextFile( 90 | `./wwwroot/${item.name}`, 91 | copyright + await minify(insert(await Deno.readTextFile(`./build/pages/${item.name}`), inserts)) 92 | ) 93 | } 94 | -------------------------------------------------------------------------------- /build/buttons.yml: -------------------------------------------------------------------------------- 1 | type: container 2 | content: 3 | - type: button 4 | target: home 5 | text: "老弟一号个人空间" 6 | - type: button 7 | target: store 8 | text: "LDTstore淘宝店铺" 9 | - type: list 10 | id: yjws 11 | text: "阅机无数话题" 12 | content: 13 | - type: button 14 | target: yjws 15 | text: "进入B站话题" 16 | - type: button 17 | target: yjws-guide-21 18 | text: "投稿快速指南 Rev 2.1" 19 | - type: button 20 | target: yjws-spec-21 21 | text: "话题管理与投稿规范 Rev 2.1" 22 | - type: list 23 | id: icu 24 | text: "装机ICU话题" 25 | content: 26 | - type: button 27 | target: icu 28 | text: "进入B站话题" 29 | - type: button 30 | target: icu-spec-1 31 | text: "初版投稿规范" 32 | - type: button 33 | target: icu-spec-11 34 | text: "补充" 35 | - type: list 36 | id: live 37 | text: "直播间" 38 | content: 39 | - type: button 40 | target: live-room 41 | text: "进入直播间" 42 | - type: button 43 | target: live-faq-1 44 | text: "直播间常见问题FAQ" 45 | - type: button 46 | target: live-rec-yjws 47 | text: "阅机无数录播" 48 | - type: button 49 | target: live-rec-other 50 | text: "其他重要录播" 51 | - type: list 52 | id: group 53 | text: "硬件讨论群" 54 | content: 55 | - type: button 56 | target: null 57 | text: "一群 1005059704" 58 | - type: button 59 | target: group-readme-1 60 | text: "核心群入群测试" 61 | - type: button 62 | target: home-ops 63 | text: "运营信息发布账号" 64 | - type: list 65 | id: outer 66 | text: "站外官方账号" 67 | content: 68 | - type: button 69 | target: outer-zh 70 | text: "知乎 老弟一号" # LaodiTeachTips 71 | # - type: button 72 | # target: outer-ac 73 | # text: "AcFun LaodiTeachTips" 74 | - type: button 75 | target: outer-yt 76 | text: "YouTube LaodiTeachTips" 77 | - type: button 78 | target: outer-wb 79 | text: "微博 LaodiTeachTips" 80 | - type: button 81 | target: outer-mz 82 | text: "喵喵折 LaodiTeachTips" 83 | # - type: button 84 | # target: outer-ks 85 | # text: "快手 LDTeachTips" # LaodiTeachTips 86 | # - type: button 87 | # target: null 88 | # text: "抖音 LaodiTeachTips" # LaodiTeachtips 89 | # - type: button 90 | # target: outer-xg 91 | # text: "西瓜视频 LaodiTeachTips" 92 | # - type: button 93 | # target: outer-tt 94 | # text: "今日头条 LaodiTeachTips" 95 | # - type: button 96 | # target: outer-bh 97 | # text: "好看视频 LaodiTeachTips" 98 | - type: text 99 | footer: true 100 | text: "以上均为显示昵称
关于站外账号的详细信息
请参阅运营信息发布账号的置顶动态" 101 | - type: button 102 | target: afdian 103 | text: "赞助老弟一号" 104 | - type: list 105 | id: business 106 | text: "商务合作" 107 | content: 108 | - type: text 109 | footer: false 110 | text: "商务合作请加微信13869651328,并注明合作方与合作内容。目前只接受数码领域相关合作,产品评测优先;不接受干涉测评、跨领域合作以及其他平台入驻。感谢您的认可。" 111 | -------------------------------------------------------------------------------- /build/modules/base.css: -------------------------------------------------------------------------------- 1 | /* base */ 2 | 3 | body { 4 | text-align: center; 5 | font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, WenQuanYi Micro Hei, sans-serif; 6 | } 7 | 8 | a { 9 | text-decoration: none; 10 | } 11 | 12 | /* head */ 13 | 14 | img.logo { 15 | vertical-align: middle; 16 | } 17 | 18 | /* links */ 19 | 20 | a.link { 21 | color: #00a1d6; 22 | } 23 | 24 | a.hidden-link { 25 | color: inherit; 26 | } 27 | 28 | a.link:hover, a.hidden-link:hover { 29 | color: #00b5e5; 30 | } 31 | 32 | /* footer */ 33 | 34 | div#footer-container { 35 | bottom: 0; 36 | } 37 | 38 | div#footer-container p { 39 | color: #999; 40 | } 41 | -------------------------------------------------------------------------------- /build/modules/buttons.css: -------------------------------------------------------------------------------- 1 | /* containers */ 2 | 3 | div.button-container { 4 | margin: 0 auto; 5 | max-width: 300px; 6 | } 7 | 8 | div.button-container p { 9 | margin-block-start: 0.8em; 10 | margin-block-end: 0.8em; 11 | } 12 | 13 | div.detail-container { 14 | display: none; 15 | } 16 | 17 | div.detail-container p { 18 | margin-block-start: 0.6em; 19 | margin-block-end: 0.6em; 20 | } 21 | 22 | /* buttons */ 23 | 24 | a.button { 25 | cursor: pointer; 26 | display: inline-block; 27 | width: 100%; 28 | border-radius: 5px; 29 | line-height: 2.4; 30 | font-size: 1.2em; 31 | color: #fff; 32 | background-color: #00a1d6; 33 | } 34 | 35 | a.button-detail { 36 | font-size: 1.1em; 37 | border: 1px solid #00a1d6; 38 | color: #00a1d6; 39 | background-color: #fff; 40 | } 41 | 42 | a.button-nolink { 43 | cursor: default; 44 | } 45 | 46 | a.button:hover { 47 | color: #fff; 48 | background-color: #00b5e5; 49 | } 50 | 51 | a.button-detail:hover { 52 | background-color: #00a1d6; 53 | } 54 | 55 | /* texts */ 56 | 57 | span.text { 58 | display: inline-block; 59 | width: 100%; 60 | text-align: justify; 61 | font-size: 1.1em; 62 | } 63 | 64 | span.text-detail-footer { 65 | font-size: 1em; 66 | } 67 | -------------------------------------------------------------------------------- /build/modules/change-visible.js: -------------------------------------------------------------------------------- 1 | /** 2 | * change the visibility of an element with the specified id 3 | * @param {string} id target element id 4 | * @param {boolean} state `true` for `block` and `false` for `none` 5 | * @returns {void} 6 | */ 7 | function change(id) { 8 | var el = document.getElementById(id) 9 | el.style.display = (el.style.display !== "block") ? "block" : "none" 10 | } -------------------------------------------------------------------------------- /build/modules/footer.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /build/modules/meta.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /build/pages/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | /*{{meta.html}}*/ 6 | 7 | 8 | 老弟一号&LDTstore 9 | 13 | 14 | 15 | 16 |

17 | 18 | 老弟一号 & LDTstore 19 |

20 | 21 | 22 | 23 | /*{{footer.html}}*/ 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /docker/redirect/dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:latest 2 | WORKDIR /usr/src/app 3 | COPY ./hr /usr/src/app 4 | ENTRYPOINT ["./hr", "-p", "9000", "-c", "r,https://s0.ldt.pc.wiki/redirect/r;r2,https://s0.ldt.pc.wiki/redirect/r2;mirror,https://s0.ldt.pc.wiki/redirect/mirror;mirror-cn,https://s0.ldt.pc.wiki/redirect/mirror;mirror-os,https://s0.ldt.pc.wiki/redirect/mirror", "-h", "x-scf-request-id"] 5 | -------------------------------------------------------------------------------- /nginx-domains/cert-ldtstore-domains.conf: -------------------------------------------------------------------------------- 1 | ssl_certificate /server/certs/ldtstore-domains/fullchain.pem; 2 | ssl_certificate_key /server/certs/ldtstore-domains/key.pem; 3 | ssl_trusted_certificate /server/certs/ldtstore-domains/fullchain.pem; 4 | -------------------------------------------------------------------------------- /nginx-domains/cert-ldtstore-old-domain.conf: -------------------------------------------------------------------------------- 1 | ssl_certificate /server/certs/ldtstore-old-domain/fullchain.pem; 2 | ssl_certificate_key /server/certs/ldtstore-old-domain/key.pem; 3 | ssl_trusted_certificate /server/certs/ldtstore-old-domain/fullchain.pem; 4 | -------------------------------------------------------------------------------- /nginx-domains/guide-page-redirect.conf: -------------------------------------------------------------------------------- 1 | location /ldtools { 2 | return 301 /; 3 | } 4 | 5 | location / { 6 | return 301 /; 7 | } 8 | -------------------------------------------------------------------------------- /nginx-domains/hsts.conf: -------------------------------------------------------------------------------- 1 | add_header Strict-Transport-Security "max-age=63072000" always; 2 | -------------------------------------------------------------------------------- /nginx-domains/http.conf: -------------------------------------------------------------------------------- 1 | listen 80; 2 | listen [::]:80; 3 | 4 | limit_req zone=http; 5 | 6 | return 301 https://$server_name$request_uri; 7 | -------------------------------------------------------------------------------- /nginx-domains/nginx-domestic.conf: -------------------------------------------------------------------------------- 1 | # NGINX Config for LDTstore short & reserved domains Rev 0.1.0 2 | # Copyright 2021-2024 stackinspector. MIT Lincese. 3 | 4 | user www-data; 5 | pcre_jit on; 6 | worker_processes auto; 7 | error_log /server/nginx/logs/error debug; 8 | load_module /usr/lib/nginx/modules/ngx_http_brotli_filter_module.so; 9 | load_module /usr/lib/nginx/modules/ngx_http_brotli_static_module.so; 10 | 11 | events {} 12 | 13 | http { 14 | # generated from the following argument list string and JavaScript code 15 | # 'time_iso8601 server_name remote_addr remote_user request http_referer http_user_agent http_accept http_x_forwarded_for http_cookie status bytes_sent body_bytes_sent connection connection_requests' 16 | # `log_format json_detailed escape=json '{` + args.replace(/ /g, ' ').split(' ').map(arg => `"${arg}":"$${arg}"`).join(`,`) + `}';` 17 | log_format json_detailed escape=json '{"time_iso8601":"$time_iso8601","server_name":"$server_name","remote_addr":"$remote_addr","remote_user":"$remote_user","request":"$request","http_referer":"$http_referer","http_user_agent":"$http_user_agent","http_accept":"$http_accept","http_x_forwarded_for":"$http_x_forwarded_for","http_cookie":"$http_cookie","status":"$status","bytes_sent":"$bytes_sent","body_bytes_sent":"$body_bytes_sent","connection":"$connection","connection_requests":"$connection_requests"}'; 18 | access_log /server/nginx/logs/access json_detailed; 19 | 20 | # content type 21 | charset utf-8; 22 | include /etc/nginx/mime.types; 23 | 24 | # performance optimizations 25 | sendfile on; 26 | tcp_nopush on; 27 | 28 | # compress 29 | gzip on; 30 | gzip_vary on; 31 | gzip_proxied any; 32 | gzip_comp_level 6; 33 | gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml; 34 | brotli on; 35 | brotli_comp_level 6; 36 | brotli_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml; 37 | 38 | # traffic limit zones 39 | limit_req_zone $binary_remote_addr zone=redirect:128m rate=100r/s; 40 | limit_req_zone $binary_remote_addr zone=http:128m rate=20r/s; 41 | limit_req_zone $binary_remote_addr zone=page:128m rate=20r/s; 42 | limit_req_status 444; 43 | 44 | # tls 45 | 46 | ssl_session_timeout 1d; 47 | ssl_session_cache shared:SSL:10m; # about 40000 sessions 48 | ssl_session_tickets off; 49 | 50 | # curl https://ssl-config.mozilla.org/ffdhe4096.txt > /server/certs/dh4096.pem 51 | ssl_dhparam /server/certs/dh4096.pem; 52 | 53 | ssl_protocols TLSv1.2 TLSv1.3; 54 | # https://ssl-config.mozilla.org/#server=nginx&version=1.22.1&config=intermediate&openssl=3.0.9&guideline=5.7 55 | ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305; 56 | ssl_prefer_server_ciphers off; 57 | 58 | ssl_stapling on; 59 | ssl_stapling_verify on; 60 | 61 | # for mainland server 62 | resolver 119.29.29.29; 63 | 64 | # deny requests with no/wrong server_name 65 | 66 | server { 67 | listen 80 default_server; 68 | listen [::]:80 default_server; 69 | 70 | return 444; 71 | } 72 | 73 | server { 74 | listen 443 ssl http2 default_server; 75 | listen [::]:443 ssl http2 default_server; 76 | 77 | ssl_reject_handshake on; 78 | } 79 | 80 | # domains 81 | 82 | # old main (guide page) 83 | 84 | server { 85 | server_name ldtstore.com.cn; 86 | include /server/nginx/http.conf; 87 | } 88 | 89 | server { 90 | server_name ldtstore.com.cn; 91 | include /server/nginx/cert-ldtstore-old-domain.conf; 92 | include /server/nginx/page.conf; 93 | root /server/pages/guide-page; 94 | include /server/nginx/guide-page-redirect.conf; 95 | } 96 | 97 | # old redirect 98 | 99 | server { 100 | server_name r.ldtstore.com.cn; 101 | include /server/nginx/cert-ldtstore-old-domain.conf; 102 | include /server/nginx/redirect.conf; 103 | 104 | location / { 105 | # TODO pure path 106 | return 301 https://r.ldt.pc.wiki$request_uri; 107 | } 108 | } 109 | 110 | # reserved for dynamic extends 111 | 112 | include /server/nginx-extends/extends.conf; 113 | } 114 | -------------------------------------------------------------------------------- /nginx-domains/nginx-intl.conf: -------------------------------------------------------------------------------- 1 | # NGINX Config for LDTstore short & reserved domains Rev 0.1.0 2 | # Copyright 2021-2024 stackinspector. MIT Lincese. 3 | 4 | user www-data; 5 | pcre_jit on; 6 | worker_processes auto; 7 | error_log /server/nginx/logs/error debug; 8 | load_module /usr/lib/nginx/modules/ngx_http_brotli_filter_module.so; 9 | load_module /usr/lib/nginx/modules/ngx_http_brotli_static_module.so; 10 | 11 | events {} 12 | 13 | http { 14 | # generated from the following argument list string and JavaScript code 15 | # 'time_iso8601 server_name remote_addr remote_user request http_referer http_user_agent http_accept http_x_forwarded_for http_cookie status bytes_sent body_bytes_sent connection connection_requests' 16 | # `log_format json_detailed escape=json '{` + args.replace(/ /g, ' ').split(' ').map(arg => `"${arg}":"$${arg}"`).join(`,`) + `}';` 17 | log_format json_detailed escape=json '{"time_iso8601":"$time_iso8601","server_name":"$server_name","remote_addr":"$remote_addr","remote_user":"$remote_user","request":"$request","http_referer":"$http_referer","http_user_agent":"$http_user_agent","http_accept":"$http_accept","http_x_forwarded_for":"$http_x_forwarded_for","http_cookie":"$http_cookie","status":"$status","bytes_sent":"$bytes_sent","body_bytes_sent":"$body_bytes_sent","connection":"$connection","connection_requests":"$connection_requests"}'; 18 | access_log /server/nginx/logs/access json_detailed; 19 | 20 | # content type 21 | charset utf-8; 22 | include /etc/nginx/mime.types; 23 | 24 | # performance optimizations 25 | sendfile on; 26 | tcp_nopush on; 27 | 28 | # compress 29 | gzip on; 30 | gzip_vary on; 31 | gzip_proxied any; 32 | gzip_comp_level 6; 33 | gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml; 34 | brotli on; 35 | brotli_comp_level 6; 36 | brotli_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml; 37 | 38 | # traffic limit zones 39 | limit_req_zone $binary_remote_addr zone=redirect:128m rate=100r/s; 40 | limit_req_zone $binary_remote_addr zone=http:128m rate=20r/s; 41 | limit_req_zone $binary_remote_addr zone=page:128m rate=20r/s; 42 | limit_req_status 444; 43 | 44 | # tls 45 | 46 | ssl_session_timeout 1d; 47 | ssl_session_cache shared:SSL:10m; # about 40000 sessions 48 | ssl_session_tickets off; 49 | 50 | # curl https://ssl-config.mozilla.org/ffdhe4096.txt > /server/certs/dh4096.pem 51 | ssl_dhparam /server/certs/dh4096.pem; 52 | 53 | ssl_protocols TLSv1.2 TLSv1.3; 54 | # https://ssl-config.mozilla.org/#server=nginx&version=1.22.1&config=intermediate&openssl=3.0.9&guideline=5.7 55 | ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305; 56 | ssl_prefer_server_ciphers off; 57 | 58 | ssl_stapling on; 59 | ssl_stapling_verify on; 60 | 61 | # for overseas server 62 | resolver 1.1.1.1; 63 | 64 | # deny requests with no/wrong server_name 65 | 66 | server { 67 | listen 80 default_server; 68 | listen [::]:80 default_server; 69 | 70 | return 444; 71 | } 72 | 73 | server { 74 | listen 443 ssl http2 default_server; 75 | listen [::]:443 ssl http2 default_server; 76 | 77 | ssl_reject_handshake on; 78 | } 79 | 80 | # domains 81 | 82 | # ldtools lab 83 | 84 | server { 85 | server_name lab.ldt.tools; 86 | include /server/nginx/http.conf; 87 | } 88 | 89 | server { 90 | server_name lab.ldt.tools; 91 | include /server/nginx/cert-ldtstore-domains.conf; 92 | include /server/nginx/page.conf; 93 | root /server/pages/ldtools-lab; 94 | } 95 | 96 | # old main (guide page) 97 | 98 | server { 99 | server_name ldtstore.net; 100 | include /server/nginx/http.conf; 101 | } 102 | 103 | server { 104 | server_name ldtstore.net; 105 | include /server/nginx/cert-ldtstore-domains.conf; 106 | include /server/nginx/page.conf; 107 | root /server/pages/guide-page-intl; 108 | include /server/nginx/guide-page-redirect.conf; 109 | } 110 | 111 | # ldtools short domains 112 | 113 | server { 114 | server_name ldt.tools; 115 | include /server/nginx/cert-ldtstore-domains.conf; 116 | include /server/nginx/redirect.conf; 117 | 118 | location / { 119 | return 302 https://r.ldt.pc.wiki/r/fw-ldt-tools; 120 | } 121 | } 122 | 123 | server { 124 | server_name ldtools.ltd; 125 | include /server/nginx/cert-ldtstore-domains.conf; 126 | include /server/nginx/redirect.conf; 127 | 128 | location / { 129 | return 302 https://r.ldt.pc.wiki/r/fw-ldtools; 130 | } 131 | } 132 | 133 | server { 134 | server_name ldtool.ltd; 135 | include /server/nginx/cert-ldtstore-domains.conf; 136 | include /server/nginx/redirect.conf; 137 | 138 | location / { 139 | return 302 https://r.ldt.pc.wiki/r/fw-ldtool; 140 | } 141 | } 142 | 143 | server { 144 | server_name p.ldt.tools; 145 | include /server/nginx/cert-ldtstore-domains.conf; 146 | include /server/nginx/redirect.conf; 147 | 148 | location / { 149 | return 302 https://r.ldt.pc.wiki/r/fw-ldt-tools-plain; 150 | } 151 | } 152 | 153 | server { 154 | server_name d.ldt.tools; 155 | include /server/nginx/cert-ldtstore-domains.conf; 156 | include /server/nginx/redirect.conf; 157 | 158 | location / { 159 | # TODO pure path 160 | return 302 https://r.ldt.pc.wiki/mirror$request_uri; 161 | } 162 | } 163 | 164 | # ldtstore reserved domains 165 | 166 | server { 167 | server_name ldtstore.cn; 168 | include /server/nginx/cert-ldtstore-domains.conf; 169 | include /server/nginx/redirect.conf; 170 | 171 | location / { 172 | return 302 https://r.ldt.pc.wiki/r/fw-ldt-cn; 173 | } 174 | } 175 | 176 | server { 177 | server_name laoditeachtips.com; 178 | include /server/nginx/cert-ldtstore-domains.conf; 179 | include /server/nginx/redirect.conf; 180 | 181 | location / { 182 | return 302 https://r.ldt.pc.wiki/r/fw-ltt-com; 183 | } 184 | } 185 | 186 | server { 187 | server_name laoditeachtips.cn; 188 | include /server/nginx/cert-ldtstore-domains.conf; 189 | include /server/nginx/redirect.conf; 190 | 191 | location / { 192 | return 302 https://r.ldt.pc.wiki/r/fw-ltt-cn; 193 | } 194 | } 195 | 196 | # other reserved domains 197 | 198 | server { 199 | server_name pcdiy.icu; 200 | include /server/nginx/cert-ldtstore-domains.conf; 201 | include /server/nginx/redirect.conf; 202 | 203 | location / { 204 | return 302 https://r.ldt.pc.wiki/r/fw-icu-newtopic; 205 | } 206 | } 207 | 208 | # reserved for dynamic extends 209 | 210 | include /server/nginx-extends/extends.conf; 211 | } 212 | -------------------------------------------------------------------------------- /nginx-domains/page.conf: -------------------------------------------------------------------------------- 1 | listen 443 ssl http2; 2 | listen [::]:443 ssl http2; 3 | 4 | include /server/nginx/hsts.conf; 5 | 6 | limit_req zone=page; 7 | 8 | index index.html; 9 | 10 | location = / {} 11 | 12 | location = /index.html {} 13 | 14 | include /server/nginx/paths.conf; 15 | -------------------------------------------------------------------------------- /nginx-domains/paths.conf: -------------------------------------------------------------------------------- 1 | location = /robots.txt { 2 | return 404; 3 | } 4 | 5 | location = /sitemap.xml { 6 | return 404; 7 | } 8 | 9 | location = /favicon.ico { 10 | return 302 https://s0.ldt.pc.wiki/image/shared/laodi-64px.png; 11 | } 12 | -------------------------------------------------------------------------------- /nginx-domains/redirect.conf: -------------------------------------------------------------------------------- 1 | listen 80; 2 | listen [::]:80; 3 | listen 443 ssl http2; 4 | listen [::]:443 ssl http2; 5 | 6 | include /server/nginx/hsts.conf; 7 | 8 | limit_req zone=redirect; 9 | 10 | include /server/nginx/paths.conf; 11 | -------------------------------------------------------------------------------- /nginx-main/cert-ldtstore-main.conf: -------------------------------------------------------------------------------- 1 | ssl_certificate /server/certs/ldtstore-main/fullchain.pem; 2 | ssl_certificate_key /server/certs/ldtstore-main/key.pem; 3 | ssl_trusted_certificate /server/certs/ldtstore-main/fullchain.pem; 4 | -------------------------------------------------------------------------------- /nginx-main/hsts.conf: -------------------------------------------------------------------------------- 1 | add_header Strict-Transport-Security "max-age=63072000" always; 2 | -------------------------------------------------------------------------------- /nginx-main/nginx.conf: -------------------------------------------------------------------------------- 1 | # NGINX Config for LDTstore main domains Rev 0.1.0 2 | # Copyright 2021-2024 stackinspector. MIT Lincese. 3 | 4 | user www-data; 5 | pcre_jit on; 6 | worker_processes auto; 7 | error_log /server/nginx/logs/error debug; 8 | load_module /usr/lib/nginx/modules/ngx_http_brotli_filter_module.so; 9 | load_module /usr/lib/nginx/modules/ngx_http_brotli_static_module.so; 10 | 11 | events {} 12 | 13 | http { 14 | # generated from the following argument list string and JavaScript code 15 | # 'time_iso8601 server_name remote_addr remote_user request http_referer http_user_agent http_accept http_x_forwarded_for http_cookie status bytes_sent body_bytes_sent connection connection_requests' 16 | # `log_format json_detailed escape=json '{` + args.replace(/ /g, ' ').split(' ').map(arg => `"${arg}":"$${arg}"`).join(`,`) + `}';` 17 | log_format json_detailed escape=json '{"time_iso8601":"$time_iso8601","server_name":"$server_name","remote_addr":"$remote_addr","remote_user":"$remote_user","request":"$request","http_referer":"$http_referer","http_user_agent":"$http_user_agent","http_accept":"$http_accept","http_x_forwarded_for":"$http_x_forwarded_for","http_cookie":"$http_cookie","status":"$status","bytes_sent":"$bytes_sent","body_bytes_sent":"$body_bytes_sent","connection":"$connection","connection_requests":"$connection_requests"}'; 18 | access_log /server/nginx/logs/access json_detailed; 19 | 20 | # content type 21 | charset utf-8; 22 | include /etc/nginx/mime.types; 23 | 24 | # performance optimizations 25 | sendfile on; 26 | tcp_nopush on; 27 | 28 | # compress 29 | gzip on; 30 | gzip_vary on; 31 | gzip_proxied any; 32 | gzip_comp_level 6; 33 | gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml; 34 | brotli on; 35 | brotli_comp_level 6; 36 | brotli_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml; 37 | 38 | # traffic limit zones 39 | limit_req_zone $binary_remote_addr zone=redirect:128m rate=100r/s; 40 | limit_req_zone $binary_remote_addr zone=static:128m rate=100r/s; 41 | limit_req_status 444; 42 | 43 | # tls 44 | 45 | ssl_session_timeout 1d; 46 | ssl_session_cache shared:SSL:10m; # about 40000 sessions 47 | ssl_session_tickets off; 48 | 49 | ssl_protocols TLSv1.3; 50 | ssl_prefer_server_ciphers off; 51 | 52 | ssl_stapling on; 53 | ssl_stapling_verify on; 54 | 55 | # for mainland server 56 | resolver 119.29.29.29; 57 | 58 | # services 59 | 60 | server { 61 | listen 54300 ssl http2; 62 | listen [::]:54300 ssl http2; 63 | server_name s0.ldt.pc.wiki; 64 | include /server/nginx/cert-ldtstore-main.conf; 65 | include /server/nginx/static.conf; 66 | add_header Access-Control-Allow-Origin *; 67 | root /server/static/s0-ldt; 68 | } 69 | 70 | server { 71 | listen 54301 ssl http2; 72 | listen [::]:54301 ssl http2; 73 | server_name ldt.pc.wiki; 74 | include /server/nginx/cert-ldtstore-main.conf; 75 | include /server/nginx/static.conf; 76 | root /server/static/ldt; 77 | } 78 | 79 | server { 80 | listen 54302 ssl http2; 81 | listen [::]:54302 ssl http2; 82 | server_name tool.pc.wiki; 83 | include /server/nginx/cert-ldtstore-main.conf; 84 | include /server/nginx/static.conf; 85 | root /server/static/tool; 86 | } 87 | 88 | server { 89 | listen 54303 ssl http2; 90 | listen [::]:54303 ssl http2; 91 | server_name d1.tool.pc.wiki; 92 | include /server/nginx/cert-ldtstore-main.conf; 93 | include /server/nginx/static.conf; 94 | root /server/static/d1-tool; 95 | } 96 | 97 | server { 98 | listen 54310 ssl http2; 99 | listen [::]:54310 ssl http2; 100 | server_name r.ldt.pc.wiki; 101 | include /server/nginx/cert-ldtstore-main.conf; 102 | include /server/nginx/redirect.conf; 103 | location / { 104 | proxy_buffering off; 105 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 106 | proxy_pass http://127.0.0.1:38010/; 107 | } 108 | } 109 | 110 | # reserved for dynamic extends 111 | 112 | include /server/nginx-extends/extends.conf; 113 | } 114 | -------------------------------------------------------------------------------- /nginx-main/paths.conf: -------------------------------------------------------------------------------- 1 | location = /favicon.ico { 2 | return 302 https://s0.ldt.pc.wiki/image/shared/laodi-64px.png; 3 | } 4 | -------------------------------------------------------------------------------- /nginx-main/redirect.conf: -------------------------------------------------------------------------------- 1 | include /server/nginx/hsts.conf; 2 | 3 | limit_req zone=redirect; 4 | 5 | include /server/nginx/paths.conf; 6 | 7 | root /server/empty-root; 8 | -------------------------------------------------------------------------------- /nginx-main/static.conf: -------------------------------------------------------------------------------- 1 | include /server/nginx/hsts.conf; 2 | 3 | limit_req zone=static; 4 | 5 | include /server/nginx/paths.conf; 6 | 7 | error_page 404 /error.html; 8 | -------------------------------------------------------------------------------- /nginx/nginx.conf: -------------------------------------------------------------------------------- 1 | # NGINX Config for ldtstore.com.cn Rev 0.4.6 2 | # Copyright 2021 stackinspector. MIT Lincese. 3 | 4 | user nginx; 5 | pcre_jit on; 6 | events {} 7 | 8 | error_log logs/error debug; 9 | 10 | http { 11 | 12 | # generated from the following argument list string and JavaScript code 13 | # 'time_iso8601 remote_addr remote_user request http_referer http_user_agent http_accept http_x_forwarded_for http_cookie 14 | # status bytes_sent body_bytes_sent connection connection_requests' 15 | # `log_format json_detailed escape=json '{` + args.replace(/ /g, ' ').split(' ').map(arg => `"${arg}":"$${arg}"`).join(`,`) + `}';` 16 | log_format json_detailed escape=json '{"time_iso8601":"$time_iso8601","remote_addr":"$remote_addr","remote_user":"$remote_user","request":"$request","http_referer":"$http_referer","http_user_agent":"$http_user_agent","http_accept":"$http_accept","http_x_forwarded_for":"$http_x_forwarded_for","http_cookie":"$http_cookie","status":"$status","bytes_sent":"$bytes_sent","body_bytes_sent":"$body_bytes_sent","connection":"$connection","connection_requests":"$connection_requests"}'; 17 | access_log logs/access json_detailed; 18 | 19 | # performance optimizations 20 | sendfile on; 21 | tcp_nopush on; 22 | gzip on; 23 | gzip_types text/css application/javascript; 24 | 25 | # traffic limit 26 | limit_req_zone $binary_remote_addr zone=global:128m rate=10r/s; 27 | limit_req_zone $binary_remote_addr zone=http:128m rate=5r/s; 28 | limit_req_status 444; 29 | 30 | server { 31 | 32 | # forced redirection from http to https 33 | listen 80; 34 | listen [::]:80; 35 | server_name ldtstore.com.cn; 36 | # BEGIN omit if http only (for testing purposes) 37 | 38 | # traffic limit 39 | limit_req zone=http; 40 | 41 | return 301 https://$server_name$request_uri; 42 | 43 | } 44 | 45 | server { 46 | 47 | listen 443 ssl http2; 48 | listen [::]:443 ssl http2; 49 | server_name ldtstore.com.cn; 50 | 51 | # ssl certificate files 52 | ssl_certificate /server/cert/ldtstore.com.cn.pem; 53 | ssl_certificate_key /server/cert/ldtstore.com.cn.key; 54 | # file generated by: `openssl dhparam -out /server/cert/dh4096.pem 4096` 55 | ssl_dhparam /server/cert/dh4096.pem; 56 | 57 | # ssl configurations 58 | ssl_protocols TLSv1.2 TLSv1.3; 59 | # cipher config generated by: https://ssl-config.mozilla.org/#server=nginx&version=1.20.0&config=intermediate&openssl=1.1.1d&guideline=5.6 60 | ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; 61 | ssl_session_cache shared:SSL:10m; 62 | # currently there is no need to configure DNS CAA and OSCP Stapling 63 | 64 | # hsts support 65 | add_header Strict-Transport-Security "max-age=31536000; preload" always; 66 | # END omit if http only (for testing purposes) 67 | 68 | # traffic limit 69 | limit_req zone=global burst=10; 70 | 71 | # files 72 | root /server/wwwroot; 73 | index index.html; 74 | 75 | # content type 76 | charset utf-8; 77 | include /etc/nginx/mime.types; 78 | 79 | # favicon 80 | location = /favicon.ico { 81 | return 308 https://s0.ldtstore.com.cn/shared/laodi-64px.png; 82 | } 83 | 84 | # redirecting server 85 | location /r/ { 86 | proxy_buffering off; 87 | proxy_set_header X-Raw-IP $remote_addr; 88 | proxy_pass http://127.0.0.1:10305/; 89 | } 90 | location /r2/ { 91 | proxy_buffering off; 92 | proxy_set_header X-Raw-IP $remote_addr; 93 | proxy_pass http://127.0.0.1:20610/; 94 | } 95 | 96 | } 97 | 98 | } 99 | -------------------------------------------------------------------------------- /wwwroot/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | Allow: /index.html 4 | Disallow: /* --------------------------------------------------------------------------------