Merge branch 'legacy-notice'

Signed-off-by: 王邈 <shankerwangmiao@gmail.com>
This commit is contained in:
王邈 2019-08-21 22:16:29 -04:00
commit 10c071a07c
No known key found for this signature in database
GPG Key ID: B031E3CA7BFED96E
16 changed files with 754 additions and 882 deletions

View File

@ -31,16 +31,4 @@ babel_js_extensions: 'es6'
exclude: [Gemfile, Gemfile.lock, README.md, gen_robot.sh, vendor, geninfo/, gen_robot.sh, gen_desc.py, Dockerfile*]
# Content Related
new_mirrors:
- gnu-alpha
- mxlinux
- mxlinux-isos
- armbian
- armbian-releases
- rustup
- nix
- dart-pub
- flutter
# vim: ts=2 sts=2 sw=2 expandtab

View File

@ -1,646 +0,0 @@
[
{
"name": "AOSP",
"desc": "Android 操作系统源代码"
},
{
"name": "AUR",
"desc": "Arch Linux 用户软件库"
},
{
"name": "Bananian",
"desc": "为 Banana Pi 制作的,基于官方 Debian 仓库的发行版镜像和软件包仓库"
},
{
"name": "CPAN",
"desc": ""
},
{
"name": "CRAN",
"desc": "R 语言的可执行文件、源代码和说明文件,也收录了各种用户撰写的软件包"
},
{
"name": "CTAN",
"desc": "TeX 的各种发行版、软件包和文档"
},
{
"name": "CocoaPods",
"desc": "Objective-C 和 Swift 的依赖管理器"
},
{
"name": "ELK",
"desc": "现已更名为 Elastic Stack仅保留用作向后兼容"
},
{
"name": "HHVM",
"desc": "Facebook 开发的高性能 PHP 语言虚拟机"
},
{
"name": "Homebrew",
"desc": "Homebrew 的 formula 索引的镜像,二进制预编译包的镜像请见 homebrew-bottles"
},
{
"name": "NetBSD",
"desc": "NetBSD 的安装镜像和部分系统源码"
},
{
"name": "OpenBSD",
"desc": "OpenBSD 的安装镜像和官方软件包仓库"
},
{
"name": "adobe-fonts",
"desc": "Adobe 公司的开源字体"
},
{
"name": "alpine",
"desc": "Alpine Linux 的安装镜像和官方软件包仓库"
},
{
"name": "anaconda",
"desc": "用于科学计算的 Python 发行版"
},
{
"name": "antergos",
"desc": "基于 Arch Linux 的使用 GNOME 3 的发行版,曾用名 Cinnarch"
},
{
"name": "anthon",
"desc": "Anthon Linux (安同 Linux)的安装镜像和官方软件包仓库"
},
{
"name": "aosp-monthly",
"desc": "AOSP 镜像每月打包"
},
{
"name": "apache",
"desc": "Apache 基金会赞助的各个项目"
},
{
"name": "arch4edu",
"desc": "用于 Arch Linux 和 Arch Linux ARM 的非官方软件仓库,主要包含科研、教学所需的各种常用软件"
},
{
"name": "archlinux",
"desc": "Arch Linux 的安装镜像和官方软件包仓库"
},
{
"name": "archlinuxarm",
"desc": "用于 arm 平台的 Arch Linux 镜像和软件包仓库"
},
{
"name": "archlinuxcn",
"desc": "由 Arch Linux 中文社区驱动的非官方用户仓库,包含中文用户常用软件、工具、字体/美化包等"
},
{
"name": "armbian",
"desc": ""
},
{
"name": "armbian-releases",
"desc": ""
},
{
"name": "artixlinux",
"desc": ""
},
{
"name": "bananian",
"desc": "用于 Banana Pi 的 Debian 操作系统"
},
{
"name": "bioconductor",
"desc": "开源的基因数据分析处理工具"
},
{
"name": "bjlx",
"desc": "北京龙芯 & Debian 俱乐部 的公开软件源"
},
{
"name": "blackarch",
"desc": "用于安全评估的基于 Arch Linux 的轻量级发行版"
},
{
"name": "cc",
"desc": "CERN CentOS"
},
{
"name": "centos",
"desc": "CentOS 的安装镜像和官方软件包仓库"
},
{
"name": "centos-altarch",
"desc": "CentOS 额外平台的安装镜像和官方软件包仓库"
},
{
"name": "centos-vault",
"desc": ""
},
{
"name": "ceph",
"desc": "高性能对象存储和文件系统"
},
{
"name": "chakra",
"desc": "专注于 Qt 与 KDE 软件的 Linux 发行版"
},
{
"name": "chakra-releases",
"desc": "Chakra 发行版的安装镜像"
},
{
"name": "chromiumos",
"desc": "Google Chrome OS的开放源代码开发版本"
},
{
"name": "clojars",
"desc": "Clojure 语言的第三方软件包仓库"
},
{
"name": "ctex",
"desc": "旧版 CTEX 安装镜像存档"
},
{
"name": "cygwin",
"desc": "Cygwin 官方软件包仓库"
},
{
"name": "dart-pub",
"desc": "Dart 语言的软件包仓库"
},
{
"name": "debian",
"desc": "Debian Linux 的官方软件包仓库"
},
{
"name": "debian-cd",
"desc": "Debian Linux 的安装镜像"
},
{
"name": "debian-multimedia",
"desc": "Debian Linux 第三方多媒体软件源"
},
{
"name": "debian-nonfree",
"desc": "Debian Linux 的非自由软件包仓库"
},
{
"name": "debian-security",
"desc": "Debian Linux 的安全更新"
},
{
"name": "deepin",
"desc": "Deepin Linux 的官方软件包仓库"
},
{
"name": "deepin-cd",
"desc": "Deepin Linux 的安装镜像"
},
{
"name": "dell",
"desc": "Dell 服务器管理工具"
},
{
"name": "docker-ce",
"desc": "Docker Community Edition 的安装包"
},
{
"name": "dotdeb",
"desc": "用于 Debian 服务器的额外镜像源"
},
{
"name": "eclipse",
"desc": "著名的IDE Eclipse"
},
{
"name": "elasticstack",
"desc": "ELK 系列数据分析工具5.x 之后改名为 Elastic Stack"
},
{
"name": "elpa",
"desc": "Emacs 内建包管理器 package.el 的软件源"
},
{
"name": "elrepo",
"desc": "RHEL 及其变体的 RPM 软件包仓库"
},
{
"name": "elvish",
"desc": "TUNA 前会长 xiaq 开发的革命性 Shell"
},
{
"name": "epel",
"desc": "企业版 Linux 附加软件包"
},
{
"name": "erlang-solutions",
"desc": ""
},
{
"name": "fedora",
"desc": "Fedora Linux 的安装镜像和官方软件包仓库"
},
{
"name": "fedora-altarch",
"desc": "Fedora Linux 额外平台的安装镜像和官方软件包仓库"
},
{
"name": "flightgear",
"desc": "多平台的飞行模拟器"
},
{
"name": "flutter",
"desc": "Flutter 框架 SDK 镜像"
},
{
"name": "fzug",
"desc": "Fedora 中文用户组的软件包仓库"
},
{
"name": "gentoo",
"desc": "Gentoo Linux 的 Stage 3 镜像"
},
{
"name": "gentoo-portage",
"desc": "Gentoo Linux 的 Portage 包管理器镜像源"
},
{
"name": "gentoo-portage-prefix",
"desc": "Gentoo/Prefix 的 Portage 包管理器镜像源"
},
{
"name": "git-repo",
"desc": "Google 开发的项目依赖下载工具 repo 的镜像"
},
{
"name": "gitlab-ce",
"desc": "Gitlab 社区版"
},
{
"name": "gitlab-ci-multi-runner",
"desc": "GitLab 持续集成框架"
},
{
"name": "gitlab-ee",
"desc": "Gitlab 企业版"
},
{
"name": "gitlab-runner",
"desc": "GitLab 持续集成框架版本 10 及以上"
},
{
"name": "gnu",
"desc": "GNU项目的软件包源代码、文档和部分平台的二进制文件"
},
{
"name": "gnu-alpha",
"desc": ""
},
{
"name": "grafana",
"desc": "开源的数据可视化工具"
},
{
"name": "hackage",
"desc": "Haskell 社区的中心软件包仓库"
},
{
"name": "homebrew",
"desc": "Homebrew 的软件包描述文件"
},
{
"name": "homebrew-bottles",
"desc": "预编译的 Homebrew 软件包"
},
{
"name": "iina",
"desc": "macOS 上的现代化开源视频播放器"
},
{
"name": "infinality-bundle",
"desc": "Arch Linux 的字体渲染软件包"
},
{
"name": "influxdata",
"desc": "时间序列数据平台"
},
{
"name": "ius",
"desc": "为企业版 Linux 提供最新软件包的镜像源"
},
{
"name": "jenkins",
"desc": "用 Java 编写的持续集成框架"
},
{
"name": "kali",
"desc": "Kali Linux 的官方软件包仓库"
},
{
"name": "kali-images",
"desc": "Kali Linux 的安装镜像"
},
{
"name": "kali-security",
"desc": "Kali Linux 的安全更新"
},
{
"name": "kernel",
"desc": "各个版本的Linux 内核源代码"
},
{
"name": "kodi",
"desc": "开源的多媒体播放器,原名 XBMC"
},
{
"name": "lede",
"desc": "OpenWRT 与 LEDE 再次合并后的源码仓库"
},
{
"name": "libreoffice",
"desc": ""
},
{
"name": "lineage-rom",
"desc": "最大的社区Android发行版之一Lineage的ROM"
},
{
"name": "lineageOS",
"desc": "最大的社区Android发行版之一Lineage的源代码"
},
{
"name": "linux-next.git",
"desc": "Linux 内核源代码的 Git 仓库,开发分支(包含为下一个 merge windows 开发的 patch"
},
{
"name": "linux-stable.git",
"desc": "Linux 内核源代码的 Git 仓库, 稳定版分支"
},
{
"name": "linux.git",
"desc": "Linux 内核源代码的 Git 仓库"
},
{
"name": "linuxmint",
"desc": "Linux Mint 的官方软件源"
},
{
"name": "linuxmint-cd",
"desc": "Linux Mint 的安装镜像"
},
{
"name": "llvm",
"desc": "LLVM 编译器套件的多个 git repo 的镜像"
},
{
"name": "loongson",
"desc": "用于龙芯电脑的软件包"
},
{
"name": "lxc-images",
"desc": "Linux 容器的镜像"
},
{
"name": "lyx",
"desc": ""
},
{
"name": "macports",
"desc": "macOS 的一个开源软件包管理系统"
},
{
"name": "mageia",
"desc": "Mageia Linux 衍生于Mandriva Linux的安装镜像和官方软件包仓库"
},
{
"name": "manjaro",
"desc": "Manjaro Linux 的官方软件源"
},
{
"name": "manjaro-cd",
"desc": "Manjanro Linux 的安装镜像"
},
{
"name": "mariadb",
"desc": "衍生于 MySQL 的开源关系数据库"
},
{
"name": "mongodb",
"desc": "开源的跨平台 NoSQL 文档型数据库"
},
{
"name": "msys2",
"desc": "用于编译原生 Windows 程序的类 Linux 开发环境"
},
{
"name": "mxlinux",
"desc": ""
},
{
"name": "mxlinux-isos",
"desc": ""
},
{
"name": "mysql",
"desc": "MySQL 安装包及各种工具下载"
},
{
"name": "neurodebian",
"desc": "用于神经科学研究的 Debian 软件包源"
},
{
"name": "nix",
"desc": ""
},
{
"name": "nodejs-release",
"desc": "预编译的 nodejs 二进制程序"
},
{
"name": "nodesource",
"desc": "为 Debian, Ubuntu, Fedora, RHEL 等发行版提供预编译的 nodejs 和 npm 等软件包"
},
{
"name": "openresty",
"desc": "基于 Nginx 与 Lua 的高性能 Web 平台"
},
{
"name": "opensuse",
"desc": "openSUSE 的安装镜像和官方软件包仓库"
},
{
"name": "openthos",
"desc": "OpenTHOS 的二进制发行包"
},
{
"name": "openthos-src",
"desc": "OpenTHOS 源代码仓库"
},
{
"name": "openwrt",
"desc": "OpenWrt 软件包镜像源仅包含Chaos Calmer版本请前往 lede 目录获取最新源码)"
},
{
"name": "osdn",
"desc": ""
},
{
"name": "osmc",
"desc": "免费、开源的媒体中心解决方案"
},
{
"name": "packman",
"desc": "为 Debian、Fedora、openSUSE、Ubuntu 提供额外和过期软件包的仓库"
},
{
"name": "parrot",
"desc": "Parrot Linux专注于安全审计的 Linux 发行版)的安装映像和官方软件源"
},
{
"name": "percona",
"desc": "开源的数据库解决方案,详见 http://www.percona.com"
},
{
"name": "pkgsrc",
"desc": "NetBSD 的第三方软件源"
},
{
"name": "postgresql",
"desc": "著名的开源关系型数据库 PostgreSQL 的镜像"
},
{
"name": "puppy",
"desc": "为家用电脑设计的轻量级 Linux 发行版"
},
{
"name": "pybombs",
"desc": "为 GNU Radio 设计的编译管理系统"
},
{
"name": "pypi",
"desc": "Python 软件包索引源"
},
{
"name": "qt",
"desc": "跨平台软件开发库 Qt 的源码、开发工具、文档等"
},
{
"name": "raspberrypi",
"desc": ""
},
{
"name": "raspbian",
"desc": "为 Raspberry Pi 编译的 Debian"
},
{
"name": "redhat",
"desc": "Red Hat Enterprise Linux 官方软件源"
},
{
"name": "remi",
"desc": "包含最新版本 PHP 和 MySQL 的第三方 yum 源"
},
{
"name": "repo-ck",
"desc": "repo-ck 是 Arch 的非官方仓库,内有包含 ck 补丁、BFS 调度器等"
},
{
"name": "repoforge",
"desc": "Repoforge 是 RHEL 系统下的软件仓库,拥有 10000 多个软件包,被认为是最安全、最稳定的一个软件仓库"
},
{
"name": "ros",
"desc": "ROS (Robot Operating System) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件"
},
{
"name": "rpmfusion",
"desc": "RPM Fusion 提供了一些 Fedora Project 和 Red Hat 不包含的软件"
},
{
"name": "rubygems",
"desc": "Ruby 的一个包管理器"
},
{
"name": "rustup",
"desc": "Rust 的官方安装工具"
},
{
"name": "sagemath",
"desc": "构建在 NumPy, SciPy 等工具之上的开源数学软件系统"
},
{
"name": "saltstack",
"desc": "基于 python 的配置管理与运维自动化工具"
},
{
"name": "slackware",
"desc": "Linux 发行版 Slackware 的源代码和官方软件包仓库"
},
{
"name": "slackwarearm",
"desc": "用于 ARM 设备的 Slackware 发行版源代码和官方软件包仓库"
},
{
"name": "solus",
"desc": "Solus 的软件仓库,致力于制作对新手友好的发行版"
},
{
"name": "stackage",
"desc": "Haskell 项目管理器 stack 所需的元数据与 ghc 安装包的镜像"
},
{
"name": "steamos",
"desc": "Valve 开发的基于 Debian 的操作系统,包含安装镜像和官方软件包仓库"
},
{
"name": "tensorflow",
"desc": "采用数据流图、用于数值计算的开源深度学习框架 TensorFlow"
},
{
"name": "termux",
"desc": " 运行在 Android 上的终端模拟器 Termux 的官方软件包仓库"
},
{
"name": "tinycorelinux",
"desc": "为嵌入式开发的微型 Linux 发行版"
},
{
"name": "ubuntu",
"desc": "流行的 Linux 发行版 Ubuntu 的安装镜像和官方软件包仓库"
},
{
"name": "ubuntu-cdimage",
"desc": "Ubuntu 及 Ubuntu 衍生版各版本安装镜像"
},
{
"name": "ubuntu-cloud-images",
"desc": "适用于公有云的 Ubuntu 安装镜像"
},
{
"name": "ubuntu-ports",
"desc": "armhf, arm64 以及 powerpc 等平台的 Ubuntu 软件仓库"
},
{
"name": "ubuntu-releases",
"desc": "包含近几年发行的 Ubuntu 的镜像"
},
{
"name": "videolan-ftp",
"desc": "简称VLC是一款自由、开源的跨平台多媒体播放器及框架可播放大多数多媒体文件"
},
{
"name": "virtualbox",
"desc": "Oracle 的开源的 x86 架构虚拟机"
},
{
"name": "weave",
"desc": "Google 开发的物联网IoT设备通信平台"
},
{
"name": "winehq",
"desc": "Wine (允许类 Unix 操作系统运行 Windows 程序)"
},
{
"name": "zabbix",
"desc": "著名的网络监视、管理系统"
}
]

