1
0
mirror of https://github.com/ZSCNetSupportDept/website.git synced 2025-10-28 17:05:03 +08:00

9 Commits

Author SHA1 Message Date
dependabot[bot]
d8c44f1e55 Bump cookie and express
Bumps [cookie](https://github.com/jshttp/cookie) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `cookie` from 0.6.0 to 0.7.1
- [Release notes](https://github.com/jshttp/cookie/releases)
- [Commits](https://github.com/jshttp/cookie/compare/v0.6.0...v0.7.1)

Updates `express` from 4.19.2 to 4.21.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.1/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.21.1)

---
updated-dependencies:
- dependency-name: cookie
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-19 20:07:32 +00:00
govolokatliai
3f4bff2f66 新建文章集-git培训,规划开发组项目 2024-10-14 21:23:30 +08:00
govolokatliai
755a0cd758 增加了提示 2024-09-27 23:22:19 +08:00
govolokatliai
7a5d8a7ff0 增加了指南 2024-09-27 23:18:18 +08:00
govolokatliai
325f5b906f 增加一篇指南 2024-09-27 21:58:15 +08:00
govolokatliai
48c28f77ba 后端API文档(内测) 2024-09-23 01:25:50 +08:00
govolokatliai
c1f35228c4 更新recruitment.html 2024-09-05 17:11:38 +08:00
govolokatliai
ff04048f76 增加了一个测试的招新页面 2024-09-05 15:21:22 +08:00
govolokatliai
1c114c9e85 啊啊啊啊啊 2024-09-04 03:58:54 +08:00
31 changed files with 996 additions and 132 deletions

View File

@@ -0,0 +1,78 @@
# 给纯新手的网维快速入门指南
许多新进网维的小伙伴们都可能对我们的日常工作一脸懵:网维是干什么的,我们到底在修什么?其他人说的交换机,主线到底是什么?
甚至有很多正式成员都搞不明白这个问题,为了提升大家的业务水平和网络技术,我们特意编写了这份指南,希望能对你有些许的用处。
<!--truncate-->
## 网络
网维,那不就是修网络的吗?但是,网络是什么?他究竟是什么样的?为什么我可以访问到遥远彼方的内容(网页,游戏,等)?
首先我们需要知道计算机中的一切数据都是一串二进制数字也就是许多的01010101101010.........,网络的本质就是在计算机之间传输这些数字如何进行传输呢通常是使用物理现实的两种状态来表示0和1这两个数字。
比如一个电路简单点说有一个电灯电路闭合电灯亮我们定义这样的状态是1,反之电路断开电灯暗我们定义这样的状态为0,我们让计算机监听这个电路的状态通过电路断开闭合状态不断的超高速的变化就可以传递01010101这些数字来进行信息的传递。
:::info 信息
这里有我们写的一篇科普文章,介绍了网线的一些概念:[Click Me](/docs/wiki/基础知识/科普/网线是什么)
:::
不一定需要电路这种介质还可以是无线电波例如定义电波幅度大于某个值为1,小于某个值为0或者大于某个频率为0,小于某个频率为1,让计算机接受这样的电波并解读,也可以传递信息。
其实,简单地说,前者就是以太网(有线网)本质,网线本质上就是电线,里面是以高频率断断续续的电流,把电线接到计算机里,计算机就可以依据电路的变化情况来获取信息.而后者则是无线网(Wi-Fi,移动通信技术等)本质,他们通过调制电磁波来传递信息。
### 网维
网维主要修的是学生宿舍的以太网,在每个宿舍的每个人的桌子前,都有一个网线端口,用户将网线插入端口和计算机,即可连接到宿舍的楼层线路,端口后面是墙线,意思是它是埋在墙里的,我们一般情况下没法动他
依据宿舍片区的不同,墙线可能直接通去了机房,也有可能是连接到了宿舍的路由器(交换机/光猫),经过这一层转发,再前往机房。
:::tip 提示
你可以在片区信息中查看各个片区的具体结构
:::
路由器是什么?交换机和光猫又是什么?这个问题如果专业地展开来讲有点难懂,对于新手来说,你可以简单的理解为他们都是中转站,电线在这里经过出去的电线继续信息的传递,而不是直接一根线连到网络上去
无线路由器(或者有路由功能的光猫)还可以让用户通过无线方式接入线路,比如,如果你想坐高铁,从中山坐到广州南,然后再从广州南做到其他地方,但是没必要全程坐高铁,你可以打车,坐地铁到广州南,然后再坐高铁。这里一样的,不管有线还是无线的接入,在网关(我们对这些设备的统称)都是转换成有线再出去,
出去是去哪里呢?在宿舍的结构中,是去了机房(或者说,弱电井),宿舍去机房的线就叫做主线(只有通过网关中继的地方才会有主线的概念,直连机房的就直接是墙线)
线路到了机房,一般会接入一个叫做配线架的设备,这个也是一个中继器,方便我们维修(如果是线路坏了的话),配线架的端口总是成对的,有一个进口就会有出口,一般进口都是不用我们去管的,线路经过出口出来,连接到交换机上,我们网维的工作一般追踪到这里,再往后的问题就不是我们的职责了,
交换机有运营商的区别,用户需要接到他宽带开通的运营商对应的交换机上,通过一类叫做“拨号”的协议来进行认证,向运营商用自己的账号请求登录,请求运营商允许联网,这样也方便运营商计费(和学校监控!,交换机通常都是集成了光纤功能在这里将电路的信号调制成光的信号这也是一种传输0101010的方式然后接入运营商的网络访问全国和全球的互联网
## 维修
上面就是我们学校宿舍网络的结构了,网维的工作,本质就是维护这样的结构正常运行,在这些环节中,每一个都有可能出错,一般来说,我们最常见的有两种错误:硬件(物理层)错误(651)和软件错误(691).
### 651错误
硬件错误,通常在拨号时会给出`651`错误,本质上,这种错误就是物理连接出现了问题,要么是墙线老化接触不良了,要么是主线出现了问题,要么是交换机,配线架没有接好,要么是网线问题,对于这种问题,我们通常通过寻线对线器来解决,排查问题
排查问题一般都是调试可能出错的因素,例如,你用一根确定了的是好的网线直连端口对线没问题,但是用户的线连接端口就有问题,那么就是用户的线有问题
:::info 信息
关于更多651错误请查阅wiki相关页面也请查阅`技能`板块中`对线``寻线`的条目
:::
### 691错误
软件错误,通常会在拨号时给出`691`错误,本质上,这意味着物理连接是通的,但是运营商那边拒绝的用户的登录,有几种可能:
1. 交换机接错了,用户是某个运营商,你接到了其他的运营商的交换机,当然报错喽~
2. 短时间内过多的登录,被运营商拉黑了,需要稍等一会子
3. 宽带欠费,停机
4. 账号密码错误
5. 运营商会绑定MAC地址来限制多设备在更换电脑或者转接器等设备时会遇到这样的情况可以打电话给运营商要求所谓的“解绑刷新”也可以组长
:::info 信息
关于更多691错误请查阅wiki的相关页面和相应的文章
:::
## 总结
这里只是一篇简要的指南我们在这里介绍了网络的基本概念让你对你所要维修的系统有一个大概的了解你可以继续去看wiki中的相关条目来进一步扩充你的知识希望你在网维的时光过得愉快

View File

@@ -1,17 +1,9 @@
# 报修服务器
## 概览
ip: **192.112.117.67**\
OS:**CentOS 7.6 64bit**\
配置:CPU - 1核 内存 - 2GB\
系统盘 - SSD云硬盘 40GB\
流量包 - 1000GB/月带宽5Mbps\
服务:报修系统
因信息安全,请移步我们的内部仓库访问相关信息
:::tip 提示
记得续费网站
:::

View File

@@ -1,32 +1,5 @@
# 网站服务器
## 概况
ip:**43.129.159.235**
OS:**Debian 10.2 64bit**
配置CPU - 1核 内存 - 1GB\
系统盘 - SSD云硬盘 25GB\
流量包 - 1024GB/月峰值带宽30Mbps
服务:官网(通过docker部署8090端口nginx反代)\
旧版wiki(docker3000端口,nginx反代)\
新网站(TODO:补充部署方式)
## 服务
### 官网
运行在docker下
### 旧版wiki
运行在docker下
### 开发组网站
由nginx直接代理
## Nginx
网站服务器的服务基本上都是走nginx的对于服务器nginx的配置需要注意一些事项
1. 当初安装nginx的时候用的是lnmp一键安装脚本这个脚本的配置和普通安装好像有点不一样nginx的主配置文件在`/usr/local/nginx/conf/nginx.conf`我修改了配置使其include了`/etc/nginx/sites-enabled`,如果要添加网站,请修改`sites-available`,并将需要启用的配置链接到`sites-enabled`下,不推荐使用脚本自带的`lnmp`脚本,
2. 关于网站的ssl证书要记得更新,配置文件中的证书和key的路径指向certbot默认存放的路径即可
因信息安全,请移步我们的内部仓库访问相关信息
:::tip 提示
记得续费网站

View File

@@ -0,0 +1,44 @@
# 概览Git
这里是git的一个简短教程
## 目录
本教程的目录。。。
1. 介绍-做为版本控制系统的git
- 什么是版本控制系统(VCS)?
- git是如何进行版本控制的
2. git的基础概念
- 新建一个git仓库
- 跟踪文件,暂存文件
- 提交commit
- 分支(branch)介绍
- 合并-merge与rebase
- cherry-pick
- HEAD和相对引用
3. 远程仓库
- clone和origin
- 远程分支是什么
- fetch , pull & push !
4. 托管平台
- github
- gitlab
- gitea
5. 高级
- GUI
- git-gui
- vscode上的一些扩展
- lazygit
- 自建git服务
- gitea
- 参考
- pro git
- learngitbranching.js.org

View File

@@ -0,0 +1 @@
# 什么是版本控制系统(VCS)?

View File

@@ -0,0 +1 @@
# git是如何进行版本控制的

View File

@@ -0,0 +1 @@
# 新建一个git仓库

View File

@@ -0,0 +1 @@
# 跟踪文件,暂存文件

View File

@@ -0,0 +1 @@
# 提交commit

View File

@@ -0,0 +1 @@
# 分支(branch)介绍

View File

@@ -0,0 +1 @@
# HEAD和相对引用

View File

@@ -0,0 +1 @@
# 合并-merge与rebase

View File

@@ -0,0 +1 @@
# clone和origin

View File

@@ -0,0 +1 @@
# 远程分支是什么

View File

@@ -0,0 +1 @@
# fetch , pull & push !

View File

@@ -0,0 +1 @@
# github

View File

@@ -0,0 +1 @@
# gitlab

View File

@@ -0,0 +1 @@
# gitea

View File

@@ -0,0 +1 @@
# GUI

View File

@@ -0,0 +1 @@
# 自建Git服务

View File

@@ -0,0 +1 @@
# 参考

View File

@@ -0,0 +1,21 @@
# 后端API服务
## 介绍
该项目作为网维的统一后端API接口而设计连接网维的数据库并提供一系列接口给前端以支持网维日常的业务逻辑其他开发人员可以直接调用这些接口从而专注与前端以便于降低整个系统设计的复杂度
该项目采用Go语言编写Web框架采用echo,ORM框架为gorm,
## 项目地址
https://github.com/ZSCNetSupportDept/zscnetworksupport-api
## 构建
要想构建该项目,你需要安装`Go``make`,在一台linux机器上构建
输入`make install`即可安装本项目的依赖,而不构建
输入`make build`即可构建该项目,项目放在`make`文件夹下
## 部署
只需要把可执行文件放在生产环境下运行即可,本项目可能会提供一些静态文件访问,需要将`static`放在与可执行文件相同的目录下
## 配置
程序接受,且只接受一个参数,为配置文件的路径,关于配置文件的格式,请参照“配置”一章
## 运行
运行后程序会将日志和错误文件输出到stdout中你可以配置系统服务来使程序开机自启动将输出定向到日志或者stderr里
在运行程序之后你还要配置一些反向代理的软件来将流量导向程序所监听的端口你还要定期续期https证书以保证https访问

View File

@@ -0,0 +1,13 @@
# 配置
# 介绍
配置为一个`json`文件,其中,各个字段的定义如下:
`port`:一个数字,为程序所监听的端口
`database`:
- `Type`:一个字符串,指定了所使用的数据库的类型,需要在`MySQL` `PostgreSQL` `SQLite`中选择一个
- `Path`:对于SQLite填写数据库的位置对于其他的数据库填写URL
- `Port`:数据库所监听的端口SQLite可以不用填以下也是
- `User`:数据库用户名
- `name`:数据库名称,
- `Password`:数据库密码

View File

@@ -0,0 +1,22 @@
# 结构
仓库项目的结构如下:
`main.go`:项目程序的起点,从此处开始运行
`config`:存放了读取配置,提供配置变量相关的代码
`databases`:提供了连接数据库相关的代码,提供主数据库连接变量(Usingdb)
`handlers`:为handler的存放地点一类业务为一个对象handler作为其方法实现
`model`:业务所采用的模型,定义了一个业务对象的存储和相关方法
`use`:在这里注册所有需要提供的API和中间件,程序将使用这里的配置
`make`:存放了构建所产生的程序
`static`:存放了静态文件以进行路由
## 原理
当程序运行时:
main()将调用sysinit(),读取参数中的配置,将配置记录在全局变量`config.UseConfig`

Binary file not shown.

View File

@@ -1,17 +1,21 @@
# 网络维护科wiki首页
:::tip 提示
**至手机用户:点击页面左上角的三条杠打开导航栏,以浏览本站**\
**推荐使用电脑端访问**
:::
## 介绍
这里是中山学院网络维护科wiki,记录了网络维护工作的相关知识wiki的内容都是历代网维的成员整理总结的你也可以贡献自己的内容
:::warning 注意
本wiki还在大量开发中许多条目可能会不完善或者缺失仅供开发组组员和正式成员测试参考使用,如果你对wiki的编写和维护感兴趣可以访问我们的[github源代码仓库](https://github.com/ZSCNetSupportDept/website),具体的细节请联系开发组组长
:::
## wiki的内容
**wiki基本由以下部分组成**
### 技能
@@ -33,3 +37,15 @@ MacOS的修理事项
这里是新版wiki,但是旧版wiki依然可用你可以通过[wiki.zsxyww.com](https://wiki.zsxyww.com) 来访问,上面还有没有迁移的许多旧文章,我们目前在逐步转移这些文章
## 贡献
如果你想为本wiki添砖加瓦可以在仓库里PR:[wiki的github仓库](https://github.com/ZSCNetSupportDept/website)
:::tip 提示
对于新手如果wiki不能解决你的问题和其他疑惑可以随意向组长科长,api,或者其他人请教我们也会加油完善wiki的
:::

0
docs/wiki/gitignore/.gitignore vendored Normal file
View File

View File

@@ -0,0 +1,604 @@
/*
* SPDX-FileCopyrightText: 2022-2024 Megan Conkle <megan.conkle@kdemail.net>
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
/******************************************************************************/
/* Scrollbars */
/******************************************************************************/
ghostwriter--MarkdownEditor QAbstractScrollArea::corner,
ghostwriter--HtmlPreview QAbstractScrollArea::corner,
ghostwriter--Sidebar QAbstractScrollArea::corner {
background: transparent;
}
ghostwriter--MarkdownEditor QAbstractScrollArea,
ghostwriter--HtmlPreview QAbstractScrollArea,
ghostwriter--Sidebar QAbstractScrollArea {
padding: 3px 3px 0px 3px;
margin: 0
}
ghostwriter--Sidebar MarkdownEditor::horizontal,
ghostwriter--Sidebar HtmlPreview::horizontal,
ghostwriter--Sidebar QScrollBar::horizontal {
height: 16px;
margin: 5px;
border: 0;
background: transparent;
}
ghostwriter--MarkdownEditor QScrollBar::vertical,
ghostwriter--HtmlPreview QScrollBar::vertical,
ghostwriter--Sidebar QScrollBar::vertical {
width: 16px;
margin: 5px;
border: 0;
background: transparent;
}
ghostwriter--MarkdownEditor QScrollBar::horizontal:hover,
ghostwriter--HtmlPreview QScrollBar::horizontal:hover,
ghostwriter--Sidebar QScrollBar::horizontal:hover {
background-color: #202325;
border-radius: 3px;
}
ghostwriter--MarkdownEditor QScrollBar::vertical:hover,
ghostwriter--HtmlPreview QScrollBar::vertical:hover,
ghostwriter--Sidebar QScrollBar::vertical:hover {
background-color: #202325;
border-radius: 3px;
}
ghostwriter--MarkdownEditor QScrollBar::handle:horizontal,
ghostwriter--HtmlPreview QScrollBar::handle:horizontal,
ghostwriter--Sidebar QScrollBar::handle:horizontal {
min-width: 50px;
border: 0;
background: #444749;
border-radius: 3px;
}
ghostwriter--MarkdownEditor QScrollBar::handle:horizontal,
ghostwriter--HtmlPreview QScrollBar::handle:horizontal,
ghostwriter--Sidebar QScrollBar::handle:horizontal {
min-width: 50px;
border: 0;
background: #444749;
border-radius: 3px;
}
ghostwriter--MarkdownEditor QScrollBar::handle:vertical,
ghostwriter--HtmlPreview QScrollBar::handle:vertical,
ghostwriter--Sidebar QScrollBar::handle:vertical {
min-height: 50px;
border: 0;
background: #444749;
border-radius: 3px;
}
ghostwriter--MarkdownEditor QScrollBar::handle:horizontal:hover,
ghostwriter--HtmlPreview QScrollBar::handle:horizontal:hover,
ghostwriter--Sidebar QScrollBar::handle:horizontal:hover {
background: #3daee9;
}
ghostwriter--MarkdownEditor QScrollBar::handle:vertical:hover,
ghostwriter--HtmlPreview QScrollBar::handle:vertical:hover,
ghostwriter--Sidebar QScrollBar::handle:vertical:hover {
background: #3daee9;
}
ghostwriter--MarkdownEditor QScrollBar::add-line,
ghostwriter--HtmlPreview QScrollBar::add-line,
ghostwriter--Sidebar QScrollBar::add-line,
ghostwriter--MarkdownEditor QScrollBar::sub-line,
ghostwriter--HtmlPreview QScrollBar::sub-line,
ghostwriter--Sidebar QScrollBar::sub-line,
ghostwriter--MarkdownEditor QScrollBar::add-page,
ghostwriter--HtmlPreview QScrollBar::add-page,
ghostwriter--Sidebar QScrollBar::add-page,
ghostwriter--MarkdownEditor QScrollBar::sub-page,
ghostwriter--HtmlPreview QScrollBar::sub-page,
ghostwriter--Sidebar QScrollBar::sub-page,
ghostwriter--MarkdownEditor QScrollBar::down-arrow,
ghostwriter--HtmlPreview QScrollBar::down-arrow,
ghostwriter--Sidebar QScrollBar::down-arrow,
ghostwriter--MarkdownEditor QScrollBar::right-arrow,
ghostwriter--HtmlPreview QScrollBar::right-arrow,
ghostwriter--Sidebar QScrollBar::right-arrow {
background: transparent;
border: 0
}
/******************************************************************************/
/* Menu Bar */
/******************************************************************************/
QMainWindow QMenuBar {
color: #bdc3c7;
background-color: #151719;
font-size: 10pt;
spacing: 2px;
border: 0px;
border-bottom: 1px;
border-color: #2c2f31;
border-style: solid;
padding: 1px 0px 1px 0px;
}
QMainWindow QMenuBar::item {
padding: 2px 7px 2px 7px;
border: 0px;
margin: 2px;
border-radius: 5px;
}
QMainWindow QMenuBar::item:selected {
background-color: #25282c;
}
QMainWindow QMenuBar::item:hover {
background-color: #373d42;
}
QMainWindow QMenuBar::item:pressed {
background-color: #1f2225;
}
/******************************************************************************/
/* Popup menus */
/******************************************************************************/
QMainWindow QMenu,
QMenuBar QMenu {
color: #bdc3c7;
background-color: #1a1d1f;
border: 0px;
padding: 7px 0px 7px 0px;
}
QMainWindow QMenu::item,
QMenuBar QMenu::item {
background-color: transparent;
padding: 5px 10px 5px 10px;
margin: 0px 0px 0px 0px;
}
QMainWindow QMenu::indicator,
QMenuBar QMenu::indicator {
width: 16px;
height: 16px;
background-color: #25282c;
padding: 0px 5px 0px 5px;
margin: 0px 5px 0px 5px;
}
QMainWindow QMenu::indicator::unchecked,
QMenuBar QMenu::indicator::unchecked {
width: 16px;
height: 16px;
background-color: #25282c;
border-radius: 2px;
border-style: solid;
border-width: 1px;
border-color: #bdc3c7;
margin: 0px 5px 0px 5px;
}
QMainWindow QMenu::indicator::checked,
QMenuBar QMenu::indicator::checked {
width: 16px;
height: 16px;
background-color: #074051;
border-radius: 2px;
border-style: solid;
border-width: 1px;
border-color: #bdc3c7;
margin: 0px 5px 0px 5px;
}
QMainWindow QMenu::item:selected,
QMenuBar QMenu::item::selected {
background-color: #074051;
color: #bdc3c7;
}
QMainWindow QMenu::icon,
QMenuBar QMenu::icon {
border-radius: 2px;
border-width: 0px;
padding: 1px 3px 1px 3px;
margin: 0px 3px 0px 3px;
}
QMainWindow QMenu::icon::checked,
QMenuBar QMenu::icon::checked {
background-color: #373d42;
}
/******************************************************************************/
/* Editor */
/******************************************************************************/
QMainWindow QPlainTextEdit {
border: 0;
margin: 0;
padding: 5px;
background-color: #151719;
color: #bdc3c7;
selection-color: #bdc3c7;
selection-background-color: #074051;
font-family: Noto Sans Mono;
font-size: 15pt;
}
QMainWindow QSplitter::handle {
border: 0;
padding: 0;
margin: 0;
background-color: #2c2f31;
}
QMainWindow QSplitter::handle:vertical {
height: 1px;
}
QMainWindow QSplitter::handle:horizontal {
width: 1px;
}
/******************************************************************************/
/* Sidebar and Activity Bar */
/******************************************************************************/
/* Sidebar */
QMainWindow ghostwriter--Sidebar,
QSplitter ghostwriter--Sidebar {
border: 0;
margin: 0;
padding: 0;
background-color: #151719;
}
ghostwriter--Sidebar QStackedWidget {
border: 0;
padding: 1;
margin: 0;
background-color: #151719;
border-width: 0px;
}
/* Activity bar tabs */
ghostwriter--Sidebar QPushButton[checkable="true"] {
icon-size: 22px;
min-width: 40px;
max-width: 40px;
height: 40px;
outline: none;
margin: 0;
padding: 0;
border: 0;
background-color: transparent;
color: #8b8f92;
border-width: 0px;
border-left-width: 3px;
border-style: solid;
border-color: transparent;
border-radius: 0px;
}
ghostwriter--Sidebar QPushButton:checked {
border-color: #3daee9;
color: #bdc3c7;
background-color: #202325;
}
ghostwriter--Sidebar QPushButton:hover {
background-color: #202325;
}
ghostwriter--Sidebar QPushButton:checked:hover {
border-color: #3daee9;
color: #bdc3c7;
background-color: #202325;
}
/* Activity bar buttons */
ghostwriter--Sidebar QPushButton[checkable="false"] {
icon-size: 22px;
padding: 0;
margin: 0;
border: 0;
border-radius: 5px;
background-color: transparent;
color: #8b8f92;
width: 40px;
height: 40px;
}
ghostwriter--Sidebar QPushButton[checkable="false"]:hover {
color: #bdc3c7;
background-color: #202325;
}
ghostwriter--Sidebar QPushButton[checkable="false"]:pressed {
color: #bdc3c7;
background-color: transparent;
}
/* Stacked widgets inside sidebar pane */
ghostwriter--Sidebar QListWidget {
outline: none;
border: 0;
padding: 1;
background-color: #151719;
color: #bdc3c7;
font-size: 11pt;
font-weight: normal
}
ghostwriter--Sidebar QListWidget::item {
border: 0;
padding: 1 0 1 0;
margin: 0;
background-color: #151719;
color: #bdc3c7;
font-weight: normal
}
ghostwriter--Sidebar QListWidget::item:selected {
border-radius: 0px;
color: #bdc3c7;
background-color: #074051;
}
ghostwriter--Sidebar QLabel {
border: 0;
padding: 0;
margin: 0;
background-color: transparent;
font-size: 11pt;
color: #bdc3c7;
}
/******************************************************************************/
/* Status bar */
/******************************************************************************/
QStatusBar {
margin: 0;
padding: 0;
border-top: 1px solid #2c2f31;
border-left: 0;
border-right: 0;
border-bottom: 0;
background: #151719;
color: #8b8f92;
}
QStatusBar QLabel {
font-size: 11pt;
margin: 0px;
padding: 5px;
border: 0;
background: transparent;
color: #8b8f92;
}
QStatusBar QToolButton {
padding: 5 5 5 5;
margin: 0;
border: 0;
border-radius: 5px;
color: #8b8f92;
background-color: transparent;
font-size: 16px;
width: 32px;
height: 16px;
}
QStatusBar QToolButton:hover,
QStatusBar QToolButton:checked:hover {
background-color: #373d42;
}
QStatusBar QToolButton:pressed,
QStatusBar QToolButton:checked:pressed {
color: #73777a;
background-color: #1f2225;
}
QStatusBar QToolButton:flat,
QStatusBar QToolButton:checked {
background-color: #25282c;
}
QStatusBar QComboBox {
height: 22px;
border: 0px;
margin: 0;
padding: 0;
color: #8b8f92;
background-color: #151719;
font-size: 11pt;
}
QStatusBar QComboBox:hover {
border-bottom: 2px solid #3daee9;
}
QStatusBar QListView {
padding: 7px 0px 7px 0px;
margin: 0px;
color: #bdc3c7;
background-color: #151719;
}
QStatusBar QListView::item {
background-color: transparent;
padding: 5px 10px 5px 10px;
margin: 0px;
}
QStatusBar QListView::item:selected {
background-color: #074051;
color: #bdc3c7;
}
QStatusBar QComboBox::drop-down {
border: 0;
margin: 0;
padding: 0;
height: 20px;
width: 20px;
}
QStatusBar QComboBox::down-arrow {
border: 0;
margin: 0;
padding: 0;
height: 14px;
width: 14px;
image: url(/tmp/lIaSog.png)
}
QStatusBar QComboBox::drop-down:hover {
border-radius: 10px;
background-color: #373d42;
}
QStatusBar #leftStatusBarWidget,
QStatusBar #midStatusBarWidget,
QStatusBar #rightStatusBarWidget {
border: 0;
margin: 0;
padding: 0;
}
/******************************************************************************/
/* Find and Replace Pane */
/******************************************************************************/
ghostwriter--FindReplace QLabel {
font-size: 11pt;
margin: 0px;
padding: 5px;
border: 0;
background: transparent;
color: #8b8f92;
}
ghostwriter--FindReplace QPushButton {
font-size: 16px;
padding: 5 5 5 5;
margin: 0;
border: 0;
border-radius: 5px;
color: #8b8f92;
background-color: transparent;
min-width: 16px;
}
ghostwriter--FindReplace QPushButton:pressed {
color: #9da2a6;
background-color: transparent;
}
ghostwriter--FindReplace QPushButton:hover {
color: #ffffff;
background-color: transparent;
}
ghostwriter--FindReplace QPushButton:disabled {
color: #adb3b6;
background-color: transparent;
}
ghostwriter--FindReplace QPushButton[checkable="true"] {
color: #8b8f92;
background-color: transparent;
min-width: 32px;
height: 16px;
}
ghostwriter--FindReplace QPushButton[checkable="true"]:disabled,
ghostwriter--FindReplace QPushButton:flat:disabled {
color: #adb3b6;
background-color: #272a2e;
}
ghostwriter--FindReplace QPushButton[checkable="true"]:hover,
ghostwriter--FindReplace QPushButton:checked:hover {
background-color: #d0d7db;
background-color: #373d42;
}
ghostwriter--FindReplace QPushButton[checkable="true"]:pressed,
ghostwriter--FindReplace QPushButton:checked:pressed {
color: #73777a;
background-color: #1f2225;
}
ghostwriter--FindReplace QPushButton:checked {
background-color: #25282c;
}
ghostwriter--FindReplace QPushButton:flat {
color: #8b8f92;
background-color: #25282c;
font-weight: bold;
}
ghostwriter--FindReplace QPushButton:flat:hover {
color: #d0d7db;
background-color: #373d42;
}
ghostwriter--FindReplace QPushButton:flat:pressed {
color: #73777a;
background-color: #1f2225;
}
ghostwriter--FindReplace QPushButton:flat:disabled {
color: #adb3b6;
background-color: #272a2e;
}
ghostwriter--FindReplace QPushButton#matchCaseButton,
ghostwriter--FindReplace QPushButton#regexButton {
font-size: 16px;
font-family: default;
font-weight: bold;
}
ghostwriter--FindReplace QPushButton#replaceButton,
ghostwriter--FindReplace QPushButton#replaceAllButton {
font-size: 11pt;
font-family: default;
}
ghostwriter--FindReplace QPushButton#findReplaceCloseButton {
padding: 0;
margin: 0;
icon-size: 16px;
}
ghostwriter--FindReplace QLineEdit {
color: #bdc3c7;
background-color: #202325;
border: 0px;
border-radius: 3px;
selection-color: #bdc3c7;
selection-background-color: #074051;
}
ghostwriter--FindReplace QLineEdit:focus {
border: 1px solid #1d2022;
}

155
package-lock.json generated
View File

@@ -4483,10 +4483,9 @@
}
},
"node_modules/body-parser": {
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
"integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
"license": "MIT",
"version": "1.20.3",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
"integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
"dependencies": {
"bytes": "3.1.2",
"content-type": "~1.0.5",
@@ -4496,7 +4495,7 @@
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"on-finished": "2.4.1",
"qs": "6.11.0",
"qs": "6.13.0",
"raw-body": "2.5.2",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
@@ -4510,7 +4509,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -4519,7 +4517,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -4527,8 +4524,7 @@
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/bonjour-service": {
"version": "1.2.1",
@@ -5204,7 +5200,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -5216,10 +5211,9 @@
"license": "MIT"
},
"node_modules/cookie": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
"license": "MIT",
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
"integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
"engines": {
"node": ">= 0.6"
}
@@ -5868,7 +5862,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -5886,7 +5879,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
"license": "MIT",
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
@@ -6097,8 +6089,7 @@
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
"license": "MIT"
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/electron-to-chromium": {
"version": "1.4.812",
@@ -6138,10 +6129,9 @@
}
},
"node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"license": "MIT",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
"engines": {
"node": ">= 0.8"
}
@@ -6416,7 +6406,6 @@
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -6472,37 +6461,36 @@
}
},
"node_modules/express": {
"version": "4.19.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
"integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
"license": "MIT",
"version": "4.21.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
"integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
"body-parser": "1.20.2",
"body-parser": "1.20.3",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
"cookie": "0.6.0",
"cookie": "0.7.1",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
"encodeurl": "~1.0.2",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "1.2.0",
"finalhandler": "1.3.1",
"fresh": "0.5.2",
"http-errors": "2.0.0",
"merge-descriptors": "1.0.1",
"merge-descriptors": "1.0.3",
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
"path-to-regexp": "0.1.10",
"proxy-addr": "~2.0.7",
"qs": "6.11.0",
"qs": "6.13.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
"send": "0.18.0",
"serve-static": "1.15.0",
"send": "0.19.0",
"serve-static": "1.16.2",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"type-is": "~1.6.18",
@@ -6541,10 +6529,9 @@
"license": "MIT"
},
"node_modules/express/node_modules/path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
"license": "MIT"
"version": "0.1.10",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
"integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w=="
},
"node_modules/express/node_modules/range-parser": {
"version": "1.2.1",
@@ -6747,13 +6734,12 @@
}
},
"node_modules/finalhandler": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
"license": "MIT",
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
"integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
@@ -6768,7 +6754,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -6776,8 +6761,7 @@
"node_modules/finalhandler/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/find-cache-dir": {
"version": "4.0.0",
@@ -7011,7 +6995,6 @@
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -7857,7 +7840,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"license": "MIT",
"dependencies": {
"depd": "2.0.0",
"inherits": "2.0.4",
@@ -7951,7 +7933,6 @@
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -9198,7 +9179,6 @@
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -9216,10 +9196,12 @@
}
},
"node_modules/merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
"license": "MIT"
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
"integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/merge-stream": {
"version": "2.0.0",
@@ -11026,7 +11008,6 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"license": "MIT",
"bin": {
"mime": "cli.js"
},
@@ -11297,7 +11278,6 @@
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
"integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -11342,7 +11322,6 @@
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"license": "MIT",
"dependencies": {
"ee-first": "1.1.1"
},
@@ -12532,12 +12511,11 @@
}
},
"node_modules/qs": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"license": "BSD-3-Clause",
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
"integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
"dependencies": {
"side-channel": "^1.0.4"
"side-channel": "^1.0.6"
},
"engines": {
"node": ">=0.6"
@@ -12609,7 +12587,6 @@
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
"license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
@@ -12624,7 +12601,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -13516,8 +13492,7 @@
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"license": "MIT"
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/sax": {
"version": "1.4.1",
@@ -13620,10 +13595,9 @@
}
},
"node_modules/send": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
"license": "MIT",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
"integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
@@ -13647,7 +13621,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -13655,20 +13628,25 @@
"node_modules/send/node_modules/debug/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/send/node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/send/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/send/node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -13783,15 +13761,14 @@
}
},
"node_modules/serve-static": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
"license": "MIT",
"version": "1.16.2",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
"integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
"dependencies": {
"encodeurl": "~1.0.2",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.18.0"
"send": "0.19.0"
},
"engines": {
"node": ">= 0.8.0"
@@ -13817,8 +13794,7 @@
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
"license": "ISC"
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"node_modules/shallow-clone": {
"version": "3.0.1",
@@ -13889,7 +13865,6 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
@@ -14104,7 +14079,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -14521,7 +14495,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"license": "MIT",
"engines": {
"node": ">=0.6"
}
@@ -14577,7 +14550,6 @@
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"license": "MIT",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
@@ -14590,7 +14562,6 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -14599,7 +14570,6 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -14827,7 +14797,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
"license": "MIT",
"engines": {
"node": ">= 0.8"
}

107
src/pages/recruitment.html Normal file
View File

@@ -0,0 +1,107 @@
<html>
<head>
<style>
form {
/* 居中表单 */
margin: 0 auto;
width: 400px;
/* 显示表单的轮廓 */
padding: 1em;
border: 1px solid #ccc;
border-radius: 1em;
}
ul {
list-style: none;
padding: 0;
margin: 0;
}
form li + li {
margin-top: 1em;
}
label {
/* 确保所有 label 大小相同并正确对齐 */
display: inline-block;
width: 90px;
text-align: right;
}
input,
textarea {
/* 确保所有文本输入框字体相同
textarea 默认是等宽字体 */
font: 1em sans-serif;
/* 使所有文本输入框大小相同 */
width: 300px;
box-sizing: border-box;
/* 调整文本输入框的边框样式 */
border: 1px solid #999;
}
input:focus,
textarea:focus {
/* 给激活的元素一点高亮效果 */
border-color: #aa00ff;
}
textarea {
/* 使多行文本输入框和它们的 label 正确对齐 */
vertical-align: top;
/* 给文本留下足够的空间 */
height: 5em;
}
.button {
/* 把按钮放到和文本输入框一样的位置 */
padding-left: 90px; /* 和 label 的大小一样 */
}
button {
/* 这个外边距的大小与 label 和文本输入框之间的间距差不多 */
margin-left: 0.5em;
}
</style>
</head>
<body>
<h1 align=center>中山学院网络维护科招新系统</h1>
<form action="/api/recruitment_request" method="post">
<ul>
<p align=center><b><em>在这里填写你的招新报名信息:</em></b></p>
<li>
<label for="name">姓名:</label>
<input type="text" id="name" name="user_name" required maxlength=10 />
</li>
<li>
<label for="id">学号:</label>
<input type="number" id="id" name="id" required maxlength=15 />
</li>
<li>
<label for="tel">电话:</label>
<input type="tel" id="tel" name="tel" required maxlength=11 minlength=11 />
</li>
<li>
<label for="mail">邮箱:</label>
<input type="email" id="mail" name="user_email" required/>
</li>
<li class="button">
<button type="submit">提交</button>
</li>
<p align=center><a href=https://zsxyww.com>之前的提交信息有误?点这里修改</a></p>
</ul>
</form>
<message note="这里是后端返回的信息容器">
<p align=center textcolor=#aa00ff></p>
</message>
<footer >
<p id=copyright align=center>2024@ZSC Network Support</p>
<p id=contact align=center>招新QQ群</p>
</footer>
</body>
</html>

View File

@@ -1,3 +1,11 @@
# 备忘录
**这里是网站开发备忘录有什么想法事情都可以记在这里善用Markdown功能**
- 在正式成员中招募一些人来持续维护wiki
## 开发组业务
报修系统
招新系统
网站
开发组网站(wiki和文档)
服务器运维