package org.torproject.jtor.control.commands; import org.torproject.jtor.TorConfig; import org.torproject.jtor.control.ControlConnectionHandler; public class ControlCommandSignal { /** * Handles a signal from an incoming control connection * @param in - the signal to be executed * @return true if successful, false if signal not found/supported */ public static boolean handleSignal(ControlConnectionHandler cch, String in) { in = in.toLowerCase(); TorConfig tc = cch.getControlServer().getTorConfig(); if (in.equals("reload")) { if (tc.is__ReloadTorrcOnSIGHUP()) { tc.loadDefaults(); tc.loadConf(); } } else if (in.equals("shutdown")) { System.exit(0); } else if (in.equals("dump")) { // TODO what needs to be dumped here? } else if (in.equals("debug")) { // TODO we currently have just the debug level } else if (in.equals("halt")) { System.exit(0); } else if (in.equals("cleardnscache")) { java.security.Security.setProperty("networkaddress.cache.ttl" , "0"); Thread.yield(); System.gc(); java.security.Security.setProperty("networkaddress.cache.ttl" , "-1"); } else if (in.equals("newnym")) { java.security.Security.setProperty("networkaddress.cache.ttl" , "0"); Thread.yield(); System.gc(); java.security.Security.setProperty("networkaddress.cache.ttl" , "-1"); // TODO make new circuits and new connections must use these circuits } else { return false; } return true; } }