102 lines
2.3 KiB
Java
102 lines
2.3 KiB
Java
package org.kne.cloud.network.klalb;
|
|
|
|
import java.io.*;
|
|
import java.util.*;
|
|
|
|
import org.kne.cloud.network.mport.IPPort;
|
|
import org.kne.cloud.network.mport.ServiceElement;
|
|
|
|
import com.google.gson.stream.JsonReader;
|
|
import com.google.gson.stream.JsonWriter;
|
|
|
|
public class ProxyJson {
|
|
private File f;
|
|
private List<ProxyElement> pls=new ArrayList<>();
|
|
public List<ProxyElement> getPls() {
|
|
return pls;
|
|
}
|
|
public ProxyJson(File f,STJson def) throws IOException {
|
|
super();
|
|
this.f = f;
|
|
if(!f.exists()||f.length()==0l) {
|
|
f.createNewFile();
|
|
JsonWriter jw=null;
|
|
try {
|
|
jw=new JsonWriter(new FileWriter(f));
|
|
jw.setIndent(" ");
|
|
jw.beginObject();
|
|
jw.name("services");
|
|
jw.beginArray();
|
|
for (Iterator<ServiceElement> iterator = def.getServices().iterator(); iterator.hasNext();) {
|
|
ServiceElement proxye = (ServiceElement) iterator.next();
|
|
jw.beginObject();
|
|
jw.name("name");
|
|
jw.value(proxye.name);
|
|
jw.name("protocol");
|
|
jw.value(proxye.protocol);
|
|
jw.name("localaddress");
|
|
jw.value(proxye.ipport.toString());
|
|
jw.name("bindaddress");
|
|
jw.value("0.0.0.0:"+proxye.ipport.getPort());
|
|
jw.endObject();
|
|
}
|
|
jw.endArray();
|
|
jw.endObject();
|
|
}finally{
|
|
if(jw!=null)
|
|
jw.close();
|
|
}
|
|
}
|
|
JsonReader jr=null;
|
|
try {
|
|
jr=new JsonReader(new FileReader(f));
|
|
jr.beginObject();
|
|
while(jr.hasNext()) {
|
|
String name=jr.nextName();
|
|
switch(name) {
|
|
case "services":
|
|
jr.beginArray();
|
|
while(jr.hasNext()) {
|
|
jr.beginObject();
|
|
ProxyElement pe=new ProxyElement();
|
|
ServiceElement se=new ServiceElement();
|
|
pe.setSe(se);
|
|
while(jr.hasNext()) {
|
|
String n3=jr.nextName();
|
|
switch(n3) {
|
|
case "name":
|
|
se.name=jr.nextString();
|
|
break;
|
|
case "protocol":
|
|
se.protocol=jr.nextString();
|
|
break;
|
|
case "localaddress":
|
|
se.ipport=new IPPort (jr.nextString());
|
|
break;
|
|
case "bindaddress":
|
|
pe.setIpport(new IPPort (jr.nextString()));
|
|
break;
|
|
default:
|
|
jr.skipValue();
|
|
break;
|
|
}
|
|
}
|
|
pls.add(pe);
|
|
jr.endObject();
|
|
}
|
|
jr.endArray();
|
|
break;
|
|
default:
|
|
jr.skipValue();
|
|
break;
|
|
}
|
|
}
|
|
jr.endObject();
|
|
}finally {
|
|
if(jr!=null)
|
|
jr.close();
|
|
}
|
|
}
|
|
|
|
}
|