安固途径

知识来源于感觉和经验

Jest 没有在所有的测试完成之后结束并退出

2023-06-15, 星期四|
修复开发

问题再现

运行 jest

npx jest -- test/abc.spec.js
Jest did not exit one second after the test run has completed.

This usually means that there are asynchronous operations that weren't stopped in your tests. Consider running Jest with `--detectOpenHandles` to troubleshoot this issue.

原因分析

所有的 cases 中某些 test 是异步加了 async 的,但是这些被测试的方法调用了另外的服务,其中一个主要的服务是 redis。是不是与 redis 服务的连接没有被断开在所有的测试完成以后,导致 jest 的进程 hang 住了?

尝试解决

Jest 应当有清除方法,在所有的测试完成以后执行。利用 Jest.afterAll()

  afterAll(() => {
    console.log('所有的测试
...
阅读全文

Linux 转发网卡流量到另一网卡的 iptables 设置

2023-06-10, 星期六|
linux网络设置

欲将网卡 tun0 的流量转发到网卡 eth0, 那么我们可以设置 iptables 的 nat 转发。

设置 iptables

设置 nat 转发

将来自 10.8.0.0/24 网段的流量转发到 eth0 中,插入 nat 表的 POSTROUTING chain 中,

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

设置 FORWARD

允许从 tun0 网卡到 eth0 的转发,允许到 tun0 的转发,插入到 filter 表的 FORWARD chain 中。

iptables -I FORWARD 1 -i tun0 -o eth0 -j ACCEPT
iptables -I FORWARD 1 -i eth0 -o tun0 -j ACCEPT

查看 iptables 设置

查看 FORWARD

iptables -vL FORWARD --line-numbers

查看 POSTROUTING

iptables -t nat -vnL POSTROUTING --line-n
...
阅读全文

iptables 禁用主机 80 端口不生效

2023-06-09, 星期五|
linux系统设置

问:在 ubuntu 中利用 iptables 将目标端口为 80 的流量丢弃掉,我设置了怎么没用?

我所设置的命令是

iptables -I INPUT -p tcp --dport 80 -j DROP

设置完了之后,我用 curl -i http 协议的网站还是能访问得通,问题出在哪儿?

答:你用 iptables -L 看一下,看到了那个 DOCKER chain 了吗?

注意这里不是 iptables -L INPUT, 也就是没有 INPUT chain 参数。

哦,原来是 DOCKER 的优先级的问题。🤦‍♂️

那就插入到 DOCKER chain 中吧,

sudo iptables -I DOCKER -p tcp --dport 80 -j DROP

然后再查看一下

sudo iptables -L DOCKER

最后如果需要删除掉该行配置的话,可以利用

sudo iptables -D DOCKER 1

或者利用命令删除前面设置在 INPUT 中的配置,

sudo iptables -D INPUT 1
...
阅读全文

Ubuntu 中如何应用 easy-rsa

2023-06-08, 星期四|
linux软件

easy-rsa 应用中的一个场景,生成 ca.crt, server.crt, server.key, dh.pem 等服务端证书配置和 client1.crt, client1.key 等客户端需要的证书配置,如何在 ubuntu 中来应用 easyrsa 来完成上述的事情?

安装

首先哪里有 easyrsa? 可以利用 ubuntu 22 repo 安装

$ sudo apt install -y easy-rsa

这样 /usr/share/easy-rsa/ 下面就有了 easyrsa 的安装。

现在我们把他拷贝到 /etc/easy-rsa/ 目录下面

$ sudo cp -r /usr/share/easy-rsa/ /etc/

这样我们就可以在 /etc/easy-rsa/ 下应用 easyrsa 来生成证书啦。

生成服务端证书

切换到 /etc/easy-rsa/

cd /etc/easy-rsa/

修改 vars.example

# cp vars.example vars
# vim vars

查看 ./easyrsa 的帮助

# ./easyrsa
...
阅读全文

VIM 如何关闭某个 buffer

2023-06-08, 星期四|
Vim

VIM 如何关闭某个 buffer?设想有这样的场景,你正在编辑一个配置文件,而这个配置文件引用了另一个配置文件作为指令的值,比如证书的路径。这个时候,你可以利用 VIM g-f 来跳转到这个路径下面对应的文件,如果这个路径地址是正确的话,那么你就能在 VIM 中打开了这个跳转的文件。好的,现在你已经在这个新的文件中了,而且你已经确认了文件没错。

然后,你想要返回之前的那个文件,你会怎么做呢?我想你会想到的是 :bn 或者 :bp, 用来切换下一个buffer 或者上一个 buffer, 然而切换回来以后,这时候你又有一个新的某路径下配置文件被你打开了,渐渐的被打开的配置文件越来越多,而你切换却越来越麻烦,这时候你可能就会想我能不能关掉它们了,因为我只是临时性的查看了它们一下,而正在编辑的那个主文件才是重点。

于是,你试了试 :close, 发现没有这个命令,或者报错说 Cannot close last window, 然后你又试了试 :quit 想想肯定也不对,这个时候你懵了,答案究竟是什么呢?

:bd, 或者 :bdelete

请注意,关闭缓冲区后,其中的文件内容将不再显示

...
阅读全文