summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatt Arnold <matt@thegnuguru.org>2023-07-11 19:17:32 -0400
committerMatt Arnold <matt@thegnuguru.org>2023-07-11 19:17:32 -0400
commitb6e5f0c7b76950a29f7ffef3a6ceae951dbd02a4 (patch)
treebb889d46ee7fdef0c6eec01f055c166109b59a6a
parentf83e2af8ad232a744d708295f919e3df457960c1 (diff)
Restructure
-rw-r--r--activitypub.go4
-rw-r--r--blog-backend.log0
-rw-r--r--cmd/setupdb/main.go46
-rw-r--r--config.go5
-rw-r--r--main.go43
-rw-r--r--utils/utils.go (renamed from utils.go)18
6 files changed, 81 insertions, 35 deletions
diff --git a/activitypub.go b/activitypub.go
index 64c644a..4c9080a 100644
--- a/activitypub.go
+++ b/activitypub.go
@@ -45,18 +45,16 @@ var user = `{
 func webfingeRequest(w http.ResponseWriter, r *http.Request) {
 	w.Header().Set("Content-Type", "application/activity+json")
 	io.WriteString(w, apActor)
-	return
+
 }
 
 func serveUser(w http.ResponseWriter, r *http.Request) {
 	w.Header().Set("Content-Type", "application/activity+json")
 	io.WriteString(w, user)
-	return
 
 }
 
 func serveProfileHtml(w http.ResponseWriter, r *http.Request) {
 	http.Redirect(w, r, "https://treefort.piusbird.space/index", http.StatusMovedPermanently)
-	return
 
 }
diff --git a/blog-backend.log b/blog-backend.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/blog-backend.log
diff --git a/cmd/setupdb/main.go b/cmd/setupdb/main.go
new file mode 100644
index 0000000..6535c21
--- /dev/null
+++ b/cmd/setupdb/main.go
@@ -0,0 +1,46 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"os"
+
+	"gorm.io/driver/mysql"
+	"gorm.io/gorm"
+	"piusbird.space/dragonsroost/models"
+	"piusbird.space/dragonsroost/utils"
+)
+
+func main() {
+	dsn := os.Getenv("DSN")
+	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
+	if err != nil {
+		panic("Database connection error" + err.Error())
+	}
+	log.Println("Create Tables")
+	db.AutoMigrate(&models.Key{})
+	db.AutoMigrate(&models.Page{})
+	db.AutoMigrate(&models.Post{})
+	db.AutoMigrate(&models.LogEntry{})
+	posts, err := utils.PostsToStructs()
+	if err != nil {
+		panic("Database Failure" + err.Error())
+	}
+	for p := posts.Front(); p != nil; p = p.Next() {
+		vl := p.Value.(models.Post)
+		db.Create(&vl)
+
+	}
+	pages, err := utils.PagesToStructs()
+	for p := pages.Front(); p != nil; p = p.Next() {
+		vl := p.Value.(models.Page)
+		db.Create(&vl)
+
+	}
+	fmt.Println("DB Import successful")
+	var testActor models.Key
+	testActor.Key = utils.TestKey
+	testActor.User = "Test"
+	db.Create(&testActor)
+	return
+}
diff --git a/config.go b/config.go
new file mode 100644
index 0000000..61c1623
--- /dev/null
+++ b/config.go
@@ -0,0 +1,5 @@
+package main
+
+var dsn = "web:changethis@unix(/var/lib/mysql/mysql.sock)/website?charset=utf8mb4&parseTime=True&loc=Local"
+var timelayout = "2006-01-02"
+var RSS_NUMPOST int = 15
diff --git a/main.go b/main.go
index 11c740b..17fba3b 100644
--- a/main.go
+++ b/main.go
@@ -31,18 +31,19 @@ import (
 	"gorm.io/driver/mysql"
 	"gorm.io/gorm"
 	"piusbird.space/dragonsroost/models"
+	"piusbird.space/dragonsroost/utils"
 )
 
-func renderMarkdownPage(pagename string) (Page, error) {
+func renderMarkdownPage(pagename string) (utils.Page, error) {
 
 	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
 	if err != nil {
-		return Page{}, err
+		return utils.Page{}, err
 	}
 	var result models.Page
 	db.Where("short_name = ?", pagename).First(&result)
 	if result.Text == nil {
-		return Page{}, errors.New("Not found in db")
+		return utils.Page{}, errors.New("not found in db")
 
 	}
 	markdown := goldmark.New(
@@ -56,12 +57,13 @@ func renderMarkdownPage(pagename string) (Page, error) {
 	var buf bytes.Buffer
 	context := parser.NewContext()
 	if err := markdown.Convert(result.Text, &buf, parser.WithContext(context)); err != nil {
-		return Page{}, err
+		ret := utils.Page{}
+		return ret, err
 	}
 	metaData := meta.Get(context)
 	title := metaData["Title"]
 	render := buf.String()
-	retPage := Page{}
+	retPage := utils.Page{}
 	retPage.Title = title.(string)
 	retPage.Html = render
 	return retPage, nil
@@ -151,7 +153,7 @@ func rssFeed(w http.ResponseWriter, req *http.Request) {
 
 		feedItems = append(feedItems,
 			&feeds.Item{
-				Id:          string(item.ID),
+				Id:          string(rune(item.ID)),
 				Title:       item.Title,
 				Link:        &feeds.Link{Href: finalUrl},
 				Description: buf.String(),
@@ -182,7 +184,6 @@ func rssFeed(w http.ResponseWriter, req *http.Request) {
 
 	}
 
-	return
 }
 
 var tplBlogLanding = pongo2.Must(pongo2.FromFile("templates/blog.html"))
@@ -203,12 +204,12 @@ func blogLanding(w http.ResponseWriter, req *http.Request) {
 		http.Error(w, result.Error.Error(), http.StatusBadRequest)
 		return
 	}
-	var newPost []PostMeta
+	var newPost []utils.PostMeta
 	// You might be wondering oh why doesn't he just put the url in the db
 	// STATELESSNESS is the answer
 	for _, post := range allPost {
 		finalUrl, _ := url.JoinPath(baseURL, "/blog/", post.Slug)
-		pm := PostMeta{}
+		pm := utils.PostMeta{}
 		pm.Date = post.CreatedAt.Format(time.RFC1123)
 		pm.Title = post.Title
 		tmp := "Lol"
@@ -251,7 +252,7 @@ func getBlogPost(w http.ResponseWriter, req *http.Request) {
 		http.Error(w, err.Error(), http.StatusBadRequest)
 		return
 	}
-	var retPage Page
+	var retPage utils.Page
 	retPage.Title = result.Title
 	retPage.Html = buf.String()
 	tplBlog.ExecuteWriter(pongo2.Context{"title": retPage.Title, "post": retPage, "metadata": result}, w)
@@ -273,7 +274,7 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 	var faildUploadLog models.LogEntry
-	faildUploadLog.Type = typeFailed
+	faildUploadLog.Type = utils.TypeFailed
 	faildUploadLog.ForUser = string(r.RemoteAddr)
 	faildUploadLog.Affected = "EUSER"
 	actor := r.Header.Get("X-Username")
@@ -341,7 +342,7 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
-	var upload JsonUpload
+	var upload utils.JsonUpload
 	err = json.Unmarshal(raw_json, &upload)
 	if err != nil {
 		faildUploadLog.Affected = "EIOJSON"
@@ -355,13 +356,13 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) {
 
 	oType, _ := strconv.ParseInt(upload.Type, 10, 16)
 	logTransact.Type = int16(oType)
-	if oType == Undefined {
+	if oType == utils.Undefined {
 		faildUploadLog.Affected = "EWRONGVERB"
 		db.Create(&faildUploadLog)
 		http.Error(w, "Undefined Type", http.StatusForbidden)
 		return
 	}
-	if oType == typePost {
+	if oType == utils.TypePost {
 		var newPost models.Post
 		var oldPost models.Post
 		newPost.Title = upload.Title
@@ -376,7 +377,7 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) {
 			logTransact.Affected = newPost.Slug
 			db.Create(&logTransact)
 			w.Header().Set("Content-Type", "text/plain")
-			io.WriteString(w, "ok: "+string(result.RowsAffected))
+			io.WriteString(w, "ok: "+string(rune(result.RowsAffected)))
 
 			return
 
@@ -392,11 +393,11 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) {
 		logTransact.Affected = oldPost.Slug
 		db.Create(&logTransact)
 		w.Header().Set("Content-Type", "text/plain")
-		io.WriteString(w, "ok: "+string(result.RowsAffected)+"\n")
+		io.WriteString(w, "ok: "+string(rune(result.RowsAffected))+"\n")
 		return
 
 	}
-	if oType == typePage {
+	if oType == utils.TypePage {
 		var newPost models.Page
 		var oldPost models.Page
 		newPost.Title = upload.Title
@@ -411,7 +412,7 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) {
 			logTransact.Affected = newPost.ShortName
 			db.Create(&logTransact)
 			w.Header().Set("Content-Type", "text/plain")
-			io.WriteString(w, "ok: "+string(result.RowsAffected)+"\n")
+			io.WriteString(w, "ok: "+string(rune(result.RowsAffected))+"\n")
 			return
 
 		}
@@ -429,7 +430,7 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) {
 		logTransact.Affected = oldPost.ShortName
 		db.Create(&logTransact)
 		w.Header().Set("Content-Type", "text/plain")
-		io.WriteString(w, "ok: "+string(result.RowsAffected)+"\n")
+		io.WriteString(w, "ok: "+string(rune(result.RowsAffected))+"\n")
 		return
 
 	}
@@ -442,7 +443,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 	var faildUploadLog models.LogEntry
-	faildUploadLog.Type = typeFailed
+	faildUploadLog.Type = utils.TypeFailed
 	faildUploadLog.ForUser = string(r.RemoteAddr)
 	faildUploadLog.Affected = "EUSER"
 	actor := r.Header.Get("X-Username")
@@ -536,7 +537,6 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
 	fh.Close()
 	w.WriteHeader(http.StatusAccepted)
 	io.WriteString(w, "Ok\n")
-	return
 
 }
 func main() {
@@ -547,7 +547,6 @@ func main() {
 	r.HandleFunc("/api/upload", uploadHandler).Methods("POST")
 	r.HandleFunc("/feeds/{type}", rssFeed)
 
-	r.HandleFunc("/setup/", setupDatabase)
 	blogroute := r.PathPrefix("/blog").Subrouter()
 	blogroute.HandleFunc("/", blogLanding)
 	blogroute.HandleFunc("/{slug}", getBlogPost)
diff --git a/utils.go b/utils/utils.go
index 9c1fa7a..29c63ef 100644
--- a/utils.go
+++ b/utils/utils.go
@@ -1,4 +1,4 @@
-package main
+package utils
 
 import (
 	"bytes"
@@ -17,9 +17,6 @@ import (
 	"piusbird.space/dragonsroost/models"
 )
 
-var dsn = "web:changethis@unix(/var/lib/mysql/mysql.sock)/website?charset=utf8mb4&parseTime=True&loc=Local"
-var timelayout = "2006-01-02"
-
 type Page struct {
 	Title string
 	Html  string
@@ -34,9 +31,9 @@ type EnityType int16
 
 const (
 	Undefined  = 0
-	typePage   = 1
-	typePost   = 2
-	typeFailed = 3
+	TypePage   = 1
+	TypePost   = 2
+	TypeFailed = 3
 )
 const RSS_NUMPOST = 10
 
@@ -47,7 +44,8 @@ type JsonUpload struct {
 	Body  string
 }
 
-var testKey = "nR6FC9GHk+olScO5FPpUYoppgo95SHvd5UJKKFt4Crs="
+var timelayout = "2006-01-02"
+var TestKey = "nR6FC9GHk+olScO5FPpUYoppgo95SHvd5UJKKFt4Crs="
 
 type PostMetaByDate []PostMeta
 
@@ -58,7 +56,7 @@ func (a PostMetaByDate) Less(i, j int) bool {
 	timeJ, _ := time.Parse(a[j].Date, time.RFC1123)
 	return timeI.Before(timeJ)
 }
-func postsToStructs() (list.List, error) {
+func PostsToStructs() (list.List, error) {
 	files, err := ioutil.ReadDir("content/posts")
 	if err != nil {
 		return *list.New(), err
@@ -110,7 +108,7 @@ func postsToStructs() (list.List, error) {
 	return *postList, nil
 }
 
-func pagesToStructs() (list.List, error) {
+func PagesToStructs() (list.List, error) {
 	files, err := ioutil.ReadDir("content/pages")
 	if err != nil {
 		return *list.New(), err