diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 2e79155..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-FROM alpine:latest
-
-COPY nodebb_invite_link /usr/local/bin/
-
-VOLUME /var/lib/nodebb_invite_link
-EXPOSE 9876
-
-ENV DOMAIN ""
-ENV "INVITE_LISTEN" 9876
-ENV "INVITE_SEQ" "/var/lib/nodebb_invite_link/sequence"
-
-ENV "INVITE_DBHOST" "postgres"
-ENV "INVITE_DBPORT" 5432
-ENV "INVITE_DBNAME" "nodebb"
-ENV "INVITE_DBUSERNAME" "nodebb"
-ENV "INVITE_DBPASSWORD" "nodebb"
-
-CMD ["/usr/local/bin/nodebb_invite_link"]
diff --git a/db.go b/db.go
index 7a67f96..cd4576f 100644
--- a/db.go
+++ b/db.go
@@ -22,6 +22,7 @@ func initDB(host string, port int, dbName, username, password string) (err error
password,
dbName,
)
+
if db, err = sqlx.Connect("postgres", dbConn); err != nil {
return
}
diff --git a/main.go b/main.go
index 458f703..f161df2 100644
--- a/main.go
+++ b/main.go
@@ -26,49 +26,23 @@ var (
flagDatabase string
flagListenPort int
flagSequenceFilename string
- flagDomain string
+ flagDomain string
)
func init() {
- var err error
-
- port := 5432
- if os.Getenv("INVITE_DBPORT") != "" {
- port, err = strconv.Atoi(os.Getenv("INVITE_DBPORT"))
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
- }
-
- listen := 9876
- if os.Getenv("INVITE_LISTEN") != "" {
- listen, err = strconv.Atoi(os.Getenv("INVITE_LISTEN"))
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
- }
-
flag.BoolVar(&flagVersion, "version", false, "Display version and exit")
- flag.StringVar(&flagHost, "host", os.Getenv("INVITE_DBHOST"), "Database host")
- flag.StringVar(&flagUsername, "username", os.Getenv("INVITE_DBUSERNAME"), "Database username")
- flag.StringVar(&flagPassword, "password", os.Getenv("INVITE_DBPASSWORD"), "Database password")
- flag.StringVar(&flagDatabase, "database", os.Getenv("INVITE_DBNAME"), "Database name")
- flag.IntVar(&flagPort, "port", port, "Database port")
- flag.IntVar(&flagListenPort, "listen", listen, "Web server listen port")
- flag.StringVar(&flagSequenceFilename, "seq", os.Getenv("INVITE_SEQ"), "Sequence filename")
- flag.StringVar(&flagDomain, "domain", os.Getenv("INVITE_DOMAIN"), "Domain FQDN")
+ flag.StringVar(&flagHost, "host", "", "Database host")
+ flag.StringVar(&flagUsername, "username", "", "Database username")
+ flag.StringVar(&flagPassword, "password", "", "Database password")
+ flag.StringVar(&flagDatabase, "database", "", "Database name")
+ flag.IntVar(&flagPort, "port", 5432, "Database port")
+ flag.IntVar(&flagListenPort, "listen", 9876, "Web server listen port")
+ flag.StringVar(&flagSequenceFilename, "seq", "sequence", "Sequence filename")
+ flag.StringVar(&flagDomain, "domain", "", "Domain FQDN")
flag.Parse()
}
func main() {
- if flagSequenceFilename == "" {
- fmt.Println("Please specify -seq with a sequenc filename.")
- os.Exit(1)
- }
-
-
err := initDB(flagHost, flagPort, flagDatabase, flagUsername, flagPassword)
if err != nil {
fmt.Println(err)
@@ -76,7 +50,6 @@ func main() {
}
listenOn := fmt.Sprintf("[::]:%d", flagListenPort)
- http.HandleFunc("/", pageIndex)
http.HandleFunc("/invite", createInvite)
fmt.Printf("Listen on %s\n", listenOn)
err = http.ListenAndServe(listenOn, nil)
@@ -109,50 +82,6 @@ func sequenceNext() (seq int, err error) {
return
}
-func pageIndex(w http.ResponseWriter, r *http.Request) {
- w.Write([]byte(`
-
-
-
-
-
-
- 
- Skapar länk...
-
-
-
-
-
-
-`))
-}
-
func createInvite(w http.ResponseWriter, r *http.Request) {
seq, err := sequenceNext()
if err != nil {
@@ -164,59 +93,57 @@ func createInvite(w http.ResponseWriter, r *http.Request) {
email := fmt.Sprintf("%08d@example.com", seq)
expire := time.Now().Add(time.Hour * 24 * 7)
- if false {
- // legacy_object
- key := fmt.Sprintf("invitation:uid:2:invited:%s", email)
- _, err = db.Exec(` INSERT INTO public.legacy_object(_key, "type", "expireAt") VALUES($1, 'string', null)`, key)
- if err != nil {
- w.Write([]byte(err.Error()))
- return
- }
+ // legacy_object
+ key := fmt.Sprintf("invitation:uid:2:invited:%s", email)
+ _, err = db.Exec(` INSERT INTO public.legacy_object(_key, "type", "expireAt") VALUES($1, 'string', null)`, key)
+ if err != nil {
+ w.Write([]byte(err.Error()))
+ return
+ }
- key = fmt.Sprintf("invitation:invited:%s", email)
- _, err = db.Exec(` INSERT INTO public.legacy_object(_key, "type", "expireAt") VALUES($1, 'set', null)`, key)
- if err != nil {
- w.Write([]byte(err.Error()))
- return
- }
+ key = fmt.Sprintf("invitation:invited:%s", email)
+ _, err = db.Exec(` INSERT INTO public.legacy_object(_key, "type", "expireAt") VALUES($1, 'set', null)`, key)
+ if err != nil {
+ w.Write([]byte(err.Error()))
+ return
+ }
- key = fmt.Sprintf("invitation:token:%s", newUUID)
- _, err = db.Exec(` INSERT INTO public.legacy_object(_key, "type", "expireAt") VALUES($1, 'hash', $2)`, key, expire)
- if err != nil {
- w.Write([]byte(err.Error()))
- return
- }
+ key = fmt.Sprintf("invitation:token:%s", newUUID)
+ _, err = db.Exec(` INSERT INTO public.legacy_object(_key, "type", "expireAt") VALUES($1, 'hash', $2)`, key, expire)
+ if err != nil {
+ w.Write([]byte(err.Error()))
+ return
+ }
- // legacy_hash
- key = fmt.Sprintf("invitation:token:%s", newUUID)
- data := fmt.Sprintf(`{"email": "%s", "token": "%s", "inviter": 2, "groupsToJoin": "[]"}`, email, newUUID)
- _, err = db.Exec(` INSERT INTO public.legacy_hash(_key, "data", "type") VALUES($1, $2, 'hash')`, key, data)
- if err != nil {
- w.Write([]byte(err.Error()))
- return
- }
+ // legacy_hash
+ key = fmt.Sprintf("invitation:token:%s", newUUID)
+ data := fmt.Sprintf(`{"email": "%s", "token": "%s", "inviter": 2, "groupsToJoin": "[]"}`, email, newUUID)
+ _, err = db.Exec(` INSERT INTO public.legacy_hash(_key, "data", "type") VALUES($1, $2, 'hash')`, key, data)
+ if err != nil {
+ w.Write([]byte(err.Error()))
+ return
+ }
- // legacy_set
- key = "invitation:uid:2"
- _, err = db.Exec(` INSERT INTO public.legacy_set(_key, "member", "type") VALUES($1, $2, 'set')`, key, email)
- if err != nil {
- w.Write([]byte(err.Error()))
- return
- }
+ // legacy_set
+ key = fmt.Sprintf("invitation:uid:2")
+ _, err = db.Exec(` INSERT INTO public.legacy_set(_key, "member", "type") VALUES($1, $2, 'set')`, key, email)
+ if err != nil {
+ w.Write([]byte(err.Error()))
+ return
+ }
- key = fmt.Sprintf("invitation:invited:%s", email)
- _, err = db.Exec(` INSERT INTO public.legacy_set(_key, "member", "type") VALUES($1, $2, 'set')`, key, newUUID)
- if err != nil {
- w.Write([]byte(err.Error()))
- return
- }
+ key = fmt.Sprintf("invitation:invited:%s", email)
+ _, err = db.Exec(` INSERT INTO public.legacy_set(_key, "member", "type") VALUES($1, $2, 'set')`, key, newUUID)
+ if err != nil {
+ w.Write([]byte(err.Error()))
+ return
+ }
- key = fmt.Sprintf("invitation:uid:2:invited:%s", email)
- _, err = db.Exec(` INSERT INTO public.legacy_string(_key, "data", "type") VALUES($1, $2, 'string')`, key, newUUID)
- if err != nil {
- w.Write([]byte(err.Error()))
- return
- }
+ key = fmt.Sprintf("invitation:uid:2:invited:%s", email)
+ _, err = db.Exec(` INSERT INTO public.legacy_string(_key, "data", "type") VALUES($1, $2, 'string')`, key, newUUID)
+ if err != nil {
+ w.Write([]byte(err.Error()))
+ return
}
j, _ := json.Marshal(struct {
@@ -225,4 +152,6 @@ func createInvite(w http.ResponseWriter, r *http.Request) {
fmt.Sprintf("https://%s/register?token=%s", flagDomain, newUUID),
})
w.Write(j)
+
+ return
}