gosora/gen_router.go
Azareal 5a43432b80 Replaced most of the uses of fmt with log.
Replaced the io.Writers with http.ResponseWriters.
Refactored the compiled template calls.
Redirect port 443 to port 80.
Catch more errors from templates.
Fixed a few mutexes which are never unlocked.
Eliminated an unnecessary parameter in InternalError()
Temporarily commented out users_penalties so that the installer will succeed.
A couple more template types can be remapped now.
Tweaked the theme.
2017-08-13 12:22:34 +01:00

243 lines
6.1 KiB
Go

// Code generated by. DO NOT EDIT.
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "log"
import "strings"
import "sync"
import "errors"
import "net/http"
var ErrNoRoute = errors.New("That route doesn't exist.")
type GenRouter struct {
UploadHandler func(http.ResponseWriter, *http.Request)
extra_routes map[string]func(http.ResponseWriter, *http.Request, User)
sync.RWMutex
}
func NewGenRouter(uploads http.Handler) *GenRouter {
return &GenRouter{
UploadHandler: http.StripPrefix("/uploads/",uploads).ServeHTTP,
extra_routes: make(map[string]func(http.ResponseWriter, *http.Request, User)),
}
}
func (router *GenRouter) Handle(_ string, _ http.Handler) {
}
func (router *GenRouter) HandleFunc(pattern string, handle func(http.ResponseWriter, *http.Request, User)) {
router.Lock()
router.extra_routes[pattern] = handle
router.Unlock()
}
func (router *GenRouter) RemoveFunc(pattern string) error {
router.Lock()
_, ok := router.extra_routes[pattern]
if !ok {
router.Unlock()
return ErrNoRoute
}
delete(router.extra_routes,pattern)
router.Unlock()
return nil
}
func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
//if req.URL.Path == "/" {
// default_route(w,req)
// return
//}
if req.URL.Path[0] != '/' {
w.WriteHeader(405)
w.Write([]byte(""))
return
}
var prefix, extra_data string
prefix = req.URL.Path[0:strings.IndexByte(req.URL.Path[1:],'/') + 1]
if req.URL.Path[len(req.URL.Path) - 1] != '/' {
extra_data = req.URL.Path[strings.LastIndexByte(req.URL.Path,'/') + 1:]
req.URL.Path = req.URL.Path[:strings.LastIndexByte(req.URL.Path,'/') + 1]
}
if dev.SuperDebug {
log.Print("before route_static")
log.Print("prefix:", prefix)
log.Print("req.URL.Path:", req.URL.Path)
log.Print("extra_data:", extra_data)
}
if prefix == "/static" {
req.URL.Path += extra_data
route_static(w,req)
return
}
if dev.SuperDebug {
log.Print("before PreRoute")
}
// Deal with the session stuff, etc.
user, ok := PreRoute(w,req)
if !ok {
return
}
if dev.SuperDebug {
log.Print("after PreRoute")
}
switch(prefix) {
case "/api":
route_api(w,req,user)
return
case "/overview":
route_overview(w,req,user)
return
case "/forums":
route_forums(w,req,user)
return
case "/forum":
route_forum(w,req,user,extra_data)
return
case "/report":
switch(req.URL.Path) {
case "/report/submit/":
route_report_submit(w,req,user,extra_data)
return
}
case "/topics":
switch(req.URL.Path) {
case "/topics/create/":
route_topic_create(w,req,user,extra_data)
return
default:
route_topics(w,req,user)
return
}
case "/panel":
switch(req.URL.Path) {
case "/panel/forums/":
route_panel_forums(w,req,user)
return
case "/panel/forums/create/":
route_panel_forums_create_submit(w,req,user)
return
case "/panel/forums/delete/":
route_panel_forums_delete(w,req,user,extra_data)
return
case "/panel/forums/delete/submit/":
route_panel_forums_delete_submit(w,req,user,extra_data)
return
case "/panel/forums/edit/":
route_panel_forums_edit(w,req,user,extra_data)
return
case "/panel/forums/edit/submit/":
route_panel_forums_edit_submit(w,req,user,extra_data)
return
case "/panel/forums/edit/perms/submit/":
route_panel_forums_edit_perms_submit(w,req,user,extra_data)
return
case "/panel/settings/":
route_panel_settings(w,req,user)
return
case "/panel/settings/edit/":
route_panel_setting(w,req,user,extra_data)
return
case "/panel/settings/edit/submit/":
route_panel_setting_edit(w,req,user,extra_data)
return
case "/panel/themes/":
route_panel_themes(w,req,user)
return
case "/panel/themes/default/":
route_panel_themes_default(w,req,user,extra_data)
return
case "/panel/plugins/":
route_panel_plugins(w,req,user)
return
case "/panel/plugins/activate/":
route_panel_plugins_activate(w,req,user,extra_data)
return
case "/panel/plugins/deactivate/":
route_panel_plugins_deactivate(w,req,user,extra_data)
return
case "/panel/plugins/install/":
route_panel_plugins_install(w,req,user,extra_data)
return
case "/panel/users/":
route_panel_users(w,req,user)
return
case "/panel/users/edit/":
route_panel_users_edit(w,req,user,extra_data)
return
case "/panel/users/edit/submit/":
route_panel_users_edit_submit(w,req,user,extra_data)
return
case "/panel/groups/":
route_panel_groups(w,req,user)
return
case "/panel/groups/edit/":
route_panel_groups_edit(w,req,user,extra_data)
return
case "/panel/groups/edit/perms/":
route_panel_groups_edit_perms(w,req,user,extra_data)
return
case "/panel/groups/edit/submit/":
route_panel_groups_edit_submit(w,req,user,extra_data)
return
case "/panel/groups/edit/perms/submit/":
route_panel_groups_edit_perms_submit(w,req,user,extra_data)
return
case "/panel/groups/create/":
route_panel_groups_create_submit(w,req,user)
return
case "/panel/logs/mod/":
route_panel_logs_mod(w,req,user)
return
default:
route_panel(w,req,user)
return
}
case "/uploads":
if extra_data == "" {
NotFound(w,req)
return
}
req.URL.Path += extra_data
router.UploadHandler(w,req)
return
case "":
// Stop the favicons, robots.txt file, etc. resolving to the topics list
// TO-DO: Add support for favicons and robots.txt files
switch(extra_data) {
case "robots.txt":
route_robots_txt(w,req)
return
}
if extra_data != "" {
NotFound(w,req)
return
}
config.DefaultRoute(w,req,user)
return
//default: NotFound(w,req)
}
// A fallback for the routes which haven't been converted to the new router yet or plugins
router.RLock()
handle, ok := router.extra_routes[req.URL.Path]
router.RUnlock()
if ok {
req.URL.Path += extra_data
handle(w,req,user)
return
}
NotFound(w,req)
}