22 package com.realtime.crossfire.jxclient.metaserver;
24 import java.io.BufferedReader;
26 import java.io.IOException;
27 import java.io.InputStream;
28 import java.io.InputStreamReader;
29 import java.net.HttpURLConnection;
32 import org.jetbrains.annotations.NotNull;
50 private static final String
METASERVER_URL =
"http://crossfire.real-time.com/metaserver2/meta_client.php";
72 metaserverModel.
begin();
73 serverCache.
getAll().values().forEach(metaserverModel::addMetaserverEntry);
74 metaserverModel.commit();
81 metaserverModel.
begin();
83 serverCache.
expire(EXPIRE_INTERVAL*1000);
84 final Map<String, MetaserverEntry> oldEntries = serverCache.
getAll();
87 assert localhostMetaserverEntry != null;
90 serverCache.
put(localhostMetaserverEntry);
93 final URL url =
new URL(METASERVER_URL);
94 final String httpProxy = System.getenv(
"http_proxy");
95 if (httpProxy != null && !httpProxy.isEmpty()) {
96 if (httpProxy.regionMatches(
true, 0,
"http://", 0, 7)) {
97 final String[] tmp = httpProxy.substring(7).replaceAll(
"/.*",
"").split(
":", 2);
98 System.setProperty(
"http.proxyHost", tmp[0]);
99 System.setProperty(
"http.proxyPort", tmp.length >= 2 ? tmp[1] :
"80");
101 System.err.println(
"Warning: unsupported http_proxy protocol: "+httpProxy);
104 final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
106 conn.setRequestMethod(
"GET");
107 conn.setUseCaches(
false);
109 if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
110 final InputStream in = conn.getInputStream();
111 try (
final InputStreamReader isr =
new InputStreamReader(in,
"ISO-8859-1")) {
112 try (
final BufferedReader br =
new BufferedReader(isr)) {
115 final String line = br.readLine();
121 if (metaserverEntry != null) {
124 serverCache.
put(metaserverEntry);
133 }
catch (
final IOException ignored) {
138 oldEntries.values().forEach(metaserverModel::addMetaserverEntry);
Represents a response line from the metaserver.
MetaserverEntry parseLine(@NotNull final String line)
Parses a metaserver response line.
Parser for response lines of metaserver response lines.
static MetaserverEntry parseEntry(@NotNull final CharSequence entry)
Parses a metaserver response line.