/[projects]/miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/web/BanListener.java
ViewVC logotype

Annotation of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/web/BanListener.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1940 - (hide annotations) (download)
Wed Mar 20 16:41:20 2013 UTC (11 years, 2 months ago) by torben
File size: 1954 byte(s)
make sure http request object is closed
1 torben 1803 package dk.thoerup.bukkit.hoeruputils.web;
2    
3 torben 1935 import java.io.IOException;
4 torben 1938 import java.io.OutputStream;
5     import java.net.HttpURLConnection;
6 torben 1803 import java.text.SimpleDateFormat;
7     import java.util.Date;
8 torben 1935
9     import org.bukkit.OfflinePlayer;
10 torben 1803 import org.bukkit.Server;
11     import org.bukkit.plugin.Plugin;
12    
13 torben 1935 import com.sun.net.httpserver.HttpExchange;
14     import com.sun.net.httpserver.HttpHandler;
15 torben 1803
16    
17    
18 torben 1935 public class BanListener implements HttpHandler {
19 torben 1803
20     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
21    
22     Server server;
23    
24     long cachedTime = 0;
25     String cachedText = "";
26    
27     public BanListener(Plugin plugin, Server server) {
28    
29     this.server = server;
30     }
31    
32     String formatTime(String input) {
33     return formatTime( Long.parseLong(input) );
34     }
35     String formatTime(long input) {
36     Date d = new Date( input );
37     return format.format(d );
38     }
39    
40 torben 1935
41    
42 torben 1803 @Override
43 torben 1935 public void handle(HttpExchange http) throws IOException {
44     /* if(!event.path[0].equalsIgnoreCase("webstatus")) {
45 torben 1803 return;
46     }*/
47    
48     String text;
49    
50     synchronized(this) { //is this necessary ?
51     long now = System.currentTimeMillis();
52     if ( (now-cachedTime) > 5000) {
53     text = buildText();
54     cachedText = text;
55     cachedTime = now;
56     } else {
57     text = cachedText;
58     }
59     }
60    
61 torben 1938 byte bytes[] = text.getBytes();
62     http.sendResponseHeaders(HttpURLConnection.HTTP_OK, bytes.length );
63     final OutputStream os = http.getResponseBody();
64     os.write(bytes);
65     os.close();
66 torben 1940 http.close();
67 torben 1938
68 torben 1803 }
69    
70     private String buildText() {
71     StringBuilder sb = new StringBuilder();
72    
73     sb.append("<h2>Banned Players</h2>");
74     sb.append("<ul>\n");
75     for(OfflinePlayer player : server.getBannedPlayers() ) {
76     sb.append("<li>").append( player.getName() ).append("</li>\n");
77     }
78     sb.append("</ul>\n");
79    
80    
81     sb.append("<h2>Banned IPs</h2>");
82     sb.append("<ul>\n");
83     for(String ip : server.getIPBans() ) {
84     sb.append("<li>").append( ip ).append("</li>\n");
85     }
86     sb.append("</ul>\n");
87    
88    
89     return sb.toString();
90    
91     }
92    
93 torben 1935
94    
95 torben 1803 }

  ViewVC Help
Powered by ViewVC 1.1.20