some changes

Signed-off-by: Odyssey <odyssey346@disroot.org>
This commit is contained in:
Odyssey 2023-01-07 17:44:25 +01:00
parent b1034bca16
commit de809e2837
5 changed files with 30 additions and 15 deletions

3
go.mod
View File

@ -16,5 +16,8 @@ require (
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasthttp v1.43.0 // indirect
github.com/valyala/tcplisten v1.0.0 // indirect
go.uber.org/atomic v1.10.0 // indirect
go.uber.org/multierr v1.9.0 // indirect
go.uber.org/zap v1.24.0 // indirect
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect
)

6
go.sum
View File

@ -151,8 +151,14 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI=
go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=

11
main.go
View File

@ -1,10 +1,10 @@
package main
import (
"os"
"os/exec"
"github.com/ProjectSegfault/publapi/pages"
"github.com/ProjectSegfault/publapi/utils"
"github.com/gofiber/fiber/v2"
)
@ -36,3 +36,12 @@ func main() {
app.Listen(utils.GetPort())
}
// GetPort returns the port to listen on
func GetPort() string {
port := os.Getenv("PUBLAPI_PORT")
if port == "" {
port = "3000"
}
return ":" + port
}

View File

@ -9,25 +9,34 @@ import (
"github.com/sethvargo/go-password/password"
"github.com/containrrr/shoutrrr"
"go.uber.org/zap"
)
// SignupPage is the signup page handler
func SignupPage(c *fiber.Ctx) error {
// set up logger
logger, _ := zap.NewProduction()
defer logger.Sync()
username := c.FormValue("username")
email := c.FormValue("email")
if username == "" || email == "" {
logger.Error("username or email is empty", zap.String("username", username), zap.String("email", email))
return c.SendStatus(fiber.StatusBadRequest)
}
// generate password
pass, err := password.Generate(30, 10, 10, false, false)
if err != nil {
logger.Error("failed to generate password", zap.Error(err))
return c.SendStatus(fiber.StatusInternalServerError)
}
// create user file
f, err := os.Create("/var/publapi/users/" + username + ".sh")
if err != nil {
logger.Error("failed to create user file", zap.Error(err))
return c.SendStatus(fiber.StatusInternalServerError)
}
defer f.Close()
@ -44,12 +53,14 @@ func SignupPage(c *fiber.Ctx) error {
// write to file
_, err = f.WriteString(bashscript)
if err != nil {
logger.Error("failed to write to user file", zap.Error(err))
return c.SendStatus(fiber.StatusInternalServerError)
}
// send notification to admins
err = shoutrrr.Send(os.Getenv("PUBLAPI_SHOUTRRRURL"), "New user signup! Please review /var/publapi/users/"+username+".sh to approve or deny the user.")
if err != nil {
logger.Error("failed to send notification to admins", zap.Error(err))
return c.SendStatus(fiber.StatusInternalServerError)
}
return c.JSON(fiber.Map{

View File

@ -1,14 +0,0 @@
package utils
import (
"os"
)
// GetPort returns the port to listen on
func GetPort() string {
port := os.Getenv("PUBLAPI_PORT")
if port == "" {
port = "3000"
}
return ":" + port
}