package org.torproject.jtor.control.commands;
import org.torproject.jtor.TorConfig;
import org.torproject.jtor.control.ControlConnectionHandler;
import org.torproject.jtor.control.KeyNotFoundException;
public class ControlCommandGetConf {
public static String handleGetConf(ControlConnectionHandler cch, String key) throws KeyNotFoundException {
TorConfig tc = cch.getControlServer().getTorConfig();
key = key.toLowerCase();
if (key.equals("configfile")) {
return tc.getConfigFile();
}
else if (key.equals("datadirectory")) {
return tc.getDataDirectory();
}
else if (key.equals("bandwidthrate")) {
return "" + tc.getBandwidthRate();
}
else if (key.equals("bandwidthburst")) {
return "" + tc.getBandwidthBurst();
}
else if (key.equals("maxadvertisedbandwidth")) {
return "" + tc.getMaxAdvertisedBandwidth();
}
else if (key.equals("controlport")) {
return "" + tc.getControlPort();
}
else if (key.equals("hashedcontrolpassword")) {
return tc.getHashedControlPassword();
}
else if (key.equals("cookieauthentication")) {
return "" + (tc.isCookieAuthentication() ? "1" : "0");
}
else if (key.equals("dirfetchperiod")) {
return "" + tc.getDirFetchPeriod();
}
else if (key.equals("dirserver")) {
String ret = "";
String[] val = tc.getDirServer();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("tunneldirconns")) {
return "" + (tc.isTunnelDirConns() ? "1" : "0");
}
else if (key.equals("prefertunneleddirconns")) {
return "" + (tc.isPreferTunneledDirConns() ? "1" : "0");
}
else if (key.equals("disableallswap")) {
return "" + (tc.isDisableAllSwap() ? "1" : "0");
}
else if (key.equals("group")) {
return tc.getGroup();
}
else if (key.equals("httpproxy")) {
return tc.getHttpProxy();
}
else if (key.equals("httpproxyauthenticator")) {
return tc.getHttpProxyAuthenticator();
}
else if (key.equals("httpsproxy")) {
return tc.getHttpsProxy();
}
else if (key.equals("httpsproxyauthenticator")) {
return tc.getHttpsProxyAuthenticator();
}
else if (key.equals("keepaliveperiod")) {
return "" + tc.getKeepalivePeriod();
}
else if (key.equals("log")) {
String ret = "";
String[] val = tc.getLog();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("maxconn")) {
return "" + tc.getMaxConn();
}
else if (key.equals("outboundbindaddress")) {
return tc.getOutboundBindAddress().getHostAddress();
}
else if (key.equals("pidfile")) {
return tc.getPidFile();
}
else if (key.equals("runasdaemon")) {
return "" + (tc.isRunAsDaemon() ? "1" : "0");
}
else if (key.equals("safelogging")) {
return "" + (tc.isSafeLogging() ? "1" : "0");
}
else if (key.equals("statusfetchperiod")) {
return "" + tc.getStatusFetchPeriod();
}
else if (key.equals("user")) {
return tc.getUser();
}
else if (key.equals("hardwareaccel")) {
return "" + (tc.isHardwareAccel() ? "1" : "0");
}
else if (key.equals("allowunverifiednodes")) {
return tc.getAllowUnverifiedNodes();
}
else if (key.equals("clientonly")) {
return "" + (tc.isClientOnly() ? "1" : "0");
}
else if (key.equals("entrynodes")) {
String ret = "";
String[] val = tc.getEntryNodes();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("exitnodes")) {
String ret = "";
String[] val = tc.getExitNodes();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("excludenodes")) {
String ret = "";
String[] val = tc.getExcludeNodes();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("strictexitnodes")) {
return "" + (tc.isStrictExitNodes() ? "1" : "0");
}
else if (key.equals("strictentrynodes")) {
return "" + (tc.isStrictEntryNodes() ? "1" : "0");
}
else if (key.equals("fascistfirewall")) {
return "" + (tc.isFascistFirewall() ? "1" : "0");
}
else if (key.equals("firewallports")) {
String ret = "";
short[] val = tc.getFirewallPorts();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("firewallips")) {
String ret = "";
String[] val = tc.getFirewallIPs();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("reachableaddresses")) {
return tc.getReachableAddresses();
}
else if (key.equals("longlivedports")) {
String ret = "";
short[] val = tc.getLongLivedPorts();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("mapaddress")) {
String ret = "";
String[] val = tc.getMapAddress();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("newcircuitperiod")) {
return "" + tc.getNewCircuitPeriod();
}
else if (key.equals("maxcircuitdirtiness")) {
return "" + tc.getMaxCircuitDirtiness();
}
else if (key.equals("nodefamily")) {
String ret = "";
String[] val = tc.getNodeFamily();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("rendnodes")) {
String ret = "";
String[] val = tc.getRendNodes();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("rendexcludenodes")) {
String ret = "";
String[] val = tc.getRendExcludeNodes();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("socksport")) {
return "" + tc.getSocksPort();
}
else if (key.equals("socksbindaddress")) {
return tc.getSocksBindAddress();
}
else if (key.equals("sockslistenaddress")) {
return tc.getSocksBindAddress();
}
else if (key.equals("sockspolicy")) {
return tc.getSocksPolicy();
}
else if (key.equals("trackhostexits")) {
String ret = "";
String[] val = tc.getTrackHostExits();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("trackhostexitsexpire")) {
return "" + tc.getTrackHostExitsExpire();
}
else if (key.equals("usehelpernodes")) {
return "" + (tc.isUseHelperNodes() ? "1" : "0");
}
else if (key.equals("numhelpernodes")) {
return "" + tc.getNumHelperNodes();
}
else if (key.equals("hiddenservicedir")) {
String ret = "";
String[] val = tc.getHiddenServiceDir();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("hiddenserviceport")) {
String ret = "";
String[] val = tc.getHiddenServicePort();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("hiddenservicenodes")) {
String ret = "";
String[] val = tc.getHiddenServiceNodes();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("hiddenserviceexcludenodes")) {
String ret = "";
String[] val = tc.getHiddenServiceExcludeNodes();
for (int i = 0; i < val.length; i++) {
ret += val[i] + "\n";
}
ret = ret.replaceAll("\\s*$", "");
return ret;
}
else if (key.equals("hiddenserviceversion")) {
return tc.getHiddenServiceVersion();
}
else if (key.equals("rendpostperiod")) {
return "" + tc.getRendPostPeriod();
}
else if (key.equals("__alldiroptionsprivate")) {
return "" + (tc.is__AllDirOptionsPrivate() ? "1" : "0");
}
else if (key.equals("__disablepredictedcircuits")) {
return "" + (tc.is__DisablePredictedCircuits() ? "1" : "0");
}
else if (key.equals("__leavestreamsunattached")) {
return "" + (tc.is__LeaveStreamsUnattached() ? "1" : "0");
}
else if (key.equals("__hashedcontrolsessionpassword")) {
return tc.get__HashedControlSessionPassword();
}
else if (key.equals("__reloadtorrconsighup")) {
return "" + (tc.is__ReloadTorrcOnSIGHUP() ? "1" : "0");
}
throw new KeyNotFoundException();
}
}