- Rename package and all Java/Kotlin sources: com.wireguard.android -> page.onram.wirevpn - applicationId -> page.onram.wirevpn, version 1.0.20260910 (520) - New launcher icon: dark circle, white padlock with bold W - App name 'Wire VPN' in all locales; remove donate preference - Release signing from KEYSTORE_* env vars (CI) - F-Droid v2: scripts/fdroid_metadata.py - GitHub/Gitea Actions workflow: auto-build signed APK + F-Droid metadata/signature on every new release, attach to the release - README + NOTICE (license inventory)
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
# Builds the signed release APK and F-Droid v2 artifacts as soon as a new
|
||||
# release is created, and attaches everything to that release.
|
||||
#
|
||||
# Works on Gitea Actions (GitHub-Actions-compatible) — the repo lives on
|
||||
# https://git.obahan.xyz/frank/wirevpn.
|
||||
#
|
||||
# Required repository secrets:
|
||||
# KEYSTORE_FILE base64-encoded release signing keystore (.jks)
|
||||
# KEYSTORE_PASSWORD keystore password
|
||||
# KEY_ALIAS key alias
|
||||
# KEY_PASSWORD key password
|
||||
#
|
||||
# Requires a registered Actions runner on the Gitea instance that can run
|
||||
# docker containers with the Android SDK (gitea/act image, docker driver).
|
||||
name: release
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published, created]
|
||||
|
||||
concurrency:
|
||||
group: release-${{ github.ref }}
|
||||
cancel-in-progress: false
|
||||
|
||||
env:
|
||||
ANDROID_NDK_VERSION: "28.2.13676358"
|
||||
ANDROID_API_LEVEL: "36"
|
||||
GRADLE_USER_HOME: ${{ github.workspace }}/.gradle
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: self-hosted
|
||||
timeout-minutes: 90
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: "21"
|
||||
|
||||
- name: Ensure Android SDK (platform, build-tools, NDK)
|
||||
run: |
|
||||
set -e
|
||||
if [ -z "${ANDROID_HOME:-}" ] && [ -d /usr/lib/android-sdk ]; then
|
||||
export ANDROID_HOME=/usr/lib/android-sdk
|
||||
fi
|
||||
if [ -z "${ANDROID_HOME:-}" ]; then
|
||||
echo "ANDROID_HOME not set; installing SDK"
|
||||
export ANDROID_HOME=$HOME/android-sdk
|
||||
mkdir -p "$ANDROID_HOME/cmdline-tools"
|
||||
curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -o ct.zip
|
||||
(cd "$ANDROID_HOME/cmdline-tools" && unzip -q ../../ct.zip && mv cmdline-tools latest && rm -rf latest/latest)
|
||||
yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --sdk_root="$ANDROID_HOME" --licenses >/dev/null
|
||||
fi
|
||||
"$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --sdk_root="$ANDROID_HOME" \
|
||||
"platform-tools" "platforms;android-${ANDROID_API_LEVEL}" "build-tools;36.0.0" "ndk;${ANDROID_NDK_VERSION}"
|
||||
echo "sdk.dir=$ANDROID_HOME" > local.properties
|
||||
echo "ndk.dir=$ANDROID_HOME/ndk/${ANDROID_NDK_VERSION}" >> local.properties
|
||||
|
||||
- name: Decode signing keystore
|
||||
run: |
|
||||
mkdir -p "$HOME/keystore"
|
||||
echo "$KEYSTORE_FILE" | base64 -d > "$HOME/keystore/wirevpn-release.jks"
|
||||
env:
|
||||
KEYSTORE_FILE: ${{ secrets.KEYSTORE_FILE }}
|
||||
|
||||
- name: Build signed release APK
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
env:
|
||||
KEYSTORE_FILE: ${{ env.HOME }}/keystore/wirevpn-release.jks
|
||||
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
||||
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||
with:
|
||||
arguments: assembleRelease
|
||||
|
||||
- name: Collect build outputs + F-Droid metadata
|
||||
run: |
|
||||
set -e
|
||||
APK=ui/build/outputs/apk/release/ui-release.apk
|
||||
test -f "$APK"
|
||||
mkdir -p dist
|
||||
cp "$APK" dist/page.onram.wirevpn.apk
|
||||
# F-Droid v2 metadata + signature: "256;" + base64(sha256(sha256(apk-bytes)))
|
||||
export PATH="$ANDROID_HOME/build-tools/36.0.0:$PATH"
|
||||
python3 scripts/fdroid_metadata.py dist/page.onram.wirevpn.apk > dist/page.onram.wirevpn.metadata
|
||||
python3 -c "
|
||||
import hashlib, base64
|
||||
d = open('dist/page.onram.wirevpn.apk', 'rb').read()
|
||||
sig = base64.b64encode(hashlib.sha256(hashlib.sha256(d).digest()).digest()).decode()
|
||||
open('dist/page.onram.wirevpn.signature', 'w').write(f'256;{sig}\n')
|
||||
"
|
||||
echo "--- metadata ---"
|
||||
cat dist/page.onram.wirevpn.metadata
|
||||
echo "--- signature ---"
|
||||
cat dist/page.onram.wirevpn.signature
|
||||
|
||||
- name: Attach artifacts to the Gitea release
|
||||
env:
|
||||
GITEA_API: https://git.obahan.xyz/api/v1
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN || github.token }}
|
||||
REPO: frank/wirevpn
|
||||
run: |
|
||||
set -e
|
||||
tag="${GITHUB_REF#refs/tags/}"
|
||||
[ -n "$tag" ] || tag="latest"
|
||||
# Find or create the release
|
||||
rid=$(curl -fsSL -H "Authorization: token $GITEA_TOKEN" "$GITEA_API/repos/$REPO/releases/tags/$tag" | python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])' 2>/dev/null || true)
|
||||
if [ -z "$rid" ]; then
|
||||
rid=$(curl -fsSL -H "Authorization: token $GITEA_TOKEN" -H "Content-Type: application/json" \
|
||||
-d "{\"name\":\"$tag\",\"tag_name\":\"$tag\",\"target\":\"main\"}" \
|
||||
"$GITEA_API/repos/$REPO/releases" | python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])')
|
||||
fi
|
||||
for f in dist/page.onram.wirevpn.apk dist/page.onram.wirevpn.metadata dist/page.onram.wirevpn.signature; do
|
||||
curl -fsSL -H "Authorization: token $GITEA_TOKEN" \
|
||||
-F "file=@$f" \
|
||||
"$GITEA_API/repos/$REPO/releases/$rid/assets"
|
||||
echo "uploaded $f"
|
||||
done
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: fdroid-bundle
|
||||
path: dist/
|
||||
@@ -0,0 +1,49 @@
|
||||
# Wire VPN for Android — Third-Party Components & Licences
|
||||
|
||||
Wire VPN is a fork of [WireGuard for Android](https://git.zx2c4.com/wireguard-android/about/).
|
||||
This file lists the components shipped inside the APK and their licences.
|
||||
|
||||
## Shipped in the APK
|
||||
|
||||
| Component | Where | Licence |
|
||||
|---|---|---|
|
||||
| App code (`ui`) | `ui/src` | Apache-2.0 |
|
||||
| Tunnel library (`tunnel`) | `tunnel/src` | Apache-2.0 |
|
||||
| Userspace WireGuard (`golang.zx2c4.com/wireguard`, compiled into `libwg-go.so`) | `tunnel/tools/libwg-go` + Go module | MIT (per `LICENSE` of the Go module; every `.go` file is SPDX `MIT`) |
|
||||
| gVisor / netstack (`gvisor.dev/gvisor`, Go dependency of the module, compiled into `libwg-go.so`) | Go module dep | Apache-2.0 |
|
||||
| Go standard libraries | Go module dep | BSD-3-Clause |
|
||||
| `golang.org/x/*` (crypto, net, sys) | Go module deps | BSD-3-Clause |
|
||||
| wireguard-tools (`wg` / `wg-quick`, compiled into `libwg.so`, `libwg-quick.so`) | `tunnel/tools/wireguard-tools` | GPL-2.0-only OR MIT (each file `SPDX-License-Identifier: GPL-2.0 OR MIT` — the **MIT** clause is selected for this distribution) |
|
||||
| `zxing-android-embedded` (QR scanning) | Gradle dependency | Apache-2.0 |
|
||||
| AndroidX, Material, Kotlin coroutines | Gradle dependencies | Apache-2.0 |
|
||||
|
||||
Full licence texts:
|
||||
|
||||
- Apache-2.0: [https://www.apache.org/licenses/LICENSE-2.0.txt](https://www.apache.org/licenses/LICENSE-2.0.txt) (also `COPYING`)
|
||||
- MIT: see `golang.zx2c4.com/wireguard` module `LICENSE`
|
||||
- BSD-3-Clause: [https://opensource.org/license/bsd-3-clause](https://opensource.org/license/bsd-3-clause)
|
||||
- wireguard-tools GPL-2.0 OR MIT: [https://git.zx2c4.com/wireguard-tools/about](https://git.zx2c4.com/wireguard-tools/about)
|
||||
|
||||
All shipped licences are F-Droid-compatible (permissive, or GPL-2.0/MIT dual where
|
||||
the MIT clause is elected).
|
||||
|
||||
## Build-time only (not shipped in the APK)
|
||||
|
||||
| Component | Purpose | Licence |
|
||||
|---|---|---|
|
||||
| Go toolchain 1.24.3 | compiles `libwg-go.so` | BSD-3-Clause |
|
||||
| `termux-elf-cleaner` (`tunnel/tools/elf-cleaner`) | strips ELF debug sections from `libwg.so`/`libwg-quick.so` at build time | GPL-3.0-only |
|
||||
|
||||
`termux-elf-cleaner` runs only during the build on the build host; it is not
|
||||
distributed with the application.
|
||||
|
||||
## Note on the wireguard-go history
|
||||
|
||||
Historically `wireguard-go` was licensed GPL-2.0. The current upstream Go module
|
||||
(`golang.zx2c4.com/wireguard`), which this project builds, is licensed MIT, and
|
||||
every source file in the pinned module revision is marked `SPDX-License-Identifier: MIT`.
|
||||
|
||||
## Not affiliated
|
||||
|
||||
This project is an independent fork. WireGuard is a trademark of its respective
|
||||
owner; this project is not affiliated with, endorsed by, or sponsored by WireGuard LLC.
|
||||
@@ -1,40 +1,50 @@
|
||||
# Android GUI for [WireGuard](https://www.wireguard.com/)
|
||||
# Wire VPN for Android
|
||||
|
||||
**[Download from the Play Store](https://play.google.com/store/apps/details?id=com.wireguard.android)**
|
||||
**A fork of [WireGuard for Android](https://git.zx2c4.com/wireguard-android/about/), rebranded as Wire VPN.**
|
||||
|
||||
This is an Android GUI for [WireGuard](https://www.wireguard.com/). It [opportunistically uses the kernel implementation](https://git.zx2c4.com/android_kernel_wireguard/about/), and falls back to using the non-root [userspace implementation](https://git.zx2c4.com/wireguard-go/about/).
|
||||
Package: `page.onram.wirevpn` · Available from our [F-Droid repository](https://git.obahan.xyz/frank/wirevpn) on release.
|
||||
|
||||
Wire VPN is an Android GUI for [WireGuard](https://www.wireguard.com/). It [opportunistically uses the kernel implementation](https://git.zx2c4.com/android_kernel_wireguard/about/), and falls back to using the non-root [userspace implementation](https://git.zx2c4.com/wireguard-go/about/).
|
||||
|
||||
## What changed from upstream
|
||||
|
||||
- App name rebranded from *WireGuard* to *Wire VPN*
|
||||
- New launcher icon (padlock with a bold W in a circle)
|
||||
- Application ID changed to `page.onram.wirevpn` (Java/Kotlin package is `page.onram.wirevpn`)
|
||||
- GitHub Actions pipeline: every new Git release automatically builds a signed release APK and produces F-Droid v2 repository artifacts
|
||||
- Upstream in-app auto-updater and donation links removed (we distribute via our own F-Droid repo)
|
||||
|
||||
## Building
|
||||
|
||||
```
|
||||
$ git clone --recurse-submodules https://git.zx2c4.com/wireguard-android
|
||||
$ cd wireguard-android
|
||||
$ git clone --recurse-submodules https://git.obahan.xyz/frank/wirevpn.git
|
||||
$ cd wirevpn
|
||||
$ ./gradlew assembleRelease
|
||||
```
|
||||
|
||||
macOS users may need [flock(1)](https://github.com/discoteq/flock).
|
||||
The build compiles the tunnel backend natively (CMake + NDK) and the userspace
|
||||
WireGuard implementation in Go (Go 1.24.3 is fetched and hash-checked by the
|
||||
build automatically).
|
||||
|
||||
## Embedding
|
||||
|
||||
The tunnel library is [on Maven Central](https://search.maven.org/artifact/com.wireguard.android/tunnel), alongside [extensive class library documentation](https://javadoc.io/doc/com.wireguard.android/tunnel).
|
||||
To sign with a keystore, export:
|
||||
|
||||
```
|
||||
implementation 'com.wireguard.android:tunnel:$wireguardTunnelVersion'
|
||||
export KEYSTORE_FILE=/path/to/keystore.jks
|
||||
export KEYSTORE_PASSWORD=...
|
||||
export KEY_ALIAS=...
|
||||
export KEY_PASSWORD=...
|
||||
```
|
||||
|
||||
The library makes use of Java 8 features, so be sure to support those in your gradle configuration with [desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring):
|
||||
|
||||
```
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
coreLibraryDesugaringEnabled = true
|
||||
}
|
||||
dependencies {
|
||||
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.0.3"
|
||||
}
|
||||
```
|
||||
Releases are cut by creating a Git tag/release on `main` (e.g. `v1.0.x`); the
|
||||
`release.yml` GitHub Action builds and publishes the artifacts.
|
||||
|
||||
## Translating
|
||||
|
||||
Please help us translate the app into several languages on [our translation platform](https://crowdin.com/project/WireGuard).
|
||||
This project uses [Crowdin](https://crowdin.com) upstream; translations in
|
||||
`ui/src/main/res/values-*/` are carried over from the WireGuard project.
|
||||
|
||||
## Licences
|
||||
|
||||
See [NOTICE.md](NOTICE.md) for the full list. The app code is
|
||||
[Apache-2.0](COPYING). This project is a fork of the WireGuard Android app and
|
||||
is not affiliated with WireGuard LLC.
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
wireguardVersionCode=519
|
||||
wireguardVersionName=1.0.20260315
|
||||
wireguardPackageName=com.wireguard.android
|
||||
wireguardVersionCode=520
|
||||
wireguardVersionName=1.0.20260910
|
||||
wireguardPackageName=page.onram.wirevpn
|
||||
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Generate F-Droid v2 metadata for a signed APK.
|
||||
|
||||
Usage: fdroid_metadata.py <path-to-apk>
|
||||
Prints the F-Droid metadata lines to stdout. The workflow separately computes
|
||||
the F-Droid signature (base64 of double SHA-256).
|
||||
"""
|
||||
import hashlib
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
apk = sys.argv[1]
|
||||
with open(apk, "rb") as f:
|
||||
data = f.read()
|
||||
sha256 = hashlib.sha256(data).hexdigest()
|
||||
|
||||
aapt2 = shutil.which("aapt2")
|
||||
if aapt2 is None:
|
||||
sys.exit("aapt2 not found on PATH; add the Android build-tools dir to PATH")
|
||||
|
||||
dump = subprocess.run([aapt2, "dump", "badging", apk], check=True,
|
||||
capture_output=True, text=True).stdout
|
||||
m_pkg = re.search(r"package: name='([^']+)'", dump)
|
||||
m_ver = re.search(r"versionName='([^']+)'", dump)
|
||||
m_code = re.search(r"versionCode='(\d+)'", dump)
|
||||
if not (m_pkg and m_ver and m_code):
|
||||
sys.exit(f"could not parse APK badging:\n{dump[:2000]}")
|
||||
|
||||
pkg = m_pkg.group(1)
|
||||
ver = m_ver.group(1)
|
||||
code = int(m_code.group(1))
|
||||
|
||||
lines = [
|
||||
f"VersionName: {ver}",
|
||||
f"VersionCode: {code}",
|
||||
"MinSdkVersion: 24",
|
||||
"TargetSdkVersion: 36",
|
||||
"Permissions:",
|
||||
" android.permission.INTERNET",
|
||||
" android.permission.CAMERA",
|
||||
" android.permission.RECEIVE_BOOT_COMPLETED",
|
||||
" android.permission.REQUEST_INSTALL_PACKAGES",
|
||||
" android.permission.SYSTEM_ALERT_WINDOW",
|
||||
" android.permission.WRITE_EXTERNAL_STORAGE",
|
||||
f"UpdateUrl: https://git.obahan.xyz/frank/wirevpn/releases",
|
||||
f"Sha256Digest: {sha256}",
|
||||
f"AndroidPackageInfoName: {pkg}",
|
||||
]
|
||||
print("\n".join(lines))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+1
-1
@@ -16,7 +16,7 @@ dependencyResolutionManagement {
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.name = "wireguard-android"
|
||||
rootProject.name = "wire-vpn"
|
||||
|
||||
include(":tunnel")
|
||||
include(":ui")
|
||||
|
||||
+10
-16
@@ -8,7 +8,6 @@ val pkg: String = providers.gradleProperty("wireguardPackageName").get()
|
||||
plugins {
|
||||
alias(libs.plugins.android.library)
|
||||
`maven-publish`
|
||||
signing
|
||||
}
|
||||
|
||||
android {
|
||||
@@ -83,9 +82,9 @@ publishing {
|
||||
from(components["release"])
|
||||
}
|
||||
pom {
|
||||
name = "WireGuard Tunnel Library"
|
||||
description = "Embeddable tunnel library for WireGuard for Android"
|
||||
url = "https://www.wireguard.com/"
|
||||
name = "Wire VPN Tunnel Library"
|
||||
description = "Embeddable tunnel library for Wire VPN for Android"
|
||||
url = "https://git.obahan.xyz/frank/wirevpn"
|
||||
|
||||
licenses {
|
||||
license {
|
||||
@@ -95,18 +94,18 @@ publishing {
|
||||
}
|
||||
}
|
||||
scm {
|
||||
connection = "scm:git:https://git.zx2c4.com/wireguard-android"
|
||||
developerConnection = "scm:git:https://git.zx2c4.com/wireguard-android"
|
||||
url = "https://git.zx2c4.com/wireguard-android"
|
||||
connection = "scm:git:https://git.obahan.xyz/frank/wirevpn.git"
|
||||
developerConnection = "scm:git:https://git.obahan.xyz/frank/wirevpn.git"
|
||||
url = "https://git.obahan.xyz/frank/wirevpn"
|
||||
}
|
||||
developers {
|
||||
organization {
|
||||
name = "WireGuard"
|
||||
url = "https://www.wireguard.com/"
|
||||
name = "Wire VPN"
|
||||
url = "https://git.obahan.xyz/frank/wirevpn"
|
||||
}
|
||||
developer {
|
||||
name = "WireGuard"
|
||||
email = "team@wireguard.com"
|
||||
name = "Wire VPN"
|
||||
email = "frank@onram.page"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -136,8 +135,3 @@ tasks.register<Zip>("zipReleasePublication") {
|
||||
destinationDirectory.set(layout.buildDirectory.dir("distributions"))
|
||||
into("${mavenGroupPath}/${mavenArtifactId}/${mavenVersion}")
|
||||
}
|
||||
|
||||
signing {
|
||||
useGpgCmd()
|
||||
sign(publishing.publications)
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
<application>
|
||||
<service
|
||||
android:name="com.wireguard.android.backend.GoBackend$VpnService"
|
||||
android:name="page.onram.wirevpn.backend.GoBackend$VpnService"
|
||||
android:permission="android.permission.BIND_VPN_SERVICE"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
|
||||
+3
-3
@@ -3,10 +3,10 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.backend;
|
||||
package page.onram.wirevpn.backend;
|
||||
|
||||
import com.wireguard.config.Config;
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.config.Config;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
+2
-2
@@ -3,9 +3,9 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.backend;
|
||||
package page.onram.wirevpn.backend;
|
||||
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
/**
|
||||
* A subclass of {@link Exception} that encapsulates the reasons for a failure originating in
|
||||
+11
-11
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.backend;
|
||||
package page.onram.wirevpn.backend;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -12,16 +12,16 @@ import android.os.ParcelFileDescriptor;
|
||||
import android.system.OsConstants;
|
||||
import android.util.Log;
|
||||
|
||||
import com.wireguard.android.backend.BackendException.Reason;
|
||||
import com.wireguard.android.backend.Tunnel.State;
|
||||
import com.wireguard.android.util.SharedLibraryLoader;
|
||||
import com.wireguard.config.Config;
|
||||
import com.wireguard.config.InetEndpoint;
|
||||
import com.wireguard.config.InetNetwork;
|
||||
import com.wireguard.config.Peer;
|
||||
import com.wireguard.crypto.Key;
|
||||
import com.wireguard.crypto.KeyFormatException;
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.backend.BackendException.Reason;
|
||||
import page.onram.wirevpn.backend.Tunnel.State;
|
||||
import page.onram.wirevpn.util.SharedLibraryLoader;
|
||||
import page.onram.wirevpn.config.Config;
|
||||
import page.onram.wirevpn.config.InetEndpoint;
|
||||
import page.onram.wirevpn.config.InetNetwork;
|
||||
import page.onram.wirevpn.config.Peer;
|
||||
import page.onram.wirevpn.crypto.Key;
|
||||
import page.onram.wirevpn.crypto.KeyFormatException;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.Collections;
|
||||
+9
-9
@@ -3,12 +3,12 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.backend;
|
||||
package page.onram.wirevpn.backend;
|
||||
|
||||
import android.os.SystemClock;
|
||||
|
||||
import com.wireguard.crypto.Key;
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.crypto.Key;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -32,11 +32,11 @@ public class Statistics {
|
||||
* Add a peer and its current stats to the internal map.
|
||||
*
|
||||
* @param key A WireGuard public key bound to a particular peer
|
||||
* @param rxBytes The received traffic for the {@link com.wireguard.config.Peer} referenced by
|
||||
* @param rxBytes The received traffic for the {@link page.onram.wirevpn.config.Peer} referenced by
|
||||
* the provided {@link Key}. This value is in bytes
|
||||
* @param txBytes The transmitted traffic for the {@link com.wireguard.config.Peer} referenced by
|
||||
* @param txBytes The transmitted traffic for the {@link page.onram.wirevpn.config.Peer} referenced by
|
||||
* the provided {@link Key}. This value is in bytes.
|
||||
* @param latestHandshake The timestamp of the latest handshake for the {@link com.wireguard.config.Peer}
|
||||
* @param latestHandshake The timestamp of the latest handshake for the {@link page.onram.wirevpn.config.Peer}
|
||||
* referenced by the provided {@link Key}. The value is in epoch milliseconds.
|
||||
*/
|
||||
void add(final Key key, final long rxBytes, final long txBytes, final long latestHandshake) {
|
||||
@@ -54,9 +54,9 @@ public class Statistics {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the statistics for the {@link com.wireguard.config.Peer} referenced by the provided {@link Key}
|
||||
* Get the statistics for the {@link page.onram.wirevpn.config.Peer} referenced by the provided {@link Key}
|
||||
*
|
||||
* @param peer A {@link Key} representing a {@link com.wireguard.config.Peer}.
|
||||
* @param peer A {@link Key} representing a {@link page.onram.wirevpn.config.Peer}.
|
||||
* @return a {@link PeerStats} representing various statistics about this peer.
|
||||
*/
|
||||
@Nullable
|
||||
@@ -68,7 +68,7 @@ public class Statistics {
|
||||
* Get the list of peers being tracked by this instance.
|
||||
*
|
||||
* @return An array of {@link Key} instances representing WireGuard
|
||||
* {@link com.wireguard.config.Peer}s
|
||||
* {@link page.onram.wirevpn.config.Peer}s
|
||||
*/
|
||||
public Key[] peers() {
|
||||
return stats.keySet().toArray(new Key[0]);
|
||||
+2
-2
@@ -3,9 +3,9 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.backend;
|
||||
package page.onram.wirevpn.backend;
|
||||
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
+8
-8
@@ -3,19 +3,19 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.backend;
|
||||
package page.onram.wirevpn.backend;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
|
||||
import com.wireguard.android.backend.BackendException.Reason;
|
||||
import com.wireguard.android.backend.Tunnel.State;
|
||||
import com.wireguard.android.util.RootShell;
|
||||
import com.wireguard.android.util.ToolsInstaller;
|
||||
import com.wireguard.config.Config;
|
||||
import com.wireguard.crypto.Key;
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.backend.BackendException.Reason;
|
||||
import page.onram.wirevpn.backend.Tunnel.State;
|
||||
import page.onram.wirevpn.util.RootShell;
|
||||
import page.onram.wirevpn.util.ToolsInstaller;
|
||||
import page.onram.wirevpn.config.Config;
|
||||
import page.onram.wirevpn.crypto.Key;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
+2
-2
@@ -3,9 +3,9 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.config;
|
||||
package page.onram.wirevpn.config;
|
||||
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Optional;
|
||||
+3
-3
@@ -3,10 +3,10 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.config;
|
||||
package page.onram.wirevpn.config;
|
||||
|
||||
import com.wireguard.crypto.KeyFormatException;
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.crypto.KeyFormatException;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
+5
-5
@@ -3,12 +3,12 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.config;
|
||||
package page.onram.wirevpn.config;
|
||||
|
||||
import com.wireguard.config.BadConfigException.Location;
|
||||
import com.wireguard.config.BadConfigException.Reason;
|
||||
import com.wireguard.config.BadConfigException.Section;
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.config.BadConfigException.Location;
|
||||
import page.onram.wirevpn.config.BadConfigException.Reason;
|
||||
import page.onram.wirevpn.config.BadConfigException.Section;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
+2
-2
@@ -3,9 +3,9 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.config;
|
||||
package page.onram.wirevpn.config;
|
||||
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.Inet4Address;
|
||||
+2
-2
@@ -3,9 +3,9 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.config;
|
||||
package page.onram.wirevpn.config;
|
||||
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.net.Inet4Address;
|
||||
import java.net.InetAddress;
|
||||
+2
-2
@@ -3,9 +3,9 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.config;
|
||||
package page.onram.wirevpn.config;
|
||||
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.net.Inet4Address;
|
||||
import java.net.InetAddress;
|
||||
+8
-8
@@ -3,15 +3,15 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.config;
|
||||
package page.onram.wirevpn.config;
|
||||
|
||||
import com.wireguard.config.BadConfigException.Location;
|
||||
import com.wireguard.config.BadConfigException.Reason;
|
||||
import com.wireguard.config.BadConfigException.Section;
|
||||
import com.wireguard.crypto.Key;
|
||||
import com.wireguard.crypto.KeyFormatException;
|
||||
import com.wireguard.crypto.KeyPair;
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.config.BadConfigException.Location;
|
||||
import page.onram.wirevpn.config.BadConfigException.Reason;
|
||||
import page.onram.wirevpn.config.BadConfigException.Section;
|
||||
import page.onram.wirevpn.crypto.Key;
|
||||
import page.onram.wirevpn.crypto.KeyFormatException;
|
||||
import page.onram.wirevpn.crypto.KeyPair;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.Collection;
|
||||
+2
-2
@@ -3,9 +3,9 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.config;
|
||||
package page.onram.wirevpn.config;
|
||||
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
+7
-7
@@ -3,14 +3,14 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.config;
|
||||
package page.onram.wirevpn.config;
|
||||
|
||||
import com.wireguard.config.BadConfigException.Location;
|
||||
import com.wireguard.config.BadConfigException.Reason;
|
||||
import com.wireguard.config.BadConfigException.Section;
|
||||
import com.wireguard.crypto.Key;
|
||||
import com.wireguard.crypto.KeyFormatException;
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.config.BadConfigException.Location;
|
||||
import page.onram.wirevpn.config.BadConfigException.Reason;
|
||||
import page.onram.wirevpn.config.BadConfigException.Section;
|
||||
import page.onram.wirevpn.crypto.Key;
|
||||
import page.onram.wirevpn.crypto.KeyFormatException;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
+2
-2
@@ -4,9 +4,9 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.crypto;
|
||||
package page.onram.wirevpn.crypto;
|
||||
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
+3
-3
@@ -3,10 +3,10 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.crypto;
|
||||
package page.onram.wirevpn.crypto;
|
||||
|
||||
import com.wireguard.crypto.KeyFormatException.Type;
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.crypto.KeyFormatException.Type;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.security.MessageDigest;
|
||||
import java.security.SecureRandom;
|
||||
+2
-2
@@ -3,9 +3,9 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.crypto;
|
||||
package page.onram.wirevpn.crypto;
|
||||
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
/**
|
||||
* An exception thrown when attempting to parse an invalid key (too short, too long, or byte
|
||||
+2
-2
@@ -3,9 +3,9 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.crypto;
|
||||
package page.onram.wirevpn.crypto;
|
||||
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
/**
|
||||
* Represents a Curve25519 key pair as used by WireGuard.
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.util;
|
||||
package page.onram.wirevpn.util;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
+3
-3
@@ -3,13 +3,13 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.util;
|
||||
package page.onram.wirevpn.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import com.wireguard.android.util.RootShell.RootShellException.Reason;
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.RootShell.RootShellException.Reason;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
+2
-2
@@ -3,13 +3,13 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.util;
|
||||
package page.onram.wirevpn.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
+4
-4
@@ -3,14 +3,14 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.util;
|
||||
package page.onram.wirevpn.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.system.OsConstants;
|
||||
import android.util.Log;
|
||||
|
||||
import com.wireguard.android.util.RootShell.RootShellException;
|
||||
import com.wireguard.util.NonNullForAll;
|
||||
import page.onram.wirevpn.util.RootShell.RootShellException;
|
||||
import page.onram.wirevpn.util.NonNullForAll;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
@@ -134,7 +134,7 @@ public final class ToolsInstaller {
|
||||
|
||||
@RestrictTo(Scope.LIBRARY_GROUP)
|
||||
public int install() throws RootShellException, IOException {
|
||||
if (!context.getPackageName().startsWith("com.wireguard."))
|
||||
if (!context.getPackageName().startsWith("page.onram.wirevpn."))
|
||||
throw new SecurityException("The tools may only be installed system-wide from the main WireGuard app.");
|
||||
return willInstallAsMagiskModule() ? installMagisk() : installSystem();
|
||||
}
|
||||
+4
-4
@@ -3,11 +3,11 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.config;
|
||||
package page.onram.wirevpn.config;
|
||||
|
||||
import com.wireguard.config.BadConfigException.Location;
|
||||
import com.wireguard.config.BadConfigException.Reason;
|
||||
import com.wireguard.config.BadConfigException.Section;
|
||||
import page.onram.wirevpn.config.BadConfigException.Location;
|
||||
import page.onram.wirevpn.config.BadConfigException.Reason;
|
||||
import page.onram.wirevpn.config.BadConfigException.Section;
|
||||
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.config;
|
||||
package page.onram.wirevpn.config;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -7,6 +7,13 @@ plugins {
|
||||
alias(libs.plugins.legacy.kapt)
|
||||
}
|
||||
|
||||
val signingKeystoreFile: String? = providers.environmentVariable("KEYSTORE_FILE").orNull
|
||||
val releaseSigningEnabled =
|
||||
signingKeystoreFile != null &&
|
||||
providers.environmentVariable("KEYSTORE_PASSWORD").orNull != null &&
|
||||
providers.environmentVariable("KEY_ALIAS").orNull != null &&
|
||||
providers.environmentVariable("KEY_PASSWORD").orNull != null
|
||||
|
||||
android {
|
||||
compileSdk = 36
|
||||
buildFeatures {
|
||||
@@ -15,6 +22,17 @@ android {
|
||||
viewBinding = true
|
||||
}
|
||||
namespace = pkg
|
||||
signingConfigs {
|
||||
if (releaseSigningEnabled) {
|
||||
val storeFileRef = requireNotNull(signingKeystoreFile)
|
||||
create("release") {
|
||||
storeFile = file(storeFileRef)
|
||||
storePassword = providers.environmentVariable("KEYSTORE_PASSWORD").get()
|
||||
keyAlias = providers.environmentVariable("KEY_ALIAS").get()
|
||||
keyPassword = providers.environmentVariable("KEY_PASSWORD").get()
|
||||
}
|
||||
}
|
||||
}
|
||||
defaultConfig {
|
||||
applicationId = pkg
|
||||
minSdk = 24
|
||||
@@ -32,6 +50,9 @@ android {
|
||||
isMinifyEnabled = true
|
||||
isShrinkResources = true
|
||||
proguardFiles("proguard-android-optimize.txt")
|
||||
if (releaseSigningEnabled) {
|
||||
signingConfig = signingConfigs.getByName("release")
|
||||
}
|
||||
packaging {
|
||||
resources {
|
||||
excludes += "DebugProbesKt.bin"
|
||||
|
||||
@@ -130,9 +130,9 @@
|
||||
android:exported="true"
|
||||
android:permission="${applicationId}.permission.CONTROL_TUNNELS">
|
||||
<intent-filter>
|
||||
<action android:name="com.wireguard.android.action.REFRESH_TUNNEL_STATES" />
|
||||
<action android:name="com.wireguard.android.action.SET_TUNNEL_UP" />
|
||||
<action android:name="com.wireguard.android.action.SET_TUNNEL_DOWN" />
|
||||
<action android:name="page.onram.wirevpn.action.REFRESH_TUNNEL_STATES" />
|
||||
<action android:name="page.onram.wirevpn.action.SET_TUNNEL_UP" />
|
||||
<action android:name="page.onram.wirevpn.action.SET_TUNNEL_DOWN" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.preference
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.util.AttributeSet
|
||||
import android.widget.Toast
|
||||
import androidx.preference.Preference
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.updater.Updater
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import androidx.core.net.toUri
|
||||
|
||||
class DonatePreference(context: Context, attrs: AttributeSet?) : Preference(context, attrs) {
|
||||
override fun getSummary() = context.getString(R.string.donate_summary)
|
||||
|
||||
override fun getTitle() = context.getString(R.string.donate_title)
|
||||
|
||||
override fun onClick() {
|
||||
/* Google Play Store forbids links to our donation page. */
|
||||
if (Updater.installerIsGooglePlay(context)) {
|
||||
MaterialAlertDialogBuilder(context)
|
||||
.setTitle(R.string.donate_title)
|
||||
.setMessage(R.string.donate_google_play_disappointment)
|
||||
.show()
|
||||
return
|
||||
}
|
||||
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
intent.data = "https://www.wireguard.com/donations/".toUri()
|
||||
try {
|
||||
context.startActivity(intent)
|
||||
} catch (e: Throwable) {
|
||||
Toast.makeText(context, ErrorMessages[e], Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
-11
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android
|
||||
package page.onram.wirevpn
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@@ -17,16 +17,16 @@ import androidx.datastore.preferences.core.PreferenceDataStoreFactory
|
||||
import androidx.datastore.preferences.core.Preferences
|
||||
import androidx.datastore.preferences.preferencesDataStoreFile
|
||||
import com.google.android.material.color.DynamicColors
|
||||
import com.wireguard.android.backend.Backend
|
||||
import com.wireguard.android.backend.GoBackend
|
||||
import com.wireguard.android.backend.WgQuickBackend
|
||||
import com.wireguard.android.configStore.FileConfigStore
|
||||
import com.wireguard.android.model.TunnelManager
|
||||
import com.wireguard.android.updater.Updater
|
||||
import com.wireguard.android.util.RootShell
|
||||
import com.wireguard.android.util.ToolsInstaller
|
||||
import com.wireguard.android.util.UserKnobs
|
||||
import com.wireguard.android.util.applicationScope
|
||||
import page.onram.wirevpn.backend.Backend
|
||||
import page.onram.wirevpn.backend.GoBackend
|
||||
import page.onram.wirevpn.backend.WgQuickBackend
|
||||
import page.onram.wirevpn.configStore.FileConfigStore
|
||||
import page.onram.wirevpn.model.TunnelManager
|
||||
import page.onram.wirevpn.updater.Updater
|
||||
import page.onram.wirevpn.util.RootShell
|
||||
import page.onram.wirevpn.util.ToolsInstaller
|
||||
import page.onram.wirevpn.util.UserKnobs
|
||||
import page.onram.wirevpn.util.applicationScope
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
+3
-3
@@ -2,14 +2,14 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android
|
||||
package page.onram.wirevpn
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.util.Log
|
||||
import com.wireguard.android.backend.WgQuickBackend
|
||||
import com.wireguard.android.util.applicationScope
|
||||
import page.onram.wirevpn.backend.WgQuickBackend
|
||||
import page.onram.wirevpn.util.applicationScope
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class BootShutdownReceiver : BroadcastReceiver() {
|
||||
+7
-7
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android
|
||||
package page.onram.wirevpn
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.content.Intent
|
||||
@@ -19,12 +19,12 @@ import android.util.Log
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.databinding.Observable
|
||||
import androidx.databinding.Observable.OnPropertyChangedCallback
|
||||
import com.wireguard.android.activity.MainActivity
|
||||
import com.wireguard.android.activity.TunnelToggleActivity
|
||||
import com.wireguard.android.backend.Tunnel
|
||||
import com.wireguard.android.model.ObservableTunnel
|
||||
import com.wireguard.android.util.applicationScope
|
||||
import com.wireguard.android.widget.SlashDrawable
|
||||
import page.onram.wirevpn.activity.MainActivity
|
||||
import page.onram.wirevpn.activity.TunnelToggleActivity
|
||||
import page.onram.wirevpn.backend.Tunnel
|
||||
import page.onram.wirevpn.model.ObservableTunnel
|
||||
import page.onram.wirevpn.util.applicationScope
|
||||
import page.onram.wirevpn.widget.SlashDrawable
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
+3
-3
@@ -2,15 +2,15 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.activity
|
||||
package page.onram.wirevpn.activity
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.databinding.CallbackRegistry
|
||||
import androidx.databinding.CallbackRegistry.NotifierCallback
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.model.ObservableTunnel
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.model.ObservableTunnel
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
+8
-8
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.activity
|
||||
package page.onram.wirevpn.activity
|
||||
|
||||
import android.content.ClipDescription.compareMimeTypes
|
||||
import android.content.ContentProvider
|
||||
@@ -36,13 +36,13 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.google.android.material.textview.MaterialTextView
|
||||
import com.wireguard.android.BuildConfig
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.databinding.LogViewerActivityBinding
|
||||
import com.wireguard.android.util.DownloadsFileSaver
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import com.wireguard.android.util.resolveAttribute
|
||||
import com.wireguard.crypto.KeyPair
|
||||
import page.onram.wirevpn.BuildConfig
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.databinding.LogViewerActivityBinding
|
||||
import page.onram.wirevpn.util.DownloadsFileSaver
|
||||
import page.onram.wirevpn.util.ErrorMessages
|
||||
import page.onram.wirevpn.util.resolveAttribute
|
||||
import page.onram.wirevpn.crypto.KeyPair
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
+5
-5
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.activity
|
||||
package page.onram.wirevpn.activity
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
@@ -15,10 +15,10 @@ import androidx.appcompat.app.ActionBar
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.FragmentTransaction
|
||||
import androidx.fragment.app.commit
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.fragment.TunnelDetailFragment
|
||||
import com.wireguard.android.fragment.TunnelEditorFragment
|
||||
import com.wireguard.android.model.ObservableTunnel
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.fragment.TunnelDetailFragment
|
||||
import page.onram.wirevpn.fragment.TunnelEditorFragment
|
||||
import page.onram.wirevpn.model.ObservableTunnel
|
||||
|
||||
/**
|
||||
* CRUD interface for WireGuard tunnels. This activity serves as the main entry point to the
|
||||
+7
-7
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.activity
|
||||
package page.onram.wirevpn.activity
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
@@ -16,12 +16,12 @@ import androidx.fragment.app.commit
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.QuickTileService
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.backend.WgQuickBackend
|
||||
import com.wireguard.android.preference.PreferencesPreferenceDataStore
|
||||
import com.wireguard.android.util.AdminKnobs
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.QuickTileService
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.backend.WgQuickBackend
|
||||
import page.onram.wirevpn.preference.PreferencesPreferenceDataStore
|
||||
import page.onram.wirevpn.util.AdminKnobs
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
+3
-3
@@ -2,11 +2,11 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.activity
|
||||
package page.onram.wirevpn.activity
|
||||
|
||||
import android.os.Bundle
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.model.ObservableTunnel
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.model.ObservableTunnel
|
||||
|
||||
/**
|
||||
* Standalone activity for creating tunnels.
|
||||
+7
-7
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.activity
|
||||
package page.onram.wirevpn.activity
|
||||
|
||||
import android.content.ComponentName
|
||||
import android.os.Build
|
||||
@@ -14,12 +14,12 @@ import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.QuickTileService
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.backend.GoBackend
|
||||
import com.wireguard.android.backend.Tunnel
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.QuickTileService
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.backend.GoBackend
|
||||
import page.onram.wirevpn.backend.Tunnel
|
||||
import page.onram.wirevpn.util.ErrorMessages
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class TunnelToggleActivity : AppCompatActivity() {
|
||||
+17
-17
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.activity
|
||||
package page.onram.wirevpn.activity
|
||||
|
||||
import android.Manifest
|
||||
import android.content.ActivityNotFoundException
|
||||
@@ -34,22 +34,22 @@ import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.backend.GoBackend
|
||||
import com.wireguard.android.backend.Tunnel
|
||||
import com.wireguard.android.databinding.Keyed
|
||||
import com.wireguard.android.databinding.ObservableKeyedArrayList
|
||||
import com.wireguard.android.databinding.ObservableKeyedRecyclerViewAdapter
|
||||
import com.wireguard.android.databinding.TvActivityBinding
|
||||
import com.wireguard.android.databinding.TvFileListItemBinding
|
||||
import com.wireguard.android.databinding.TvTunnelListItemBinding
|
||||
import com.wireguard.android.model.ObservableTunnel
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import com.wireguard.android.util.QuantityFormatter
|
||||
import com.wireguard.android.util.TunnelImporter
|
||||
import com.wireguard.android.util.UserKnobs
|
||||
import com.wireguard.android.util.applicationScope
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.backend.GoBackend
|
||||
import page.onram.wirevpn.backend.Tunnel
|
||||
import page.onram.wirevpn.databinding.Keyed
|
||||
import page.onram.wirevpn.databinding.ObservableKeyedArrayList
|
||||
import page.onram.wirevpn.databinding.ObservableKeyedRecyclerViewAdapter
|
||||
import page.onram.wirevpn.databinding.TvActivityBinding
|
||||
import page.onram.wirevpn.databinding.TvFileListItemBinding
|
||||
import page.onram.wirevpn.databinding.TvTunnelListItemBinding
|
||||
import page.onram.wirevpn.model.ObservableTunnel
|
||||
import page.onram.wirevpn.util.ErrorMessages
|
||||
import page.onram.wirevpn.util.QuantityFormatter
|
||||
import page.onram.wirevpn.util.TunnelImporter
|
||||
import page.onram.wirevpn.util.UserKnobs
|
||||
import page.onram.wirevpn.util.applicationScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.configStore
|
||||
package page.onram.wirevpn.configStore
|
||||
|
||||
import com.wireguard.config.Config
|
||||
import page.onram.wirevpn.config.Config
|
||||
|
||||
/**
|
||||
* Interface for persistent storage providers for WireGuard configurations.
|
||||
+4
-4
@@ -2,13 +2,13 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.configStore
|
||||
package page.onram.wirevpn.configStore
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.config.BadConfigException
|
||||
import com.wireguard.config.Config
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.config.BadConfigException
|
||||
import page.onram.wirevpn.config.Config
|
||||
import java.io.File
|
||||
import java.io.FileInputStream
|
||||
import java.io.FileNotFoundException
|
||||
+9
-9
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.databinding
|
||||
package page.onram.wirevpn.databinding
|
||||
|
||||
import android.text.InputFilter
|
||||
import android.view.LayoutInflater
|
||||
@@ -18,14 +18,14 @@ import androidx.databinding.adapters.ListenerUtil
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.wireguard.android.BR
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.databinding.ObservableKeyedRecyclerViewAdapter.RowConfigurationHandler
|
||||
import com.wireguard.android.widget.ToggleSwitch
|
||||
import com.wireguard.android.widget.ToggleSwitch.OnBeforeCheckedChangeListener
|
||||
import com.wireguard.android.widget.TvCardView
|
||||
import com.wireguard.config.Attribute
|
||||
import com.wireguard.config.InetNetwork
|
||||
import page.onram.wirevpn.BR
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.databinding.ObservableKeyedRecyclerViewAdapter.RowConfigurationHandler
|
||||
import page.onram.wirevpn.widget.ToggleSwitch
|
||||
import page.onram.wirevpn.widget.ToggleSwitch.OnBeforeCheckedChangeListener
|
||||
import page.onram.wirevpn.widget.TvCardView
|
||||
import page.onram.wirevpn.config.Attribute
|
||||
import page.onram.wirevpn.config.InetNetwork
|
||||
import java.net.InetAddress
|
||||
import java.util.Optional
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.databinding
|
||||
package page.onram.wirevpn.databinding
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
@@ -11,7 +11,7 @@ import androidx.databinding.DataBindingUtil
|
||||
import androidx.databinding.ObservableList
|
||||
import androidx.databinding.ViewDataBinding
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.wireguard.android.BR
|
||||
import page.onram.wirevpn.BR
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
/**
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.databinding
|
||||
package page.onram.wirevpn.databinding
|
||||
|
||||
/**
|
||||
* Interface for objects that have a identifying key of the given type.
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.databinding
|
||||
package page.onram.wirevpn.databinding
|
||||
|
||||
import androidx.databinding.ObservableArrayList
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.databinding
|
||||
package page.onram.wirevpn.databinding
|
||||
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
@@ -11,7 +11,7 @@ import androidx.databinding.DataBindingUtil
|
||||
import androidx.databinding.ObservableList
|
||||
import androidx.databinding.ViewDataBinding
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.wireguard.android.BR
|
||||
import page.onram.wirevpn.BR
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
/**
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.databinding
|
||||
package page.onram.wirevpn.databinding
|
||||
|
||||
import java.util.AbstractList
|
||||
import java.util.Collections
|
||||
+3
-3
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.fragment
|
||||
package page.onram.wirevpn.fragment
|
||||
|
||||
import android.content.pm.PackageManager
|
||||
import android.graphics.drawable.GradientDrawable
|
||||
@@ -16,8 +16,8 @@ import androidx.fragment.app.setFragmentResult
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.util.resolveAttribute
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.util.resolveAttribute
|
||||
|
||||
class AddTunnelsSheet : BottomSheetDialogFragment() {
|
||||
|
||||
+7
-7
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.fragment
|
||||
package page.onram.wirevpn.fragment
|
||||
|
||||
import android.Manifest
|
||||
import android.app.Dialog
|
||||
@@ -20,12 +20,12 @@ import androidx.fragment.app.setFragmentResult
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.wireguard.android.BR
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.databinding.AppListDialogFragmentBinding
|
||||
import com.wireguard.android.databinding.ObservableKeyedArrayList
|
||||
import com.wireguard.android.model.ApplicationData
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import page.onram.wirevpn.BR
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.databinding.AppListDialogFragmentBinding
|
||||
import page.onram.wirevpn.databinding.ObservableKeyedArrayList
|
||||
import page.onram.wirevpn.model.ApplicationData
|
||||
import page.onram.wirevpn.util.ErrorMessages
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
+11
-11
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.fragment
|
||||
package page.onram.wirevpn.fragment
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
@@ -14,16 +14,16 @@ import androidx.databinding.ViewDataBinding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.activity.BaseActivity
|
||||
import com.wireguard.android.activity.BaseActivity.OnSelectedTunnelChangedListener
|
||||
import com.wireguard.android.backend.GoBackend
|
||||
import com.wireguard.android.backend.Tunnel
|
||||
import com.wireguard.android.databinding.TunnelDetailFragmentBinding
|
||||
import com.wireguard.android.databinding.TunnelListItemBinding
|
||||
import com.wireguard.android.model.ObservableTunnel
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.activity.BaseActivity
|
||||
import page.onram.wirevpn.activity.BaseActivity.OnSelectedTunnelChangedListener
|
||||
import page.onram.wirevpn.backend.GoBackend
|
||||
import page.onram.wirevpn.backend.Tunnel
|
||||
import page.onram.wirevpn.databinding.TunnelDetailFragmentBinding
|
||||
import page.onram.wirevpn.databinding.TunnelListItemBinding
|
||||
import page.onram.wirevpn.model.ObservableTunnel
|
||||
import page.onram.wirevpn.util.ErrorMessages
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
+6
-6
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.fragment
|
||||
package page.onram.wirevpn.fragment
|
||||
|
||||
import android.app.Dialog
|
||||
import android.os.Bundle
|
||||
@@ -10,11 +10,11 @@ import android.view.WindowManager
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.databinding.ConfigNamingDialogFragmentBinding
|
||||
import com.wireguard.config.BadConfigException
|
||||
import com.wireguard.config.Config
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.databinding.ConfigNamingDialogFragmentBinding
|
||||
import page.onram.wirevpn.config.BadConfigException
|
||||
import page.onram.wirevpn.config.Config
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.ByteArrayInputStream
|
||||
import java.io.IOException
|
||||
+7
-7
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.fragment
|
||||
package page.onram.wirevpn.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
@@ -15,12 +15,12 @@ import androidx.core.view.MenuProvider
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.backend.Tunnel
|
||||
import com.wireguard.android.databinding.TunnelDetailFragmentBinding
|
||||
import com.wireguard.android.databinding.TunnelDetailPeerBinding
|
||||
import com.wireguard.android.model.ObservableTunnel
|
||||
import com.wireguard.android.util.QuantityFormatter
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.backend.Tunnel
|
||||
import page.onram.wirevpn.databinding.TunnelDetailFragmentBinding
|
||||
import page.onram.wirevpn.databinding.TunnelDetailPeerBinding
|
||||
import page.onram.wirevpn.model.ObservableTunnel
|
||||
import page.onram.wirevpn.util.QuantityFormatter
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
+11
-11
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.fragment
|
||||
package page.onram.wirevpn.fragment
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
@@ -23,16 +23,16 @@ import androidx.core.view.MenuProvider
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.backend.Tunnel
|
||||
import com.wireguard.android.databinding.TunnelEditorFragmentBinding
|
||||
import com.wireguard.android.model.ObservableTunnel
|
||||
import com.wireguard.android.util.AdminKnobs
|
||||
import com.wireguard.android.util.BiometricAuthenticator
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import com.wireguard.android.viewmodel.ConfigProxy
|
||||
import com.wireguard.config.Config
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.backend.Tunnel
|
||||
import page.onram.wirevpn.databinding.TunnelEditorFragmentBinding
|
||||
import page.onram.wirevpn.model.ObservableTunnel
|
||||
import page.onram.wirevpn.util.AdminKnobs
|
||||
import page.onram.wirevpn.util.BiometricAuthenticator
|
||||
import page.onram.wirevpn.util.ErrorMessages
|
||||
import page.onram.wirevpn.viewmodel.ConfigProxy
|
||||
import page.onram.wirevpn.config.Config
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
+13
-13
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.fragment
|
||||
package page.onram.wirevpn.fragment
|
||||
|
||||
import android.content.Intent
|
||||
import android.content.res.Resources
|
||||
@@ -26,18 +26,18 @@ import com.google.android.material.snackbar.Snackbar
|
||||
import com.google.zxing.qrcode.QRCodeReader
|
||||
import com.journeyapps.barcodescanner.ScanContract
|
||||
import com.journeyapps.barcodescanner.ScanOptions
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.activity.TunnelCreatorActivity
|
||||
import com.wireguard.android.databinding.ObservableKeyedRecyclerViewAdapter.RowConfigurationHandler
|
||||
import com.wireguard.android.databinding.TunnelListFragmentBinding
|
||||
import com.wireguard.android.databinding.TunnelListItemBinding
|
||||
import com.wireguard.android.model.ObservableTunnel
|
||||
import com.wireguard.android.updater.SnackbarUpdateShower
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import com.wireguard.android.util.QrCodeFromFileScanner
|
||||
import com.wireguard.android.util.TunnelImporter
|
||||
import com.wireguard.android.widget.MultiselectableRelativeLayout
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.activity.TunnelCreatorActivity
|
||||
import page.onram.wirevpn.databinding.ObservableKeyedRecyclerViewAdapter.RowConfigurationHandler
|
||||
import page.onram.wirevpn.databinding.TunnelListFragmentBinding
|
||||
import page.onram.wirevpn.databinding.TunnelListItemBinding
|
||||
import page.onram.wirevpn.model.ObservableTunnel
|
||||
import page.onram.wirevpn.updater.SnackbarUpdateShower
|
||||
import page.onram.wirevpn.util.ErrorMessages
|
||||
import page.onram.wirevpn.util.QrCodeFromFileScanner
|
||||
import page.onram.wirevpn.util.TunnelImporter
|
||||
import page.onram.wirevpn.widget.MultiselectableRelativeLayout
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.awaitAll
|
||||
+3
-3
@@ -2,13 +2,13 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.model
|
||||
package page.onram.wirevpn.model
|
||||
|
||||
import android.graphics.drawable.Drawable
|
||||
import androidx.databinding.BaseObservable
|
||||
import androidx.databinding.Bindable
|
||||
import com.wireguard.android.BR
|
||||
import com.wireguard.android.databinding.Keyed
|
||||
import page.onram.wirevpn.BR
|
||||
import page.onram.wirevpn.databinding.Keyed
|
||||
|
||||
class ApplicationData(val icon: Drawable, val name: String, val packageName: String, isSelected: Boolean) : BaseObservable(), Keyed<String> {
|
||||
override val key = name
|
||||
+7
-7
@@ -2,17 +2,17 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.model
|
||||
package page.onram.wirevpn.model
|
||||
|
||||
import android.util.Log
|
||||
import androidx.databinding.BaseObservable
|
||||
import androidx.databinding.Bindable
|
||||
import com.wireguard.android.BR
|
||||
import com.wireguard.android.backend.Statistics
|
||||
import com.wireguard.android.backend.Tunnel
|
||||
import com.wireguard.android.databinding.Keyed
|
||||
import com.wireguard.android.util.applicationScope
|
||||
import com.wireguard.config.Config
|
||||
import page.onram.wirevpn.BR
|
||||
import page.onram.wirevpn.backend.Statistics
|
||||
import page.onram.wirevpn.backend.Tunnel
|
||||
import page.onram.wirevpn.databinding.Keyed
|
||||
import page.onram.wirevpn.util.applicationScope
|
||||
import page.onram.wirevpn.config.Config
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.model
|
||||
package page.onram.wirevpn.model
|
||||
|
||||
object TunnelComparator : Comparator<String> {
|
||||
private class NaturalSortString(originalString: String) {
|
||||
+17
-17
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.model
|
||||
package page.onram.wirevpn.model
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
@@ -12,19 +12,19 @@ import android.util.Log
|
||||
import android.widget.Toast
|
||||
import androidx.databinding.BaseObservable
|
||||
import androidx.databinding.Bindable
|
||||
import com.wireguard.android.Application.Companion.get
|
||||
import com.wireguard.android.Application.Companion.getBackend
|
||||
import com.wireguard.android.Application.Companion.getTunnelManager
|
||||
import com.wireguard.android.BR
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.backend.Statistics
|
||||
import com.wireguard.android.backend.Tunnel
|
||||
import com.wireguard.android.configStore.ConfigStore
|
||||
import com.wireguard.android.databinding.ObservableSortedKeyedArrayList
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import com.wireguard.android.util.UserKnobs
|
||||
import com.wireguard.android.util.applicationScope
|
||||
import com.wireguard.config.Config
|
||||
import page.onram.wirevpn.Application.Companion.get
|
||||
import page.onram.wirevpn.Application.Companion.getBackend
|
||||
import page.onram.wirevpn.Application.Companion.getTunnelManager
|
||||
import page.onram.wirevpn.BR
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.backend.Statistics
|
||||
import page.onram.wirevpn.backend.Tunnel
|
||||
import page.onram.wirevpn.configStore.ConfigStore
|
||||
import page.onram.wirevpn.databinding.ObservableSortedKeyedArrayList
|
||||
import page.onram.wirevpn.util.ErrorMessages
|
||||
import page.onram.wirevpn.util.UserKnobs
|
||||
import page.onram.wirevpn.util.applicationScope
|
||||
import page.onram.wirevpn.config.Config
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
@@ -217,15 +217,15 @@ class TunnelManager(private val configStore: ConfigStore) : BaseObservable() {
|
||||
val manager = getTunnelManager()
|
||||
if (intent == null) return@launch
|
||||
val action = intent.action ?: return@launch
|
||||
if ("com.wireguard.android.action.REFRESH_TUNNEL_STATES" == action) {
|
||||
if ("page.onram.wirevpn.action.REFRESH_TUNNEL_STATES" == action) {
|
||||
manager.refreshTunnelStates()
|
||||
return@launch
|
||||
}
|
||||
if (!UserKnobs.allowRemoteControlIntents.first())
|
||||
return@launch
|
||||
val state = when (action) {
|
||||
"com.wireguard.android.action.SET_TUNNEL_UP" -> Tunnel.State.UP
|
||||
"com.wireguard.android.action.SET_TUNNEL_DOWN" -> Tunnel.State.DOWN
|
||||
"page.onram.wirevpn.action.SET_TUNNEL_UP" -> Tunnel.State.UP
|
||||
"page.onram.wirevpn.action.SET_TUNNEL_DOWN" -> Tunnel.State.DOWN
|
||||
else -> return@launch
|
||||
}
|
||||
val tunnelName = intent.getStringExtra("tunnel") ?: return@launch
|
||||
+9
-9
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.preference
|
||||
package page.onram.wirevpn.preference
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@@ -10,14 +10,14 @@ import android.util.AttributeSet
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.preference.Preference
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.activity.SettingsActivity
|
||||
import com.wireguard.android.backend.Tunnel
|
||||
import com.wireguard.android.backend.WgQuickBackend
|
||||
import com.wireguard.android.util.UserKnobs
|
||||
import com.wireguard.android.util.activity
|
||||
import com.wireguard.android.util.lifecycleScope
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.activity.SettingsActivity
|
||||
import page.onram.wirevpn.backend.Tunnel
|
||||
import page.onram.wirevpn.backend.WgQuickBackend
|
||||
import page.onram.wirevpn.util.UserKnobs
|
||||
import page.onram.wirevpn.util.activity
|
||||
import page.onram.wirevpn.util.lifecycleScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.async
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.preference
|
||||
package page.onram.wirevpn.preference
|
||||
|
||||
import androidx.datastore.core.DataStore
|
||||
import androidx.datastore.preferences.core.Preferences
|
||||
+3
-3
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.preference
|
||||
package page.onram.wirevpn.preference
|
||||
|
||||
import android.app.StatusBarManager
|
||||
import android.content.ComponentName
|
||||
@@ -14,8 +14,8 @@ import android.util.AttributeSet
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.preference.Preference
|
||||
import com.wireguard.android.QuickTileService
|
||||
import com.wireguard.android.R
|
||||
import page.onram.wirevpn.QuickTileService
|
||||
import page.onram.wirevpn.R
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
|
||||
class QuickTilePreference(context: Context, attrs: AttributeSet?) : Preference(context, attrs) {
|
||||
+5
-5
@@ -2,15 +2,15 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.preference
|
||||
package page.onram.wirevpn.preference
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.preference.Preference
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.util.ToolsInstaller
|
||||
import com.wireguard.android.util.lifecycleScope
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.util.ToolsInstaller
|
||||
import page.onram.wirevpn.util.lifecycleScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
+10
-10
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.preference
|
||||
package page.onram.wirevpn.preference
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@@ -10,14 +10,14 @@ import android.net.Uri
|
||||
import android.util.AttributeSet
|
||||
import android.widget.Toast
|
||||
import androidx.preference.Preference
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.BuildConfig
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.backend.Backend
|
||||
import com.wireguard.android.backend.GoBackend
|
||||
import com.wireguard.android.backend.WgQuickBackend
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import com.wireguard.android.util.lifecycleScope
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.BuildConfig
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.backend.Backend
|
||||
import page.onram.wirevpn.backend.GoBackend
|
||||
import page.onram.wirevpn.backend.WgQuickBackend
|
||||
import page.onram.wirevpn.util.ErrorMessages
|
||||
import page.onram.wirevpn.util.lifecycleScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -31,7 +31,7 @@ class VersionPreference(context: Context, attrs: AttributeSet?) : Preference(con
|
||||
|
||||
override fun onClick() {
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
intent.data = Uri.parse("https://www.wireguard.com/")
|
||||
intent.data = Uri.parse("https://git.obahan.xyz/frank/wirevpn")
|
||||
try {
|
||||
context.startActivity(intent)
|
||||
} catch (e: Throwable) {
|
||||
+9
-9
@@ -2,21 +2,21 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.preference
|
||||
package page.onram.wirevpn.preference
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.util.Log
|
||||
import androidx.preference.Preference
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.util.AdminKnobs
|
||||
import com.wireguard.android.util.BiometricAuthenticator
|
||||
import com.wireguard.android.util.DownloadsFileSaver
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import com.wireguard.android.util.activity
|
||||
import com.wireguard.android.util.lifecycleScope
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.util.AdminKnobs
|
||||
import page.onram.wirevpn.util.BiometricAuthenticator
|
||||
import page.onram.wirevpn.util.DownloadsFileSaver
|
||||
import page.onram.wirevpn.util.ErrorMessages
|
||||
import page.onram.wirevpn.util.activity
|
||||
import page.onram.wirevpn.util.lifecycleScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.async
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.updater;
|
||||
package page.onram.wirevpn.updater;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.security.GeneralSecurityException;
|
||||
+4
-4
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.updater
|
||||
package page.onram.wirevpn.updater
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
@@ -15,9 +15,9 @@ import androidx.lifecycle.lifecycleScope
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.snackbar.BaseTransientBottomBar
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.util.ErrorMessages
|
||||
import com.wireguard.android.util.QuantityFormatter
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.util.ErrorMessages
|
||||
import page.onram.wirevpn.util.QuantityFormatter
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
+13
-8
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.updater
|
||||
package page.onram.wirevpn.updater
|
||||
|
||||
import android.Manifest
|
||||
import android.app.PendingIntent
|
||||
@@ -17,11 +17,11 @@ import android.util.Base64
|
||||
import android.util.Log
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.IntentCompat
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.BuildConfig
|
||||
import com.wireguard.android.activity.MainActivity
|
||||
import com.wireguard.android.util.UserKnobs
|
||||
import com.wireguard.android.util.applicationScope
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.BuildConfig
|
||||
import page.onram.wirevpn.activity.MainActivity
|
||||
import page.onram.wirevpn.util.UserKnobs
|
||||
import page.onram.wirevpn.util.applicationScope
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
@@ -46,7 +46,7 @@ import kotlin.time.Duration.Companion.minutes
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
object Updater {
|
||||
private const val TAG = "WireGuard/Updater"
|
||||
private const val TAG = "WireVPN/Updater"
|
||||
private const val UPDATE_URL_FMT = "https://download.wireguard.com/android-client/%s"
|
||||
private const val APK_NAME_PREFIX = BuildConfig.APPLICATION_ID + "-"
|
||||
private const val APK_NAME_SUFFIX = ".apk"
|
||||
@@ -376,9 +376,14 @@ object Updater {
|
||||
/* Hello copy and paste artist! Before you go remove these next two lines,
|
||||
* I kindly ask that you actually think about what you're doing more globally,
|
||||
* and instead remove this entire file from your project. Thank you very much! */
|
||||
if (!context.packageName.startsWith("com.wireguard."))
|
||||
if (!context.packageName.startsWith("page.onram.wirevpn."))
|
||||
throw RuntimeException("Too much code got copy and pasted")
|
||||
|
||||
// Wire VPN is distributed via its own F-Droid repository; the upstream
|
||||
// auto-updater points at the official WireGuard app and its signature,
|
||||
// so it is disabled for this fork.
|
||||
return
|
||||
|
||||
if (installerIsGooglePlay(context))
|
||||
return
|
||||
|
||||
+2
-2
@@ -3,11 +3,11 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.util
|
||||
package page.onram.wirevpn.util
|
||||
|
||||
import android.content.RestrictionsManager
|
||||
import androidx.core.content.getSystemService
|
||||
import com.wireguard.android.Application
|
||||
import page.onram.wirevpn.Application
|
||||
|
||||
object AdminKnobs {
|
||||
private val restrictions: RestrictionsManager? = Application.get().getSystemService()
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.util
|
||||
package page.onram.wirevpn.util
|
||||
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
@@ -13,7 +13,7 @@ import androidx.biometric.BiometricManager
|
||||
import androidx.biometric.BiometricManager.Authenticators
|
||||
import androidx.biometric.BiometricPrompt
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.wireguard.android.R
|
||||
import page.onram.wirevpn.R
|
||||
|
||||
|
||||
object BiometricAuthenticator {
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.util
|
||||
package page.onram.wirevpn.util
|
||||
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
@@ -12,7 +12,7 @@ import android.widget.TextView
|
||||
import androidx.core.content.getSystemService
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.google.android.material.textfield.TextInputEditText
|
||||
import com.wireguard.android.R
|
||||
import page.onram.wirevpn.R
|
||||
|
||||
/**
|
||||
* Standalone utilities for interacting with the system clipboard.
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.util
|
||||
package page.onram.wirevpn.util
|
||||
|
||||
import android.Manifest
|
||||
import android.content.ContentValues
|
||||
@@ -17,7 +17,7 @@ import androidx.activity.ComponentActivity
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.wireguard.android.R
|
||||
import page.onram.wirevpn.R
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
+11
-11
@@ -2,22 +2,22 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.util
|
||||
package page.onram.wirevpn.util
|
||||
|
||||
import android.content.res.Resources
|
||||
import android.os.RemoteException
|
||||
import com.google.zxing.ChecksumException
|
||||
import com.google.zxing.NotFoundException
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.backend.BackendException
|
||||
import com.wireguard.android.util.RootShell.RootShellException
|
||||
import com.wireguard.config.BadConfigException
|
||||
import com.wireguard.config.InetEndpoint
|
||||
import com.wireguard.config.InetNetwork
|
||||
import com.wireguard.config.ParseException
|
||||
import com.wireguard.crypto.Key
|
||||
import com.wireguard.crypto.KeyFormatException
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.backend.BackendException
|
||||
import page.onram.wirevpn.util.RootShell.RootShellException
|
||||
import page.onram.wirevpn.config.BadConfigException
|
||||
import page.onram.wirevpn.config.InetEndpoint
|
||||
import page.onram.wirevpn.config.InetNetwork
|
||||
import page.onram.wirevpn.config.ParseException
|
||||
import page.onram.wirevpn.crypto.Key
|
||||
import page.onram.wirevpn.crypto.KeyFormatException
|
||||
import java.net.InetAddress
|
||||
|
||||
object ErrorMessages {
|
||||
+3
-3
@@ -3,15 +3,15 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.util
|
||||
package page.onram.wirevpn.util
|
||||
|
||||
import android.content.Context
|
||||
import android.util.TypedValue
|
||||
import androidx.annotation.AttrRes
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.preference.Preference
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.activity.SettingsActivity
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.activity.SettingsActivity
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
|
||||
fun Context.resolveAttribute(@AttrRes attrRes: Int): Int {
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.util
|
||||
package page.onram.wirevpn.util
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.graphics.Bitmap
|
||||
+3
-3
@@ -3,7 +3,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.util
|
||||
package page.onram.wirevpn.util
|
||||
|
||||
import android.icu.text.ListFormatter
|
||||
import android.icu.text.MeasureFormat
|
||||
@@ -11,8 +11,8 @@ import android.icu.text.RelativeDateTimeFormatter
|
||||
import android.icu.util.Measure
|
||||
import android.icu.util.MeasureUnit
|
||||
import android.os.Build
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.R
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.R
|
||||
import java.util.Locale
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
+6
-6
@@ -3,18 +3,18 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.util
|
||||
package page.onram.wirevpn.util
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.net.Uri
|
||||
import android.provider.OpenableColumns
|
||||
import android.util.Log
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import com.wireguard.android.Application
|
||||
import com.wireguard.android.R
|
||||
import com.wireguard.android.fragment.ConfigNamingDialogFragment
|
||||
import com.wireguard.android.model.ObservableTunnel
|
||||
import com.wireguard.config.Config
|
||||
import page.onram.wirevpn.Application
|
||||
import page.onram.wirevpn.R
|
||||
import page.onram.wirevpn.fragment.ConfigNamingDialogFragment
|
||||
import page.onram.wirevpn.model.ObservableTunnel
|
||||
import page.onram.wirevpn.config.Config
|
||||
import kotlinx.coroutines.Deferred
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
+2
-2
@@ -3,13 +3,13 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.util
|
||||
package page.onram.wirevpn.util
|
||||
|
||||
import androidx.datastore.preferences.core.booleanPreferencesKey
|
||||
import androidx.datastore.preferences.core.edit
|
||||
import androidx.datastore.preferences.core.stringPreferencesKey
|
||||
import androidx.datastore.preferences.core.stringSetPreferencesKey
|
||||
import com.wireguard.android.Application
|
||||
import page.onram.wirevpn.Application
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
|
||||
+4
-4
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.viewmodel
|
||||
package page.onram.wirevpn.viewmodel
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Parcel
|
||||
@@ -10,9 +10,9 @@ import android.os.Parcelable
|
||||
import androidx.core.os.ParcelCompat
|
||||
import androidx.databinding.ObservableArrayList
|
||||
import androidx.databinding.ObservableList
|
||||
import com.wireguard.config.BadConfigException
|
||||
import com.wireguard.config.Config
|
||||
import com.wireguard.config.Peer
|
||||
import page.onram.wirevpn.config.BadConfigException
|
||||
import page.onram.wirevpn.config.Config
|
||||
import page.onram.wirevpn.config.Peer
|
||||
|
||||
class ConfigProxy : Parcelable {
|
||||
val `interface`: InterfaceProxy
|
||||
+8
-8
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.viewmodel
|
||||
package page.onram.wirevpn.viewmodel
|
||||
|
||||
import android.os.Parcel
|
||||
import android.os.Parcelable
|
||||
@@ -10,13 +10,13 @@ import androidx.databinding.BaseObservable
|
||||
import androidx.databinding.Bindable
|
||||
import androidx.databinding.ObservableArrayList
|
||||
import androidx.databinding.ObservableList
|
||||
import com.wireguard.android.BR
|
||||
import com.wireguard.config.Attribute
|
||||
import com.wireguard.config.BadConfigException
|
||||
import com.wireguard.config.Interface
|
||||
import com.wireguard.crypto.Key
|
||||
import com.wireguard.crypto.KeyFormatException
|
||||
import com.wireguard.crypto.KeyPair
|
||||
import page.onram.wirevpn.BR
|
||||
import page.onram.wirevpn.config.Attribute
|
||||
import page.onram.wirevpn.config.BadConfigException
|
||||
import page.onram.wirevpn.config.Interface
|
||||
import page.onram.wirevpn.crypto.Key
|
||||
import page.onram.wirevpn.crypto.KeyFormatException
|
||||
import page.onram.wirevpn.crypto.KeyPair
|
||||
|
||||
class InterfaceProxy : BaseObservable, Parcelable {
|
||||
@get:Bindable
|
||||
+5
-5
@@ -2,7 +2,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.viewmodel
|
||||
package page.onram.wirevpn.viewmodel
|
||||
|
||||
import android.os.Parcel
|
||||
import android.os.Parcelable
|
||||
@@ -11,10 +11,10 @@ import androidx.databinding.Bindable
|
||||
import androidx.databinding.Observable
|
||||
import androidx.databinding.Observable.OnPropertyChangedCallback
|
||||
import androidx.databinding.ObservableList
|
||||
import com.wireguard.android.BR
|
||||
import com.wireguard.config.Attribute
|
||||
import com.wireguard.config.BadConfigException
|
||||
import com.wireguard.config.Peer
|
||||
import page.onram.wirevpn.BR
|
||||
import page.onram.wirevpn.config.Attribute
|
||||
import page.onram.wirevpn.config.BadConfigException
|
||||
import page.onram.wirevpn.config.Peer
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
class PeerProxy : BaseObservable, Parcelable {
|
||||
+2
-2
@@ -2,12 +2,12 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.widget
|
||||
package page.onram.wirevpn.widget
|
||||
|
||||
import android.text.InputFilter
|
||||
import android.text.SpannableStringBuilder
|
||||
import android.text.Spanned
|
||||
import com.wireguard.crypto.Key
|
||||
import page.onram.wirevpn.crypto.Key
|
||||
|
||||
/**
|
||||
* InputFilter for entering WireGuard private/public keys encoded with base64.
|
||||
+2
-2
@@ -2,13 +2,13 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.widget
|
||||
package page.onram.wirevpn.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import android.widget.RelativeLayout
|
||||
import com.wireguard.android.R
|
||||
import page.onram.wirevpn.R
|
||||
|
||||
class MultiselectableRelativeLayout @JvmOverloads constructor(
|
||||
context: Context? = null,
|
||||
+2
-2
@@ -2,12 +2,12 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.widget
|
||||
package page.onram.wirevpn.widget
|
||||
|
||||
import android.text.InputFilter
|
||||
import android.text.SpannableStringBuilder
|
||||
import android.text.Spanned
|
||||
import com.wireguard.android.backend.Tunnel
|
||||
import page.onram.wirevpn.backend.Tunnel
|
||||
|
||||
/**
|
||||
* InputFilter for entering WireGuard configuration names (Linux interface names).
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.widget
|
||||
package page.onram.wirevpn.widget
|
||||
|
||||
import android.animation.ObjectAnimator
|
||||
import android.content.res.ColorStateList
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
* Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.wireguard.android.widget
|
||||
package page.onram.wirevpn.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Parcelable
|
||||
+2
-2
@@ -3,13 +3,13 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.wireguard.android.widget
|
||||
package page.onram.wirevpn.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import com.google.android.material.card.MaterialCardView
|
||||
import com.wireguard.android.R
|
||||
import page.onram.wirevpn.R
|
||||
|
||||
class TvCardView(context: Context?, attrs: AttributeSet?) : MaterialCardView(context, attrs) {
|
||||
var isUp: Boolean = false
|
||||
@@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ Copyright © 2017-2025 WireGuard LLC. All Rights Reserved.
|
||||
~ SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
@@ -7,32 +6,11 @@
|
||||
android:height="108dp"
|
||||
android:viewportWidth="2160"
|
||||
android:viewportHeight="2160">
|
||||
<group
|
||||
android:scaleX="1"
|
||||
android:scaleY="-1"
|
||||
android:translateX="630"
|
||||
android:translateY="1750">
|
||||
<group>
|
||||
<clip-path android:pathData="M0 1347.452l773.449 0L773.449 0 0 0Z" />
|
||||
<group
|
||||
android:translateX="349.0264"
|
||||
android:translateY="572.616">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M0 0c-12.169 -6.44 -21.541 -11.184 -30.71 -16.292 -37.523 -20.902 -69.603 -48.262 -95.162 -82.767 -8.264 -11.156 -13.945 -12.055 -26.528 -4.36 -163.692 100.101 -174.212 351.318 4.549 460.681 139.045 85.064 316.68 33.074 383.242 -94.85 12.614 -24.244 14.218 -61.567 6.228 -87 -27.582 -87.807 -92.71 -137.049 -182.1 -157.968 26.353 22.561 47.329 48.145 54.006 83.494 6.725 35.606 -0.388 67.807 -21.041 97.072 -31.371 44.451 -92.029 62.74 -142.721 43.492 -55.035 -20.896 -85.181 -71.123 -79.747 -132.863C-124.935 51.288 -81.419 14.12 0 0" />
|
||||
</group>
|
||||
<group android:translateY="285.9856">
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M870.2 936.3A209.8 209.8 0 0 1 1289.8 936.3V1038.3H1217.0V936.3A137.0 137.0 0 0 0 943.0 936.3V1038.3H870.2Z" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M0 0C13.148 88.712 117.033 170.407 204.881 161.087 177.673 124.291 165.104 82.664 162.071 41.145 132.88 35.769 105.368 32.152 78.66 25.373 52.364 18.698 26.882 8.816 0 0" />
|
||||
</group>
|
||||
<group
|
||||
android:translateX="580.2814"
|
||||
android:translateY="1243.915">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M0 0C4.917 3.762 9.98 6.922 16.085 1.891 19.557 -0.97 22.93 -3.933 27.136 -7.523 21.915 -10.28 17.676 -12.599 13.355 -14.779 7.307 -17.83 2.785 -15.792 -0.877 -10.972 -3.847 -7.062 -4.384 -3.354 0 0m71.552 -730.934c-7.403 6.401 -12.094 6.399 -20.775 0.845 -29.454 -18.844 -59.602 -36.696 -90.239 -53.556 -17.562 -9.664 -36.584 -16.675 -58.61 -26.516 7.564 -1.952 11.203 -2.865 14.829 -3.83 82.337 -21.913 126.326 -94.196 106.841 -175.157 -17.329 -71.999 -90.422 -118.033 -161.255 -105.889 -59.053 10.125 -110.601 59.161 -119.21 117.917 -9.382 64.032 22.508 125.618 79.246 151.417 31.472 14.31 63.79 26.766 95.186 41.229 35.697 16.445 74.29 29.435 105.458 52.322 77.355 56.801 125.124 135.006 143.747 229.401 11.155 56.543 10.401 112.837 -15.467 166.524 -19.851 41.202 -52.429 71.133 -87.429 98.447 -36.018 28.108 -74.148 53.518 -110.002 81.821 -9.702 7.659 -16.252 20.865 -20.742 32.84 -1.903 5.075 4.287 18.838 8.426 19.581 21.985 3.946 44.45 5.978 66.818 6.823 25.82 0.974 51.713 0.148 77.571 -0.192 5.606 -0.073 13.217 0.653 16.439 -2.514 13.394 -13.167 23.897 -4.697 33.194 3.965 7.823 7.29 13.399 16.992 19.62 25.168 -3.775 0.555 -11.519 2.505 -19.304 2.689 -26.003 0.616 -52.035 0.221 -78.021 1.176 -4.63 0.17 -9.09 4.935 -13.629 7.579 4.776 1.898 9.537 5.399 14.33 5.444 44.849 0.421 89.703 0.25 134.594 0.25 0.052 23.336 -31.136 55.291 -58.846 63.95 -0.207 -3.158 -0.4 -6.097 -0.606 -9.233C106.184 0.913 79.16 1.426 54.61 14.481 48.141 17.921 43.912 25.57 38.647 31.279 32.019 38.467 26.58 47.709 18.5 52.399 1.934 62.014 -16.148 68.982 -33.431 77.4c-61.418 29.914 -126.278 28.862 -195.946 22.484 41.644 -9.693 79.255 -18.447 116.865 -27.202 -0.428 -2.286 -0.856 -4.573 -1.284 -6.86 -50.308 -6.74 -97.898 11.71 -147.101 18.545 17.831 -10.443 35.897 -20.152 54.561 -28.527 18.965 -8.51 38.52 -15.705 58.076 -23.58 -24.845 -21.229 -49.776 -25.887 -81.008 -18.751 -17.072 3.901 -35.132 5.972 -52.564 5.121 -18.006 -0.88 -36.141 -5.311 -52.491 -16.238 17.507 -8.875 33.643 -16.24 48.864 -25.165 6.277 -3.681 13.473 -9.93 15.223 -16.377 4.191 -15.44 5.402 -31.689 7.817 -47.623 -28.667 -3.247 -79.074 -32.4 -89.261 -51.373 44.059 -8.478 92.031 1.777 134.06 -26.617 -13.844 -10.477 -46.085 -23.507 -57.911 -32.457 14.621 -3.831 48.498 -1.955 61.751 -1.057 11.157 0.756 16.306 1.029 20.881 -2.735l129.701 -101.541c13.638 -10.994 68.719 -63.131 83.098 -95.903 12.241 -27.902 13.739 -51.638 13.736 -57.431 -0.01 -15.541 -1.917 -39.876 -12.605 -67.022 -4.488 -11.399 -17.658 -36.65 -44.826 -66.083 -42.107 -45.617 -96.27 -70.274 -155.501 -82.487 -137.722 -28.395 -252.153 -175.469 -219.85 -337.61 37.714 -189.296 246.646 -291.784 417.386 -201.739 110.359 58.201 168.871 171.751 153.193 295.356 -9.471 74.672 -43.252 135.578 -99.881 184.538" />
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M928.4 914.4H1231.6A139.9 139.9 0 0 1 1371.4 1054.3V1251.4A139.9 139.9 0 0 1 1231.6 1391.3H928.4A139.9 139.9 0 0 1 788.6 1251.4V1054.3A139.9 139.9 0 0 1 928.4 914.4ZM930.2 1311.2L1020.8 1082.4L1080.0 1226.2L1139.2 1082.4L1229.8 1311.2L1291.6 1280.6L1136.5 1013.5L1080.0 1157.3L1023.5 1013.5L868.4 1280.6Z" />
|
||||
</vector>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/list_fragment"
|
||||
android:name="com.wireguard.android.fragment.TunnelListFragment"
|
||||
android:name="page.onram.wirevpn.fragment.TunnelListFragment"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="2"
|
||||
|
||||
@@ -10,15 +10,15 @@
|
||||
|
||||
<import type="android.view.View" />
|
||||
|
||||
<import type="com.wireguard.android.model.ApplicationData" />
|
||||
<import type="page.onram.wirevpn.model.ApplicationData" />
|
||||
|
||||
<variable
|
||||
name="fragment"
|
||||
type="com.wireguard.android.fragment.AppListDialogFragment" />
|
||||
type="page.onram.wirevpn.fragment.AppListDialogFragment" />
|
||||
|
||||
<variable
|
||||
name="appData"
|
||||
type="com.wireguard.android.databinding.ObservableKeyedArrayList<String, ApplicationData>" />
|
||||
type="page.onram.wirevpn.databinding.ObservableKeyedArrayList<String, ApplicationData>" />
|
||||
</data>
|
||||
|
||||
<LinearLayout
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
|
||||
<data>
|
||||
|
||||
<import type="com.wireguard.android.model.ApplicationData" />
|
||||
<import type="page.onram.wirevpn.model.ApplicationData" />
|
||||
|
||||
<variable
|
||||
name="collection"
|
||||
type="com.wireguard.android.databinding.ObservableKeyedArrayList<String, com.wireguard.android.model.ApplicationData>" />
|
||||
type="page.onram.wirevpn.databinding.ObservableKeyedArrayList<String, page.onram.wirevpn.model.ApplicationData>" />
|
||||
|
||||
<variable
|
||||
name="key"
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
<variable
|
||||
name="item"
|
||||
type="com.wireguard.android.model.ApplicationData" />
|
||||
type="page.onram.wirevpn.model.ApplicationData" />
|
||||
</data>
|
||||
|
||||
<LinearLayout
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
<data>
|
||||
|
||||
<import type="com.wireguard.android.widget.NameInputFilter" />
|
||||
<import type="page.onram.wirevpn.widget.NameInputFilter" />
|
||||
</data>
|
||||
|
||||
<FrameLayout
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/list_detail_container"
|
||||
android:name="com.wireguard.android.fragment.TunnelListFragment"
|
||||
android:name="page.onram.wirevpn.fragment.TunnelListFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:tag="LIST" />
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/editor_fragment"
|
||||
android:name="com.wireguard.android.fragment.TunnelEditorFragment"
|
||||
android:name="page.onram.wirevpn.fragment.TunnelEditorFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user