package main import "fmt" import "log" import "bytes" import "net/http" var error_internal []byte var error_notfound []byte func init_errors() error { var b bytes.Buffer user := User{0,"Guest","",0,false,false,false,false,false,false,GuestPerms,"",false,"","","","","",0,0,"0.0.0.0.0"} pi := Page{"Internal Server Error",user,nList,tList,"A problem has occurred in the system."} err := templates.ExecuteTemplate(&b,"error.html", pi) if err != nil { return err } error_internal = b.Bytes() b.Reset() pi = Page{"Not Found",user,nList,tList,"The requested page doesn't exist."} err = templates.ExecuteTemplate(&b,"error.html", pi) if err != nil { return err } error_notfound = b.Bytes() return nil } func InternalError(err error, w http.ResponseWriter, r *http.Request) { w.Write(error_internal) log.Fatal(err) } func InternalErrorJSQ(err error, w http.ResponseWriter, r *http.Request, is_js string) { w.WriteHeader(500) if is_js == "0" { w.Write(error_internal) } else { w.Write([]byte(`{'errmsg': 'A problem has occured in the system.'}`)) } log.Fatal(err) } func PreError(errmsg string, w http.ResponseWriter, r *http.Request) { w.WriteHeader(500) user := User{ID:0,Group:6,Perms:GuestPerms,} pi := Page{"Error",user,nList,tList,errmsg} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html",pi) fmt.Fprintln(w,b.String()) } func LocalError(errmsg string, w http.ResponseWriter, r *http.Request, user User) { w.WriteHeader(500) pi := Page{"Local Error",user,nList,tList,errmsg} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html",pi) fmt.Fprintln(w,b.String()) } func LoginRequired(w http.ResponseWriter, r *http.Request, user User) { w.WriteHeader(401) pi := Page{"Local Error",user,nList,tList,"You need to login to do that."} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html",pi) fmt.Fprintln(w,b.String()) } func PreErrorJSQ(errmsg string, w http.ResponseWriter, r *http.Request, is_js string) { w.WriteHeader(500) if is_js == "0" { user := User{ID:0,Group:6,Perms:GuestPerms,} pi := Page{"Local Error",user,nList,tList,errmsg} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html", pi) fmt.Fprintln(w,b.String()) } else { w.Write([]byte(`{'errmsg': '` + errmsg + `'}`)) } } func LocalErrorJSQ(errmsg string, w http.ResponseWriter, r *http.Request, user User, is_js string) { w.WriteHeader(500) if is_js == "0" { pi := Page{"Local Error",user,nList,tList,errmsg} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html", pi) fmt.Fprintln(w,b.String()) } else { w.Write([]byte(`{'errmsg': '` + errmsg + `'}`)) } } func NoPermissions(w http.ResponseWriter, r *http.Request, user User) { w.WriteHeader(403) pi := Page{"Local Error",user,nList,tList,"You don't have permission to do that."} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html", pi) errpage := b.String() fmt.Fprintln(w,errpage) } func NoPermissionsJSQ(w http.ResponseWriter, r *http.Request, user User, is_js string) { w.WriteHeader(403) if is_js == "0" { pi := Page{"Local Error",user,nList,tList,"You don't have permission to do that."} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html", pi) fmt.Fprintln(w,b.String()) } else { w.Write([]byte("{'errmsg': 'You don't have permission to do that.'}")) } } func Banned(w http.ResponseWriter, r *http.Request, user User) { w.WriteHeader(403) pi := Page{"Banned",user,nList,tList,"You have been banned from this site."} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html", pi) fmt.Fprintln(w,b.String()) } func BannedJSQ(w http.ResponseWriter, r *http.Request, user User, is_js string) { w.WriteHeader(403) if is_js == "0" { pi := Page{"Banned",user,nList,tList,"You have been banned from this site."} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html", pi) fmt.Fprintln(w,b.String()) } else { w.Write([]byte("{'errmsg': 'You have been banned from this site.'}")) } } func LoginRequiredJSQ(w http.ResponseWriter, r *http.Request, user User, is_js string) { w.WriteHeader(401) if is_js == "0" { pi := Page{"Local Error",user,nList,tList,"You need to login to do that."} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html", pi) fmt.Fprintln(w,b.String()) } else { w.Write([]byte("{'errmsg': 'You need to login to do that.'}")) } } func SecurityError(w http.ResponseWriter, r *http.Request, user User) { w.WriteHeader(403) pi := Page{"Security Error",user,nList,tList,"There was a security issue with your request."} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html", pi) fmt.Fprintln(w,b.String()) } func NotFound(w http.ResponseWriter, r *http.Request) { w.WriteHeader(404) w.Write(error_notfound) } func CustomError(errmsg string, errcode int, errtitle string, w http.ResponseWriter, r *http.Request, user User) { w.WriteHeader(errcode) pi := Page{errtitle,user,nList,tList,errmsg} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html", pi) fmt.Fprintln(w,b.String()) } func CustomErrorJSQ(errmsg string, errcode int, errtitle string, w http.ResponseWriter, r *http.Request, user User, is_js string) { w.WriteHeader(errcode) if is_js == "0" { pi := Page{errtitle,user,nList,tList,errmsg} var b bytes.Buffer templates.ExecuteTemplate(&b,"error.html", pi) fmt.Fprintln(w,b.String()) } else { w.Write([]byte(`{'errmsg': '` + errmsg + `'}`)) } }