From f2c832330d264518f23f75b014650b45453a5e15 Mon Sep 17 00:00:00 2001 From: Taskeren Date: Sun, 18 Jun 2023 00:29:44 +0800 Subject: [PATCH] added sensitive words filtering --- .gitmodules | 3 +++ package.json | 3 ++- pnpm-lock.yaml | 7 +++++++ server.ts | 19 +++++++++++++++++++ tencent-sensitive-words | 1 + 5 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 .gitmodules create mode 160000 tencent-sensitive-words diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7693603 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "tencent-sensitive-words"] + path = tencent-sensitive-words + url = git@github.com:cjh0613/tencent-sensitive-words.git diff --git a/package.json b/package.json index fbd74f2..4151a7a 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "axios": "^1.4.0", "body-parser": "^1.20.2", "cookie-parser": "^1.4.6", - "express": "^4.18.2" + "express": "^4.18.2", + "js-sensitivewords": "^0.7.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b64a1fd..293fbe7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ dependencies: express: specifier: ^4.18.2 version: 4.18.2 + js-sensitivewords: + specifier: ^0.7.0 + version: 0.7.0 devDependencies: '@types/cookie-parser': @@ -474,6 +477,10 @@ packages: engines: {node: '>= 0.10'} dev: false + /js-sensitivewords@0.7.0: + resolution: {integrity: sha512-A/UKSftoB0EoDIx2e50w2vABLM2E4JHfvA39YMO8hTMz6hzOZT6NplIJ54d1ftgwt0QAJ9BDXwhOYLIdyMDH2w==} + dev: false + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true diff --git a/server.ts b/server.ts index 5535c45..8baaf64 100644 --- a/server.ts +++ b/server.ts @@ -2,6 +2,11 @@ import express, { Request, Response } from "express" import { json as bodyParserJson, urlencoded as bodyParserUrlEncoded } from "body-parser" import cookieParser from "cookie-parser" import { Axios } from "axios" +import * as fs from "fs" + +const sw = require("js-sensitivewords") + +initSensitiveWordList() const app = express() @@ -28,6 +33,10 @@ app.post("/register", async (req: Request, res: Response) => { return res.status(400).send("注册失败:无效的用户名或密码!") } + if(sw.containsDfa(username)) { + return res.status(500).send("服务器正在探索:过往灾祸,欧洲无人区") + } + if(username.length < 4) { return res.status(400).send("账号太短啦~") } @@ -56,6 +65,8 @@ app.post("/register", async (req: Request, res: Response) => { const server = app.listen(8090, () => console.log("Server is running...")) +////////// Interact with Explode Server + const _axios = new Axios({}) type HasId = { @@ -92,4 +103,12 @@ async function explode_does_user_exists(username: string) { }>(`query { userByUsername(username: "${username}") { _id } }`) return !!response.data.data.userByUsername +} + +////////// The Sensitive Words Blocking + +async function initSensitiveWordList() { + console.log("Loading sensitive words") + let words = fs.readFileSync(__dirname + "/tencent-sensitive-words/sensitive_words_lines.txt", {encoding: "utf-8"}).split("\n") + sw.addWords(words) } \ No newline at end of file diff --git a/tencent-sensitive-words b/tencent-sensitive-words new file mode 160000 index 0000000..a39ff34 --- /dev/null +++ b/tencent-sensitive-words @@ -0,0 +1 @@ +Subproject commit a39ff3487ca8c7ca507cd9d53077797ee2cc89a4