Commit Graph

11 Commits

Author SHA1 Message Date
cnbugs adebf82aaa chore: remove pre-compiled binary from repo 2026-07-23 16:37:39 +08:00
cnbugs 3cb2178c44 chore: add pre-compiled linux amd64 binary for no-go environments 2026-07-23 16:36:16 +08:00
cnbugs b1fd3a8b9b fix: include frontend dist assets in repo, fix deploy.sh syntax
- Remove .gitignore exclusion for dist/assets/ and frontend/dist/
- Fix deploy.sh: add missing quote on echo line
- Fix deploy.sh: correct ADMIN_PASSWORD=*** syntax
- Make deploy.sh auto-detect go/npm availability
2026-07-23 16:35:57 +08:00
cnbugs bbf09fbc8d feat: add Web UI for notification config (feishu + email)
- New config/notify_store.go: persistent notification config (notify.json)
- New API: GET/PUT /api/notify/config, POST /api/notify/test-feishu, POST /api/notify/test-email
- New Vue page: NotifyConfig.vue with feishu webhook and SMTP settings
- Updated cron/init to read from persistent store instead of env vars
- Password masked as ******** in API responses, preserved on updates
2026-07-23 16:31:04 +08:00
cnbugs 2d70a15307 feat: add login authentication and certificate expiry notifications
- JWT-based login with ADMIN_USER/ADMIN_PASSWORD env config
- Login page with auth guard for Vue frontend
- Feishu bot webhook notification for expiring certificates
- SMTP email notification for expiring certificates
- Daily 8:00 AM cron for expiry checks
- Startup health check notification
2026-07-23 16:25:02 +08:00
cnbugs c453d3425d 修复MIME类型错误:静态资源404直接返回 + 支持自定义base路径 2026-05-13 11:08:18 +08:00
cnbugs a9842e9212 v0.01: 修复死锁Bug + DNS-01默认 + 超时调整 2026-05-13 10:58:29 +08:00
cnbugs 3fa77d9bc0 refactor: replace SQLite/GORM with JSON file storage
- Remove GORM and SQLite, use simple JSON file (data/certs.json) for persistence
- CertStore with sync.RWMutex for thread-safe in-memory cache
- All handlers updated to use config.Store instead of config.DB
- Cron job and stats updated accordingly
- go mod tidy removes unused gorm/sqlite dependencies
2026-05-12 15:27:10 +08:00
cnbugs d0e738e1ef fix: use SQLite upsert to eliminate race condition on domain uniqueness constraint
Previously the CreateCertificate handler checked domain existence and then
inserted separately, creating a race window where concurrent requests could
both pass the check and trigger 'UNIQUE constraint failed' on INSERT.

Now uses SQLite's native INSERT ... ON CONFLICT (upsert) which atomically
handles the uniqueness constraint at the database level, eliminating the
race condition entirely.
2026-05-12 15:22:30 +08:00
cnbugs 0703dffb90 fix: 处理域名重复申请问题,支持重试失败/过期的证书 2026-05-12 15:01:07 +08:00
cnbugs 1775d4b4fc feat: AutoSSL certificate management tool with Web UI 2026-05-12 14:55:10 +08:00