acme账户相关接口

pull/236/head
v-me-50 2025-06-16 14:54:34 +08:00
parent 884c8407b5
commit 9155f47ec9
3 changed files with 144 additions and 4 deletions

View File

@ -0,0 +1,127 @@
package api
import (
"ALLinSSL/backend/internal/cert/apply"
"ALLinSSL/backend/public"
"github.com/gin-gonic/gin"
"strings"
)
func AddAccount(c *gin.Context) {
var form struct {
Email string `form:"email"`
CA string `form:"ca"`
Kid string `form:"Kid"`
HmacEncoded string `form:"HmacEncoded"`
CADirURL string `form:"CADirURL"`
}
err := c.Bind(&form)
if err != nil {
public.FailMsg(c, err.Error())
return
}
form.Email = strings.TrimSpace(form.Email)
if form.Email == "" {
public.FailMsg(c, "邮件不能为空")
return
}
if form.CA == "" {
public.FailMsg(c, "CA不能为空")
return
}
err = apply.AddAccount(form.Email, form.CA, form.Kid, form.HmacEncoded, form.CADirURL)
if err != nil {
public.FailMsg(c, err.Error())
return
}
public.SuccessMsg(c, "添加成功")
return
}
func DelAccount(c *gin.Context) {
var form struct {
ID string `form:"id"`
}
err := c.Bind(&form)
if err != nil {
public.FailMsg(c, err.Error())
return
}
form.ID = strings.TrimSpace(form.ID)
if form.ID == "" {
public.FailMsg(c, "ID不能为空")
return
}
err = apply.DelAccount(form.ID)
if err != nil {
public.FailMsg(c, err.Error())
return
}
public.SuccessMsg(c, "删除成功")
return
}
func UpdateAccount(c *gin.Context) {
var form struct {
ID string `form:"id"`
Email string `form:"email"`
CA string `form:"ca"`
Kid string `form:"Kid"`
HmacEncoded string `form:"HmacEncoded"`
CADirURL string `form:"CADirURL"`
}
err := c.Bind(&form)
if err != nil {
public.FailMsg(c, err.Error())
return
}
form.ID = strings.TrimSpace(form.ID)
if form.ID == "" {
public.FailMsg(c, "ID不能为空")
return
}
form.Email = strings.TrimSpace(form.Email)
if form.Email == "" {
public.FailMsg(c, "邮件不能为空")
return
}
if form.CA == "" {
public.FailMsg(c, "CA不能为空")
return
}
err = apply.UpdateAccount(form.ID, form.Email, form.CA, form.Kid, form.HmacEncoded, form.CADirURL)
if err != nil {
public.FailMsg(c, err.Error())
return
}
public.SuccessMsg(c, "更新成功")
return
}
func GetAccountList(c *gin.Context) {
var form struct {
Page int64 `form:"p"`
Limit int64 `form:"limit"`
CA string `form:"ca"`
Search string `form:"search"`
}
err := c.Bind(&form)
if err != nil {
public.FailMsg(c, err.Error())
return
}
if form.Page <= 0 {
form.Page = 1
}
if form.Limit <= 0 {
form.Limit = 10
}
accounts, total, err := apply.GetAccountList(form.Search, form.CA, form.Page, form.Limit)
if err != nil {
public.FailMsg(c, err.Error())
return
}
public.SuccessData(c, accounts, total)
}

View File

@ -164,7 +164,7 @@ func UpdateAccount(id, email, ca, Kid, HmacEncoded, CADirURL string) error {
return nil
}
func DeleteAccount(id string) error {
func DelAccount(id string) error {
db, err := GetSqlite()
if err != nil {
return fmt.Errorf("failed to get sqlite: %w", err)
@ -176,10 +176,10 @@ func DeleteAccount(id string) error {
return nil
}
func GetAccountList(search, ca string, p, limit int64) ([]map[string]interface{}, error) {
func GetAccountList(search, ca string, p, limit int64) ([]map[string]interface{}, int, error) {
db, err := GetSqlite()
if err != nil {
return nil, fmt.Errorf("failed to get sqlite: %w", err)
return nil, 0, fmt.Errorf("failed to get sqlite: %w", err)
}
whereSql := "1=1"
var whereArgs []any
@ -203,5 +203,10 @@ func GetAccountList(search, ca string, p, limit int64) ([]map[string]interface{}
whereArgs = append(whereArgs, ca)
}
}
return db.Where(whereSql, whereArgs).Limit(limits).Select()
count, err := db.Where(whereSql, whereArgs).Count()
data, err := db.Where(whereSql, whereArgs).Limit(limits).Select()
if err != nil {
return nil, 0, fmt.Errorf("failed to get account list: %w", err)
}
return data, int(count), nil
}

View File

@ -52,6 +52,14 @@ func Register(r *gin.Engine) {
access.POST("/upd_eab", api.UpdEAB)
access.POST("/get_all_eab", api.GetAllEAB)
}
// acme账户
acmeAccount := v1.Group("/acme_account")
{
acmeAccount.POST("/get_list", api.GetAccountList)
acmeAccount.POST("/add_account", api.AddAccount)
acmeAccount.POST("/del_account", api.DelAccount)
acmeAccount.POST("/upd_account", api.UpdateAccount)
}
cert := v1.Group("/cert")
{
cert.POST("/get_list", api.GetCertList)