) : TexRe
method = request.method,
requestId = request.reqResId.toString(),
timeStamp = request.timestamp, // important
- url = "https://" + request.remoteHost + (request.remotePath ?: ""), // = remoteHost + path
+ url = "https://" + request.remoteHost + request.remotePath, // = remoteHost + path
requestHeaders = headersJsonToHeadersList(request.headers),
response = response,
success = response.statusCode > 0, // true if response exists
diff --git a/app/src/main/java/de/tomcory/heimdall/persistence/export/util/ExportUtils.kt b/core/export/src/main/java/de/tomcory/heimdall/core/export/util/ExportUtils.kt
similarity index 93%
rename from app/src/main/java/de/tomcory/heimdall/persistence/export/util/ExportUtils.kt
rename to core/export/src/main/java/de/tomcory/heimdall/core/export/util/ExportUtils.kt
index 3c402f8..16ed7bf 100644
--- a/app/src/main/java/de/tomcory/heimdall/persistence/export/util/ExportUtils.kt
+++ b/core/export/src/main/java/de/tomcory/heimdall/core/export/util/ExportUtils.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.persistence.export.util
+package de.tomcory.heimdall.core.export.util
fun swapJsonQuotes(json: String): String {
val sb = StringBuilder()
diff --git a/core/proxy/.gitignore b/core/proxy/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/core/proxy/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/core/proxy/build.gradle.kts b/core/proxy/build.gradle.kts
new file mode 100644
index 0000000..a8b6df9
--- /dev/null
+++ b/core/proxy/build.gradle.kts
@@ -0,0 +1,54 @@
+@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed
+plugins {
+ alias(libs.plugins.android.library)
+ alias(libs.plugins.kotlin.android)
+}
+
+kotlin {
+ jvmToolchain (11)
+}
+
+android {
+ namespace = "de.tomcory.heimdall.core.proxy"
+
+ defaultConfig {
+ compileSdk = 34
+ minSdk = 24
+ }
+
+ ndkVersion = "21.0.6113669"
+
+ packagingOptions {
+ resources {
+ excludes.add("META-INF/INDEX.LIST")
+ excludes.add("META-INF/io.netty.versions.properties")
+ }
+ }
+
+ configurations.configureEach {
+ resolutionStrategy {
+ force("io.netty:netty-all:${libs.versions.netty.get()}")
+ }
+ }
+}
+
+dependencies {
+ // BouncyCastle and Littleshoot
+ implementation (libs.bouncycastle.bcprov.jdk15on)
+ implementation (libs.bouncycastle.bcpkix.jdk15on)
+ implementation (libs.dnssec4j)
+ implementation (libs.commons.io)
+ implementation (libs.netty.all)
+ implementation (libs.okhttp)
+ implementation (libs.lightbody.mitm) { exclude(group = "org.slf4j") }
+ implementation (libs.jzlib)
+ implementation (libs.guava)
+
+ implementation (libs.timber)
+ implementation (libs.lifecycle.runtime.ktx)
+ implementation (libs.androidx.room.runtime)
+ implementation (libs.androidx.room.ktx)
+
+ implementation (project(":core:database"))
+ implementation (project(":core:util"))
+}
\ No newline at end of file
diff --git a/app/src/main/java/proxy/ApacheHttpdMimeTypes.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/ApacheHttpdMimeTypes.java
similarity index 98%
rename from app/src/main/java/proxy/ApacheHttpdMimeTypes.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/ApacheHttpdMimeTypes.java
index 7eed29f..102ff53 100644
--- a/app/src/main/java/proxy/ApacheHttpdMimeTypes.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/ApacheHttpdMimeTypes.java
@@ -1,4 +1,4 @@
-package proxy;
+package de.tomcory.heimdall.core.proxy;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
diff --git a/app/src/main/java/proxy/HeimdallHttpProxyServer.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/HeimdallHttpProxyServer.java
similarity index 72%
rename from app/src/main/java/proxy/HeimdallHttpProxyServer.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/HeimdallHttpProxyServer.java
index 0c09f34..f62b2ff 100644
--- a/app/src/main/java/proxy/HeimdallHttpProxyServer.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/HeimdallHttpProxyServer.java
@@ -1,12 +1,13 @@
-package proxy;
+package de.tomcory.heimdall.core.proxy;
import android.content.Context;
-import org.littleshoot.proxy.HttpProxyServer;
-import org.littleshoot.proxy.HttpProxyServerBootstrap;
-import org.littleshoot.proxy.SelectiveMitmManagerAdapter;
-import org.littleshoot.proxy.impl.DefaultHttpProxyServer;
-import org.littleshoot.proxy.mitm.CertificateSniffingMitmManager;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpProxyServer;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpProxyServerBootstrap;
+import de.tomcory.heimdall.core.proxy.littleshoot.SelectiveMitmManager;
+import de.tomcory.heimdall.core.proxy.littleshoot.SelectiveMitmManagerAdapter;
+import de.tomcory.heimdall.core.proxy.littleshoot.impl.DefaultHttpProxyServer;
+import de.tomcory.heimdall.core.proxy.littleshoot.mitm.CertificateSniffingMitmManager;
import java.net.InetSocketAddress;
@@ -33,7 +34,7 @@ private SelectiveMitmManagerAdapter getMitmManager() {
return new SelectiveMitmManagerAdapter(mitmManager) {
@Override
public boolean shouldMITMPeer(String peerHost, int peerPort) {
- if (whiteLsited.contains(peerHost + peerPort)) {
+ if (SelectiveMitmManager.whiteLsited.contains(peerHost + peerPort)) {
removeWhiteListed(peerHost + peerHost);
return false;
}
@@ -43,12 +44,12 @@ public boolean shouldMITMPeer(String peerHost, int peerPort) {
@Override
public void addWhiteListed(String hostAndPort) {
- whiteLsited.add(hostAndPort);
+ SelectiveMitmManager.whiteLsited.add(hostAndPort);
}
@Override
public void removeWhiteListed(String hostAndPort) {
- whiteLsited.remove(hostAndPort);
+ SelectiveMitmManager.whiteLsited.remove(hostAndPort);
}
};
}
diff --git a/app/src/main/java/proxy/HttpProxyFiltersImpl.kt b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/HttpProxyFiltersImpl.kt
similarity index 94%
rename from app/src/main/java/proxy/HttpProxyFiltersImpl.kt
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/HttpProxyFiltersImpl.kt
index 71f2348..a54d45b 100644
--- a/app/src/main/java/proxy/HttpProxyFiltersImpl.kt
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/HttpProxyFiltersImpl.kt
@@ -1,12 +1,14 @@
-package proxy
+package de.tomcory.heimdall.core.proxy
import android.content.Context
+import android.net.ConnectivityManager
import android.os.Build
+import android.system.OsConstants
import androidx.annotation.RequiresApi
-import de.tomcory.heimdall.persistence.database.HeimdallDatabase
-import de.tomcory.heimdall.persistence.database.entity.Request
-import de.tomcory.heimdall.persistence.database.entity.Response
-import de.tomcory.heimdall.util.OsUtils
+import de.tomcory.heimdall.core.database.HeimdallDatabase
+import de.tomcory.heimdall.core.database.entity.Request
+import de.tomcory.heimdall.core.database.entity.Response
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpFiltersAdapter
import io.netty.channel.ChannelHandlerContext
import io.netty.handler.codec.http.FullHttpRequest
import io.netty.handler.codec.http.FullHttpResponse
@@ -19,7 +21,6 @@ import io.netty.util.AttributeKey
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
-import org.littleshoot.proxy.HttpFiltersAdapter
import timber.log.Timber
import java.net.InetSocketAddress
import java.nio.charset.Charset
@@ -51,7 +52,8 @@ class HttpProxyFiltersImpl(
}
// get the id of the app that initiated the request
- aid = OsUtils.getAidQ(clientAddress, ctx.channel().localAddress() as InetSocketAddress, context)
+ val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager?
+ aid = cm?.getConnectionOwnerUid(OsConstants.IPPROTO_TCP, clientAddress, ctx.channel().localAddress() as InetSocketAddress) ?: -1
val pm = context.packageManager
if (aid >= 0) {
val packages = pm.getPackagesForUid(aid)
diff --git a/app/src/main/java/proxy/HttpProxyFiltersSourceImpl.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/HttpProxyFiltersSourceImpl.java
similarity index 85%
rename from app/src/main/java/proxy/HttpProxyFiltersSourceImpl.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/HttpProxyFiltersSourceImpl.java
index d17dc33..32a6366 100644
--- a/app/src/main/java/proxy/HttpProxyFiltersSourceImpl.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/HttpProxyFiltersSourceImpl.java
@@ -1,11 +1,11 @@
-package proxy;
+package de.tomcory.heimdall.core.proxy;
import android.content.Context;
import java.net.InetSocketAddress;
-import org.littleshoot.proxy.HttpFilters;
-import org.littleshoot.proxy.HttpFiltersSourceAdapter;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpFilters;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpFiltersSourceAdapter;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.HttpRequest;
diff --git a/app/src/main/java/proxy/NettyUtil.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/NettyUtil.java
similarity index 99%
rename from app/src/main/java/proxy/NettyUtil.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/NettyUtil.java
index a9d2bcb..ee4bd74 100644
--- a/app/src/main/java/proxy/NettyUtil.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/NettyUtil.java
@@ -1,4 +1,4 @@
-package proxy;
+package de.tomcory.heimdall.core.proxy;
import java.nio.charset.StandardCharsets;
import java.util.Map.Entry;
diff --git a/app/src/main/java/proxy/ProxyUtils.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/ProxyUtils.java
similarity index 93%
rename from app/src/main/java/proxy/ProxyUtils.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/ProxyUtils.java
index 49bc03f..c2ab55d 100644
--- a/app/src/main/java/proxy/ProxyUtils.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/ProxyUtils.java
@@ -1,9 +1,9 @@
-package proxy;
+package de.tomcory.heimdall.core.proxy;
import android.content.Context;
-import org.littleshoot.proxy.mitm.Authority;
-import org.littleshoot.proxy.mitm.CertificateSniffingMitmManager;
+import de.tomcory.heimdall.core.proxy.littleshoot.mitm.Authority;
+import de.tomcory.heimdall.core.proxy.littleshoot.mitm.CertificateSniffingMitmManager;
import java.io.BufferedReader;
import java.io.File;
diff --git a/app/src/main/java/org/littleshoot/proxy/ActivityTracker.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ActivityTracker.java
similarity index 98%
rename from app/src/main/java/org/littleshoot/proxy/ActivityTracker.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ActivityTracker.java
index 8ff5146..d81b124 100644
--- a/app/src/main/java/org/littleshoot/proxy/ActivityTracker.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ActivityTracker.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponse;
diff --git a/app/src/main/java/org/littleshoot/proxy/ActivityTrackerAdapter.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ActivityTrackerAdapter.java
similarity index 96%
rename from app/src/main/java/org/littleshoot/proxy/ActivityTrackerAdapter.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ActivityTrackerAdapter.java
index 9e9087d..23b3049 100644
--- a/app/src/main/java/org/littleshoot/proxy/ActivityTrackerAdapter.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ActivityTrackerAdapter.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponse;
diff --git a/app/src/main/java/org/littleshoot/proxy/ChainedProxy.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ChainedProxy.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/ChainedProxy.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ChainedProxy.java
index 3292c42..e808546 100644
--- a/app/src/main/java/org/littleshoot/proxy/ChainedProxy.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ChainedProxy.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import io.netty.handler.codec.http.HttpObject;
diff --git a/app/src/main/java/org/littleshoot/proxy/ChainedProxyAdapter.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ChainedProxyAdapter.java
similarity index 96%
rename from app/src/main/java/org/littleshoot/proxy/ChainedProxyAdapter.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ChainedProxyAdapter.java
index 61f4288..f82e0c5 100644
--- a/app/src/main/java/org/littleshoot/proxy/ChainedProxyAdapter.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ChainedProxyAdapter.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import io.netty.handler.codec.http.HttpObject;
diff --git a/app/src/main/java/org/littleshoot/proxy/ChainedProxyManager.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ChainedProxyManager.java
similarity index 95%
rename from app/src/main/java/org/littleshoot/proxy/ChainedProxyManager.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ChainedProxyManager.java
index f73c69c..f259f31 100644
--- a/app/src/main/java/org/littleshoot/proxy/ChainedProxyManager.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ChainedProxyManager.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import io.netty.handler.codec.http.HttpRequest;
diff --git a/app/src/main/java/org/littleshoot/proxy/DefaultHostResolver.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/DefaultHostResolver.java
similarity index 90%
rename from app/src/main/java/org/littleshoot/proxy/DefaultHostResolver.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/DefaultHostResolver.java
index 3519dcd..ef54620 100644
--- a/app/src/main/java/org/littleshoot/proxy/DefaultHostResolver.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/DefaultHostResolver.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import java.net.InetAddress;
import java.net.InetSocketAddress;
diff --git a/app/src/main/java/org/littleshoot/proxy/DnsSecServerResolver.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/DnsSecServerResolver.java
similarity index 88%
rename from app/src/main/java/org/littleshoot/proxy/DnsSecServerResolver.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/DnsSecServerResolver.java
index debb075..f7d6d83 100644
--- a/app/src/main/java/org/littleshoot/proxy/DnsSecServerResolver.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/DnsSecServerResolver.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
diff --git a/app/src/main/java/org/littleshoot/proxy/FlowContext.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/FlowContext.java
similarity index 88%
rename from app/src/main/java/org/littleshoot/proxy/FlowContext.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/FlowContext.java
index 15bf9ac..54fe21a 100644
--- a/app/src/main/java/org/littleshoot/proxy/FlowContext.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/FlowContext.java
@@ -1,11 +1,11 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import java.net.InetSocketAddress;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLSession;
-import org.littleshoot.proxy.impl.ClientToProxyConnection;
+import de.tomcory.heimdall.core.proxy.littleshoot.impl.ClientToProxyConnection;
/**
*
diff --git a/app/src/main/java/org/littleshoot/proxy/FullFlowContext.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/FullFlowContext.java
similarity index 76%
rename from app/src/main/java/org/littleshoot/proxy/FullFlowContext.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/FullFlowContext.java
index 43a4d9f..d6f5fe3 100644
--- a/app/src/main/java/org/littleshoot/proxy/FullFlowContext.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/FullFlowContext.java
@@ -1,7 +1,7 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
-import org.littleshoot.proxy.impl.ClientToProxyConnection;
-import org.littleshoot.proxy.impl.ProxyToServerConnection;
+import de.tomcory.heimdall.core.proxy.littleshoot.impl.ClientToProxyConnection;
+import de.tomcory.heimdall.core.proxy.littleshoot.impl.ProxyToServerConnection;
/**
* Extension of {@link FlowContext} that provides additional information (which
@@ -12,7 +12,7 @@ public class FullFlowContext extends FlowContext {
private final ChainedProxy chainedProxy;
public FullFlowContext(ClientToProxyConnection clientConnection,
- ProxyToServerConnection serverConnection) {
+ ProxyToServerConnection serverConnection) {
super(clientConnection);
this.serverHostAndPort = serverConnection.getServerHostAndPort();
this.chainedProxy = serverConnection.getChainedProxy();
diff --git a/app/src/main/java/org/littleshoot/proxy/HostResolver.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HostResolver.java
similarity index 83%
rename from app/src/main/java/org/littleshoot/proxy/HostResolver.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HostResolver.java
index 6041a45..88e78e3 100644
--- a/app/src/main/java/org/littleshoot/proxy/HostResolver.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HostResolver.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
diff --git a/app/src/main/java/org/littleshoot/proxy/HttpFilters.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFilters.java
similarity index 98%
rename from app/src/main/java/org/littleshoot/proxy/HttpFilters.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFilters.java
index b01f0ce..795f783 100644
--- a/app/src/main/java/org/littleshoot/proxy/HttpFilters.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFilters.java
@@ -1,8 +1,8 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.*;
-import org.littleshoot.proxy.impl.ProxyUtils;
+import de.tomcory.heimdall.core.proxy.littleshoot.impl.ProxyUtils;
import java.net.InetSocketAddress;
diff --git a/app/src/main/java/org/littleshoot/proxy/HttpFiltersAdapter.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFiltersAdapter.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/HttpFiltersAdapter.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFiltersAdapter.java
index 2871364..5638632 100644
--- a/app/src/main/java/org/littleshoot/proxy/HttpFiltersAdapter.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFiltersAdapter.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.HttpObject;
diff --git a/app/src/main/java/org/littleshoot/proxy/HttpFiltersSource.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFiltersSource.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/HttpFiltersSource.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFiltersSource.java
index 8f57e8f..3949a08 100644
--- a/app/src/main/java/org/littleshoot/proxy/HttpFiltersSource.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFiltersSource.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest;
diff --git a/app/src/main/java/org/littleshoot/proxy/HttpFiltersSourceAdapter.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFiltersSourceAdapter.java
similarity index 93%
rename from app/src/main/java/org/littleshoot/proxy/HttpFiltersSourceAdapter.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFiltersSourceAdapter.java
index 1b2cecf..6e61f6b 100644
--- a/app/src/main/java/org/littleshoot/proxy/HttpFiltersSourceAdapter.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpFiltersSourceAdapter.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.HttpRequest;
diff --git a/app/src/main/java/org/littleshoot/proxy/HttpProxyServer.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpProxyServer.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/HttpProxyServer.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpProxyServer.java
index 275de54..0f35565 100644
--- a/app/src/main/java/org/littleshoot/proxy/HttpProxyServer.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpProxyServer.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import java.net.InetSocketAddress;
diff --git a/app/src/main/java/org/littleshoot/proxy/HttpProxyServerBootstrap.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpProxyServerBootstrap.java
similarity index 98%
rename from app/src/main/java/org/littleshoot/proxy/HttpProxyServerBootstrap.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpProxyServerBootstrap.java
index 367dc8d..f645e91 100644
--- a/app/src/main/java/org/littleshoot/proxy/HttpProxyServerBootstrap.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/HttpProxyServerBootstrap.java
@@ -1,6 +1,6 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
-import org.littleshoot.proxy.impl.ThreadPoolConfiguration;
+import de.tomcory.heimdall.core.proxy.littleshoot.impl.ThreadPoolConfiguration;
import java.net.InetSocketAddress;
diff --git a/app/src/main/java/org/littleshoot/proxy/MitmManager.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/MitmManager.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/MitmManager.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/MitmManager.java
index 9969937..149e818 100644
--- a/app/src/main/java/org/littleshoot/proxy/MitmManager.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/MitmManager.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import io.netty.handler.codec.http.HttpRequest;
import javax.net.ssl.SSLEngine;
diff --git a/app/src/main/java/org/littleshoot/proxy/ProxyAuthenticator.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ProxyAuthenticator.java
similarity index 94%
rename from app/src/main/java/org/littleshoot/proxy/ProxyAuthenticator.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ProxyAuthenticator.java
index df77c68..85644d9 100644
--- a/app/src/main/java/org/littleshoot/proxy/ProxyAuthenticator.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/ProxyAuthenticator.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
/**
* Interface for objects that can authenticate someone for using our Proxy on
diff --git a/app/src/main/java/org/littleshoot/proxy/SelectiveMitmManager.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/SelectiveMitmManager.java
similarity index 93%
rename from app/src/main/java/org/littleshoot/proxy/SelectiveMitmManager.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/SelectiveMitmManager.java
index 10cbbf2..0b07700 100644
--- a/app/src/main/java/org/littleshoot/proxy/SelectiveMitmManager.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/SelectiveMitmManager.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import java.util.HashSet;
import java.util.Set;
diff --git a/app/src/main/java/org/littleshoot/proxy/SelectiveMitmManagerAdapter.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/SelectiveMitmManagerAdapter.java
similarity index 92%
rename from app/src/main/java/org/littleshoot/proxy/SelectiveMitmManagerAdapter.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/SelectiveMitmManagerAdapter.java
index 971132d..581165b 100644
--- a/app/src/main/java/org/littleshoot/proxy/SelectiveMitmManagerAdapter.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/SelectiveMitmManagerAdapter.java
@@ -1,7 +1,4 @@
-package org.littleshoot.proxy;
-
-import java.util.HashSet;
-import java.util.Set;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import io.netty.handler.codec.http.HttpRequest;
import javax.net.ssl.SSLEngine;
diff --git a/app/src/main/java/org/littleshoot/proxy/SslEngineSource.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/SslEngineSource.java
similarity index 93%
rename from app/src/main/java/org/littleshoot/proxy/SslEngineSource.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/SslEngineSource.java
index bb6ed1a..64595a6 100644
--- a/app/src/main/java/org/littleshoot/proxy/SslEngineSource.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/SslEngineSource.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
import javax.net.ssl.SSLEngine;
diff --git a/app/src/main/java/org/littleshoot/proxy/TransportProtocol.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/TransportProtocol.java
similarity index 69%
rename from app/src/main/java/org/littleshoot/proxy/TransportProtocol.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/TransportProtocol.java
index 8ca592e..754f178 100644
--- a/app/src/main/java/org/littleshoot/proxy/TransportProtocol.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/TransportProtocol.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
/**
* Enumeration of transport protocols supported by LittleProxy.
diff --git a/app/src/main/java/org/littleshoot/proxy/UnknownTransportProtocolException.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/UnknownTransportProtocolException.java
similarity index 89%
rename from app/src/main/java/org/littleshoot/proxy/UnknownTransportProtocolException.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/UnknownTransportProtocolException.java
index b264b81..a44311d 100644
--- a/app/src/main/java/org/littleshoot/proxy/UnknownTransportProtocolException.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/UnknownTransportProtocolException.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy;
+package de.tomcory.heimdall.core.proxy.littleshoot;
/**
* This exception indicates that the system was asked to use a TransportProtocol that it didn't know how to handle.
diff --git a/app/src/main/java/org/littleshoot/proxy/extras/SelfSignedMitmManager.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/extras/SelfSignedMitmManager.java
similarity index 87%
rename from app/src/main/java/org/littleshoot/proxy/extras/SelfSignedMitmManager.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/extras/SelfSignedMitmManager.java
index 45c71fe..e969009 100644
--- a/app/src/main/java/org/littleshoot/proxy/extras/SelfSignedMitmManager.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/extras/SelfSignedMitmManager.java
@@ -1,7 +1,7 @@
-package org.littleshoot.proxy.extras;
+package de.tomcory.heimdall.core.proxy.littleshoot.extras;
import io.netty.handler.codec.http.HttpRequest;
-import org.littleshoot.proxy.MitmManager;
+import de.tomcory.heimdall.core.proxy.littleshoot.MitmManager;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLSession;
diff --git a/app/src/main/java/org/littleshoot/proxy/extras/SelfSignedSslEngineSource.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/extras/SelfSignedSslEngineSource.java
similarity index 98%
rename from app/src/main/java/org/littleshoot/proxy/extras/SelfSignedSslEngineSource.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/extras/SelfSignedSslEngineSource.java
index 31b671c..23fe5bd 100644
--- a/app/src/main/java/org/littleshoot/proxy/extras/SelfSignedSslEngineSource.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/extras/SelfSignedSslEngineSource.java
@@ -1,7 +1,7 @@
-package org.littleshoot.proxy.extras;
+package de.tomcory.heimdall.core.proxy.littleshoot.extras;
import com.google.common.io.ByteStreams;
-import org.littleshoot.proxy.SslEngineSource;
+import de.tomcory.heimdall.core.proxy.littleshoot.SslEngineSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/CategorizedThreadFactory.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/CategorizedThreadFactory.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/impl/CategorizedThreadFactory.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/CategorizedThreadFactory.java
index 8ddbc39..7036cf7 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/CategorizedThreadFactory.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/CategorizedThreadFactory.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/ClientToProxyConnection.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ClientToProxyConnection.java
similarity index 98%
rename from app/src/main/java/org/littleshoot/proxy/impl/ClientToProxyConnection.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ClientToProxyConnection.java
index 6c922ab..61c78ba 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/ClientToProxyConnection.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ClientToProxyConnection.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import android.util.Log;
@@ -28,13 +28,13 @@
import timber.log.Timber;
import org.apache.commons.lang3.StringUtils;
-import org.littleshoot.proxy.ActivityTracker;
-import org.littleshoot.proxy.FlowContext;
-import org.littleshoot.proxy.FullFlowContext;
-import org.littleshoot.proxy.HttpFilters;
-import org.littleshoot.proxy.HttpFiltersAdapter;
-import org.littleshoot.proxy.ProxyAuthenticator;
-import org.littleshoot.proxy.SslEngineSource;
+import de.tomcory.heimdall.core.proxy.littleshoot.ActivityTracker;
+import de.tomcory.heimdall.core.proxy.littleshoot.FlowContext;
+import de.tomcory.heimdall.core.proxy.littleshoot.FullFlowContext;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpFilters;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpFiltersAdapter;
+import de.tomcory.heimdall.core.proxy.littleshoot.ProxyAuthenticator;
+import de.tomcory.heimdall.core.proxy.littleshoot.SslEngineSource;
import javax.net.ssl.SSLHandshakeException;
import javax.net.ssl.SSLSession;
@@ -53,11 +53,11 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Pattern;
-import static org.littleshoot.proxy.impl.ConnectionState.AWAITING_CHUNK;
-import static org.littleshoot.proxy.impl.ConnectionState.AWAITING_INITIAL;
-import static org.littleshoot.proxy.impl.ConnectionState.AWAITING_PROXY_AUTHENTICATION;
-import static org.littleshoot.proxy.impl.ConnectionState.DISCONNECT_REQUESTED;
-import static org.littleshoot.proxy.impl.ConnectionState.NEGOTIATING_CONNECT;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.AWAITING_CHUNK;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.AWAITING_INITIAL;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.AWAITING_PROXY_AUTHENTICATION;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.DISCONNECT_REQUESTED;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.NEGOTIATING_CONNECT;
/**
*
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/ConnectionFlow.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ConnectionFlow.java
similarity index 99%
rename from app/src/main/java/org/littleshoot/proxy/impl/ConnectionFlow.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ConnectionFlow.java
index 808c911..089332b 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/ConnectionFlow.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ConnectionFlow.java
@@ -1,8 +1,7 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.GenericFutureListener;
-import timber.log.Timber;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/ConnectionFlowStep.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ConnectionFlowStep.java
similarity index 98%
rename from app/src/main/java/org/littleshoot/proxy/impl/ConnectionFlowStep.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ConnectionFlowStep.java
index c60910d..abedd73 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/ConnectionFlowStep.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ConnectionFlowStep.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import io.netty.util.concurrent.Future;
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/ConnectionState.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ConnectionState.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/impl/ConnectionState.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ConnectionState.java
index 371fcd5..ec8fceb 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/ConnectionState.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ConnectionState.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
enum ConnectionState {
/**
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/DefaultHttpProxyServer.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/DefaultHttpProxyServer.java
similarity index 96%
rename from app/src/main/java/org/littleshoot/proxy/impl/DefaultHttpProxyServer.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/DefaultHttpProxyServer.java
index 583edf5..c730628 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/DefaultHttpProxyServer.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/DefaultHttpProxyServer.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import io.netty.bootstrap.ChannelFactory;
import io.netty.bootstrap.ServerBootstrap;
@@ -16,21 +16,18 @@
import io.netty.channel.udt.nio.NioUdtProvider;
import io.netty.handler.traffic.GlobalTrafficShapingHandler;
import io.netty.util.concurrent.GlobalEventExecutor;
-import org.littleshoot.proxy.ActivityTracker;
-import org.littleshoot.proxy.ChainedProxyManager;
-import org.littleshoot.proxy.DefaultHostResolver;
-import org.littleshoot.proxy.DnsSecServerResolver;
-import org.littleshoot.proxy.HostResolver;
-import org.littleshoot.proxy.HttpFilters;
-import org.littleshoot.proxy.HttpFiltersSource;
-import org.littleshoot.proxy.HttpFiltersSourceAdapter;
-import org.littleshoot.proxy.HttpProxyServer;
-import org.littleshoot.proxy.HttpProxyServerBootstrap;
-import org.littleshoot.proxy.MitmManager;
-import org.littleshoot.proxy.ProxyAuthenticator;
-import org.littleshoot.proxy.SslEngineSource;
-import org.littleshoot.proxy.TransportProtocol;
-import org.littleshoot.proxy.UnknownTransportProtocolException;
+import de.tomcory.heimdall.core.proxy.littleshoot.ActivityTracker;
+import de.tomcory.heimdall.core.proxy.littleshoot.ChainedProxyManager;
+import de.tomcory.heimdall.core.proxy.littleshoot.HostResolver;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpFilters;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpFiltersSource;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpProxyServer;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpProxyServerBootstrap;
+import de.tomcory.heimdall.core.proxy.littleshoot.MitmManager;
+import de.tomcory.heimdall.core.proxy.littleshoot.ProxyAuthenticator;
+import de.tomcory.heimdall.core.proxy.littleshoot.SslEngineSource;
+import de.tomcory.heimdall.core.proxy.littleshoot.TransportProtocol;
+import de.tomcory.heimdall.core.proxy.littleshoot.UnknownTransportProtocolException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/DefaultHttpProxyServerBootstrap.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/DefaultHttpProxyServerBootstrap.java
similarity index 92%
rename from app/src/main/java/org/littleshoot/proxy/impl/DefaultHttpProxyServerBootstrap.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/DefaultHttpProxyServerBootstrap.java
index 0c16805..52ab3a4 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/DefaultHttpProxyServerBootstrap.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/DefaultHttpProxyServerBootstrap.java
@@ -1,20 +1,18 @@
-package org.littleshoot.proxy.impl;
-
-import android.util.Log;
-
-import org.littleshoot.proxy.ActivityTracker;
-import org.littleshoot.proxy.ChainedProxyManager;
-import org.littleshoot.proxy.DefaultHostResolver;
-import org.littleshoot.proxy.DnsSecServerResolver;
-import org.littleshoot.proxy.HostResolver;
-import org.littleshoot.proxy.HttpFiltersSource;
-import org.littleshoot.proxy.HttpFiltersSourceAdapter;
-import org.littleshoot.proxy.HttpProxyServer;
-import org.littleshoot.proxy.HttpProxyServerBootstrap;
-import org.littleshoot.proxy.MitmManager;
-import org.littleshoot.proxy.ProxyAuthenticator;
-import org.littleshoot.proxy.SslEngineSource;
-import org.littleshoot.proxy.TransportProtocol;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
+
+import de.tomcory.heimdall.core.proxy.littleshoot.ActivityTracker;
+import de.tomcory.heimdall.core.proxy.littleshoot.ChainedProxyManager;
+import de.tomcory.heimdall.core.proxy.littleshoot.DefaultHostResolver;
+import de.tomcory.heimdall.core.proxy.littleshoot.DnsSecServerResolver;
+import de.tomcory.heimdall.core.proxy.littleshoot.HostResolver;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpFiltersSource;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpFiltersSourceAdapter;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpProxyServer;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpProxyServerBootstrap;
+import de.tomcory.heimdall.core.proxy.littleshoot.MitmManager;
+import de.tomcory.heimdall.core.proxy.littleshoot.ProxyAuthenticator;
+import de.tomcory.heimdall.core.proxy.littleshoot.SslEngineSource;
+import de.tomcory.heimdall.core.proxy.littleshoot.TransportProtocol;
import java.net.InetSocketAddress;
import java.util.Collection;
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/NetworkUtils.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/NetworkUtils.java
similarity index 96%
rename from app/src/main/java/org/littleshoot/proxy/impl/NetworkUtils.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/NetworkUtils.java
index 79a12b4..0ef4c37 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/NetworkUtils.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/NetworkUtils.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import java.net.InetAddress;
import java.net.InterfaceAddress;
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/ProxyConnection.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyConnection.java
similarity index 99%
rename from app/src/main/java/org/littleshoot/proxy/impl/ProxyConnection.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyConnection.java
index ded214f..c635dbb 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/ProxyConnection.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyConnection.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
@@ -8,14 +8,13 @@
import io.netty.handler.timeout.IdleStateEvent;
import io.netty.util.ReferenceCounted;
import io.netty.util.concurrent.Future;
-import io.netty.util.concurrent.FutureListener;
import io.netty.util.concurrent.GenericFutureListener;
import io.netty.util.concurrent.Promise;
-import org.littleshoot.proxy.HttpFilters;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpFilters;
import javax.net.ssl.SSLEngine;
-import static org.littleshoot.proxy.impl.ConnectionState.*;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.*;
/**
*
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/ProxyConnectionLogger.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyConnectionLogger.java
similarity index 99%
rename from app/src/main/java/org/littleshoot/proxy/impl/ProxyConnectionLogger.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyConnectionLogger.java
index c3856f3..1364b92 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/ProxyConnectionLogger.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyConnectionLogger.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import java.util.Arrays;
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/ProxyThreadPools.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyThreadPools.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/impl/ProxyThreadPools.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyThreadPools.java
index 2ca4f0f..bf7429f 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/ProxyThreadPools.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyThreadPools.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import com.google.common.collect.ImmutableList;
import io.netty.channel.EventLoopGroup;
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/ProxyToServerConnection.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyToServerConnection.java
similarity index 96%
rename from app/src/main/java/org/littleshoot/proxy/impl/ProxyToServerConnection.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyToServerConnection.java
index b614c57..ab999a7 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/ProxyToServerConnection.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyToServerConnection.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import com.google.common.net.HostAndPort;
import io.netty.bootstrap.Bootstrap;
@@ -31,19 +31,18 @@
import io.netty.handler.traffic.GlobalTrafficShapingHandler;
import io.netty.util.ReferenceCounted;
import io.netty.util.concurrent.Future;
-import io.netty.util.concurrent.GenericFutureListener;
import timber.log.Timber;
-import org.littleshoot.proxy.ActivityTracker;
-import org.littleshoot.proxy.ChainedProxy;
-import org.littleshoot.proxy.ChainedProxyAdapter;
-import org.littleshoot.proxy.ChainedProxyManager;
-import org.littleshoot.proxy.FullFlowContext;
-import org.littleshoot.proxy.HttpFilters;
-import org.littleshoot.proxy.MitmManager;
-import org.littleshoot.proxy.SelectiveMitmManager;
-import org.littleshoot.proxy.TransportProtocol;
-import org.littleshoot.proxy.UnknownTransportProtocolException;
+import de.tomcory.heimdall.core.proxy.littleshoot.ActivityTracker;
+import de.tomcory.heimdall.core.proxy.littleshoot.ChainedProxy;
+import de.tomcory.heimdall.core.proxy.littleshoot.ChainedProxyAdapter;
+import de.tomcory.heimdall.core.proxy.littleshoot.ChainedProxyManager;
+import de.tomcory.heimdall.core.proxy.littleshoot.FullFlowContext;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpFilters;
+import de.tomcory.heimdall.core.proxy.littleshoot.MitmManager;
+import de.tomcory.heimdall.core.proxy.littleshoot.SelectiveMitmManager;
+import de.tomcory.heimdall.core.proxy.littleshoot.TransportProtocol;
+import de.tomcory.heimdall.core.proxy.littleshoot.UnknownTransportProtocolException;
import javax.net.ssl.SSLHandshakeException;
import javax.net.ssl.SSLProtocolException;
@@ -55,12 +54,12 @@
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.RejectedExecutionException;
-import static org.littleshoot.proxy.impl.ConnectionState.AWAITING_CHUNK;
-import static org.littleshoot.proxy.impl.ConnectionState.AWAITING_CONNECT_OK;
-import static org.littleshoot.proxy.impl.ConnectionState.AWAITING_INITIAL;
-import static org.littleshoot.proxy.impl.ConnectionState.CONNECTING;
-import static org.littleshoot.proxy.impl.ConnectionState.DISCONNECTED;
-import static org.littleshoot.proxy.impl.ConnectionState.HANDSHAKING;;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.AWAITING_CHUNK;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.AWAITING_CONNECT_OK;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.AWAITING_INITIAL;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.CONNECTING;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.DISCONNECTED;
+import static de.tomcory.heimdall.core.proxy.littleshoot.impl.ConnectionState.HANDSHAKING;;
/**
*
* Represents a connection from our proxy to a server on the web.
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/ProxyUtils.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyUtils.java
similarity index 99%
rename from app/src/main/java/org/littleshoot/proxy/impl/ProxyUtils.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyUtils.java
index 37aafc0..6bba774 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/ProxyUtils.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ProxyUtils.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/ServerGroup.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ServerGroup.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/impl/ServerGroup.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ServerGroup.java
index d359c7b..32e4fb6 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/ServerGroup.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ServerGroup.java
@@ -1,10 +1,10 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.udt.nio.NioUdtProvider;
-import org.littleshoot.proxy.HttpProxyServer;
-import org.littleshoot.proxy.TransportProtocol;
-import org.littleshoot.proxy.UnknownTransportProtocolException;
+import de.tomcory.heimdall.core.proxy.littleshoot.HttpProxyServer;
+import de.tomcory.heimdall.core.proxy.littleshoot.TransportProtocol;
+import de.tomcory.heimdall.core.proxy.littleshoot.UnknownTransportProtocolException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/app/src/main/java/org/littleshoot/proxy/impl/ThreadPoolConfiguration.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ThreadPoolConfiguration.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/impl/ThreadPoolConfiguration.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ThreadPoolConfiguration.java
index b8e7b05..2aedec7 100644
--- a/app/src/main/java/org/littleshoot/proxy/impl/ThreadPoolConfiguration.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/impl/ThreadPoolConfiguration.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.impl;
+package de.tomcory.heimdall.core.proxy.littleshoot.impl;
/**
* Configuration object for the proxy's thread pools. Controls the number of acceptor and worker threads in the Netty
diff --git a/app/src/main/java/org/littleshoot/proxy/mitm/Authority.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/Authority.java
similarity index 98%
rename from app/src/main/java/org/littleshoot/proxy/mitm/Authority.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/Authority.java
index 49f3ed6..5a045cb 100644
--- a/app/src/main/java/org/littleshoot/proxy/mitm/Authority.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/Authority.java
@@ -1,6 +1,4 @@
-package org.littleshoot.proxy.mitm;
-
-import android.util.Log;
+package de.tomcory.heimdall.core.proxy.littleshoot.mitm;
import java.io.File;
import java.io.IOException;
diff --git a/app/src/main/java/org/littleshoot/proxy/mitm/BouncyCastleSslEngineSource.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/BouncyCastleSslEngineSource.java
similarity index 99%
rename from app/src/main/java/org/littleshoot/proxy/mitm/BouncyCastleSslEngineSource.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/BouncyCastleSslEngineSource.java
index b865d21..348661d 100644
--- a/app/src/main/java/org/littleshoot/proxy/mitm/BouncyCastleSslEngineSource.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/BouncyCastleSslEngineSource.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.mitm;
+package de.tomcory.heimdall.core.proxy.littleshoot.mitm;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
@@ -31,7 +31,7 @@
import org.apache.commons.io.IOUtils;
import org.bouncycastle.openssl.jcajce.JcaPEMWriter;
import org.bouncycastle.operator.OperatorCreationException;
-import org.littleshoot.proxy.SslEngineSource;
+import de.tomcory.heimdall.core.proxy.littleshoot.SslEngineSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/app/src/main/java/org/littleshoot/proxy/mitm/CertificateHelper.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/CertificateHelper.java
similarity index 99%
rename from app/src/main/java/org/littleshoot/proxy/mitm/CertificateHelper.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/CertificateHelper.java
index d6b3874..02f7787 100644
--- a/app/src/main/java/org/littleshoot/proxy/mitm/CertificateHelper.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/CertificateHelper.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.mitm;
+package de.tomcory.heimdall.core.proxy.littleshoot.mitm;
import android.os.Build;
diff --git a/app/src/main/java/org/littleshoot/proxy/mitm/CertificateSniffingMitmManager.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/CertificateSniffingMitmManager.java
similarity index 87%
rename from app/src/main/java/org/littleshoot/proxy/mitm/CertificateSniffingMitmManager.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/CertificateSniffingMitmManager.java
index 712b2dc..7533d8f 100644
--- a/app/src/main/java/org/littleshoot/proxy/mitm/CertificateSniffingMitmManager.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/CertificateSniffingMitmManager.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.mitm;
+package de.tomcory.heimdall.core.proxy.littleshoot.mitm;
import java.nio.ByteBuffer;
import java.security.cert.Certificate;
@@ -8,11 +8,9 @@
import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLSession;
-import org.littleshoot.proxy.MitmManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import de.tomcory.heimdall.core.proxy.littleshoot.MitmManager;
-import de.tomcory.heimdall.util.ByteUtils;
+import de.tomcory.heimdall.core.util.ByteUtils;
import io.netty.handler.codec.http.HttpRequest;
import timber.log.Timber;
@@ -22,9 +20,6 @@
*/
public class CertificateSniffingMitmManager implements MitmManager {
- private static final Logger LOG = LoggerFactory
- .getLogger(CertificateSniffingMitmManager.class);
-
private BouncyCastleSslEngineSource sslEngineSource;
public CertificateSniffingMitmManager() throws RootCertificateException {
@@ -66,7 +61,7 @@ public SSLEngine clientSslEngineFor(HttpRequest httpRequest, SSLSession serverSs
san.addAll(upstreamCert.getSubjectAlternativeNames());
- LOG.debug("Subject Alternative Names: {}", san);
+ Timber.d("Subject Alternative Names: $san");
return sslEngineSource.createCertForHost(commonName, san);
} catch (Exception e) {
@@ -88,12 +83,12 @@ private X509Certificate getCertificateFromSession(SSLSession sslSession)
}
public String getCommonName(X509Certificate c) {
- LOG.debug("Subject DN principal name: {}", c.getSubjectDN().getName());
+ Timber.d("Subject DN principal name: ${c.getSubjectDN().getName()}");
Timber.d("DN " + c.getSubjectX500Principal().getName() + " hash is " + ByteUtils.bytesToHex(ByteBuffer.allocate(4).putInt(c.getSubjectX500Principal().hashCode()).array()));
for (String each : c.getSubjectDN().getName().split(",\\s*")) {
if (each.startsWith("CN=")) {
String result = each.substring(3);
- LOG.debug("Common Name: {}", result);
+ Timber.d("Common Name: $result");
return result;
}
}
diff --git a/app/src/main/java/org/littleshoot/proxy/mitm/FakeCertificateException.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/FakeCertificateException.java
similarity index 80%
rename from app/src/main/java/org/littleshoot/proxy/mitm/FakeCertificateException.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/FakeCertificateException.java
index e46da34..a498c41 100644
--- a/app/src/main/java/org/littleshoot/proxy/mitm/FakeCertificateException.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/FakeCertificateException.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.mitm;
+package de.tomcory.heimdall.core.proxy.littleshoot.mitm;
public class FakeCertificateException extends RuntimeException {
diff --git a/app/src/main/java/org/littleshoot/proxy/mitm/MergeTrustManager.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/MergeTrustManager.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/mitm/MergeTrustManager.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/MergeTrustManager.java
index f5cfa3d..d47a2ac 100644
--- a/app/src/main/java/org/littleshoot/proxy/mitm/MergeTrustManager.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/MergeTrustManager.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.mitm;
+package de.tomcory.heimdall.core.proxy.littleshoot.mitm;
import java.security.KeyStore;
import java.security.KeyStoreException;
diff --git a/app/src/main/java/org/littleshoot/proxy/mitm/RootCertificateException.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/RootCertificateException.java
similarity index 79%
rename from app/src/main/java/org/littleshoot/proxy/mitm/RootCertificateException.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/RootCertificateException.java
index c3dafef..db2444c 100644
--- a/app/src/main/java/org/littleshoot/proxy/mitm/RootCertificateException.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/RootCertificateException.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.mitm;
+package de.tomcory.heimdall.core.proxy.littleshoot.mitm;
public class RootCertificateException extends Exception {
diff --git a/app/src/main/java/org/littleshoot/proxy/mitm/SSLEngineDemo.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/SSLEngineDemo.java
similarity index 99%
rename from app/src/main/java/org/littleshoot/proxy/mitm/SSLEngineDemo.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/SSLEngineDemo.java
index 3ae331d..64fcddb 100644
--- a/app/src/main/java/org/littleshoot/proxy/mitm/SSLEngineDemo.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/SSLEngineDemo.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.mitm;
+package de.tomcory.heimdall.core.proxy.littleshoot.mitm;
/*
* Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
diff --git a/app/src/main/java/org/littleshoot/proxy/mitm/SubjectAlternativeNameHolder.java b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/SubjectAlternativeNameHolder.java
similarity index 97%
rename from app/src/main/java/org/littleshoot/proxy/mitm/SubjectAlternativeNameHolder.java
rename to core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/SubjectAlternativeNameHolder.java
index 9504a22..d1b21ae 100644
--- a/app/src/main/java/org/littleshoot/proxy/mitm/SubjectAlternativeNameHolder.java
+++ b/core/proxy/src/main/java/de/tomcory/heimdall/core/proxy/littleshoot/mitm/SubjectAlternativeNameHolder.java
@@ -1,4 +1,4 @@
-package org.littleshoot.proxy.mitm;
+package de.tomcory.heimdall.core.proxy.littleshoot.mitm;
import java.util.ArrayList;
import java.util.Collection;
diff --git a/core/scanner/.gitignore b/core/scanner/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/core/scanner/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/core/scanner/build.gradle.kts b/core/scanner/build.gradle.kts
new file mode 100644
index 0000000..d265257
--- /dev/null
+++ b/core/scanner/build.gradle.kts
@@ -0,0 +1,42 @@
+@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed
+plugins {
+ alias(libs.plugins.android.library)
+ alias(libs.plugins.kotlin.android)
+}
+
+kotlin {
+ jvmToolchain (11)
+}
+
+android {
+ namespace = "de.tomcory.heimdall.core.scanner"
+
+ defaultConfig {
+ compileSdk = 34
+ minSdk = 24
+ }
+}
+
+dependencies {
+ // Timber
+ implementation (libs.timber)
+
+ // Dex analyser used to detect tracker libraries in apps
+ implementation (libs.multidexlib2)
+ implementation (libs.apk.parser)
+
+ // Retrofit
+ implementation (libs.retrofit)
+ implementation (libs.retrofit.converter.moshi)
+
+ // Room dependencies
+ implementation (libs.androidx.room.runtime)
+ implementation (libs.androidx.room.ktx)
+
+ implementation (libs.androidx.datastore)
+ implementation (libs.protobuf.javalite)
+
+ implementation (project(":core:database"))
+ implementation (project(":core:datastore"))
+ implementation (project(":core:util"))
+}
\ No newline at end of file
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/code/ExodusUpdater.kt b/core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/ExodusUpdater.kt
similarity index 90%
rename from app/src/main/java/de/tomcory/heimdall/scanner/code/ExodusUpdater.kt
rename to core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/ExodusUpdater.kt
index 15767da..8d03b15 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/code/ExodusUpdater.kt
+++ b/core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/ExodusUpdater.kt
@@ -1,7 +1,7 @@
-package de.tomcory.heimdall.scanner.code
+package de.tomcory.heimdall.core.scanner
-import de.tomcory.heimdall.persistence.database.HeimdallDatabase
-import de.tomcory.heimdall.persistence.database.entity.Tracker
+import de.tomcory.heimdall.core.database.HeimdallDatabase
+import de.tomcory.heimdall.core.database.entity.Tracker
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.moshi.MoshiConverterFactory
@@ -31,14 +31,16 @@ object ExodusUpdater {
Timber.d("Updating database...")
trackersRaw?.trackers?.values?.forEach{
- trackerList.add(Tracker(
+ trackerList.add(
+ Tracker(
name = it.name,
categories = it.categories.joinToString(","),
codeSignature = it.code_signature,
networkSignature = it.network_signature,
creationDate = it.creation_date,
web = it.website
- ))
+ )
+ )
}
if(trackerList.isNotEmpty()) {
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/code/LibraryScanner.kt b/core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/LibraryScanner.kt
similarity index 90%
rename from app/src/main/java/de/tomcory/heimdall/scanner/code/LibraryScanner.kt
rename to core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/LibraryScanner.kt
index afe003c..3ca18c9 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/code/LibraryScanner.kt
+++ b/core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/LibraryScanner.kt
@@ -1,10 +1,10 @@
-package de.tomcory.heimdall.scanner.code
+package de.tomcory.heimdall.core.scanner
import android.content.pm.PackageInfo
-import de.tomcory.heimdall.persistence.database.HeimdallDatabase
-import de.tomcory.heimdall.persistence.database.entity.AppXTracker
-import de.tomcory.heimdall.persistence.database.entity.Tracker
-import de.tomcory.heimdall.util.Trie
+import de.tomcory.heimdall.core.database.HeimdallDatabase
+import de.tomcory.heimdall.core.database.entity.AppXTracker
+import de.tomcory.heimdall.core.database.entity.Tracker
+import de.tomcory.heimdall.core.util.Trie
import net.dongliu.apk.parser.ApkFile
import timber.log.Timber
import java.io.File
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/code/PermissionScanner.kt b/core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/PermissionScanner.kt
similarity index 92%
rename from app/src/main/java/de/tomcory/heimdall/scanner/code/PermissionScanner.kt
rename to core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/PermissionScanner.kt
index d400563..562ab45 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/code/PermissionScanner.kt
+++ b/core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/PermissionScanner.kt
@@ -1,9 +1,9 @@
-package de.tomcory.heimdall.scanner.code
+package de.tomcory.heimdall.core.scanner
import android.content.pm.PackageInfo
-import de.tomcory.heimdall.persistence.database.HeimdallDatabase
-import de.tomcory.heimdall.persistence.database.entity.AppXPermission
-import de.tomcory.heimdall.persistence.database.entity.Permission
+import de.tomcory.heimdall.core.database.HeimdallDatabase
+import de.tomcory.heimdall.core.database.entity.AppXPermission
+import de.tomcory.heimdall.core.database.entity.Permission
import timber.log.Timber
class PermissionScanner {
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/code/ScanManager.kt b/core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/ScanManager.kt
similarity index 81%
rename from app/src/main/java/de/tomcory/heimdall/scanner/code/ScanManager.kt
rename to core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/ScanManager.kt
index 2f41e67..9243d9b 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/code/ScanManager.kt
+++ b/core/scanner/src/main/java/de/tomcory/heimdall/core/scanner/ScanManager.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.code
+package de.tomcory.heimdall.core.scanner
import android.content.Context
import android.content.pm.ApplicationInfo
@@ -9,9 +9,9 @@ import android.graphics.drawable.Drawable
import android.os.Build
import de.tomcory.heimdall.MonitoringScopeApps
import de.tomcory.heimdall.MonitoringScopeApps.*
-import de.tomcory.heimdall.persistence.database.HeimdallDatabase
-import de.tomcory.heimdall.persistence.database.entity.App
-import de.tomcory.heimdall.ui.main.preferencesStore
+import de.tomcory.heimdall.core.database.HeimdallDatabase
+import de.tomcory.heimdall.core.datastore.preferencesStore
+import de.tomcory.heimdall.core.database.entity.App
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.first
import timber.log.Timber
@@ -23,6 +23,8 @@ class ScanManager private constructor(
suspend fun scanApp(context: Context, packageName: String) {
Timber.d("Collecting app info of $packageName")
+ val data = context.preferencesStore.data.first()
+
val pm: PackageManager = context.packageManager
val packageInfo = try {
@@ -43,7 +45,7 @@ class ScanManager private constructor(
}
val dataStore = context.preferencesStore.data.first()
- val scope = dataStore.scanMonitoringScope
+ val scope = dataStore.permissionMonitoringScope
if(!getScanPredicate(scope)(packageInfo)) {
Timber.w("App $packageName is not in scan scope $scope")
@@ -54,16 +56,16 @@ class ScanManager private constructor(
packageName = packageName,
label = packageInfo.applicationInfo.loadLabel(pm).toString(),
versionName = packageInfo.versionName,
- versionCode = packageInfo.longVersionCode,
+ versionCode = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) packageInfo.longVersionCode else packageInfo.versionCode.toLong(),
isSystem = packageInfo.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM != 0
)
HeimdallDatabase.instance?.appDao?.insertApps(app)
- if(dataStore.scanPermissionScannerEnable) {
+ if(data.permissionOnInstall) {
permissionScanner.scanApp(packageInfo)
}
- if(dataStore.scanLibraryScannerEnable) {
+ if(data.libraryOnInstall) {
libraryScanner?.scanApp(packageInfo)
}
}
@@ -72,6 +74,8 @@ class ScanManager private constructor(
progress?.emit(0.01f)
+ val data = context.preferencesStore.data.first()
+
val pm: PackageManager = context.packageManager
val packages = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
pm.getInstalledPackages(PackageManager.PackageInfoFlags.of(PackageManager.GET_META_DATA.toLong()))
@@ -81,8 +85,7 @@ class ScanManager private constructor(
progress?.emit(0.05f)
- val dataStore = context.preferencesStore.data.first()
- val scope = dataStore.scanMonitoringScope
+ val scope = data.permissionMonitoringScope
Timber.d("Scanning apps in scope $scope...")
@@ -93,7 +96,7 @@ class ScanManager private constructor(
packageName = it.packageName,
label = it.applicationInfo.loadLabel(pm).toString(),
versionName = it.versionName ?: "",
- versionCode = it.longVersionCode,
+ versionCode = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) it.longVersionCode else it.versionCode.toLong(),
isSystem = it.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM != 0
)
}
@@ -108,7 +111,7 @@ class ScanManager private constructor(
var progressValue = 0.1f
filtered.forEach {
- if(dataStore.scanPermissionScannerEnable) {
+ if(data.permissionOnInstall) {
try {
permissionScanner.scanApp(it)
} catch (e: Exception) {
@@ -116,7 +119,7 @@ class ScanManager private constructor(
}
}
- if(dataStore.scanLibraryScannerEnable) {
+ if(data.libraryOnInstall) {
try {
libraryScanner?.scanApp(it)
} catch (e: Exception) {
@@ -137,17 +140,19 @@ class ScanManager private constructor(
APPS_WHITELIST -> { _ -> true } //TODO
APPS_BLACKLIST -> { _ -> true } //TODO
UNRECOGNIZED -> { _ -> true }
+ APPS_NON_SYSTEM_BLACKLIST -> TODO()
}
companion object {
- suspend fun create(context: Context): ScanManager {
- return ScanManager(
- permissionScanner = PermissionScanner(),
- libraryScanner = LibraryScanner.create(
- context.preferencesStore.data.first().scanLibraryScannerPrepopulate
- )
- )
- }
+ suspend fun create(context: Context): ScanManager = TODO()
+
+// return ScanManager(
+// permissionScanner = PermissionScanner(),
+// libraryScanner = LibraryScanner.create(
+// context.preferencesStore.data.first().libraryPrepopulate
+// )
+// )
+
fun getAppIcon(context: Context, packageName: String): Drawable {
val pm: PackageManager = context.packageManager
diff --git a/core/util/.gitignore b/core/util/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/core/util/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/core/util/build.gradle.kts b/core/util/build.gradle.kts
new file mode 100644
index 0000000..fad67db
--- /dev/null
+++ b/core/util/build.gradle.kts
@@ -0,0 +1,26 @@
+@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed
+plugins {
+ alias(libs.plugins.android.library)
+ alias(libs.plugins.kotlin.android)
+}
+
+kotlin {
+ jvmToolchain (11)
+}
+
+android {
+ namespace = "de.tomcory.heimdall.core.util"
+
+ defaultConfig {
+ compileSdk = 34
+ minSdk = 24
+ }
+}
+
+dependencies {
+ implementation (libs.androidx.legacy.support.v4)
+ implementation (libs.lifecycle.runtime.ktx)
+
+ // Timber
+ implementation (libs.timber)
+}
\ No newline at end of file
diff --git a/app/src/main/java/de/tomcory/heimdall/util/ByteUtils.java b/core/util/src/main/java/de/tomcory/heimdall/core/util/ByteUtils.java
similarity index 95%
rename from app/src/main/java/de/tomcory/heimdall/util/ByteUtils.java
rename to core/util/src/main/java/de/tomcory/heimdall/core/util/ByteUtils.java
index 66a3647..dc3dc95 100644
--- a/app/src/main/java/de/tomcory/heimdall/util/ByteUtils.java
+++ b/core/util/src/main/java/de/tomcory/heimdall/core/util/ByteUtils.java
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.util;
+package de.tomcory.heimdall.core.util;
public class ByteUtils {
private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();
diff --git a/app/src/main/java/de/tomcory/heimdall/util/FileUtils.kt b/core/util/src/main/java/de/tomcory/heimdall/core/util/FileUtils.kt
similarity index 75%
rename from app/src/main/java/de/tomcory/heimdall/util/FileUtils.kt
rename to core/util/src/main/java/de/tomcory/heimdall/core/util/FileUtils.kt
index 8ce51d3..9084547 100644
--- a/app/src/main/java/de/tomcory/heimdall/util/FileUtils.kt
+++ b/core/util/src/main/java/de/tomcory/heimdall/core/util/FileUtils.kt
@@ -1,9 +1,7 @@
-package de.tomcory.heimdall.util
+package de.tomcory.heimdall.core.util
import android.content.Context
import android.net.Uri
-import de.tomcory.heimdall.scanner.traffic.mitm.Authority
-import de.tomcory.heimdall.scanner.traffic.mitm.KeyStoreHelper
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import timber.log.Timber
@@ -55,18 +53,6 @@ object FileUtils {
return true
}
- /**
- * Generates a Magisk module based on the default Authority credentials and writes it to the app's internal cache directory.
- */
- suspend fun generateMagiskModule(context: Context): String {
- Timber.d("Generating authority...")
- val authority = Authority.getDefaultInstance(context)
- Timber.d("Loading KeyStore...")
- val keyStore = KeyStoreHelper.initialiseOrLoadKeyStore(authority)
- Timber.d("Building Magisk module...")
- return KeyStoreHelper.createMagiskModuleWithCertificate(context, keyStore, authority) ?: ""
- }
-
fun populateTrieFromRawFile(context: Context, resId: Int, trie: Trie) {
val startTime = System.currentTimeMillis()
diff --git a/app/src/main/java/de/tomcory/heimdall/util/OsUtils.kt b/core/util/src/main/java/de/tomcory/heimdall/core/util/OsUtils.kt
similarity index 97%
rename from app/src/main/java/de/tomcory/heimdall/util/OsUtils.kt
rename to core/util/src/main/java/de/tomcory/heimdall/core/util/OsUtils.kt
index b376dfb..b4d10b9 100644
--- a/app/src/main/java/de/tomcory/heimdall/util/OsUtils.kt
+++ b/core/util/src/main/java/de/tomcory/heimdall/core/util/OsUtils.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.util
+package de.tomcory.heimdall.core.util
import android.content.Context
import android.content.pm.ApplicationInfo
diff --git a/app/src/main/java/de/tomcory/heimdall/util/Trie.kt b/core/util/src/main/java/de/tomcory/heimdall/core/util/Trie.kt
similarity index 65%
rename from app/src/main/java/de/tomcory/heimdall/util/Trie.kt
rename to core/util/src/main/java/de/tomcory/heimdall/core/util/Trie.kt
index f5e3cd7..ae836af 100644
--- a/app/src/main/java/de/tomcory/heimdall/util/Trie.kt
+++ b/core/util/src/main/java/de/tomcory/heimdall/core/util/Trie.kt
@@ -1,4 +1,8 @@
-package de.tomcory.heimdall.util
+package de.tomcory.heimdall.core.util
+
+import android.content.Context
+import java.io.BufferedReader
+import java.io.InputStreamReader
class Trie(private val pathSplitter: (String) -> List) {
private val root = TrieNode()
@@ -35,4 +39,19 @@ class Trie(private val pathSplitter: (String) -> List) {
private class TrieNode(var isTerminating: Boolean = false) {
val children: MutableMap> = mutableMapOf()
var item: T? = null
+}
+
+fun populateTrieFromRawFile(context: Context, resId: Int, trie: Trie) {
+ val inputStream = context.resources.openRawResource(resId)
+ val reader = BufferedReader(InputStreamReader(inputStream))
+ var lineCounter = 0
+
+ reader.use { r ->
+ r.forEachLine { line ->
+ trie.insert(line, line)
+ lineCounter++
+ }
+ }
+
+ reader.close()
}
\ No newline at end of file
diff --git a/core/vpn/.gitignore b/core/vpn/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/core/vpn/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/core/vpn/build.gradle.kts b/core/vpn/build.gradle.kts
new file mode 100644
index 0000000..d3a4e7d
--- /dev/null
+++ b/core/vpn/build.gradle.kts
@@ -0,0 +1,37 @@
+@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed
+plugins {
+ alias(libs.plugins.android.library)
+ alias(libs.plugins.kotlin.android)
+}
+
+kotlin {
+ jvmToolchain (11)
+}
+
+android {
+ namespace = "de.tomcory.heimdall.core.vpn"
+
+ defaultConfig {
+ compileSdk = 34
+ minSdk = 24
+ }
+}
+
+dependencies {
+ implementation (libs.timber)
+ implementation (libs.lifecycle.runtime.ktx)
+
+ // Room dependencies
+ implementation (libs.androidx.room.ktx)
+
+ implementation (libs.bouncycastle.bcpkix.jdk15on)
+ implementation (libs.guava)
+ implementation (libs.netty.all) { exclude(group = "org.slf4j") }
+
+ // pcap4j
+ implementation (libs.pcap4j.core)
+ implementation (libs.pcap4j.packetfactory.static)
+
+ implementation (project(":core:database"))
+ implementation (project(":core:util"))
+}
\ No newline at end of file
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/cache/ConnectionCache.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/cache/ConnectionCache.kt
similarity index 89%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/cache/ConnectionCache.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/cache/ConnectionCache.kt
index 5c3ca9d..b3263a5 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/cache/ConnectionCache.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/cache/ConnectionCache.kt
@@ -1,6 +1,6 @@
-package de.tomcory.heimdall.scanner.traffic.cache
+package de.tomcory.heimdall.core.vpn.cache
-import de.tomcory.heimdall.scanner.traffic.connection.transportLayer.TransportLayerConnection
+import de.tomcory.heimdall.core.vpn.connection.transportLayer.TransportLayerConnection
import org.pcap4j.packet.IpPacket
import org.pcap4j.packet.TransportPacket
import timber.log.Timber
@@ -74,7 +74,12 @@ class ConnectionCache {
)
}
- private fun getKey(remoteAddress: InetAddress, protocol: Int, localPort: Int, remotePort: Int): Int {
+ private fun getKey(
+ remoteAddress: InetAddress,
+ protocol: Int,
+ localPort: Int,
+ remotePort: Int
+ ): Int {
return remoteAddress.hashCode() xor (protocol shl 16) xor (localPort shl 8) xor remotePort
}
}
diff --git a/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/cache/DnsCache.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/cache/DnsCache.kt
new file mode 100644
index 0000000..5d5a076
--- /dev/null
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/cache/DnsCache.kt
@@ -0,0 +1,26 @@
+package de.tomcory.heimdall.core.vpn.cache
+
+import java.util.LinkedHashMap
+
+class DnsCache {
+ private val hosts: LinkedHashMap = object : LinkedHashMap(MAX_SIZE) {
+ override fun removeEldestEntry(eldest: Map.Entry): Boolean {
+ return size >= MAX_SIZE
+ }
+ }
+
+ companion object {
+ private const val MAX_SIZE = 128
+
+ //the singleton
+ private val cache = DnsCache()
+ @JvmStatic
+ fun findHost(ipAddress: String): String? {
+ return cache.hosts[ipAddress]
+ }
+
+ fun addHost(ipAddress: String, hostname: String) {
+ cache.hosts[ipAddress] = hostname
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/ComponentManager.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/ComponentManager.kt
similarity index 91%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/ComponentManager.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/ComponentManager.kt
index 8b1de96..bcaa391 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/ComponentManager.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/ComponentManager.kt
@@ -1,18 +1,18 @@
-package de.tomcory.heimdall.scanner.traffic.components
+package de.tomcory.heimdall.core.vpn.components
import android.content.Context
import android.net.VpnService
import android.system.ErrnoException
import android.system.Os
-import de.tomcory.heimdall.R
-import de.tomcory.heimdall.scanner.traffic.cache.ConnectionCache
-import de.tomcory.heimdall.scanner.traffic.metadata.AppFinder
-import de.tomcory.heimdall.scanner.traffic.metadata.DnsCache
-import de.tomcory.heimdall.scanner.traffic.metadata.TlsPassthroughCache
-import de.tomcory.heimdall.scanner.traffic.mitm.Authority
-import de.tomcory.heimdall.scanner.traffic.mitm.CertificateSniffingMitmManager
-import de.tomcory.heimdall.scanner.traffic.mitm.VpnComponentLaunchException
-import de.tomcory.heimdall.util.Trie
+import de.tomcory.heimdall.core.vpn.R
+import de.tomcory.heimdall.core.vpn.cache.ConnectionCache
+import de.tomcory.heimdall.core.vpn.metadata.AppFinder
+import de.tomcory.heimdall.core.vpn.metadata.DnsCache
+import de.tomcory.heimdall.core.vpn.metadata.TlsPassthroughCache
+import de.tomcory.heimdall.core.vpn.mitm.Authority
+import de.tomcory.heimdall.core.vpn.mitm.CertificateSniffingMitmManager
+import de.tomcory.heimdall.core.vpn.mitm.VpnComponentLaunchException
+import de.tomcory.heimdall.core.util.Trie
import org.pcap4j.packet.IllegalRawDataException
import org.pcap4j.packet.IpV4Packet
import org.pcap4j.packet.TcpPacket
@@ -34,7 +34,11 @@ class ComponentManager(
val vpnService: VpnService?,
val doMitm: Boolean = false,
val maxPacketSize: Int = 16413,
- private val trackerTrie: Trie = Trie { it.split(".").reversed() }
+ private val trackerTrie: de.tomcory.heimdall.core.util.Trie = de.tomcory.heimdall.core.util.Trie {
+ it.split(
+ "."
+ ).reversed()
+ }
) {
private var devicePollThread: DevicePollThread? = null
@@ -213,7 +217,7 @@ class ComponentManager(
Timber.d("Completed pcap4j configuration")
}
- private fun populateTrieFromRawFile(context: Context, resId: Int, trie: Trie) {
+ private fun populateTrieFromRawFile(context: Context, resId: Int, trie: de.tomcory.heimdall.core.util.Trie) {
val startTime = System.currentTimeMillis()
val inputStream = context.resources.openRawResource(resId)
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/DevicePollThread.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/DevicePollThread.kt
similarity index 96%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/DevicePollThread.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/DevicePollThread.kt
index 79e9d0c..a4c5be1 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/DevicePollThread.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/DevicePollThread.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.components
+package de.tomcory.heimdall.core.vpn.components
import android.os.Handler
import android.os.Process
@@ -6,7 +6,6 @@ import android.system.ErrnoException
import android.system.Os
import android.system.OsConstants
import android.system.StructPollfd
-import de.tomcory.heimdall.persistence.VpnStats
import org.pcap4j.packet.*
import timber.log.Timber
import java.io.FileDescriptor
@@ -159,10 +158,6 @@ class DevicePollThread internal constructor(
} else {
IpV6Packet.newPacket(rawPacket, 0, rawPacket.size)
}
-
- // update the Statistics singleton's data
- VpnStats.increaseSessionStatsOut(rawPacket)
-
return parsedPacket
}
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/DeviceWriteThread.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/DeviceWriteThread.kt
similarity index 96%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/DeviceWriteThread.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/DeviceWriteThread.kt
index 5e7b9ab..a04a625 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/DeviceWriteThread.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/DeviceWriteThread.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.components
+package de.tomcory.heimdall.core.vpn.components
import android.os.Handler
import android.os.HandlerThread
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/InboundTrafficHandler.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/InboundTrafficHandler.kt
similarity index 91%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/InboundTrafficHandler.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/InboundTrafficHandler.kt
index f8b14dc..6d501dd 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/InboundTrafficHandler.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/InboundTrafficHandler.kt
@@ -1,7 +1,7 @@
-package de.tomcory.heimdall.scanner.traffic.components
+package de.tomcory.heimdall.core.vpn.components
import android.os.Process
-import de.tomcory.heimdall.scanner.traffic.connection.transportLayer.TransportLayerConnection
+import de.tomcory.heimdall.core.vpn.connection.transportLayer.TransportLayerConnection
import timber.log.Timber
import java.io.IOException
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/OutboundTrafficHandler.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/OutboundTrafficHandler.kt
similarity index 89%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/OutboundTrafficHandler.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/OutboundTrafficHandler.kt
index ba7b3c1..c02f44d 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/components/OutboundTrafficHandler.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/components/OutboundTrafficHandler.kt
@@ -1,10 +1,10 @@
-package de.tomcory.heimdall.scanner.traffic.components
+package de.tomcory.heimdall.core.vpn.components
import android.os.Handler
import android.os.HandlerThread
import android.os.Message
import android.os.Process
-import de.tomcory.heimdall.scanner.traffic.connection.transportLayer.TransportLayerConnection
+import de.tomcory.heimdall.core.vpn.connection.transportLayer.TransportLayerConnection
import org.pcap4j.packet.IpPacket
import timber.log.Timber
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/AppLayerConnection.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/AppLayerConnection.kt
similarity index 93%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/AppLayerConnection.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/AppLayerConnection.kt
index 8bdc4e0..ff17545 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/AppLayerConnection.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/AppLayerConnection.kt
@@ -1,7 +1,7 @@
-package de.tomcory.heimdall.scanner.traffic.connection.appLayer
+package de.tomcory.heimdall.core.vpn.connection.appLayer
-import de.tomcory.heimdall.scanner.traffic.components.ComponentManager
-import de.tomcory.heimdall.scanner.traffic.connection.encryptionLayer.EncryptionLayerConnection
+import de.tomcory.heimdall.core.vpn.components.ComponentManager
+import de.tomcory.heimdall.core.vpn.connection.encryptionLayer.EncryptionLayerConnection
import org.pcap4j.packet.DnsPacket
import org.pcap4j.packet.Packet
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/DnsConnection.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/DnsConnection.kt
similarity index 88%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/DnsConnection.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/DnsConnection.kt
index aa42283..8307647 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/DnsConnection.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/DnsConnection.kt
@@ -1,7 +1,7 @@
-package de.tomcory.heimdall.scanner.traffic.connection.appLayer
+package de.tomcory.heimdall.core.vpn.connection.appLayer
-import de.tomcory.heimdall.scanner.traffic.components.ComponentManager
-import de.tomcory.heimdall.scanner.traffic.connection.encryptionLayer.EncryptionLayerConnection
+import de.tomcory.heimdall.core.vpn.components.ComponentManager
+import de.tomcory.heimdall.core.vpn.connection.encryptionLayer.EncryptionLayerConnection
import org.pcap4j.packet.DnsPacket
import org.pcap4j.packet.DnsRDataA
import org.pcap4j.packet.DnsRDataAaaa
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/HttpConnection.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/HttpConnection.kt
similarity index 96%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/HttpConnection.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/HttpConnection.kt
index 71cdbed..a53c66f 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/HttpConnection.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/HttpConnection.kt
@@ -1,10 +1,10 @@
-package de.tomcory.heimdall.scanner.traffic.connection.appLayer
+package de.tomcory.heimdall.core.vpn.connection.appLayer
-import de.tomcory.heimdall.persistence.database.HeimdallDatabase
-import de.tomcory.heimdall.persistence.database.entity.Request
-import de.tomcory.heimdall.persistence.database.entity.Response
-import de.tomcory.heimdall.scanner.traffic.components.ComponentManager
-import de.tomcory.heimdall.scanner.traffic.connection.encryptionLayer.EncryptionLayerConnection
+import de.tomcory.heimdall.core.database.HeimdallDatabase
+import de.tomcory.heimdall.core.database.entity.Request
+import de.tomcory.heimdall.core.database.entity.Response
+import de.tomcory.heimdall.core.vpn.components.ComponentManager
+import de.tomcory.heimdall.core.vpn.connection.encryptionLayer.EncryptionLayerConnection
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/RawConnection.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/RawConnection.kt
similarity index 83%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/RawConnection.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/RawConnection.kt
index bb9b63f..2883e60 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/appLayer/RawConnection.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/appLayer/RawConnection.kt
@@ -1,7 +1,7 @@
-package de.tomcory.heimdall.scanner.traffic.connection.appLayer
+package de.tomcory.heimdall.core.vpn.connection.appLayer
-import de.tomcory.heimdall.scanner.traffic.components.ComponentManager
-import de.tomcory.heimdall.scanner.traffic.connection.encryptionLayer.EncryptionLayerConnection
+import de.tomcory.heimdall.core.vpn.components.ComponentManager
+import de.tomcory.heimdall.core.vpn.connection.encryptionLayer.EncryptionLayerConnection
import org.pcap4j.packet.Packet
import timber.log.Timber
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/EncryptionLayerConnection.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/EncryptionLayerConnection.kt
similarity index 93%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/EncryptionLayerConnection.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/EncryptionLayerConnection.kt
index 0b047fe..eff2b7b 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/EncryptionLayerConnection.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/EncryptionLayerConnection.kt
@@ -1,8 +1,8 @@
-package de.tomcory.heimdall.scanner.traffic.connection.encryptionLayer
+package de.tomcory.heimdall.core.vpn.connection.encryptionLayer
-import de.tomcory.heimdall.scanner.traffic.components.ComponentManager
-import de.tomcory.heimdall.scanner.traffic.connection.appLayer.AppLayerConnection
-import de.tomcory.heimdall.scanner.traffic.connection.transportLayer.TransportLayerConnection
+import de.tomcory.heimdall.core.vpn.components.ComponentManager
+import de.tomcory.heimdall.core.vpn.connection.appLayer.AppLayerConnection
+import de.tomcory.heimdall.core.vpn.connection.transportLayer.TransportLayerConnection
import org.pcap4j.packet.Packet
import timber.log.Timber
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/PlaintextConnection.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/PlaintextConnection.kt
similarity index 82%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/PlaintextConnection.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/PlaintextConnection.kt
index 0473782..d0ac987 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/PlaintextConnection.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/PlaintextConnection.kt
@@ -1,7 +1,7 @@
-package de.tomcory.heimdall.scanner.traffic.connection.encryptionLayer
+package de.tomcory.heimdall.core.vpn.connection.encryptionLayer
-import de.tomcory.heimdall.scanner.traffic.components.ComponentManager
-import de.tomcory.heimdall.scanner.traffic.connection.transportLayer.TransportLayerConnection
+import de.tomcory.heimdall.core.vpn.components.ComponentManager
+import de.tomcory.heimdall.core.vpn.connection.transportLayer.TransportLayerConnection
import org.pcap4j.packet.Packet
import timber.log.Timber
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/QuicConnection.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/QuicConnection.kt
similarity index 82%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/QuicConnection.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/QuicConnection.kt
index 553a83d..4b16919 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/QuicConnection.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/QuicConnection.kt
@@ -1,7 +1,7 @@
-package de.tomcory.heimdall.scanner.traffic.connection.encryptionLayer
+package de.tomcory.heimdall.core.vpn.connection.encryptionLayer
-import de.tomcory.heimdall.scanner.traffic.components.ComponentManager
-import de.tomcory.heimdall.scanner.traffic.connection.transportLayer.TransportLayerConnection
+import de.tomcory.heimdall.core.vpn.components.ComponentManager
+import de.tomcory.heimdall.core.vpn.connection.transportLayer.TransportLayerConnection
import org.pcap4j.packet.Packet
import timber.log.Timber
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/TlsConnection.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/TlsConnection.kt
similarity index 97%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/TlsConnection.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/TlsConnection.kt
index ef66f2c..08623a1 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/encryptionLayer/TlsConnection.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/encryptionLayer/TlsConnection.kt
@@ -1,8 +1,8 @@
-package de.tomcory.heimdall.scanner.traffic.connection.encryptionLayer
+package de.tomcory.heimdall.core.vpn.connection.encryptionLayer
-import de.tomcory.heimdall.scanner.traffic.components.ComponentManager
-import de.tomcory.heimdall.scanner.traffic.connection.transportLayer.TransportLayerConnection
-import de.tomcory.heimdall.util.ByteUtils
+import de.tomcory.heimdall.core.vpn.components.ComponentManager
+import de.tomcory.heimdall.core.vpn.connection.transportLayer.TransportLayerConnection
+import de.tomcory.heimdall.core.util.ByteUtils
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -168,7 +168,7 @@ class TlsConnection(
}
if(recordType == RecordType.ALERT) {
- Timber.w("tls$id outbound alert in state $state ${ByteUtils.bytesToHex(record)}")
+ Timber.w("tls$id outbound alert in state $state ${de.tomcory.heimdall.core.util.ByteUtils.bytesToHex(record)}")
}
when (state) {
@@ -178,7 +178,7 @@ class TlsConnection(
initiateServerHandshake(record)
} else {
Timber.e("tls$id Invalid outbound record ($recordType in state $state)")
- Timber.e("tls$id ${ByteUtils.bytesToHex(record)}")
+ Timber.e("tls$id ${de.tomcory.heimdall.core.util.ByteUtils.bytesToHex(record)}")
//TODO("tls$id error handling")
}
}
@@ -186,7 +186,7 @@ class TlsConnection(
// server-facing handshake ongoing, any messages from the client are unexpected
ConnectionState.SERVER_HANDSHAKE, ConnectionState.SERVER_ESTABLISHED -> {
Timber.e("tls$id handleOutboundRecord Invalid outbound record ($recordType in state $state)")
- Timber.e("tls$id ${ByteUtils.bytesToHex(record)}")
+ Timber.e("tls$id ${de.tomcory.heimdall.core.util.ByteUtils.bytesToHex(record)}")
//TODO("tls$id error handling")
}
@@ -246,7 +246,7 @@ class TlsConnection(
}
if(recordType == RecordType.ALERT) {
- Timber.w("tls$id inbound alert in state $state ${ByteUtils.bytesToHex(record)}")
+ Timber.w("tls$id inbound alert in state $state ${de.tomcory.heimdall.core.util.ByteUtils.bytesToHex(record)}")
}
when(state) {
@@ -764,8 +764,8 @@ class TlsConnection(
} else {
// make sure that we have a valid TLS record...
if(recordType !in 0x14..0x17) {
- Timber.e("tls$id Invalid TLS record type: ${ByteUtils.bytesToHex(recordType.toByte())}")
- Timber.e("tls$id ${ByteUtils.bytesToHex(payload)}")
+ Timber.e("tls$id Invalid TLS record type: ${de.tomcory.heimdall.core.util.ByteUtils.bytesToHex(recordType.toByte())}")
+ Timber.e("tls$id ${de.tomcory.heimdall.core.util.ByteUtils.bytesToHex(payload)}")
return
}
@@ -888,7 +888,7 @@ class TlsConnection(
NEW,
/**
- * Server-facing SSLEngine initialisedand TLS handshake in progress.
+ * Server-facing SSLEngine initialised and TLS handshake in progress.
*/
SERVER_HANDSHAKE,
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/inetLayer/IpPacketBuilder.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/inetLayer/IpPacketBuilder.kt
similarity index 91%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/inetLayer/IpPacketBuilder.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/inetLayer/IpPacketBuilder.kt
index 198bc8d..3b00e6b 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/inetLayer/IpPacketBuilder.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/inetLayer/IpPacketBuilder.kt
@@ -1,12 +1,11 @@
-package de.tomcory.heimdall.scanner.traffic.connection.inetLayer
+package de.tomcory.heimdall.core.vpn.connection.inetLayer
-import de.tomcory.heimdall.scanner.traffic.cache.ConnectionCache
+import de.tomcory.heimdall.core.vpn.cache.ConnectionCache
import org.pcap4j.packet.IpPacket
import org.pcap4j.packet.IpV4Packet
import org.pcap4j.packet.IpV6Packet
import org.pcap4j.packet.Packet
import org.pcap4j.packet.namednumber.IpNumber
-import timber.log.Timber
import java.net.InetAddress
/**
@@ -53,7 +52,7 @@ abstract class IpPacketBuilder protected constructor(
is IpV6Packet -> IpV6PacketBuilder.buildStray(strayPacket, payloadBuilder)
else -> null
}
- //Timber.d("Built response for stray packet: %s", strayResponse)
+
return strayResponse
}
}
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/inetLayer/IpV4PacketBuilder.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/inetLayer/IpV4PacketBuilder.kt
similarity index 97%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/inetLayer/IpV4PacketBuilder.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/inetLayer/IpV4PacketBuilder.kt
index 84bc58c..a60137b 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/inetLayer/IpV4PacketBuilder.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/inetLayer/IpV4PacketBuilder.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.connection.inetLayer
+package de.tomcory.heimdall.core.vpn.connection.inetLayer
import org.pcap4j.packet.IpPacket
import org.pcap4j.packet.IpV4Packet
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/inetLayer/IpV6PacketBuilder.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/inetLayer/IpV6PacketBuilder.kt
similarity index 97%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/inetLayer/IpV6PacketBuilder.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/inetLayer/IpV6PacketBuilder.kt
index 6cb60a0..8cb2171 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/inetLayer/IpV6PacketBuilder.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/inetLayer/IpV6PacketBuilder.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.connection.inetLayer
+package de.tomcory.heimdall.core.vpn.connection.inetLayer
import org.pcap4j.packet.IpPacket
import org.pcap4j.packet.IpV6Packet
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/transportLayer/TcpConnection.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/transportLayer/TcpConnection.kt
similarity index 97%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/transportLayer/TcpConnection.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/transportLayer/TcpConnection.kt
index eb30a06..994646b 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/transportLayer/TcpConnection.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/transportLayer/TcpConnection.kt
@@ -1,12 +1,10 @@
-package de.tomcory.heimdall.scanner.traffic.connection.transportLayer
+package de.tomcory.heimdall.core.vpn.connection.transportLayer
import android.net.VpnService
import android.os.Handler
import android.system.OsConstants
-import de.tomcory.heimdall.scanner.traffic.cache.ConnectionCache
-import de.tomcory.heimdall.scanner.traffic.components.ComponentManager
-import de.tomcory.heimdall.scanner.traffic.components.DeviceWriteThread
-import de.tomcory.heimdall.scanner.traffic.connection.inetLayer.IpPacketBuilder
+import de.tomcory.heimdall.core.vpn.components.DeviceWriteThread
+import de.tomcory.heimdall.core.vpn.connection.inetLayer.IpPacketBuilder
import org.pcap4j.packet.IpPacket
import org.pcap4j.packet.Packet
import org.pcap4j.packet.TcpPacket
@@ -32,7 +30,7 @@ import java.util.Arrays
* @param ipPacketBuilder
*/
class TcpConnection internal constructor(
- componentManager: ComponentManager,
+ componentManager: de.tomcory.heimdall.core.vpn.components.ComponentManager,
deviceWriter: Handler,
initialPacket: TcpPacket,
ipPacketBuilder: IpPacketBuilder,
@@ -80,7 +78,7 @@ class TcpConnection internal constructor(
private fun connectChannel(selector: Selector): SelectionKey? {
// register OP_READ interest for the channel
- synchronized(ComponentManager.selectorMonitor) {
+ synchronized(de.tomcory.heimdall.core.vpn.components.ComponentManager.selectorMonitor) {
selector.wakeup()
val selectionKey = try {
selectableChannel.register(selector, SelectionKey.OP_CONNECT)
@@ -230,7 +228,7 @@ class TcpConnection internal constructor(
TransportLayerState.CLOSING -> {
// closing handshake complete, set status to CLOSED
state = TransportLayerState.CLOSED
- ConnectionCache.removeConnection(this)
+ de.tomcory.heimdall.core.vpn.cache.ConnectionCache.removeConnection(this)
}
else -> {
// there is no good reason for an acknowledgement in any other flow state, abort
@@ -301,7 +299,7 @@ class TcpConnection internal constructor(
if (state == TransportLayerState.CLOSING) {
// client and server agree that the connection is close
state = TransportLayerState.CLOSED
- ConnectionCache.removeConnection(this)
+ de.tomcory.heimdall.core.vpn.cache.ConnectionCache.removeConnection(this)
} else {
// connection closed by server, move to CLOSING state and send a FIN to initiate the local closing handshake
Timber.d("tcp$id SocketChannel closed, state transition $state -> CLOSING")
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/transportLayer/TransportLayerConnection.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/transportLayer/TransportLayerConnection.kt
similarity index 87%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/transportLayer/TransportLayerConnection.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/transportLayer/TransportLayerConnection.kt
index 20bda02..e4e79aa 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/transportLayer/TransportLayerConnection.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/transportLayer/TransportLayerConnection.kt
@@ -1,12 +1,11 @@
-package de.tomcory.heimdall.scanner.traffic.connection.transportLayer
+package de.tomcory.heimdall.core.vpn.connection.transportLayer
import android.os.Handler
-import de.tomcory.heimdall.persistence.database.HeimdallDatabase
-import de.tomcory.heimdall.persistence.database.entity.Connection
-import de.tomcory.heimdall.scanner.traffic.cache.ConnectionCache
-import de.tomcory.heimdall.scanner.traffic.components.ComponentManager
-import de.tomcory.heimdall.scanner.traffic.connection.encryptionLayer.EncryptionLayerConnection
-import de.tomcory.heimdall.scanner.traffic.connection.inetLayer.IpPacketBuilder
+import de.tomcory.heimdall.core.database.HeimdallDatabase
+import de.tomcory.heimdall.core.database.entity.Connection
+import de.tomcory.heimdall.core.vpn.cache.ConnectionCache
+import de.tomcory.heimdall.core.vpn.connection.encryptionLayer.EncryptionLayerConnection
+import de.tomcory.heimdall.core.vpn.connection.inetLayer.IpPacketBuilder
import kotlinx.coroutines.runBlocking
import org.pcap4j.packet.IpPacket
import org.pcap4j.packet.Packet
@@ -23,7 +22,7 @@ import java.nio.channels.Selector
*/
abstract class TransportLayerConnection protected constructor(
val deviceWriter: Handler,
- val componentManager: ComponentManager,
+ val componentManager: de.tomcory.heimdall.core.vpn.components.ComponentManager,
val localPort: Int,
val remotePort: Int,
val remoteHost: String?,
@@ -129,17 +128,19 @@ abstract class TransportLayerConnection protected constructor(
0
} else {
runBlocking {
- val ids = HeimdallDatabase.instance?.connectionDao?.insert(Connection(
- protocol = protocol,
- initialTimestamp = System.currentTimeMillis(),
- initiatorId = appId ?: -1,
- initiatorPkg = appPackage ?: appId.toString(),
- localPort = localPort,
- remoteHost = remoteHost ?: "",
- remoteIp = ipPacketBuilder.remoteAddress.hostAddress ?: "",
- remotePort = remotePort,
- isTracker = isTracker
- ))
+ val ids = HeimdallDatabase.instance?.connectionDao?.insert(
+ Connection(
+ protocol = protocol,
+ initialTimestamp = System.currentTimeMillis(),
+ initiatorId = appId ?: -1,
+ initiatorPkg = appPackage ?: appId.toString(),
+ localPort = localPort,
+ remoteHost = remoteHost ?: "",
+ remoteIp = ipPacketBuilder.remoteAddress.hostAddress ?: "",
+ remotePort = remotePort,
+ isTracker = isTracker
+ )
+ )
return@runBlocking ids?.first() ?: -1
}
@@ -183,7 +184,7 @@ abstract class TransportLayerConnection protected constructor(
*/
fun getInstance(
initialPacket: IpPacket,
- componentManager: ComponentManager,
+ componentManager: de.tomcory.heimdall.core.vpn.components.ComponentManager,
deviceWriter: Handler,)
: TransportLayerConnection? {
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/transportLayer/UdpConnection.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/transportLayer/UdpConnection.kt
similarity index 94%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/transportLayer/UdpConnection.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/transportLayer/UdpConnection.kt
index 8f76e3a..1bcc09c 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/connection/transportLayer/UdpConnection.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/connection/transportLayer/UdpConnection.kt
@@ -1,11 +1,10 @@
-package de.tomcory.heimdall.scanner.traffic.connection.transportLayer
+package de.tomcory.heimdall.core.vpn.connection.transportLayer
import android.net.VpnService
import android.os.Handler
import android.system.OsConstants
-import de.tomcory.heimdall.scanner.traffic.components.ComponentManager
-import de.tomcory.heimdall.scanner.traffic.components.DeviceWriteThread
-import de.tomcory.heimdall.scanner.traffic.connection.inetLayer.IpPacketBuilder
+import de.tomcory.heimdall.core.vpn.components.DeviceWriteThread
+import de.tomcory.heimdall.core.vpn.connection.inetLayer.IpPacketBuilder
import org.pcap4j.packet.Packet
import org.pcap4j.packet.UdpPacket
import org.pcap4j.packet.UnknownPacket
@@ -29,7 +28,7 @@ import java.util.Arrays
* @param ipPacketBuilder
*/
class UdpConnection internal constructor(
- componentManager: ComponentManager,
+ componentManager: de.tomcory.heimdall.core.vpn.components.ComponentManager,
deviceWriter: Handler,
initialPacket: UdpPacket,
ipPacketBuilder: IpPacketBuilder,
@@ -70,7 +69,7 @@ class UdpConnection internal constructor(
private fun connectChannel(selector: Selector): SelectionKey? {
// register OP_READ interest for the channel
- synchronized(ComponentManager.selectorMonitor) {
+ synchronized(de.tomcory.heimdall.core.vpn.components.ComponentManager.selectorMonitor) {
selector.wakeup()
val selectionKey = try {
selectableChannel.register(selector, SelectionKey.OP_READ)
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/metadata/AppFinder.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/metadata/AppFinder.kt
similarity index 98%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/metadata/AppFinder.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/metadata/AppFinder.kt
index d14fc30..a08a3bc 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/metadata/AppFinder.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/metadata/AppFinder.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.metadata
+package de.tomcory.heimdall.core.vpn.metadata
import android.content.Context
import android.content.pm.PackageManager
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/metadata/DnsCache.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/metadata/DnsCache.kt
similarity index 96%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/metadata/DnsCache.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/metadata/DnsCache.kt
index 8fa9314..3368a44 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/metadata/DnsCache.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/metadata/DnsCache.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.metadata
+package de.tomcory.heimdall.core.vpn.metadata
import timber.log.Timber
import java.util.concurrent.TimeUnit
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/metadata/TlsPassthroughCache.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/metadata/TlsPassthroughCache.kt
similarity index 93%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/metadata/TlsPassthroughCache.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/metadata/TlsPassthroughCache.kt
index af6b98b..88aa6fb 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/metadata/TlsPassthroughCache.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/metadata/TlsPassthroughCache.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.metadata
+package de.tomcory.heimdall.core.vpn.metadata
import timber.log.Timber
import java.util.concurrent.locks.ReentrantReadWriteLock
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/Authority.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/Authority.kt
similarity index 97%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/Authority.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/Authority.kt
index 46f2af2..bbd9e45 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/Authority.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/Authority.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.mitm
+package de.tomcory.heimdall.core.vpn.mitm
import android.content.Context
import timber.log.Timber
@@ -102,7 +102,7 @@ class Authority (
Timber.d("convertStreamToString")
val reader = BufferedReader(InputStreamReader(`is`))
val sb = StringBuilder()
- var line: String? = null
+ var line: String?
while (reader.readLine().also { line = it } != null) {
sb.append(line).append("\n")
}
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/CertificateHelper.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/CertificateHelper.kt
similarity index 99%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/CertificateHelper.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/CertificateHelper.kt
index 45eaab5..381049e 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/CertificateHelper.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/CertificateHelper.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.mitm
+package de.tomcory.heimdall.core.vpn.mitm
import org.bouncycastle.jce.provider.BouncyCastleProvider
import org.bouncycastle.operator.OperatorCreationException
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/CertificateSniffingMitmManager.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/CertificateSniffingMitmManager.kt
similarity index 98%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/CertificateSniffingMitmManager.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/CertificateSniffingMitmManager.kt
index 4e16294..f85e878 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/CertificateSniffingMitmManager.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/CertificateSniffingMitmManager.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.mitm
+package de.tomcory.heimdall.core.vpn.mitm
import java.security.cert.X509Certificate
import javax.net.ssl.SSLEngine
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/Exceptions.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/Exceptions.kt
similarity index 87%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/Exceptions.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/Exceptions.kt
index d6550d1..c758612 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/Exceptions.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/Exceptions.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.mitm
+package de.tomcory.heimdall.core.vpn.mitm
import java.lang.RuntimeException
import kotlin.Exception
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/KeyStoreHelper.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/KeyStoreHelper.kt
similarity index 99%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/KeyStoreHelper.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/KeyStoreHelper.kt
index ce8e8ce..556afbb 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/KeyStoreHelper.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/KeyStoreHelper.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.mitm
+package de.tomcory.heimdall.core.vpn.mitm
import android.content.Context
import kotlinx.coroutines.Dispatchers
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/MergeTrustManager.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/MergeTrustManager.kt
similarity index 97%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/MergeTrustManager.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/MergeTrustManager.kt
index ac916b0..edaefed 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/MergeTrustManager.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/MergeTrustManager.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.mitm
+package de.tomcory.heimdall.core.vpn.mitm
import java.lang.IllegalStateException
import java.security.KeyStore
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/SSLEngineSource.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/SSLEngineSource.kt
similarity index 99%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/SSLEngineSource.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/SSLEngineSource.kt
index 2e06fee..59ad693 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/SSLEngineSource.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/SSLEngineSource.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.mitm
+package de.tomcory.heimdall.core.vpn.mitm
import com.google.common.cache.Cache
import com.google.common.cache.CacheBuilder
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/SubjectAlternativeNameHolder.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/SubjectAlternativeNameHolder.kt
similarity index 97%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/SubjectAlternativeNameHolder.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/SubjectAlternativeNameHolder.kt
index d92d8bf..b1ad8ac 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/SubjectAlternativeNameHolder.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/SubjectAlternativeNameHolder.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.mitm
+package de.tomcory.heimdall.core.vpn.mitm
import org.bouncycastle.asn1.ASN1Encodable
import org.bouncycastle.cert.CertIOException
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/nio/NioSslClient.java b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/nio/NioSslClient.java
similarity index 99%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/nio/NioSslClient.java
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/nio/NioSslClient.java
index 595c24c..c94944e 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/nio/NioSslClient.java
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/nio/NioSslClient.java
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.mitm.nio;
+package de.tomcory.heimdall.core.vpn.mitm.nio;
/**
* An SSL/TLS client that connects to a server using its IP address and port.
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/nio/NioSslPeer.kt b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/nio/NioSslPeer.kt
similarity index 99%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/nio/NioSslPeer.kt
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/nio/NioSslPeer.kt
index 6a6796f..e1cee35 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/nio/NioSslPeer.kt
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/nio/NioSslPeer.kt
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.mitm.nio
+package de.tomcory.heimdall.core.vpn.mitm.nio
import kotlin.Throws
import timber.log.Timber
@@ -416,13 +416,13 @@ abstract class NioSslPeer(
* @return A new buffer with a larger capacity.
`` */
protected fun enlargeBuffer(buffer: ByteBuffer, sessionProposedCapacity: Int): ByteBuffer {
- var buffer = buffer
- buffer = if (sessionProposedCapacity > buffer.capacity()) {
+ var b = buffer
+ b = if (sessionProposedCapacity > b.capacity()) {
ByteBuffer.allocate(sessionProposedCapacity)
} else {
- ByteBuffer.allocate(buffer.capacity() * 2)
+ ByteBuffer.allocate(b.capacity() * 2)
}
- return buffer
+ return b
}
/**
diff --git a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/nio/NioSslServer.java b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/nio/NioSslServer.java
similarity index 99%
rename from app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/nio/NioSslServer.java
rename to core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/nio/NioSslServer.java
index 0e53d48..c60e9f6 100644
--- a/app/src/main/java/de/tomcory/heimdall/scanner/traffic/mitm/nio/NioSslServer.java
+++ b/core/vpn/src/main/java/de/tomcory/heimdall/core/vpn/mitm/nio/NioSslServer.java
@@ -1,4 +1,4 @@
-package de.tomcory.heimdall.scanner.traffic.mitm.nio;
+package de.tomcory.heimdall.core.vpn.mitm.nio;
import java.io.IOException;
import java.net.InetSocketAddress;
diff --git a/app/src/main/res/raw/adhosts.txt b/core/vpn/src/main/res/raw/adhosts.txt
similarity index 100%
rename from app/src/main/res/raw/adhosts.txt
rename to core/vpn/src/main/res/raw/adhosts.txt
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
new file mode 100644
index 0000000..a1861b5
--- /dev/null
+++ b/gradle/libs.versions.toml
@@ -0,0 +1,132 @@
+[versions]
+accompanist = "0.30.1"
+activity-compose = "1.8.1"
+android-gradle = "8.1.4"
+androidx-junit = "1.1.5"
+apk-parser = "2.6.10"
+appcompat = "1.6.1"
+bouncycastle = "1.69"
+commonsIo = "2.6"
+compose = "1.5.4"
+compose-compiler = "1.5.3" # must match kotlin, see https://developer.android.com/jetpack/androidx/releases/compose-kotlin
+compose-material3 = "1.2.0-alpha11"
+constraintlayout = "2.1.4"
+datastore = "1.0.0"
+dnssec4j = "0.1.6"
+espresso = "3.5.1"
+guava = "24.1-jre"
+hilt-navigation-compose = "1.1.0"
+hilt = "2.48.1"
+junit = "4.13.2"
+jzlib = "1.1.3"
+kotlin = "1.9.10"
+kotlin-serialization-plugin = "1.8.21"
+kotlinx-serialization-json = "1.6.0"
+ksp = "1.9.10-1.0.13" # must match kotlin
+legacy-support-v4 = "1.0.0"
+lifecycle = "2.6.2"
+lightbody-mitm = "2.1.5"
+mpAndroidChart = "v3.1.0"
+multidexlib2 = "2.3.4.r2"
+navigation = "2.7.5"
+netty= "4.1.58.Final"
+okhttp = "5.0.0-alpha.2"
+opencsv = "5.6"
+palette-ktx = "1.0.0"
+pcap4j = "1.7.6"
+preference-ktx = "1.2.1"
+protobuf-plugin = "0.9.0"
+protobuf-base = "3.25.1"
+retrofit = "2.9.0"
+robolectric = "4.10.3"
+room = "2.6.0"
+runner = "1.5.2"
+test = "1.5.0"
+test-runner = "1.5.2"
+timber = "4.7.1"
+toolchain = "0.4.0"
+vico = "1.12.0"
+material = "1.8.0"
+
+[libraries]
+accompanist-drawablepainter = { module = "com.google.accompanist:accompanist-drawablepainter", version.ref = "accompanist" }
+accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" }
+activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activity-compose" }
+androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
+androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }
+androidx-datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" }
+androidx-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espresso" }
+androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hilt-navigation-compose" }
+androidx-legacy-support-v4 = { module = "androidx.legacy:legacy-support-v4", version.ref = "legacy-support-v4" }
+androidx-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "compose-material3" }
+androidx-compose-material3-windowsizeclass = { module = "androidx.compose.material3:material3-window-size-class", version.ref = "compose-material3" }
+androidx-kotlin = { group = "androidx.core", name = "core-ktx", version.ref = "kotlin" }
+androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigation" }
+androidx-navigation-fragment-ktx = { module = "androidx.navigation:navigation-fragment-ktx", version.ref = "navigation" }
+androidx-navigation-ui-ktx = { module = "androidx.navigation:navigation-ui-ktx", version.ref = "navigation" }
+androidx-palette-ktx = { module = "androidx.palette:palette-ktx", version.ref = "palette-ktx" }
+androidx-preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preference-ktx" }
+androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
+androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" }
+androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
+androidx-test-core = { module = "androidx.test:core", version.ref = "test" }
+androidx-test-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-junit" }
+androidx-test-runner = { module = "androidx.test:runner", version.ref = "test-runner" }
+androidx-test-rules = { module = "androidx.test:rules", version.ref = "test" }
+androidx-ui = { module = "androidx.compose.ui:ui", version.ref = "compose" }
+androidx-ui-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "compose" }
+androidx-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "compose" }
+apk-parser = { module = "net.dongliu:apk-parser", version.ref = "apk-parser" }
+bouncycastle-bcpkix-jdk15on = { module = "org.bouncycastle:bcpkix-jdk15on", version.ref = "bouncycastle" }
+bouncycastle-bcprov-jdk15on = { module = "org.bouncycastle:bcprov-jdk15on", version.ref = "bouncycastle" }
+commons-io = { module = "commons-io:commons-io", version.ref = "commonsIo" }
+dagger-compiler = { module = "com.google.dagger:dagger-compiler", version.ref = "hilt" }
+dnssec4j = { module = "org.littleshoot:dnssec4j", version.ref = "dnssec4j" }
+gradle = { module = "com.android.tools.build:gradle", version.ref = "android-gradle" }
+guava = { module = "com.google.guava:guava", version.ref = "guava" }
+hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" }
+hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" }
+junit = { module = "junit:junit", version.ref = "junit" }
+jzlib = { module = "com.jcraft:jzlib", version.ref = "jzlib" }
+kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
+hilt-android-gradle-plugin = { module = "com.google.dagger:hilt-android-gradle-plugin", version.ref = "hilt" }
+kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization-json" }
+lifecycle-common-java8 = { module = "androidx.lifecycle:lifecycle-common-java8", version.ref = "lifecycle" }
+lifecycle-livedata-ktx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref = "lifecycle" }
+lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "lifecycle" }
+lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle" }
+lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycle" }
+lightbody-mitm = { module = "net.lightbody.bmp:mitm", version.ref = "lightbody-mitm" }
+mpAndroidChart = { module = "com.github.PhilJay:MPAndroidChart", version.ref = "mpAndroidChart" }
+multidexlib2 = { module = "com.github.lanchon.dexpatcher:multidexlib2", version.ref = "multidexlib2" }
+navigation-safe-args-gradle-plugin = { module = "androidx.navigation:navigation-safe-args-gradle-plugin", version.ref = "navigation" }
+netty-all = { module = "io.netty:netty-all", version.ref = "netty" }
+okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
+opencsv = { module = "com.opencsv:opencsv", version.ref = "opencsv" }
+pcap4j-core = { module = "org.pcap4j:pcap4j-core", version.ref = "pcap4j" }
+pcap4j-packetfactory-static = { module = "org.pcap4j:pcap4j-packetfactory-static", version.ref = "pcap4j" }
+protobuf-javalite = { module = "com.google.protobuf:protobuf-javalite", version.ref = "protobuf-base" }
+protobuf-kotlin-lite = { group = "com.google.protobuf", name = "protobuf-kotlin-lite", version.ref = "protobuf-base" }
+protobuf-protoc = { module = "com.google.protobuf:protoc", version.ref = "protobuf-base" }
+retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
+retrofit-converter-moshi = { module = "com.squareup.retrofit2:converter-moshi", version.ref = "retrofit" }
+robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" }
+timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" }
+ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "compose" }
+ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "compose" }
+vico-compose = { module = "com.patrykandpatrick.vico:compose", version.ref = "vico" }
+vico-composem3 = { module = "com.patrykandpatrick.vico:compose-m3", version.ref = "vico" }
+vico-core = { module = "com.patrykandpatrick.vico:core", version.ref = "vico" }
+material = { group = "com.google.android.material", name = "material", version.ref = "material" }
+
+[plugins]
+android-application = { id = "com.android.application", version.ref = "android-gradle" }
+android-library = { id = "com.android.library", version.ref = "android-gradle" }
+androidx-navigation-safeargs = { id = "androidx.navigation.safeargs", version.ref = "protobuf-plugin" }
+hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
+kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
+kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
+kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin-serialization-plugin" }
+ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
+protobuf = { id = "com.google.protobuf", version.ref = "protobuf-plugin" }
+toolchain = { id = "org.gradle.toolchains.foojay-resolver-convention", version.ref = "toolchain" }
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index f0c8e14..0000000
--- a/settings.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-plugins {
- id 'org.gradle.toolchains.foojay-resolver-convention' version '0.4.0'
-}
-
-include ':app'
-rootProject.name='Heimdall'
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
new file mode 100644
index 0000000..a9af609
--- /dev/null
+++ b/settings.gradle.kts
@@ -0,0 +1,35 @@
+pluginManagement {
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+
+plugins {
+ id ("org.gradle.toolchains.foojay-resolver-convention") version "0.4.0"
+}
+
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ maven {
+ url = uri("https://jitpack.io")
+ name = "Jitpack"
+ }
+ }
+}
+
+rootProject.name = "Heimdall"
+
+include (":app")
+include(":core:database")
+include (":core:datastore")
+include (":core:datastore-proto")
+include(":core:export")
+include(":core:vpn")
+include(":core:util")
+include(":core:proxy")
+include(":core:scanner")