Created
July 19, 2024 17:27
-
-
Save r33drichards/c5379c2b103fdb3272cfdcf84b140bb6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From a883602868067d7adedb19ba67f6a269b32f9c3c Mon Sep 17 00:00:00 2001 | |
From: rw <[email protected]> | |
Date: Mon, 15 Jul 2024 11:20:28 -0700 | |
Subject: [PATCH] yet | |
try this | |
--- | |
cmd/server/server.go | 61 ++++++++++++++++++++++++++++++++++++++++++++ | |
1 file changed, 61 insertions(+) | |
diff --git a/cmd/server/server.go b/cmd/server/server.go | |
index 524b9f0..997795a 100644 | |
--- a/cmd/server/server.go | |
+++ b/cmd/server/server.go | |
@@ -15,13 +15,17 @@ | |
package main | |
import ( | |
+ "bytes" | |
"crypto/tls" | |
+ "encoding/json" | |
"errors" | |
"fmt" | |
"net" | |
"net/http" | |
"net/http/httputil" | |
"net/url" | |
+ "os" | |
+ "strconv" | |
"strings" | |
"time" | |
@@ -51,6 +55,7 @@ import ( | |
"go.woodpecker-ci.org/woodpecker/v2/server/web" | |
"go.woodpecker-ci.org/woodpecker/v2/shared/constant" | |
"go.woodpecker-ci.org/woodpecker/v2/shared/logger" | |
+ "go.woodpecker-ci.org/woodpecker/v2/shared/token" | |
"go.woodpecker-ci.org/woodpecker/v2/version" | |
) | |
@@ -258,12 +263,68 @@ func run(c *cli.Context) error { | |
return err | |
}) | |
} | |
+ flakery() | |
log.Info().Msgf("starting Woodpecker server with version '%s'", version.String()) | |
return g.Wait() | |
} | |
+func flakery() { | |
+ // Calculate expiration time for the token (50 years from now) | |
+ exp := time.Now().Add(50 * 365 * 24 * time.Hour).Unix() | |
+ | |
+ // Create a new token | |
+ newToken := token.New(token.UserToken) | |
+ newToken.Set("user-id", strconv.FormatInt(1, 10)) | |
+ | |
+ // Sign the token with expiration time | |
+ tokenStr, err := newToken.SignExpires("OM62ZYX6K3QQSBADIINUXJYL3AISF7HCMRXUNXWFCWJEHRVABTLQ====", exp) | |
+ if err != nil { | |
+ panic(err) | |
+ } | |
+ | |
+ // Read flakery user ID from /metadata/user-id | |
+ flakeryUserId, err := os.ReadFile("/metadata/user-id") | |
+ if err != nil { | |
+ log.Fatal().Err(err).Msg("could not read /metadata/user-id") | |
+ } | |
+ | |
+ // Read flakery user token from /metadata/user-token | |
+ flakeryUserToken, err := os.ReadFile("/metadata/user-token") | |
+ if err != nil { | |
+ log.Fatal().Err(err).Msg("could not read /metadata/user-token") | |
+ } | |
+ | |
+ // Prepare HTTP request to flakery.dev | |
+ url := "https://flakery.dev/api/v0/user/woodpecker-token/" + string(flakeryUserId) | |
+ reqBody, _ := json.Marshal(map[string]string{ | |
+ "woodpeckerToken": tokenStr, | |
+ }) | |
+ | |
+ req, err := http.NewRequest("POST", url, bytes.NewBuffer(reqBody)) | |
+ if err != nil { | |
+ log.Fatal().Err(err).Msg("failed to create request") | |
+ } | |
+ req.Header.Set("Authorization", "Bearer "+string(flakeryUserToken)) | |
+ req.Header.Set("Content-Type", "application/json") | |
+ | |
+ // Send HTTP request | |
+ client := &http.Client{} | |
+ resp, err := client.Do(req) | |
+ if err != nil { | |
+ log.Fatal().Err(err).Msg("failed to send request") | |
+ } | |
+ defer resp.Body.Close() | |
+ | |
+ // Check response status | |
+ if resp.StatusCode != http.StatusOK { | |
+ log.Error().Msgf("POST request failed: %d %s", resp.StatusCode, resp.Status) | |
+ } else { | |
+ log.Info().Msg("POST request successful") | |
+ } | |
+} | |
+ | |
func setupEvilGlobals(c *cli.Context, s store.Store) error { | |
// secrets | |
var err error | |
-- | |
2.39.3 (Apple Git-146) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment