summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 5568466e733e7359a716d304980074e80d90b934 (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
107
108
109
# Maintainer: Pete Alexandrou <pete@ozmartians.com>
pkgname=openvpn-xor
pkgver=2.6.17
pkgrel=1
pkgdesc='OpenVPN with XOR patch to bypass DPI monitoring in places like China (also known as OpenVPN stealth/scramble mode)'
arch=('x86_64')
url='https://github.com/openvpn/openvpn'
depends=('openssl' 'lzo' 'iproute2' 'libsystemd' 'pkcs11-helper' 'python-docutils')
optdepends=('easy-rsa' 'pam' 'qopenvpn')
makedepends=('git' 'systemd' 'make' 'pkgconf' 'automake' 'autoconf')
conflicts=('openvpn' 'openvpn-dev' 'openvpn-git' 'openvpn-xor-patched' 'libressl')
provides=('openvpn=2.6.17' 'openvpn-dev')
license=('custom')
source=("https://github.com/openvpn/openvpn/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"
        "https://raw.githubusercontent.com/Tunnelblick/Tunnelblick/master/third_party/sources/openvpn/openvpn-${pkgver}/patches/10-route-gateway-dhcp.diff"
        "systemd.diff"
        "openvpn-xor-watermark.diff")
sha256sums=('bfb421053d3f6610d4e1779a49b2e2de49f6ae928ae19b5516b705f256ca8b6d'
            'ad4fd8266dfb05069c5fc39e5fd08a12cad1c0db3eb578bd9acea061012f6aea'
            '3df3c0c19b32c3a2773fa4a537a4137a0da9cdaf6e4a50e7ce226dad7f5fb88d'
            'e73f44a106a25797ff21d9c55d6b6468c3548b4c902eba89df232f8171d18244'
            '468df92c0397445558c5d1869a7d54c21de907a7cf5064db0ee39c6f94fadbab'
            '5f37bd3a7f6381abed1e2915ddef52f760aaa7559215b0d4d11f13f12e9ecb1e'
            '811802d69cd4a6e2f4b2c9d71e1ce0bc503f5a781f4f626a1071b324520515d3'
            '6e1d0147076ce0221e4e22e0a10d70c17eaa3740fe21461aff931c107416564f'
            '3f69857f9b2c27c3a391a4592b6a264d4cffe4d35166f1fcdfddac632f2b7970')
prepare() {
    cd "openvpn-${pkgver}"/

    # patch systemd
    git apply "${startdir}/systemd.diff"

    # 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"
    git apply "${startdir}/10-route-gateway-dhcp.diff"

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

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

    autoreconf -vi

    ./configure \
        --prefix=/usr \
        --sbindir=/usr/bin \
        --enable-iproute2 \
        --enable-pkcs11 \
        --enable-plugins \
        --enable-systemd \
        --enable-x509-alt-username \
	--enable-static=yes \
	--enable-shared \
	--disable-debug \
	--disable-plugin-auth-pam \
	--disable-dependency-tracking

    make
}

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

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

    # Install openvpn
    make CFLAGS="-march=native" 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

    # enable scheduling priority changes (nice)
    sed -i '14s/$/ CAP_SYS_NICE/' "distro/systemd/openvpn-client@.service"
    sed -i '15s/$/ CAP_SYS_NICE/' "distro/systemd/openvpn-server@.service"

    # Install systemd files
    install -D -m0644 distro/systemd/openvpn-client@.service ${pkgdir}/usr/lib/systemd/system/openvpn-client@.service
    install -D -m0644 distro/systemd/openvpn-server@.service ${pkgdir}/usr/lib/systemd/system/openvpn-server@.service
}