mirror of
git://f0xx.org/android_cast
synced 2026-07-29 05:58:14 +03:00
wireguard -> third-party
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -8,3 +8,6 @@
|
|||||||
[submodule "third-party/speex"]
|
[submodule "third-party/speex"]
|
||||||
path = third-party/speex
|
path = third-party/speex
|
||||||
url = https://github.com/xiph/speex/
|
url = https://github.com/xiph/speex/
|
||||||
|
[submodule "third-party/wireguard-android"]
|
||||||
|
path = third-party/wireguard-android
|
||||||
|
url = https://git.zx2c4.com/wireguard-android
|
||||||
|
|||||||
@@ -47,36 +47,44 @@ gitea_resolve_push_token() {
|
|||||||
printf '%s' "$GITEA_ADMIN_TOKEN"
|
printf '%s' "$GITEA_ADMIN_TOKEN"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
_token=""
|
|
||||||
_token="$(gitea_cli "admin" "user" "generate-access-token" \
|
|
||||||
"--username" "$GITEA_OWNER" \
|
|
||||||
"--token-name" "mirror-$$" \
|
|
||||||
"--scopes" "all" \
|
|
||||||
"--raw" 2>/dev/null)" && [ -n "$_token" ] && printf '%s' "$_token" && return 0
|
|
||||||
_admin="$(gitea_pick_owner_username)"
|
_admin="$(gitea_pick_owner_username)"
|
||||||
if [ -n "$_admin" ] && [ "$_admin" != "$GITEA_OWNER" ]; then
|
[ -n "$_admin" ] || return 1
|
||||||
|
_token=""
|
||||||
_token="$(gitea_cli "admin" "user" "generate-access-token" \
|
_token="$(gitea_cli "admin" "user" "generate-access-token" \
|
||||||
"--username" "$_admin" \
|
"--username" "$_admin" \
|
||||||
"--token-name" "mirror-$$" \
|
"--token-name" "mirror-$$" \
|
||||||
"--scopes" "all" \
|
"--scopes" "all" \
|
||||||
"--raw" 2>/dev/null)" && [ -n "$_token" ] && printf '%s' "$_token" && return 0
|
"--raw" 2>/dev/null)" && [ -n "$_token" ] && printf '%s' "$_token" && return 0
|
||||||
fi
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
gitea_owner_uid_for() {
|
gitea_owner_uid_for() {
|
||||||
|
gitea_entity_uid_for "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# UID for migrate/API owner — user or organization (not the same as /users/{org}).
|
||||||
|
gitea_entity_uid_for() {
|
||||||
_owner="$1"
|
_owner="$1"
|
||||||
command -v curl >/dev/null 2>&1 || return 1
|
command -v curl >/dev/null 2>&1 || return 1
|
||||||
_token="${GITEA_ADMIN_TOKEN:-}"
|
_token="${GITEA_ADMIN_TOKEN:-}"
|
||||||
[ -n "$_token" ] || _token="$(gitea_resolve_push_token)" || return 1
|
[ -n "$_token" ] || _token="$(gitea_resolve_push_token)" || return 1
|
||||||
_api="$(gitea_api_base)"
|
_api="$(gitea_api_base)"
|
||||||
_uid="$(curl -sS "$_api/users/$_owner" \
|
_json=""
|
||||||
-H "Authorization: token $_token" \
|
if curl -sS -o /dev/null -w '%{http_code}' "$_api/orgs/$_owner" \
|
||||||
| awk -F'"' '/"id"/ { print $4; exit }')"
|
-H "Authorization: token $_token" | grep -q '^200'; then
|
||||||
|
_json="$(curl -sS "$_api/orgs/$_owner" -H "Authorization: token $_token")"
|
||||||
|
else
|
||||||
|
_json="$(curl -sS "$_api/users/$_owner" -H "Authorization: token $_token")"
|
||||||
|
fi
|
||||||
|
_uid="$(printf '%s' "$_json" | awk -F'"' '/"id":/ { print $4; exit }')"
|
||||||
[ -n "$_uid" ] || return 1
|
[ -n "$_uid" ] || return 1
|
||||||
printf '%s' "$_uid"
|
printf '%s' "$_uid"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gitea_owner_is_org() {
|
||||||
|
gitea_org_exists "$1" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
gitea_create_repo_cli() {
|
gitea_create_repo_cli() {
|
||||||
_owner="$1"
|
_owner="$1"
|
||||||
_repo="$2"
|
_repo="$2"
|
||||||
@@ -104,7 +112,7 @@ gitea_migrate_mirror_api() {
|
|||||||
command -v curl >/dev/null 2>&1 || return 1
|
command -v curl >/dev/null 2>&1 || return 1
|
||||||
_token="${GITEA_ADMIN_TOKEN:-}"
|
_token="${GITEA_ADMIN_TOKEN:-}"
|
||||||
[ -n "$_token" ] || _token="$(gitea_resolve_push_token)" || return 1
|
[ -n "$_token" ] || _token="$(gitea_resolve_push_token)" || return 1
|
||||||
_uid="$(gitea_owner_uid_for "$_owner")" || return 1
|
_uid="$(gitea_entity_uid_for "$_owner")" || return 1
|
||||||
|
|
||||||
_api="$(gitea_api_base)"
|
_api="$(gitea_api_base)"
|
||||||
_payload=$(cat <<EOF
|
_payload=$(cat <<EOF
|
||||||
@@ -204,7 +212,17 @@ gitea_list_repos_api() {
|
|||||||
fi
|
fi
|
||||||
curl -sS "$_list_url" \
|
curl -sS "$_list_url" \
|
||||||
-H "Authorization: token $_token" \
|
-H "Authorization: token $_token" \
|
||||||
| awk -F'"' '/"name":/ { print $4 }'
|
| awk -F'"' '
|
||||||
|
/"name":/ && !/"owner":/ && !/"full_name":/ {
|
||||||
|
for (i = 1; i <= NF; i++) {
|
||||||
|
if ($i == "\"name\":" && $(i+1) ~ /^"/) {
|
||||||
|
gsub(/^"/, "", $(i+1)); gsub(/",?$/, "", $(i+1))
|
||||||
|
if ($(i+1) != "" && $(i+1) != "null") print $(i+1)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'
|
||||||
}
|
}
|
||||||
|
|
||||||
gitea_repo_get_api() {
|
gitea_repo_get_api() {
|
||||||
@@ -309,6 +327,13 @@ gitea_mirror_pull_repo() {
|
|||||||
printf '[gitea-mirror] migrate rejected for %s/%s but repo missing — trying git push\n' \
|
printf '[gitea-mirror] migrate rejected for %s/%s but repo missing — trying git push\n' \
|
||||||
"$_owner" "$_repo" >&2
|
"$_owner" "$_repo" >&2
|
||||||
fi
|
fi
|
||||||
|
if gitea_owner_is_org "$_owner"; then
|
||||||
|
printf '[gitea-mirror] API migrate failed for org %s/%s — git push fallback disabled (orgs cannot push-to-create)\n' \
|
||||||
|
"$_owner" "$_repo" >&2
|
||||||
|
printf '[gitea-mirror] Set GITEA_ADMIN_TOKEN or run as root; check [migrations] in app.ini\n' >&2
|
||||||
|
[ -n "$_local_work" ] && gitea_rm_path "$_local_work"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
mkdir -p "$_work_dir"
|
mkdir -p "$_work_dir"
|
||||||
gitea_mirror_push_git "$_owner" "$_repo" "$_clone_url" "$_work_dir" || _rc=1
|
gitea_mirror_push_git "$_owner" "$_repo" "$_clone_url" "$_work_dir" || _rc=1
|
||||||
gitea_rm_path "$_work_dir/${_repo}.mirror.git"
|
gitea_rm_path "$_work_dir/${_repo}.mirror.git"
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ mirror_submodules_if_missing() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
_need=0
|
_need=0
|
||||||
for _sub in libvpx opus speex; do
|
for _sub in libvpx opus speex wireguard-android; do
|
||||||
gitea_repo_exists_api "$GITEA_ORG" "$_sub" && continue
|
gitea_repo_exists_api "$GITEA_ORG" "$_sub" && continue
|
||||||
_need=1
|
_need=1
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -170,10 +170,9 @@ gitea_submodule_collect_entries() {
|
|||||||
gitea_submodule_discover_from_gitmodules "$_repo_dir/.gitmodules" "$_repo_dir" "$_ref" >> "$_work" 2>/dev/null || true
|
gitea_submodule_discover_from_gitmodules "$_repo_dir/.gitmodules" "$_repo_dir" "$_ref" >> "$_work" 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Use defaults only when .gitmodules produced nothing (never merge extras on top).
|
||||||
if [ ! -s "$_work" ] && [ -n "$_defaults" ] && [ -r "$_defaults" ]; then
|
if [ ! -s "$_work" ] && [ -n "$_defaults" ] && [ -r "$_defaults" ]; then
|
||||||
gitea_submodule_load_defaults "$_defaults" "$_repo_dir" "$_ref" >> "$_work" 2>/dev/null || true
|
gitea_submodule_load_defaults "$_defaults" "$_repo_dir" "$_ref" >> "$_work" 2>/dev/null || true
|
||||||
elif [ -n "$_defaults" ] && [ -r "$_defaults" ]; then
|
|
||||||
gitea_submodule_load_defaults "$_defaults" "$_repo_dir" "$_ref" >> "$_work" 2>/dev/null || true
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
awk -F'|' '!seen[$1]++' "$_work"
|
awk -F'|' '!seen[$1]++' "$_work"
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
# Format: repo_name|upstream_clone_url|submodule_path[|branch]
|
# Format: repo_name|upstream_clone_url|submodule_path[|branch]
|
||||||
# Lines starting with # are ignored. Add local git:// entries at the bottom.
|
# Lines starting with # are ignored. Add local git:// entries at the bottom.
|
||||||
|
|
||||||
|
# Fallback only when .gitmodules is missing on BE. Canonical list: .gitmodules in repo.
|
||||||
libvpx|https://chromium.googlesource.com/webm/libvpx|third-party/libvpx|main
|
libvpx|https://chromium.googlesource.com/webm/libvpx|third-party/libvpx|main
|
||||||
opus|https://github.com/xiph/opus|third-party/opus
|
opus|https://github.com/xiph/opus|third-party/opus
|
||||||
speex|https://github.com/xiph/speex/|third-party/speex
|
speex|https://github.com/xiph/speex/|third-party/speex
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ The app loads `libandroidcast_codecs.so` for availability probes and future soft
|
|||||||
git submodule update --init third-party/libvpx
|
git submodule update --init third-party/libvpx
|
||||||
git submodule update --init third-party/opus
|
git submodule update --init third-party/opus
|
||||||
git submodule update --init third-party/speex
|
git submodule update --init third-party/speex
|
||||||
|
git submodule update --init third-party/wireguard-android
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Build static libs per ABI (NDK auto-detected via `scripts/android-ndk.sh`):
|
2. Build static libs per ABI (NDK auto-detected via `scripts/android-ndk.sh`):
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Initialize wireguard-android submodule for embedded tunnel (optional but recommended for production WG).
|
# Initialize wireguard-android submodule (third-party/wireguard-android in .gitmodules).
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||||
cd "$ROOT"
|
cd "$ROOT"
|
||||||
if [[ ! -d third-party/wireguard-android/.git ]]; then
|
if ! grep -q 'third-party/wireguard-android' .gitmodules 2>/dev/null; then
|
||||||
git submodule add https://git.zx2c4.com/wireguard-android third-party/wireguard-android || \
|
echo "error: .gitmodules missing third-party/wireguard-android — use repo .gitmodules from git" >&2
|
||||||
git clone --depth 1 https://git.zx2c4.com/wireguard-android third-party/wireguard-android
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
git submodule sync third-party/wireguard-android
|
||||||
git submodule update --init --recursive third-party/wireguard-android
|
git submodule update --init --recursive third-party/wireguard-android
|
||||||
echo "wireguard-android ready under third-party/wireguard-android"
|
echo "wireguard-android ready under third-party/wireguard-android"
|
||||||
echo "Gradle includes :tunnel when third-party/wireguard-android/tunnel exists."
|
echo "Gradle includes :tunnel when third-party/wireguard-android/tunnel exists."
|
||||||
|
|||||||
9
third-party/README.md
vendored
9
third-party/README.md
vendored
@@ -1,15 +1,16 @@
|
|||||||
# Third-party vendored dependencies
|
# Third-party vendored dependencies
|
||||||
|
|
||||||
## wireguard-android (optional Gradle module)
|
## wireguard-android (git submodule)
|
||||||
|
|
||||||
Remote access WireGuard v1 can use the in-app `RemoteAccessVpnService` fallback (TUN only).
|
Listed in `.gitmodules` like libvpx/opus/speex. Initialize after clone:
|
||||||
For full userspace WireGuard crypto/data plane, initialize the upstream tunnel library:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
git submodule update --init third-party/wireguard-android
|
||||||
|
# or:
|
||||||
bash scripts/init-wireguard-submodule.sh
|
bash scripts/init-wireguard-submodule.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Then build with the `:tunnel` module (auto-included when present):
|
Build with the `:tunnel` module (auto-included when present):
|
||||||
|
|
||||||
- Submodule path: `third-party/wireguard-android/`
|
- Submodule path: `third-party/wireguard-android/`
|
||||||
- Gradle module: `third-party/wireguard-android/tunnel`
|
- Gradle module: `third-party/wireguard-android/tunnel`
|
||||||
|
|||||||
Reference in New Issue
Block a user