364
_data/options.yml Normal file
View File

@ -0,0 +1,364 @@
# Content Related
mirror_desc:
- name: AOSP
desc: Android 操作系统源代码
- name: AUR
desc: Arch Linux 用户软件库
- name: Bananian
desc: 为 Banana Pi 制作的,基于官方 Debian 仓库的发行版镜像和软件包仓库
- name: CPAN
desc: ''
- name: CRAN
desc: R 语言的可执行文件、源代码和说明文件,也收录了各种用户撰写的软件包
- name: CTAN
desc: TeX 的各种发行版、软件包和文档
- name: CocoaPods
desc: Objective-C 和 Swift 的依赖管理器
- name: ELK
desc: 现已更名为 Elastic Stack仅保留用作向后兼容
- name: HHVM
desc: Facebook 开发的高性能 PHP 语言虚拟机
- name: Homebrew
desc: Homebrew 的 formula 索引的镜像,二进制预编译包的镜像请见 homebrew-bottles
- name: NetBSD
desc: NetBSD 的安装镜像和部分系统源码
- name: OpenBSD
desc: OpenBSD 的安装镜像和官方软件包仓库
- name: adobe-fonts
desc: Adobe 公司的开源字体
- name: alpine
desc: Alpine Linux 的安装镜像和官方软件包仓库
- name: anaconda
desc: 用于科学计算的 Python 发行版
- name: antergos
desc: 基于 Arch Linux 的使用 GNOME 3 的发行版,曾用名 Cinnarch
- name: anthon
desc: Anthon Linux (安同 Linux)的安装镜像和官方软件包仓库
- name: aosp-monthly
desc: AOSP 镜像每月打包
- name: apache
desc: Apache 基金会赞助的各个项目
- name: arch4edu
desc: 用于 Arch Linux 和 Arch Linux ARM 的非官方软件仓库,主要包含科研、教学所需的各种常用软件
- name: archlinux
desc: Arch Linux 的安装镜像和官方软件包仓库
- name: archlinuxarm
desc: 用于 arm 平台的 Arch Linux 镜像和软件包仓库
- name: archlinuxcn
desc: 由 Arch Linux 中文社区驱动的非官方用户仓库,包含中文用户常用软件、工具、字体/美化包等
- name: armbian
desc: ''
- name: armbian-releases
desc: ''
- name: artixlinux
desc: ''
- name: bananian
desc: 用于 Banana Pi 的 Debian 操作系统
- name: bioconductor
desc: 开源的基因数据分析处理工具
- name: bjlx
desc: 北京龙芯 & Debian 俱乐部 的公开软件源
- name: blackarch
desc: 用于安全评估的基于 Arch Linux 的轻量级发行版
- name: cc
desc: CERN CentOS
- name: centos
desc: CentOS 的安装镜像和官方软件包仓库
- name: centos-altarch
desc: CentOS 额外平台的安装镜像和官方软件包仓库
- name: centos-vault
desc: ''
- name: ceph
desc: 高性能对象存储和文件系统
- name: chakra
desc: 专注于 Qt 与 KDE 软件的 Linux 发行版
- name: chakra-releases
desc: Chakra 发行版的安装镜像
- name: chromiumos
desc: Google Chrome OS的开放源代码开发版本
- name: clojars
desc: Clojure 语言的第三方软件包仓库
- name: ctex
desc: 旧版 CTEX 安装镜像存档
- name: cygwin
desc: Cygwin 官方软件包仓库
- name: dart-pub
desc: Dart 语言的软件包仓库
- name: debian
desc: Debian Linux 的官方软件包仓库
- name: debian-cd
desc: Debian Linux 的安装镜像
- name: debian-multimedia
desc: Debian Linux 第三方多媒体软件源
- name: debian-nonfree
desc: Debian Linux 的非自由软件包仓库
- name: debian-security
desc: Debian Linux 的安全更新
- name: deepin
desc: Deepin Linux 的官方软件包仓库
- name: deepin-cd
desc: Deepin Linux 的安装镜像
- name: dell
desc: Dell 服务器管理工具
- name: docker-ce
desc: Docker Community Edition 的安装包
- name: dotdeb
desc: 用于 Debian 服务器的额外镜像源
- name: eclipse
desc: 著名的IDE Eclipse
- name: elasticstack
desc: ELK 系列数据分析工具5.x 之后改名为 Elastic Stack
- name: elpa
desc: Emacs 内建包管理器 package.el 的软件源
- name: elrepo
desc: RHEL 及其变体的 RPM 软件包仓库
- name: elvish
desc: TUNA 前会长 xiaq 开发的革命性 Shell
- name: epel
desc: 企业版 Linux 附加软件包
- name: erlang-solutions
desc: ''
- name: fedora
desc: Fedora Linux 的安装镜像和官方软件包仓库
- name: fedora-altarch
desc: Fedora Linux 额外平台的安装镜像和官方软件包仓库
- name: flightgear
desc: 多平台的飞行模拟器
- name: flutter
desc: Flutter 框架 SDK 镜像
- name: fzug
desc: Fedora 中文用户组的软件包仓库
- name: gentoo
desc: Gentoo Linux 的 Stage 3 镜像
- name: gentoo-portage
desc: Gentoo Linux 的 Portage 包管理器镜像源
- name: gentoo-portage-prefix
desc: Gentoo/Prefix 的 Portage 包管理器镜像源
- name: git-repo
desc: Google 开发的项目依赖下载工具 repo 的镜像
- name: gitlab-ce
desc: Gitlab 社区版
- name: gitlab-ci-multi-runner
desc: GitLab 持续集成框架
- name: gitlab-ee
desc: Gitlab 企业版
- name: gitlab-runner
desc: GitLab 持续集成框架版本 10 及以上
- name: gnu
desc: GNU项目的软件包源代码、文档和部分平台的二进制文件
- name: gnu-alpha
desc: ''
- name: grafana
desc: 开源的数据可视化工具
- name: hackage
desc: Haskell 社区的中心软件包仓库
- name: homebrew
desc: Homebrew 的软件包描述文件
- name: homebrew-bottles
desc: 预编译的 Homebrew 软件包
- name: iina
desc: macOS 上的现代化开源视频播放器
- name: infinality-bundle
desc: Arch Linux 的字体渲染软件包
- name: influxdata
desc: 时间序列数据平台
- name: ius
desc: 为企业版 Linux 提供最新软件包的镜像源
- name: jenkins
desc: 用 Java 编写的持续集成框架
- name: kali
desc: Kali Linux 的官方软件包仓库
- name: kali-images
desc: Kali Linux 的安装镜像
- name: kali-security
desc: Kali Linux 的安全更新
- name: kernel
desc: 各个版本的Linux 内核源代码
- name: kodi
desc: 开源的多媒体播放器,原名 XBMC
- name: lede
desc: OpenWRT 与 LEDE 再次合并后的源码仓库
- name: libreoffice
desc: ''
- name: lineage-rom
desc: 最大的社区Android发行版之一Lineage的ROM
- name: lineageOS
desc: 最大的社区Android发行版之一Lineage的源代码
- name: linux-next.git
desc: Linux 内核源代码的 Git 仓库,开发分支(包含为下一个 merge windows 开发的 patch
- name: linux-stable.git
desc: Linux 内核源代码的 Git 仓库, 稳定版分支
- name: linux.git
desc: Linux 内核源代码的 Git 仓库
- name: linuxmint
desc: Linux Mint 的官方软件源
- name: linuxmint-cd
desc: Linux Mint 的安装镜像
- name: llvm
desc: LLVM 编译器套件的多个 git repo 的镜像
- name: loongson
desc: 用于龙芯电脑的软件包
- name: lxc-images
desc: Linux 容器的镜像
- name: lyx
desc: ''
- name: macports
desc: macOS 的一个开源软件包管理系统
- name: mageia
desc: Mageia Linux 衍生于Mandriva Linux的安装镜像和官方软件包仓库
- name: manjaro
desc: Manjaro Linux 的官方软件源
- name: manjaro-cd
desc: Manjanro Linux 的安装镜像
- name: mariadb
desc: 衍生于 MySQL 的开源关系数据库
- name: mongodb
desc: 开源的跨平台 NoSQL 文档型数据库
- name: msys2
desc: 用于编译原生 Windows 程序的类 Linux 开发环境
- name: mxlinux
desc: ''
- name: mxlinux-isos
desc: ''
- name: mysql
desc: MySQL 安装包及各种工具下载
- name: neurodebian
desc: 用于神经科学研究的 Debian 软件包源
- name: nix
desc: ''
- name: nodejs-release
desc: 预编译的 nodejs 二进制程序
- name: nodesource
desc: 为 Debian, Ubuntu, Fedora, RHEL 等发行版提供预编译的 nodejs 和 npm 等软件包
- name: openresty
desc: 基于 Nginx 与 Lua 的高性能 Web 平台
- name: opensuse
desc: openSUSE 的安装镜像和官方软件包仓库
- name: openthos
desc: OpenTHOS 的二进制发行包
- name: openthos-src
desc: OpenTHOS 源代码仓库
- name: openwrt
desc: OpenWrt 软件包镜像源仅包含Chaos Calmer版本请前往 lede 目录获取最新源码)
- name: osdn
desc: ''
- name: osmc
desc: 免费、开源的媒体中心解决方案
- name: packman
desc: 为 Debian、Fedora、openSUSE、Ubuntu 提供额外和过期软件包的仓库
- name: parrot
desc: Parrot Linux专注于安全审计的 Linux 发行版)的安装映像和官方软件源
- name: percona
desc: 开源的数据库解决方案,详见 http://www.percona.com
- name: pkgsrc
desc: NetBSD 的第三方软件源
- name: postgresql
desc: 著名的开源关系型数据库 PostgreSQL 的镜像
- name: puppy
desc: 为家用电脑设计的轻量级 Linux 发行版
- name: pybombs
desc: 为 GNU Radio 设计的编译管理系统
- name: pypi
desc: Python 软件包索引源
- name: qt
desc: 跨平台软件开发库 Qt 的源码、开发工具、文档等
- name: raspberrypi
desc: ''
- name: raspbian
desc: 为 Raspberry Pi 编译的 Debian
- name: redhat
desc: Red Hat Enterprise Linux 官方软件源
- name: remi
desc: 包含最新版本 PHP 和 MySQL 的第三方 yum 源
- name: repo-ck
desc: repo-ck 是 Arch 的非官方仓库,内有包含 ck 补丁、BFS 调度器等
- name: repoforge
desc: Repoforge 是 RHEL 系统下的软件仓库,拥有 10000 多个软件包,被认为是最安全、最稳定的一个软件仓库
- name: ros
desc: ROS (Robot Operating System) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件
- name: rpmfusion
desc: RPM Fusion 提供了一些 Fedora Project 和 Red Hat 不包含的软件
- name: rubygems
desc: Ruby 的一个包管理器
- name: rustup
desc: Rust 的官方安装工具
- name: sagemath
desc: 构建在 NumPy, SciPy 等工具之上的开源数学软件系统
- name: saltstack
desc: 基于 python 的配置管理与运维自动化工具
- name: slackware
desc: Linux 发行版 Slackware 的源代码和官方软件包仓库
- name: slackwarearm
desc: 用于 ARM 设备的 Slackware 发行版源代码和官方软件包仓库
- name: solus
desc: Solus 的软件仓库,致力于制作对新手友好的发行版
- name: stackage
desc: Haskell 项目管理器 stack 所需的元数据与 ghc 安装包的镜像
- name: steamos
desc: Valve 开发的基于 Debian 的操作系统,包含安装镜像和官方软件包仓库
- name: tensorflow
desc: 采用数据流图、用于数值计算的开源深度学习框架 TensorFlow
- name: termux
desc: " 运行在 Android 上的终端模拟器 Termux 的官方软件包仓库"
- name: tinycorelinux
desc: 为嵌入式开发的微型 Linux 发行版
- name: ubuntu
desc: 流行的 Linux 发行版 Ubuntu 的安装镜像和官方软件包仓库
- name: ubuntu-cdimage
desc: Ubuntu 及 Ubuntu 衍生版各版本安装镜像
- name: ubuntu-cloud-images
desc: 适用于公有云的 Ubuntu 安装镜像
- name: ubuntu-ports
desc: armhf, arm64 以及 powerpc 等平台的 Ubuntu 软件仓库
- name: ubuntu-releases
desc: 包含近几年发行的 Ubuntu 的镜像
- name: videolan-ftp
desc: 简称VLC是一款自由、开源的跨平台多媒体播放器及框架可播放大多数多媒体文件
- name: virtualbox
desc: Oracle 的开源的 x86 架构虚拟机
- name: weave
desc: Google 开发的物联网IoT设备通信平台
- name: winehq
desc: Wine (允许类 Unix 操作系统运行 Windows 程序)
- name: zabbix
desc: 著名的网络监视、管理系统
new_mirrors:
- gnu-alpha
- mxlinux
- mxlinux-isos
- armbian
- armbian-releases
- rustup
- nix
- dart-pub
- flutter
unlisted_mirrors:
- status: 'success'
last_update: '-'
name: "AUR"
url: 'https://aur.tuna.tsinghua.edu.cn/'
upstream: 'https://aur.archlinux.org/'
is_master: true
force_help_mirrors:
- AOSP
- lineageOS
- homebrew
- linux.git
- linux-stable.git
- git-repo
- chromiumos
- weave
- CocoaPods
- llvm
- openthos-src
label_map:
unknown: label-default
syncing: label-info
success: label-success
fail: label-warning
failed: label-warning
paused: label-warning

