blob: ee308b8e8e469c9f62b9b8371c376232609f4310 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# Maintainer: Vladislav Minakov <v@minakov.pro>
pkgbase=aivpn
pkgname=('aivpn-client' 'aivpn-server' 'aivpn-kernel-dkms')
pkgver=0.9.2
pkgrel=1
arch=('x86_64')
url="https://github.com/infosave2007/aivpn"
license=('MIT')
makedepends=('rust' 'cargo')
source=(
"$pkgbase-$pkgver.tar.gz::https://github.com/infosave2007/aivpn/archive/refs/tags/v${pkgver}.tar.gz"
'aivpn-server.service'
'aivpn-server.sysusers'
'aivpn-server.tmpfiles'
'aivpn-server.install'
'aivpn-client@.service'
)
sha512sums=('SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP')
prepare() {
cd "$pkgbase-$pkgver"
export RUSTUP_TOOLCHAIN=stable
cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
}
build() {
cd "$pkgbase-$pkgver"
export RUSTUP_TOOLCHAIN=stable
export CARGO_TARGET_DIR=target
cargo build --frozen --release --bin aivpn-server
cargo build --frozen --release --bin aivpn-client
}
package_aivpn-client() {
pkgdesc='AIVPN client — connects to an aivpn-server endpoint'
depends=()
optdepends=('aivpn-kernel-dkms: optional kernel-accelerated data path')
install -Dm755 "$pkgbase-$pkgver/target/release/aivpn-client" \
"$pkgdir/usr/bin/aivpn-client"
install -Dm644 'aivpn-client@.service' \
"$pkgdir/usr/lib/systemd/system/aivpn-client@.service"
install -dm750 "$pkgdir/etc/aivpn/keys"
}
package_aivpn-server() {
pkgdesc='AIVPN server — gateway with traffic mimicry and DPI evasion'
depends=()
optdepends=('aivpn-kernel-dkms: optional kernel-accelerated data path')
backup=(
'etc/aivpn/server.json'
'etc/aivpn/clients.json'
)
install='aivpn-server.install'
install -Dm755 "$pkgbase-$pkgver/target/release/aivpn-server" \
"$pkgdir/usr/bin/aivpn-server"
install -Dm644 'aivpn-server.service' \
"$pkgdir/usr/lib/systemd/system/aivpn-server.service"
install -Dm644 'aivpn-server.sysusers' \
"$pkgdir/usr/lib/sysusers.d/aivpn-server.conf"
install -Dm644 'aivpn-server.tmpfiles' \
"$pkgdir/usr/lib/tmpfiles.d/aivpn-server.conf"
install -Dm640 "$pkgbase-$pkgver/deploy/config/server.json.example" \
"$pkgdir/etc/aivpn/server.json"
# Empty client DB placeholder — preserved across upgrades via backup=
echo '{}' | install -Dm640 /dev/stdin \
"$pkgdir/etc/aivpn/clients.json"
local mask
for mask in "$pkgbase-$pkgver/assets/masks/"*.json; do
install -Dm644 "$mask" \
"$pkgdir/var/lib/aivpn/masks/$(basename "$mask")"
done
}
package_aivpn-kernel-dkms() {
pkgdesc='AIVPN kernel module (DKMS) — in-kernel fast path (Linux 6.1+, CONFIG_RUST=y required)'
arch=('any')
depends=('dkms')
optdepends=(
'linux-headers: build against the default kernel'
'linux-lts-headers: build against linux-lts'
'rust-bindgen: required for Rust-for-Linux module compilation'
'clang: optional — enables XDP fast-path filter'
)
local ksrc="$pkgbase-$pkgver/platforms/linux-kernel"
local dst="$pkgdir/usr/src/aivpn-$pkgver"
install -dm755 "$dst"
cp -r "$ksrc/src" "$dst/"
cp -r "$ksrc/include" "$dst/" 2>/dev/null || true
cp -r "$ksrc/scripts" "$dst/" 2>/dev/null || true
install -Dm644 "$ksrc/Makefile" "$dst/Makefile"
install -Dm644 "$ksrc/Kbuild" "$dst/Kbuild"
sed "s/@VERSION@/$pkgver/g" "$ksrc/dkms.conf" > "$dst/dkms.conf"
chmod 644 "$dst/dkms.conf"
}
|