|
6 | 6 | "log" |
7 | 7 | "math/rand" |
8 | 8 | "net/http" |
| 9 | + "os/exec" |
9 | 10 | "time" |
10 | 11 |
|
11 | 12 | "github.com/boltdb/bolt" |
@@ -40,7 +41,7 @@ func init() { |
40 | 41 | db.Update(func(tx *bolt.Tx) error { |
41 | 42 | _, err := tx.CreateBucketIfNotExists([]byte("BlogMappingBucket")) // random string -> email |
42 | 43 | if err != nil { |
43 | | - return fmt.Errorf("Error with BlockMappingBucket: %s", err) |
| 44 | + return fmt.Errorf("Error with BlogMappingBucket: %s", err) |
44 | 45 | } |
45 | 46 | return nil |
46 | 47 | }) |
@@ -112,7 +113,6 @@ func SignupHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) |
112 | 113 | password := r.FormValue("password") |
113 | 114 |
|
114 | 115 | if addUser(email, password) { |
115 | | - fmt.Println("Success!") |
116 | 116 | cookie := http.Cookie{Name: "goblog", Value: RandomString(), Expires: time.Now().Add(time.Hour * 24 * 7 * 52), HttpOnly: true, MaxAge: 50000, Path: "/"} |
117 | 117 | http.SetCookie(w, &cookie) |
118 | 118 | db, err := bolt.Open("goblog.db", 0600, nil) |
@@ -153,6 +153,44 @@ func AdminPage(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { |
153 | 153 | } |
154 | 154 | } |
155 | 155 |
|
| 156 | +func AdminHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { |
| 157 | + blogname := r.FormValue("blogname") |
| 158 | + website := r.FormValue("website") |
| 159 | + port := 1000 |
| 160 | + blogcheck := []byte("") |
| 161 | + |
| 162 | + if getUser(w, r) != "" { |
| 163 | + db, err := bolt.Open("goblog.db", 0600, nil) |
| 164 | + if err != nil { |
| 165 | + fmt.Println(err) |
| 166 | + } |
| 167 | + defer db.Close() |
| 168 | + db.View(func(tx *bolt.Tx) error { |
| 169 | + b := tx.Bucket([]byte("BlogMappingBucket")) |
| 170 | + blogcheck = b.Get([]byte(blogname)) |
| 171 | + return nil |
| 172 | + }) |
| 173 | + if blogcheck == nil { |
| 174 | + create, err := exec.Command("./create.sh", blogname, website, string(port)).Output() |
| 175 | + if err != nil { |
| 176 | + fmt.Println(err) |
| 177 | + } else { |
| 178 | + fmt.Fprintf(w, "%s", create) |
| 179 | + db.Update(func(tx *bolt.Tx) error { |
| 180 | + b := tx.Bucket([]byte("UsersBucket")) |
| 181 | + err := b.Put([]byte(blogname), []byte(website)) |
| 182 | + return err |
| 183 | + }) |
| 184 | + } |
| 185 | + } else { |
| 186 | + fmt.Println("Failure!") |
| 187 | + http.Redirect(w, r, "/", http.StatusFound) |
| 188 | + } |
| 189 | + } else { |
| 190 | + fmt.Fprintf(w, "You must be authenticated!") // TODO make this look better |
| 191 | + } |
| 192 | +} |
| 193 | + |
156 | 194 | func verifyUser(w http.ResponseWriter, r *http.Request, email string, password string) bool { |
157 | 195 | correctpass := []byte("") |
158 | 196 | db, err := bolt.Open("goblog.db", 0600, nil) |
@@ -273,6 +311,7 @@ func main() { |
273 | 311 | router.GET("/signup/", SignupPage) |
274 | 312 | router.POST("/signup/", SignupHandler) |
275 | 313 | router.GET("/admin/", AdminPage) |
| 314 | + router.POST("/admin/", AdminHandler) |
276 | 315 | router.GET("/logout/", LogoutHandler) |
277 | 316 | log.Fatal(http.ListenAndServe(":1338", router)) |
278 | 317 | } |
0 commit comments