View File

@ -1,15 +1,15 @@
{% for footer-i in (1...2) %}
<div id="footerwrap" class="tuna-foot-{{ footer-i }}">
{% unless page.legacy and footer-i == 1 %}
<div id="footerwrap" class="tuna-foot-{{ footer-i }}"{% if page.legacy %} style="visibility: visible;"{% endif %}>
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-4">
<div class="col-lg-4 col-md-4{% if page.legacy %} col-xs-4{% endif %}">
<p class="thuhidden">本站由清华大学信息化技术中心支持创办,由清华大学 TUNA 协会运行维护。</p>
<p class="thuhidden">清华大学 TUNA 协会,全名清华大学学生网络与开源软件协会,是由清华大学热爱网络技术和开源软件的极客组成的学生技术社团。</p>
<p>本站相关源码可在 <a href="https://github.com/tuna/tunasync"><em>这里(镜像管理器)</em></a><a href="https://github.com/tuna/mirror-web"><em>这里(镜像站网页)</em></a> 获取。</p>
<p class="thuhidden">根据相关法律法规,本站不对欧盟用户提供服务。</p>
</div>
<div class="col-lg-4 col-md-4">
<div class="col-lg-4 col-md-4{% if page.legacy %} col-xs-4{% endif %}">
<h4>Contact Us</h4>
<div class="thuhidden">
<ul class="social">
@ -28,13 +28,13 @@
</ul>
</div>
</div>
<div class="col-lg-4 col-md-4" align="center">
<div class="col-lg-4 col-md-4{% if page.legacy %} col-xs-4{% endif %}" align="center">
<img class="img-responsive thuhidden" style="margin-top:5%" src="/static/img/logo-white.png" srcset="/static/img/logo-white.png 1x, /static/img/logo-white@2x.png 2x, /static/img/logo-white@3x.png 3x, /static/img/logo-white@4x.png 4x" />
</div>
</div><!--/row -->
</div><!--/container -->
</div><!--/footerwrap -->
{% endunless %}
{% endfor %}
<script>

