feat: 初始化 meshgo MQTT 服务

- 支持 TCP / WebSocket 监听,配置热重载,systemd 集成
- meshAuthHook 实现用户名/密码认证与 ACL
- meshLogHook 打印所有 MQTT 事件(CONNECT/PUBLISH/SUBSCRIBE 等)
- meshDBHook 将 msh/# 主题 payload 异步写入数据库
- 数据库支持 SQLite(默认)和 MySQL,自动初始化并补充缺失配置
- payload_log 表字段:ID、client、topic、qos、payload、created_at、sender_ip
- 自动补充 config.yaml 缺失字段(文件存在时写回)
- .gitignore 屏蔽 data/ 和 .workbuddy/
This commit is contained in:
2026-05-15 18:09:39 +08:00
commit bf41e82a43
11 changed files with 958 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
BINARY := meshgo
GOOS := linux
GOARCH := amd64
OUT := ./build/$(BINARY)
.PHONY: all build build-linux build-win install clean
all: build
## 本机编译(Windows CGO
build:
@mkdir -p build
CGO_ENABLED=1 go build -trimpath -ldflags="-s -w" -o $(OUT) .
@echo ">>> 已生成: $(OUT)"
## Linux 交叉编译(需要目标机器有 gcc,可选)
## 若遇 sqlite3 链接错误,请在 Linux 服务器上直接编译:
## make build-linux-native
build-linux:
@mkdir -p build
CGO_ENABLED=1 GOOS=$(GOOS) GOARCH=$(GOARCH) CC=x86_64-linux-gnu-gcc \
go build -trimpath -ldflags="-s -w" -o $(OUT) .
@echo ">>> 已生成 Linux $(GOARCH) 二进制: $(OUT)"
## Linux 服务器上原生编译(推荐生产环境使用)
build-linux-native:
@mkdir -p build
CGO_ENABLED=1 go build -trimpath -ldflags="-s -w" -o $(OUT) .
@echo ">>> 已生成: $(OUT)"
## 部署到目标机器(需要 SSH_HOST 环境变量,如 make install SSH_HOST=root@192.168.1.10
install: build
@test -n "$(SSH_HOST)" || (echo "请设置 SSH_HOST,例如: make install SSH_HOST=root@192.168.1.10" && exit 1)
scp $(OUT) $(SSH_HOST):/usr/local/bin/$(BINARY)
scp meshgo.service $(SSH_HOST):/etc/systemd/system/$(BINARY).service
ssh $(SSH_HOST) "systemctl daemon-reload && systemctl enable $(BINARY) && systemctl restart $(BINARY)"
@echo ">>> 部署完成"
clean:
rm -rf build/