mirror of
https://github.com/tuna/mirror-web.git
synced 2025-12-25 20:32:46 +00:00
wip-ustc
This commit is contained in:
parent
fae0604361
commit
c63b76cc5a
|
|
@ -0,0 +1,20 @@
|
|||
<div id="footer">
|
||||
<div id="footercontent">
|
||||
<div id="footerleft">
|
||||
<p>本站{% if site.operator %}由{{ site.operator }}支持创办,{% endif %}由清华大学 TUNA 协会运行维护。</p>
|
||||
<p>清华大学 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>根据相关法律法规,本站不对欧盟用户提供服务。</p>
|
||||
</div>
|
||||
<div id="footerright">
|
||||
<p>
|
||||
<span style="font-family:'Open Sans','Seoge UI','Ubuntu',sans-serif; font-size:2em; font-weight:400">
|
||||
TUNA
|
||||
</span>
|
||||
</p>
|
||||
<p style="font-family:'clicker script','segoe script','Comic Sans MS'; font-size:28px">"life,love,linux"</p>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<div id="header">
|
||||
<ul id="headlinks">
|
||||
<li><a href="{{ site.homelink }}" target="_blank">Home</a></li>
|
||||
<li><a href="https://tuna.moe/events/" target="_blank">Events</a></li>
|
||||
<li><a href="https://tuna.moe/blog/" target="_blank">Blog</a></li>
|
||||
<li><a href="https://tuna.moe/feed.xml" target="_blank">RSS</a></li>
|
||||
<li><a href="https://tuna.moe/feed.xml" target="_blank">Podcast</a></li>
|
||||
<li><a href="{{ site.url }}" target="_blank">Mirrors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="welcome">
|
||||
<div id="intro">
|
||||
<h1 id="infinity">Another infinity</h1>
|
||||
<h2>Welcome to {{ site.brand }}.</h2>
|
||||
<p>Brought to you by {{ site.author }}.</p>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<script type="text/javascript">
|
||||
var isoinfo;
|
||||
|
||||
function update_isodistro_options() {
|
||||
$.getJSON("/static/status/isoinfo.json", function (data) {
|
||||
isoinfo = data;
|
||||
var s = document.getElementById("isodistro");
|
||||
s.options.length = 0;
|
||||
for (var i = 0; i < isoinfo.length; i++) {
|
||||
s.options[s.options.length] = new Option(isoinfo[i].distro, i);
|
||||
}
|
||||
switchdistro();
|
||||
});
|
||||
}
|
||||
|
||||
function modal() {
|
||||
var bx = document.getElementById("isomodal");
|
||||
bx.style.visibility = (bx.style.visibility == "visible") ? "hidden" : "visible";
|
||||
}
|
||||
|
||||
function switchdistro() {
|
||||
var distro = document.getElementById("isodistro");
|
||||
var idx = distro.selectedIndex;
|
||||
var s = document.getElementById('isoversion');
|
||||
s.options.length = 0;
|
||||
for (var i = 0; i < isoinfo[idx].urls.length; i++) {
|
||||
s.options[s.options.length] = new Option(isoinfo[idx].urls[i].name, i)
|
||||
}
|
||||
}
|
||||
|
||||
function downloadiso() {
|
||||
var distro = document.getElementById("isodistro");
|
||||
var version = document.getElementById("isoversion");
|
||||
var i = distro.selectedIndex;
|
||||
var j = version.selectedIndex;
|
||||
var link = isoinfo[i].urls[j].url;
|
||||
window.open(link);
|
||||
modal();
|
||||
}
|
||||
|
||||
update_isodistro_options();
|
||||
</script>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
'use strict'
|
||||
|
||||
var userInput = document.getElementById('search')
|
||||
var repoList = document.querySelectorAll('.filelist > tbody > tr')
|
||||
|
||||
userInput.addEventListener('input', function (evt) {
|
||||
var pat = new RegExp(userInput.value, 'i')
|
||||
Array.prototype.slice.call(repoList).forEach(function (tr) {
|
||||
var a = tr.querySelector('a')
|
||||
if (!pat.test(a.text)) {
|
||||
tr.classList.add('hidden')
|
||||
} else {
|
||||
tr.classList.remove('hidden')
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
document.body.onkeyup = function (evt) {
|
||||
if (evt.keyCode === 83 && document.activeElement.tagName !== 'INPUT') {
|
||||
userInput.scrollIntoView()
|
||||
userInput.focus()
|
||||
}
|
||||
}
|
||||
})()
|
||||
</script>
|
||||
<!-- Designed by Miaomiao Li. It's a wonderful life! -->
|
||||
<!--
|
||||
vim:ai:et:sta:ts=4:sts=4:sw=4
|
||||
-->
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
<div id="sidebar">
|
||||
<div id="servernews">
|
||||
<a href="/news/">
|
||||
<h3>镜像站新闻通知</h3>
|
||||
</a>
|
||||
{% if site.categories.news|length > 0 %}
|
||||
{% for news in site.categories.news limit: 3%}
|
||||
<p><a href="{{ /news/#{{news.slug}} }}">{{ news.title }}</a></p>
|
||||
{%- endfor %}
|
||||
{% else %}
|
||||
<p>暂无新闻
|
||||
<p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div id="cdimages">
|
||||
<h3>获取发行版映像</h3>
|
||||
<p>这里为您提供各大主流 Linux 发行版的安装镜像 / ISO 文件,请根据您的发行版及其详细版本进行选择:</p>
|
||||
<p></p>
|
||||
<span class="btn" onclick="modal()">获取安装镜像 ></span>
|
||||
</div>
|
||||
<div id="domains">
|
||||
<h3>域名选择</h3>
|
||||
<a href="https://mirrors.tuna.tsinghua.edu.cn/">mirrors.tuna.tsinghua.edu.cn</a> 自动选择<br />
|
||||
<a href="https://mirrors6.tuna.tsinghua.edu.cn/">mirrors6.tuna.tsinghua.edu.cn</a> IPv6<br />
|
||||
<a href="https://mirrors4.tuna.tsinghua.edu.cn/">mirrors4.tuna.tsinghua.edu.cn</a> IPv4<br />
|
||||
<span></span>
|
||||
</div>
|
||||
<!-- <div id="mirrorshelp">
|
||||
<h3>Mirrors 帮助</h3>
|
||||
<p>如果您不了解如何配置 Linux 发行版 / 软件的安装源, 这里为您提供了主流发行版的软件源配置帮助:</p>
|
||||
<span class="btn" onclick="window.open('/help')">配置软件源 ></span>
|
||||
<p>您也可以通过左边的文件列表中相应源的 Help 链接寻求帮助。</p>
|
||||
<span></span>
|
||||
</div> -->
|
||||
<div id="mirrorlinks">
|
||||
<h3>相关链接</h3>
|
||||
<a href="https://mirrors.tuna.tsinghua.edu.cn/help/" target="_blank">使用帮助</a><br />
|
||||
<a href="https://mirrors.tuna.tsinghua.edu.cn/status/#server-status" target="_blank">服务器状态</a><br />
|
||||
<a href="https://mirrors.tuna.tsinghua.edu.cn/status/#syncing-status" target="_blank">同步状态</a><br />
|
||||
<a href="https://tuna.moe/" target="_blank">清华大学 TUNA 协会</a><br />
|
||||
<a href="https://github.com/tuna/tunasync" target="_blank">镜像管理器源码</a><br />
|
||||
<a href="https://github.com/tuna/tunasync-scripts" target="_blank">自定义镜像脚本</a><br />
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
|
|
@ -0,0 +1,541 @@
|
|||
<style rel='stylesheet' type='text/css'>
|
||||
/* css reset */
|
||||
html {
|
||||
color: #000;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
body,
|
||||
div,
|
||||
dl,
|
||||
dt,
|
||||
dd,
|
||||
ul,
|
||||
ol,
|
||||
li,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
pre,
|
||||
code,
|
||||
form,
|
||||
fieldset,
|
||||
legend,
|
||||
input,
|
||||
textarea,
|
||||
p,
|
||||
blockquote,
|
||||
th,
|
||||
td {
|
||||
margin: 0;
|
||||
padding: 0
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0
|
||||
}
|
||||
|
||||
fieldset,
|
||||
img {
|
||||
border: 0
|
||||
}
|
||||
|
||||
address,
|
||||
caption,
|
||||
cite,
|
||||
code,
|
||||
dfn,
|
||||
em,
|
||||
strong,
|
||||
th,
|
||||
var {
|
||||
font-style: normal;
|
||||
font-weight: normal
|
||||
}
|
||||
|
||||
li {
|
||||
list-style: none
|
||||
}
|
||||
|
||||
caption,
|
||||
th {
|
||||
text-align: left
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-size: 100%;
|
||||
font-weight: normal
|
||||
}
|
||||
|
||||
q:before,
|
||||
q:after {
|
||||
content: ''
|
||||
}
|
||||
|
||||
abbr,
|
||||
acronym {
|
||||
border: 0;
|
||||
font-variant: normal
|
||||
}
|
||||
|
||||
sup {
|
||||
vertical-align: text-top
|
||||
}
|
||||
|
||||
sub {
|
||||
vertical-align: text-bottom
|
||||
}
|
||||
|
||||
input,
|
||||
textarea,
|
||||
select {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
font-weight: inherit
|
||||
}
|
||||
|
||||
input,
|
||||
textarea,
|
||||
select {
|
||||
*font-size: 100%
|
||||
}
|
||||
|
||||
legend {
|
||||
color: #000
|
||||
}
|
||||
|
||||
/*stylesheet here*/
|
||||
body {
|
||||
background-color: #FDFFFD;
|
||||
}
|
||||
|
||||
#header {
|
||||
width: 75%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
#headlinks {
|
||||
float: right;
|
||||
margin-right: 10px;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
#headlinks li {
|
||||
float: left;
|
||||
margin-left: 25px;
|
||||
font-family: "Open Sans", "Ubuntu", Helvetica, Arial, Geneva, sans-serif;
|
||||
font-size: 16px;
|
||||
color: #EEECDF;
|
||||
}
|
||||
|
||||
#headlinks li:hover {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
#headlinks li a {
|
||||
font-family: "Open Sans", "Ubuntu", Helvetica, Arial, Geneva, sans-serif;
|
||||
font-size: 16px;
|
||||
color: #EEECDF;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#headlinks li a:hover {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
#welcome {
|
||||
/*width: 100%;*/
|
||||
padding: 40px 15px 40px 0px;
|
||||
background: #40bd97;
|
||||
/* Old browsers */
|
||||
background: -moz-linear-gradient(top, #40bd97 0%, #07a878 100%);
|
||||
/* FF3.6+ */
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #40bd97), color-stop(100%, #07a878));
|
||||
/* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(top, #40bd97 0%, #07a878 100%);
|
||||
/* Chrome10+,Safari5.1+ */
|
||||
background: -o-linear-gradient(top, #40bd97 0%, #07a878 100%);
|
||||
/* Opera 11.10+ */
|
||||
background: -ms-linear-gradient(top, #40bd97 0%, #07a878 100%);
|
||||
/* IE10+ */
|
||||
background: linear-gradient(to bottom, #40bd97 0%, #07a878 100%);
|
||||
/* W3C */
|
||||
}
|
||||
|
||||
#intro {
|
||||
margin: 0 auto;
|
||||
width: 75%;
|
||||
color: #F1F1F1;
|
||||
}
|
||||
|
||||
#intro h1 {
|
||||
font-family: "Open Sans", "Ubuntu", Helvetica, Arial, Geneva, sans-serif;
|
||||
font-weight: 400;
|
||||
font-size: 48px;
|
||||
margin-top: 10px;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
#intro h2 {
|
||||
font-family: "Open Sans", "Ubuntu", Helvetica, Arial, Geneva, sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 24px;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#intro p {
|
||||
margin-bottom: 0px;
|
||||
line-height: 1.3em;
|
||||
font-family: "Open Sans", "Ubuntu", Helvetica, Arial, Geneva, sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
#wrapper {
|
||||
width: 75%;
|
||||
margin: 25px auto;
|
||||
}
|
||||
|
||||
#filelist h3 {
|
||||
color: #07A878;
|
||||
font-family: "Open Sans", "Ubuntu", "Hiragino Sans GB", "Wenquanyi Micro Hei", "WenQuanYi Micro Hei Mono", "WenQuanYi Zen Hei", "WenQuanYi Zen Hei", "Apple LiGothic Medium", "STXihei", "ST Heiti", "WenQuanYi Zen Hei Sharp", sans-serif;
|
||||
font-weight: 100;
|
||||
font-size: 24px;
|
||||
margin: 5px 0 5px 0;
|
||||
}
|
||||
|
||||
#filelist table {
|
||||
width: 100%;
|
||||
empty-cells: hide;
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
font-size: 16px;
|
||||
font-family: "Open Sans", "Ubuntu", Helvetica, Arial, Geneva, sans-serif;
|
||||
padding: 3px 0px;
|
||||
}
|
||||
|
||||
thead {
|
||||
/*border-bottom:thin dotted #000;*/
|
||||
}
|
||||
|
||||
#name {
|
||||
text-align: left;
|
||||
padding: 3px 0 3px 3px;
|
||||
}
|
||||
|
||||
#help {
|
||||
text-align: left;
|
||||
padding: 3px 3px 3px 0;
|
||||
}
|
||||
|
||||
#filelist td {
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
font-family: "Open Sans", "Ubuntu", Helvetica, Arial, Geneva, sans-serif;
|
||||
}
|
||||
|
||||
#filelist td.help {
|
||||
padding: 0px 3px 0px 0px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#filelist td.filename {
|
||||
padding-left: 3px;
|
||||
}
|
||||
|
||||
#filelist td a {
|
||||
color: #0B486B;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#filelist a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#revproxy,
|
||||
#revproxy+h3>label>span+span,
|
||||
#revproxy:checked+h3>label>span,
|
||||
#revproxy~div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#revproxy:checked+h3>label>span+span {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#revproxy:checked~div {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#filename {
|
||||
text-align: left;
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
.filesize {
|
||||
display: none;
|
||||
text-align: right;
|
||||
width: 0%;
|
||||
}
|
||||
|
||||
.filetime {
|
||||
text-align: left;
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
.help {
|
||||
text-align: left;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
tbody tr:hover {
|
||||
background-color: #DDEADD;
|
||||
}
|
||||
|
||||
#sidebar div {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
#sidebar h3 {
|
||||
color: #07A878;
|
||||
font-family: "Hiragino Sans GB", "Wenquanyi Micro Hei", "WenQuanYi Micro Hei Mono", "WenQuanYi Zen Hei", "WenQuanYi Zen Hei", "Apple LiGothic Medium", "STXihei", "ST Heiti", "WenQuanYi Zen Hei Sharp", sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 24px;
|
||||
margin: 0px 0 15px 0;
|
||||
}
|
||||
|
||||
#sidebar p,
|
||||
a {
|
||||
line-height: 1.5em;
|
||||
font-family: "Open Sans", "Ubuntu", "Hiragino Sans GB", "Wenquanyi Micro Hei", "WenQuanYi Micro Hei Mono", "WenQuanYi Zen Hei", "WenQuanYi Zen Hei", "Apple LiGothic Medium", "STXihei", "ST Heiti", "WenQuanYi Zen Hei Sharp", sans-serif;
|
||||
}
|
||||
|
||||
#sidebar a {
|
||||
color: #030303;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#sidebar a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: inline-block;
|
||||
background-color: #07A878;
|
||||
margin: 12px auto 12px auto;
|
||||
padding: 3px 20px;
|
||||
line-height: 1.5em;
|
||||
font-family: "Open Sans", "Ubuntu", "Hiragino Sans GB", "Wenquanyi Micro Hei", "WenQuanYi Micro Hei Mono", "WenQuanYi Zen Hei", "WenQuanYi Zen Hei", "Apple LiGothic Medium", "STXihei", "ST Heiti", "WenQuanYi Zen Hei Sharp", sans-serif;
|
||||
font-size: 20px;
|
||||
color: #f3f3f3;
|
||||
text-align: center;
|
||||
-webkit-transition: background 0.3s linear;
|
||||
-moz-transition: background 0.3s linear;
|
||||
-ms-transition: background 0.3s linear;
|
||||
-o-transition: background 0.3s linear;
|
||||
transition: background 0.3s linear;
|
||||
cursor: pointer;
|
||||
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
background-color: #40BD97;
|
||||
}
|
||||
|
||||
#footer {
|
||||
background-color: #333;
|
||||
color: #bbb;
|
||||
padding: 30px 0;
|
||||
}
|
||||
|
||||
#footercontent {
|
||||
width: 75%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
#footerleft {
|
||||
font-family: "Open Sans", "Ubuntu", "Hiragino Sans GB", "Wenquanyi Micro Hei", "WenQuanYi Micro Hei Mono", "WenQuanYi Zen Hei", "WenQuanYi Zen Hei", "Apple LiGothic Medium", "STXihei", "ST Heiti", "WenQuanYi Zen Hei Sharp", sans-serif;
|
||||
width: 60%;
|
||||
float: left;
|
||||
font-size: 14px;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
#footerleft a {
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
#footerright {
|
||||
width: 33%;
|
||||
float: right;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#footerright p {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.modal {
|
||||
visibility: hidden;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
text-align: center;
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
.modalclear {
|
||||
width: 100%;
|
||||
background-color: rgba(255, 255, 255, 0.85);
|
||||
height: 100%;
|
||||
z-index: 6;
|
||||
}
|
||||
|
||||
.modalcontainer {
|
||||
position: absolute;
|
||||
width: 40%;
|
||||
min-width: 345px;
|
||||
top: 10%;
|
||||
left: 30%;
|
||||
margin: 0 auto;
|
||||
background-color: #FCFCFC;
|
||||
border: 3px solid #ccc;
|
||||
padding: 0px;
|
||||
text-align: left;
|
||||
overflow: hidden;
|
||||
-webkit-box-shadow: 0px 0px 6px 3px rgba(128, 128, 128, 128);
|
||||
box-shadow: 0px 0px 6px 3px rgba(128, 128, 128, 128);
|
||||
opacity: 1;
|
||||
z-index: 7;
|
||||
}
|
||||
|
||||
.modaltitle {
|
||||
font-family: "Open Sans", "Ubuntu", Helvetica, Arial, Geneva, sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 22px;
|
||||
padding: 8px 20px;
|
||||
background-color: #07A878;
|
||||
color: #FCFCFC;
|
||||
}
|
||||
|
||||
.modalcontent {
|
||||
font-family: "Open Sans", "Ubuntu", "Hiragino Sans GB", "Wenquanyi Micro Hei", "WenQuanYi Micro Hei Mono", "WenQuanYi Zen Hei", "WenQuanYi Zen Hei", "Apple LiGothic Medium", "STXihei", "ST Heiti", "WenQuanYi Zen Hei Sharp", sans-serif;
|
||||
font-size: 22px;
|
||||
padding: 8px 20px;
|
||||
background-color: #FFFFFF;
|
||||
line-height: 1.8em;
|
||||
}
|
||||
|
||||
.modalcontent p {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.modalcontent select {
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
@media screen and (min-width:881px) {
|
||||
#filelist {
|
||||
float: left;
|
||||
width: 60%;
|
||||
border-right: 1px solid #eee;
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
float: right;
|
||||
width: 33%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width:880px) {
|
||||
#filelist {
|
||||
float: left;
|
||||
width: 100%;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
float: left;
|
||||
max-width: 400px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#isomodalcontainer {
|
||||
left: 0%;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
min-width: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* when a page is narrower than 540px,
|
||||
regarded as mobile device
|
||||
*/
|
||||
@media screen and (max-width:540px) {
|
||||
|
||||
.update,
|
||||
.filetime,
|
||||
#infinity {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#intro h2 {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
#footerleft,
|
||||
#header {
|
||||
width: 100%;
|
||||
float: none;
|
||||
}
|
||||
|
||||
#footerright {
|
||||
float: none;
|
||||
width: 100%;
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
#welcome {
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
#search {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#filetitle {
|
||||
float: left;
|
||||
line-height: 36px;
|
||||
}
|
||||
|
||||
#search {
|
||||
float: right;
|
||||
line-height: 18px;
|
||||
padding: 8px;
|
||||
border: 1px solid #e3e3e3;
|
||||
margin-top: 5px;
|
||||
max-width: 240px;
|
||||
font-size: 16px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,218 +1,76 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
{% include head.html notArticle=true %}
|
||||
<body>
|
||||
{% unless page.legacy or site.issue %}
|
||||
{% include legacy_notes.html %}
|
||||
{% endunless %}
|
||||
{% include nav.html %}
|
||||
<div id="mirrors">
|
||||
<div class="spacing hidden-xs"></div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
{% if site.issue %}
|
||||
<div class="col-{% if page.legacy %}xs{% else %}md{% endif %}-12 table-responsive">
|
||||
<div class="alert text-center" id="cover-alert">
|
||||
<h1>{{ site.school }}开源软件镜像站</h1>
|
||||
<h3>暂时无法提供服务</h3>
|
||||
<div class="pull-right">
|
||||
<img src="/static/img/candle.jpg"
|
||||
srcset="/static/img/candle.jpg 1x,
|
||||
/static/img/candle@2x.jpg 2x"
|
||||
/>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
<p>{{ site.issue }}</p>
|
||||
{% if site.backtime %}
|
||||
<p>预计恢复时间: {{ site.backtime }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<html lang="zh-Hans-CN">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>{{ site.title }}</title>
|
||||
<link href="/static/ustc/css/fonts.css" rel="stylesheet" type="text/css">
|
||||
<link rel="shortcut icon" type="image/png" href="/static/img/favicon.png">
|
||||
<script src="/static/js/jquery.min.js?{{ site.data['hash'] }}"></script>
|
||||
<script src="/static/js/bootstrap.min.js?{{ site.data['hash'] }}"></script>
|
||||
<script src="/static/js/bootstrap-select.min.js?{{ site.data['hash'] }}"></script>
|
||||
<!-- <script src="/static/js/vue.min.js?{{ site.data['hash'] }}"></script> -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/vue@2.0.5/dist/vue.js"></script>
|
||||
<script src="/static/js/timeago.min.js?{{ site.data['hash'] }}"></script>
|
||||
<script src="/static/js/markup.min.js?{{ site.data['hash'] }}"></script>
|
||||
<script src="/static/js/webfont.js?{{ site.data['hash'] }}"></script>
|
||||
<script src="/static/js/thuhidden.js?{{ site.data['hash'] }}"></script>
|
||||
{% include ustc/style.html %}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{% include ustc/header.html %}
|
||||
<div id="wrapper">
|
||||
<div id="mirror-list">
|
||||
<div id="filelist">
|
||||
<div>
|
||||
<h3 id="filetitle">文件列表</h3>
|
||||
<input placeholder="按 S 过滤" id="search" type="search" autocomplete="off" />
|
||||
</div>
|
||||
<div class="row">
|
||||
{% else %}
|
||||
<div class="col-{% if page.legacy %}xs{% else %}md{% endif %}-8 table-responsive" id="mirror-list">
|
||||
<div class="row">
|
||||
<h3 id="mirror-title">{% fa_svg fas.fa-cube %} 镜像列表 </h3>
|
||||
{% unless page.legacy %}
|
||||
<input type="search" v-model.trim="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 aria-hidden="true" class="question-circle" title="Help">{% endraw %}{% fa_svg fas.fa-question-circle %}{% raw %}</i><span class="sr-only">[Help]</span></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)" :aria-label="mir.name + ', ' + mir.description">
|
||||
{{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 aria-hidden="true" class="question-circle" title="Help">{% endraw %}{% fa_svg fas.fa-question-circle %}{% raw %}</i><span class="sr-only">[Help]</span></a>
|
||||
<a v-if='mir.github_release' href="javascript:void(0)"><i aria-hidden="true" title="GitHub Release">{% endraw %}{% fa_svg fab.fa-github %}{% raw %}</i><span class="sr-only">[GitHub Release]</span></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>
|
||||
{% endif %}
|
||||
{% unless site.issue %}
|
||||
<div class="col-{% if page.legacy %}xs{% else %}md{% endif %}-4">
|
||||
<div class="spacing hidden-xs"></div>
|
||||
<div id="wizard">
|
||||
</div>
|
||||
{% endunless %}
|
||||
<div id="news" {%if site.issue%}class="col-md-3"{%endif%}>
|
||||
<h4>{% fa_svg fas.fa-bullhorn %} 新闻公告 </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 {% fa_svg fas.fa-angle-double-right %} </a></div>
|
||||
</div>
|
||||
<div class="thuhidden {%if site.issue%}col-md-4{%endif%}">
|
||||
<h4> {% fa_svg fas.fa-link %} 域名选择 </h4>
|
||||
<ul>
|
||||
<li><a href="{{ site.url }}">{{ site.url }}</a> 自动选择 </li>
|
||||
{% if site.urlv6 %}
|
||||
<li><a href="{{ site.urlv6 }}">{{ site.urlv6 }}</a> 只解析 IPv6</li>
|
||||
{% endif %}
|
||||
{% if site.urlv4 %}
|
||||
<li><a href="{{ site.urlv4 }}">{{ site.urlv4 }}</a> 只解析 IPv4</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
{% unless page.legacy or site.hide_download or site.issue %}
|
||||
<div id="download-link">
|
||||
<h4>{% fa_svg far.fa-file-archive %} 下载链接 </h4>
|
||||
<p>常用发行版 iso 和应用工具安装包直接下载</p>
|
||||
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#isoModal">
|
||||
获取下载链接
|
||||
</button>
|
||||
</div>
|
||||
{% endunless %}
|
||||
<div class="thuhidden {%if site.issue%}col-md-3{%endif%}">
|
||||
<h4> {% fa_svg far.fa-envelope %} 联系我们 </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 class="eib1gieB"></a></li>
|
||||
<li><strong>在线交流</strong> <br /> <a href="https://web.libera.chat/#tuna"> #tuna at Libera.Chat </a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div {%if site.issue%}class="col-md-2"{%endif%}>
|
||||
<h4> {% fa_svg fas.fa-external-link-alt %} 相关链接 </h4>
|
||||
<ul>
|
||||
<li><a href="/help/">使用帮助</a></li>
|
||||
{% unless site.issue %}
|
||||
<li><a href="/status/#server-status">服务器状态</a></li>
|
||||
<li><a href="/status/#syncing-status">同步状态</a></li>
|
||||
{% endunless %}
|
||||
<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>
|
||||
{% unless site.issue %}
|
||||
</div>
|
||||
{% endunless %}
|
||||
</div>
|
||||
</div><!--/container -->
|
||||
</div><!--/mirrors -->
|
||||
{% include footer.html %}
|
||||
{% unless page.legacy or site.issue %}
|
||||
<!-- 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">×</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')" v-show="showCategory('os')"><a href="#">操作系统</a></li>
|
||||
<li role="presentation" :class="[curCategory === 'app' ? 'active' : '']" @click="switchCategory('app')" v-show="showCategory('app')"><a href="#">应用软件</a></li>
|
||||
<li role="presentation" :class="[curCategory === 'font' ? 'active' : '']" @click="switchCategory('font')" v-show="showCategory('font')"><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 or site.issue %}
|
||||
<table class="filelist">
|
||||
<thead>
|
||||
<tr id="firstline">
|
||||
<th id="name">Folder</th>
|
||||
<th class="update">Last Update</th>
|
||||
<th id="help">Help</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% raw %}
|
||||
<tr v-for="mir in filteredMirrorList" :key="mir.name">
|
||||
<td class="filename"><a :href="getURL(mir)">{{ mir.name }}</a></td>
|
||||
<td class="filetime">{{ mir.last_update }}</td>
|
||||
<td class="help">
|
||||
<a v-if='mir.help_url' :href="mir.help_url">Help</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endraw %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% include ustc/sidebar.html %}
|
||||
</div>
|
||||
{% include ustc/footer.html %}
|
||||
<div class="modal" id="isomodal">
|
||||
<div class="modalclear" id="isomodalclear" onclick="modal()"></div>
|
||||
<div class="modalcontainer" id="isomodalcontainer" onclick="">
|
||||
<div class="modaltitle" id="isomodaltitle"><span>获取安装镜像</span><span onclick="modal()"
|
||||
style="float:right;cursor:pointer">X</span></div>
|
||||
<div class="modalcontent" id="isomodalcontent">
|
||||
<p>选择安装发行版: <select id="isodistro" onchange="switchdistro()"></select></p>
|
||||
<p>选择发行版版本: <select id="isoversion">
|
||||
<option value="none">-</option>
|
||||
</select>
|
||||
</p>
|
||||
<span class="btn" onclick="downloadiso();">获取 ISO ></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% include ustc/script.html %}
|
||||
<script src="/static/js/index.js?{{ site.data['hash'] }}"></script>
|
||||
<script src="/static/js/browser-update.js?{{ site.data['hash'] }}"></script>
|
||||
{% endunless %}
|
||||
</html>
|
||||
<!--
|
||||
vim: ts=2 sts=2 sw=2 noexpandtab
|
||||
-->
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -47,7 +47,7 @@ $color_primary_dark: $color_thu_purple_dark;
|
|||
|
||||
@mixin dark {
|
||||
{% unless site.issue %}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.____亲爱的朋友_你是否有时间停下来听我向您介绍一下我们的教父和救主_橙子 {
|
||||
@content
|
||||
}
|
||||
{% else %}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Clicker Script';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: local('Clicker Script'), local('ClickerScript-Regular'), url('/static/ustc/fonts/clicker-script.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-weight: 30;
|
||||
font-display: fallback;
|
||||
src: local('Open Sans Light'), local('OpenSans-Light'), url(/static/ustc/fonts/open-sans-light.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: local('Open Sans Regular'), local('OpenSans-Regular'), url(/static/ustc/fonts/open-sans.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue