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){