fix(security): remove hardcoded Gitea token from xbctl binary
Token now read from credentials.env (GITEA_TOKEN key) at runtime, with fallback to GITEA_TOKEN environment variable.
This commit is contained in:
+16
-3
@@ -31,7 +31,6 @@ const (
|
|||||||
serviceFilePath = "/etc/systemd/system/xboard-node.service"
|
serviceFilePath = "/etc/systemd/system/xboard-node.service"
|
||||||
defaultInstallRoot = "/etc/xboard-node"
|
defaultInstallRoot = "/etc/xboard-node"
|
||||||
downloadBase = "https://gitea.fp-will.xyz/will/xboard-node"
|
downloadBase = "https://gitea.fp-will.xyz/will/xboard-node"
|
||||||
downloadToken = "cf6634b57d2c60c66030dbb29d77c4ed25370e94"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -598,14 +597,28 @@ func resolveDownloadURL(artifact, version string) string {
|
|||||||
return downloadBase + "/releases/download/" + version + "/" + artifact
|
return downloadBase + "/releases/download/" + version + "/" + artifact
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// readDownloadToken returns the Gitea API token for downloading release assets.
|
||||||
|
// Lookup order: GITEA_TOKEN in credentials.env, then GITEA_TOKEN env var.
|
||||||
|
func readDownloadToken() string {
|
||||||
|
if data, err := os.ReadFile(defaultCredentialsPath); err == nil {
|
||||||
|
for _, line := range strings.Split(string(data), "\n") {
|
||||||
|
line = strings.TrimSpace(line)
|
||||||
|
if k, v, ok := strings.Cut(line, "="); ok && k == "GITEA_TOKEN" {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return os.Getenv("GITEA_TOKEN")
|
||||||
|
}
|
||||||
|
|
||||||
func downloadFile(url, dest string) error {
|
func downloadFile(url, dest string) error {
|
||||||
client := &http.Client{Timeout: 120 * time.Second}
|
client := &http.Client{Timeout: 120 * time.Second}
|
||||||
req, err := http.NewRequest("GET", url, nil)
|
req, err := http.NewRequest("GET", url, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if downloadToken != "" {
|
if tok := readDownloadToken(); tok != "" {
|
||||||
req.Header.Set("Authorization", "token "+downloadToken)
|
req.Header.Set("Authorization", "token "+tok)
|
||||||
}
|
}
|
||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user