View File

@ -16,8 +16,53 @@
<script src="/static/js/jquery.min.js"></script>
<script src="/static/js/bootstrap.min.js"></script>
<script src="/static/js/bootstrap-select.min.js"></script>
{% unless page.legacy %}
<script src="/static/js/vue.min.js"></script>
{% endunless %}
<script src="/static/js/markup.min.js"></script>
<script src="/static/js/webfont.js"></script>
<script src="/static/js/thuhidden.js"></script>
{% if page.legacy %}
<style>
.container {
width: 85%;
}
.container > .navbar-header {
margin-right: 0;
margin-left: 0;
}
.navbar-nav {
float: left;
margin: 0;
}
.navbar-nav > li {
float: left;
}
.navbar-nav > li > a {
padding-top: 15px;
padding-bottom: 15px;
}
.navbar-nav.navbar-right:last-child {
margin-right: -15px;
}
.navbar-left {
float: left !important;
}
.navbar-right {
float: right !important;
}
.navbar-header:after {
clear: none;
}
a.navbar-brand {
width: 20em;
}
<!--[if lte IE 7]>
.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,
.col-xs-10,.col-xs-11,.col-xs-12 {
padding: 0px;
}
<![endif]-->
</style>
{% endif %}
</head>

View File

@ -0,0 +1,20 @@
{% raw %}
<div v-if="false" id="upgrade-mask" style="position: fixed; background: white; width: 100%; height: 100%; z-index: 200; padding-top: 40px; overflow: scroll;" class="container">
<div class="well">
<p>尊敬的访问者,</p>
<p>Dear visitor, </p>
<p>Chère cliente, </p>
<p>ご利用者様</p>
<p>&nbsp;</p>
<p>您好!</p>
<p>Hello! </p>
<p>Bonjour! </p>
<p>宜しくお願い致します。</p>
<p>&nbsp;</p>
<p>我们检测到您当前的浏览器不能正常显示我们的主页,请更新您的浏览器,并启用 Javascript或者访问我们的<a href="/legacy_index">代用页面</a></p>
<p>Your browser is not compatible with our website. Please upgrade and enable Javascript, or visit our <a href="/legacy_index">alternative page</a>.</p>
<p>Votre navigateur n'est pas compatible avec notre site web. Mettez à niveau et activez Javascript, ou visitez notre <a href="/legacy_index">page alternative</a>.</p>
<p>お使いのブラウザは当サイトとの互換性はありません。ブラウザを更新しJavaScriptを有効にするか、或いはこちらの<a href="/legacy_index">代用ページ</a>をご利用ください。</p>
</div>
</div>
{% endraw %}

