Initial commit: Xuper VPN Launcher source code

This commit is contained in:
Renato
2026-02-09 22:24:07 +01:00
commit 8bb094cf1a
626 changed files with 25325 additions and 0 deletions

28
.env Normal file
View File

@@ -0,0 +1,28 @@
# Smart DNS Environment Configuration
# Timezone
TZ=UTC
# VPS Public IP - Update this with your actual IP
VPS_IP=194.163.191.200
# Domain for DoT endpoint
DOMAIN=tv.cbcren.online
# DNS Configuration
DNS_PORT=53
DNS_UPSTREAM_TLS=1.1.1.1:853
# Caddy DoT Configuration
CADDY_ADMIN_PORT=2019
DOT_PORT=853
# SNI Proxy Configuration (using alternative ports)
SNI_PROXY_HTTP_PORT=8080
SNI_PROXY_HTTPS_PORT=8443
# HTTP for ACME (alternative to port 80)
HTTP_PORT=8081
# Network Configuration
DOCKER_SUBNET=172.28.0.0/16

17
.env.example Normal file
View File

@@ -0,0 +1,17 @@
# Environment variables for Smart DNS project
# Copy this to .env and customize
# Email for Let's Encrypt notifications
CADDY_EMAIL=admin@cbcren.online
# Domain for DoT service
DOT_DOMAIN=tv.dns.cbcren.online
# Upstream DNS servers (comma separated)
UPSTREAM_DNS=8.8.8.8,8.8.4.4,1.1.1.1
# DNS cache size for Dnsmasq
DNS_CACHE_SIZE=10000
# Network configuration
DNS_SUBNET=172.28.0.0/16

18
.gitignore vendored Normal file
View File

@@ -0,0 +1,18 @@
*.iml
.gradle
/local.properties
/.idea/
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
.vpngate*
*.csv
*.ovpn
*.txt
*.conf
*.log
*.zip
android-sdk/

32
README.md Normal file
View File

@@ -0,0 +1,32 @@
# Xuper Unlocker VPN (Android TV) 📺🔓
Aplicación simple para Android TV diseñada para eludir geobloqueos de forma inteligente y efímera.
## 🚀 Funcionalidad
1. **Conexión Automática:** Al abrir la app, se conecta a un túnel WireGuard preconfigurado (hardcodeado).
2. **Temporizador "Minuto de Oro":** Mantiene la conexión activa durante 60 segundos.
* Tiempo suficiente para abrir apps de streaming (XuperTV) y pasar la verificación de región/login.
3. **Autodestrucción:** Pasado el minuto, la VPN se desconecta automáticamente.
* Esto permite que el flujo de video pesado viaje por la conexión directa de internet (máxima velocidad, sin saturar el túnel).
## 🛠️ Compilación
Este proyecto usa **Gradle** y requiere el **Android SDK 33**.
```bash
# Configurar SDK
export ANDROID_HOME=/path/to/sdk
# Compilar APK de depuración
./gradlew assembleDebug
```
## 🔧 Configuración WireGuard
Las claves y el endpoint están definidos en `MainActivity.java`.
Para producción, se recomienda moverlos a `local.properties` o usar variables de entorno.
## 📦 Instalación
Descarga el APK desde la sección de **Releases** e instálalo en tu Android TV / Google TV usando Downloader o ADB.

30
app/build.gradle Normal file
View File

