9f273a99f5
Reduced the amount of boilerplate in routes with renderTemplate() Reduced the amount of boilerplate in routes with ParseSEOURL() Removed some dated commented bits of code. Used StashConfig in a few more places in the benchmarks to reduce the amount of boilerplate. Renamed the pre_render_forum_list hook to pre_render_forums. Renamed the pre_render_topic_list hook to pre_render_topics. Renamed a few benchmark variables to simplify the code.
40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package routes
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/Azareal/Gosora/common"
|
|
"github.com/Azareal/Gosora/common/phrases"
|
|
)
|
|
|
|
func IPSearch(w http.ResponseWriter, r *http.Request, user common.User, header *common.Header) common.RouteError {
|
|
header.Title = phrases.GetTitlePhrase("ip_search")
|
|
// TODO: How should we handle the permissions if we extend this into an alt detector of sorts?
|
|
if !user.Perms.ViewIPs {
|
|
return common.NoPermissions(w, r, user)
|
|
}
|
|
|
|
// TODO: Reject IP Addresses with illegal characters
|
|
var ip = common.SanitiseSingleLine(r.FormValue("ip"))
|
|
uids, err := common.IPSearch.Lookup(ip)
|
|
if err != nil {
|
|
return common.InternalError(err, w, r)
|
|
}
|
|
|
|
// TODO: What if a user is deleted via the Control Panel? We'll cross that bridge when we come to it, although we might lean towards blanking the account and removing the related data rather than purging it
|
|
userList, err := common.Users.BulkGetMap(uids)
|
|
if err != nil {
|
|
return common.InternalError(err, w, r)
|
|
}
|
|
|
|
pi := common.IPSearchPage{header, userList, ip}
|
|
if common.RunPreRenderHook("pre_render_ip_search", w, r, &user, &pi) {
|
|
return nil
|
|
}
|
|
err = common.RunThemeTemplate(header.Theme.Name, "ip_search", pi, w)
|
|
if err != nil {
|
|
return common.InternalError(err, w, r)
|
|
}
|
|
return nil
|
|
}
|