package main

import (
	"cmdb-backend/models"
	"cmdb-backend/pkg/config"
	"cmdb-backend/pkg/logging"
	"cmdb-backend/routers"
	"fmt"
	"github.com/gin-gonic/gin"
	"math/rand"
	"net/http"
	"time"
)

func init() {
	rand.Seed(time.Now().UnixNano())
	config.LoadConfig()
	models.Setup()
}

func main() {
	//域名相关厂商：阿里、Godaddy、Namecheap
	//go providers.AliyunGetDomainList()
	//go providers.GodaddyGetDomainList()
	//go providers.NamecheapGetDomainList()
	//DNS相关厂商：腾讯、Godaddy、Namecheap
	//go providers.Tencent()
	//go providers.Godaddy()
	//go providers.Namecheap()
	//CDN 相关厂商：阿里、AWS、七牛、Ucloud
	//go providers.AwsGetCDNList()
	//go providers.QiNiuGetCDNList()
	//go providers.AliyunGetCDNList()
	//go providers.UcloudGetCDNList()
	//S3 相关厂商：阿里、AWS、七牛、Ucloud
	//go providers.AwsGetBucketList()
	//可用区、Region 相关厂商：阿里、AWS、腾讯、Ucloud
	//go providers.KsyGetZoneList()
	//go providers.KsyGetRegionList()
	//云服务器相关厂商：金山云、Ucloud
	//go providers.UcloudGetVmsList()
	//go providers.UcloudGetBmsList()
	//go providers.KsyGetVmsList()
	//go providers.KsyGetBmsList()
	//LB 相关厂商：金山云、Ucloud
	//go providers.UcloudGetLBList()
	//go providers.KsyGetLBList()

	// Authing 相关接口
	//go utils.GetAuthingUserList()
	// go utils.GetAuthingCmdbAdmin()

	// go scr ipts.RunAnalysis()
	// go scripts.RunSync()

	gin.SetMode(config.GC.Server.RunMode)

	routersInit := routers.InitRouter()
	readTimeout := config.GC.Server.ReadTimeout * time.Second
	writeTimeout := config.GC.Server.WriteTimeout * time.Second
	endPoint := fmt.Sprintf(":%d", config.GC.Server.HttpPort)
	maxHeaderBytes := 1 << 20

	server := &http.Server{
		Addr:           endPoint,
		Handler:        routersInit,
		ReadTimeout:    readTimeout,
		WriteTimeout:   writeTimeout,
		MaxHeaderBytes: maxHeaderBytes,
	}

	logging.Info(fmt.Sprintf("start http server listening %s", endPoint))

	err := server.ListenAndServe()
	if err != nil {
		panic(err)
	}
}
