From 99b6a2117933b6693885a1e92c364b6694d51070 Mon Sep 17 00:00:00 2001 From: ari melody Date: Sat, 31 Aug 2024 02:56:06 +0100 Subject: [PATCH] args over envars, some music gateway fixes --- admin/admin.go | 15 +++++++------- discord/discord.go | 37 +++++++++++----------------------- global/data.go | 31 +++++++++++++++++++++++++++- public/script/music-gateway.js | 3 ++- views/music-gateway.html | 14 +++++++++---- views/music.html | 2 -- views/prideflag.html | 2 +- 7 files changed, 63 insertions(+), 41 deletions(-) diff --git a/admin/admin.go b/admin/admin.go index 729cc93..1f1fc60 100644 --- a/admin/admin.go +++ b/admin/admin.go @@ -3,8 +3,9 @@ package admin import ( "fmt" "math/rand" - "os" "time" + + "arimelody.me/arimelody.me/global" ) type ( @@ -19,19 +20,19 @@ const TOKEN_LENGTH = 64 const TOKEN_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" var ADMIN_BYPASS = func() bool { - if os.Getenv("ARIMELODY_ADMIN_BYPASS") == "true" { - fmt.Println("WARNING: Admin login is currently BYPASSED by ARIMELODY_ADMIN_BYPASS.") + if global.Args["adminBypass"] == "true" { + fmt.Println("WARN: Admin login is currently BYPASSED. (-adminBypass)") return true } return false }() var ADMIN_ID_DISCORD = func() string { - envvar := os.Getenv("DISCORD_ADMIN_ID") - if envvar == "" { - fmt.Printf("DISCORD_ADMIN_ID was not provided. Admin login will be unavailable.\n") + id := global.Args["discordAdmin"] + if id == "" { + fmt.Printf("WARN: Discord admin ID (-discordAdmin) was not provided. Admin login will be unavailable.\n") } - return envvar + return id }() var sessions []*Session diff --git a/discord/discord.go b/discord/discord.go index 46ca7f7..e749daa 100644 --- a/discord/discord.go +++ b/discord/discord.go @@ -6,45 +6,32 @@ import ( "fmt" "net/http" "net/url" - "os" "strings" + + "arimelody.me/arimelody.me/global" ) const API_ENDPOINT = "https://discord.com/api/v10" var CREDENTIALS_PROVIDED = true var CLIENT_ID = func() string { - envvar := os.Getenv("DISCORD_CLIENT_ID") - if envvar == "" { - fmt.Printf("DISCORD_CLIENT_ID was not provided. Admin login will be unavailable.\n") + id := global.Args["discordClient"] + if id == "" { + fmt.Printf("WARN: Discord client ID (-discordClient) was not provided. Admin login will be unavailable.\n") CREDENTIALS_PROVIDED = false } - return envvar + return id }() var CLIENT_SECRET = func() string { - envvar := os.Getenv("DISCORD_CLIENT_SECRET") - if envvar == "" { - fmt.Printf("DISCORD_CLIENT_SECRET was not provided. Admin login will be unavailable.\n") + secret := global.Args["discordSecret"] + if secret== "" { + fmt.Printf("WARN: Discord secret (-discordSecret) was not provided. Admin login will be unavailable.\n") CREDENTIALS_PROVIDED = false } - return envvar -}() -var REDIRECT_URI = func() string { - envvar := os.Getenv("DISCORD_REDIRECT_URI") - if envvar == "" { - fmt.Printf("DISCORD_REDIRECT_URI was not provided. Admin login will be unavailable.\n") - CREDENTIALS_PROVIDED = false - } - return envvar -}() -var OAUTH_CALLBACK_URI = func() string { - envvar := os.Getenv("OAUTH_CALLBACK_URI") - if envvar == "" { - fmt.Printf("OAUTH_CALLBACK_URI was not provided. Admin login will be unavailable.\n") - CREDENTIALS_PROVIDED = false - } - return envvar + return secret }() +var OAUTH_CALLBACK_URI = fmt.Sprintf("%s/admin/login", global.HTTP_DOMAIN) +var REDIRECT_URI = fmt.Sprintf("https://discord.com/oauth2/authorize?client_id=%s&response_type=code&redirect_uri=%s&scope=identify", CLIENT_ID, OAUTH_CALLBACK_URI) type ( AccessTokenResponse struct { diff --git a/global/data.go b/global/data.go index 20ec30e..07c781e 100644 --- a/global/data.go +++ b/global/data.go @@ -1,19 +1,48 @@ package global import ( + "fmt" "os" + "strings" "arimelody.me/arimelody.me/music/model" "github.com/jmoiron/sqlx" ) +var Args = func() map[string]string { + args := map[string]string{} + + index := 0 + for index < len(os.Args[1:]) { + arg := os.Args[index + 1] + if !strings.HasPrefix(arg, "-") { + fmt.Printf("FATAL: Parameters must follow an argument (%s).\n", arg) + os.Exit(1) + } + + if index + 3 > len(os.Args) || strings.HasPrefix(os.Args[index + 2], "-") { + args[arg[1:]] = "true" + index += 1 + continue + } + + val := os.Args[index + 2] + args[arg[1:]] = val + // fmt.Printf("%s: %s\n", arg[1:], val) + index += 2 + } + + return args +}() + + var HTTP_DOMAIN = func() string { envvar := os.Getenv("HTTP_DOMAIN") if envvar != "" { return envvar } return "https://arimelody.me" -} +}() var DB *sqlx.DB diff --git a/public/script/music-gateway.js b/public/script/music-gateway.js index ef18fcc..097a398 100644 --- a/public/script/music-gateway.js +++ b/public/script/music-gateway.js @@ -70,4 +70,5 @@ function bind_share_btn() { bind_share_btn(); bind_go_back_btn(); apply_funny_bob_to_upcoming_tags(); -update_extras_buttons(); +if (document.getElementById("extras")) + update_extras_buttons(); diff --git a/views/music-gateway.html b/views/music-gateway.html index 0eb4081..9577fa6 100644 --- a/views/music-gateway.html +++ b/views/music-gateway.html @@ -108,14 +108,20 @@ {{end}} {{if .IsSingle}} + {{$Track := index .Tracks 0}} {{if $Track.Lyrics}}
-

lyrics:

-

{{$Track.Lyrics}}

+

LYRICS

+ {{if $Track.Lyrics}} + {{$Track.Lyrics}} + {{else}} + No lyrics. + {{end}}
{{end}} - {{else}} + + {{else if .Tracks}}

tracks:

{{range $i, $track := .Tracks}} @@ -154,7 +160,7 @@ {{if $Track.Lyrics}}
  • lyrics
  • {{end}} - {{else}} + {{else if .Tracks}}
  • tracks
  • {{end}} diff --git a/views/music.html b/views/music.html index 8e59903..7473dc2 100644 --- a/views/music.html +++ b/views/music.html @@ -93,7 +93,5 @@ > ari@arimelody.me

    - - back to top {{end}} diff --git a/views/prideflag.html b/views/prideflag.html index 5d9763a..5e25f70 100644 --- a/views/prideflag.html +++ b/views/prideflag.html @@ -1,5 +1,5 @@ {{define "prideflag"}} - +