@@ -0,0 +1,30 @@
plugins {
id 'com.android.application'
}
android {
namespace 'com.cbcren.vpn'
compileSdkVersion 33
defaultConfig {
applicationId "com.cbcren.vpn"
minSdkVersion 24
targetSdkVersion 33
versionCode 1
versionName "1.0"
// Multidex necesario para librerías grandes
multiDexEnabled true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}
dependencies {
// Versiones más antiguas y estables
implementation 'androidx.appcompat:appcompat:1.4.0'
implementation 'com.google.android.material:material:1.5.0'
implementation 'com.wireguard.android:tunnel:1.0.20230706'
}

View File

@@ -0,0 +1,2 @@
appMetadataVersion=1.1
androidGradlePluginVersion=8.0.0

View File

@@ -0,0 +1,10 @@
{
"version": 3,
"artifactType": {
"type": "COMPATIBLE_SCREEN_MANIFEST",
"kind": "Directory"
},
"applicationId": "com.cbcren.vpn",
"variantName": "debug",
"elements": []
}

View File

@@ -0,0 +1 @@
3

View File

@@ -0,0 +1,4 @@
#Mon Feb 09 22:15:45 CET 2026
com.cbcren.vpn.app-main-26\:/drawable/ic_launcher_foreground.xml=/home/ren/androidtv/app/build/intermediates/merged_res/debug/drawable_ic_launcher_foreground.xml.flat
com.cbcren.vpn.app-main-26\:/layout/activity_main.xml=/home/ren/androidtv/app/build/intermediates/merged_res/debug/layout_activity_main.xml.flat
com.cbcren.vpn.app-main-26\:/mipmap-anydpi-v26/ic_launcher.xml=/home/ren/androidtv/app/build/intermediates/merged_res/debug/mipmap-anydpi-v26_ic_launcher.xml.flat

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
#Mon Feb 09 22:15:46 CET 2026
com.cbcren.vpn.app-main-5\:/drawable/ic_launcher_foreground.xml=/home/ren/androidtv/app/build/intermediates/packaged_res/debug/drawable/ic_launcher_foreground.xml
com.cbcren.vpn.app-main-5\:/layout/activity_main.xml=/home/ren/androidtv/app/build/intermediates/packaged_res/debug/layout/activity_main.xml
com.cbcren.vpn.app-main-5\:/mipmap-anydpi-v26/ic_launcher.xml=/home/ren/androidtv/app/build/intermediates/packaged_res/debug/mipmap-anydpi-v26/ic_launcher.xml

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/src/main/res"><file name="activity_main" path="/home/ren/androidtv/app/src/main/res/layout/activity_main.xml" qualifiers="" type="layout"/><file name="ic_launcher_foreground" path="/home/ren/androidtv/app/src/main/res/drawable/ic_launcher_foreground.xml" qualifiers="" type="drawable"/><file name="ic_launcher" path="/home/ren/androidtv/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml" qualifiers="anydpi-v26" type="mipmap"/></source></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/build/generated/res/resValues/debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/build/generated/res/resValues/debug"/></dataSet><mergedItems/></merger>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/src/main/assets"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/src/debug/assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/build/intermediates/shader_assets/debug/out"/></dataSet></merger>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/src/debug/jniLibs"/></dataSet></merger>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/src/main/shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ren/androidtv/app/src/debug/shaders"/></dataSet></merger>

Binary file not shown.

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cbcren.vpn"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="24"
android:targetSdkVersion="33" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- Declarar soporte para TV (Leanback) -->
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<application
android:appComponentFactory="androidx.core.app.CoreComponentFactory"
android:debuggable="true"
android:extractNativeLibs="false"
android:label="Xuper VPN"
android:theme="@style/Theme.MaterialComponents.Light.NoActionBar" >
<activity
android:name="com.cbcren.vpn.MainActivity"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>
<service
android:name="com.wireguard.android.backend.GoBackend$VpnService"
android:exported="false"
android:permission="android.permission.BIND_VPN_SERVICE" >
<intent-filter>
<action android:name="android.net.VpnService" />
</intent-filter>
</service>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="com.cbcren.vpn.androidx-startup"
android:exported="false" >
<meta-data
android:name="androidx.emoji2.text.EmojiCompatInitializer"
android:value="androidx.startup" />
<meta-data
android:name="androidx.lifecycle.ProcessLifecycleInitializer"
android:value="androidx.startup" />
</provider>
</application>
</manifest>

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cbcren.vpn"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="24"
android:targetSdkVersion="33" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- Declarar soporte para TV (Leanback) -->
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<application
android:appComponentFactory="androidx.core.app.CoreComponentFactory"
android:debuggable="true"
android:extractNativeLibs="false"
android:label="Xuper VPN"
android:theme="@style/Theme.MaterialComponents.Light.NoActionBar" >
<activity
android:name="com.cbcren.vpn.MainActivity"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>
<service
android:name="com.wireguard.android.backend.GoBackend$VpnService"
android:exported="false"
android:permission="android.permission.BIND_VPN_SERVICE" >
<intent-filter>
<action android:name="android.net.VpnService" />
</intent-filter>
</service>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="com.cbcren.vpn.androidx-startup"
android:exported="false" >
<meta-data
android:name="androidx.emoji2.text.EmojiCompatInitializer"
android:value="androidx.startup" />
<meta-data
android:name="androidx.lifecycle.ProcessLifecycleInitializer"
android:value="androidx.startup" />
</provider>
</application>
</manifest>

View File

@@ -0,0 +1,20 @@
{
"version": 3,
"artifactType": {
"type": "MERGED_MANIFESTS",
"kind": "Directory"
},
"applicationId": "com.cbcren.vpn",
"variantName": "debug",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "1.0",
"outputFile": "AndroidManifest.xml"
}
],
"elementType": "File"
}

Some files were not shown because too many files have changed in this diff Show More