git.sophuwu.com > urlshort
some password stuff i guess
sophuwu sophie@skisiel.com
Fri, 08 Dec 2023 13:01:14 +0100
commit

77d0585dc3a2b293984b52288d29497afaed8be5

parent

9afb9fed44dc17b01d638905428665c712089825

4 files changed, 25 insertions(+), 3 deletions(-)

jump to
M .gitignore.gitignore

@@ -2,3 +2,4 @@ .idea

urlshort urls.db virustotal.key +key
M html/create.htmlhtml/create.html

@@ -7,6 +7,6 @@ </head>

<body> <h1>URL Shortner</h1> <p>{{title}}</p> - <p>{{response}}</p> + <input type="text" disabled style="color: black;" value="{{response}}"></input> </body> </html>
M html/index.htmlhtml/index.html

@@ -7,7 +7,9 @@ </head>

<body> <h1>URL Shortner</h1> <form action="/" method="post"> - <input type="text" name="url" placeholder="Enter a URL here" autocomplete="off"> + <input type="text" name="url" placeholder="URL to shorten" autocomplete="off"> + <input type="text" name="custom" placeholder="Custom URL (optional)" autocomplete="off"> + <input type="password" name="key" placeholder="Password" autocomplete="off"> <input type="submit" value="Shorten"> </form> </body>
M main.gomain.go

@@ -12,12 +12,14 @@ "net/http"

"os" "os/signal" "strings" + "sync" "time" ) var urlDB *bolt.DB var wordList []string var virustotalKey string +var key string type urlStruc struct { Date time.Time

@@ -50,6 +52,14 @@ println("virustotal.key is empty")

os.Exit(1) } virustotalKey = string(b) + + b, err = os.ReadFile("key") + fec(err) + if len(b) == 0 { + println("key is empty") + os.Exit(1) + } + key = string(b) var db *bolt.DB db, err = bolt.Open("urls.db", 0600, nil)

@@ -237,7 +247,11 @@ url.Url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

writeURL(url) } +var locky sync.Mutex + func createHandler(w http.ResponseWriter, r *http.Request) { + locky.Lock() + defer locky.Unlock() var err error var url urlStruc var api bool = false

@@ -249,6 +263,11 @@ return

} if r.Form.Get("mode") == "api" { api = true + } + if r.Form.Get("key") != key { + time.Sleep(1 * time.Second) + createPage(w, api, 401, "Error: Invalid key") + return } url.Url = r.Form.Get("url") if url.Url == "" {

@@ -280,7 +299,7 @@ err = writeURL(url)

if hec(w, err, 500) { return } - createPage(w, api, 200, r.URL.Host+"/"+url.Path) + createPage(w, api, 200, r.Host+"/"+url.Path) } func httpHandler(w http.ResponseWriter, r *http.Request) {