目录

SEED Labs 开源网络安全实验课程

本仓库是 SEED Labs 中文展示站点。它维护网站页面、实验入口、中文 PDF、Labsetup 压缩包、图片和部署脚本。

注意:本仓库当前不直接保存 LaTeX 源码。实验 Tex 源码在 SEEDLabs 源仓库中维护,例如本机常见路径:

D:\git\SEEDLabs\category-*\实验名\*.tex
D:\git\SEEDLabs\common-files\

网站项目里主要保存已经整理好的展示内容:

Labs_20.04/

目录结构

.
├─ Labs_20.04/                 实验网站内容,当前手动维护
│  ├─ index.html               实验分类入口页
│  ├─ Software/                软件安全分类页和实验页
│  ├─ Networking/              网络安全分类页和实验页
│  ├─ Web/                     Web 安全分类页和实验页
│  ├─ Crypto/                  密码学分类页和实验页
│  ├─ System/                  系统安全分类页和实验页
│  ├─ Blockchain/              区块链分类页和实验页
│  ├─ PDF/                     中文实验 PDF
│  └─ Labsetup/                实验环境压缩包
├─ assets/                     网站样式、图片等静态资源
├─ deploy/                     Docker / Apache 配置
├─ manuals/                    VM、Docker 等说明文档
├─ pages/                      普通页面,如新闻、关于、论文等
├─ scripts/                    资源同步、预览、提交脚本
├─ _data/                      导航等 Jekyll 数据
├─ _includes/                  Jekyll 公共片段
├─ _layouts/                   Jekyll 页面布局
├─ index.md                    首页
├─ labs.html                   跳转到 /Labs_20.04/
├─ Dockerfile                  GitLink / Docker 构建使用
└─ README.md

实验页面维护方式

当前实验页面不再由 _data/lab_portal.json 自动生成,而是手动维护在:

Labs_20.04/

分类入口页:

Labs_20.04/index.html

这里的实验分类已经按当前顺序直接写出,不再遍历数据。

分类页:

Labs_20.04/Software/index.html
Labs_20.04/Networking/index.html
...

这些分类页里的子实验列表也已经直接写出,不再遍历 site.pages

单个实验详情页:

Labs_20.04/<分类>/<实验名>/index.html

实验详情页通过 front matter 控制标题、展示信息和简介,例如:

---
layout: layout_lab_cn
category_key: "Blockchain"
title: "区块链探索实验"
labname: "Blockchain_Exploration"
type: "explore"
image: "blockchain_exploration.png"
docker: yes
arm: no
supervised: "2 小时"
unsupervised: "1 周"
description: >-
  本实验帮助学生获得与以太坊区块链交互的实践经验。
---

description 会同时用于分类列表和实验详情页概述。如果实验正文为空,详情页会自动使用 description 显示概述。

新增实验

假设要在网络安全里新增实验 New_Lab

  1. 新建实验目录:
Labs_20.04/Networking/New_Lab/
  1. 新建实验详情页:
Labs_20.04/Networking/New_Lab/index.html
  1. 如果有展示图,放到实验目录:
Labs_20.04/Networking/New_Lab/new_lab.png
  1. 如果有 PDF,放到:
Labs_20.04/PDF/New_Lab_cn.pdf
  1. 如果有 Labsetup,放到:
Labs_20.04/Labsetup/New_Lab/Labsetup.zip
Labs_20.04/Labsetup/New_Lab/Labsetup-arm.zip
  1. 手动更新所属分类页:
Labs_20.04/Networking/index.html

把新实验卡片加入正确位置,并同步修改顶部实验数量。

如果新增的是实验分类,还需要同步更新:

Labs_20.04/index.html

Tex 源码位置

当前网站项目里没有 Tex 文件。Tex 源码来自 SEEDLabs 源仓库:

https://gitlink.org.cn/seed/SEEDLabs.git

本机开发时通常在:

D:\git\SEEDLabs

scripts/01-sync-resources-from-seedlabs.sh 会把远端源码临时拉到:

.course-content/SEEDLabs

这个目录只是同步缓存,不提交。

脚本

脚本说明见:

scripts/README.md

常用命令:

chmod +x scripts/*.sh

同步 PDF 和 Labsetup 资源:

bash scripts/01-sync-resources-from-seedlabs.sh

本地 Docker 预览:

bash scripts/02-preview-site.sh

默认监听:

http://服务器IP:4000/

提交并推送当前分支:

bash scripts/03-commit-and-push.sh

本地构建

如果本机已经安装 Ruby / Bundler,可以直接构建:

bundle exec jekyll build --trace

生成目录:

_site/

_site/ 是 Jekyll 输出目录,不提交。

不提交的内容

这些目录是临时构建或缓存内容,默认不提交:

_site/
site/
.jekyll-cache/
.course-content/
vendor/

Labs_20.04/Labs_20.04/PDF/Labs_20.04/Labsetup/ 是当前网站需要的内容,应提交到仓库。

本地编译和启动

只编译静态站点:

bundle exec jekyll build

编译结果输出到:

_site/

启动本地预览服务:

bundle exec jekyll serve --host 127.0.0.1 --port 4000

浏览器访问:

http://127.0.0.1:4000/

如果本机没有 Ruby/Jekyll,但有 Docker,可以用脚本启动预览:

bash scripts/02-preview-site.sh

这个脚本默认监听 0.0.0.0:4000。如果在服务器上运行,可以访问:

http://服务器IP:4000/

换端口:

PORT=4001 bash scripts/02-preview-site.sh

停止预览服务:在运行服务的终端按 Ctrl+C

关于
204.2 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号