aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/parser/main.go12
-rw-r--r--cmd/web/handlers/blog.go34
-rw-r--r--cmd/web/handlers/fs.go22
-rw-r--r--cmd/web/handlers/login.go26
-rw-r--r--cmd/web/handlers/routes.go18
-rw-r--r--cmd/web/main.go8
-rw-r--r--cmd/web/middleware/auth.go66
-rw-r--r--cmd/web/types/application.go9
8 files changed, 99 insertions, 96 deletions
diff --git a/cmd/parser/main.go b/cmd/parser/main.go
index 44fca42..0ef8b4d 100644
--- a/cmd/parser/main.go
+++ b/cmd/parser/main.go
@@ -35,7 +35,7 @@ func mdServe(w http.ResponseWriter, r *http.Request) {
writeErr(w, http.StatusMethodNotAllowed, "Method Not Allowed")
return
}
-
+
err := r.ParseMultipartForm(4 << 20)
if err != nil {
writeErr(w, http.StatusUnprocessableEntity, fmt.Sprintf("Failed to retrieve form data: %v", err))
@@ -48,25 +48,25 @@ func mdServe(w http.ResponseWriter, r *http.Request) {
userId := r.Form.Get("user_id")
shouldCreateShort := len(md) > 255
-
+
err = mdParser.Convert([]byte(md), &longBuf)
if err != nil {
writeErr(w, http.StatusUnprocessableEntity, fmt.Sprintf("Failed to compile markdown into html: %v", err))
return
}
-
+
var shortMd string
if shouldCreateShort {
shortMd = md[0:249]
err = mdParser.Convert([]byte(shortMd), &shortBuf)
-
+
if err != nil {
writeErr(w, http.StatusUnprocessableEntity, fmt.Sprintf("Failed to compile markdown into html: %v", err))
return
}
}
- ctx, cancel := context.WithTimeout(r.Context(), 5 * time.Second)
+ ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second)
defer cancel()
tx, err := db.BeginTx(ctx, nil)
@@ -155,7 +155,7 @@ func main() {
}
srv := &http.Server{
- Addr: fmt.Sprintf(":%d", appPort),
+ Addr: fmt.Sprintf(":%d", appPort),
Handler: router,
}
diff --git a/cmd/web/handlers/blog.go b/cmd/web/handlers/blog.go
index 8d9a811..14a0abe 100644
--- a/cmd/web/handlers/blog.go
+++ b/cmd/web/handlers/blog.go
@@ -16,14 +16,14 @@ import (
)
type blogContext struct {
- err *log.Logger
- db *sql.DB
+ err *log.Logger
+ db *sql.DB
- Post models.Post
- Rows []models.Post
- Name string
- IsAuth bool
- Offset int
+ Post models.Post
+ Rows []models.Post
+ Name string
+ IsAuth bool
+ Offset int
}
func (ctx *blogContext) viewPost(w http.ResponseWriter, r *http.Request) {
@@ -56,7 +56,7 @@ func (ctx *blogContext) viewPost(w http.ResponseWriter, r *http.Request) {
}
p.FormattedTime = p.Time.Format(time.ANSIC)
- ctx.Post = p
+ ctx.Post = p
files := []string{
"ui/html/base.tmpl.html",
@@ -113,7 +113,7 @@ func (ctx *blogContext) post(w http.ResponseWriter, r *http.Request) {
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte("Internal Error"))
- return;
+ return
}
err = r.ParseMultipartForm(4 << 20)
@@ -129,7 +129,7 @@ func (ctx *blogContext) post(w http.ResponseWriter, r *http.Request) {
writer := multipart.NewWriter(&buffer)
writer.SetBoundary(boundary)
writer.WriteField("user_id", strconv.Itoa(int(userId)))
-
+
part, err := writer.CreateFormField("raw")
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
@@ -137,7 +137,7 @@ func (ctx *blogContext) post(w http.ResponseWriter, r *http.Request) {
ctx.err.Printf("Could not create form field: %v\n", err)
return
}
-
+
_, err = part.Write([]byte(r.Form.Get("raw")))
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
@@ -148,11 +148,11 @@ func (ctx *blogContext) post(w http.ResponseWriter, r *http.Request) {
writer.Close()
- proxyReq, err := http.NewRequest(r.Method, "http://127.0.0.1:" + os.Getenv("parser_port"), bytes.NewReader(buffer.Bytes()))
+ proxyReq, err := http.NewRequest(r.Method, "http://127.0.0.1:"+os.Getenv("parser_port"), bytes.NewReader(buffer.Bytes()))
proxyReq.Header = make(http.Header)
for key, val := range r.Header {
if key != "Content-Length" {
- proxyReq.Header[key] = val;
+ proxyReq.Header[key] = val
}
}
@@ -190,10 +190,10 @@ func (ctx *blogContext) index(w http.ResponseWriter, r *http.Request) {
http.NotFound(w, r)
return
}
-
+
_, err := r.Cookie("paterissa_session_token")
if err == nil {
- ctx.IsAuth = true;
+ ctx.IsAuth = true
}
ctx.Offset, _ = strconv.Atoi(r.URL.Query().Get("offset"))
@@ -230,10 +230,10 @@ func (ctx *blogContext) index(w http.ResponseWriter, r *http.Request) {
funcMap := template.FuncMap{
"add": func(a int, b int) int {
- return a + b;
+ return a + b
},
"sub": func(a int, b int) int {
- return a - b;
+ return a - b
},
}
diff --git a/cmd/web/handlers/fs.go b/cmd/web/handlers/fs.go
index 96f11d0..1a68e35 100644
--- a/cmd/web/handlers/fs.go
+++ b/cmd/web/handlers/fs.go
@@ -9,9 +9,9 @@ import (
)
type fsContext struct {
- err *log.Logger
- path string
- contentType string
+ err *log.Logger
+ path string
+ contentType string
}
func (ctx *fsContext) readdir(w http.ResponseWriter, r *http.Request) {
@@ -45,14 +45,14 @@ func (ctx *fsContext) get(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", ctx.contentType)
} else {
switch filepath.Ext(name) {
- case ".css":
- w.Header().Set("Content-Type", "text/css")
- case ".js":
- w.Header().Set("Content-Type", "text/javascript")
- case ".svg":
- w.Header().Set("Content-Type", "image/svg+xml")
- case ".png":
- w.Header().Set("Content-Type", "image/png")
+ case ".css":
+ w.Header().Set("Content-Type", "text/css")
+ case ".js":
+ w.Header().Set("Content-Type", "text/javascript")
+ case ".svg":
+ w.Header().Set("Content-Type", "image/svg+xml")
+ case ".png":
+ w.Header().Set("Content-Type", "image/png")
}
}
diff --git a/cmd/web/handlers/login.go b/cmd/web/handlers/login.go
index f912977..3b1ee92 100644
--- a/cmd/web/handlers/login.go
+++ b/cmd/web/handlers/login.go
@@ -15,7 +15,7 @@ import (
type loginContext struct {
err *log.Logger
- db *sql.DB
+ db *sql.DB
}
func (ctx *loginContext) index(w http.ResponseWriter, r *http.Request) {
@@ -82,7 +82,7 @@ func (ctx *loginContext) login(w http.ResponseWriter, r *http.Request) {
ctx.err.Printf("Failed to retrieve user info from DB: %v\n", err)
return
}
-
+
passOneErr := bcrypt.CompareHashAndPassword([]byte(u.PassOne), []byte(passOne))
passTwoErr := bcrypt.CompareHashAndPassword([]byte(u.PassTwo), []byte(passTwo))
if passOneErr != nil || passTwoErr != nil {
@@ -92,13 +92,13 @@ func (ctx *loginContext) login(w http.ResponseWriter, r *http.Request) {
}
cookie := http.Cookie{
- Name: "paterissa_session_token",
- Value: uuid.New().String(),
- Expires: time.Now().AddDate(0, 0, 1),
- Path: "/",
- Domain: os.Getenv("serv"),
+ Name: "paterissa_session_token",
+ Value: uuid.New().String(),
+ Expires: time.Now().AddDate(0, 0, 1),
+ Path: "/",
+ Domain: os.Getenv("serv"),
HttpOnly: true,
- Secure: true,
+ Secure: true,
}
commit, err := ctx.db.Prepare("INSERT INTO cookies (content, user_id, expiration) VALUES ($1, $2, $3);")
@@ -147,11 +147,11 @@ func (ctx *loginContext) logout(w http.ResponseWriter, r *http.Request) {
}
cookie = &http.Cookie{
- Name: "paterissa_session_token",
- Value: "",
- Path: "/",
- Domain: os.Getenv("serv"),
- MaxAge: -1,
+ Name: "paterissa_session_token",
+ Value: "",
+ Path: "/",
+ Domain: os.Getenv("serv"),
+ MaxAge: -1,
HttpOnly: true,
}
diff --git a/cmd/web/handlers/routes.go b/cmd/web/handlers/routes.go
index a4c9c09..4b80615 100644
--- a/cmd/web/handlers/routes.go
+++ b/cmd/web/handlers/routes.go
@@ -11,25 +11,25 @@ import (
func RegisterEndpoints(app types.Application, db *sql.DB) *http.ServeMux {
auth := middleware.AuthMiddleware{
Err: app.Err,
- Db: db,
+ Db: db,
}
blog := blogContext{
- err: app.Err,
- db: db,
+ err: app.Err,
+ db: db,
Name: app.Env.Webmaster,
}
login := loginContext{
err: app.Err,
- db: db,
+ db: db,
}
audio := fsContext{
- err: app.Err,
- path: app.AudioDir,
+ err: app.Err,
+ path: app.AudioDir,
contentType: "audio/mpeg",
}
static := fsContext{
- err: app.Err,
+ err: app.Err,
path: "static",
}
@@ -46,5 +46,9 @@ func RegisterEndpoints(app types.Application, db *sql.DB) *http.ServeMux {
blogRouter.HandleFunc("/static/get", static.get)
+ blogRouter.HandleFunc("/favicon.ico", func(w http.ResponseWriter, r *http.Request) {
+ http.ServeFile(w, r, "/static/favicon.ico")
+ })
+
return blogRouter
}
diff --git a/cmd/web/main.go b/cmd/web/main.go
index 0b35ff2..00286b8 100644
--- a/cmd/web/main.go
+++ b/cmd/web/main.go
@@ -20,8 +20,8 @@ import (
func main() {
var app types.Application
- app.Err = log.New(os.Stderr, "ERROR\t", log.Ldate | log.Ltime)
- app.Info = log.New(os.Stdout, "INFO\t", log.Ldate | log.Ltime)
+ app.Err = log.New(os.Stderr, "ERROR\t", log.Ldate|log.Ltime)
+ app.Info = log.New(os.Stdout, "INFO\t", log.Ldate|log.Ltime)
err := godotenv.Load()
if err != nil {
@@ -62,9 +62,9 @@ func main() {
router := handlers.RegisterEndpoints(app, db)
srv := &http.Server{
- Addr: fmt.Sprintf(":%d", app.Env.AppPort),
+ Addr: fmt.Sprintf(":%d", app.Env.AppPort),
ErrorLog: app.Err,
- Handler: router,
+ Handler: router,
}
err = srv.ListenAndServe()
diff --git a/cmd/web/middleware/auth.go b/cmd/web/middleware/auth.go
index 255f40f..e396e86 100644
--- a/cmd/web/middleware/auth.go
+++ b/cmd/web/middleware/auth.go
@@ -10,12 +10,12 @@ import (
type AuthMiddleware struct {
Err *log.Logger
- Db *sql.DB
+ Db *sql.DB
}
func (auth *AuthMiddleware) CheckAndInvalidate(next http.HandlerFunc) http.HandlerFunc {
return http.HandlerFunc(
- func (w http.ResponseWriter, r *http.Request) {
+ func(w http.ResponseWriter, r *http.Request) {
cookie, err := r.Cookie("paterissa_session_token")
if err != nil {
next.ServeHTTP(w, r)
@@ -25,11 +25,11 @@ func (auth *AuthMiddleware) CheckAndInvalidate(next http.HandlerFunc) http.Handl
stmt, err := auth.Db.Prepare("SELECT * FROM cookies WHERE content = $1;")
if err != nil {
cookie = &http.Cookie{
- Name: "paterissa_session_token",
- Value: "",
- Path: "/",
- Domain: os.Getenv("serv"),
- MaxAge: -1,
+ Name: "paterissa_session_token",
+ Value: "",
+ Path: "/",
+ Domain: os.Getenv("serv"),
+ MaxAge: -1,
HttpOnly: true,
}
http.SetCookie(w, cookie)
@@ -47,11 +47,11 @@ func (auth *AuthMiddleware) CheckAndInvalidate(next http.HandlerFunc) http.Handl
err = row.Scan(&id, &content, &userId, &expiration)
if err != nil {
cookie = &http.Cookie{
- Name: "paterissa_session_token",
- Value: "",
- Path: "/",
- Domain: os.Getenv("serv"),
- MaxAge: -1,
+ Name: "paterissa_session_token",
+ Value: "",
+ Path: "/",
+ Domain: os.Getenv("serv"),
+ MaxAge: -1,
HttpOnly: true,
}
http.SetCookie(w, cookie)
@@ -61,11 +61,11 @@ func (auth *AuthMiddleware) CheckAndInvalidate(next http.HandlerFunc) http.Handl
if time.Now().After(expiration) {
cookie = &http.Cookie{
- Name: "paterissa_session_token",
- Value: "",
- Path: "/",
- Domain: os.Getenv("serv"),
- MaxAge: -1,
+ Name: "paterissa_session_token",
+ Value: "",
+ Path: "/",
+ Domain: os.Getenv("serv"),
+ MaxAge: -1,
HttpOnly: true,
}
http.SetCookie(w, cookie)
@@ -80,7 +80,7 @@ func (auth *AuthMiddleware) CheckAndInvalidate(next http.HandlerFunc) http.Handl
func (auth *AuthMiddleware) Resolve(next http.HandlerFunc) http.HandlerFunc {
return http.HandlerFunc(
- func (w http.ResponseWriter, r *http.Request) {
+ func(w http.ResponseWriter, r *http.Request) {
cookie, err := r.Cookie("paterissa_session_token")
if err != nil {
w.WriteHeader(http.StatusUnauthorized)
@@ -91,11 +91,11 @@ func (auth *AuthMiddleware) Resolve(next http.HandlerFunc) http.HandlerFunc {
stmt, err := auth.Db.Prepare("SELECT * FROM cookies WHERE content = $1;")
if err != nil {
cookie = &http.Cookie{
- Name: "paterissa_session_token",
- Value: "",
- Path: "/",
- Domain: os.Getenv("serv"),
- MaxAge: -1,
+ Name: "paterissa_session_token",
+ Value: "",
+ Path: "/",
+ Domain: os.Getenv("serv"),
+ MaxAge: -1,
HttpOnly: true,
}
http.SetCookie(w, cookie)
@@ -116,11 +116,11 @@ func (auth *AuthMiddleware) Resolve(next http.HandlerFunc) http.HandlerFunc {
err = row.Scan(&id, &content, &userId, &expiration)
if err != nil {
cookie = &http.Cookie{
- Name: "paterissa_session_token",
- Value: "",
- Path: "/",
- Domain: os.Getenv("serv"),
- MaxAge: -1,
+ Name: "paterissa_session_token",
+ Value: "",
+ Path: "/",
+ Domain: os.Getenv("serv"),
+ MaxAge: -1,
HttpOnly: true,
}
http.SetCookie(w, cookie)
@@ -133,11 +133,11 @@ func (auth *AuthMiddleware) Resolve(next http.HandlerFunc) http.HandlerFunc {
if time.Now().After(expiration) {
cookie = &http.Cookie{
- Name: "paterissa_session_token",
- Value: "",
- Path: "/",
- Domain: os.Getenv("serv"),
- MaxAge: -1,
+ Name: "paterissa_session_token",
+ Value: "",
+ Path: "/",
+ Domain: os.Getenv("serv"),
+ MaxAge: -1,
HttpOnly: true,
}
http.SetCookie(w, cookie)
diff --git a/cmd/web/types/application.go b/cmd/web/types/application.go
index 8bc6a73..8ded626 100644
--- a/cmd/web/types/application.go
+++ b/cmd/web/types/application.go
@@ -7,11 +7,10 @@ import (
)
type Application struct {
- Err *log.Logger
- Info *log.Logger
+ Err *log.Logger
+ Info *log.Logger
- AudioDir string
+ AudioDir string
- Env context.Environment
+ Env context.Environment
}
-