View File

@ -1,21 +1,23 @@
<div class="navbar navbar-default" role="navigation">
<div class="container">
<div class="navbar-header">
{% unless page.legacy %}
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
{% endunless %}
<a class="navbar-brand" href="/"><span class="thuhidden"><img src="/static/img/logo-small.png" srcset="/static/img/logo-small.png 1x, /static/img/logo-small@2x.png 2x, /static/img/logo-small@3x.png 3x, /static/img/logo-small@4x.png 4x" alt=""/> 清华大学</span>开源软件镜像站</a>
</div>
<div class="navbar-collapse collapse navbar-right">
<div class="{% unless page.legacy %}navbar-collapse collapse {% endunless %}navbar-right">
<ul class="nav navbar-nav">
<li><a href="https://tuna.moe/">HOME</a></li>
<li><a href="https://tuna.moe/events/">EVENTS</a></li>
<li><a href="https://tuna.moe/blog/">BLOG</a></li>
<li><a href="https://tuna.moe/feed.xml">RSS</a></li>
<li><a href="https://podcast.tuna.moe/">PODCAST</a></li>
<li><a href="https://podcast.tuna.moe/">PODCAST</a></li>
<li class="active"><a href="http://mirrors.tuna.tsinghua.edu.cn/">MIRRORS</a></li>
</ul>
</div><!--/.nav-collapse -->

