aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2024-02-12 05:20:35 -0800
committerXe Iaso <me@xeiaso.net>2024-02-12 05:20:35 -0800
commitd0fefc7ae6c5eccfb5f3813c1e6422a3043e3455 (patch)
tree1fa3609e7d4eb1886b503398224712a07de26b62 /cmd
parente2ab29bc48db4295b78e0e9c97f5ddb527930ca8 (diff)
downloadxesite-d0fefc7ae6c5eccfb5f3813c1e6422a3043e3455.tar.xz
xesite-d0fefc7ae6c5eccfb5f3813c1e6422a3043e3455.zip
rip out tsnet for good
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/fabricate-generation/main.go145
-rw-r--r--cmd/patreon-saasproxy/main.go8
-rw-r--r--cmd/xesite/internalapi.go8
-rw-r--r--cmd/xesite/main.go29
4 files changed, 48 insertions, 142 deletions
diff --git a/cmd/fabricate-generation/main.go b/cmd/fabricate-generation/main.go
index 6f63033..ef83546 100644
--- a/cmd/fabricate-generation/main.go
+++ b/cmd/fabricate-generation/main.go
@@ -3,25 +3,16 @@ package main
import (
"context"
"flag"
- "log"
"log/slog"
"net/http"
"os"
- "sync"
"github.com/facebookgo/flagenv"
_ "github.com/joho/godotenv/autoload"
"golang.org/x/oauth2"
- "golang.org/x/oauth2/clientcredentials"
"gopkg.in/mxpv/patreon-go.v1"
- "tailscale.com/client/tailscale"
- "tailscale.com/hostinfo"
- "tailscale.com/ipn/store/mem"
- "tailscale.com/tsnet"
- "tailscale.com/util/cmpx"
"within.website/x/web"
"xeiaso.net/v4/internal"
- "xeiaso.net/v4/internal/lume"
"xeiaso.net/v4/internal/saasproxytoken"
)
@@ -36,109 +27,51 @@ var (
)
func main() {
- // Required to use the Tailscale client API. This is sussy, but okay.
- tailscale.I_Acknowledge_This_API_Is_Unstable = true
-
flagenv.Parse()
flag.Parse()
internal.Slog()
slog.Info("starting up", "github-sha", *githubSHA)
- baseURL := cmpx.Or(os.Getenv("TS_BASE_URL"), "https://api.tailscale.com")
-
- credentials := clientcredentials.Config{
- ClientID: *tailscaleClientID,
- ClientSecret: *tailscaleClientSecret,
- TokenURL: baseURL + "/api/v2/oauth/token",
- Scopes: []string{"device"},
- }
-
- ctx := context.Background()
- tsClient := tailscale.NewClient("-", nil)
- tsClient.HTTPClient = credentials.Client(ctx)
- tsClient.BaseURL = baseURL
-
- caps := tailscale.KeyCapabilities{
- Devices: tailscale.KeyDeviceCapabilities{
- Create: tailscale.KeyDeviceCreateCapabilities{
- Reusable: false,
- Ephemeral: true,
- Preauthorized: true,
- Tags: []string{"tag:service", "tag:ci"},
- },
- },
- }
-
- authkey, _, err := tsClient.CreateKey(ctx, caps)
- if err != nil {
- log.Fatal(err.Error())
- }
-
- os.Args[0] = "via XeDN"
-
- hostinfo.SetApp("xeiaso.net/v4/cmd/fabricate-generation")
-
- memStore, err := mem.New(log.Printf, "")
- if err != nil {
- log.Fatal(err)
- }
-
- srv := &tsnet.Server{
- Hostname: "github-action-" + (*githubSHA)[:7],
- Logf: log.Printf,
- Ephemeral: true,
- Store: memStore,
- AuthKey: authkey,
- }
-
- if err := srv.Start(); err != nil {
- log.Fatal(err)
- }
-
- if _, err := srv.Up(context.Background()); err != nil {
- log.Fatal(err)
- }
-
- hc := srv.HTTPClient()
-
- pc, err := NewPatreonClient(hc)
- if err != nil {
- slog.Error("can't create patreon client", "err", err)
- }
-
- os.MkdirAll("./var", 0700)
-
- fs, err := lume.New(context.Background(), &lume.Options{
- Branch: "main",
- Repo: "https://github.com/Xe/site",
- StaticSiteDir: "lume",
- URL: "https://xeiaso.net",
- Development: false,
- PatreonClient: pc,
- DataDir: "./var",
- MiToken: *miToken,
- })
- if err != nil {
- log.Fatal(err)
- }
-
- defer fs.Close()
-
- var wg sync.WaitGroup
-
- for _, region := range regions {
- wg.Add(1)
- go func(region string) {
- defer wg.Done()
-
- if err := uploadSlug(hc, "xedn-"+region, "./var/site.zip"); err != nil {
- slog.Error("error updating", "region", region, "error", err)
- }
- }(region)
- }
-
- wg.Wait()
+ /*
+ pc, err := NewPatreonClient(hc)
+ if err != nil {
+ slog.Error("can't create patreon client", "err", err)
+ }
+
+ os.MkdirAll("./var", 0700)
+
+ fs, err := lume.New(context.Background(), &lume.Options{
+ Branch: "main",
+ Repo: "https://github.com/Xe/site",
+ StaticSiteDir: "lume",
+ URL: "https://xeiaso.net",
+ Development: false,
+ PatreonClient: pc,
+ DataDir: "./var",
+ MiToken: *miToken,
+ })
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ defer fs.Close()
+
+ var wg sync.WaitGroup
+
+ for _, region := range regions {
+ wg.Add(1)
+ go func(region string) {
+ defer wg.Done()
+
+ if err := uploadSlug(hc, "xedn-"+region, "./var/site.zip"); err != nil {
+ slog.Error("error updating", "region", region, "error", err)
+ }
+ }(region)
+ }
+
+ wg.Wait()
+ */
}
func uploadSlug(cli *http.Client, host, fname string) error {
diff --git a/cmd/patreon-saasproxy/main.go b/cmd/patreon-saasproxy/main.go
index 5bb1159..ef83302 100644
--- a/cmd/patreon-saasproxy/main.go
+++ b/cmd/patreon-saasproxy/main.go
@@ -18,13 +18,12 @@ import (
"google.golang.org/protobuf/types/known/emptypb"
"google.golang.org/protobuf/types/known/timestamppb"
"gopkg.in/mxpv/patreon-go.v1"
- "tailscale.com/client/tailscale"
"xeiaso.net/v4/internal"
"xeiaso.net/v4/internal/adminpb"
)
var (
- addr = flag.String("addr", ":80", "HTTP bind addr")
+ bind = flag.String("bind", ":80", "HTTP bind addr")
clientID = flag.String("client-id", "", "Patreon client ID")
clientSecret = flag.String("client-secret", "", "Patreon client secret")
dataDir = flag.String("data-dir", "./var", "Directory to store data in")
@@ -86,19 +85,18 @@ func main() {
ph := adminpb.NewPatreonServer(s)
http.Handle(adminpb.PatreonPathPrefix, ph)
- ln, err := net.Listen("tcp", *addr)
+ ln, err := net.Listen("tcp", *bind)
if err != nil {
log.Fatalf("can't listen over TCP: %v", err)
}
defer ln.Close()
- slog.Info("listening", "addr", *addr)
+ slog.Info("listening", "bind", *bind)
log.Fatal(http.Serve(ln, nil))
}
type Server struct {
- lc *tailscale.LocalClient
cts oauth2.TokenSource
}
diff --git a/cmd/xesite/internalapi.go b/cmd/xesite/internalapi.go
index ca4da3b..7d1ebcb 100644
--- a/cmd/xesite/internalapi.go
+++ b/cmd/xesite/internalapi.go
@@ -4,19 +4,17 @@ import (
"context"
"expvar"
"log"
+ "net"
"net/http"
"path/filepath"
- "tailscale.com/tsnet"
- "tailscale.com/tsweb"
"xeiaso.net/v4/internal/lume"
)
-func internalAPI(srv *tsnet.Server, fs *lume.FS) {
+func internalAPI(fs *lume.FS) {
mux := http.NewServeMux()
mux.Handle("/debug/vars", expvar.Handler())
- mux.HandleFunc("/metrics", tsweb.VarzHandler)
mux.HandleFunc("/rebuild", func(w http.ResponseWriter, r *http.Request) {
go fs.Update(context.Background())
@@ -28,7 +26,7 @@ func internalAPI(srv *tsnet.Server, fs *lume.FS) {
http.ServeFile(w, r, filepath.Join(*dataDir, "site.zip"))
})
- ln, err := srv.Listen("tcp", ":80")
+ ln, err := net.Listen("tcp", ":80")
if err != nil {
log.Fatal(err)
}
diff --git a/cmd/xesite/main.go b/cmd/xesite/main.go
index 2389357..7365fa9 100644
--- a/cmd/xesite/main.go
+++ b/cmd/xesite/main.go
@@ -13,9 +13,6 @@ import (
"github.com/donatj/hmacsig"
"github.com/facebookgo/flagenv"
_ "github.com/joho/godotenv/autoload"
- "tailscale.com/hostinfo"
- "tailscale.com/tsnet"
- "tailscale.com/tsweb"
"xeiaso.net/v4/internal"
"xeiaso.net/v4/internal/lume"
)
@@ -28,9 +25,8 @@ var (
gitRepo = flag.String("git-repo", "https://github.com/Xe/site", "Git repository to clone")
githubSecret = flag.String("github-secret", "", "GitHub secret to use for webhooks")
miToken = flag.String("mi-token", "", "Token to use for the mi API")
- patreonSaasProxyURL = flag.String("patreon-saasproxy-url", "http://patreon-saasproxy/give-token", "URL to use for the patreon saasproxy")
+ patreonSaasProxyURL = flag.String("patreon-saasproxy-url", "http://xesite-patreon-saasproxy.flycast/", "URL to use for the patreon saasproxy")
siteURL = flag.String("site-url", "https://xeiaso.net/", "URL to use for the site")
- tsnetHostname = flag.String("tailscale-hostname", "xesite", "Tailscale hostname to use")
)
func main() {
@@ -38,8 +34,6 @@ func main() {
flag.Parse()
internal.Slog()
- hostinfo.SetApp("xeiaso.net/v4/cmd/xesite")
-
ctx := context.Background()
ln, err := net.Listen("tcp", *bind)
@@ -50,23 +44,7 @@ func main() {
os.MkdirAll(*dataDir, 0700)
os.MkdirAll(filepath.Join(*dataDir, "tsnet"), 0700)
- srv := &tsnet.Server{
- Hostname: *tsnetHostname + "-" + os.Getenv("FLY_REGION"),
- Logf: func(string, ...any) {},
- Dir: filepath.Join(*dataDir, "tsnet"),
- }
-
- if err := srv.Start(); err != nil {
- log.Fatal(err)
- }
-
- if _, err := srv.Up(context.Background()); err != nil {
- log.Fatal(err)
- }
-
- hc := srv.HTTPClient()
-
- pc, err := NewPatreonClient(hc)
+ pc, err := NewPatreonClient(http.DefaultClient)
if err != nil {
slog.Error("can't create patreon client", "err", err)
}
@@ -91,7 +69,7 @@ func main() {
go rebuildOnChange(fs)
}
- go internalAPI(srv, fs)
+ go internalAPI(fs)
if err != nil {
log.Fatal(err)
@@ -99,7 +77,6 @@ func main() {
mux := http.NewServeMux()
mux.Handle("/", http.FileServer(http.FS(fs)))
- mux.HandleFunc("/metrics", tsweb.VarzHandler)
mux.HandleFunc("/blog.atom", func(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "/blog.rss", http.StatusMovedPermanently)