package main import ( "net/http" "regexp" "strconv" "time" ) func AddBanIP(w http.ResponseWriter, r *http.Request) { IP, _ := mv(r, "ip", false) Created := currentTime() Source := "ArOZ Minecraft Terminal" Expires := "forever" Reason, _ := mv(r, "reason", false) Config.WriteBannedIP(IP, Created, Source, Expires, Reason) sendJSONResponse(w, "OK") } func AddBanPlayer(w http.ResponseWriter, r *http.Request) { UUID, _ := mv(r, "uuid", false) Name, _ := mv(r, "name", false) Created := currentTime() Source := "ArOZ Minecraft Terminal" Expires := "forever" Reason, _ := mv(r, "reason", false) if IsValidUUID(UUID) { Config.WriteBannedPlayer(UUID, Name, Created, Source, Expires, Reason) sendJSONResponse(w, "OK") } else { sendJSONResponse(w, "Incorrect UUID.") } } func AddOps(w http.ResponseWriter, r *http.Request) { UUID, _ := mv(r, "uuid", false) Name, _ := mv(r, "name", false) Level, _ := mv(r, "level", false) LevelI, _ := strconv.Atoi(Level) BypassesPlayerLimit, _ := mv(r, "bypass", false) BypassesPlayerLimitB, _ := strconv.ParseBool(BypassesPlayerLimit) if IsValidUUID(UUID) { Config.WriteOps(UUID, Name, LevelI, BypassesPlayerLimitB) sendJSONResponse(w, "OK") } else { sendJSONResponse(w, "Incorrect UUID.") } } func AddWhitelist(w http.ResponseWriter, r *http.Request) { UUID, _ := mv(r, "uuid", false) Name, _ := mv(r, "name", false) if IsValidUUID(UUID) { Config.WriteWhitelist(UUID, Name) sendJSONResponse(w, "OK") } else { sendJSONResponse(w, "Incorrect UUID.") } } func currentTime() string { t := time.Now() return t.Format("2006-01-02 15:04:05 -0700") } //vaild UUID //https://stackoverflow.com/questions/25051675/how-to-validate-uuid-v4-in-go func IsValidUUID(uuid string) bool { r := regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[8|9|aA|bB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$") return r.MatchString(uuid) }