4
_includes/options.json Normal file
View File

@ -0,0 +1,4 @@
{
"options": {{ site.data.options | jsonify }},
"helps": {{ site.categories['help'] | select: "mirrorid", "url" | jsonify }}
}

185
_layouts/index.html Normal file
View File

@ -0,0 +1,185 @@
<!DOCTYPE html>
<html>
{% include head.html %}
<body>
{% unless page.legacy %}
{% include legacy_notes.html %}
{% endunless %}
{% include nav.html %}
<div id="mirrors">
<div class="spacing hidden-xs"></div>
<div class="container">
<div class="row">
<div class="col-{% if page.legacy %}xs{% else %}md{% endif %}-8 table-responsive" id="mirror-list">
<div class="row">
<h3 id="mirror-title"><span class="fa fa-cube"></span> 镜像列表 </h3>
{% unless page.legacy %}
<input type="search" v-model="filter" id="search" placeholder="搜索" autocomplete="off">
{% endunless %}
</div>
<table class="table" v-if="mirrorList.length">
<thead>
<tr class="row">
<th class="col-{% if page.legacy %}xs{% else %}sm{% endif %}-8">Name</th>
<th class="col-{% if page.legacy %}xs{% else %}sm{% endif %}-4">Last Update</th>
</tr>
</thead>
<tbody>
{% if page.legacy %}
{% raw %}
{{mirs}}
<tr class="row status-{{status}}">
<td>
<a class="mirror-item-label" href="{{url}}" title="{{description}}">
{{name}}
</a>
{{if is_new}}
<span class="label label-new">new</span>
{{/if}}
{{if help_url}}
<a href="{{help_url}}"><i class="fa fa-question-circle" title="Help"></i></a>
{{/if}}
</td>
<td>
{{last_update}}{{if show_status}}<span class="label label-status {{label}}">{{status}}</span>{{/if}}
</td>
</tr>
{{/mirs}}
{% endraw %}
{% else %}
{% raw %}
<tr v-for="mir in filteredMirrorList" :class="['row', 'status-'+mir.status]" :key="mir.name">
<td class="col-md-8">
<a class="mirror-item-label" data-toggle="popover" data-trigger="hover" data-placement="right"
:data-content="mir.description" :href="getURL(mir)">
{{mir.name}}
<span class="label label-new" v-if='mir.is_new'>new</span>
<a v-if='mir.help_url' :href="mir.help_url"><i class="fa fa-question-circle" title="Help"></i></a>
</a>
</td>
<td class="col-md-4">
{{mir.last_update}}<span v-if="mir.show_status" :class="['label', 'label-status', mir.label, 'hidden-xs']">{{mir.status}}</span>
</td>
</tr>
{% endraw %}
{% endif %}
</tbody>
</table>
{% unless page.legacy %}
<div v-else class="sk-wave">
<div class="sk-rect sk-rect1"></div>
<div class="sk-rect sk-rect2"></div>
<div class="sk-rect sk-rect3"></div>
<div class="sk-rect sk-rect4"></div>
<div class="sk-rect sk-rect5"></div>
</div>
{% endunless %}
</div>
<div class="col-{% if page.legacy %}xs{% else %}md{% endif %}-4">
<div class="spacing hidden-xs"></div>
<div id="wizard">
</div>
<div id="news">
<h4><span class="fa fa-bullhorn"></span> 新闻公告 </h4>
<ul>
{% for news in site.categories.news limit: 3%}
<li><a href="/news/#{{news.slug}}"><strong>{{news.date | date: "%Y-%m-%d"}}</strong> {{news.title}}</a></li>
{% endfor %}
</ul>
<div class="text-right"><a href="/news/"> more <span class="fa fa-angle-double-right"></span> </a></div>
</div>
<div class="thuhidden">
<h4> <span class="fa fa-link"></span> 域名选择 </h4>
<ul>
<li><a href="https://mirrors.tuna.tsinghua.edu.cn/">https://mirrors.tuna.tsinghua.edu.cn/</a> 自动选择 </li>
<li><a href="https://mirrors6.tuna.tsinghua.edu.cn/">https://mirrors6.tuna.tsinghua.edu.cn/</a> 只解析 IPv6</li>
<li><a href="https://mirrors4.tuna.tsinghua.edu.cn/">https://mirrors4.tuna.tsinghua.edu.cn/</a> 只解析 IPv4</li>
</ul>
</div>
{% unless page.legacy %}
<div id="download-link">
<h4><span class="fa fa-file-archive-o"></span> 下载链接 </h4>
<p>常用发行版 iso 和应用工具安装包直接下载</p>
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#isoModal">
获取下载链接
</button>
</div>
{% endunless %}
<div class="thuhidden">
<h4> <span class="fa fa-envelope-o"></span> 联系我们 </h4>
<ul>
<li><strong>意见反馈</strong> <br /> <a href="https://github.com/tuna/issues">https://github.com/tuna/issues</a></li>
<li><strong>发送邮件</strong> <br /> <a id="eib1gieB"></a></li>
<li><strong>在线交流</strong> <br /> <a href="https://fishroom.tuna.moe/log/tuna/today"> #tuna at freenode </a></li>
</ul>
</div>
<div>
<h4> <span class="fa fa-external-link"></span> 相关链接 </h4>
<ul>
<li><a href="/help/">使用帮助</a></li>
<li><a href="/status/#server-status">服务器状态</a></li>
<li><a href="/status/#syncing-status">同步状态</a></li>
<li class="thuhidden"><a href="https://tuna.moe/">清华大学 TUNA 协会</a></li>
<li><a href="https://github.com/tuna/tunasync">镜像管理器源码</a></li>
<li><a href="https://github.com/tuna/tunasync-scripts">自定义镜像脚本</a></li>
</ul>
</div>
</div>
</div>
</div><!--/container -->
</div><!--/mirrors -->
{% include footer.html %}
{% unless page.legacy %}
<!-- iso download wizard modal -->
<!-- Modal -->
{% raw %}
<div class="modal fade" id="isoModal" tabindex="-1" role="dialog" aria-labelledby="isoModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="isoModalLabel">获取安装镜像</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
<ul class="nav nav-tabs">
<li role="presentation" :class="[curCategory === 'os' ? 'active' : '']" @click="switchCategory('os')"><a href="#">操作系统</a></li>
<li role="presentation" :class="[curCategory === 'app' ? 'active' : '']" @click="switchCategory('app')"><a href="#">应用软件</a></li>
</ul>
</div>
<div class="col-md-3">
<ul class="nav nav-pills nav-stacked">
<li v-for="distro in curDistroList" :class="[selected.distro == distro.distro ? 'active' : '']">
<a href="#" @click="switchDistro(distro)">{{ distro.distro }}</a>
</li>
</ul>
</div>
<div class="col-md-9">
<h3>{{selected.distro}}</h3>
<ul>
<template v-for="url in selected.urls">
<li><a :href="url.url">{{url.name}}</a></li>
</template>
</ul>
</div>
</div>
</div>
</div>
</div>
</div><!-- /iso download wizard modal -->
{% endraw %}
{% endunless %}
</body>
{% raw %}
{% endraw %}
{% unless page.legacy %}
<script src="/static/js/index.js"></script>
<script src="/static/js/browser-update.js"></script>
{% endunless %}
</html>
<!--
vim: ts=2 sts=2 sw=2 noexpandtab
-->

