forked from ProjectSegfault/publapi
some changes
Signed-off-by: Odyssey <odyssey346@disroot.org>
This commit is contained in:
parent
b1034bca16
commit
de809e2837
3
go.mod
3
go.mod
@ -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
6
go.sum
@ -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
11
main.go
@ -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
|
||||
}
|
||||
|
@ -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{
|
||||
|
@ -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
|
||||
}
|
Loading…
Reference in New Issue
Block a user