001 package net.minecraft.server.management; 002 003 import java.io.BufferedReader; 004 import java.io.File; 005 import java.io.FileNotFoundException; 006 import java.io.FileReader; 007 import java.io.FileWriter; 008 import java.io.IOException; 009 import java.io.PrintWriter; 010 import java.text.SimpleDateFormat; 011 import java.util.Date; 012 import java.util.Iterator; 013 import java.util.Map; 014 import java.util.logging.Level; 015 import java.util.logging.Logger; 016 017 public class BanList 018 { 019 private final LowerStringMap theBanList = new LowerStringMap(); 020 private final File fileName; 021 022 /** set to true if not singlePlayer */ 023 private boolean listActive = true; 024 025 public BanList(File par1File) 026 { 027 this.fileName = par1File; 028 } 029 030 public boolean isListActive() 031 { 032 return this.listActive; 033 } 034 035 public void setListActive(boolean par1) 036 { 037 this.listActive = par1; 038 } 039 040 /** 041 * removes expired Bans before returning 042 */ 043 public Map getBannedList() 044 { 045 this.removeExpiredBans(); 046 return this.theBanList; 047 } 048 049 public boolean isBanned(String par1Str) 050 { 051 if (!this.isListActive()) 052 { 053 return false; 054 } 055 else 056 { 057 this.removeExpiredBans(); 058 return this.theBanList.containsKey(par1Str); 059 } 060 } 061 062 public void put(BanEntry par1BanEntry) 063 { 064 this.theBanList.putLower(par1BanEntry.getBannedUsername(), par1BanEntry); 065 this.saveToFileWithHeader(); 066 } 067 068 public void remove(String par1Str) 069 { 070 this.theBanList.remove(par1Str); 071 this.saveToFileWithHeader(); 072 } 073 074 public void removeExpiredBans() 075 { 076 Iterator var1 = this.theBanList.values().iterator(); 077 078 while (var1.hasNext()) 079 { 080 BanEntry var2 = (BanEntry)var1.next(); 081 082 if (var2.hasBanExpired()) 083 { 084 var1.remove(); 085 } 086 } 087 } 088 089 /** 090 * Loads the ban list from the file (adds every entry, does not clear the current list). 091 */ 092 public void loadBanList() 093 { 094 if (this.fileName.isFile()) 095 { 096 BufferedReader var1; 097 098 try 099 { 100 var1 = new BufferedReader(new FileReader(this.fileName)); 101 } 102 catch (FileNotFoundException var4) 103 { 104 throw new Error(); 105 } 106 107 String var2; 108 109 try 110 { 111 while ((var2 = var1.readLine()) != null) 112 { 113 if (!var2.startsWith("#")) 114 { 115 BanEntry var3 = BanEntry.parse(var2); 116 117 if (var3 != null) 118 { 119 this.theBanList.putLower(var3.getBannedUsername(), var3); 120 } 121 } 122 } 123 } 124 catch (IOException var5) 125 { 126 Logger.getLogger("Minecraft").log(Level.SEVERE, "Could not load ban list", var5); 127 } 128 } 129 } 130 131 public void saveToFileWithHeader() 132 { 133 this.saveToFile(true); 134 } 135 136 /** 137 * par1: include header 138 */ 139 public void saveToFile(boolean par1) 140 { 141 this.removeExpiredBans(); 142 143 try 144 { 145 PrintWriter var2 = new PrintWriter(new FileWriter(this.fileName, false)); 146 147 if (par1) 148 { 149 var2.println("# Updated " + (new SimpleDateFormat()).format(new Date()) + " by Minecraft " + "1.4.7"); 150 var2.println("# victim name | ban date | banned by | banned until | reason"); 151 var2.println(); 152 } 153 154 Iterator var3 = this.theBanList.values().iterator(); 155 156 while (var3.hasNext()) 157 { 158 BanEntry var4 = (BanEntry)var3.next(); 159 var2.println(var4.buildBanString()); 160 } 161 162 var2.close(); 163 } 164 catch (IOException var5) 165 { 166 Logger.getLogger("Minecraft").log(Level.SEVERE, "Could not save ban list", var5); 167 } 168 } 169 }