9
_plugins/select.rb Normal file
View File

@ -0,0 +1,9 @@
require "rubygems"
require "json"
module SelectFilter
def select(input, *selected)
input.map{ |o| o.to_liquid.hash_for_json.reject! { |k| not selected.include? k } }
end
Liquid::Template.register_filter self
end

View File

@ -1,157 +1,4 @@
---
permalink: /
layout: index
---
<!DOCTYPE html>
<html>
{% include head.html %}
<body>
{% include nav.html %}
<div id="mirrors">
<div class="spacing hidden-xs"></div>
<div class="container">
<div class="row">
{% raw %}
<div class="col-md-8 table-responsive" id="mirror-list">
<div class="row">
<h3 id="mirror-title"><span class="fa fa-cube"></span> 镜像列表 </h3>
<input type="search" v-model="filter" id="search" placeholder="搜索" autocomplete="off">
</div>
<table class="table" v-if="mirrorList.length">
<thead>
<tr class="row">
<th class="col-sm-8">Name</th>
<th class="col-sm-4">Last Update</th>
</tr>
</thead>
<tbody>
<tr v-for="mir in filteredMirrorList" :class="['row', 'status-'+mir.status]" :key="mir.name">
<td class="col-md-8">
<a class="mirror-item-label" data-toggle="popover" data-trigger="hover" data-placement="right"
:data-content="mir.description" :href="getURL(mir)">
{{mir.name}}
<span class="label label-new" v-if='mir.is_new'>new</span>
<a v-if='mir.help_url' :href="mir.help_url"><i class="fa fa-question-circle" title="Help"></i></a>
</a>
</td>
<td class="col-md-4">
{{mir.last_update}}<span v-if="mir.show_status" :class="['label', 'label-status', mir.label, 'hidden-xs']">{{mir.status}}</span>
</td>
</tr>
</tbody>
</table>
<div v-else class="sk-wave">
<div class="sk-rect sk-rect1"></div>
<div class="sk-rect sk-rect2"></div>
<div class="sk-rect sk-rect3"></div>
<div class="sk-rect sk-rect4"></div>
<div class="sk-rect sk-rect5"></div>
</div>
</div>
{% endraw %}
<div class="col-md-4">
<div class="spacing hidden-xs"></div>
<div id="wizard">
</div>
<div id="news">
<h4><span class="fa fa-bullhorn"></span> 新闻公告 </h4>
<ul>
{% for news in site.categories.news limit: 3%}
<li><a href="/news/#{{news.slug}}"><strong>{{news.date | date: "%Y-%m-%d"}}</strong> {{news.title}}</a></li>
{% endfor %}
</ul>
<div class="text-right"><a href="/news/"> more <span class="fa fa-angle-double-right"></span> </a></div>
</div>
<div class="thuhidden">
<h4> <span class="fa fa-link"></span> 域名选择 </h4>
<ul>
<li><a href="https://mirrors.tuna.tsinghua.edu.cn/">https://mirrors.tuna.tsinghua.edu.cn/</a> 自动选择 </li>
<li><a href="https://mirrors6.tuna.tsinghua.edu.cn/">https://mirrors6.tuna.tsinghua.edu.cn/</a> 只解析 IPv6</li>
<li><a href="https://mirrors4.tuna.tsinghua.edu.cn/">https://mirrors4.tuna.tsinghua.edu.cn/</a> 只解析 IPv4</li>
</ul>
</div>
<div id="download-link">
<h4><span class="fa fa-file-archive-o"></span> 下载链接 </h4>
<p>常用发行版 iso 和应用工具安装包直接下载</p>
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#isoModal">
获取下载链接
</button>
</div>
<div class="thuhidden">
<h4> <span class="fa fa-envelope-o"></span> 联系我们 </h4>
<ul>
<li><strong>意见反馈</strong> <br /> <a href="https://github.com/tuna/issues">https://github.com/tuna/issues</a></li>
<li><strong>发送邮件</strong> <br /> <a id="eib1gieB"></a></li>
<li><strong>在线交流</strong> <br /> <a href="https://fishroom.tuna.moe/log/tuna/today"> #tuna at freenode </a></li>
</ul>
</div>
<div>
<h4> <span class="fa fa-external-link"></span> 相关链接 </h4>
<ul>
<li><a href="/help/">使用帮助</a></li>
<li><a href="/status/#server-status">服务器状态</a></li>
<li><a href="/status/#syncing-status">同步状态</a></li>
<li class="thuhidden"><a href="https://tuna.moe/">清华大学 TUNA 协会</a></li>
<li><a href="https://github.com/tuna/tunasync">镜像管理器源码</a></li>
<li><a href="https://github.com/tuna/tunasync-scripts">自定义镜像脚本</a></li>
</ul>
</div>
</div>
</div>
</div><!--/container -->
</div><!--/mirrors -->
{% include footer.html %}
<!-- iso download wizard modal -->
<!-- Modal -->
{% raw %}
<div class="modal fade" id="isoModal" tabindex="-1" role="dialog" aria-labelledby="isoModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="isoModalLabel">获取安装镜像</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
<ul class="nav nav-tabs">
<li role="presentation" :class="[curCategory === 'os' ? 'active' : '']" @click="switchCategory('os')"><a href="#">操作系统</a></li>
<li role="presentation" :class="[curCategory === 'app' ? 'active' : '']" @click="switchCategory('app')"><a href="#">应用软件</a></li>
</ul>
</div>
<div class="col-md-3">
<ul class="nav nav-pills nav-stacked">
<li v-for="distro in curDistroList" :class="[selected.distro == distro.distro ? 'active' : '']">
<a href="#" @click="switchDistro(distro)">{{ distro.distro }}</a>
</li>
</ul>
</div>
<div class="col-md-9">
<h3>{{selected.distro}}</h3>
<ul>
<template v-for="url in selected.urls">
<li><a :href="url.url">{{url.name}}</a></li>
</template>
</ul>
</div>
</div>
</div>
</div>
</div>
</div><!-- /iso download wizard modal -->
{% endraw %}
</body>
{% raw %}
{% endraw %}
<script src="/static/js/index.js"></script>
<script src="/static/js/browser-update.js"></script>
</html>
<!--
vim: ts=2 sts=2 sw=2 noexpandtab
-->

