diff --git a/src/admin.go b/src/admin.go
index 35d1614..3251aa7 100644
--- a/src/admin.go
+++ b/src/admin.go
@@ -1,5 +1,5 @@
/* admin.go
- *
+ *
* Here is where all the neccesary functions for managing episodes
* live, e.g adding removing etc.
*/
@@ -7,12 +7,12 @@
package main
import (
- "net/http"
"fmt"
- "strings"
- "io/ioutil"
"io"
+ "io/ioutil"
+ "net/http"
"os" // ioOS?
+ "strings"
)
// Write custom CSS to disk or send it back to the client if GET
@@ -23,18 +23,18 @@ func CustomCss(w http.ResponseWriter, r *http.Request) {
filename := "custom.css"
- err := ioutil.WriteFile("./assets/static/" + filename, []byte(css), 0644)
- if err != nil {
+ err := ioutil.WriteFile("./assets/static/"+filename, []byte(css), 0644)
+ if err != nil {
w.Write([]byte(""))
-
- panic(err)
+
+ panic(err)
} else {
- w.Write([]byte(""))
+ w.Write([]byte(""))
}
} else {
- css,err := ioutil.ReadFile("./assets/static/custom.css")
+ css, err := ioutil.ReadFile("./assets/static/custom.css")
if err != nil {
- panic (err)
+ panic(err)
} else {
w.Write(css)
}
@@ -49,39 +49,39 @@ func CreateEpisode(w http.ResponseWriter, r *http.Request) {
date := strings.Join(r.Form["date"], "")
title := strings.Join(r.Form["title"], "")
- name := fmt.Sprintf("%v_%v", date, title)
+ name := fmt.Sprintf("%v_%v", date, title)
filename := name + ".mp3"
shownotes := name + "_SHOWNOTES.md"
fmt.Println(name)
description := strings.Join(r.Form["description"], "")
fmt.Println(description)
- // Finish building filenames
+ // Finish building filenames
- err := ioutil.WriteFile("./podcasts/" + shownotes, []byte(description), 0644)
- if err != nil {
+ err := ioutil.WriteFile("./podcasts/"+shownotes, []byte(description), 0644)
+ if err != nil {
w.Write([]byte(""))
- fmt.Println(err)
- }
+ fmt.Println(err)
+ }
file, handler, err := r.FormFile("file")
- if err != nil {
+ if err != nil {
w.Write([]byte(""))
- fmt.Println(err)
- return
- }
- defer file.Close()
- fmt.Println(handler.Header)
- f, err := os.OpenFile("./podcasts/"+filename, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
+ fmt.Println(err)
+ return
+ }
+ defer file.Close()
+ fmt.Println(handler.Header)
+ f, err := os.OpenFile("./podcasts/"+filename, os.O_WRONLY|os.O_CREATE, 0666)
+ if err != nil {
w.Write([]byte(""))
- fmt.Println(err)
- return
- }
- defer f.Close()
- io.Copy(f, file)
- w.Write([]byte(""))
+ fmt.Println(err)
+ return
+ }
+ defer f.Close()
+ io.Copy(f, file)
+ w.Write([]byte(""))
}
}
@@ -90,7 +90,7 @@ func RemoveEpisode(w http.ResponseWriter, r *http.Request) {
// Remove MP3 first
r.ParseMultipartForm(32 << 20)
- episode := strings.Join(r.Form["episode"],"")
+ episode := strings.Join(r.Form["episode"], "")
os.Remove(episode)
sn := strings.Replace(episode, ".mp3", "_SHOWNOTES.md", 2)
os.Remove(sn)
diff --git a/src/generate_rss.go b/src/generate_rss.go
index 0d4ccf9..e05eba4 100644
--- a/src/generate_rss.go
+++ b/src/generate_rss.go
@@ -1,9 +1,9 @@
/* generate_rss.go
- *
- * This file contains functions for monitoring for file changes and
+ *
+ * This file contains functions for monitoring for file changes and
* regenerating the RSS feed accordingly, pulling in shownote files
* and configuration parameters
- */
+ */
package main
@@ -24,7 +24,7 @@ func watch() {
viper.SetConfigName("config")
viper.AddConfigPath(".")
err := viper.ReadInConfig() // Find and read the config file
- if err != nil { // Handle errors reading the config file
+ if err != nil { // Handle errors reading the config file
panic(fmt.Errorf("Fatal error config file: %s \n", err))
}
watcher, err := fsnotify.NewWatcher()
@@ -63,14 +63,13 @@ func watch() {
<-done
}
-
// Called when a file has been created / changed, uses gorilla feeds
// fork to add items to feed object
func generate_rss() {
viper.SetConfigName("config")
viper.AddConfigPath(".")
err := viper.ReadInConfig() // Find and read the config file
- if err != nil { // Handle errors reading the config file
+ if err != nil { // Handle errors reading the config file
panic(fmt.Errorf("Fatal error config file: %s \n", err))
}
now := time.Now()
@@ -84,7 +83,7 @@ func generate_rss() {
Title: viper.GetString("Name"),
Link: &feeds.Link{Href: podcasturl},
Description: viper.GetString("Description"),
- Author: &feeds.Author{Name: viper.GetString("Host"), Email:viper.GetString("Email")},
+ Author: &feeds.Author{Name: viper.GetString("Host"), Email: viper.GetString("Email")},
Created: now,
Image: &feeds.Image{Url: viper.GetString("Image")},
}
@@ -94,17 +93,17 @@ func generate_rss() {
s := strings.Split(file.Name(), "_")
t := strings.Split(s[1], ".")
title := t[0]
- description,err := ioutil.ReadFile("podcasts/" + strings.Replace(file.Name(), ".mp3", "_SHOWNOTES.md", 2))
+ description, err := ioutil.ReadFile("podcasts/" + strings.Replace(file.Name(), ".mp3", "_SHOWNOTES.md", 2))
if err != nil {
- log.Fatal(err)
- }
+ log.Fatal(err)
+ }
date, err := time.Parse("2006-01-02", s[0])
if err != nil {
log.Fatal(err)
}
size := fmt.Sprintf("%d", file.Size())
link := podcasturl + "/download/" + file.Name()
- feed.Add (
+ feed.Add(
&feeds.Item{
Title: title,
Link: &feeds.Link{Href: link, Length: size, Type: "audio/mpeg"},
@@ -129,10 +128,10 @@ func generate_rss() {
}
// fmt.Println(rss)
- // Write to files as neccesary
+ // Write to files as neccesary
rss_byte := []byte(rss)
ioutil.WriteFile("feed.rss", rss_byte, 0644)
-
+
json_byte := []byte(json)
ioutil.WriteFile("feed.json", json_byte, 0644)
}
diff --git a/src/webserver.go b/src/webserver.go
index f6ae7bf..4370696 100644
--- a/src/webserver.go
+++ b/src/webserver.go
@@ -1,17 +1,17 @@
/* webserver.go
- *
+ *
* This is the webserver handler for Pogo, and handles
- * all incoming connections, including authentication.
+ * all incoming connections, including authentication.
*/
package main
import (
+ "crypto/subtle"
"fmt"
"io/ioutil"
"log"
"net/http"
- "crypto/subtle"
"github.com/gorilla/mux"
"github.com/spf13/viper"
@@ -43,13 +43,13 @@ func JsonHandler(w http.ResponseWriter, r *http.Request) {
// Serve up homepage
func HomeHandler(w http.ResponseWriter, r *http.Request) {
- data, err := ioutil.ReadFile("assets/index.html")
+ data, err := ioutil.ReadFile("assets/1index.html")
if err == nil {
w.Write(data)
} else {
w.WriteHeader(500)
- w.Write([]byte("500 Something went wrong - " + http.StatusText(500)))
+ w.Write([]byte("Error500 - " + http.StatusText(500)))
}
}
@@ -60,22 +60,22 @@ func HomeHandler(w http.ResponseWriter, r *http.Request) {
* Code from stackoverflow by user Timmmm
* https://stackoverflow.com/questions/21936332/idiomatic-way-of-requiring-http-basic-auth-in-go/39591234#39591234
*/
-func BasicAuth(handler http.HandlerFunc,) http.HandlerFunc {
+func BasicAuth(handler http.HandlerFunc) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- username := viper.GetString("AdminUsername")
- password := viper.GetString("AdminPassword")
- realm := "Login to Pogo admin interface"
- user, pass, ok := r.BasicAuth()
+ return func(w http.ResponseWriter, r *http.Request) {
+ username := viper.GetString("AdminUsername")
+ password := viper.GetString("AdminPassword")
+ realm := "Login to Pogo admin interface"
+ user, pass, ok := r.BasicAuth()
- if !ok || subtle.ConstantTimeCompare([]byte(user), []byte(username)) != 1 || subtle.ConstantTimeCompare([]byte(pass), []byte(password)) != 1 {
- w.Header().Set("WWW-Authenticate", `Basic realm="`+realm+`"`)
- w.WriteHeader(401)
- w.Write([]byte("Unauthorised.\n"))
- return
- }
- handler(w, r)
- }
+ if !ok || subtle.ConstantTimeCompare([]byte(user), []byte(username)) != 1 || subtle.ConstantTimeCompare([]byte(pass), []byte(password)) != 1 {
+ w.Header().Set("WWW-Authenticate", `Basic realm="`+realm+`"`)
+ w.WriteHeader(401)
+ w.Write([]byte("Unauthorised.\n"))
+ return
+ }
+ handler(w, r)
+ }
}
// Handler for serving up admin page
@@ -95,12 +95,12 @@ func main() {
viper.SetConfigName("config")
viper.AddConfigPath(".")
err := viper.ReadInConfig() // Find and read the config file
- if err != nil { // Handle errors reading the config file
+ if err != nil { // Handle errors reading the config file
panic(fmt.Errorf("Fatal error config file: %s \n", err))
}
// Start the watch() function in generate_rss.go, which
- // watches for file changes and regenerates the feed
+ // watches for file changes and regenerates the feed
go watch()
// Define routes