From c1f0589c642188ce16344c2342a1ff93a4c57580 Mon Sep 17 00:00:00 2001 From: sanbo Date: Wed, 3 Feb 2021 18:18:16 +0800 Subject: [PATCH 01/12] update log --- .../github/megatronking/netbare/NetBare.java | 2 +- .../megatronking/netbare/NetBareLog.java | 1445 ++++++++++++++++- 2 files changed, 1378 insertions(+), 69 deletions(-) diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBare.java b/netbare-core/src/main/java/com/github/megatronking/netbare/NetBare.java index 971a4f5..7c0a5b7 100644 --- a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBare.java +++ b/netbare-core/src/main/java/com/github/megatronking/netbare/NetBare.java @@ -77,7 +77,7 @@ private NetBare() { */ public NetBare attachApplication(@NonNull Application application, boolean debug) { mApp = application; - NetBareLog.setDebug(debug); + NetBareLog.getInstance().setDebug(debug); return this; } diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareLog.java b/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareLog.java index d9aff21..f94168a 100644 --- a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareLog.java +++ b/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareLog.java @@ -15,7 +15,45 @@ */ package com.github.megatronking.netbare; +import android.annotation.TargetApi; +import android.app.Activity; +import android.content.Intent; +import android.os.BaseBundle; +import android.os.Build; +import android.os.Bundle; +import android.os.Message; +import android.text.TextUtils; import android.util.Log; +import android.util.SparseArray; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringReader; +import java.io.StringWriter; +import java.lang.ref.Reference; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; /** * A static log util using in NetBare, and the tag is 'NetBare'; @@ -25,145 +63,1416 @@ */ public final class NetBareLog { - private static final String TAG = "NetBare"; - private static boolean sDebug; + //是否使用 + private static final boolean INTERNAL_CONTROL_ENABLE = true; + // 是否打印bug.建议在application中调用init接口初始化 + public static boolean USER_DEBUG; + // 解析属性最大层级 + private static int MAX_CHILD_LEVEL; + // 换行符 + private static String BR; + private static int JSON_INDENT; + // 是否接受shell控制打印 + private static boolean isShellControl; + // 是否打印详细log,详细打印调用的堆栈 + private static boolean isNeedCallstackInfo; + // 是否按照条形框输出,有包裹域的输出 + private static boolean isNeedWrapper; + // 是否格式化展示,主要针对JSON + private static boolean isFormat; + private static Pattern mPattern; + // 默认tag + private static String DEFAULT_TAG; + // 临时tag.用法:调用log中大于1个参数,且第一个参数为字符串,且不是format用法,字符串长度没超过协议值,此时启用临时tag + private static String TEMP_TAG; + // 规定每段显示的长度.每行最大日志长度 (Android Studio3.1最多2902字符) + private static int LOG_MAXLENGTH; + // 类名(getClassName).方法名(getMethodName)[行号(getLineNumber)] + private static String content_simple_callstack; + // 格式化时,行首封闭符 + private static String CONTENT_LINE; + // 空格 + private static String CONTENT_SPACE; + private static String CONTENT_LOG_INFO; + private static String CONTENT_LOG_EMPTY; + private static String content_title_begin; + private static String content_title_info_callstack; + private static String content_title_info_log; + private static String content_title_info_error; + private static String content_title_info_type; + private static String content_title_end; + /** + * 行首为该符号时,不增加行首封闭符 + */ + private static String CONTENT_A; + private static String CONTENT_B; + private static String CONTENT_C; + private static String CONTENT_D; + private static String CONTENT_E; + private static String CONTENT_WARNNING_SHELL; + private static Character FORMATER; + + + static { + if (INTERNAL_CONTROL_ENABLE) { + // 解析属性最大层级 + MAX_CHILD_LEVEL = 3; + // 换行符 + BR = System.getProperty("line.separator"); + JSON_INDENT = 2; + // 是否打印bug.建议在application中调用init接口初始化 + USER_DEBUG = true; + // 是否接受shell控制打印 + isShellControl = true; + // 是否打印详细log,详细打印调用的堆栈 + isNeedCallstackInfo = false; + // 是否按照条形框输出,有包裹域的输出 + isNeedWrapper = false; + // 是否格式化展示,主要针对JSON + isFormat = false; + mPattern = Pattern.compile("%", Pattern.CASE_INSENSITIVE); + // 默认tag + DEFAULT_TAG = "sanbo"; + // 临时tag.用法:调用log中大于1个参数,且第一个参数为字符串,且不是format用法,字符串长度没超过协议值,此时启用临时tag + TEMP_TAG = ""; + // 规定每段显示的长度.每行最大日志长度 (Android Studio3.1最多2902字符) + LOG_MAXLENGTH = 2900; + // 类名(getClassName).方法名(getMethodName)[行号(getLineNumber)] + content_simple_callstack = "简易调用堆栈: %s.%s[%d]"; + // 格式化时,行首封闭符 + CONTENT_LINE = "║ "; + // 空格 + CONTENT_SPACE = " "; + CONTENT_LOG_INFO = "log info:"; + CONTENT_LOG_EMPTY = "打印的日志信息为空!"; + content_title_begin = + "╔═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════"; + content_title_info_callstack = + "╔══════════════════════════════════════════════════════════════调用详情══════════════════════════════════════════════════════════════"; + content_title_info_log = + "╔══════════════════════════════════════════════════════════════日志详情══════════════════════════════════════════════════════════════"; + content_title_info_error = + "╔══════════════════════════════════════════════════════════════异常详情══════════════════════════════════════════════════════════════"; + content_title_info_type = + "╔════════════════════════════════════════════════════「%s」════════════════════════════════════════════════════"; + content_title_end = + "╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════"; + /** + * 行首为该符号时,不增加行首封闭符 + */ + CONTENT_A = CONTENT_LINE; + CONTENT_B = "╔"; + CONTENT_C = "╚"; + CONTENT_D = " ╔"; + CONTENT_E = " ╚"; + CONTENT_WARNNING_SHELL = + "Wranning....不够打印级别,请在命令行设置指令后重新尝试打印,命令行指令: adb shell setprop log.tag." + DEFAULT_TAG + " "; + Character FORMATER = '%'; + } + } private NetBareLog() { } - /* package */ static void setDebug(boolean debug) { - sDebug = debug; + /** + * 初始化接口 + * + * @param showLog 是否展示log,默认展示 + * @param shellControl 是否使用shell控制log动态打印.默认不使用. shell设置方式:setprop log.tag.sanbo INFO + * 最后一个参数为log等级,可选项目:VERBOSE/DEBUG/INFO/WARN/ERROR/ASSERT + * @param needWarpper 是否需要格式化输出 + * @param needCallStackInfo 是否需要打印详细的堆栈调用信息. + * @param format 是否需要格式化. + * @param defaultTag android logcat的tag一个意义,不设置默认的tag为"sanbo" + */ + public static void init(boolean showLog, boolean shellControl, boolean needWarpper, boolean needCallStackInfo, + boolean format, String defaultTag) { + USER_DEBUG = showLog; + isShellControl = shellControl; + isNeedWrapper = needWarpper; + isNeedCallstackInfo = needCallStackInfo; + isFormat = format; + if (!TextUtils.isEmpty(defaultTag)) { + DEFAULT_TAG = defaultTag; + } + } + + /*********************************************************************************************************/ + public static void v(Object... args) { + if (isShellControl) { + if (!Log.isLoggable(DEFAULT_TAG, Log.VERBOSE)) { + Log.v(DEFAULT_TAG, CONTENT_WARNNING_SHELL + "VERBOSE"); + return; + } + } + parserArgsMain(MLEVEL.VERBOSE, args); + } + + public static void d(Object... args) { + if (isShellControl) { + if (!Log.isLoggable(DEFAULT_TAG, Log.DEBUG)) { + Log.d(DEFAULT_TAG, CONTENT_WARNNING_SHELL + "DEBUG"); + return; + } + } + parserArgsMain(MLEVEL.DEBUG, args); + } + + public static void i(Object... args) { + if (isShellControl) { + if (!Log.isLoggable(DEFAULT_TAG, Log.INFO)) { + Log.i(DEFAULT_TAG, CONTENT_WARNNING_SHELL + "INFO"); + return; + } + } + parserArgsMain(MLEVEL.INFO, args); } + /*********************************************************************************************************/ /** - * Print a verbose level log in console. + * 支持可变参数打印,根据不同的结构支持. 可以统一成一个接口 + */ + + public static void w(Object... args) { + if (isShellControl) { + if (!Log.isLoggable(DEFAULT_TAG, Log.WARN)) { + Log.w(DEFAULT_TAG, CONTENT_WARNNING_SHELL + "WARN"); + return; + } + } + parserArgsMain(MLEVEL.WARN, args); + } + + public static void e(Object... args) { + if (isShellControl) { + if (!Log.isLoggable(DEFAULT_TAG, Log.ERROR)) { + Log.e(DEFAULT_TAG, CONTENT_WARNNING_SHELL + "ERROR"); + return; + } + } + parserArgsMain(MLEVEL.ERROR, args); + } + + public static void wtf(Object... args) { + if (isShellControl) { + if (!Log.isLoggable(DEFAULT_TAG, Log.ASSERT)) { + Log.wtf(DEFAULT_TAG, CONTENT_WARNNING_SHELL + "ASSERT"); + return; + } + } + parserArgsMain(MLEVEL.WTF, args); + } + + /** + * 解析参数入口.这步骤开始忽略类型.解析所有参数,参数检查逻辑: 1.是否为String,若为String,则先判断是否格式化输出,不是再进行字符串转换格式尝试 2.对象其他类型判断: + * StringBuffer>StringBuild>Throwable>Intent>List>Map * - * @param msg The message you would like logged. + * @param level + * @param args */ - public static void v(String msg) { - if (!sDebug || msg == null) { + private static void parserArgsMain(int level, Object[] args) { + + /* + * 确认打印 + */ + if (!USER_DEBUG || !INTERNAL_CONTROL_ENABLE) { return; } - Log.v(TAG, msg); + + StringBuilder sb = new StringBuilder(); + // 开始 + if (isFormat) { + sb.append(CONTENT_LOG_INFO).append("\n"); + } + String stackinfo = getCallStaceInfo(); + if (!TextUtils.isEmpty(stackinfo)) { + sb.append(stackinfo).append("\n"); + } + + if (args[0] instanceof String) { + // if (isNeedWrapper) { + // sb.append(content_title_info_log).append("\n"); + // } + String one = (String) args[0]; + // 解析fromat + if (one.contains(String.valueOf(FORMATER)) && args.length > 1) { + + /* + * 参数解析 + */ + Object[] temp = new Object[args.length - 1]; + for (int i = 1; i < args.length; i++) { + temp[i - 1] = args[i]; + } + + // 查找%个数 + Matcher m = mPattern.matcher(one); + int count = 0; + while (m.find()) { + count++; + } + + /** + * %和后面参数一样,则格式化,否则不进行格式化 + */ + if (count == temp.length) { + // 格式化操作 + String log = String.format(Locale.getDefault(), one, temp); + if (isNeedWrapper) { + sb.append(content_title_info_log).append("\n"); + } + sb.append(wrapperString(log)).append("\n"); + } else { + if (isNeedWrapper) { + sb.append(content_title_info_log).append("\n"); + } + StringBuilder tempSB = new StringBuilder(); + for (Object obj : args) { + // 解析成字符串,添加 + String tempStr = objectToString(obj); + // Log.i(DEFAULT_TAG, "tempStr:" + tempStr); + if (!TextUtils.isEmpty(tempStr)) { + // sb.append(nativeWrapperString(temp)).append("\n"); + tempSB.append(tempStr).append("\t"); + } + } + sb.append(wrapperString(tempSB.toString())).append("\n"); + } + } else { + // 不符合format规则数据 + if (args.length > 1) { + // 大于一次参数,第一个参数是字符串,默认是tag + String log = processTagCase(args); + if (!TextUtils.isEmpty(log)) { + sb.append(wrapperString(log)).append("\n"); + } else { + // 需要支持打印""或者null + sb.append(wrapperString("")).append("\n"); + } + } else { + if (isNeedWrapper) { + sb.append(content_title_info_log).append("\n"); + } + sb.append(wrapperString(one)).append("\n"); + } + } + } else { + + for (Object obj : args) { + // 解析成字符串,添加 + String temp = processObjectCase(obj); + // Log.i(DEFAULT_TAG, "temp:" + temp); + if (!TextUtils.isEmpty(temp)) { + // sb.append(nativeWrapperString(temp)).append("\n"); + sb.append(temp).append("\n"); + } + } + } + // 结束,标记结束符 + if (isNeedWrapper) { + sb.append(content_title_end); + } + // 打印字符 + preparePrint(level, sb.toString()); + } /** - * Print a verbose level log in console. + * 处理对象 * - * @param msg The message you would like logged. - * @param args Arguments referenced by the format specifiers in the format string. + * @param obj + * @return */ - public static void v(String msg, Object... args) { - v(format(msg, args)); + private static String processObjectCase(Object obj) { + + StringBuilder sb = new StringBuilder(); + try { + // 1.解析对象 + String result = objectToString(obj); + if (!TextUtils.isEmpty(result)) { + // 2.打印行头 + header(obj, sb); + // 3.打印内容 + sb.append(wrapperString(result));// .append("\n"); + } else { + // 需要支持""或null + if (isNeedWrapper) { + sb.append(content_title_info_log).append("\n"); + } + sb.append(wrapperString(""));// .append("\n"); + } + } catch (Throwable e) { + } + return sb.toString(); } /** - * Print a debug level log in console. + *
+     * 只有第一个参数为字符串且不是格式化的情况下才会进入该方法.
+     * 该方法是负责处理tag或者message的情况. 主要要支持多重格式:
+     * 1.L.x(TAG,Object);
+     * 2.L.x(msg,Object);
+     * 默认第一个参数为字符串且参数大于2个,第一个参数就为tag
+     * 
* - * @param msg The message you would like logged. + * @param args + * @return */ - public static void d(String msg) { - if (!sDebug || msg == null) { - return; + private static String processTagCase(Object[] args) { + String one = (String) args[0]; + StringBuilder sb = new StringBuilder(); + TEMP_TAG = one; + for (int i = 1; i < args.length; i++) { + sb.append(processObjectCase(args[i])).append("\n"); } - Log.d(TAG, msg); + return sb.toString(); } /** - * Print a debug level log in console. + * 打印行头 * - * @param msg The message you would like logged. - * @param args Arguments referenced by the format specifiers in the format string. + * @param obj + * @param sb */ - public static void d(String msg, Object... args) { - d(format(msg, args)); + private static void header(Object obj, StringBuilder sb) { + if (isNeedWrapper) { + if (obj instanceof String) { + sb.append(content_title_info_log).append("\n"); + } else if (obj instanceof Throwable) { + sb.append(content_title_info_error).append("\n"); + } else { + sb.append(String.format(content_title_info_type, obj.getClass().getName())).append("\n"); + } + } } /** - * Print a info level log in console. + * 处理堆栈信息 * - * @param msg The message you would like logged. + * @return */ - public static void i(String msg) { - if (!sDebug || msg == null) { - return; + private static String getCallStaceInfo() { + Exception callStack = new Exception("debug_info call stack."); + StringBuilder sb = new StringBuilder(); + StackTraceElement stackElement[] = Thread.currentThread().getStackTrace(); + // 现在文件 + boolean currentFile = false; + // 现在文件多重调用 + boolean isKeeping = false; + for (StackTraceElement ste : stackElement) { + if (currentFile && !isKeeping) { + break; + } + if (ste.getClassName().equals(NetBareLog.class.getName())) { + if (!currentFile) { + currentFile = true; + } + isKeeping = true; + continue; + } else { + if (currentFile) { + + // 堆栈的错误第一行可以不要 + String cc = null; + if (isNeedCallstackInfo) { + cc = parseString(callStack); + String[] tempArray = cc.split("\n"); + StringBuilder tempSB = new StringBuilder(); + for (int i = 1; i < tempArray.length; i++) { + tempSB.append(CONTENT_SPACE).append(CONTENT_SPACE).append(CONTENT_SPACE) + .append(tempArray[i]); + if (i != tempArray.length - 1) { + tempSB.append("\n"); + } + } + cc = tempSB.toString(); + } + + if (isNeedWrapper) { + if (isNeedCallstackInfo) { + + sb.append("\n").append(content_title_info_callstack).append("\n").append(CONTENT_LINE) + .append(CONTENT_SPACE).append("文件名: " + ste.getFileName()).append("\n") + .append(CONTENT_LINE).append(CONTENT_SPACE).append("类名: " + ste.getClassName()) + .append("\n").append(CONTENT_LINE).append(CONTENT_SPACE) + .append("方法名: " + ste.getMethodName()).append("\n").append(CONTENT_LINE) + .append(CONTENT_SPACE).append("行号: " + ste.getLineNumber()).append("\n") + .append(CONTENT_LINE).append(CONTENT_SPACE) + .append("Native方法:" + (!ste.isNativeMethod() ? "不是" : "是")).append("\n") + .append(CONTENT_LINE).append(CONTENT_SPACE).append("调用堆栈详情:").append("\n") + .append(wrapperString(cc)); + } else { + sb.append("\n").append(content_title_begin).append("\n").append(CONTENT_LINE) + .append(String.format(content_simple_callstack, ste.getClassName(), ste.getMethodName(), + ste.getLineNumber())); + // 上一层会处理 + // .append("\n"); + } + } else { + if (isNeedCallstackInfo) { + sb.append("文件名: " + ste.getFileName()).append("\n") + .append("类名: " + ste.getClassName()).append("\n") + .append("方法名: " + ste.getMethodName()).append("\n") + .append("行号: " + ste.getLineNumber()).append("\n") + .append("Native方法:" + (!ste.isNativeMethod() ? "不是" : "是")).append("\n") + .append("调用堆栈详情:").append("\n").append(wrapperString(cc)); + } else { + if (isFormat) { + sb.append(String.format(content_simple_callstack, ste.getClassName(), + ste.getMethodName(), ste.getLineNumber())); + } + } + } + + isKeeping = false; + break; + } + } } - Log.i(TAG, msg); + currentFile = false; + isKeeping = false; + callStack = null; + stackElement = null; + return sb.toString(); } + /*********************************************************************************************************/ /** - * Print a info level log in console. + * 基础工具方法 + */ + /*********************************************************************************************************/ + + /*********************************************************************************************************/ + private static String objectToString(Object object) { + return objectToString(object, 0); + } + + /** + * 是否为静态内部类 * - * @param msg The message you would like logged. - * @param args Arguments referenced by the format specifiers in the format string. + * @param cla + * @return */ - public static void i(String msg, Object... args) { - i(format(msg, args)); + private static boolean isStaticInnerClass(Class cla) { + if (cla != null && cla.isMemberClass()) { + int modifiers = cla.getModifiers(); + return (modifiers & Modifier.STATIC) == Modifier.STATIC; + } + return false; } /** - * Print a error level log in console. + * 根据类型匹配 * - * @param msg The message you would like logged. + * @param object + * @param childLevel + * @return */ - public static void e(String msg) { - if (!sDebug || msg == null) { - return; + private static String objectToString(Object object, int childLevel) { + if (object == null) { + return null; + } + if (childLevel > MAX_CHILD_LEVEL) { + return object.toString(); + } + // 支持的类型.单独处理 + Class czz = object.getClass(); + + if (Build.VERSION.SDK_INT > 20) { + if (BaseBundle.class.isAssignableFrom(czz)) { + BaseBundle bundle = (BaseBundle) object; + return parseString(bundle); + } + } else { + if (Bundle.class.isAssignableFrom(czz)) { + Bundle bundle = (Bundle) object; + return parseString(bundle); + } + } + if (String.class.isAssignableFrom(czz)) { + String obj = (String) object; + return parseString(obj); + } else if (Number.class.isAssignableFrom(czz)) { + Number obj = (Number) object; + return String.valueOf(obj); + } else if (Intent.class.isAssignableFrom(czz)) { + Intent obj = (Intent) object; + return parseString(obj); + } else if (Collection.class.isAssignableFrom(czz)) { + Collection obj = (Collection) object; + return parseString(obj); + } else if (Map.class.isAssignableFrom(czz)) { + Map obj = (Map) object; + return parseString(obj); + } else if (Throwable.class.isAssignableFrom(czz)) { + Throwable obj = (Throwable) object; + return parseString(obj); + } else if (Reference.class.isAssignableFrom(czz)) { + Reference obj = (Reference) object; + return parseString(obj); + } else if (Message.class.isAssignableFrom(czz)) { + Message obj = (Message) object; + return parseString(obj); + // } else if (isSubClass(czz, Activity.class)) { + } else if (Activity.class.isAssignableFrom(czz)) { + Activity obj = (Activity) object; + return parseString(obj); + } else if (JSONArray.class.isAssignableFrom(czz)) { + JSONArray obj = (JSONArray) object; + return format(obj); + } else if (JSONObject.class.isAssignableFrom(czz)) { + JSONObject obj = (JSONObject) object; + return format(obj); + } else if (StringBuilder.class.isAssignableFrom(czz)) { + StringBuilder obj = (StringBuilder) object; + return obj.toString(); + } else if (StringBuffer.class.isAssignableFrom(czz)) { + StringBuffer obj = (StringBuffer) object; + return obj.toString(); + } else if (Class.class.isAssignableFrom(czz)) { + return parseStringByObject(object, childLevel); + } else if (isArray(object)) { + StringBuilder result = new StringBuilder(); + traverseArray(result, object); + return result.toString(); + } else { + if (object.toString().startsWith(object.getClass().getName() + "@")) { + return parseStringByObject(object, childLevel); + } else { + // 若对象重写toString()方法默认走toString() + return object.toString(); + } } - Log.e(TAG, msg); } /** - * Print a error level log in console. + * 拼接class的字段和值 * - * @param msg The message you would like logged. - * @param args Arguments referenced by the format specifiers in the format string. + * @param cla + * @param obj + * @param o 对象 + * @param childOffset 递归解析属性的层级 */ - public static void e(String msg, Object... args) { - e(format(msg, args)); + private static void getClassFields(Class cla, JSONObject obj, Object o, int childOffset) { + try { + if (cla.equals(Object.class)) { + return; + } + // if (isSubClass) { + // builder.append(BR + BR + "=> "); + // } + Field[] fields = cla.getDeclaredFields(); + for (int i = 0; i < fields.length; ++i) { + Field field = fields[i]; + field.setAccessible(true); + if (cla.isMemberClass() && !isStaticInnerClass(cla) && i == 0) { + continue; + } + + if (field.getName().equals("$change")) { + continue; + } + // 解决Instant Run情况下内部类死循环的问题 + // System.out.println(field.getName()+ "***" +subObject.getClass() + "啊啊啊啊啊啊" + + // cla); + if (!isStaticInnerClass(cla) + && (field.getName().equals("$change") || field.getName().equalsIgnoreCase("this$0"))) { + continue; + } + Object subObject = null; + try { + subObject = field.get(o); + } catch (IllegalAccessException e) { + subObject = e; + } finally { + if (subObject != null) { + + if (childOffset < MAX_CHILD_LEVEL) { + if (!Number.class.isAssignableFrom(subObject.getClass())) { + subObject = objectToString(subObject, childOffset + 1); + String s = (String) subObject; + s = s.replaceAll("\n", "").replaceAll("\r", "").replaceAll("\r\n", ""); + try { + JSONObject temp = new JSONObject(s); + obj.put(field.getName(), temp); + } catch (Throwable e) { + try { + JSONArray arr = new JSONArray(s); + obj.put(field.getName(), arr); + } catch (Throwable e2) { + obj.put(field.getName(), s); + } + } + } else { + obj.put(field.getName(), subObject); + } + } else { + obj.put(field.getName(), subObject.toString()); + } + } else { + obj.put(field.getName(), "null"); + } + } + } + } catch (Throwable e) { + } } + /*********************************************************************************************************/ /** - * Print a warning level log in console. + * 解析对象成字符串 + */ + + /** + * 获取数组的纬度 * - * @param msg The message you would like logged. + * @param object + * @return */ - public static void w(String msg) { - if (!sDebug || msg == null) { - return; + private static int getArrayDimension(Object object) { + int dim = 0; + for (int i = 0; i < object.toString().length(); ++i) { + if (object.toString().charAt(i) == '[') { + ++dim; + } else { + break; + } } - Log.w(TAG, msg); + return dim; } /** - * Print a warning level log in console. + * 是否为数组 * - * @param msg The message you would like logged. - * @param args Arguments referenced by the format specifiers in the format string. + * @param object + * @return */ - public static void w(String msg, Object... args) { - w(format(msg, args)); + private static boolean isArray(Object object) { + return object.getClass().isArray(); } /** - * Print a fatal level log in console. + * 获取数组类型 * - * @param throwable The error you would like logged. + * @param object 如L为int型 + * @return */ - public static void wtf(Throwable throwable) { - if (!sDebug || throwable == null) { - return; + private static char getType(Object object) { + if (isArray(object)) { + String str = object.toString(); + return str.substring(str.lastIndexOf("[") + 1, str.lastIndexOf("[") + 2).charAt(0); + } + return 0; + } + + /** + * 遍历数组 + * + * @param result + * @param array + */ + private static void traverseArray(StringBuilder result, Object array) { + if (isArray(array)) { + if (getArrayDimension(array) == 1) { + switch (getType(array)) { + case 'I': + result.append(Arrays.toString((int[]) array)); + break; + case 'D': + result.append(Arrays.toString((double[]) array)); + break; + case 'Z': + result.append(Arrays.toString((boolean[]) array)); + break; + case 'B': + result.append(Arrays.toString((byte[]) array)); + break; + case 'S': + result.append(Arrays.toString((short[]) array)); + break; + case 'J': + result.append(Arrays.toString((long[]) array)); + break; + case 'F': + result.append(Arrays.toString((float[]) array)); + break; + case 'C': + result.append(Arrays.toString((char[]) array)); + break; + case 'L': + Object[] objects = (Object[]) array; + result.append("["); + for (int i = 0; i < objects.length; ++i) { + result.append(objectToString(objects[i])); + if (i != objects.length - 1) { + result.append(","); + } + } + result.append("]"); + break; + default: + result.append(Arrays.toString((Object[]) array)); + break; + } + } else { + result.append("["); + for (int i = 0; i < ((Object[]) array).length; i++) { + traverseArray(result, ((Object[]) array)[i]); + if (i != ((Object[]) array).length - 1) { + result.append(","); + } + } + result.append("]"); + } + } else { + result.append("not a array!!"); + } + } + + private static String parseStringByObject(Object object, int childLevel) { + try { + JSONObject obj = new JSONObject(); + getClassFields(object.getClass(), obj, object, childLevel); + Class superClass = object.getClass().getSuperclass(); + if (superClass != null) { + while (!superClass.equals(Object.class)) { + getClassFields(superClass, obj, object, childLevel); + superClass = superClass.getSuperclass(); + } + } else { + obj.put("toString", object.toString()); + } + return format(obj); + } catch (Throwable e) { + return object.toString(); + } + } + + private static String parseString(Activity activity) { + JSONObject obj = new JSONObject(); + // Field[] fields = activity.getClass().getDeclaredFields(); + Field[] fields = activity.getClass().getFields(); + for (Field f : fields) { + f.setAccessible(true); + if ("org.aspectj.lang.JoinPoint$StaticPart".equals(f.getType().getName())) { + continue; + } + if (f.getName().equals("$change") || f.getName().equalsIgnoreCase("this$0")) { + continue; + } + try { + Object fieldValue = f.get(activity); + obj.put(f.getName(), objectToString(fieldValue)); + } catch (Throwable e) { + } + } + + StringBuilder builder = new StringBuilder(activity.getClass().getName()); + builder.append(" {"); + builder.append(BR); + for (Field field : fields) { + field.setAccessible(true); + if ("org.aspectj.lang.JoinPoint$StaticPart".equals(field.getType().getName())) { + continue; + } + if (field.getName().equals("$change") || field.getName().equalsIgnoreCase("this$0")) { + continue; + } + try { + Object fieldValue = field.get(activity); + builder.append(field.getName()).append("=>").append(objectToString(fieldValue)).append(BR); + } catch (IllegalAccessException e) { + } + } + builder.append("}"); + Log.d("www", builder.toString()); + return format(obj); + } + + private static String parseString(Message message) { + if (message == null) { + return null; + } + JSONObject obj = new JSONObject(); + try { + obj.put("what", message.what); + obj.put("when", message.getWhen()); + obj.put("arg1", message.arg1); + obj.put("arg2", message.arg2); + obj.put("data", parseString(message.getData())); + obj.put("obj", objectToString(message.obj)); + } catch (Exception e) { + } + return format(obj); + } + + private static String parseString(Reference reference) { + Object actual = reference.get(); + return objectToString(actual); + } + + private static String parseString(Map map) { + JSONObject obj = new JSONObject(); + Set keys = map.keySet(); + for (Object key : keys) { + try { + Object value = map.get(key); + if (key == null) { + key = "null"; + } + if (value != null) { + obj.put(objectToString(key), objectToString(value)); + } else { + obj.put(objectToString(key), "null"); + } + } catch (Throwable e) { + } + } + return format(obj); + + } + + private static String parseString(Collection collection) { + + JSONArray arr = new JSONArray(); + Iterator it = collection.iterator(); + while (it.hasNext()) { + Object o = it.next(); + arr.put(objectToString(o)); + } + return format(arr); + } + + @TargetApi(21) + private static String parseString(BaseBundle bundle) { + if (bundle != null) { + JSONObject bun = new JSONObject(); + for (String key : bundle.keySet()) { + try { + bun.put(key, objectToString(bundle.get(key))); + } catch (Throwable e) { + } + } + return format(bun); } - Log.wtf(TAG, throwable); + return null; } - private static String format(String format, Object... objs) { - if (objs == null || objs.length == 0) { - return format; + private static String parseString(Bundle bundle) { + if (bundle != null) { + JSONObject bun = new JSONObject(); + for (String key : bundle.keySet()) { + try { + bun.put(key, objectToString(bundle.get(key))); + } catch (Throwable e) { + } + } + return format(bun); + } + return null; + } + + /** + * 处理对象且返回.处理顺序是: JSONObject>JSONArray>XML + * + * @param src + * @return + */ + private static String parseString(String src) { + try { + JSONObject oo = new JSONObject(src); + return format(oo); + } catch (JSONException e1) { + // 不是JSONObject + try { + JSONArray arr = new JSONArray(src); + return format(arr); + } catch (JSONException e2) { + // 不是JSONArray + + StringReader reader = null; + try { + reader = new StringReader(src); + Source xmlInput = new StreamSource(reader); + StreamResult xmlOutput = new StreamResult(new StringWriter()); + Transformer transformer = TransformerFactory.newInstance().newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); + transformer.transform(xmlInput, xmlOutput); + String xml = xmlOutput.getWriter().toString().replaceFirst(">", ">\n"); + return xml; + } catch (Throwable e3) { + // 不是XML + return src; + } finally { + if (reader != null) { + reader.close(); + } + } + } + } catch (Throwable e) { + return src; + } + } + + /** + * 将异常信息打印出来。出来数据是带行前的双竖线(如果设置wrapper是true),不带头 + * + * @param e + * @return + */ + private static String parseString(Throwable e) { + // 可以使用系统的这个接口 + // return Log.getStackTraceString(e); + // 自己实现堆栈,较之官方的增加了两个字符的缩进 + StringWriter sw = null; + PrintWriter pw = null; + StringBuilder sb = new StringBuilder(); + try { + sw = new StringWriter(); + pw = new PrintWriter(sw); + e.printStackTrace(pw); + pw.flush(); + sw.flush(); + String result = sw.toString(); + String[] ss = result.split("\n"); + String s = null; + for (int i = 0; i < ss.length; i++) { + s = ss[i]; + // 一般首第一个字符不知道是什么东西 + if (s.substring(1, 3).equalsIgnoreCase("at")) { + // 部分堆栈怕其他行缩进失误 + // if (i > 0) { + sb.append(CONTENT_SPACE).append(s); + } else { + sb.append(s); + } + if (i != ss.length - 1) { + sb.append("\n"); + } + } + } catch (Throwable error) { + } finally { + if (sw != null) { + try { + sw.close(); + } catch (IOException igone1) { + igone1.printStackTrace(); + } + } + if (pw != null) { + pw.close(); + } + } + return sb.toString(); + } + + private static String parseString(Intent intent) { + JSONObject obj = new JSONObject(); + try { + if (!TextUtils.isEmpty(intent.getScheme())) { + obj.put("Scheme", intent.getScheme()); + } + if (!TextUtils.isEmpty(intent.getAction())) { + obj.put("Action", intent.getAction()); + } + if (!TextUtils.isEmpty(intent.getDataString())) { + obj.put("DataString", intent.getDataString()); + } + if (!TextUtils.isEmpty(intent.getType())) { + obj.put("Type", intent.getType()); + } + if (!TextUtils.isEmpty(intent.getPackage())) { + obj.put("Package", intent.getPackage()); + } + if (!TextUtils.isEmpty(intent.getComponent().toString())) { + obj.put("ComponentInfo", intent.getComponent().toString()); + } + if (!TextUtils.isEmpty(intent.getCategories().toString())) { + obj.put("Categories", intent.getCategories().toString()); + } + String extras = parseString(intent.getExtras()); + if (!TextUtils.isEmpty(extras)) { + obj.put("Extras", extras); + } + String flags = getFlags(intent.getFlags()); + if (!TextUtils.isEmpty(flags)) { + obj.put("Flags", intent.getType()); + } + } catch (JSONException e) { + } + + return format(obj); + } + + private static String getFlags(int flags) { + // 获取相应信息 + SparseArray flagMap = new SparseArray(); + Class cla = Intent.class; + Field[] fields = cla.getDeclaredFields(); + for (Field field : fields) { + try { + field.setAccessible(true); + if (field.getName().startsWith("FLAG_")) { + int value = 0; + Object object = field.get(cla); + if (object instanceof Integer || object.getClass().getSimpleName().equals("int")) { + value = (Integer) object; + } + + if (flagMap.get(value) == null) { + flagMap.put(value, field.getName()); + } + } + } catch (Throwable e) { + } + } + + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < flagMap.size(); i++) { + int flagKey = flagMap.keyAt(i); + if ((flagKey & flags) == flagKey) { + builder.append(flagMap.get(flagKey)); + builder.append(" | "); + } + } + if (TextUtils.isEmpty(builder.toString())) { + builder.append(flags); + } else if (builder.indexOf("|") != -1) { + builder.delete(builder.length() - 2, builder.length()); + } + return builder.toString(); + } + + /** + * 格式化输出JSONArray + * + * @param arr + * @return + */ + private static String format(JSONArray arr) { + if (arr != null) { + try { + return isFormat ? (arr.toString(JSON_INDENT)) : arr.toString(); + } catch (Exception e) { + } + } + return ""; + } + + /** + * 格式化输出JSONObject + * + * @param obj + * @return + */ + private static String format(JSONObject obj) { + + if (obj != null) { + try { + return isFormat ? obj.toString(JSON_INDENT) : obj.toString(); + } catch (Exception e) { + } + } + return ""; + } + + /** + * 字符串处理,wrapper选中情况下,行首加封闭符 + * + * @param log + * @return + */ + private static String wrapperString(String log) { + StringBuilder sb = new StringBuilder(); + + if (TextUtils.isEmpty(log)) { + if (isNeedWrapper) { + sb.append(CONTENT_LINE); + } + sb.append(CONTENT_LOG_EMPTY); + return sb.toString(); + } + String ss[] = new String[]{}; + String temp = null; + if (log.contains("\n")) { + ss = log.split("\n"); + if (ss.length > 0) { + sb = new StringBuilder(); + for (int i = 0; i < ss.length; i++) { + temp = ss[i]; + if (isNeedWrapper && !temp.startsWith(CONTENT_A) && !temp.startsWith(CONTENT_B) + && !temp.startsWith(CONTENT_C) && !temp.startsWith(CONTENT_D) + && !temp.startsWith(CONTENT_LOG_INFO) && !TextUtils.isEmpty(temp) + && !temp.startsWith(CONTENT_E)) { + sb.append(CONTENT_LINE); + } + sb.append(temp); + + if (i != ss.length - 1) { + sb.append("\n"); + } + } + } + } else if (log.contains("\r")) { + ss = log.split("\r"); + if (ss.length > 0) { + sb = new StringBuilder(); + for (int i = 0; i < ss.length; i++) { + temp = ss[i]; + + if (isNeedWrapper && !temp.startsWith(CONTENT_A) && !temp.startsWith(CONTENT_B) + && !temp.startsWith(CONTENT_D) && !temp.startsWith(CONTENT_E) + && !temp.startsWith(CONTENT_LOG_INFO) && !TextUtils.isEmpty(temp) + && !temp.startsWith(CONTENT_C)) { + sb.append(CONTENT_LINE); + } + sb.append(temp); + if (i != ss.length - 1) { + sb.append("\r"); + } + } + } + } else if (log.contains("\r\n")) { + ss = log.split("\r\n"); + if (ss.length > 0) { + sb = new StringBuilder(); + for (int i = 0; i < ss.length; i++) { + temp = ss[i]; + + if (isNeedWrapper && !temp.startsWith(CONTENT_A) && !temp.startsWith(CONTENT_B) + && !temp.startsWith(CONTENT_D) && !temp.startsWith(CONTENT_E) + && !temp.startsWith(CONTENT_LOG_INFO) && !TextUtils.isEmpty(temp) + && !temp.startsWith(CONTENT_C)) { + sb.append(CONTENT_LINE); + } + sb.append(temp); + + if (i != ss.length - 1) { + sb.append("\r\n"); + } + } + } + } else if (log.contains("\n\r")) { + ss = log.split("\n\r"); + if (ss.length > 0) { + sb = new StringBuilder(); + for (int i = 0; i < ss.length; i++) { + temp = ss[i]; + if (isNeedWrapper && !temp.startsWith(CONTENT_A) && !temp.startsWith(CONTENT_B) + && !temp.startsWith(CONTENT_D) && !temp.startsWith(CONTENT_E) + && !temp.startsWith(CONTENT_LOG_INFO) && !TextUtils.isEmpty(temp) + && !temp.startsWith(CONTENT_C)) { + sb.append(CONTENT_LINE); + } + sb.append(temp); + + if (i != ss.length - 1) { + sb.append("\n\r"); + } + } + } } else { - return String.format(format, objs); + if (isNeedWrapper && !log.startsWith(CONTENT_A) && !log.startsWith(CONTENT_B) && !log.startsWith(CONTENT_D) + && !log.startsWith(CONTENT_LOG_INFO) && !TextUtils.isEmpty(log) && !log.startsWith(CONTENT_E) + && !log.startsWith(CONTENT_C)) { + sb.append(CONTENT_LINE); + } + sb.append(log); } + return sb.toString(); + } + + /** + * 动态检查临时.切割大文件 + * + * @param level + * @param msg + */ + private static void preparePrint(int level, String msg) { + String tag = DEFAULT_TAG; + if (!TextUtils.isEmpty(TEMP_TAG)) { + tag = TEMP_TAG; + } + + if (msg.length() > LOG_MAXLENGTH) { + List splitStr = getStringBysplitLine(msg, LOG_MAXLENGTH); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < splitStr.size(); i++) { + /** + * 防止每行过短测试原始压缩 + */ + String line = splitStr.get(i); + if (sb.toString().getBytes().length + line.getBytes().length >= LOG_MAXLENGTH) { + realPrint(level, tag, wrapperString(sb.toString())); + sb = new StringBuffer().append(line); + } else { + sb.append(line); + } + + } + if (sb.toString().length() > 0) { + realPrint(level, tag, wrapperString(sb.toString())); + sb = null; + } + } else { + realPrint(level, tag, wrapperString(msg)); + } + TEMP_TAG = ""; + } + + /*********************************************************************************************************/ + /** + * 格式化字符串、异常、JSONArray、JSONObject + */ + /*********************************************************************************************************/ + + /** + * 真正打印单个信息 + * + * @param level + * @param tag + * @param printStr + */ + private static void realPrint(int level, String tag, String printStr) { + switch (level) { + case MLEVEL.DEBUG: + Log.d(tag, printStr); + break; + case MLEVEL.INFO: + Log.i(tag, printStr); + break; + case MLEVEL.ERROR: + Log.e(tag, printStr); + break; + case MLEVEL.VERBOSE: + Log.v(tag, printStr); + break; + case MLEVEL.WARN: + Log.w(tag, printStr); + break; + case MLEVEL.WTF: + Log.wtf(tag, printStr); + break; + default: + break; + } + } + + /** + * 按行分割字符串 + * + * @param msg + * @param maxLen + * @return + */ + private static List getStringBysplitLine(String msg, int maxLen) { + List result = new ArrayList(); + String[] lines = msg.split("\n"); + if (lines.length == 1) { + lines = msg.split("\r"); + if (lines.length == 1) { + lines = msg.split("\r\n"); + if (lines.length == 1) { + lines = msg.split("\n\r"); + } + } + } +// Log.e("sanbo", msg.length() + "-----" + maxLen); +// Log.e("sanbo", "分割成多行:" + lines.length); + if (lines.length > 1) { + for (int i = 0; i < lines.length; i++) { + String line = lines[i]; + // 单行都超过最大长度,直接按照字符串分别来做 + processLine(maxLen, result, line); + } + } else { + processLine(maxLen, result, msg); + } + + return result; + } + + /*********************************************************************************************************/ + /** + * 字符串包裹处理 + */ + /*********************************************************************************************************/ + + /** + * 处理单行超长处理 + * + * @param maxLen + * @param result + * @param line + */ + private static void processLine(int maxLen, List result, String line) { + if (line.length() > maxLen) { + int current = 0; + String str; + while (true) { + try { + str = line.substring(current, current + maxLen); + result.add(str); + current += maxLen; + } catch (StringIndexOutOfBoundsException e) { + str = line.substring(current, line.length()); + result.add(str); + break; + } + } + } else { + result.add(line); + } + } + + /*********************************************************************************************************/ + /** + * 打印方法 + */ + /*********************************************************************************************************/ + + /** + * 设置调试状态 + * + * @param isShowLog + * @return + */ + public NetBareLog setDebug(boolean isShowLog) { + USER_DEBUG = isShowLog; + return HLODER.INSTANCE; + } + + /** + * 设置tag + * + * @param defaultTag + * @return + */ + public NetBareLog setTag(String defaultTag) { + if (!TextUtils.isEmpty(defaultTag)) { + DEFAULT_TAG = defaultTag; + } + return HLODER.INSTANCE; + } + + + public static NetBareLog getInstance() { + return HLODER.INSTANCE; + } + + private static class HLODER { + private static final NetBareLog INSTANCE = new NetBareLog(); + } + + public static final class MLEVEL { + public static final int VERBOSE = 0x1; + public static final int DEBUG = 0x2; + public static final int INFO = 0x3; + public static final int WARN = 0x4; + public static final int ERROR = 0x5; + public static final int WTF = 0x6; } } From b344733aff6ece88b8dd9d86afacc24fe35215d2 Mon Sep 17 00:00:00 2001 From: sanbo Date: Wed, 3 Feb 2021 18:19:36 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0dump=20id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/github/megatronking/netbare/net/UidDumper.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/net/UidDumper.java b/netbare-core/src/main/java/com/github/megatronking/netbare/net/UidDumper.java index c24cff5..5af090f 100644 --- a/netbare-core/src/main/java/com/github/megatronking/netbare/net/UidDumper.java +++ b/netbare-core/src/main/java/com/github/megatronking/netbare/net/UidDumper.java @@ -73,9 +73,13 @@ public UidDumper(String localIp, UidProvider provider) { this.mDumpers.put(Protocol.TCP, new NetDumper[]{ new NetDumper("/proc/net/tcp6", localIp, IPV6_PATTERN), new NetDumper("/proc/net/tcp", localIp, IPV4_PATTERN)}); - this.mDumpers.put(Protocol.UDP, new NetDumper[] { - new NetDumper("/proc/net/udp6", localIp, IPV6_PATTERN), - new NetDumper("/proc/net/udp", localIp, IPV4_PATTERN)}); + this.mDumpers.put(Protocol.UDP, new NetDumper[]{ + new NetDumper("/proc/net/udp6", localIp, IPV6_PATTERN), + new NetDumper("/proc/net/udp", localIp, IPV4_PATTERN), + new NetDumper("/proc/net/raw6", localIp, IPV6_PATTERN), + new NetDumper("/proc/net/raw", localIp, IPV4_PATTERN) + } + ); } public void request(final Session session) { From 3470e32da01c8f8f5c3aad6e5b1ee9c5c683b2e4 Mon Sep 17 00:00:00 2001 From: sanbo Date: Thu, 4 Feb 2021 14:33:54 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E5=8D=87=E7=BA=A7free=5Freflection?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- app/src/main/java/cn/demo/appq/App.java | 6 +----- .../com/github/megatronking/netbare/NetBareUtils.java | 8 -------- .../com/github/megatronking/netbare/net/UidDumper.java | 4 ---- 4 files changed, 2 insertions(+), 18 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c8a3676..027c6ba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,7 +53,7 @@ tasks.withType(Javadoc) { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'me.weishu:free_reflection:1.2.0' + implementation 'me.weishu:free_reflection:3.0.1' implementation 'com.amitshekhar.android:debug-db:1.0.6' // NetBare libraries implementation project(':netbare-core') diff --git a/app/src/main/java/cn/demo/appq/App.java b/app/src/main/java/cn/demo/appq/App.java index cefb474..598e23c 100644 --- a/app/src/main/java/cn/demo/appq/App.java +++ b/app/src/main/java/cn/demo/appq/App.java @@ -4,7 +4,6 @@ import android.content.Context; import com.github.megatronking.netbare.NetBare; -import com.github.megatronking.netbare.NetBareUtils; import com.github.megatronking.netbare.ssl.JKS; import me.weishu.reflection.Reflection; @@ -37,10 +36,7 @@ public static JKS getJKS() { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); - // On android Q, we can't access Java8EngineWrapper with reflect. - if (NetBareUtils.isAndroidQ()) { - Reflection.unseal(base); - } + Reflection.unseal(base); } public static String getProcessNameByUid(int uid) { diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareUtils.java b/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareUtils.java index 9bcfd32..a84285c 100644 --- a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareUtils.java +++ b/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareUtils.java @@ -151,13 +151,5 @@ public static int parseInt(String string, int radix, int defaultValue) { return result; } - /** - * Whether the OS build version is Android Q. - * - * @return True means the build android Q. - */ - public static boolean isAndroidQ() { - return "Q".equals(Build.VERSION.RELEASE); - } } diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/net/UidDumper.java b/netbare-core/src/main/java/com/github/megatronking/netbare/net/UidDumper.java index 5af090f..4a5f849 100644 --- a/netbare-core/src/main/java/com/github/megatronking/netbare/net/UidDumper.java +++ b/netbare-core/src/main/java/com/github/megatronking/netbare/net/UidDumper.java @@ -90,10 +90,6 @@ public void request(final Session session) { return; } } - // Android Q abandons the access permission. - if (NetBareUtils.isAndroidQ()) { - return; - } final int port = NetBareUtils.convertPort(session.localPort); try { Net net = mNetCaches.get(session.remoteIp, new Callable() { From 06795622c4d9f67d55886010bf972ba9bcef0e5e Mon Sep 17 00:00:00 2001 From: sanbo Date: Thu, 4 Feb 2021 14:54:36 +0800 Subject: [PATCH 04/12] add clean script --- clean.sh | 44 +++++++++++ cleanCache.sh | 54 ++++++++++++++ common.sh | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 300 insertions(+) create mode 100644 clean.sh create mode 100644 cleanCache.sh create mode 100644 common.sh diff --git a/clean.sh b/clean.sh new file mode 100644 index 0000000..8ad9812 --- /dev/null +++ b/clean.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +source_common() { + pwd=$( + cd $(dirname $0) + pwd + ) + source $pwd/common.sh +} + +clean_task() { + logw "[$filename]>>>>clean project<<<<" + dir=("app" "netbare-core" "netbare-injector") + for element in "${dir[@]}"; do + #clean task + rm -rf $element/build/ + rm -rf $element/bin/ + rm -rf $element/gen/ + rm -rf $element/.externalNativeBuild + logd "[$filename]clean $element over." + done + + rm -rf build/ + rm -rf release/ + rm -rf releasebak/ + rm -rf sh.exe.stackdump + rm -rf classes.dex + rm -rf .vs/ + rm -rf .vscode/ + + if [ $# == 0 ]; then + logi "[$filename]clean project success. " + else + loge "[$filename]clean project Failed!" + fi + +} + +main() { + source_common + clean_task +} + +main diff --git a/cleanCache.sh b/cleanCache.sh new file mode 100644 index 0000000..db95ebd --- /dev/null +++ b/cleanCache.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +source_common() { + pwd=$( + cd $(dirname $0) + pwd + ) + source $pwd/common.sh +} + +clean_caches() { + + logw "[$filename]clean android studio cache!" + dir=("app" "netbare-core" "netbare-injector") + + for element in "${dir[@]}"; do + #clean task + rm -rf $element/build/ + rm -rf $element/bin/ + rm -rf $element/gen/ + rm -rf $element/.settings/ + rm -rf $element/.externalNativeBuild + rm -rf $element/$element.iml + rm -rf $element/.gradle + logd "[$filename]clean $element over." + done + + rm -rf build/ + rm -rf release/ + rm -rf releasebak/ + rm -rf *.iml + rm -rf .gradle/ + rm -rf .idea/ + rm -rf sh.exe.stackdump + rm -rf classes.dex + rm -rf local.properties + rm -rf .vs/ + rm -rf .vscode/ + + if [ $# == 0 ]; then + logw "[$filename]clean project success." + loge "[$filename]>>>>you must close android studio<<<<" + else + loge "[$filename]>>clean project Failed!<<" + fi + +} + +main() { + source_common + clean_caches +} + +main diff --git a/common.sh b/common.sh new file mode 100644 index 0000000..a11e495 --- /dev/null +++ b/common.sh @@ -0,0 +1,202 @@ +#!/usr/bin/env bash +# define global variable +# file name +filename=$(basename $0) +# define adb +iadb="adb" + +ipwd=$( + cd $(dirname $0) + pwd +) +readonly winadb="adb.exe" +readonly macadb="adb" +readonly linuxadb="adb" +mdout="mdout" +sed="sed" + +checkEnvArgs() { + unames=$(uname -s) + local cygwin="CYGWIN" + local mingw="MINGW" + local msys_nt="MSYS_NT" + local macos="Darwin" + local linux="Linux" + support_printf_os="" + if [ "$(echo $unames | grep "$cygwin")" != "" ]; then + echo "[$filename] your platform is win . cygwin" + red='\e[0;31m' + green='\e[0;32m' + yellow='\e[0;33m' + blue='\e[0;34m' + endColor='\e[0m' + ecs="echo -e" + dx="dx.bat" + gw="./gradlew.bat" + support_printf_os="" + mdout="${ipwd}\\tools\\windows\\mdout.exe" + sed="${ipwd}\\tools\\windows\\sed.exe" + if [ -z $ANDROID_HOME ]; then + iadb=$winadb + else + iadb="$ANDROID_HOME\\platform-tools\\adb.exe" + fi + elif [ "$(echo $unames | grep "$mingw")" != "" ]; then + echo "[$filename] your platform is win . mingw" + red='\033[31m' + green='\033[32m' + yellow='\033[33m' + blue='\033[34m' + endColor='\033[0m' + ecs="echo -e" + dx="dx.bat" + gw="./gradlew.bat" + support_printf_os="" + mdout="${ipwd}\\tools\\windows\\mdout.exe" + sed="${ipwd}\\tools\\windows\\sed.exe" + if [ -z $ANDROID_HOME ]; then + iadb=$winadb + else + iadb="$ANDROID_HOME\\platform-tools\\adb.exe" + fi + elif [ "$(echo $unames | grep "$msys_nt")" != "" ]; then + echo "[$filename] your platform is win10 . mingw" + red='\e[0;31m' + green='\e[0;32m' + yellow='\e[0;33m' + blue='\e[0;34m' + endColor='\e[0m' + ecs="echo -e" + dx="dx.bat" + gw="./gradlew.bat" + support_printf_os="" + mdout="${ipwd}\\tools\\windows\\mdout.exe" + sed="${ipwd}\\tools\\windows\\sed.exe" + if [ -z $ANDROID_HOME ]; then + iadb=$winadb + else + iadb="$ANDROID_HOME\\platform-tools\\adb.exe" + fi + elif [ "$(echo $unames | grep "$macos")" != "" ]; then + echo "[$filename] your platform is macos" + red='\033[31m' + green='\033[32m' + yellow='\033[33m' + blue='\033[34m' + endColor='\033[0m' + ecs="printf" + dx="dx" + gw="./gradlew" + support_printf_os="macos" + mdout="${ipwd}/tools/macos/mdout" + sed="${ipwd}/tools/macos/sed" + if [ -z $ANDROID_HOME ]; then + iadb=$macadb + else + iadb="$ANDROID_HOME/platform-tools/adb" + fi + elif [ "$(echo $unames | grep "$linux")" != "" ]; then + echo "[$filename] your platform is $linux" + red='\033[31m' + green='\033[32m' + yellow='\033[33m' + blue='\033[34m' + endColor='\033[0m' + ecs="printf" + dx="dx" + gw="./gradlew" + mdout="${ipwd}/tools/linux/mdout" + sed="${ipwd}/tools/linux/sed" + support_printf_os="$linux" + if [ -z $ANDROID_HOME ]; then + iadb=$linuxadb + else + iadb="$ANDROID_HOME/platform-tools/adb" + fi + else + echo "[$filename]your platform is $unames" + red='\033[31m' + green='\033[32m' + yellow='\033[33m' + endColor='\033[0m' + ecs="echo" + dx="dx" + gw="./gradlew" + support_printf_os="" + mdout="${ipwd}/tools/linux/mdout" + sed="${ipwd}/tools/linux/sed" + if [ -z $ANDROID_HOME ]; then + iadb=$macadb + else + iadb="$ANDROID_HOME/platform-tools/adb" + fi + fi + curtime=$(date "+%Y-%m-%d %H:%M:%S") +} + +mdout_init() { + $mdout install +} + +# make sure env +makesureEnv() { + if [ "$curtime" = "" ]; then + checkEnvArgs + fi +} +logd() { + makesureEnv + if [ "$1" ] && [ ! "$support_printf_os" ]; then + $ecs "${blue}$1${endColor}" + else + $ecs "${blue}$1${endColor}\n" + fi +} +logi() { + makesureEnv + if [ "$1" ] && [ ! "$support_printf_os" ]; then + $ecs "${green}$1${endColor}" + else + $ecs "${green}$1${endColor}\n" + fi +} +loge() { + makesureEnv + if [ "$1" ] && [ ! "$support_printf_os" ]; then + $ecs "${red}$1${endColor}" + else + $ecs "${red}$1${endColor}\n" + fi +} +logw() { + makesureEnv + if [ "$1" ] && [ ! "$support_printf_os" ]; then + $ecs "${yellow}$1${endColor}" + else + $ecs "${yellow}$1${endColor}\n" + fi +} +test() { + logd "test log" + logi "test log" + loge "test log" + logw "test log" +} +#main() { +# makesureEnv +# mdout_init +# test +# logi $mdout +#} +# +### call method +#main + +#logd $0 +#logd $1 +if [ -n "$1" ]; then + logi "has one args" + chmod -R 777 tools/ + $mdout install + git config core.filemode false +fi From 9bc2b96ae4b0c0edf3ced5652df773724d4aa6b2 Mon Sep 17 00:00:00 2001 From: sanbo Date: Thu, 4 Feb 2021 15:23:01 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0greendao?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 ++-- app/proguard-rules.pro | 12 ++++++++++++ build.gradle | 6 ++---- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 027c6ba..329c95c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,5 +1,5 @@ apply plugin: 'com.android.application' -apply plugin: 'org.greenrobot.greendao' // 应用插件 +apply plugin: 'org.greenrobot.greendao' // apply plugin greendao { // 指定数据库schema版本号,迁移等操作会用到 schemaVersion 2 @@ -59,7 +59,7 @@ dependencies { implementation project(':netbare-core') implementation project(':netbare-injector') implementation 'com.android.support:appcompat-v7:28.0.0' - implementation 'org.greenrobot:greendao:3.2.2' + implementation 'org.greenrobot:greendao:3.3.0' // add library implementation 'com.blankj:utilcode:1.29.0' implementation 'com.android.support:design:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index f1b4245..2af70b0 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -19,3 +19,15 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile +-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao { +public static java.lang.String TABLENAME; +} +-keep class **$Properties { *; } + +# If you DO use SQLCipher: +-keep class org.greenrobot.greendao.database.SqlCipherEncryptedHelper { *; } + +# If you do NOT use SQLCipher: +-dontwarn net.sqlcipher.database.** +# If you do NOT use RxJava: +-dontwarn rx.** \ No newline at end of file diff --git a/build.gradle b/build.gradle index 12bc87b..2f49378 100644 --- a/build.gradle +++ b/build.gradle @@ -10,15 +10,13 @@ buildscript { jcenter { url 'http://maven.aliyun.com/repository/jcenter' } jcenter { url 'http://maven.aliyun.com/nexus/content/groups/public/' } maven { url 'http://maven.aliyun.com/repository/gradle-plugin' } + mavenCentral() // add repository } dependencies { classpath 'com.android.tools.build:gradle:3.3.0' // classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.11" // 添加插件 - classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files + classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' // add plugin } } From c52f50a888bbc2389c5b1d3a5a7a90e4420cf303 Mon Sep 17 00:00:00 2001 From: sanbo Date: Thu, 4 Feb 2021 15:43:08 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E8=B0=83=E6=95=B4netbare=E4=B8=BA?= =?UTF-8?q?=E4=B8=80=E4=B8=AAmodule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 5 +- netbare-core/.gitignore | 1 - netbare-injector/.gitignore | 1 - netbare-injector/build.gradle | 53 ------------------- netbare-injector/src/main/AndroidManifest.xml | 4 -- netbare/.gitignore | 1 + {netbare-core => netbare}/build.gradle | 0 .../src/main/AndroidManifest.xml | 0 .../github/megatronking/netbare/NetBare.java | 0 .../megatronking/netbare/NetBareConfig.java | 0 .../megatronking/netbare/NetBareListener.java | 0 .../megatronking/netbare/NetBareLog.java | 0 .../megatronking/netbare/NetBareService.java | 0 .../megatronking/netbare/NetBareThread.java | 0 .../megatronking/netbare/NetBareUtils.java | 0 .../netbare/NetBareVirtualGateway.java | 0 .../megatronking/netbare/NetBareXLog.java | 0 .../netbare/gateway/AbstractRequestChain.java | 0 .../gateway/AbstractResponseChain.java | 0 .../gateway/DefaultVirtualGateway.java | 0 .../gateway/DefaultVirtualGatewayFactory.java | 0 .../netbare/gateway/IndexedInterceptor.java | 0 .../netbare/gateway/Interceptor.java | 0 .../netbare/gateway/InterceptorChain.java | 0 .../netbare/gateway/InterceptorFactory.java | 0 .../gateway/PendingIndexedInterceptor.java | 0 .../megatronking/netbare/gateway/Request.java | 0 .../netbare/gateway/RequestChain.java | 0 .../netbare/gateway/Response.java | 0 .../netbare/gateway/ResponseChain.java | 0 .../netbare/gateway/SSLCodecInterceptor.java | 0 .../netbare/gateway/SSLRefluxInterceptor.java | 0 .../netbare/gateway/SessionTunnelFlow.java | 0 .../netbare/gateway/SpecVirtualGateway.java | 0 .../netbare/gateway/TunnelFlow.java | 0 .../netbare/gateway/VirtualGateway.java | 0 .../gateway/VirtualGatewayFactory.java | 0 .../http/ContainerHttpInterceptor.java | 0 .../megatronking/netbare/http/Cookie.java | 0 .../netbare/http/Http2SniffInterceptor.java | 0 .../megatronking/netbare/http/HttpBody.java | 0 .../http/HttpHeaderParseInterceptor.java | 0 .../netbare/http/HttpHeaderPart.java | 2 +- .../http/HttpHeaderSeparateInterceptor.java | 0 .../http/HttpHeaderSniffInterceptor.java | 0 .../megatronking/netbare/http/HttpId.java | 0 .../netbare/http/HttpIndexedInterceptor.java | 0 .../netbare/http/HttpInjectInterceptor.java | 0 .../netbare/http/HttpInterceptor.java | 0 .../netbare/http/HttpInterceptorFactory.java | 0 .../netbare/http/HttpInterceptorsFactory.java | 0 .../megatronking/netbare/http/HttpMethod.java | 0 .../http/HttpMultiplexInterceptor.java | 0 .../http/HttpPendingIndexedInterceptor.java | 0 .../netbare/http/HttpProtocol.java | 0 .../netbare/http/HttpRawBody.java | 0 .../netbare/http/HttpRequest.java | 0 .../netbare/http/HttpRequestChain.java | 0 .../netbare/http/HttpRequestHeaderPart.java | 0 .../http/HttpRequestInjectorCallback.java | 2 +- .../netbare/http/HttpResponse.java | 0 .../netbare/http/HttpResponseChain.java | 0 .../netbare/http/HttpResponseHeaderPart.java | 0 .../http/HttpResponseInjectorCallback.java | 2 +- .../netbare/http/HttpSSLCodecInterceptor.java | 0 .../http/HttpSSLRefluxInterceptor.java | 0 .../netbare/http/HttpSSLRequestCodec.java | 0 .../netbare/http/HttpSSLResponseCodec.java | 0 .../netbare/http/HttpSession.java | 0 .../netbare/http/HttpSessionFactory.java | 0 .../netbare/http/HttpSniffInterceptor.java | 0 .../netbare/http/HttpVirtualGateway.java | 0 .../http/HttpVirtualGatewayFactory.java | 0 .../netbare/http/HttpZygoteRequest.java | 0 .../netbare/http/HttpZygoteResponse.java | 0 .../netbare/http2/DecodeCallback.java | 0 .../netbare/http2/EncodeCallback.java | 0 .../megatronking/netbare/http2/ErrorCode.java | 0 .../megatronking/netbare/http2/FrameType.java | 0 .../megatronking/netbare/http2/Hpack.java | 0 .../megatronking/netbare/http2/Http2.java | 0 .../netbare/http2/Http2DecodeInterceptor.java | 0 .../netbare/http2/Http2EncodeInterceptor.java | 0 .../netbare/http2/Http2Settings.java | 0 .../netbare/http2/Http2Stream.java | 0 .../netbare/http2/Http2Updater.java | 0 .../megatronking/netbare/http2/Huffman.java | 0 .../netbare/injector/BlockedHttpInjector.java | 0 .../netbare/injector/HttpInjector.java | 0 .../netbare/injector/InjectorCallback.java | 0 .../netbare/injector/SimpleHttpInjector.java | 0 .../netbare/io/ByteBufferInputStream.java | 0 .../netbare/io/HttpBodyInputStream.java | 0 .../megatronking/netbare/ip/Header.java | 0 .../megatronking/netbare/ip/IcmpHeader.java | 0 .../megatronking/netbare/ip/IpAddress.java | 0 .../megatronking/netbare/ip/IpHeader.java | 0 .../megatronking/netbare/ip/Protocol.java | 0 .../megatronking/netbare/ip/TcpHeader.java | 0 .../megatronking/netbare/ip/UdpHeader.java | 0 .../netbare/net/DumpCallback.java | 0 .../github/megatronking/netbare/net/Net.java | 0 .../megatronking/netbare/net/Session.java | 0 .../netbare/net/SessionProvider.java | 0 .../megatronking/netbare/net/UidDumper.java | 0 .../megatronking/netbare/net/UidProvider.java | 0 .../netbare/proxy/BaseProxyServer.java | 0 .../proxy/IcmpProxyServerForwarder.java | 0 .../netbare/proxy/ProxyServer.java | 0 .../netbare/proxy/ProxyServerForwarder.java | 0 .../netbare/proxy/TcpProxyServer.java | 0 .../proxy/TcpProxyServerForwarder.java | 0 .../netbare/proxy/UdpProxyServer.java | 0 .../proxy/UdpProxyServerForwarder.java | 0 .../netbare/ssl/CertificateGenerator.java | 0 .../ssl/CertificateInstallActivity.java | 0 .../github/megatronking/netbare/ssl/JKS.java | 0 .../megatronking/netbare/ssl/SSLCodec.java | 0 .../netbare/ssl/SSLEngineFactory.java | 0 .../netbare/ssl/SSLKeyManagerProvider.java | 0 .../netbare/ssl/SSLRefluxCallback.java | 0 .../netbare/ssl/SSLRequestCodec.java | 0 .../netbare/ssl/SSLResponseCodec.java | 0 .../netbare/ssl/SSLTrustManagerProvider.java | 0 .../megatronking/netbare/ssl/SSLUtils.java | 0 .../netbare/ssl/SSLWhiteList.java | 0 .../netbare/stream/BufferStream.java | 0 .../netbare/stream/ByteStream.java | 0 .../megatronking/netbare/stream/Stream.java | 0 .../netbare/stream/StringStream.java | 0 .../netbare/stream/TinyFileStream.java | 0 .../netbare/tcp/TcpVirtualGateway.java | 0 .../tunnel/ConnectionShutdownException.java | 0 .../netbare/tunnel/NioCallback.java | 0 .../netbare/tunnel/NioTunnel.java | 0 .../netbare/tunnel/TcpProxyTunnel.java | 0 .../netbare/tunnel/TcpRemoteTunnel.java | 0 .../netbare/tunnel/TcpTunnel.java | 0 .../netbare/tunnel/TcpVATunnel.java | 0 .../megatronking/netbare/tunnel/Tunnel.java | 0 .../netbare/tunnel/UdpRemoteTunnel.java | 0 .../netbare/tunnel/UdpTunnel.java | 0 .../netbare/tunnel/UdpVATunnel.java | 0 .../netbare/tunnel/VirtualGatewayTunnel.java | 0 .../netbare/udp/UdpVirtualGateway.java | 0 .../utils/CaseInsensitiveLinkedMap.java | 6 +-- .../netbare/ws/WebSocketCallback.java | 0 .../netbare/ws/WebSocketProtocol.java | 0 .../netbare/ws/WebSocketReader.java | 0 .../src/main/res/values/styles.xml | 0 settings.gradle | 2 +- 151 files changed, 10 insertions(+), 69 deletions(-) delete mode 100644 netbare-core/.gitignore delete mode 100644 netbare-injector/.gitignore delete mode 100644 netbare-injector/build.gradle delete mode 100644 netbare-injector/src/main/AndroidManifest.xml create mode 100644 netbare/.gitignore rename {netbare-core => netbare}/build.gradle (100%) rename {netbare-core => netbare}/src/main/AndroidManifest.xml (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/NetBare.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/NetBareConfig.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/NetBareListener.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/NetBareLog.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/NetBareService.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/NetBareThread.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/NetBareUtils.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/NetBareVirtualGateway.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/NetBareXLog.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/AbstractRequestChain.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/AbstractResponseChain.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/DefaultVirtualGateway.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/DefaultVirtualGatewayFactory.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/IndexedInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/Interceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/InterceptorChain.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/InterceptorFactory.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/PendingIndexedInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/Request.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/RequestChain.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/Response.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/ResponseChain.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/SSLCodecInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/SSLRefluxInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/SessionTunnelFlow.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/SpecVirtualGateway.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/TunnelFlow.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/VirtualGateway.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/gateway/VirtualGatewayFactory.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/ContainerHttpInterceptor.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/http/Cookie.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/Http2SniffInterceptor.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpBody.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpHeaderParseInterceptor.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpHeaderPart.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSeparateInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpId.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpIndexedInterceptor.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpInjectInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpInterceptorFactory.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpInterceptorsFactory.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpMethod.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpMultiplexInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpPendingIndexedInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpProtocol.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpRawBody.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpRequest.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpRequestChain.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpRequestHeaderPart.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpRequestInjectorCallback.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpResponse.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpResponseChain.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpResponseHeaderPart.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpResponseInjectorCallback.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpSSLCodecInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpSSLRefluxInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpSession.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpSessionFactory.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpVirtualGateway.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpVirtualGatewayFactory.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpZygoteRequest.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http/HttpZygoteResponse.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/DecodeCallback.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/EncodeCallback.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/ErrorCode.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/FrameType.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/Hpack.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/Http2.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/Http2DecodeInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/Http2EncodeInterceptor.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/Http2Settings.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/Http2Stream.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/Http2Updater.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/http2/Huffman.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/injector/BlockedHttpInjector.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/injector/HttpInjector.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/injector/InjectorCallback.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/injector/SimpleHttpInjector.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/io/ByteBufferInputStream.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/io/HttpBodyInputStream.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ip/Header.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ip/IcmpHeader.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ip/IpAddress.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ip/IpHeader.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ip/Protocol.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ip/TcpHeader.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ip/UdpHeader.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/net/DumpCallback.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/net/Net.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/net/Session.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/net/SessionProvider.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/net/UidDumper.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/net/UidProvider.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/proxy/ProxyServer.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/proxy/ProxyServerForwarder.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/CertificateGenerator.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/JKS.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/SSLKeyManagerProvider.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/SSLRefluxCallback.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/SSLTrustManagerProvider.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ssl/SSLWhiteList.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/stream/BufferStream.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/stream/ByteStream.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/stream/Stream.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/stream/StringStream.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/stream/TinyFileStream.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tcp/TcpVirtualGateway.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/ConnectionShutdownException.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/NioCallback.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/NioTunnel.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/TcpProxyTunnel.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/TcpRemoteTunnel.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/TcpVATunnel.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/Tunnel.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/UdpRemoteTunnel.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/UdpVATunnel.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/tunnel/VirtualGatewayTunnel.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/udp/UdpVirtualGateway.java (100%) rename {netbare-injector => netbare}/src/main/java/com/github/megatronking/netbare/utils/CaseInsensitiveLinkedMap.java (97%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ws/WebSocketCallback.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ws/WebSocketProtocol.java (100%) rename {netbare-core => netbare}/src/main/java/com/github/megatronking/netbare/ws/WebSocketReader.java (100%) rename {netbare-core => netbare}/src/main/res/values/styles.xml (100%) diff --git a/app/build.gradle b/app/build.gradle index 329c95c..41af154 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,10 +56,9 @@ dependencies { implementation 'me.weishu:free_reflection:3.0.1' implementation 'com.amitshekhar.android:debug-db:1.0.6' // NetBare libraries - implementation project(':netbare-core') - implementation project(':netbare-injector') + implementation project(':netbare') implementation 'com.android.support:appcompat-v7:28.0.0' - implementation 'org.greenrobot:greendao:3.3.0' // add library + implementation 'org.greenrobot:greendao:3.3.0' implementation 'com.blankj:utilcode:1.29.0' implementation 'com.android.support:design:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' diff --git a/netbare-core/.gitignore b/netbare-core/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/netbare-core/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/netbare-injector/.gitignore b/netbare-injector/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/netbare-injector/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/netbare-injector/build.gradle b/netbare-injector/build.gradle deleted file mode 100644 index 1afc7e5..0000000 --- a/netbare-injector/build.gradle +++ /dev/null @@ -1,53 +0,0 @@ -apply plugin: 'com.android.library' - -android { - compileSdkVersion 29 - - defaultConfig { - minSdkVersion 21 - targetSdkVersion 29 - versionCode 1 - versionName "1.0" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } - dexOptions { - preDexLibraries false - maxProcessCount 8 - javaMaxHeapSize "4g" - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 - } - aaptOptions { - cruncherEnabled = false - useNewCruncher = false - } - lintOptions { - checkReleaseBuilds false - abortOnError false - warningsAsErrors false - disable "UnusedResources" - textOutput "stdout" - textReport false - disable 'RestrictedApi' - } -} - -tasks.withType(Javadoc) { - options.addStringOption('Xdoclint:none', '-quiet') - options.addStringOption('encoding', 'UTF-8') - options.addStringOption('charSet', 'UTF-8') -} - - -dependencies { - implementation project(':netbare-core') - implementation 'com.android.support:appcompat-v7:28.0.0' -} \ No newline at end of file diff --git a/netbare-injector/src/main/AndroidManifest.xml b/netbare-injector/src/main/AndroidManifest.xml deleted file mode 100644 index 4ad7016..0000000 --- a/netbare-injector/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/netbare/.gitignore b/netbare/.gitignore new file mode 100644 index 0000000..378eac2 --- /dev/null +++ b/netbare/.gitignore @@ -0,0 +1 @@ +build diff --git a/netbare-core/build.gradle b/netbare/build.gradle similarity index 100% rename from netbare-core/build.gradle rename to netbare/build.gradle diff --git a/netbare-core/src/main/AndroidManifest.xml b/netbare/src/main/AndroidManifest.xml similarity index 100% rename from netbare-core/src/main/AndroidManifest.xml rename to netbare/src/main/AndroidManifest.xml diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBare.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/NetBare.java rename to netbare/src/main/java/com/github/megatronking/netbare/NetBare.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareConfig.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareConfig.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/NetBareConfig.java rename to netbare/src/main/java/com/github/megatronking/netbare/NetBareConfig.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareListener.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareListener.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/NetBareListener.java rename to netbare/src/main/java/com/github/megatronking/netbare/NetBareListener.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareLog.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareLog.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/NetBareLog.java rename to netbare/src/main/java/com/github/megatronking/netbare/NetBareLog.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareService.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/NetBareService.java rename to netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareThread.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareThread.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/NetBareThread.java rename to netbare/src/main/java/com/github/megatronking/netbare/NetBareThread.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareUtils.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareUtils.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/NetBareUtils.java rename to netbare/src/main/java/com/github/megatronking/netbare/NetBareUtils.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareVirtualGateway.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareVirtualGateway.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/NetBareVirtualGateway.java rename to netbare/src/main/java/com/github/megatronking/netbare/NetBareVirtualGateway.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/NetBareXLog.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareXLog.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/NetBareXLog.java rename to netbare/src/main/java/com/github/megatronking/netbare/NetBareXLog.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/AbstractRequestChain.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/AbstractRequestChain.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/AbstractRequestChain.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/AbstractRequestChain.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/AbstractResponseChain.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/AbstractResponseChain.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/AbstractResponseChain.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/AbstractResponseChain.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/DefaultVirtualGateway.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/DefaultVirtualGateway.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/DefaultVirtualGateway.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/DefaultVirtualGateway.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/DefaultVirtualGatewayFactory.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/DefaultVirtualGatewayFactory.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/DefaultVirtualGatewayFactory.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/DefaultVirtualGatewayFactory.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/IndexedInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/IndexedInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/IndexedInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/IndexedInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/Interceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/Interceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/Interceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/Interceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/InterceptorChain.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/InterceptorChain.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/InterceptorChain.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/InterceptorChain.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/InterceptorFactory.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/InterceptorFactory.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/InterceptorFactory.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/InterceptorFactory.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/PendingIndexedInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/PendingIndexedInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/PendingIndexedInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/PendingIndexedInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/Request.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/Request.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/Request.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/Request.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/RequestChain.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/RequestChain.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/RequestChain.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/RequestChain.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/Response.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/Response.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/Response.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/Response.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/ResponseChain.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/ResponseChain.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/ResponseChain.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/ResponseChain.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/SSLCodecInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/SSLCodecInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/SSLCodecInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/SSLCodecInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/SSLRefluxInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/SSLRefluxInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/SSLRefluxInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/SSLRefluxInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/SessionTunnelFlow.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/SessionTunnelFlow.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/SessionTunnelFlow.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/SessionTunnelFlow.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/SpecVirtualGateway.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/SpecVirtualGateway.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/SpecVirtualGateway.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/SpecVirtualGateway.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/TunnelFlow.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/TunnelFlow.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/TunnelFlow.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/TunnelFlow.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/VirtualGateway.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/VirtualGateway.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/VirtualGateway.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/VirtualGateway.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/gateway/VirtualGatewayFactory.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/VirtualGatewayFactory.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/gateway/VirtualGatewayFactory.java rename to netbare/src/main/java/com/github/megatronking/netbare/gateway/VirtualGatewayFactory.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/ContainerHttpInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/ContainerHttpInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/ContainerHttpInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/ContainerHttpInterceptor.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/Cookie.java b/netbare/src/main/java/com/github/megatronking/netbare/http/Cookie.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/http/Cookie.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/Cookie.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/Http2SniffInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/Http2SniffInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/Http2SniffInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/Http2SniffInterceptor.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpBody.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpBody.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpBody.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpBody.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpHeaderParseInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderParseInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpHeaderParseInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderParseInterceptor.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpHeaderPart.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderPart.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpHeaderPart.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderPart.java index c67c740..72971e3 100644 --- a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpHeaderPart.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderPart.java @@ -19,8 +19,8 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import com.github.megatronking.netbare.utils.CaseInsensitiveLinkedMap; import com.github.megatronking.netbare.stream.Stream; +import com.github.megatronking.netbare.utils.CaseInsensitiveLinkedMap; import java.util.ArrayList; import java.util.List; diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSeparateInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSeparateInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSeparateInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSeparateInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpId.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpId.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpId.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpId.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpIndexedInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpIndexedInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpIndexedInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpIndexedInterceptor.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpInjectInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpInjectInterceptor.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpInjectInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpInjectInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpInterceptorFactory.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpInterceptorFactory.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpInterceptorFactory.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpInterceptorFactory.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpInterceptorsFactory.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpInterceptorsFactory.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpInterceptorsFactory.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpInterceptorsFactory.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpMethod.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpMethod.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpMethod.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpMethod.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpMultiplexInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpMultiplexInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpMultiplexInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpMultiplexInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpPendingIndexedInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpPendingIndexedInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpPendingIndexedInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpPendingIndexedInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpProtocol.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpProtocol.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpProtocol.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpProtocol.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpRawBody.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpRawBody.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpRawBody.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpRawBody.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpRequest.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpRequest.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpRequest.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpRequest.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpRequestChain.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpRequestChain.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpRequestChain.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpRequestChain.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpRequestHeaderPart.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpRequestHeaderPart.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpRequestHeaderPart.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpRequestHeaderPart.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpRequestInjectorCallback.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpRequestInjectorCallback.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpRequestInjectorCallback.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpRequestInjectorCallback.java index acec681..d79f507 100644 --- a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpRequestInjectorCallback.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpRequestInjectorCallback.java @@ -15,8 +15,8 @@ */ package com.github.megatronking.netbare.http; -import com.github.megatronking.netbare.stream.Stream; import com.github.megatronking.netbare.injector.InjectorCallback; +import com.github.megatronking.netbare.stream.Stream; import java.io.IOException; import java.nio.ByteBuffer; diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpResponse.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpResponse.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpResponse.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpResponse.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpResponseChain.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpResponseChain.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpResponseChain.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpResponseChain.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpResponseHeaderPart.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpResponseHeaderPart.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpResponseHeaderPart.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpResponseHeaderPart.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpResponseInjectorCallback.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpResponseInjectorCallback.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpResponseInjectorCallback.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpResponseInjectorCallback.java index 7001a65..b574cb5 100644 --- a/netbare-injector/src/main/java/com/github/megatronking/netbare/http/HttpResponseInjectorCallback.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpResponseInjectorCallback.java @@ -15,8 +15,8 @@ */ package com.github.megatronking.netbare.http; -import com.github.megatronking.netbare.stream.Stream; import com.github.megatronking.netbare.injector.InjectorCallback; +import com.github.megatronking.netbare.stream.Stream; import java.io.IOException; import java.nio.ByteBuffer; diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSSLCodecInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLCodecInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSSLCodecInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLCodecInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSSLRefluxInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRefluxInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSSLRefluxInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRefluxInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSession.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSession.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSession.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpSession.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSessionFactory.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSessionFactory.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSessionFactory.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpSessionFactory.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpVirtualGateway.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpVirtualGateway.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpVirtualGateway.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpVirtualGateway.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpVirtualGatewayFactory.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpVirtualGatewayFactory.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpVirtualGatewayFactory.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpVirtualGatewayFactory.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpZygoteRequest.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpZygoteRequest.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpZygoteRequest.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpZygoteRequest.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpZygoteResponse.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpZygoteResponse.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpZygoteResponse.java rename to netbare/src/main/java/com/github/megatronking/netbare/http/HttpZygoteResponse.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/DecodeCallback.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/DecodeCallback.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/DecodeCallback.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/DecodeCallback.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/EncodeCallback.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/EncodeCallback.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/EncodeCallback.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/EncodeCallback.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/ErrorCode.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/ErrorCode.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/ErrorCode.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/ErrorCode.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/FrameType.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/FrameType.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/FrameType.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/FrameType.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/Hpack.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/Hpack.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/Hpack.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/Hpack.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/Http2.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2DecodeInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2DecodeInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2DecodeInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/Http2DecodeInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2EncodeInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2EncodeInterceptor.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2EncodeInterceptor.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/Http2EncodeInterceptor.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2Settings.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2Settings.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2Settings.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/Http2Settings.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2Stream.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2Stream.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2Stream.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/Http2Stream.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2Updater.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2Updater.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/Http2Updater.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/Http2Updater.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/http2/Huffman.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/Huffman.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/http2/Huffman.java rename to netbare/src/main/java/com/github/megatronking/netbare/http2/Huffman.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/injector/BlockedHttpInjector.java b/netbare/src/main/java/com/github/megatronking/netbare/injector/BlockedHttpInjector.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/injector/BlockedHttpInjector.java rename to netbare/src/main/java/com/github/megatronking/netbare/injector/BlockedHttpInjector.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/injector/HttpInjector.java b/netbare/src/main/java/com/github/megatronking/netbare/injector/HttpInjector.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/injector/HttpInjector.java rename to netbare/src/main/java/com/github/megatronking/netbare/injector/HttpInjector.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/injector/InjectorCallback.java b/netbare/src/main/java/com/github/megatronking/netbare/injector/InjectorCallback.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/injector/InjectorCallback.java rename to netbare/src/main/java/com/github/megatronking/netbare/injector/InjectorCallback.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/injector/SimpleHttpInjector.java b/netbare/src/main/java/com/github/megatronking/netbare/injector/SimpleHttpInjector.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/injector/SimpleHttpInjector.java rename to netbare/src/main/java/com/github/megatronking/netbare/injector/SimpleHttpInjector.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/io/ByteBufferInputStream.java b/netbare/src/main/java/com/github/megatronking/netbare/io/ByteBufferInputStream.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/io/ByteBufferInputStream.java rename to netbare/src/main/java/com/github/megatronking/netbare/io/ByteBufferInputStream.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/io/HttpBodyInputStream.java b/netbare/src/main/java/com/github/megatronking/netbare/io/HttpBodyInputStream.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/io/HttpBodyInputStream.java rename to netbare/src/main/java/com/github/megatronking/netbare/io/HttpBodyInputStream.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ip/Header.java b/netbare/src/main/java/com/github/megatronking/netbare/ip/Header.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ip/Header.java rename to netbare/src/main/java/com/github/megatronking/netbare/ip/Header.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ip/IcmpHeader.java b/netbare/src/main/java/com/github/megatronking/netbare/ip/IcmpHeader.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ip/IcmpHeader.java rename to netbare/src/main/java/com/github/megatronking/netbare/ip/IcmpHeader.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ip/IpAddress.java b/netbare/src/main/java/com/github/megatronking/netbare/ip/IpAddress.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ip/IpAddress.java rename to netbare/src/main/java/com/github/megatronking/netbare/ip/IpAddress.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ip/IpHeader.java b/netbare/src/main/java/com/github/megatronking/netbare/ip/IpHeader.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ip/IpHeader.java rename to netbare/src/main/java/com/github/megatronking/netbare/ip/IpHeader.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ip/Protocol.java b/netbare/src/main/java/com/github/megatronking/netbare/ip/Protocol.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ip/Protocol.java rename to netbare/src/main/java/com/github/megatronking/netbare/ip/Protocol.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ip/TcpHeader.java b/netbare/src/main/java/com/github/megatronking/netbare/ip/TcpHeader.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ip/TcpHeader.java rename to netbare/src/main/java/com/github/megatronking/netbare/ip/TcpHeader.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ip/UdpHeader.java b/netbare/src/main/java/com/github/megatronking/netbare/ip/UdpHeader.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ip/UdpHeader.java rename to netbare/src/main/java/com/github/megatronking/netbare/ip/UdpHeader.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/net/DumpCallback.java b/netbare/src/main/java/com/github/megatronking/netbare/net/DumpCallback.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/net/DumpCallback.java rename to netbare/src/main/java/com/github/megatronking/netbare/net/DumpCallback.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/net/Net.java b/netbare/src/main/java/com/github/megatronking/netbare/net/Net.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/net/Net.java rename to netbare/src/main/java/com/github/megatronking/netbare/net/Net.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/net/Session.java b/netbare/src/main/java/com/github/megatronking/netbare/net/Session.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/net/Session.java rename to netbare/src/main/java/com/github/megatronking/netbare/net/Session.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/net/SessionProvider.java b/netbare/src/main/java/com/github/megatronking/netbare/net/SessionProvider.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/net/SessionProvider.java rename to netbare/src/main/java/com/github/megatronking/netbare/net/SessionProvider.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/net/UidDumper.java b/netbare/src/main/java/com/github/megatronking/netbare/net/UidDumper.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/net/UidDumper.java rename to netbare/src/main/java/com/github/megatronking/netbare/net/UidDumper.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/net/UidProvider.java b/netbare/src/main/java/com/github/megatronking/netbare/net/UidProvider.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/net/UidProvider.java rename to netbare/src/main/java/com/github/megatronking/netbare/net/UidProvider.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java rename to netbare/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java rename to netbare/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/proxy/ProxyServer.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/ProxyServer.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/proxy/ProxyServer.java rename to netbare/src/main/java/com/github/megatronking/netbare/proxy/ProxyServer.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/proxy/ProxyServerForwarder.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/ProxyServerForwarder.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/proxy/ProxyServerForwarder.java rename to netbare/src/main/java/com/github/megatronking/netbare/proxy/ProxyServerForwarder.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java rename to netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java rename to netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java rename to netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java rename to netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/CertificateGenerator.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateGenerator.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/CertificateGenerator.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateGenerator.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/JKS.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/JKS.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/JKS.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/JKS.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLKeyManagerProvider.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLKeyManagerProvider.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLKeyManagerProvider.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLKeyManagerProvider.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLRefluxCallback.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRefluxCallback.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLRefluxCallback.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRefluxCallback.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLTrustManagerProvider.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLTrustManagerProvider.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLTrustManagerProvider.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLTrustManagerProvider.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLWhiteList.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLWhiteList.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLWhiteList.java rename to netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLWhiteList.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/stream/BufferStream.java b/netbare/src/main/java/com/github/megatronking/netbare/stream/BufferStream.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/stream/BufferStream.java rename to netbare/src/main/java/com/github/megatronking/netbare/stream/BufferStream.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/stream/ByteStream.java b/netbare/src/main/java/com/github/megatronking/netbare/stream/ByteStream.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/stream/ByteStream.java rename to netbare/src/main/java/com/github/megatronking/netbare/stream/ByteStream.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/stream/Stream.java b/netbare/src/main/java/com/github/megatronking/netbare/stream/Stream.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/stream/Stream.java rename to netbare/src/main/java/com/github/megatronking/netbare/stream/Stream.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/stream/StringStream.java b/netbare/src/main/java/com/github/megatronking/netbare/stream/StringStream.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/stream/StringStream.java rename to netbare/src/main/java/com/github/megatronking/netbare/stream/StringStream.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/stream/TinyFileStream.java b/netbare/src/main/java/com/github/megatronking/netbare/stream/TinyFileStream.java similarity index 100% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/stream/TinyFileStream.java rename to netbare/src/main/java/com/github/megatronking/netbare/stream/TinyFileStream.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tcp/TcpVirtualGateway.java b/netbare/src/main/java/com/github/megatronking/netbare/tcp/TcpVirtualGateway.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tcp/TcpVirtualGateway.java rename to netbare/src/main/java/com/github/megatronking/netbare/tcp/TcpVirtualGateway.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/ConnectionShutdownException.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/ConnectionShutdownException.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/ConnectionShutdownException.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/ConnectionShutdownException.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/NioCallback.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/NioCallback.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/NioCallback.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/NioCallback.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/NioTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/NioTunnel.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/NioTunnel.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/NioTunnel.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/TcpProxyTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpProxyTunnel.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/TcpProxyTunnel.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpProxyTunnel.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/TcpRemoteTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpRemoteTunnel.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/TcpRemoteTunnel.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpRemoteTunnel.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/TcpVATunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpVATunnel.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/TcpVATunnel.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpVATunnel.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/Tunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/Tunnel.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/Tunnel.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/Tunnel.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/UdpRemoteTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpRemoteTunnel.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/UdpRemoteTunnel.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpRemoteTunnel.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/UdpVATunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpVATunnel.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/UdpVATunnel.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpVATunnel.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/VirtualGatewayTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/VirtualGatewayTunnel.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/VirtualGatewayTunnel.java rename to netbare/src/main/java/com/github/megatronking/netbare/tunnel/VirtualGatewayTunnel.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/udp/UdpVirtualGateway.java b/netbare/src/main/java/com/github/megatronking/netbare/udp/UdpVirtualGateway.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/udp/UdpVirtualGateway.java rename to netbare/src/main/java/com/github/megatronking/netbare/udp/UdpVirtualGateway.java diff --git a/netbare-injector/src/main/java/com/github/megatronking/netbare/utils/CaseInsensitiveLinkedMap.java b/netbare/src/main/java/com/github/megatronking/netbare/utils/CaseInsensitiveLinkedMap.java similarity index 97% rename from netbare-injector/src/main/java/com/github/megatronking/netbare/utils/CaseInsensitiveLinkedMap.java rename to netbare/src/main/java/com/github/megatronking/netbare/utils/CaseInsensitiveLinkedMap.java index d02457e..d8dcb9b 100644 --- a/netbare-injector/src/main/java/com/github/megatronking/netbare/utils/CaseInsensitiveLinkedMap.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/utils/CaseInsensitiveLinkedMap.java @@ -118,9 +118,9 @@ private static final class EntrySet extends AbstractSet> { private static final class MapEntry implements Entry { - private final Entry entry; + private final Entry entry; - private MapEntry(Entry entry) { + private MapEntry(Entry entry) { this.entry = entry; } @@ -139,7 +139,7 @@ public V setValue(V value) { return this.entry.setValue(value); } - private Entry getEntry() { + private Entry getEntry() { return this.entry; } } diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ws/WebSocketCallback.java b/netbare/src/main/java/com/github/megatronking/netbare/ws/WebSocketCallback.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ws/WebSocketCallback.java rename to netbare/src/main/java/com/github/megatronking/netbare/ws/WebSocketCallback.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ws/WebSocketProtocol.java b/netbare/src/main/java/com/github/megatronking/netbare/ws/WebSocketProtocol.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ws/WebSocketProtocol.java rename to netbare/src/main/java/com/github/megatronking/netbare/ws/WebSocketProtocol.java diff --git a/netbare-core/src/main/java/com/github/megatronking/netbare/ws/WebSocketReader.java b/netbare/src/main/java/com/github/megatronking/netbare/ws/WebSocketReader.java similarity index 100% rename from netbare-core/src/main/java/com/github/megatronking/netbare/ws/WebSocketReader.java rename to netbare/src/main/java/com/github/megatronking/netbare/ws/WebSocketReader.java diff --git a/netbare-core/src/main/res/values/styles.xml b/netbare/src/main/res/values/styles.xml similarity index 100% rename from netbare-core/src/main/res/values/styles.xml rename to netbare/src/main/res/values/styles.xml diff --git a/settings.gradle b/settings.gradle index 79bd00c..e2fd1bc 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':netbare-core', ':netbare-injector', ':app' +include ':netbare', ':app' From 68b9c8963e3f664ace33bc158ac71370cfa01f8f Mon Sep 17 00:00:00 2001 From: sanbo Date: Thu, 4 Feb 2021 17:03:15 +0800 Subject: [PATCH 07/12] update build script --- app/build.gradle | 5 ++--- netbare/build.gradle | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 41af154..abe7905 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,12 +10,11 @@ greendao { } android { - compileSdkVersion 29 - buildToolsVersion "29.0.3" + compileSdkVersion 30 defaultConfig { applicationId "com.good.vpn" minSdkVersion 21 - targetSdkVersion 29 + targetSdkVersion 30 versionCode 1 versionName "1.0" } diff --git a/netbare/build.gradle b/netbare/build.gradle index 020b4c0..e2f6a8a 100644 --- a/netbare/build.gradle +++ b/netbare/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 29 + compileSdkVersion 30 defaultConfig { minSdkVersion 21 - targetSdkVersion 29 + targetSdkVersion 30 versionCode 1 versionName "1.0" } From 874aa217d68e0f94cc13dd89c720ecc5855ef1fd Mon Sep 17 00:00:00 2001 From: sanbo Date: Thu, 4 Feb 2021 17:52:58 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E6=9B=B4=E6=96=B0log=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=EF=BC=8C=E9=BB=98=E8=AE=A4=E6=89=93=E5=8D=B0=E7=AE=80?= =?UTF-8?q?=E6=98=93=E5=A0=86=E6=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/appq/presenter/NetBarePresenter.java | 6 +- .../netbare/{NetBareLog.java => EL.java} | 81 ++++++++++++++----- .../github/megatronking/netbare/NetBare.java | 2 +- .../megatronking/netbare/NetBareService.java | 4 +- .../megatronking/netbare/NetBareThread.java | 11 ++- .../megatronking/netbare/NetBareUtils.java | 3 +- .../netbare/NetBareVirtualGateway.java | 4 +- .../netbare/{NetBareXLog.java => XLog.java} | 32 ++++---- .../netbare/gateway/SSLCodecInterceptor.java | 6 +- .../netbare/http/Http2SniffInterceptor.java | 8 +- .../http/HttpHeaderParseInterceptor.java | 8 +- .../http/HttpHeaderSeparateInterceptor.java | 8 +- .../http/HttpHeaderSniffInterceptor.java | 10 +-- .../http/HttpMultiplexInterceptor.java | 6 +- .../netbare/http/HttpSSLCodecInterceptor.java | 6 +- .../netbare/http/HttpSSLRequestCodec.java | 4 +- .../netbare/http/HttpSSLResponseCodec.java | 6 +- .../netbare/http/HttpSniffInterceptor.java | 6 +- .../netbare/http2/Http2DecodeInterceptor.java | 8 +- .../netbare/http2/Http2EncodeInterceptor.java | 8 +- .../netbare/proxy/BaseProxyServer.java | 4 +- .../proxy/IcmpProxyServerForwarder.java | 6 +- .../netbare/proxy/TcpProxyServer.java | 22 ++--- .../proxy/TcpProxyServerForwarder.java | 10 +-- .../netbare/proxy/UdpProxyServer.java | 6 +- .../proxy/UdpProxyServerForwarder.java | 8 +- .../ssl/CertificateInstallActivity.java | 14 ++-- .../github/megatronking/netbare/ssl/JKS.java | 43 +++++----- .../megatronking/netbare/ssl/SSLCodec.java | 4 +- .../netbare/ssl/SSLEngineFactory.java | 4 +- .../netbare/ssl/SSLRequestCodec.java | 6 +- .../netbare/ssl/SSLResponseCodec.java | 4 +- .../megatronking/netbare/ssl/SSLUtils.java | 8 +- .../netbare/tunnel/TcpProxyTunnel.java | 6 +- .../netbare/tunnel/TcpRemoteTunnel.java | 6 +- .../netbare/tunnel/TcpTunnel.java | 4 +- .../netbare/tunnel/UdpRemoteTunnel.java | 6 +- .../netbare/tunnel/UdpTunnel.java | 4 +- .../netbare/tunnel/UdpVATunnel.java | 4 +- 39 files changed, 222 insertions(+), 174 deletions(-) rename netbare/src/main/java/com/github/megatronking/netbare/{NetBareLog.java => EL.java} (96%) rename netbare/src/main/java/com/github/megatronking/netbare/{NetBareXLog.java => XLog.java} (86%) diff --git a/app/src/main/java/cn/demo/appq/presenter/NetBarePresenter.java b/app/src/main/java/cn/demo/appq/presenter/NetBarePresenter.java index 2aee011..87bfa94 100644 --- a/app/src/main/java/cn/demo/appq/presenter/NetBarePresenter.java +++ b/app/src/main/java/cn/demo/appq/presenter/NetBarePresenter.java @@ -7,11 +7,11 @@ import com.github.megatronking.netbare.NetBare; import com.github.megatronking.netbare.NetBareConfig; import com.github.megatronking.netbare.NetBareListener; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.http.HttpInjectInterceptor; import com.github.megatronking.netbare.http.HttpInterceptorFactory; import com.github.megatronking.netbare.ssl.JKS; -import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -46,8 +46,8 @@ public void prepareJks() { try { JKS.install(activity.getApplicationContext(), App.JSK_ALIAS, App.JSK_ALIAS); - } catch (IOException e) { - // 安装失败 + } catch (Throwable e) { + EL.e(e); } } } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBareLog.java b/netbare/src/main/java/com/github/megatronking/netbare/EL.java similarity index 96% rename from netbare/src/main/java/com/github/megatronking/netbare/NetBareLog.java rename to netbare/src/main/java/com/github/megatronking/netbare/EL.java index f94168a..57ba6fd 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBareLog.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/EL.java @@ -45,6 +45,7 @@ import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -55,14 +56,27 @@ import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; + /** - * A static log util using in NetBare, and the tag is 'NetBare'; - * - * @author Megatron King - * @since 2018-10-08 23:12 + * @Copyright © 2015 Sanbo Inc. All rights reserved. + * @Description
+ * Log统一管理类,提供功能:
+ * 1.log工具类支持全部打印   「支持Log的所有功能.」
+ * 2.支持类似C的格式化输出或Java的String.format「%个数和参数个数需要一直才能格式化」
+ * 3.支持Java堆栈打印
+ * 4.支持键入和不键入TAG  「不键入tag,tag是sanbo,默认第一个参数String为tag」
+ * 5.支持shell控制log是否打印.
+ *          tag为sanbo的控制命令:setprop log.tag.sanbo log等级.
+ *          log等级:VERBOSE/DEBUG/INFO/WARN/ERROR/ASSERT
+ * 6.格式化输出.
+ * 7.支持XML/JSON/Map/Array等更多对象打印
+ * 8.支持打印跳过堆栈
+ *              
+ * @Version: 7.0 + * @Create: 2019-04-30 11:28 + * @Author: sanbo */ -public final class NetBareLog { - +public final class EL { //是否使用 private static final boolean INTERNAL_CONTROL_ENABLE = true; @@ -129,8 +143,8 @@ public final class NetBareLog { isNeedCallstackInfo = false; // 是否按照条形框输出,有包裹域的输出 isNeedWrapper = false; - // 是否格式化展示,主要针对JSON - isFormat = false; + // 是否格式化展示,主要针对JSON+简化堆栈 + isFormat = true; mPattern = Pattern.compile("%", Pattern.CASE_INSENSITIVE); // 默认tag DEFAULT_TAG = "sanbo"; @@ -172,8 +186,6 @@ public final class NetBareLog { } } - private NetBareLog() { - } /** * 初始化接口 @@ -282,9 +294,9 @@ private static void parserArgsMain(int level, Object[] args) { StringBuilder sb = new StringBuilder(); // 开始 - if (isFormat) { - sb.append(CONTENT_LOG_INFO).append("\n"); - } +// if (isFormat) { +// sb.append(CONTENT_LOG_INFO).append("\n"); +// } String stackinfo = getCallStaceInfo(); if (!TextUtils.isEmpty(stackinfo)) { sb.append(stackinfo).append("\n"); @@ -464,7 +476,8 @@ private static String getCallStaceInfo() { if (currentFile && !isKeeping) { break; } - if (ste.getClassName().equals(NetBareLog.class.getName())) { + // 跳过忽略的类 + if (mIgnoreClasses.contains(ste.getClassName())) { if (!currentFile) { currentFile = true; } @@ -1439,7 +1452,7 @@ private static void processLine(int maxLen, List result, String line) { * @param isShowLog * @return */ - public NetBareLog setDebug(boolean isShowLog) { + public EL setDebug(boolean isShowLog) { USER_DEBUG = isShowLog; return HLODER.INSTANCE; } @@ -1450,7 +1463,7 @@ public NetBareLog setDebug(boolean isShowLog) { * @param defaultTag * @return */ - public NetBareLog setTag(String defaultTag) { + public EL setTag(String defaultTag) { if (!TextUtils.isEmpty(defaultTag)) { DEFAULT_TAG = defaultTag; } @@ -1458,12 +1471,26 @@ public NetBareLog setTag(String defaultTag) { } - public static NetBareLog getInstance() { - return HLODER.INSTANCE; - } + private static CopyOnWriteArrayList mIgnoreClasses = new CopyOnWriteArrayList(); - private static class HLODER { - private static final NetBareLog INSTANCE = new NetBareLog(); + /** + * 设置堆栈的类名字 + * + * @param clazzes + * @return + */ + public EL setIgnoreClass(Class... clazzes) { + try { + for (int i = 0; i < clazzes.length; i++) { + String name = clazzes[i].getName(); + if (!mIgnoreClasses.contains(name)) { + mIgnoreClasses.add(name); + } + } + } catch (Throwable e) { + Log.e(DEFAULT_TAG, Log.getStackTraceString(e)); + } + return HLODER.INSTANCE; } public static final class MLEVEL { @@ -1475,4 +1502,16 @@ public static final class MLEVEL { public static final int WTF = 0x6; } + private EL() { + setIgnoreClass(this.getClass()); + setIgnoreClass(XLog.class); + } + + public static EL getInstance() { + return HLODER.INSTANCE; + } + + private static class HLODER { + private static final EL INSTANCE = new EL(); + } } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java index 7c0a5b7..6307b95 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java @@ -77,7 +77,7 @@ private NetBare() { */ public NetBare attachApplication(@NonNull Application application, boolean debug) { mApp = application; - NetBareLog.getInstance().setDebug(debug); + EL.getInstance().setDebug(debug); return this; } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java index 26ee735..fe9e39f 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java @@ -106,7 +106,7 @@ private void startNetBare() { "NetBareConfig"); } - NetBareLog.i("Start NetBare service!"); + EL.i("Start NetBare service!"); SSLEngineFactory.updateProviders(config.keyManagerProvider, config.trustManagerProvider); mNetBareThread = new NetBareThread(this, config); mNetBareThread.start(); @@ -116,7 +116,7 @@ private void stopNetBare() { if (mNetBareThread == null) { return; } - NetBareLog.i("Stop NetBare service!"); + EL.i("Stop NetBare service!"); mNetBareThread.interrupt(); mNetBareThread = null; } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBareThread.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareThread.java index 14f1355..61e5051 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBareThread.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/NetBareThread.java @@ -18,7 +18,6 @@ import android.content.pm.PackageManager; import android.net.VpnService; import android.os.ParcelFileDescriptor; -import android.os.SystemClock; import com.github.megatronking.netbare.ip.IpAddress; import com.github.megatronking.netbare.ip.IpHeader; @@ -82,7 +81,7 @@ public void run() { try { packetsTransfer = new PacketsTransfer(mVpnService, mConfig); } catch (IOException e) { - NetBareLog.wtf(e); + EL.wtf(e); } if (packetsTransfer != null) { // Establish VPN, it runs a while loop unless failed. @@ -123,7 +122,7 @@ private void establishVpn(PacketsTransfer packetsTransfer) { builder.addAllowedApplication(mVpnService.getPackageName()); } } catch (PackageManager.NameNotFoundException e) { - NetBareLog.wtf(e); + EL.wtf(e); } vpnDescriptor = builder.establish(); if (vpnDescriptor == null) { @@ -147,7 +146,7 @@ private void establishVpn(PacketsTransfer packetsTransfer) { } } catch (IOException e) { if (!isInterrupted()) { - NetBareLog.wtf(e); + EL.wtf(e); } } } @@ -196,7 +195,7 @@ private void transfer(InputStream input, OutputStream output) throws IOException private void transfer(byte[] packet, int len, OutputStream output) { if (len < IpHeader.MIN_HEADER_LENGTH) { - NetBareLog.w("Ip header length < " + IpHeader.MIN_HEADER_LENGTH); + EL.w("Ip header length < " + IpHeader.MIN_HEADER_LENGTH); return; } IpHeader ipHeader = new IpHeader(packet, 0); @@ -205,7 +204,7 @@ private void transfer(byte[] packet, int len, OutputStream output) { if (forwarder != null) { forwarder.forward(packet, len, output); } else { - NetBareLog.w("Unknown ip protocol: " + ipHeader.getProtocol()); + EL.w("Unknown ip protocol: " + ipHeader.getProtocol()); } } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBareUtils.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareUtils.java index a84285c..0add1e5 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBareUtils.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/NetBareUtils.java @@ -15,7 +15,6 @@ */ package com.github.megatronking.netbare; -import android.os.Build; import android.text.TextUtils; import java.io.Closeable; @@ -99,7 +98,7 @@ public static void closeQuietly(Closeable closeable) { try { closeable.close(); } catch (IOException e) { - NetBareLog.wtf(e); + EL.wtf(e); } } } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBareVirtualGateway.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareVirtualGateway.java index d49f1b7..f9c441a 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBareVirtualGateway.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/NetBareVirtualGateway.java @@ -54,7 +54,7 @@ public final class NetBareVirtualGateway extends VirtualGateway { private final VirtualGateway mGateway; private final Session mSession; - private final NetBareXLog mLog; + private final XLog mLog; private int mPolicy; @@ -65,7 +65,7 @@ public NetBareVirtualGateway(Session session, Request request, Response response super(session, request, response); mGateway = NetBare.get().getGatewayFactory().create(session, request, response); mSession = session; - mLog = new NetBareXLog(session); + mLog = new XLog(session); NetBareConfig config = NetBare.get().getConfig(); if (config == null || (config.excludeSelf && session.uid == Process.myUid())) { diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBareXLog.java b/netbare/src/main/java/com/github/megatronking/netbare/XLog.java similarity index 86% rename from netbare/src/main/java/com/github/megatronking/netbare/NetBareXLog.java rename to netbare/src/main/java/com/github/megatronking/netbare/XLog.java index 882ac79..af53867 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBareXLog.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/XLog.java @@ -24,7 +24,7 @@ * @author Megatron King * @since 2018-10-14 10:25 */ -public final class NetBareXLog { +public final class XLog { private final String mPrefix; @@ -35,7 +35,7 @@ public final class NetBareXLog { * @param ip The ip address, a string value. * @param port The port, a short value. */ - public NetBareXLog(Protocol protocol, String ip, short port) { + public XLog(Protocol protocol, String ip, short port) { this(protocol, ip, NetBareUtils.convertPort(port)); } @@ -46,7 +46,7 @@ public NetBareXLog(Protocol protocol, String ip, short port) { * @param ip The ip address, a int value. * @param port The port, a short value. */ - public NetBareXLog(Protocol protocol, int ip, short port) { + public XLog(Protocol protocol, int ip, short port) { this(protocol, NetBareUtils.convertIp(ip), port); } @@ -57,7 +57,7 @@ public NetBareXLog(Protocol protocol, int ip, short port) { * @param ip The ip address, a int value. * @param port The port, a int value. */ - public NetBareXLog(Protocol protocol, int ip, int port) { + public XLog(Protocol protocol, int ip, int port) { this(protocol, NetBareUtils.convertIp(ip), port); } @@ -66,7 +66,7 @@ public NetBareXLog(Protocol protocol, int ip, int port) { * * @param session The session contains net information. */ - public NetBareXLog(Session session) { + public XLog(Session session) { this(session.protocol, session.remoteIp, session.remotePort); } @@ -77,7 +77,7 @@ public NetBareXLog(Session session) { * @param ip The ip address, a string value. * @param port The port, a int value. */ - public NetBareXLog(Protocol protocol, String ip, int port) { + public XLog(Protocol protocol, String ip, int port) { this.mPrefix = "[" + protocol.name() + "][" + ip + ":" + port + "]"; } @@ -87,12 +87,12 @@ public NetBareXLog(Protocol protocol, String ip, int port) { * @param msg The message you would like logged. */ public void v(String msg) { - NetBareLog.v(mPrefix + msg); + EL.v(mPrefix + msg); } public void v(String msg, Object... args) { - NetBareLog.v(mPrefix + msg, args); + EL.v(mPrefix + msg, args); } /** @@ -101,7 +101,7 @@ public void v(String msg, Object... args) { * @param msg The message you would like logged. */ public void d(String msg) { - NetBareLog.d(mPrefix + msg); + EL.d(mPrefix + msg); } /** @@ -111,7 +111,7 @@ public void d(String msg) { * @param args Arguments referenced by the format specifiers in the format string. */ public void d(String msg, Object... args) { - NetBareLog.d(mPrefix + msg, args); + EL.d(mPrefix + msg, args); } /** @@ -120,7 +120,7 @@ public void d(String msg, Object... args) { * @param msg The message you would like logged. */ public void i(String msg) { - NetBareLog.i(mPrefix + msg); + EL.i(mPrefix + msg); } /** @@ -130,7 +130,7 @@ public void i(String msg) { * @param args Arguments referenced by the format specifiers in the format string. */ public void i(String msg, Object... args) { - NetBareLog.i(mPrefix + msg, args); + EL.i(mPrefix + msg, args); } /** @@ -139,7 +139,7 @@ public void i(String msg, Object... args) { * @param msg The message you would like logged. */ public void e(String msg) { - NetBareLog.e(mPrefix + msg); + EL.e(mPrefix + msg); } /** @@ -149,7 +149,7 @@ public void e(String msg) { * @param args Arguments referenced by the format specifiers in the format string. */ public void e(String msg, Object... args) { - NetBareLog.e(mPrefix + msg, args); + EL.e(mPrefix + msg, args); } /** @@ -158,7 +158,7 @@ public void e(String msg, Object... args) { * @param msg The message you would like logged. */ public void w(String msg) { - NetBareLog.w(mPrefix + msg); + EL.w(mPrefix + msg); } /** @@ -168,7 +168,7 @@ public void w(String msg) { * @param args Arguments referenced by the format specifiers in the format string. */ public void w(String msg, Object... args) { - NetBareLog.w(mPrefix + msg, args); + EL.w(mPrefix + msg, args); } } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/gateway/SSLCodecInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/gateway/SSLCodecInterceptor.java index 262a9c9..bae0c03 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/gateway/SSLCodecInterceptor.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/gateway/SSLCodecInterceptor.java @@ -17,7 +17,7 @@ import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareXLog; +import com.github.megatronking.netbare.XLog; import com.github.megatronking.netbare.ssl.SSLCodec; import com.github.megatronking.netbare.ssl.SSLEngineFactory; import com.github.megatronking.netbare.ssl.SSLRefluxCallback; @@ -45,7 +45,7 @@ public abstract class SSLCodecInterceptor mCallback; - private NetBareXLog mLog; + private XLog mLog; /* package */ Http2SniffInterceptor(SSLRefluxCallback callback) { this.mCallback = callback; @@ -46,7 +46,7 @@ protected void intercept(@NonNull HttpRequestChain chain, @NonNull ByteBuffer bu if (index == 0) { HttpRequest request = chain.request(); if (mLog == null) { - mLog = new NetBareXLog(request.protocol(), request.ip(), request.port()); + mLog = new XLog(request.protocol(), request.ip(), request.port()); } // HTTP2 is forces to use SSL connection. if (request.isHttps()) { @@ -80,7 +80,7 @@ protected void intercept(@NonNull HttpResponseChain chain, @NonNull ByteBuffer b if (index == 0) { HttpResponse response = chain.response(); if (mLog == null) { - mLog = new NetBareXLog(response.protocol(), response.ip(), response.port()); + mLog = new XLog(response.protocol(), response.ip(), response.port()); } // HTTP2 is forces to use SSL connection. if (response.isHttps()) { diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderParseInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderParseInterceptor.java index 510ac7f..4619dfe 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderParseInterceptor.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderParseInterceptor.java @@ -18,7 +18,7 @@ import android.support.annotation.NonNull; import com.github.megatronking.netbare.NetBareUtils; -import com.github.megatronking.netbare.NetBareXLog; +import com.github.megatronking.netbare.XLog; import com.github.megatronking.netbare.ip.Protocol; import java.io.IOException; @@ -35,7 +35,7 @@ */ /* package */ final class HttpHeaderParseInterceptor extends HttpIndexedInterceptor { - private NetBareXLog mLog; + private XLog mLog; @Override protected void intercept(@NonNull HttpRequestChain chain, @NonNull ByteBuffer buffer, @@ -45,7 +45,7 @@ protected void intercept(@NonNull HttpRequestChain chain, @NonNull ByteBuffer bu return; } if (mLog == null) { - mLog = new NetBareXLog(Protocol.TCP, chain.request().ip(), chain.request().port()); + mLog = new XLog(Protocol.TCP, chain.request().ip(), chain.request().port()); } parseRequestHeader(chain.request().session(), buffer); chain.process(buffer); @@ -59,7 +59,7 @@ protected void intercept(@NonNull HttpResponseChain chain, @NonNull ByteBuffer b return; } if (mLog == null) { - mLog = new NetBareXLog(Protocol.TCP, chain.response().ip(), chain.response().port()); + mLog = new XLog(Protocol.TCP, chain.response().ip(), chain.response().port()); } parseResponseHeader(chain.response().session(), buffer); chain.process(buffer); diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSeparateInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSeparateInterceptor.java index fe5df96..b62a9f9 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSeparateInterceptor.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSeparateInterceptor.java @@ -17,7 +17,7 @@ import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareXLog; +import com.github.megatronking.netbare.XLog; import com.github.megatronking.netbare.NetBareUtils; import com.github.megatronking.netbare.ip.Protocol; import com.google.common.primitives.Bytes; @@ -36,13 +36,13 @@ private boolean mRequestHeaderHandled; private boolean mResponseHeaderHandled; - private NetBareXLog mLog; + private XLog mLog; @Override protected void intercept(@NonNull HttpRequestChain chain, @NonNull ByteBuffer buffer, int index) throws IOException { if (mLog == null) { - mLog = new NetBareXLog(Protocol.TCP, chain.request().ip(), chain.request().port()); + mLog = new XLog(Protocol.TCP, chain.request().ip(), chain.request().port()); } if (mRequestHeaderHandled) { chain.process(buffer); @@ -84,7 +84,7 @@ protected void intercept(@NonNull HttpRequestChain chain, @NonNull ByteBuffer bu protected void intercept(@NonNull HttpResponseChain chain, @NonNull ByteBuffer buffer, int index) throws IOException { if (mLog == null) { - mLog = new NetBareXLog(Protocol.TCP, chain.response().ip(), chain.response().port()); + mLog = new XLog(Protocol.TCP, chain.response().ip(), chain.response().port()); } if (mResponseHeaderHandled) { chain.process(buffer); diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java index 2826e38..65d7aac 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java @@ -17,7 +17,7 @@ import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.ssl.SSLRefluxCallback; import java.io.IOException; @@ -120,7 +120,7 @@ private boolean requestHeaderFirstByteNotPassed(byte first) { return false; default: // Unknown first byte data. - NetBareLog.w("Unknown first request header byte : " + first); + EL.w("Unknown first request header byte : " + first); break; } return true; @@ -137,7 +137,7 @@ private boolean requestHeaderMethodNotPassed(ByteBuffer buffer) { return false; } } - NetBareLog.w("Unknown request header method : " + headerMethod); + EL.w("Unknown request header method : " + headerMethod); return true; } @@ -150,7 +150,7 @@ private boolean responseHeaderFirstByteNotPassed(byte first) { return false; default: // Unknown first byte data. - NetBareLog.w("Unknown first response header byte : " + first); + EL.w("Unknown first response header byte : " + first); break; } return true; @@ -168,7 +168,7 @@ private boolean responseHeaderProtocolNotPassed(ByteBuffer buffer) { return false; } } - NetBareLog.w("Unknown response header protocol : " + headerProtocol); + EL.w("Unknown response header protocol : " + headerProtocol); return true; } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpMultiplexInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpMultiplexInterceptor.java index 0c4e11c..4a92c7c 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpMultiplexInterceptor.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpMultiplexInterceptor.java @@ -17,7 +17,7 @@ import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareXLog; +import com.github.megatronking.netbare.XLog; import com.github.megatronking.netbare.ip.Protocol; import java.io.IOException; @@ -38,7 +38,7 @@ private final HttpZygoteResponse mZygoteResponse; private int mResponseIndex; - private NetBareXLog mLog; + private XLog mLog; private boolean mWebSocket; @@ -61,7 +61,7 @@ protected void intercept(@NonNull HttpRequestChain chain, @NonNull ByteBuffer bu } if (mResponseIndex > 0 && !mWebSocket) { if (mLog == null) { - mLog = new NetBareXLog(Protocol.TCP, chain.request().ip(), chain.request().port()); + mLog = new XLog(Protocol.TCP, chain.request().ip(), chain.request().port()); } mResponseIndex = 0; mLog.w("Multiplex is found in one connection."); diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLCodecInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLCodecInterceptor.java index 80ce0df..1522099 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLCodecInterceptor.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLCodecInterceptor.java @@ -17,7 +17,7 @@ import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareXLog; +import com.github.megatronking.netbare.XLog; import com.github.megatronking.netbare.gateway.Request; import com.github.megatronking.netbare.gateway.Response; import com.github.megatronking.netbare.ip.Protocol; @@ -45,7 +45,7 @@ private HttpSSLRequestCodec mRequestCodec; private HttpSSLResponseCodec mResponseCodec; - private NetBareXLog mLog; + private XLog mLog; private boolean mClientAlpnResolved; @@ -56,7 +56,7 @@ mRequestCodec = new HttpSSLRequestCodec(engineFactory); mResponseCodec = new HttpSSLResponseCodec(engineFactory); - mLog = new NetBareXLog(Protocol.TCP, request.ip(), request.port()); + mLog = new XLog(Protocol.TCP, request.ip(), request.port()); } @Override diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java index 9294011..8cf59c7 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.http; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.ssl.SSLEngineFactory; import com.github.megatronking.netbare.ssl.SSLRequestCodec; @@ -85,7 +85,7 @@ private SSLEngine enableALPN(SSLEngine sslEngine) { } } catch (NoSuchFieldException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { - NetBareLog.wtf(e); + EL.wtf(e); } return sslEngine; } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java index 4ad55a8..c400928 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java @@ -18,7 +18,7 @@ import android.annotation.SuppressLint; import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.ssl.SSLEngineFactory; import com.github.megatronking.netbare.ssl.SSLResponseCodec; @@ -100,7 +100,7 @@ private void enableAlpn() { mAlpnEnabled = true; } catch (NoSuchFieldException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { - NetBareLog.wtf(e); + EL.wtf(e); } } @@ -184,7 +184,7 @@ private String getAlpnSelectedProtocol() { } } catch (ClassNotFoundException | NoSuchMethodException | NoSuchFieldException | IllegalAccessException | InvocationTargetException e) { - NetBareLog.e(e.getMessage()); + EL.e(e.getMessage()); } return alpnResult; } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java index 165c77a..a53c35c 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java @@ -17,7 +17,7 @@ import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.ssl.SSLCodec; import com.github.megatronking.netbare.ssl.SSLWhiteList; @@ -53,7 +53,7 @@ protected void intercept(@NonNull HttpRequestChain chain, @NonNull ByteBuffer bu if (index == 0) { if (SSLWhiteList.contains(chain.request().ip())) { mType = TYPE_WHITELIST; - NetBareLog.i("detect whitelist ip " + chain.request().ip()); + EL.i("detect whitelist ip " + chain.request().ip()); } else { mType = chain.request().host() == null ? TYPE_INVALID : verifyHttpType(buffer); } @@ -108,7 +108,7 @@ private int verifyHttpType(ByteBuffer buffer) { return TYPE_HTTPS; default: // Unknown first byte data. - NetBareLog.e("Unknown first request byte : " + first); + EL.e("Unknown first request byte : " + first); break; } return TYPE_INVALID; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2DecodeInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2DecodeInterceptor.java index 96863fa..498274c 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2DecodeInterceptor.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2DecodeInterceptor.java @@ -17,7 +17,7 @@ import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareXLog; +import com.github.megatronking.netbare.XLog; import com.github.megatronking.netbare.http.HttpId; import com.github.megatronking.netbare.http.HttpPendingIndexedInterceptor; import com.github.megatronking.netbare.http.HttpProtocol; @@ -56,7 +56,7 @@ public final class Http2DecodeInterceptor extends HttpPendingIndexedInterceptor private Hpack.Reader mHpackRequestReader; private Hpack.Reader mHpackResponseReader; - private NetBareXLog mLog; + private XLog mLog; public Http2DecodeInterceptor(SSLRefluxCallback refluxCallback, HttpZygoteRequest zygoteRequest, @@ -81,7 +81,7 @@ protected void intercept(@NonNull final HttpRequestChain chain, @NonNull ByteBuf } if (mLog == null) { HttpRequest request = chain.request(); - mLog = new NetBareXLog(request.protocol(), request.ip(), request.port()); + mLog = new XLog(request.protocol(), request.ip(), request.port()); } if (mHpackRequestReader == null) { mHpackRequestReader = new Hpack.Reader(); @@ -151,7 +151,7 @@ protected void intercept(@NonNull final HttpResponseChain chain, @NonNull ByteBu } if (mLog == null) { HttpResponse response = chain.response(); - mLog = new NetBareXLog(response.protocol(), response.ip(), response.port()); + mLog = new XLog(response.protocol(), response.ip(), response.port()); } if (mHpackResponseReader == null) { mHpackResponseReader = new Hpack.Reader(); diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2EncodeInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2EncodeInterceptor.java index 019584e..4aab305 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2EncodeInterceptor.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http2/Http2EncodeInterceptor.java @@ -17,7 +17,7 @@ import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareXLog; +import com.github.megatronking.netbare.XLog; import com.github.megatronking.netbare.gateway.InterceptorChain; import com.github.megatronking.netbare.http.HttpInterceptor; import com.github.megatronking.netbare.http.HttpProtocol; @@ -44,7 +44,7 @@ public final class Http2EncodeInterceptor implements HttpInterceptor { private final Map mStreamRequestIndexes; private final Map mStreamResponseIndexes; - private NetBareXLog mLog; + private XLog mLog; private Hpack.Writer mHpackRequestWriter; private Hpack.Writer mHpackResponseWriter; @@ -60,7 +60,7 @@ public void intercept(@NonNull HttpRequestChain chain, @NonNull ByteBuffer buffe if (chain.request().httpProtocol() == HttpProtocol.HTTP_2) { if (mLog == null) { HttpRequest request = chain.request(); - mLog = new NetBareXLog(request.protocol(), request.ip(), request.port()); + mLog = new XLog(request.protocol(), request.ip(), request.port()); } if (mHpackRequestWriter == null) { mHpackRequestWriter = new Hpack.Writer(); @@ -91,7 +91,7 @@ public void intercept(@NonNull HttpResponseChain chain, @NonNull ByteBuffer buff if (chain.response().httpProtocol() == HttpProtocol.HTTP_2) { if (mLog == null) { HttpResponse response = chain.response(); - mLog = new NetBareXLog(response.protocol(), response.ip(), response.port()); + mLog = new XLog(response.protocol(), response.ip(), response.port()); } if (mHpackResponseWriter == null) { mHpackResponseWriter = new Hpack.Writer(); diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java index 2035986..6616909 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.proxy; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import java.io.IOException; @@ -61,7 +61,7 @@ public void run() { try { process(); } catch (IOException e) { - NetBareLog.e(e.getMessage()); + EL.e(e.getMessage()); } } } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java index 5bf31b1..9b34330 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.proxy; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.ip.IcmpHeader; import com.github.megatronking.netbare.ip.IpHeader; @@ -38,8 +38,8 @@ public void prepare() { public void forward(byte[] packet, int len, OutputStream output) { IpHeader ipHeader = new IpHeader(packet, 0); IcmpHeader icmpHeader = new IcmpHeader(ipHeader, packet, ipHeader.getHeaderLength()); - NetBareLog.v("ICMP type: " + icmpHeader.getType()); - NetBareLog.v("ICMP code: " + icmpHeader.getCode()); + EL.v("ICMP type: " + icmpHeader.getType()); + EL.v("ICMP code: " + icmpHeader.getCode()); // TODO transfer to proxy server } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java index b5faa9c..aeee453 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java @@ -17,7 +17,7 @@ import android.net.VpnService; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.NetBareUtils; import com.github.megatronking.netbare.gateway.VirtualGateway; import com.github.megatronking.netbare.net.Session; @@ -86,7 +86,7 @@ this.mPort = (short) mServerSocketChannel.socket().getLocalPort(); this.mMtu = mtu; - NetBareLog.v("[TCP]proxy server: %s:%d", ip, NetBareUtils.convertPort(mPort)); + EL.v("[TCP]proxy server: %s:%d", ip, NetBareUtils.convertPort(mPort)); } void setSessionProvider(SessionProvider sessionProvider) { @@ -106,11 +106,11 @@ short getPort() { @Override public void run() { - NetBareLog.i("[TCP]Server starts running."); + EL.i("[TCP]Server starts running."); super.run(); NetBareUtils.closeQuietly(mSelector); NetBareUtils.closeQuietly(mServerSocketChannel); - NetBareLog.i("[TCP]Server stops running."); + EL.i("[TCP]Server stops running."); } @Override @@ -205,24 +205,24 @@ private void handleException(IOException e, String ip) { } if (e instanceof SSLHandshakeException) { // Client doesn't accept the MITM CA certificate. - NetBareLog.e(e.getMessage()); + EL.e(e.getMessage()); if (ip != null) { - NetBareLog.i("add %s to whitelist", ip); + EL.i("add %s to whitelist", ip); SSLWhiteList.add(ip); } } else if (e instanceof ConnectionShutdownException) { // Connection exception, do not mind this. - NetBareLog.e(e.getMessage()); + EL.e(e.getMessage()); } else if (e instanceof ConnectException) { // Connection timeout - NetBareLog.e(e.getMessage()); + EL.e(e.getMessage()); } else if (e instanceof SSLException && (e.getCause() instanceof EOFException)) { // Connection shutdown manually - NetBareLog.e(e.getMessage()); + EL.e(e.getMessage()); } else { - NetBareLog.wtf(e); + EL.wtf(e); if (ip != null) { - NetBareLog.i("add %s to whitelist", ip); + EL.i("add %s to whitelist", ip); SSLWhiteList.add(ip); } } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java index d90f047..1befefe 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java @@ -17,7 +17,7 @@ import android.net.VpnService; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.NetBareUtils; import com.github.megatronking.netbare.ip.IpHeader; import com.github.megatronking.netbare.ip.Protocol; @@ -68,10 +68,10 @@ public void forward(byte[] packet, int len, OutputStream output) { // TCP data size int tcpDataSize = ipHeader.getDataLength() - tcpHeader.getHeaderLength(); - NetBareLog.v("ip: %s:%d -> %s:%d", NetBareUtils.convertIp(localIp), + EL.v("ip: %s:%d -> %s:%d", NetBareUtils.convertIp(localIp), NetBareUtils.convertPort(localPort), NetBareUtils.convertIp(remoteIp), NetBareUtils.convertPort(remotePort)); - NetBareLog.v("tcp: %s, size: %d", tcpHeader.toString(), tcpDataSize); + EL.v("tcp: %s, size: %d", tcpHeader.toString(), tcpDataSize); // Tcp handshakes and proxy forward flow. @@ -106,7 +106,7 @@ public void forward(byte[] packet, int len, OutputStream output) { // Proxy server responses forward client request. Session session = mSessionProvider.query(remotePort); if (session == null) { - NetBareLog.w("No session saved with key: " + remotePort); + EL.w("No session saved with key: " + remotePort); return; } // Forward proxy server response to client. @@ -123,7 +123,7 @@ public void forward(byte[] packet, int len, OutputStream output) { try { output.write(packet, 0, len); } catch (IOException e) { - NetBareLog.e(e.getMessage()); + EL.e(e.getMessage()); } } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java index faddeb4..7336f71 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java @@ -18,7 +18,7 @@ import android.net.VpnService; import android.os.SystemClock; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.NetBareUtils; import com.github.megatronking.netbare.gateway.VirtualGateway; import com.github.megatronking.netbare.ip.IpHeader; @@ -117,10 +117,10 @@ void send(UdpHeader header, OutputStream output) throws IOException { @Override public void run() { - NetBareLog.i("[UDP]Server starts running."); + EL.i("[UDP]Server starts running."); super.run(); NetBareUtils.closeQuietly(mSelector); - NetBareLog.i("[UDP]Server stops running."); + EL.i("[UDP]Server stops running."); } @Override diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java index d482ebb..b2edd44 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java @@ -17,7 +17,7 @@ import android.net.VpnService; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.NetBareUtils; import com.github.megatronking.netbare.ip.IpHeader; import com.github.megatronking.netbare.ip.Protocol; @@ -68,10 +68,10 @@ public void forward(byte[] packet, int len, OutputStream output) { // UDP data size int udpDataSize = ipHeader.getDataLength() - udpHeader.getHeaderLength(); - NetBareLog.v("ip: %s:%d -> %s:%d", NetBareUtils.convertIp(localIp), + EL.v("ip: %s:%d -> %s:%d", NetBareUtils.convertIp(localIp), NetBareUtils.convertPort(localPort), NetBareUtils.convertIp(remoteIp), NetBareUtils.convertPort(remotePort)); - NetBareLog.v("udp: %s, size: %d", udpHeader.toString(), udpDataSize); + EL.v("udp: %s, size: %d", udpHeader.toString(), udpDataSize); Session session = mSessionProvider.ensureQuery(Protocol.UDP, localPort, remotePort, remoteIp); session.packetIndex++; @@ -80,7 +80,7 @@ public void forward(byte[] packet, int len, OutputStream output) { mProxyServer.send(udpHeader, output); session.sendDataSize += udpDataSize; } catch (IOException e) { - NetBareLog.e(e.getMessage()); + EL.e(e.getMessage()); } } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java index ad262d9..1fc0157 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java @@ -22,7 +22,7 @@ import android.security.KeyChain; import android.support.annotation.Nullable; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import java.io.File; import java.io.IOException; @@ -51,7 +51,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { try { startActivityForResult(intent, REQUEST_CODE_INSTALL); } catch (ActivityNotFoundException e) { - NetBareLog.e("Unable to start certificate installer."); + EL.e("Unable to start certificate installer."); finish(); } } @@ -59,15 +59,19 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); + EL.i("inside CertificateInstallActivity.onActivityResult requestCode: " + requestCode); if (requestCode == REQUEST_CODE_INSTALL && resultCode == RESULT_OK) { File jsk = new File(getCacheDir(), getIntent().getStringExtra(EXTRA_ALIAS) + JKS.KEY_JKS_FILE_EXTENSION); + + EL.i("inside CertificateInstallActivity.onActivityResult jsk file: " + jsk.getAbsolutePath()); + try { - if(!jsk.exists() && !jsk.createNewFile()) { + if (!jsk.exists() && !jsk.createNewFile()) { throw new IOException("Create jks file failed."); } - } catch (IOException e) { - NetBareLog.wtf(e); + } catch (Throwable e) { + EL.wtf(e); } } finish(); diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/JKS.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/JKS.java index 9cdd262..e2ea530 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/JKS.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/JKS.java @@ -21,7 +21,7 @@ import android.security.KeyChain; import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.NetBareUtils; import org.bouncycastle.openssl.jcajce.JcaPEMWriter; @@ -100,19 +100,22 @@ String certOrganizationalUnitName() { return certOrganizationalUnitName; } - public boolean isInstalled() { - return aliasFile(KEY_STORE_FILE_EXTENSION).exists() && - aliasFile(KEY_PEM_FILE_EXTENSION).exists() && - aliasFile(KEY_JKS_FILE_EXTENSION).exists(); - } +// public boolean isInstalled() { +// return aliasFile(KEY_STORE_FILE_EXTENSION).exists() && +// aliasFile(KEY_PEM_FILE_EXTENSION).exists() && +// aliasFile(KEY_JKS_FILE_EXTENSION).exists(); +// } public File aliasFile(String fileExtension) { return new File(keystoreDir, alias + fileExtension); } private void createKeystore() { - if (aliasFile(KEY_STORE_FILE_EXTENSION).exists() && - aliasFile(KEY_PEM_FILE_EXTENSION).exists()) { + final File p12 = aliasFile(KEY_STORE_FILE_EXTENSION); + final File pem = aliasFile(KEY_PEM_FILE_EXTENSION); + EL.i("inside JKS.createKeystore "); + if (p12.exists() && + pem.exists()) { return; } @@ -127,17 +130,19 @@ public void run() { JcaPEMWriter pw = null; try { keystore = generator.generateRoot(JKS.this); - os = new FileOutputStream(aliasFile(KEY_STORE_FILE_EXTENSION)); + os = new FileOutputStream(p12); keystore.store(os, password()); Certificate cert = keystore.getCertificate(alias()); - sw = new FileWriter(aliasFile(KEY_PEM_FILE_EXTENSION)); + sw = new FileWriter(pem); pw = new JcaPEMWriter(sw); pw.writeObject(cert); pw.flush(); - NetBareLog.i("Generate keystore succeed."); - } catch (Exception e) { - NetBareLog.e(e.getMessage()); + EL.i("Generate keystore succeed."); + EL.i("inside JKS.createKeystore "); + + } catch (Throwable e) { + EL.e(e); } finally { NetBareUtils.closeQuietly(os); NetBareUtils.closeQuietly(sw); @@ -151,20 +156,22 @@ public void run() { * Whether the certificate with given alias has been installed. * * @param context Any context. - * @param alias Key store alias. + * @param alias Key store alias. * @return True if the certificate has been installed. */ public static boolean isInstalled(Context context, String alias) { - return new File(context.getCacheDir(), - alias + KEY_JKS_FILE_EXTENSION).exists(); + File f = new File(context.getCacheDir(), + alias + KEY_JKS_FILE_EXTENSION); + EL.i("inside JKS.isInstalled(), alias file:" + f.getAbsolutePath()); + return f.exists(); } /** * Install the self-signed root certificate. * * @param context Any context. - * @param name Key chain name. - * @param alias Key store alias. + * @param name Key chain name. + * @param alias Key store alias. * @throws IOException If an IO error has occurred. */ public static void install(Context context, String name, String alias) diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java index 925ef2e..c38f71b 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java @@ -18,7 +18,7 @@ import android.os.Build; import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import java.io.EOFException; import java.io.IOException; @@ -214,7 +214,7 @@ private void startDecode(SSLEngine engine, ByteBuffer input, CodecCallback callb throw new IOException("Handshake failed: Invalid handshake status: " + status); } else if (status == SSLEngineResult.HandshakeStatus.FINISHED) { mHandshakeFinished = true; - NetBareLog.i("SSL handshake finished!"); + EL.i("SSL handshake finished!"); if (input.hasRemaining()) { decode(engine, input, callback); } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java index cd232b7..bbbce4c 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java @@ -18,7 +18,7 @@ import android.os.Build; import android.support.annotation.NonNull; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.NetBareUtils; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; @@ -285,7 +285,7 @@ private TrustManager[] getClientTrustManager() { } return trustManagers; } catch (NoSuchAlgorithmException | KeyStoreException | KeyManagementException e) { - NetBareLog.wtf(e); + EL.wtf(e); } return null; } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java index 1d42931..8465a12 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.ssl; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.gateway.Request; import java.util.concurrent.ExecutionException; @@ -58,7 +58,7 @@ protected SSLEngine createEngine(SSLEngineFactory factory) { String host = mRequest.host(); if (host == null) { // Unable to get host. - NetBareLog.e("Failed to get SSL host."); + EL.e("Failed to get SSL host."); return null; } try { @@ -66,7 +66,7 @@ protected SSLEngine createEngine(SSLEngineFactory factory) { mEngine.setUseClientMode(false); mEngine.setNeedClientAuth(false); } catch (ExecutionException e) { - NetBareLog.e("Failed to create server SSLEngine: " + e.getMessage()); + EL.e("Failed to create server SSLEngine: " + e.getMessage()); } } return mEngine; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java index 8c450fa..fb7ee2a 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.ssl; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.gateway.Request; import java.io.IOException; @@ -67,7 +67,7 @@ protected SSLEngine createEngine(SSLEngineFactory factory) { mEngine = factory.createClientEngine(host, mRequest.port()); mEngine.setUseClientMode(true); } catch (ExecutionException e) { - NetBareLog.e("Failed to create client SSLEngine: " + e.getMessage()); + EL.e("Failed to create client SSLEngine: " + e.getMessage()); } } return mEngine; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java index 31d839d..1856f38 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.ssl; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import com.github.megatronking.netbare.http.HttpProtocol; import java.nio.ByteBuffer; @@ -86,7 +86,7 @@ public static int verifyPacket(ByteBuffer buffer) { final int position = buffer.position(); // Get the packet length and wait until we get a packets worth of data to unwrap. if (buffer.remaining() < SSL_RECORD_HEADER_LENGTH) { - NetBareLog.w("No enough ssl/tls packet length: " + buffer.remaining()); + EL.w("No enough ssl/tls packet length: " + buffer.remaining()); return PACKET_NOT_ENOUGH; } int packetLength = 0; @@ -128,7 +128,7 @@ public static int verifyPacket(ByteBuffer buffer) { packetLength = headerLength == 2 ? (buffer.getShort(position) & 0x7FFF) + 2 : (buffer.getShort(position) & 0x3FFF) + 3; if (packetLength <= headerLength) { - NetBareLog.w("No enough ssl/tls packet length, packet: " + packetLength + + EL.w("No enough ssl/tls packet length, packet: " + packetLength + " header: " + headerLength); // No enough data. return PACKET_NOT_ENOUGH; @@ -140,7 +140,7 @@ public static int verifyPacket(ByteBuffer buffer) { } // Decode SSL data. if (packetLength > buffer.remaining()) { - NetBareLog.w("No enough ssl/tls packet length, packet: " + packetLength + + EL.w("No enough ssl/tls packet length, packet: " + packetLength + " actual: " + buffer.remaining()); // Wait until the whole packet can be read. return PACKET_NOT_ENOUGH; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpProxyTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpProxyTunnel.java index 978f6dd..0beb8d5 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpProxyTunnel.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpProxyTunnel.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.tunnel; -import com.github.megatronking.netbare.NetBareXLog; +import com.github.megatronking.netbare.XLog; import com.github.megatronking.netbare.ip.Protocol; import java.io.IOException; @@ -33,12 +33,12 @@ */ public class TcpProxyTunnel extends TcpTunnel { - private NetBareXLog mLog; + private XLog mLog; public TcpProxyTunnel(SocketChannel socketChannel, Selector selector, int remotePort) { super(socketChannel, selector); Socket socket = socketChannel.socket(); - this.mLog = new NetBareXLog(Protocol.TCP, socket.getInetAddress().getHostAddress(), + this.mLog = new XLog(Protocol.TCP, socket.getInetAddress().getHostAddress(), remotePort); } diff --git a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpRemoteTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpRemoteTunnel.java index 5eb660f..69814fd 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpRemoteTunnel.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpRemoteTunnel.java @@ -17,7 +17,7 @@ import android.net.VpnService; -import com.github.megatronking.netbare.NetBareXLog; +import com.github.megatronking.netbare.XLog; import com.github.megatronking.netbare.ip.Protocol; import java.io.IOException; @@ -36,13 +36,13 @@ public class TcpRemoteTunnel extends TcpTunnel { private final VpnService mVpnService; - private NetBareXLog mLog; + private XLog mLog; public TcpRemoteTunnel(VpnService vpnService, SocketChannel channel, Selector selector, String remoteIp, int remotePort) { super(channel, selector); this.mVpnService = vpnService; - this.mLog = new NetBareXLog(Protocol.TCP, remoteIp, remotePort); + this.mLog = new XLog(Protocol.TCP, remoteIp, remotePort); } @Override diff --git a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java index 84c38aa..8cad0b8 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.tunnel; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import java.io.IOException; import java.net.InetSocketAddress; @@ -44,7 +44,7 @@ public abstract class TcpTunnel extends NioTunnel { @Override public void connect(InetSocketAddress address) throws IOException { - NetBareLog.i("TCP connects to: %s:%s", + EL.i("TCP connects to: %s:%s", address.getAddress().getHostAddress(), address.getPort()); if (mSocketChannel.isBlocking()) { mSocketChannel.configureBlocking(false); diff --git a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpRemoteTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpRemoteTunnel.java index 47359ac..9c38b15 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpRemoteTunnel.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpRemoteTunnel.java @@ -17,7 +17,7 @@ import android.net.VpnService; -import com.github.megatronking.netbare.NetBareXLog; +import com.github.megatronking.netbare.XLog; import com.github.megatronking.netbare.ip.Protocol; import java.io.IOException; @@ -35,13 +35,13 @@ public class UdpRemoteTunnel extends UdpTunnel { private final VpnService mVpnService; - private NetBareXLog mLog; + private XLog mLog; public UdpRemoteTunnel(VpnService vpnService, DatagramChannel channel, Selector selector, String remoteIp, short remotePort) { super(channel, selector); this.mVpnService = vpnService; - this.mLog = new NetBareXLog(Protocol.UDP, remoteIp, remotePort); + this.mLog = new XLog(Protocol.UDP, remoteIp, remotePort); } @Override diff --git a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java index 9d6fc81..7f6e66e 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.tunnel; -import com.github.megatronking.netbare.NetBareLog; +import com.github.megatronking.netbare.EL; import java.io.IOException; import java.net.DatagramSocket; @@ -41,7 +41,7 @@ public abstract class UdpTunnel extends NioTunnel Date: Fri, 5 Feb 2021 10:44:46 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=8C=85=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/demo/appq/presenter/NetBarePresenter.java | 2 +- .../main/java/com/github/megatronking/netbare/NetBare.java | 1 + .../java/com/github/megatronking/netbare/NetBareService.java | 1 + .../java/com/github/megatronking/netbare/NetBareThread.java | 1 + .../java/com/github/megatronking/netbare/NetBareUtils.java | 2 ++ .../src/main/java/com/github/megatronking/netbare/XLog.java | 1 + .../megatronking/netbare/http/HttpHeaderSniffInterceptor.java | 2 +- .../github/megatronking/netbare/http/HttpSSLRequestCodec.java | 2 +- .../megatronking/netbare/http/HttpSSLResponseCodec.java | 2 +- .../megatronking/netbare/http/HttpSniffInterceptor.java | 2 +- .../github/megatronking/netbare/proxy/BaseProxyServer.java | 2 +- .../megatronking/netbare/proxy/IcmpProxyServerForwarder.java | 2 +- .../com/github/megatronking/netbare/proxy/TcpProxyServer.java | 2 +- .../megatronking/netbare/proxy/TcpProxyServerForwarder.java | 2 +- .../com/github/megatronking/netbare/proxy/UdpProxyServer.java | 2 +- .../megatronking/netbare/proxy/UdpProxyServerForwarder.java | 2 +- .../megatronking/netbare/ssl/CertificateInstallActivity.java | 2 +- .../main/java/com/github/megatronking/netbare/ssl/JKS.java | 2 +- .../java/com/github/megatronking/netbare/ssl/SSLCodec.java | 2 +- .../com/github/megatronking/netbare/ssl/SSLEngineFactory.java | 2 +- .../com/github/megatronking/netbare/ssl/SSLRequestCodec.java | 2 +- .../com/github/megatronking/netbare/ssl/SSLResponseCodec.java | 2 +- .../java/com/github/megatronking/netbare/ssl/SSLUtils.java | 2 +- .../com/github/megatronking/netbare/tunnel/TcpTunnel.java | 2 +- .../com/github/megatronking/netbare/tunnel/UdpTunnel.java | 2 +- .../com/github/megatronking/netbare/tunnel/UdpVATunnel.java | 2 +- .../com/{github/megatronking/netbare => sanbo/utils}/EL.java | 4 +++- 27 files changed, 30 insertions(+), 22 deletions(-) rename netbare/src/main/java/com/{github/megatronking/netbare => sanbo/utils}/EL.java (99%) diff --git a/app/src/main/java/cn/demo/appq/presenter/NetBarePresenter.java b/app/src/main/java/cn/demo/appq/presenter/NetBarePresenter.java index 87bfa94..e7b9ce4 100644 --- a/app/src/main/java/cn/demo/appq/presenter/NetBarePresenter.java +++ b/app/src/main/java/cn/demo/appq/presenter/NetBarePresenter.java @@ -7,7 +7,7 @@ import com.github.megatronking.netbare.NetBare; import com.github.megatronking.netbare.NetBareConfig; import com.github.megatronking.netbare.NetBareListener; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.http.HttpInjectInterceptor; import com.github.megatronking.netbare.http.HttpInterceptorFactory; import com.github.megatronking.netbare.ssl.JKS; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java index 6307b95..4c8aa9a 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java @@ -24,6 +24,7 @@ import com.github.megatronking.netbare.gateway.DefaultVirtualGatewayFactory; import com.github.megatronking.netbare.gateway.VirtualGatewayFactory; +import com.sanbo.utils.EL; import java.util.LinkedHashSet; import java.util.Set; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java index fe9e39f..73642b6 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java @@ -22,6 +22,7 @@ import android.support.annotation.NonNull; import com.github.megatronking.netbare.ssl.SSLEngineFactory; +import com.sanbo.utils.EL; /** * Base class for NetBare services. diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBareThread.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareThread.java index 61e5051..d301736 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBareThread.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/NetBareThread.java @@ -27,6 +27,7 @@ import com.github.megatronking.netbare.proxy.ProxyServerForwarder; import com.github.megatronking.netbare.proxy.TcpProxyServerForwarder; import com.github.megatronking.netbare.proxy.UdpProxyServerForwarder; +import com.sanbo.utils.EL; import java.io.FileDescriptor; import java.io.FileInputStream; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBareUtils.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareUtils.java index 0add1e5..e71a4fe 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBareUtils.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/NetBareUtils.java @@ -17,6 +17,8 @@ import android.text.TextUtils; +import com.sanbo.utils.EL; + import java.io.Closeable; import java.io.IOException; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/XLog.java b/netbare/src/main/java/com/github/megatronking/netbare/XLog.java index af53867..977a8c0 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/XLog.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/XLog.java @@ -17,6 +17,7 @@ import com.github.megatronking.netbare.net.Session; import com.github.megatronking.netbare.ip.Protocol; +import com.sanbo.utils.EL; /** * A log util using in NetBare, it uses the protocol, ip and port as the prefix. diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java index 65d7aac..47a11ca 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpHeaderSniffInterceptor.java @@ -17,7 +17,7 @@ import android.support.annotation.NonNull; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.ssl.SSLRefluxCallback; import java.io.IOException; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java index 8cf59c7..f643d79 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.http; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.ssl.SSLEngineFactory; import com.github.megatronking.netbare.ssl.SSLRequestCodec; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java index c400928..522a2ba 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSSLResponseCodec.java @@ -18,7 +18,7 @@ import android.annotation.SuppressLint; import android.support.annotation.NonNull; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.ssl.SSLEngineFactory; import com.github.megatronking.netbare.ssl.SSLResponseCodec; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java index a53c35c..b46989d 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/http/HttpSniffInterceptor.java @@ -17,7 +17,7 @@ import android.support.annotation.NonNull; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.ssl.SSLCodec; import com.github.megatronking.netbare.ssl.SSLWhiteList; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java index 6616909..d3b7d7c 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/BaseProxyServer.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.proxy; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import java.io.IOException; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java index 9b34330..67d080e 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/IcmpProxyServerForwarder.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.proxy; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.ip.IcmpHeader; import com.github.megatronking.netbare.ip.IpHeader; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java index aeee453..af36920 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServer.java @@ -17,7 +17,7 @@ import android.net.VpnService; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.NetBareUtils; import com.github.megatronking.netbare.gateway.VirtualGateway; import com.github.megatronking.netbare.net.Session; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java index 1befefe..d40f71c 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/TcpProxyServerForwarder.java @@ -17,7 +17,7 @@ import android.net.VpnService; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.NetBareUtils; import com.github.megatronking.netbare.ip.IpHeader; import com.github.megatronking.netbare.ip.Protocol; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java index 7336f71..784474b 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServer.java @@ -18,7 +18,7 @@ import android.net.VpnService; import android.os.SystemClock; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.NetBareUtils; import com.github.megatronking.netbare.gateway.VirtualGateway; import com.github.megatronking.netbare.ip.IpHeader; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java b/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java index b2edd44..e734ce9 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/proxy/UdpProxyServerForwarder.java @@ -17,7 +17,7 @@ import android.net.VpnService; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.NetBareUtils; import com.github.megatronking.netbare.ip.IpHeader; import com.github.megatronking.netbare.ip.Protocol; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java index 1fc0157..e2c9fb1 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/CertificateInstallActivity.java @@ -22,7 +22,7 @@ import android.security.KeyChain; import android.support.annotation.Nullable; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import java.io.File; import java.io.IOException; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/JKS.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/JKS.java index e2ea530..cb2d7ee 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/JKS.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/JKS.java @@ -21,7 +21,7 @@ import android.security.KeyChain; import android.support.annotation.NonNull; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.NetBareUtils; import org.bouncycastle.openssl.jcajce.JcaPEMWriter; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java index c38f71b..f74e060 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLCodec.java @@ -18,7 +18,7 @@ import android.os.Build; import android.support.annotation.NonNull; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import java.io.EOFException; import java.io.IOException; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java index bbbce4c..3d65def 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java @@ -18,7 +18,7 @@ import android.os.Build; import android.support.annotation.NonNull; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.NetBareUtils; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java index 8465a12..5f5e7a1 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLRequestCodec.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.ssl; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.gateway.Request; import java.util.concurrent.ExecutionException; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java index fb7ee2a..c039489 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLResponseCodec.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.ssl; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.gateway.Request; import java.io.IOException; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java index 1856f38..3dbc494 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/ssl/SSLUtils.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.ssl; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.http.HttpProtocol; import java.nio.ByteBuffer; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java index 8cad0b8..6eb25d3 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/TcpTunnel.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.tunnel; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import java.io.IOException; import java.net.InetSocketAddress; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java index 7f6e66e..fe51a5a 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpTunnel.java @@ -15,7 +15,7 @@ */ package com.github.megatronking.netbare.tunnel; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import java.io.IOException; import java.net.DatagramSocket; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpVATunnel.java b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpVATunnel.java index 2c0459a..1d46508 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpVATunnel.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/tunnel/UdpVATunnel.java @@ -30,7 +30,7 @@ */ package com.github.megatronking.netbare.tunnel; -import com.github.megatronking.netbare.EL; +import com.sanbo.utils.EL; import com.github.megatronking.netbare.NetBareUtils; import com.github.megatronking.netbare.NetBareVirtualGateway; import com.github.megatronking.netbare.gateway.Request; diff --git a/netbare/src/main/java/com/github/megatronking/netbare/EL.java b/netbare/src/main/java/com/sanbo/utils/EL.java similarity index 99% rename from netbare/src/main/java/com/github/megatronking/netbare/EL.java rename to netbare/src/main/java/com/sanbo/utils/EL.java index 57ba6fd..042045b 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/EL.java +++ b/netbare/src/main/java/com/sanbo/utils/EL.java @@ -13,7 +13,7 @@ * You should have received a copy of the GNU General Public License along with NetBare. * If not, see . */ -package com.github.megatronking.netbare; +package com.sanbo.utils; import android.annotation.TargetApi; import android.app.Activity; @@ -26,6 +26,8 @@ import android.util.Log; import android.util.SparseArray; +import com.github.megatronking.netbare.XLog; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; From 1170abc2db3b1f4ee02ba302e79341eba5da2586 Mon Sep 17 00:00:00 2001 From: sanbo Date: Sat, 6 Feb 2021 11:53:53 +0800 Subject: [PATCH 10/12] update log --- .../java/com/github/megatronking/netbare/NetBareService.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java index 73642b6..4f178f1 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/NetBareService.java @@ -31,7 +31,7 @@ * route incoming and outgoing net packets. The NetBare service are forced to display a notification * due to intercepting packets raises huge security concerns. *

- *

+ *

* The NetBare service is managed by {@link NetBare}, and you can use {@link NetBareListener} to * observe the state. *

@@ -103,8 +103,7 @@ private void startNetBare() { NetBareConfig config = NetBare.get().getConfig(); if (config == null) { - throw new IllegalArgumentException("Must start NetBareService with a " + - "NetBareConfig"); + throw new IllegalArgumentException("Must start NetBareService with a NetBareConfig"); } EL.i("Start NetBare service!"); From fa252ee463a50a078e9a1f68fa51e30742b8df3f Mon Sep 17 00:00:00 2001 From: "sanbo.xyz" Date: Mon, 11 Oct 2021 12:45:56 +0800 Subject: [PATCH 11/12] update --- .../java/com/github/megatronking/netbare/NetBare.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java b/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java index 4c8aa9a..02306e5 100644 --- a/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java +++ b/netbare/src/main/java/com/github/megatronking/netbare/NetBare.java @@ -33,7 +33,7 @@ * NetBare is a single instance, we can use this class to config and manage the NetBare service. * The NetBare service is an implement class of {@link VpnService}, before starting this service, * should call {@link #prepare()} to check the vpn state. - * + *

* Start and stop the NetBare service: *

  * 
@@ -68,12 +68,16 @@ private NetBare() {
         mListeners = new LinkedHashSet<>();
     }
 
+    public NetBare attachApplication(@NonNull Application application) {
+        return attachApplication(application, false);
+    }
+
     /**
      * Attach an application instance to NetBare. We recommend you to call this method in your
      * {@link Application} class.
      *
      * @param application The application instance.
-     * @param debug Should print logs in console.
+     * @param debug       Should print logs in console.
      * @return The single instance of NetBare.
      */
     public NetBare attachApplication(@NonNull Application application, boolean debug) {

From 5e264d4e3fd26b9dff7687516fc810583e734fab Mon Sep 17 00:00:00 2001
From: "sanbo.xyz" 
Date: Wed, 17 Nov 2021 14:47:47 +0800
Subject: [PATCH 12/12] add test info

---
 .../java/cn/demo/appq/Interceptor/NetHttpInject.java     | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/app/src/main/java/cn/demo/appq/Interceptor/NetHttpInject.java b/app/src/main/java/cn/demo/appq/Interceptor/NetHttpInject.java
index 4e28550..5c5bf22 100644
--- a/app/src/main/java/cn/demo/appq/Interceptor/NetHttpInject.java
+++ b/app/src/main/java/cn/demo/appq/Interceptor/NetHttpInject.java
@@ -55,6 +55,15 @@ public void onRequestInject(@NonNull HttpRequest request, @NonNull HttpBody body
                 .queryBuilder()
                 .where(ReqEntityDao.Properties.SessionId.eq(request.id()))
                 .list();
+        String pkg = App.getProcessNameByUid(request.uid());
+        Log.i("sanbo.url","pkg:"+pkg
+                +"\r\n\t URL:"+request.url()
+                +"\r\n\t protocol:"+request.protocol().toString()
+                +"\r\n\t httpProtocol:"+request.httpProtocol().toString()
+                +"\r\n\t method:"+request.method().name()
+                +"\r\n\t isHttps:"+request.isHttps()
+                +"\r\n\t Header:"+GsonUtils.toJson(request.requestHeaders())
+        );
         if (reqEntities != null && reqEntities.size() > 0) {
             ReqEntity entity = reqEntities.get(0);
             if (RECORD_REQUEST_BODY){