Skip to content

sklynic/2022-tasks

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

重庆大学蓝盟运维部 2022 年纳新

以下三题任选一题完成(当然能够完成或者部分完成多于一道题目我们也非常欢迎),其中必须完成第 1 小问。

每一大题的各小问大体上是递进关系,不过在完成第 1 小问的基础上其他跳着完成也是可以的。

请完成尽量多的要求。截止时不管完成多少都请向我们提交,推荐的提交方式是 git 仓库,但其他方式也可以。

题目一(镜像同步)

镜像站的工作之一就是将镜像同步到镜像站本地

该题需要在 GNU/Linux 环境下运行.

  1. 周期性同步(周期在 8 小时以内)crates.io-index 到本地(以 git 仓库的形式),并且需要可以在未同步的机器上进行第一次同步;(注意 crates.io-index 仓库时常会进行 rebase)

  2. 可以处理不同的同步结果(成功、各种原因的失败),如:

    1. 同步失败后可以以更高的频率重试同步,以尽量保证时效性(不旧于原仓库 4 小时)
    2. 硬盘空间不足时可以通知镜像站维护者(如邮件,方式自定)

    但你能想到的其他情况也可以考虑;

    注:依笔者经验,国内直接通过 https 访问 GitHub 会间歇性发生连接超时等问题

  3. 能将同步结果反映到本地的一个网页中,并可以通过 http 服务呈献给用户(方式自定,当然如果同时完成题目二我们也是非常欢迎的);

  4. 将你的作品用 docker 容器化并将 http 端口开放。

题目二(http 服务)

除了同步镜像,镜像站的另一工作就是向用户提供下载服务

  1. 用 nginx 在 80 端口提供 http 服务,反向代理一个开源软件镜像(由你选择)并托管一个存储在本地的 crates.io-index 仓库,使得用户可以通过你的服务可以:访问你反代的镜像、用 git 下载 crates.io-index;

    注:从 https://github.com/rust-lang/crates.io-indexhttps://mirrorz.org/list/crates.io-index.git 中列出的镜像同步一次到本地即可作为“存储于本地的 crates.io-index 仓库”

  2. 已知镜像站的防火墙会将(因滥用镜像站服务而)不受欢迎的 ip 转发到 8080 端口,请在第 1 问的基础上让 nginx 同时也在 8080 端口提供 http 服务,固定返回 503 状态码并通过页面提示用户已被封禁;

  3. 用 Smart HTTP 协议提供 crates.io-index 的镜像服务,使得用户的 cargo(rust 的包管理器)可以使用你的 crates.io-index 镜像;

    注:cargo 无法通过静态 http 协议同步 crates.io-index 仓库,只能通过有后端的 Smart HTTP 协议来同步 crates.io-index 仓库

  4. 将你的作品用 docker 容器化并将相应的 http 端口开放。

题目三(封禁信息)

防止滥用者影响正常用户使用镜像站的服务,也是镜像站的重要工作之一

我们会对涉嫌滥用镜像站服务的 ip 进行封禁,做法是将其连接转发到某个 http 服务端口(8080 为例)上,其中我们固定返回 503 状态码以及提示用户被封禁的页面。但被封禁的用户与我们联系时可能出现这种情况:通过对方提供的 ip 我们无法在镜像站上查询到相关日志,从而也无法进行解封等操作。因此我们尝试在提示页面上带上相关的信息:

  1. 实现一个 FastCGI 程序,返回 html 格式的提示页面,除了提示用户被封禁的信息外,还加上用户的 ip、完整的 url 等信息,同时 注意你写出的程序的安全性
  2. 考虑到用户有可能通过公开平台和我们联系,为了保护用户隐私,在 1 的基础上再加上加密的 ip(其他信息可选)(以下简称密文),并满足以下要求:
    • 镜像站维护者们能够解密该密文,并且可以验证密文一定是由镜像站进行加密的
    • 其他人无法解密该密文
    • 不需要额外在镜像站上留存相关 http 请求的信息
    • 同一明文每次加密会得到不同密文

自定义

除了上面三道题目外,如果你有其他想法,也欢迎和我们联系!

感谢

许可

CC BY-SA 4.0

About

蓝盟运维部 2022 年纳新任务

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 100.0%