SamWaf开源项目使用教程

1. 项目目录结构及介绍

SamWaf 是一个轻量级、开源的网站应用防火墙,适用于小型企业、工作室和个人网站。以下是项目的目录结构及其说明:

SamWaf/
├── .gitea/              # Gitea 配置文件
├── .github/             # GitHub 配置文件
├── .idea/               # IntelliJ IDEA 配置文件
├── alert/               # 警报模块
├── api/                 # API 接口模块
├── bat/                 # Windows 批处理文件
├── binarydist/          # 编译后的二进制文件
├── cache/               # 缓存模块
├── codetemplete/        # 代码模板
├── common/              # 公共模块
├── conf/                # 配置文件
├── customtype/          # 自定义类型模块
├── docs/                # 文档
├── enums/               # 枚举类型模块
├── exedata/             # 执行数据模块
├── firewall/            # 防火墙核心模块
├── global/              # 全局变量模块
├── globalobj/           # 全局对象模块
├── innerbean/           # 内部Bean模块
├── libinjection-go/     # 注入防御模块
├── middleware/          # 中间件模块
├── model/               # 数据模型模块
├── public/              # 公共资源模块
├── router/              # 路由模块
├── service/             # 服务模块
├── setup/               # 安装脚本
├── test/                # 测试模块
├── upx/                 # UPX 压缩工具
├── utils/               # 工具类模块
├── vue/                 # 前端Vue模块
├── wafbot/              # 机器人模块
├── wafconfig/           # 配置模块
├── wafdb/               # 数据库模块
├── wafdefenserce/       # 防御模块
├── wafenginecore/       # 引擎核心模块
├── wafinit/             # 初始化模块
├── wafinterface/        # 接口模块
├── wafmangeweb/         # 管理界面模块
├── wafnotify/           # 通知模块
├── wafonekey/           # API密钥模块
├── wafowasp/            # OWASP模块
├── wafproxy/            # 代理模块
├── wafqueue/            # 队列模块
├── wafreg/              # 注册模块
├── wafsafeclear/        # 清理模块
├── wafsec/              # 安全模块
├── wafsnowflake/        # 雪花算法模块
├── waftask/             # 任务模块
├── wafupdate/           # 更新模块
├── webplugin/           # 插件模块
├── xdaemon/             # 守护进程模块
├── .dockerignore        # Docker 忽略文件
├── .gitignore           # Git 忽略文件
├── .goreleaser.yaml     # GoReleaser 配置文件
├── CODE_OF_CONDUCT.md   # 行为准则
├── CONTRIBUTING.md      # 贡献指南
├── Dockerfile           # Docker 构建文件
├── LICENSE              # 授权协议
├── README.md            # 项目介绍
├── README_ch.md         # 项目介绍(中文)
├── SECURITY.md          # 安全指南
├── ThirdLicense         # 第三方软件许可
├── UbuntuDockerfile     # Ubuntu Docker 构建文件
├── build-releases-win-upx.bat # Windows 构建批处理文件
├── build-releases-win7-upx.bat # Windows 7 构建批处理文件
├── build_docker_release_linux.bat # Linux Docker 构建批处理文件
├── docker-compose.yml   # Docker Compose 文件
├── go.mod               # Go 依赖文件
├── go.sum               # Go 依赖校验文件
├── main.go              # 主程序文件
└── plan.md              # 项目计划

2. 项目的启动文件介绍

项目的启动文件是 main.go,它是项目的入口点。以下是 main.go 文件的主要内容:

package main

import (
    "flag"
    "os"
    "os/signal"
    "syscall"

    "github.com/samwafgo/SamWaf/wafinit"
)

func main() {
    // 解析命令行参数
    flag.Parse()

    // 初始化并启动防火墙
    wafinit.Init()

    // 设置退出信号处理
    sigs := make(chan os.Signal, 1)
    signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
    <-sigs

    // 停止防火墙
    wafinit.Stop()
}

3. 项目的配置文件介绍

项目的配置文件位于 conf 目录下,主要包括以下几个文件:

  • config.json:主配置文件,包含基本设置,如监听地址、端口、日志级别等。
  • rule.json:规则配置文件,定义了防火墙的各种防护规则。
  • whiteip.json:白名单配置文件,用于设置允许访问的IP地址。
  • blackip.json:黑名单配置文件,用于设置禁止访问的IP地址。
  • whitelist.json:白名单配置文件,用于设置允许访问的URL。
  • blacklist.json:黑名单配置文件,用于设置禁止访问的URL。

这些配置文件可以通过项目的管理界面进行编辑,也可以直接修改文件内容来进行配置。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