5
legacy_index.html Normal file
View File

@ -0,0 +1,5 @@
---
permalink: /legacy_index.html
layout: index
legacy: true
---

View File

@ -8,69 +8,21 @@ $('a#eib1gieB')
$('.selectpicker').selectpicker()
var mir_tmpl = $("#template").text(),
label_map = {
'unknown': 'label-default',
'syncing': 'label-info',
'success': 'label-success',
'fail': 'label-warning',
'failed': 'label-warning',
'paused': 'label-warning',
},
help_url = {
{% for h in site.categories['help'] %}"{{h.mirrorid}}": "{{h.url}}"{% if forloop.index < forloop.length %},{% endif %}{% endfor %}
},
new_mirrors = {
{% for n in site.new_mirrors %}"{{n}}": true{% if forloop.index < forloop.length %},{% endif %}{% endfor %}
},
var global_options = {% include options.json %};
var label_map = global_options.options.label_map;
var help_url = {};
global_options.helps.forEach((h) => help_url[h.mirrorid] = h.url);
var new_mirrors = {};
global_options.options.new_mirrors.forEach((m) => new_mirrors[m] = true);
var unlisted = global_options.options.unlisted_mirrors;
var options = {};
global_options.options.force_help_mirrors.forEach((m) => options[m] = {'url': "/help/" + m + "/"})
var descriptions = {};
global_options.options.mirror_desc.forEach((m) => descriptions[m.name] = m.desc);
unlisted = [
{
'status': 'success',
'last_update': '-',
'name': "AUR",
'url': 'https://aur.tuna.tsinghua.edu.cn/',
'upstream': 'https://aur.archlinux.org/'
}
],
options = {
'AOSP': {
'url': "/help/AOSP/"
},
'lineageOS': {
'url': "/help/lineageOS/"
},
'homebrew': {
'url': "/help/homebrew/"
},
'linux.git': {
'url': "/help/linux.git/"
},
'linux-stable.git': {
'url': "/help/linux-stable.git/"
},
'git-repo': {
'url': "/help/git-repo/"
},
'chromiumos': {
'url': "/help/chromiumos/"
},
'weave': {
'url': "/help/weave/"
},
'CocoaPods': {
'url': "/help/CocoaPods/"
},
'llvm': {
'url': "/help/llvm/"
},
'openthos-src': {
'url': "/help/openthos-src/"
}
},
descriptions = {
{% for mir in site.data.mirror_desc %} '{{mir.name}}': '{{mir.desc}}' {% if forloop.index < forloop.length %},{% endif %}{% endfor %}
}
new Vue({
el: "#upgrade-mask",
});
var vmMirList = new Vue({
el: "#mirror-list",

View File

@ -0,0 +1,87 @@
import Mark from 'markup.min.njs';
function legacyIndexRender(r){
function getMirDate(d){
var result;
if (d.last_update_ts) {
var date = new Date(d.last_update_ts * 1000);
if (date.getFullYear() > 2000) {
result = `${('000'+date.getFullYear()).substr(-4)}-${('0'+(date.getMonth()+1)).substr(-2)}-${('0'+date.getDate()).substr(-2)}` +
` ${('0'+date.getHours()).substr(-2)}:${('0'+date.getMinutes()).substr(-2)}`;
} else {
result = "0000-00-00 00:00";
}
} else {
result = d.last_update.replace(/(\d\d:\d\d):\d\d(\s\+\d\d\d\d)?/, '$1');
}
return result;
}
r.subrequest('/legacy_index.html', {
args: '',
body: '',
method: 'GET'
}, function(rTmpl){
if(rTmpl.status != 200){
return r.return(rTmpl.status);
}
var tmpl = rTmpl.responseBody;
r.subrequest('/static/njs/options.json', {
args: '',
body: '',
method: 'GET'
}, function(rOpt){
if(rOpt.status != 200){
return r.return(rOpt.status);
}
var global_options;
try{
global_options = JSON.parse(rOpt.responseBody);
}catch(e){
return r.return(500);
}
var label_map = global_options.options.label_map;
var help_url = {};
global_options.helps.forEach((h) => help_url[h.mirrorid] = h.url);
var new_mirrors = {};
global_options.options.new_mirrors.forEach((m) => new_mirrors[m] = true);
var unlisted = global_options.options.unlisted_mirrors;
var force_help = {}
global_options.options.force_help_mirrors.forEach((m) => force_help[m] = true);
var descriptions = {};
global_options.options.mirror_desc.forEach((m) => descriptions[m.name] = m.desc);
r.subrequest('/static/tunasync.json', {
args: '',
body: '',
method: 'GET'
}, function(rMirs){
var mirs = unlisted;
if(rMirs.status == 200){
try{
mirs = mirs.concat(JSON.parse(rMirs.responseBody));
}catch(e){
}
}
var renMirs = mirs.filter(m => m.status != "disabled" && m.is_master).map(m => ({
status: m.status,
name: m.name,
description: descriptions[m.name],
url: force_help[m.name] ? help_url[m.name] : m.url ? m.url : '/' + m.name + '/',
is_new: !!new_mirrors[m.name],
help_url: help_url[m.name],
last_update: getMirDate(m),
label: label_map[m.status],
show_status: m.status != 'success'
}));
renMirs.sort((a, b) => a.name < b.name ? -1: 1 );
var result = Mark.up(tmpl, {mirs: renMirs});
r.status = 200;
r.headersOut['Content-Type'] = 'text/html';
r.sendHeader();
r.send(result);
r.finish();
})
})
});
}

File diff suppressed because one or more lines are too long

3
static/njs/options.json Normal file
View File

@ -0,0 +1,3 @@
---
---
{% include options.json %}