| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 | package settingimport (	"errors"	"github.com/go-ini/ini"	"github.com/jacobsa/go-serial/serial"	"github.com/kptyun/KPTCOMM/pkg/util"	"log"	"os"	"os/exec"	"path/filepath"	"runtime"	"strings"	"time")type App struct {	JwtSecret string	PageSize  int	PrefixUrl string	RuntimeRootPath string	FileSavePath  string	FileMaxSize   int  // 普通文件上传的限制大小,单位byte, 最大单位1GB	FileAllowType [] string  // 允许上传的文件后缀名	ImageSavePath  string	ImageMaxSize   int	ImageAllowExts []string	ThumbnailSavePath  string	ThumbnailMaxWidth  int	ThumbnailMaxHeight int	ExportSavePath string	QrCodeSavePath string	FontSavePath   string	LogSavePath string	LogSaveName string	LogFileExt  string	TimeFormat  string}var AppSetting = &App{}type Server struct {	RunMode      string	HttpPort     int	ReadTimeout  time.Duration	WriteTimeout time.Duration	NoAuth  int	Mdns_servicename string	Mdns_serviceport int	HttpsPort int	Https  int	CrtPath string	KeyPath string	ServerName string	DisplayName string	Description string	GRFD string	GRFDURL string}var ServerSetting = &Server{}var CommSetting = &serial.OpenOptions{}var SnowIds *util.IdWorkertype Database struct {	Type        string	User        string	Password    string	Host        string	Name        string	ShowXormlog  bool	ShowGetSqllog bool	CacheApiSql bool	TablePrefix string}var DatabaseSetting = &Database{}var cfg *ini.Filevar CurrentPath stringfunc GetCurrentPath() (string, error) {	file, err := exec.LookPath(os.Args[0])	if err != nil {		return "", err	}	path, err := filepath.Abs(file)	if err != nil {		return "", err	}	//fmt.Println("path111:", path)	if runtime.GOOS == "windows" {		path = strings.Replace(path, "\\", "/", -1)	}	//fmt.Println("path222:", path)	i := strings.LastIndex(path, "/")	if i < 0 {		return "", errors.New(`Can't find "/" or "\".`)	}	//fmt.Println("path333:", path)	return string(path[0 : i+1]), nil}func Setup(dir string) {	var err error	if strings.Trim(dir," ")=="" {		CurrentPath, err = GetCurrentPath()	}else {		CurrentPath=dir	}	cfg, err = ini.Load(CurrentPath+"conf/app.ini")	if err != nil {		log.Fatalf("setting.Setup, fail to parse 'conf/app.ini': %v", err)	}	SnowIds,err =util.NewIdWorker(1)	if err != nil {		log.Fatalf("setting.Setup, fail to create SnowIds: %v", err)	}	DatabaseSetting.ShowXormlog = false	DatabaseSetting.ShowGetSqllog = false	DatabaseSetting.CacheApiSql = false	mapTo("app", AppSetting)	mapTo("server", ServerSetting)	mapTo("database", DatabaseSetting)	mapTo("comm", CommSetting)	AppSetting.ImageMaxSize = AppSetting.ImageMaxSize * 1024 * 1024	ServerSetting.ReadTimeout = ServerSetting.ReadTimeout * time.Second	ServerSetting.WriteTimeout = ServerSetting.ReadTimeout * time.Second	ServerSetting.CrtPath = CurrentPath + ServerSetting.CrtPath	ServerSetting.KeyPath = CurrentPath + ServerSetting.KeyPath}func mapTo(section string, v interface{}) {	err := cfg.Section(section).MapTo(v)	if err != nil {		log.Fatalf("Cfg.MapTo RedisSetting err: %v", err)	}}
 |