mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-04 07:45:30 +00:00
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package cmd
|
|
|
|
import (
|
|
_ "embed"
|
|
"fmt"
|
|
"github.com/GopeedLab/gopeed/pkg/base"
|
|
"github.com/GopeedLab/gopeed/pkg/rest"
|
|
"github.com/GopeedLab/gopeed/pkg/rest/model"
|
|
"net/http"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
//go:embed banner.txt
|
|
var banner string
|
|
|
|
func Start(cfg *model.StartConfig) {
|
|
fmt.Println(banner)
|
|
srv, listener, err := rest.BuildServer(cfg)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
downloadCfg, err := rest.Downloader.GetConfig()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
if downloadCfg.FirstLoad {
|
|
// Set default download dir, in docker, it will be ${exe}/Downloads, else it will be ${user}/Downloads
|
|
var downloadDir string
|
|
if base.InDocker == "true" {
|
|
downloadDir = filepath.Join(filepath.Dir(cfg.StorageDir), "Downloads")
|
|
} else {
|
|
userDir, err := os.UserHomeDir()
|
|
if err == nil {
|
|
downloadDir = filepath.Join(userDir, "Downloads")
|
|
}
|
|
}
|
|
if downloadDir != "" {
|
|
downloadCfg.DownloadDir = downloadDir
|
|
rest.Downloader.PutConfig(downloadCfg)
|
|
}
|
|
}
|
|
fmt.Printf("Server start success on http://%s\n", listener.Addr().String())
|
|
if err := srv.Serve(listener); err != nil && err != http.ErrServerClosed {
|
|
panic(err)
|
|
}
|
|
}
|