Improve fixing thrown errors

This commit is contained in:
Ben van Hartingsveldt 2025-07-11 17:21:47 +02:00
parent d8f2920ac2
commit 71b5b64ba8
No known key found for this signature in database
GPG key ID: 261AA214130CE7AB
4 changed files with 86 additions and 53 deletions

View file

@ -4,6 +4,7 @@ import com.lbry.globe.object.Node;
import com.lbry.globe.object.Service;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.net.Inet6Address;
@ -42,20 +43,23 @@ public class API{
}
public static void loadNodes(){
try{
BufferedReader br = new BufferedReader(new FileReader("nodes.json"));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine())!=null){
sb.append(line);
File file = new File("nodes.json");
if(file.exists()){
try{
BufferedReader br = new BufferedReader(new FileReader(file));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine())!=null){
sb.append(line);
}
JSONObject obj = new JSONObject(sb.toString());
for(String key : obj.keySet()){
API.NODES.put(InetAddress.getByName(key),Node.fromJSONObject(obj.getJSONObject(key)));
}
br.close();
}catch(Exception e){
API.LOGGER.log(Level.WARNING,"Failed loading nodes.",e);
}
JSONObject obj = new JSONObject(sb.toString());
for(String key : obj.keySet()){
API.NODES.put(InetAddress.getByName(key),Node.fromJSONObject(obj.getJSONObject(key)));
}
br.close();
}catch(Exception e){
API.LOGGER.log(Level.WARNING,"Failed loading nodes.",e);
}
}

View file

@ -3,6 +3,7 @@ package com.lbry.globe.thread;
import com.lbry.globe.api.API;
import com.lbry.globe.object.Node;
import com.lbry.globe.object.Service;
import com.lbry.globe.util.Environment;
import com.lbry.globe.util.GeoIP;
import java.io.BufferedReader;
@ -19,33 +20,36 @@ import org.json.JSONObject;
public class BlockchainNodeFinderThread implements Runnable{
@Override
public void run() {
while(true){
try{
HttpURLConnection conn = (HttpURLConnection) new URI(System.getenv("BLOCKCHAIN_RPC_URL")).toURL().openConnection();
conn.setDoOutput(true);
conn.addRequestProperty("Authorization","Basic "+ Base64.getEncoder().encodeToString((System.getenv("BLOCKCHAIN_USERNAME")+":"+System.getenv("BLOCKCHAIN_PASSWORD")).getBytes()));
conn.connect();
conn.getOutputStream().write(new JSONObject().put("id",new Random().nextInt()).put("method","getnodeaddresses").put("params",new JSONArray().put(2147483647)).toString().getBytes());
InputStream in = conn.getInputStream();
if(in==null){
in = conn.getErrorStream();
public void run(){
String rpcURL = Environment.getVariable("BLOCKCHAIN_RPC_URL");
if(rpcURL!=null){
while(true){
try{
HttpURLConnection conn = (HttpURLConnection) new URI(rpcURL).toURL().openConnection();
conn.setDoOutput(true);
conn.addRequestProperty("Authorization","Basic "+ Base64.getEncoder().encodeToString((Environment.getVariable("BLOCKCHAIN_USERNAME")+":"+Environment.getVariable("BLOCKCHAIN_PASSWORD")).getBytes()));
conn.connect();
conn.getOutputStream().write(new JSONObject().put("id",new Random().nextInt()).put("method","getnodeaddresses").put("params",new JSONArray().put(2147483647)).toString().getBytes());
InputStream in = conn.getInputStream();
if(in==null){
in = conn.getErrorStream();
}
BufferedReader br = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine())!=null){
sb.append(line);
}
JSONObject json = new JSONObject(sb.toString());
manageBlockchainNodes(json.getJSONArray("result"));
}catch(Exception e){
e.printStackTrace();
}
BufferedReader br = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine())!=null){
sb.append(line);
try {
Thread.sleep(10_000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
JSONObject json = new JSONObject(sb.toString());
manageBlockchainNodes(json.getJSONArray("result"));
}catch(Exception e){
e.printStackTrace();
}
try {
Thread.sleep(10_000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}

View file

@ -0,0 +1,17 @@
package com.lbry.globe.util;
public class Environment{
public static String getVariable(String key){
return Environment.getVariable(key,null);
}
public static String getVariable(String key,String defaultValue){
String value = System.getenv(key);
if(value==null){
return defaultValue;
}
return value;
}
}

View file

@ -14,7 +14,7 @@ public class GeoIP{
private static final Map<InetAddress,JSONObject> CACHE = new TreeMap<>(Comparator.comparing(InetAddress::getHostAddress));
private static final Logger LOGGER = Logger.getLogger("GeoIP");
private static final String TOKEN = System.getenv("IPINFO_TOKEN");
private static final String TOKEN = Environment.getVariable("IPINFO_TOKEN");
public static JSONObject getCachedGeoIPInformation(InetAddress ip){
JSONObject result = CACHE.get(ip);
@ -33,7 +33,12 @@ public class GeoIP{
public static JSONObject getGeoIPInformation(InetAddress ip) throws IOException,URISyntaxException{
HttpURLConnection conn = (HttpURLConnection) new URI("https://ipinfo.io/"+ip.getHostAddress()+"?token="+GeoIP.TOKEN).toURL().openConnection();
conn.connect();
InputStream in = conn.getInputStream();
InputStream in = null;
try{
in = conn.getInputStream();
}catch(Exception e){
GeoIP.LOGGER.log(Level.WARNING,"GeoIP service returned status code '"+conn.getResponseCode()+"'.");
}
if(in==null){
in = conn.getErrorStream();
}
@ -56,20 +61,23 @@ public class GeoIP{
}
public static void loadCache(){
try{
BufferedReader br = new BufferedReader(new FileReader("geoip.json"));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine())!=null){
sb.append(line);
File file = new File("geoip.json");
if(file.exists()){
try{
BufferedReader br = new BufferedReader(new FileReader(file));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine())!=null){
sb.append(line);
}
JSONObject obj = new JSONObject(sb.toString());
for(String key : obj.keySet()){
GeoIP.CACHE.put(InetAddress.getByName(key),obj.getJSONObject(key));
}
br.close();
}catch(Exception e){
GeoIP.LOGGER.log(Level.WARNING,"Failed loading GeoIP cache.",e);
}
JSONObject obj = new JSONObject(sb.toString());
for(String key : obj.keySet()){
GeoIP.CACHE.put(InetAddress.getByName(key),obj.getJSONObject(key));
}
br.close();
}catch(Exception e){
GeoIP.LOGGER.log(Level.WARNING,"Failed loading GeoIP cache.",e);
}
}