zhangzengfei
2023-09-04 e8e536d1cb52d2126c8c7ce2ba1c7a76f7208678
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package api
 
import (
    "basic.com/valib/bhomeclient.git"
    "basic.com/valib/logger.git"
    "github.com/gin-gonic/gin"
    uuid "github.com/satori/go.uuid"
    "net/http"
    "sync"
    "vamicro/version-control/controller"
    "vamicro/version-control/models"
    "vamicro/version-control/routers"
    "vamicro/version-control/service"
)
 
var (
    routines []routers.IRouter = []routers.IRouter{}
 
)
 
func init() {
    routines = append(routines,
        controller.CheckVersion,
        controller.UploadDist,
        controller.Upgrade,
        controller.SettingFetch,
        controller.SettingPush,
        controller.UpdateNotice,
        controller.DelayNotice,
        controller.PreUpLoad,
        controller.UpgradePreUpLoad,
        controller.RollBack,
        controller.Authorization,
        controller.GetSn,
        controller.Qrcode,
        controller.AuthorizationUpload,
        controller.CancelAuthorization,
        controller.CancelAuthorizationUpload,
 
        controller.ShopMakeSmsCod,
        controller.ShopCenterLogin,
        controller.ShopCenterGetOrderList,
        controller.AuthActiveByOrder,
        
        controller.AutoBakShow,
        controller.AutoBakConfSet,
        controller.AutoBakRightNow,
        controller.BackupListShow,
        controller.BackupRecov,
    )
}
 
func InitRouter(wg *sync.WaitGroup, ms *bhomeclient.MicroNode) *http.Server {
    models.Init()
    service.Init()
    r := gin.Default()
    controller.Ms = ms
    var midw gin.HandlerFunc = func(ctx *gin.Context) {
        uid, err := ctx.Cookie("uuid")
        if err != nil {
            uid := uuid.NewV4().String()
            ctx.SetCookie("uuid", uid, 3600, "/", "", false, true)
        }
        ctx.Set("uid", uid)
    }
    r.Use(midw)
    for _, v := range routines {
        methods := v.GetMethods()
        if len(methods) > 0 && len(methods) > 0 {
            for _, m := range methods {
                r.Handle(m, v.GetPath(), v.GetHandles()...)
            }
        }
    }
 
    server := &http.Server{
        Addr:              ":8080",
        Handler:           r,
    }
 
    wg.Add(1)
    go func() {
        if err := server.ListenAndServe(); nil != err {
            if err != http.ErrServerClosed {
                logger.Fatal("InitRouter failed with error:", err)
            } else {
                logger.Info("InitRouter exited by user")
            }
        }
 
        wg.Done()
    }()
 
    return server
}