Compare commits
23 Commits
34bcc3d603
...
e72719f6b0
Author | SHA1 | Date | |
---|---|---|---|
e72719f6b0 | |||
6bdbf3b83d | |||
1c2e6e3da9 | |||
65d35747fc | |||
af39a52971 | |||
16ea5c3138 | |||
0beb8a33de | |||
3abdbde812 | |||
bfdc165346 | |||
64a39ac5e5 | |||
950d65ca59 | |||
65634751b6 | |||
7542cfba4a | |||
9a504d1638 | |||
e614ab79fa | |||
41209f3ee3 | |||
|
977136d9c2 | ||
|
b05c48cfbb | ||
|
11a792d96c | ||
427bec5081 | |||
dc69cc447d | |||
c5b3c2bd98 | |||
|
e8d8b9b096 |
2
.github/workflows/docker.yml
vendored
2
.github/workflows/docker.yml
vendored
@ -26,4 +26,4 @@ jobs:
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
push: true
|
||||
tags: projectsegfault/segfautils:latest
|
||||
tags: realprojectsegfault/segfautils:latest
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
||||
data/config.toml
|
||||
data/announcements.json
|
@ -8,10 +8,12 @@ pipeline:
|
||||
- go build -o segfautils
|
||||
dockerize_n_publish:
|
||||
when:
|
||||
branch: [master]
|
||||
branch : [master]
|
||||
event: [push]
|
||||
name: dockerize and publish
|
||||
image: plugins/docker
|
||||
image: plugins/docker
|
||||
registry: git.projectsegfau.lt
|
||||
repo: git.projectsegfau.lt/projectsegfault/segfautils
|
||||
settings:
|
||||
username:
|
||||
from_secret: username
|
||||
@ -19,6 +21,20 @@ pipeline:
|
||||
from_secret: password
|
||||
repo: projectsegfault/segfautils
|
||||
dockerfile: Dockerfile
|
||||
|
||||
dockerize_dev:
|
||||
when:
|
||||
event: [push]
|
||||
image: plugins/docker
|
||||
name: dockerize and publish dev
|
||||
registry: git.projectsegfau.lt
|
||||
repo: git.projectsegfau.lt/projectsegfault/segfautils
|
||||
settings:
|
||||
username:
|
||||
from_secret: username
|
||||
password:
|
||||
from_secret: password
|
||||
repo: projectsegfau.lt/segfautils
|
||||
tags: dev
|
||||
dockerfile: Dockerfile
|
||||
|
||||
|
||||
|
@ -15,8 +15,30 @@ import (
|
||||
|
||||
var (
|
||||
authToken = config.AuthToken()
|
||||
resAnn = config.OptAnn()
|
||||
)
|
||||
|
||||
func AnnCheck() {
|
||||
if resAnn == "false" {
|
||||
log.Println("[Segfautils] ℹ Announcements are disabled")
|
||||
http.HandleFunc("/announcements", func(w http.ResponseWriter, r *http.Request) {
|
||||
http.Error(w, "Announcements are disabled.", http.StatusServiceUnavailable)
|
||||
})
|
||||
http.HandleFunc("/api/announcements", func(w http.ResponseWriter, r *http.Request) {
|
||||
http.Error(w, "{\"enabled\": \"false\"}", http.StatusServiceUnavailable)
|
||||
})
|
||||
} else {
|
||||
AnnPage()
|
||||
Announcements()
|
||||
}
|
||||
}
|
||||
|
||||
func AnnPage() {
|
||||
http.HandleFunc("/announcements", func(w http.ResponseWriter, r *http.Request) {
|
||||
http.ServeFile(w, r, "static/announcements.html")
|
||||
})
|
||||
}
|
||||
|
||||
func Announcements() {
|
||||
http.HandleFunc("/api/announcements", getAnnouncements)
|
||||
http.HandleFunc("/api/announcements/post", handleAnnouncements)
|
||||
@ -39,6 +61,7 @@ func handleAnnouncements(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusOK)
|
||||
now := time.Now().Unix()
|
||||
data := map[string]interface{}{
|
||||
"enabled": "true",
|
||||
"title": r.FormValue("title"),
|
||||
"link": r.FormValue("link"),
|
||||
"severity": r.FormValue("severity"),
|
||||
|
39
api/form.go
39
api/form.go
@ -1,18 +1,16 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/kataras/hcaptcha"
|
||||
|
||||
"fmt"
|
||||
|
||||
"io"
|
||||
"net/url"
|
||||
"text/template"
|
||||
|
||||
"github.com/ProjectSegfault/segfautils/config"
|
||||
"github.com/ProjectSegfault/segfautils/utils"
|
||||
"github.com/kataras/hcaptcha"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -20,8 +18,37 @@ var (
|
||||
secretKey = config.HCaptchaSecretKey()
|
||||
webhookURL = config.WebhookURL()
|
||||
client = hcaptcha.New(secretKey) /* See `Client.FailureHandler` too. */
|
||||
resForm = config.OptForm()
|
||||
)
|
||||
|
||||
func FormCheck() {
|
||||
if resForm == "false" {
|
||||
log.Println("[Segfautils] ℹ Contact form is disabled")
|
||||
http.HandleFunc("/form", func(w http.ResponseWriter, r *http.Request) {
|
||||
http.Error(w, "Form is disabled.", http.StatusServiceUnavailable)
|
||||
})
|
||||
} else {
|
||||
FormPage()
|
||||
Form()
|
||||
}
|
||||
}
|
||||
|
||||
func FormPage() {
|
||||
type StaticThing struct {
|
||||
HCaptchaSiteKey string
|
||||
}
|
||||
|
||||
tmpl_form := template.Must(template.ParseFiles("static/form.html"))
|
||||
http.HandleFunc("/form/", func(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
hcaptcha_site_key := config.HCaptchaSiteKey()
|
||||
data := StaticThing{
|
||||
HCaptchaSiteKey: hcaptcha_site_key,
|
||||
}
|
||||
tmpl_form.Execute(w, data)
|
||||
})
|
||||
}
|
||||
|
||||
func Form() {
|
||||
http.HandleFunc("/api/form", client.HandlerFunc(theActualFormCode))
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ func AuthToken() string {
|
||||
viper.AddConfigPath("./data")
|
||||
err := viper.ReadInConfig()
|
||||
if err != nil {
|
||||
log.Println("Error reading config for getting segfautils.auth_token", err.Error())
|
||||
log.Println("Error reading config. Error getting: segfautils.auth_token", err.Error())
|
||||
}
|
||||
result := viper.GetString("segfautils.auth_token")
|
||||
return result
|
||||
|
@ -11,7 +11,7 @@ func HCaptchaSecretKey() string {
|
||||
viper.AddConfigPath("./data")
|
||||
err := viper.ReadInConfig()
|
||||
if err != nil {
|
||||
log.Println("Error reading config for getting hcaptcha.secret_key", err.Error())
|
||||
log.Println("Error reading config. Error getting: hcaptcha.secret_key", err.Error())
|
||||
}
|
||||
result := viper.GetString("hcaptcha.secret_key")
|
||||
return result
|
||||
|
@ -11,7 +11,7 @@ func HCaptchaSiteKey() string {
|
||||
viper.AddConfigPath("./data")
|
||||
err := viper.ReadInConfig()
|
||||
if err != nil {
|
||||
log.Println("Error reading config for getting hcaptcha.site_key", err.Error())
|
||||
log.Println("Error reading config. Error getting: hcaptcha.site_key", err.Error())
|
||||
}
|
||||
result := viper.GetString("hcaptcha.site_key")
|
||||
return result
|
||||
|
18
config/optionannounce.go
Normal file
18
config/optionannounce.go
Normal file
@ -0,0 +1,18 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
func OptAnn() string {
|
||||
viper.SetConfigName("config")
|
||||
viper.AddConfigPath("./data")
|
||||
err := viper.ReadInConfig()
|
||||
if err != nil {
|
||||
log.Println("Error reading config. Error getting: options.announce", err.Error())
|
||||
}
|
||||
result := viper.GetString("options.announce")
|
||||
return result
|
||||
}
|
18
config/optionform.go
Normal file
18
config/optionform.go
Normal file
@ -0,0 +1,18 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
func OptForm() string {
|
||||
viper.SetConfigName("config")
|
||||
viper.AddConfigPath("./data")
|
||||
err := viper.ReadInConfig()
|
||||
if err != nil {
|
||||
log.Println("Error reading config. Error getting: options.form", err.Error())
|
||||
}
|
||||
result := viper.GetString("options.form")
|
||||
return result
|
||||
}
|
@ -12,7 +12,7 @@ func Port() string {
|
||||
viper.AddConfigPath("./data")
|
||||
err := viper.ReadInConfig()
|
||||
if err != nil {
|
||||
log.Println("Error reading config for getting segfautils.port", err.Error())
|
||||
log.Println("Error reading config. Error getting: segfautils.port", err.Error())
|
||||
}
|
||||
result := strconv.Itoa(viper.GetInt("segfautils.port"))
|
||||
return result
|
||||
|
@ -11,7 +11,7 @@ func WebhookURL() string {
|
||||
viper.AddConfigPath("./data")
|
||||
err := viper.ReadInConfig()
|
||||
if err != nil {
|
||||
log.Println("Error reading config for getting segfautils.webhook_url", err.Error())
|
||||
log.Println("Error reading config. Error getting: segfautils.webhook_url", err.Error())
|
||||
}
|
||||
result := viper.GetString("segfautils.webhook_url")
|
||||
return result
|
||||
|
@ -11,4 +11,8 @@ secret_key = "YOURSECRETKEY"
|
||||
client_id = "YOURCLIENTID"
|
||||
client_secret = "YOURCLIENTSECRET"
|
||||
redirect_url = "YOURREDIRECTURL"
|
||||
auth_url = "YOURAUTHURL"
|
||||
auth_url = "YOURAUTHURL"
|
||||
|
||||
[options]
|
||||
announce = true
|
||||
form = false
|
||||
|
25
main.go
25
main.go
@ -12,18 +12,13 @@ import (
|
||||
)
|
||||
|
||||
type StaticThingy struct {
|
||||
Port string
|
||||
HCaptchaSiteKey string
|
||||
Port string
|
||||
}
|
||||
|
||||
var port string
|
||||
var shit bool
|
||||
|
||||
func main() {
|
||||
log.Println("[Segfautils] Starting")
|
||||
utils.CheckConfig()
|
||||
log.Println("[HTTP] Starting server")
|
||||
hcaptcha_site_key := config.HCaptchaSiteKey()
|
||||
|
||||
tmpl := template.Must(template.ParseFiles("static/index.html"))
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
data := StaticThingy{
|
||||
@ -32,22 +27,14 @@ func main() {
|
||||
tmpl.Execute(w, data)
|
||||
})
|
||||
|
||||
tmpl_form := template.Must(template.ParseFiles("static/form.html"))
|
||||
http.HandleFunc("/form/", func(w http.ResponseWriter, r *http.Request) {
|
||||
data := StaticThingy{
|
||||
HCaptchaSiteKey: hcaptcha_site_key,
|
||||
}
|
||||
tmpl_form.Execute(w, data)
|
||||
})
|
||||
log.Println("[HTTP] Starting server")
|
||||
api.AnnCheck()
|
||||
api.FormCheck()
|
||||
|
||||
http.HandleFunc("/api/", func(w http.ResponseWriter, r *http.Request) {
|
||||
io.WriteString(w, "welcome to hell")
|
||||
})
|
||||
http.HandleFunc("/announcements", func(w http.ResponseWriter, r *http.Request) {
|
||||
http.ServeFile(w, r, "static/announcements.html")
|
||||
})
|
||||
api.Form()
|
||||
api.Announcements()
|
||||
|
||||
log.Println("[HTTP] HTTP server is now running at " + config.Port() + "!")
|
||||
log.Println(http.ListenAndServe(":"+config.Port(), nil))
|
||||
}
|
||||
|
Reference in New Issue
Block a user