给Memos说说开启CNSF功能

假如你有些色色的说说不适合在国内说,但是又想发表,那么你可以和我一样写一个中间件,对Memos的api进行反代,修改其中的内容,来达到过滤掉国内不适合访问的内容。

  • 创建app.js文件,内容如下:
    const express = require('express');
    const axios = require('axios');
    const app = express();
    const cors = require('cors');
    app.use(cors());
    
    app.get('/data', async (req, res) => {
        try {
            const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
            const geoResponse = await axios.get(`http://ip-api.com/json/${ip}`);
            console.log(geoResponse.data);
            const isChina = geoResponse.data.country === 'China';
    
            const response = await axios.get('https://memos地址/api/v1/memo', {
                params: {
                    creatorId: 1,
                    tag: '说说',
                    limit: 30
                }
            });
    
            let data;
            if (isChina) {
                data = response.data.filter(item => !item.content.toLowerCase().includes('{cnsf}'));
            } else {
                data = response.data;
            }
            res.json(data);
    
        } catch (error) {
            console.error(error);
            res.status(500).send('An error occurred');
        }
    });
    
    app.listen(3000, () => {
        console.log('Server is running on port 3000');
    });
    你可以修改端口为你自己合适的端口
  • 创建package.json文件,内容如下:
    {
      "name": "memosapi",
      "version": "1.0.0",
      "description": "",
      "main": "app.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "dependencies": {
        "axios": "^1.6.7",
        "cors": "^2.8.5",
        "express": "^4.18.2"
      }
    }
    在终端输入npm install来安装依赖
    安装完成之后就可以通过node app.js来启动啦,你可以通过forever,pm2,nohub来后台启动
    具体教程如下nodejs服务后台持续运行三种方法
    或者通过1panel运行
    网站-运行环境-Node.js-创建运行环境,选择源码目录,选择node版本,在应用端口外部映射端口中输入3000
    端口外部访问可以开启可以关闭,假如你要给其绑定域名,你可以不开启外部访问
  • 设置反代
    网站-创建网站-反向代理中输入你的域名,在代理地址中输入127.0.0.1:3000,点击确认即可
  • 使用CNSF
    在Memos中输入的以下内容将不会在中国访问时出现
    #说说 {CNSF} 这是测试是否是在中国不显示