SYMBOL INDEX (241 symbols across 34 files) FILE: src/main/java/com/stfl/Constant.java class Constant (line 5) | public class Constant { FILE: src/main/java/com/stfl/Main.java class Main (line 16) | public class Main { method main (line 19) | public static void main(String[] args) { method startCommandLine (line 28) | private static void startCommandLine(String[] args) { method parseArgument (line 50) | private static Config parseArgument(String[] args) { method printUsage (line 109) | private static void printUsage() { FILE: src/main/java/com/stfl/MainGui.java class MainGui (line 21) | public class MainGui extends Application { method start (line 28) | @Override method addToTray (line 59) | private void addToTray() { method show (line 122) | public void show() { method hide (line 126) | public void hide() { method setTooltip (line 130) | public void setTooltip(String message) { method showNotification (line 136) | public void showNotification(String message) { FILE: src/main/java/com/stfl/misc/Config.java class Config (line 42) | public class Config { method Config (line 52) | public Config() { method Config (line 56) | public Config(String ipAddr, int port, String localIpAddr, int localPo... method Config (line 67) | public Config(String ipAddr, int port, String localIpAddr, int localPo... method setRemoteIpAddress (line 72) | public void setRemoteIpAddress(String value) { method getRemoteIpAddress (line 76) | public String getRemoteIpAddress() { method setLocalIpAddress (line 80) | public void setLocalIpAddress(String value) { method getLocalIpAddress (line 84) | public String getLocalIpAddress() { method setRemotePort (line 88) | public void setRemotePort(int value) { method getRemotePort (line 92) | public int getRemotePort() { method setLocalPort (line 96) | public void setLocalPort(int value) { method getLocalPort (line 100) | public int getLocalPort() { method setProxyType (line 104) | public void setProxyType(String value) { method setProxyType (line 114) | public void setProxyType(IProxy.TYPE value) { method getProxyType (line 117) | public IProxy.TYPE getProxyType() { method setMethod (line 121) | public void setMethod(String value) { method getMethod (line 125) | public String getMethod() { method setPassword (line 129) | public void setPassword(String value) { method getPassword (line 133) | public String getPassword() { method setLogLevel (line 137) | public void setLogLevel(String value) { method getLogLevel (line 142) | public String getLogLevel() { method loadFromJson (line 146) | public void loadFromJson(String jsonStr) { method saveToJson (line 163) | public String saveToJson() { FILE: src/main/java/com/stfl/misc/Log.java class Log (line 41) | public class Log { method init (line 44) | public static void init() { method init (line 48) | public static void init(Level level) { method init (line 77) | public static void init(String level) { method addHandler (line 82) | public static void addHandler(Handler handler) { method getRootLogger (line 93) | private static Logger getRootLogger() { FILE: src/main/java/com/stfl/misc/Reflection.java class Reflection (line 5) | public class Reflection { method get (line 6) | public static Object get(String className, Object... args) { FILE: src/main/java/com/stfl/misc/UTF8Control.java class UTF8Control (line 12) | public class UTF8Control extends ResourceBundle.Control { method newBundle (line 13) | public ResourceBundle newBundle FILE: src/main/java/com/stfl/misc/Util.java class Util (line 46) | public class Util { method dumpBytes (line 47) | public static String dumpBytes(byte[] a) { method randomBytes (line 54) | public static byte[] randomBytes(int size) { method getErrorMessage (line 60) | public static String getErrorMessage(Throwable e) { method prettyPrintJson (line 67) | public static String prettyPrintJson(JSONObject jObj) { method getRequestedHostInfo (line 124) | public static String getRequestedHostInfo(byte[] data) { method bytesToString (line 164) | public static String bytesToString(byte[] data, int start, int length) { method composeSSHeader (line 176) | public static byte[] composeSSHeader(String host, int port) { method saveFile (line 189) | public static boolean saveFile(String fn, String content) { method getFileContent (line 201) | public static String getFileContent(String fn) { method byteToUnsignedByte (line 213) | private static short byteToUnsignedByte(byte b) { method getPort (line 217) | private static int getPort(byte b, byte b1) { FILE: src/main/java/com/stfl/network/IServer.java type IServer (line 3) | public interface IServer extends Runnable { method close (line 4) | void close(); FILE: src/main/java/com/stfl/network/LocalServer.java class LocalServer (line 53) | public class LocalServer implements IServer { method LocalServer (line 60) | public LocalServer(Config config) throws IOException, InvalidAlgorithm... method run (line 74) | @Override method close (line 88) | public void close() { FILE: src/main/java/com/stfl/network/NioLocalServer.java class NioLocalServer (line 56) | public class NioLocalServer extends SocketHandlerBase { method NioLocalServer (line 63) | public NioLocalServer(Config config) throws IOException, InvalidAlgori... method initSelector (line 77) | @Override method processPendingRequest (line 89) | @Override method processSelect (line 107) | @Override method accept (line 124) | private void accept(SelectionKey key) throws IOException { method read (line 140) | private void read(SelectionKey key) throws IOException { method write (line 169) | private void write(SelectionKey key) throws IOException { method cleanUp (line 196) | @Override method close (line 213) | @Override FILE: src/main/java/com/stfl/network/io/PipeSocket.java class PipeSocket (line 52) | public class PipeSocket implements Runnable { method PipeSocket (line 66) | public PipeSocket(Executor executor, Socket socket, Config config) thr... method run (line 77) | @Override method initRemote (line 92) | private Socket initRemote(Config config) throws IOException { method getLocalWorker (line 96) | private Runnable getLocalWorker() { method getRemoteWorker (line 166) | private Runnable getRemoteWorker() { method close (line 209) | public void close() { method sendRemote (line 233) | private boolean sendRemote(byte[] data, int length) { method _sendRemote (line 240) | private boolean _sendRemote(byte[] data, int length) { method sendLocal (line 257) | private boolean sendLocal(byte[] data, int length) { method _sendLocal (line 264) | private boolean _sendLocal(byte[] data, int length) { FILE: src/main/java/com/stfl/network/nio/ChangeRequest.java class ChangeRequest (line 39) | public class ChangeRequest { method ChangeRequest (line 48) | public ChangeRequest(SocketChannel socket, int type, int op) { method ChangeRequest (line 54) | public ChangeRequest(SocketChannel socket, int type) { FILE: src/main/java/com/stfl/network/nio/ISocketHandler.java type ISocketHandler (line 37) | public interface ISocketHandler { method send (line 38) | void send(ChangeRequest request, byte[] data); method send (line 39) | void send(ChangeRequest request); FILE: src/main/java/com/stfl/network/nio/PipeEvent.java class PipeEvent (line 37) | public class PipeEvent { method PipeEvent (line 41) | public PipeEvent() {} method PipeEvent (line 43) | public PipeEvent(byte[] data, boolean isEncrypted) { FILE: src/main/java/com/stfl/network/nio/PipeWorker.java class PipeWorker (line 52) | public class PipeWorker implements Runnable { method PipeWorker (line 65) | public PipeWorker(ISocketHandler localHandler, SocketChannel localChan... method close (line 78) | public void close() { method forceClose (line 83) | public void forceClose() { method processData (line 102) | public void processData(byte[] data, int count, boolean isEncrypted) { method run (line 113) | @Override FILE: src/main/java/com/stfl/network/nio/RemoteSocketHandler.java class RemoteSocketHandler (line 52) | public class RemoteSocketHandler extends SocketHandlerBase { method RemoteSocketHandler (line 55) | public RemoteSocketHandler(Config config) throws IOException, InvalidA... method initSelector (line 59) | @Override method processPendingRequest (line 64) | @Override method processSelect (line 97) | @Override method createPipe (line 112) | public PipeWorker createPipe(ISocketHandler localHandler, SocketChanne... method read (line 135) | private void read(SelectionKey key) throws IOException { method write (line 167) | private void write(SelectionKey key) throws IOException { method finishConnection (line 194) | private void finishConnection(SelectionKey key) throws IOException { method cleanUp (line 208) | @Override FILE: src/main/java/com/stfl/network/nio/SocketHandlerBase.java class SocketHandlerBase (line 55) | public abstract class SocketHandlerBase implements IServer, ISocketHandl... method initSelector (line 64) | protected abstract Selector initSelector() throws IOException; method processPendingRequest (line 65) | protected abstract boolean processPendingRequest(ChangeRequest request); method processSelect (line 66) | protected abstract void processSelect(SelectionKey key); method SocketHandlerBase (line 69) | public SocketHandlerBase(Config config) throws IOException, InvalidAlg... method run (line 77) | @Override method createWriteBuffer (line 116) | protected void createWriteBuffer(SocketChannel socketChannel) { method cleanUp (line 125) | protected void cleanUp(SocketChannel socketChannel) { method send (line 141) | @Override method send (line 165) | @Override method close (line 170) | public void close() { FILE: src/main/java/com/stfl/network/proxy/AutoProxy.java class AutoProxy (line 13) | public class AutoProxy implements IProxy { method AutoProxy (line 18) | public AutoProxy() { method isReady (line 22) | @Override method getType (line 27) | @Override method getResponse (line 32) | @Override method getRemoteResponse (line 40) | @Override method isMine (line 48) | @Override method init (line 56) | private void init(byte[] data) { FILE: src/main/java/com/stfl/network/proxy/HttpProxy.java class HttpProxy (line 48) | public class HttpProxy implements IProxy { method HttpProxy (line 57) | public HttpProxy() { method getType (line 62) | public TYPE getType() { method isReady (line 66) | public boolean isReady() { method getResponse (line 70) | public byte[] getResponse(byte[] data) { method getRemoteResponse (line 83) | public List getRemoteResponse(byte[] data) { method isMine (line 109) | @Override method getHttpMethod (line 127) | private Map getHttpMethod(byte[] data) { method reconstructHttpHeader (line 163) | private byte[] reconstructHttpHeader(Map method, byte[... method setHttpMethod (line 216) | private void setHttpMethod(Map header) { FILE: src/main/java/com/stfl/network/proxy/IProxy.java type IProxy (line 36) | public interface IProxy { type TYPE (line 37) | enum TYPE {SOCKS5, HTTP, AUTO} method isReady (line 39) | boolean isReady(); method getType (line 40) | TYPE getType(); method getResponse (line 41) | byte[] getResponse(byte[] data); method getRemoteResponse (line 42) | List getRemoteResponse(byte[] data); method isMine (line 43) | boolean isMine(byte[] data); FILE: src/main/java/com/stfl/network/proxy/ProxyFactory.java class ProxyFactory (line 41) | public class ProxyFactory { method isProxyTypeExisted (line 49) | public static boolean isProxyTypeExisted(String name) { method get (line 54) | public static IProxy get(IProxy.TYPE type) { method getSupportedProxyTypes (line 66) | public static List getSupportedProxyTypes() { FILE: src/main/java/com/stfl/network/proxy/Socks5Proxy.java class Socks5Proxy (line 41) | public class Socks5Proxy implements IProxy { type STAGE (line 47) | private enum STAGE {SOCK5_HELLO, SOCKS_ACK, SOCKS_READY} method Socks5Proxy (line 50) | public Socks5Proxy() { method getType (line 54) | public TYPE getType() { method isReady (line 58) | public boolean isReady() { method getResponse (line 62) | public byte[] getResponse(byte[] data) { method getRemoteResponse (line 88) | public List getRemoteResponse(byte[] data) { method isMine (line 114) | @Override FILE: src/main/java/com/stfl/ss/AesCrypt.java class AesCrypt (line 50) | public class AesCrypt extends CryptBase { method getCiphers (line 59) | public static Map getCiphers() { method AesCrypt (line 71) | public AesCrypt(String name, String password) { method getKeyLength (line 75) | @Override method getCipher (line 90) | @Override method getIVLength (line 120) | @Override method getKey (line 125) | @Override method _encrypt (line 130) | @Override method _decrypt (line 139) | @Override FILE: src/main/java/com/stfl/ss/BlowFishCrypt.java class BlowFishCrypt (line 48) | public class BlowFishCrypt extends CryptBase { method getCiphers (line 52) | public static Map getCiphers() { method BlowFishCrypt (line 59) | public BlowFishCrypt(String name, String password) { method getKeyLength (line 63) | @Override method getCipher (line 68) | @Override method getIVLength (line 83) | @Override method getKey (line 88) | @Override method _encrypt (line 93) | @Override method _decrypt (line 102) | @Override FILE: src/main/java/com/stfl/ss/CamelliaCrypt.java class CamelliaCrypt (line 48) | public class CamelliaCrypt extends CryptBase { method getCiphers (line 54) | public static Map getCiphers() { method CamelliaCrypt (line 63) | public CamelliaCrypt(String name, String password) { method getKeyLength (line 67) | @Override method getCipher (line 82) | @Override method getIVLength (line 103) | @Override method getKey (line 108) | @Override method _encrypt (line 113) | @Override method _decrypt (line 122) | @Override FILE: src/main/java/com/stfl/ss/CryptBase.java class CryptBase (line 50) | public abstract class CryptBase implements ICrypt { method getCipher (line 52) | protected abstract StreamBlockCipher getCipher(boolean isEncrypted) th... method getKey (line 53) | protected abstract SecretKey getKey(); method _encrypt (line 54) | protected abstract void _encrypt(byte[] data, ByteArrayOutputStream st... method _decrypt (line 55) | protected abstract void _decrypt(byte[] data, ByteArrayOutputStream st... method CryptBase (line 72) | public CryptBase(String name, String password) { method setIV (line 80) | protected void setIV(byte[] iv, boolean isEncrypt) method encrypt (line 112) | @Override method encrypt (line 132) | @Override method decrypt (line 139) | @Override method decrypt (line 158) | @Override FILE: src/main/java/com/stfl/ss/CryptFactory.java class CryptFactory (line 41) | public class CryptFactory { method isCipherExisted (line 51) | public static boolean isCipherExisted(String name) { method get (line 55) | public static ICrypt get(String name, String password) { method getSupportedCiphers (line 67) | public static List getSupportedCiphers() { FILE: src/main/java/com/stfl/ss/ICrypt.java type ICrypt (line 40) | public interface ICrypt { method encrypt (line 41) | void encrypt(byte[] data, ByteArrayOutputStream stream); method encrypt (line 42) | void encrypt(byte[] data, int length, ByteArrayOutputStream stream); method decrypt (line 43) | void decrypt(byte[] data, ByteArrayOutputStream stream); method decrypt (line 44) | void decrypt(byte[] data, int length, ByteArrayOutputStream stream); method getIVLength (line 45) | int getIVLength(); method getKeyLength (line 46) | int getKeyLength(); FILE: src/main/java/com/stfl/ss/SeedCrypt.java class SeedCrypt (line 48) | public class SeedCrypt extends CryptBase { method getCiphers (line 52) | public static Map getCiphers() { method SeedCrypt (line 59) | public SeedCrypt(String name, String password) { method getKeyLength (line 63) | @Override method getCipher (line 68) | @Override method getIVLength (line 83) | @Override method getKey (line 88) | @Override method _encrypt (line 93) | @Override method _decrypt (line 102) | @Override FILE: src/main/java/com/stfl/ss/ShadowSocksKey.java class ShadowSocksKey (line 44) | public class ShadowSocksKey implements SecretKey { method ShadowSocksKey (line 51) | public ShadowSocksKey(String password) { method ShadowSocksKey (line 56) | public ShadowSocksKey(String password, int length) { method init (line 62) | private byte[] init(String password) { method getAlgorithm (line 104) | @Override method getFormat (line 109) | @Override method getEncoded (line 114) | @Override FILE: src/main/java/com/stfl/ui/LogLayoutController.java class LogLayoutController (line 9) | public class LogLayoutController { method initialize (line 19) | @FXML method handleClear (line 26) | @FXML method handleClose (line 31) | @FXML method setStage (line 36) | public void setStage(Stage stage) { FILE: src/main/java/com/stfl/ui/MainLayoutController.java class MainLayoutController (line 29) | public class MainLayoutController { method initialize (line 57) | @FXML method handleStart (line 101) | @FXML method handleStop (line 161) | @FXML method handleLog (line 174) | @FXML method handleClose (line 179) | @FXML method setMainGui (line 184) | public void setMainGui(MainGui gui) { method closeServer (line 188) | public void closeServer() { method validationInput (line 192) | private boolean validationInput(String pattern, String text) { method showAlert (line 196) | private void showAlert(String title, String message, Alert.AlertType t... FILE: src/main/java/com/stfl/ui/TextAreaLogHandler.java class TextAreaLogHandler (line 9) | public class TextAreaLogHandler extends StreamHandler { method setTextArea (line 12) | public void setTextArea(TextArea textArea) { method publish (line 16) | @Override