summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 6de3437db2a2c2d73a7a7c835fa6aa598ea9919b (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
# Maintainer: Pete Alexandrou <pete@ozmartians.com>
pkgname=openvpn-xor-git
_pkgname=openvpn
pkgver=2.4.1
pkgrel=1
pkgdesc='OpenVPN with XOR patch to bypass DPI monitoring in places like China (also known as OpenVPN stealth/scramble mode)'
arch=('i686' 'x86_64')
url='https://github.com/Tunnelblick/Tunnelblick/tree/master/third_party/sources/openvpn'
depends=('openssl' 'lzo' 'iproute2' 'libsystemd' 'pkcs11-helper')
optdepends=('easy-rsa')
makedepends=('git' 'systemd')
conflicts=('openvpn' 'openvpn-dev' 'openvpn-git')
provides=('openvpn=2.4.1' 'openvpn-dev')
license=('custom')
source=("https://github.com/${_pkgname}/${_pkgname}/archive/v${pkgver}.tar.gz"
	   "https://raw.githubusercontent.com/Tunnelblick/Tunnelblick/master/third_party/sources/openvpn/openvpn-${pkgver}/patches/02-tunnelblick-openvpn_xorpatch-a.diff"
	   "https://raw.githubusercontent.com/Tunnelblick/Tunnelblick/master/third_party/sources/openvpn/openvpn-${pkgver}/patches/03-tunnelblick-openvpn_xorpatch-b.diff"
	   "https://raw.githubusercontent.com/Tunnelblick/Tunnelblick/master/third_party/sources/openvpn/openvpn-${pkgver}/patches/04-tunnelblick-openvpn_xorpatch-c.diff"
	   "https://raw.githubusercontent.com/Tunnelblick/Tunnelblick/master/third_party/sources/openvpn/openvpn-${pkgver}/patches/05-tunnelblick-openvpn_xorpatch-d.diff"
	   "https://raw.githubusercontent.com/Tunnelblick/Tunnelblick/master/third_party/sources/openvpn/openvpn-${pkgver}/patches/06-tunnelblick-openvpn_xorpatch-e.diff"
          "openvpn-xor-watermark.diff")
sha256sums=('1ff76af8175ee86878ab58a42f7ef829f07443b486398a29e7627c21b1c8aa6f'
               'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP'
               '3eb01176fff1d3b450b15f280a536323fc5161f3cfa0ee5fcccadeacc7ad97c9')

prepare() {
    cd "${_pkgname}-${pkgver}"/

    # regenerate configure script
    autoreconf -vi

    # apply Tunnelblick patches to the source
    git apply "${startdir}/02-tunnelblick-openvpn_xorpatch-a.diff"
    git apply "${startdir}/03-tunnelblick-openvpn_xorpatch-b.diff"
    git apply "${startdir}/04-tunnelblick-openvpn_xorpatch-c.diff"
    git apply "${startdir}/05-tunnelblick-openvpn_xorpatch-d.diff"
    git apply "${startdir}/06-tunnelblick-openvpn_xorpatch-e.diff"

    # apply XOR watermark patch to "brand" binary with XOR signature in version header
    git apply "${startdir}/openvpn-xor-watermark.diff"
}

build() {
    cd "${_pkgname}-${pkgver}"/

    ./configure \
    	--prefix=/usr \
    	--sbindir=/usr/bin \
    	--enable-iproute2 \
    	--enable-pkcs11 \
    	--enable-plugins \
    	--enable-systemd \
    	--enable-x509-alt-username

    make
}

check() {
	cd "${_pkgname}-${pkgver}"/
	make check
}

package() {
	cd "${_pkgname}-${pkgver}"/

	# Install openvpn
	make DESTDIR="${pkgdir}" install

	# Create empty configuration directories
	install -d -m0750 -g 90 "${pkgdir}"/etc/openvpn/{client,server}

	# Install examples
	install -d -m0755 "${pkgdir}"/usr/share/openvpn
	cp -r sample/sample-config-files "${pkgdir}"/usr/share/openvpn/examples

	# Install license
	install -d -m0755 "${pkgdir}"/usr/share/licenses/openvpn/
	ln -sf /usr/share/doc/openvpn/{COPYING,COPYRIGHT.GPL} "${pkgdir}"/usr/share/licenses/openvpn/

	# Install contrib
	for FILE in $(find contrib -type f); do
		case "$(file --brief --mime-type "${FILE}")" in
			"text/x-shellscript") install -D -m0755 "${FILE}" "${pkgdir}/usr/share/openvpn/${FILE}" ;;
			*) install -D -m0644 "${FILE}" "${pkgdir}/usr/share/openvpn/${FILE}" ;;
		esac
	done
}