changes + add uploader
This commit is contained in:
parent
7e1c36c966
commit
1383b52f85
@ -1,24 +1,24 @@
|
|||||||
package uploader
|
package uploader
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"embed"
|
"embed"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.tijl.dev/tijl/tijl.dev-core/internal/config"
|
"git.tijl.dev/tijl/tijl.dev-core/internal/config"
|
||||||
"git.tijl.dev/tijl/tijl.dev-core/internal/queries"
|
"git.tijl.dev/tijl/tijl.dev-core/internal/queries"
|
||||||
"git.tijl.dev/tijl/tijl.dev-core/internal/user"
|
"git.tijl.dev/tijl/tijl.dev-core/internal/user"
|
||||||
"git.tijl.dev/tijl/tijl.dev-core/modules/db"
|
"git.tijl.dev/tijl/tijl.dev-core/modules/db"
|
||||||
"git.tijl.dev/tijl/tijl.dev-core/modules/i18n"
|
"git.tijl.dev/tijl/tijl.dev-core/modules/i18n"
|
||||||
"git.tijl.dev/tijl/tijl.dev-core/modules/web"
|
"git.tijl.dev/tijl/tijl.dev-core/modules/web"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed locales/*
|
//go:embed locales/*
|
||||||
@ -32,6 +32,10 @@ func Setup() {
|
|||||||
|
|
||||||
web.RegisterAppSetupFunc(func(a *fiber.App) {
|
web.RegisterAppSetupFunc(func(a *fiber.App) {
|
||||||
a.Get("/app/uploader", func(c *fiber.Ctx) error {
|
a.Get("/app/uploader", func(c *fiber.Ctx) error {
|
||||||
|
_, err := user.GetSession(c)
|
||||||
|
if err != nil {
|
||||||
|
return c.Redirect("/auth?redirect=/app/uploader", http.StatusUnauthorized)
|
||||||
|
}
|
||||||
data := *web.Common(c)
|
data := *web.Common(c)
|
||||||
data["Title"] = "tmp"
|
data["Title"] = "tmp"
|
||||||
return c.Render("apps/uploader/index", data, "layouts/base")
|
return c.Render("apps/uploader/index", data, "layouts/base")
|
||||||
@ -39,7 +43,7 @@ func Setup() {
|
|||||||
a.Get("/app/uploader/:key", func(c *fiber.Ctx) error {
|
a.Get("/app/uploader/:key", func(c *fiber.Ctx) error {
|
||||||
encryptionKey, err := hex.DecodeString(c.Params("key"))
|
encryptionKey, err := hex.DecodeString(c.Params("key"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return c.Next()
|
||||||
}
|
}
|
||||||
storageKey := hashKey(encryptionKey)
|
storageKey := hashKey(encryptionKey)
|
||||||
|
|
||||||
@ -57,7 +61,7 @@ func Setup() {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if accessCount >= int64(row.MaxVisits) {
|
if accessCount == int64(row.MaxVisits) || accessCount > int64(row.MaxVisits) {
|
||||||
return c.Next()
|
return c.Next()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,10 +119,10 @@ func Setup() {
|
|||||||
return c.SendStatus(http.StatusUnauthorized)
|
return c.SendStatus(http.StatusUnauthorized)
|
||||||
}
|
}
|
||||||
|
|
||||||
expireDays, err := strconv.Atoi(c.FormValue("expire_days"))
|
expireDays, err := strconv.Atoi(c.FormValue("expire_days"))
|
||||||
if err != nil {return err}
|
if err != nil {return err}
|
||||||
maxDownloads, err := strconv.Atoi(c.FormValue("max_downloads"))
|
maxDownloads, err := strconv.Atoi(c.FormValue("max_downloads"))
|
||||||
if err != nil {return err}
|
if err != nil {return err}
|
||||||
|
|
||||||
file, err := c.FormFile("file")
|
file, err := c.FormFile("file")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<div hx-boost="true"> <div id="error-message" class="text-red-500 mb-4"></div>
|
<div hx-boost="true"> <div id="error-message" class="text-red-500 mb-4"></div>
|
||||||
<form method="post" hx-on="htmx:responseError:
|
<form method="post" hx-on="htmx:responseError:
|
||||||
document.getElementById('error-message').innerHTML = '{{.T.error_long}}:
|
document.getElementById('error-message').innerHTML = '{{.T.error_long}}:
|
||||||
' + event.detail.xhr.responseText; htmx.trigger(this, 'htmx:swap', {
|
' + event.detail.xhr.responseText; htmx.trigger(this, 'htmx:swap', {
|
||||||
target: '#error-message', swap: 'innerHTML' });">
|
target: '#error-message', swap: 'innerHTML' });">
|
||||||
<input type="text" class="hidden" name="type" value="start" />
|
<input type="text" class="hidden" name="type" value="start" />
|
||||||
|
|
||||||
<div> {{range .SupportedTags}} <label class="cursor-pointer label">
|
<div> {{range .SupportedTags}} <label class="cursor-pointer label">
|
||||||
@ -12,29 +12,29 @@
|
|||||||
</label> {{end}}
|
</label> {{end}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if .SignedIn}}
|
{{if .SignedIn}}
|
||||||
<label class="cursor-pointer label mt-5"> <span
|
<label class="cursor-pointer label mt-5"> <span
|
||||||
class="label-text">Share</span> <input name="share" type="checkbox"
|
class="label-text">Share</span> <input name="share" type="checkbox"
|
||||||
class="checkbox checkbox-primary" />
|
class="checkbox checkbox-primary" />
|
||||||
</label>
|
</label>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
<div> <label>
|
<div> <label>
|
||||||
<span>max questions</span> <input value="0" placeholder="max
|
<span>max questions</span> <input value="0" placeholder="max
|
||||||
questions" name="max_questions" type="number"
|
questions" name="max_questions" type="number"
|
||||||
class="input input-bordered" /> </label>
|
class="input input-bordered" /> </label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div> <label>
|
<div> <label>
|
||||||
<span>time limit</span> <input value="0" placeholder="seconds
|
<span>time limit</span> <input value="0" placeholder="seconds
|
||||||
time limit" name="seconds" type="number"
|
time limit" name="seconds" type="number"
|
||||||
class="input input-bordered" /> </label>
|
class="input input-bordered" /> </label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button type="submit" class="btn btn-primary">Submit</button> </form>
|
<button type="submit" class="btn btn-primary">Submit</button> </form>
|
||||||
<form class="mt-4" method="post"> <input type="text" class="hidden"
|
<form class="mt-4" method="post"> <input type="text" class="hidden"
|
||||||
name="type" value="shared" /> <input type="text" class="input
|
name="type" value="shared" /> <input type="text" class="input
|
||||||
input-bordered" name="sharekey" placeholder="sharekey" /> <button
|
input-bordered" name="sharekey" placeholder="sharekey" /> <button
|
||||||
type="submit" class="btn btn-primary">Shared</button>
|
type="submit" class="btn btn-primary">Shared</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user