Jelajahi Sumber

Okay now let's it rock and roll

AY 4 tahun lalu
induk
melakukan
5e05340f35
7 mengubah file dengan 59 tambahan dan 0 penghapusan
  1. 1 0
      main.go
  2. 4 0
      mod/config/banIP.go
  3. 4 0
      mod/config/banPlayer.go
  4. 2 0
      mod/config/eula.go
  5. 4 0
      mod/config/ops.go
  6. 2 0
      mod/config/properties.go
  7. 42 0
      mod/config/update.go

+ 1 - 0
main.go

@@ -40,6 +40,7 @@ func main() {
 
 	MCServer = server.NewHandler(serverConfig.Java, serverConfig.Jar, serverConfig.Min, serverConfig.Max, serverConfig.Arg)
 	Config = config.NewHandler(serverConfig.Folder)
+	Config.AutoUpdate() //enable auto update
 
 	webServer("./webroot/", serverConfig.Folder, serverConfig.Port)
 

+ 4 - 0
mod/config/banIP.go

@@ -27,6 +27,7 @@ func (mch *Handler) ReadAllBannedIPs() BannedIP {
 
 //WriteBannedIP is exported function
 func (mch *Handler) WriteBannedIP(IP string, Created string, Source string, Expires string, Reason string) bool {
+	mch.reloadBanIP() //ensure that everything updated.
 	newItem := BannedIP{}
 	newItem = append(newItem, struct {
 		IP      string `json:"ip"`
@@ -36,6 +37,7 @@ func (mch *Handler) WriteBannedIP(IP string, Created string, Source string, Expi
 		Reason  string `json:"reason"`
 	}{IP, Created, Source, Expires, Reason})
 	mch.bannedIPs = append(mch.bannedIPs, newItem...)
+	mch.SaveAllBannedIPs() //save it
 	return true
 }
 
@@ -67,6 +69,7 @@ func (mch *Handler) ReadBannedIP(search string, field string) BannedIP {
 
 //RemoveBannedIP is exported function
 func (mch *Handler) RemoveBannedIP(search string, field string) bool {
+	mch.reloadBanIP() //ensure that everything updated.
 	for i, item := range mch.bannedIPs {
 		fieldValue := ""
 		switch strings.ToLower(field) {
@@ -92,6 +95,7 @@ func (mch *Handler) RemoveBannedIP(search string, field string) bool {
 			}
 		}
 	}
+	mch.SaveAllBannedIPs()
 	return true
 }
 

+ 4 - 0
mod/config/banPlayer.go

@@ -27,6 +27,7 @@ func (mch *Handler) ReadAllBannedPlayers() BannedPlayer {
 
 //WriteBannedPlayer is exported function
 func (mch *Handler) WriteBannedPlayer(UUID string, Name string, Created string, Source string, Expires string, Reason string) bool {
+	mch.reloadBanPlayer()
 	newItem := BannedPlayer{}
 	newItem = append(newItem, struct {
 		UUID    string `json:"uuid"`
@@ -37,6 +38,7 @@ func (mch *Handler) WriteBannedPlayer(UUID string, Name string, Created string,
 		Reason  string `json:"reason"`
 	}{UUID, Name, Created, Source, Expires, Reason})
 	mch.bannedPlayers = append(mch.bannedPlayers, newItem...)
+	mch.SaveAllBannedPlayers()
 	return true
 }
 
@@ -70,6 +72,7 @@ func (mch *Handler) ReadBannedPlayer(search string, field string) BannedPlayer {
 
 //RemoveBannedPlayer is exported function
 func (mch *Handler) RemoveBannedPlayer(search string, field string) bool {
+	mch.reloadBanPlayer()
 	for i, item := range mch.bannedPlayers {
 		fieldValue := ""
 		switch strings.ToLower(field) {
@@ -99,6 +102,7 @@ func (mch *Handler) RemoveBannedPlayer(search string, field string) bool {
 			}
 		}
 	}
+	mch.SaveAllBannedPlayers()
 	return true
 }
 

+ 2 - 0
mod/config/eula.go

@@ -40,7 +40,9 @@ func (mch *Handler) ReadEULA() bool {
 
 //WriteEULA should exported.
 func (mch *Handler) WriteEULA(accept bool) bool {
+	mch.reloadEULA()
 	mch.eula[0].Value = strconv.FormatBool(accept)
+	mch.SaveEULA()
 	return true
 }
 

+ 4 - 0
mod/config/ops.go

@@ -28,6 +28,7 @@ func (mch *Handler) ReadAllOps() Op {
 
 //WriteOps is exported function
 func (mch *Handler) WriteOps(UUID string, Name string, Level int, BypassesPlayerLimit bool) bool {
+	mch.reloadOp()
 	newItem := Op{}
 	newItem = append(newItem, struct {
 		UUID                string `json:"uuid"`
@@ -36,6 +37,7 @@ func (mch *Handler) WriteOps(UUID string, Name string, Level int, BypassesPlayer
 		BypassesPlayerLimit bool   `json:"bypassesPlayerLimit"`
 	}{UUID, Name, Level, BypassesPlayerLimit})
 	mch.ops = append(mch.ops, newItem...)
+	mch.SaveAllOps()
 	return true
 }
 
@@ -65,6 +67,7 @@ func (mch *Handler) ReadOps(search string, field string) Op {
 
 //RemoveOps is exported function
 func (mch *Handler) RemoveOps(search string, field string) bool {
+	mch.reloadOp()
 	for i, item := range mch.ops {
 		fieldValue := ""
 		switch strings.ToLower(field) {
@@ -88,6 +91,7 @@ func (mch *Handler) RemoveOps(search string, field string) bool {
 			}
 		}
 	}
+	mch.SaveAllOps()
 	return true
 }
 

+ 2 - 0
mod/config/properties.go

@@ -39,11 +39,13 @@ func (mch *Handler) ReadAllProperties() []ServerConfig {
 
 //ChangeProperties is exported function
 func (mch *Handler) ChangeProperties(inputKey string, inputValue string) bool {
+	mch.reloadProperties()
 	for i, item := range mch.properties {
 		if strings.ToLower(inputKey) == strings.ToLower(item.Key) {
 			mch.properties[i].Value = inputValue
 		}
 	}
+	mch.SaveProperties()
 	return true
 }
 

+ 42 - 0
mod/config/update.go

@@ -0,0 +1,42 @@
+package config
+
+import "time"
+
+//AutoUpdate is exported function
+func (mch *Handler) AutoUpdate() {
+	go func() {
+		for {
+			<-time.After(1 * 60 * time.Second) //no rush, update every minute
+			mch.reloadEULA()
+			mch.reloadProperties()
+			mch.reloadBanPlayer()
+			mch.reloadBanIP()
+			mch.reloadOp()
+			mch.reloadWhitelist()
+		}
+	}()
+}
+
+func (mch *Handler) reloadEULA() {
+	mch.eula = initEULA(mch.serverFolder)
+}
+
+func (mch *Handler) reloadProperties() {
+	mch.properties = initProperties(mch.serverFolder)
+}
+
+func (mch *Handler) reloadBanPlayer() {
+	mch.bannedPlayers = initBannedPlayer(mch.serverFolder)
+}
+
+func (mch *Handler) reloadBanIP() {
+	mch.bannedIPs = initBannedIP(mch.serverFolder)
+}
+
+func (mch *Handler) reloadOp() {
+	mch.ops = initOps(mch.serverFolder)
+}
+
+func (mch *Handler) reloadWhitelist() {
+	mch.whitelists = initWhitelist(mch.serverFolder)
+}