Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • m1ghtfr3e/bitmask-vpn
  • leap/bitmask-vpn
  • meskio/bitmask-vpn
  • kali/bitmask-vpn
  • nsheep/bitmask-vpn
  • nilesh/bitmask-vpn
  • micah/bitmask-vpn
  • kwadronaut/bitmask-vpn
  • th/bitmask-vpn
  • wxl/bitmask-vpn
  • Nowa-Ammerlaan/bitmask-vpn
  • elijah/bitmask-vpn
  • happysalada/bitmask-vpn
  • JUZZZEE/bitmask-vpn
  • jkito/bitmask-vpn
  • panetone/bitmask-vpn
  • hsilva/bitmask-vpn
  • S0b0tkaZ11gy/bitmask-vpn
  • polster/bitmask-vpn-pahoeohe
  • Kulibin/bitmask-vpn
  • TheMimoGz/bitmask-vpn
  • fifi/bitmask-vpn
  • fly/bitmask-vpn
  • VlKozlove/bitmask-vpn
  • DonMephedrone/bitmask-vpn
  • Arti/bitmask-vpn
  • annxxxxx/bitmask-vpn
  • Arti/arti-bitmask-vpn-fork
  • peanut2/bitmask-vpn
29 results
Show changes
Showing with 1007 additions and 318 deletions
......@@ -16,7 +16,7 @@ Depends: ${misc:Depends}, libqt5core5a, libqt5gui5 | libqt5gui5-gles,
libqt5qml5, libqt5widgets5, libstdc++6,
qml-module-qtquick2, qml-module-qtquick-controls2, qml-module-qtquick-dialogs,
qml-module-qtquick-extras, qml-module-qt-labs-platform,
openvpn, policykit-1-gnome | polkit-1-auth-agent, python3
openvpn, policykit-1-gnome | polkit-1-auth-agent, python3, iptables
Description: Easy, fast, and secure VPN service from riseup.net.
.
The service does not require a user account, keep logs, or track you in any
......
From 82e3eda5709f1f8dd6bdb898a3c6b71a41cc4e62 Mon Sep 17 00:00:00 2001
From: jkito <belter@riseup.net>
Date: Sun, 25 Aug 2024 17:18:10 +0530
Subject: [PATCH] build: use qt5compat qml module to build on qt6.4 for ubuntu
and debian
---
bitmask.pro | 2 +-
gui/components/ErrorBox.qml | 2 +-
gui/components/Footer.qml | 14 ++++++--------
gui/components/Home.qml | 2 +-
gui/components/InitErrors.qml | 2 +-
gui/components/Locations.qml | 7 +++----
gui/components/MotdBox.qml | 2 +-
gui/components/Preferences.qml | 4 ++--
gui/components/SignalIcon.qml | 7 +++----
gui/components/Splash.qml | 2 +-
gui/components/StatusBox.qml | 2 +-
11 files changed, 21 insertions(+), 25 deletions(-)
diff --git a/bitmask.pro b/bitmask.pro
index bbeacb12..58ba5f2f 100644
--- a/bitmask.pro
+++ b/bitmask.pro
@@ -1,8 +1,8 @@
TARGET = $$TARGET
QT += quickcontrols2 svg
-CONFIG += qt staticlib
CONFIG += c++17 strict_c++
+CONFIG += qt staticlib core5compat
CONFIG += qtquickcompiler
RELEASE = $$RELEASE
diff --git a/gui/components/ErrorBox.qml b/gui/components/ErrorBox.qml
index 5667ed9d..ef8f58fb 100644
--- a/gui/components/ErrorBox.qml
+++ b/gui/components/ErrorBox.qml
@@ -1,6 +1,6 @@
import QtQuick
import QtQuick.Controls
-import QtQuick.Effects
+import Qt5Compat.GraphicalEffects
import "../themes/themes.js" as Theme
Item {
diff --git a/gui/components/Footer.qml b/gui/components/Footer.qml
index d534f96a..9df6db62 100644
--- a/gui/components/Footer.qml
+++ b/gui/components/Footer.qml
@@ -2,7 +2,7 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
-import QtQuick.Effects
+import Qt5Compat.GraphicalEffects
import "../themes/themes.js" as Theme
ToolBar {
@@ -49,7 +49,7 @@ ToolBar {
}
Image {
- id: lightning
+ id: lightning
smooth: true
visible: ctx != undefined & root.selectedGateway == "auto"
width: 16
@@ -61,11 +61,10 @@ ToolBar {
verticalCenter: gwButton.verticalCenter
}
}
- MultiEffect {
+ ColorOverlay{
anchors.fill: lightning
source: lightning
- colorizationColor: getLocationColor()
- colorization: 1.0
+ color: getLocationColor()
antialiasing: true
}
@@ -123,11 +122,10 @@ ToolBar {
rightMargin: 20
}
}
- MultiEffect {
+ ColorOverlay{
anchors.fill: gwQuality
source: gwQuality
- colorizationColor: getSignalColor()
- colorization: 1.0
+ color: getSignalColor()
antialiasing: false
}
}
diff --git a/gui/components/Home.qml b/gui/components/Home.qml
index f3bea85a..7830f46d 100644
--- a/gui/components/Home.qml
+++ b/gui/components/Home.qml
@@ -1,6 +1,6 @@
import QtQuick
import QtQuick.Controls
-import QtQuick.Effects
+import Qt5Compat.GraphicalEffects
Page {
StatusBox {
diff --git a/gui/components/InitErrors.qml b/gui/components/InitErrors.qml
index aaf9897b..10b4755c 100644
--- a/gui/components/InitErrors.qml
+++ b/gui/components/InitErrors.qml
@@ -1,6 +1,6 @@
import QtQuick
import QtQuick.Controls
-import QtQuick.Effects
+import Qt5Compat.GraphicalEffects
ErrorBox {
diff --git a/gui/components/Locations.qml b/gui/components/Locations.qml
index 2a188738..6228a58c 100644
--- a/gui/components/Locations.qml
+++ b/gui/components/Locations.qml
@@ -1,7 +1,7 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
-import QtQuick.Effects
+import Qt5Compat.GraphicalEffects
import "../themes/themes.js" as Theme
@@ -81,11 +81,10 @@ ThemedPage {
//verticalCenterOffset: 3
}
}
- MultiEffect {
+ ColorOverlay{
anchors.fill: lightning
source: lightning
- colorizationColor: "black"
- colorization: 1.0
+ color: "black"
antialiasing: true
}
}
diff --git a/gui/components/MotdBox.qml b/gui/components/MotdBox.qml
index 2c8cdb8b..7b851c0c 100644
--- a/gui/components/MotdBox.qml
+++ b/gui/components/MotdBox.qml
@@ -1,6 +1,6 @@
import QtQuick
import QtQuick.Controls
-import QtQuick.Effects
+import Qt5Compat.GraphicalEffects
import "../themes/themes.js" as Theme
Item {
diff --git a/gui/components/Preferences.qml b/gui/components/Preferences.qml
index d8ed6587..a0b6bba6 100644
--- a/gui/components/Preferences.qml
+++ b/gui/components/Preferences.qml
@@ -2,8 +2,8 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Controls.Material
-import QtQuick.Effects
-import QtCore
+import Qt5Compat.GraphicalEffects
+import Qt.labs.settings
import "../themes/themes.js" as Theme
diff --git a/gui/components/SignalIcon.qml b/gui/components/SignalIcon.qml
index 8747f054..38a23710 100644
--- a/gui/components/SignalIcon.qml
+++ b/gui/components/SignalIcon.qml
@@ -1,7 +1,7 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
-import QtQuick.Effects
+import Qt5Compat.GraphicalEffects
import "../themes/themes.js" as Theme
@@ -41,11 +41,10 @@ Item {
]
}
}
- MultiEffect {
+ ColorOverlay{
anchors.fill: icon
source: icon
- colorizationColor: getQualityColor()
- colorization: 1.0
+ color: getQualityColor()
antialiasing: true
}
diff --git a/gui/components/Splash.qml b/gui/components/Splash.qml
index c9351804..d18cc3ba 100644
--- a/gui/components/Splash.qml
+++ b/gui/components/Splash.qml
@@ -1,6 +1,6 @@
import QtQuick
import QtQuick.Controls
-import QtQuick.Effects
+import Qt5Compat.GraphicalEffects
import "../themes/themes.js" as Theme
Page {
diff --git a/gui/components/StatusBox.qml b/gui/components/StatusBox.qml
index d17c2fe0..24a1f8f2 100644
--- a/gui/components/StatusBox.qml
+++ b/gui/components/StatusBox.qml
@@ -1,6 +1,6 @@
import QtQuick
import QtQuick.Controls
-import QtQuick.Effects
+import Qt5Compat.GraphicalEffects
import QtQuick.Layouts
import QtQuick.Templates as T
import QtQuick.Controls.impl
--
2.46.0
# An image to build and package the BitmaskVPN (RiseupVPN and other branded builds)
# (c) LEAP Encryption Access Project 2018-2021
FROM ubuntu:20.04 as builder
FROM ubuntu:24.04 as builder
MAINTAINER LEAP Encryption Access Project <info@leap.se>
ARG GO_VERSION=1.16
ARG GO_VERSION=1.22
LABEL Description="An image to build Bitmask Lite" Vendor="LEAP" Version="1.2"
ENV OSXSDK_SHA256="631b4144c6bf75bf7a4d480d685a9b5bda10ee8d03dbf0db829391e2ef858789" \
PATH="$PATH:/osxcross/target/bin:/usr/lib/go-${GO_VERSION}/bin"
PATH="$PATH:/osxcross/target/bin:/usr/lib/go-${GO_VERSION}/bin" \
QMAKE=qmake6
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get upgrade --yes && \
......@@ -17,7 +18,7 @@ RUN apt-get update && apt-get upgrade --yes && \
git curl wget \
libappindicator3-dev libgtk-3-dev \
webkit2gtk-4.0 \
mingw-w64 upx-ucl python snapd \
mingw-w64 upx-ucl python3 snapd \
unzip sudo locales \
devscripts fakeroot debhelper \
clang llvm-dev libxml2-dev uuid-dev \
......@@ -25,60 +26,58 @@ RUN apt-get update && apt-get upgrade --yes && \
xz-utils bzip2 gzip sed cpio libbz2-dev \
software-properties-common dh-golang \
jq \
squashfs-tools \
qtbase5-dev qttools5-dev-tools qt5-qmake g++ qtdeclarative5-dev qt5-default \
golang-${GO_VERSION}-go golang-go golang-golang-x-tools-dev && \
squashfs-tools libgl-dev \
qml-module-qtquick-controls2 libqt6qml6 libqt6svg6-dev qt6-l10n-tools \
qt6-tools-dev qt6-tools-dev-tools qt6-base-dev qt6-base-dev-tools \
qt6-declarative-dev qt6-declarative-dev-tools \
qml6-module-qt5compat-graphicaleffects libqt6core5compat6 libqt6core5compat6-dev \
golang golang-${GO_VERSION}-go golang-golang-x-tools-dev && \
rm -r /var/lib/apt/lists/*
RUN ln -s $(qmake6 -query "QT_INSTALL_BINS")/lrelease /usr/local/bin/lrelease
# osx cross compiling
RUN git clone https://github.com/tpoechtrager/osxcross && \
cd osxcross/tarballs && \
wget https://s3.dockerproject.org/darwin/v2/MacOSX10.10.sdk.tar.xz && \
echo "${OSXSDK_SHA256} *MacOSX10.10.sdk.tar.xz" | sha256sum -c - && \
cd .. && UNATTENDED=1 ./build.sh && \
ln -s /osxcross/target/SDK/MacOSX10.10.sdk/usr/include/objc/NSObjCRuntime.h /osxcross/target/SDK/MacOSX10.10.sdk/usr/include/objc/NSObjcRuntime.h
#RUN git clone https://github.com/tpoechtrager/osxcross && \
# cd osxcross/tarballs && \
# wget https://s3.dockerproject.org/darwin/v2/MacOSX10.10.sdk.tar.xz && \
# echo "${OSXSDK_SHA256} *MacOSX10.10.sdk.tar.xz" | sha256sum -c - && \
# cd .. && UNATTENDED=1 ./build.sh && \
# ln -s /osxcross/target/SDK/MacOSX10.10.sdk/usr/include/objc/NSObjCRuntime.h /osxcross/target/SDK/MacOSX10.10.sdk/usr/include/objc/NSObjcRuntime.h
# bomutils (for osx packaging)
RUN git clone https://github.com/hogliux/bomutils && \
cd bomutils && make && sudo make install
#RUN git clone https://github.com/hogliux/bomutils && \
# cd bomutils && make && sudo make install
# xar (for osx packaging)
RUN git clone https://github.com/VantaInc/xar && \
cd xar/xar && \
./autogen.sh && ./configure && \
make && sudo make install
#RUN git clone https://github.com/VantaInc/xar && \
# cd xar/xar && \
# ./autogen.sh && ./configure && \
# make && sudo make install
# Grab the core18 and core20 snap (which snapcraft uses as a base) from the stable channel
# and unpack it in the proper place, to speed up snapcraft builds in the containers.
RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core18' | jq '.download_url' -r) --output core18.snap
RUN mkdir -p /snap/core18
RUN unsquashfs -d /snap/core18/current core18.snap
RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core20' | jq '.download_url' -r) --output core20.snap
RUN mkdir -p /snap/core20
RUN unsquashfs -d /snap/core20/current core20.snap
# RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core18' | jq '.download_url' -r) --output core18.snap
# RUN mkdir -p /snap/core18
# RUN unsquashfs -d /snap/core18/current core18.snap
# RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core20' | jq '.download_url' -r) --output core20.snap
# RUN mkdir -p /snap/core20
# RUN unsquashfs -d /snap/core20/current core20.snap
# Grab the snapcraft snap from the stable channel and unpack it in the proper
# place.
RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/snapcraft?channel=stable' | jq '.download_url' -r) --output snapcraft.snap
RUN mkdir -p /snap/snapcraft
RUN unsquashfs -d /snap/snapcraft/current snapcraft.snap
# RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/snapcraft?channel=stable' | jq '.download_url' -r) --output snapcraft.snap
# RUN mkdir -p /snap/snapcraft
# RUN unsquashfs -d /snap/snapcraft/current snapcraft.snap
# Create a snapcraft runner (TODO: move version detection to the core of
# snapcraft).
RUN mkdir -p /snap/bin
RUN echo "#!/bin/sh" > /snap/bin/snapcraft
RUN snap_version="$(awk '/^version:/{print $2}' /snap/snapcraft/current/meta/snap.yaml)" && echo "export SNAP_VERSION=\"$snap_version\"" >> /snap/bin/snapcraft
RUN echo 'exec "$SNAP/usr/bin/python3" "$SNAP/bin/snapcraft" "$@"' >> /snap/bin/snapcraft
RUN chmod +x /snap/bin/snapcraft
RUN ln -s /snap/bin/snapcraft /bin/
# cache go modules
RUN rm -rf /gomods && mkdir -p /gomods/packages
WORKDIR /gomods
COPY mods/go.* /gomods/
COPY mods/packages/ /gomods/packages/
RUN go mod download
# RUN mkdir -p /snap/bin
# RUN echo "#!/bin/sh" > /snap/bin/snapcraft
# RUN snap_version="$(awk '/^version:/{print $2}' /snap/snapcraft/current/meta/snap.yaml)" && echo "export SNAP_VERSION=\"$snap_version\"" >> /snap/bin/snapcraft
# RUN echo 'exec "$SNAP/usr/bin/python3" "$SNAP/bin/snapcraft" "$@"' >> /snap/bin/snapcraft
# RUN chmod +x /snap/bin/snapcraft
# RUN ln -s /snap/bin/snapcraft /bin/
COPY builder.sh /
......
......@@ -6,7 +6,7 @@ export DESTDIR="${HOSTDIR}"/deploy/
rm -rf "${GUESTDIR}"
cp -r "${HOSTDIR}" "${GUESTDIR}"
cd "${GUESTDIR}"
make prepare
make vendor
case $TYPE in
snap)
echo "[+] Building SNAP"
......
# PPA How to
LEAP team maintains a [ppa repository](https://launchpad.net/~leapcodes) for the clients, pacakges are built for latest two LTS releases of ubuntu
## Pre-requisites
Ensure that all the build dependencies are already installed, you can use `make depends` on most ubuntu and debian version to have the machine
ready to build `bitmask-vpn` debian packages
If `make depends` do not work, it is useful to have the `devscripts` and `equivs` packages installed, these are needed later for building
the source package and installing build dependencies.
PPA expects a signed source package, we have to build this package and then upload to PPA the changes file using the [`dput`](https://manpages.ubuntu.com/manpages/xenial/man1/dput.1.html) tool.
Please refer to official [PPA documentation](https://help.launchpad.net/Packaging/PPA) for how to create an account and add SSH and GPG keys to be able to upload.
## Build signed source package
### Prepare the debian package from templates
```
$ export PROVIDER=riseup # can be riseup, bitmask or calyx
$ make vendor
$ BUILD_RELEASE=yes make prepare_deb
```
> **NOTE**: The above commands will generate a debian directory in `build/riseup/debian` the control file created there can be used to build a dependencies package
* If build depends are not yet installed, build a dependencies package with all the build and runtime dependencies of `bitmask-vpn`:
```
$ cd build/riseup/debian
$ mk-build-deps control
$ apt-get install -f ./riseup-vpn-build-deps_0.24.8_all.deb
```
* Add changes to changelog by copying the entries from the `CHANGELOG` file at the root of the repo
```
# example changelog file for 0.24.8 might look like
$ cd build/riseup/build/riseup-vpn_0.24.8/
$ cat debian/changelog
riseup-vpn (0.24.8~noble) noble; urgency=medium
* Reduces the size of splash screen image
* Disable obfs4 and kcp checkbox in preferences for riseup
* Removes duplicate languages in the language picker in preferences
* Language picker in preferences shows languages sorted alphabetically
* 0.24.8 ubuntu noble release
-- LEAP Encryption Access Project <debian@leap.se> Thu, 05 Sep 2024 03:06:54 +0800
riseup-vpn (0.24.8-6-g92db03c4) unstable; urgency=medium
* Initial package.
-- LEAP Encryption Access Project <debian@leap.se> Mon, 29 Jul 2019 10:00:00 +0100
```
* Bump native dot-version, change release
```
$ cd build/riseup/build/riseup-vpn_0.24.8
# to add a new entry for version 0.24.8 to the changelog file and update the release
$ dch -b -v 0.24.8~noble -D "noble" -m "riseup-vpn release 0.24.8"
```
> **NOTE:** The source tarball's name as set by the `make preapre_deb` step will not match the version we set in the changelog file, since
for PPAs we need to append the distribution name to the version, e.g to build `0.24.8` for `noble` the version is `0.24.8~noble`
> More details about versioning ppa can be found in the PPA docs [versioning section](https://help.launchpad.net/Packaging/PPA/BuildingASourcePackage#versioning)
* We need to rename the source tarball to match the version we set in the `changelog` file:
```
$ cd build/riseup/build
$ mv riseup-vpn_0.24.8.orig.tar.gz riseup-vpn_0.24.8~noble.orig.tar.gz
```
### Build signed source package
```
$ cd build/riseup/build/riseup-vpn_0.24.8
$ debuild -S -k=<key_id_for_signing>
```
### Upload changes file
```
$ cd build/riseup/build
$ dput ppa:leapcodes/ppa riseup-vpn_0.24.8~noble_source.changes
```
ppa howto
=========
* Add changes to changelog (bump native dot-version, change release)
* Upload changes file
.. code:: bash
debuild -i -S
dput --force ppa:kalikaneko/ppa ../riseup-vpn_0.21.2.2_source.changes
Using kali's ppa
----------------
.. code:: bash
sudo gpg --homedir=/tmp --no-default-keyring --keyring /usr/share/keyrings/kali-ppa-archive-keyring.gpg --keyserver keyserver.ubuntu.com --recv-keys 0xbe23fb4a0e9db36ecb9ab8be23638bf72c593bc1
sudo add-apt-repository ppa:kalikaneko/ppa
sudo apt update
sudo apt install riseup-vpn
......@@ -5,7 +5,9 @@ The build currently expects MINGW64 environment, on a native windows host.
A cross-compiling procedure (at least for the application binaries) should be possible in the near future, using mxe. (There's already some support for it in `gui/build.sh`).
You should instal: make, wget, as well as a recent Qt5 version (for instance, with chocolatey: choco install make && choco install wget).
You should instal: make, wget, as well as a recent Qt6 version (for instance, with chocolatey: choco install make && choco install wget).
For installing Qt6 use the [`aqt`](https://github.com/miurahr/aqtinstall) tool to install a portable version of Qt.
It's recommended to use bash for windows for compatibility (the version that is distributed with git works well so far). In order to avoid makefiles, you are welcome to submit a port of the build scripts using powershell or cscript - see the build.wsf script in openvpn-build for inspiration.
......@@ -24,14 +26,11 @@ It is useful to source a file with all the needed environment variables::
Assuming you have the vendor path in place and correctly configured, all you need to do is `make installer`::
source ../build-env
make generate # not called by makefile in win, needs fix!!
make vendor
make build
make installer
checking signatures
-------------------
we should be signing all binaries on a release build.
......
......@@ -91,33 +91,29 @@ To force logging:
QT_FORCE_STDERR_LOGGING=1 ./riseup-vpn.exe
We should probably restrict this to non-release versions only.
Ciphersuites and other openvpn params
-------------------------------------
You can specify a custom `openvpn_configuration` block from a local file
(instead of fetching it from `eip-service.json`) via an environment variable:
.. code:: bash
LEAP_OPENVPN_EXTRA_CONFIG=../extra-config.json ./riseup-vpn
Manual Gateway Selection
------------------------
In the same spirit, you can manually override the gateway selection via an
environment variable that contains the hostname of the gateway:
.. code:: bash
Environment Variables
~~~~~~~~~~~~~~~~~~~~~
LEAP_GW=hostname.riseup.net ./riseup.vpn
The envs are only used for debugging and developing. The envs affecting the logging behavior are documented in the logging section in the `README <https://0xacab.org/leap/bitmask-vpn/-/blob/main/README.md?ref_type=heads#logging>`_.
Dry run
-------
- ``SKIP_VERSION_CHECK``: Do not check if there is an update available
- ``LEAP_DRYRUN``: Don't route traffic over VPN (run openvpn with "--pull-filter ignore route" argument) and do not touch firewall rules
- ``MOTD_URL``: Overwrite the MOTD (message of the day) url
- ``SNAP``: If not empty, we expect to be in a Snap environment (client was installed by Snap)
- ``UDP``: If we use UDP, UDP is set to 1. If we use TCP, UDP is set to 0. The value is read by the bitmask-root helper which sets firewall rules on Linux
- ``LEAP_PROVIDER``: Select the provider to use. Must be one of the providers listed in ``gui/providers/providers.json``. File is generated by the Makefile which runs ``./branding/scripts/gen-providers-json``
To avoid setting up the routes, you can pass the LEAP_DRYRUN variable:
obfs4
~~~~~
.. code:: bash
- ``LEAP_PRIVATE_BRIDGE_CERT``: Specify the cert string for the obfs4 bridge to be used
- ``LEAP_PRIVATE_BRIDGE``: Specify the host:port for the obfs4 bridge to be used
LEAP_DRYRUN=1 ./riseup.vpn
Only implemented in v3/vpnweb:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We should probably restrict this to non-release versions only.
- ``LEAP_GW``: Specify the gateway hostname to connect with. It needs to be one of the gateway returned by vpnweb
- ``LEAP_OPENVPN_EXTRA_CONFIG``: Specify a file with extra OpenVPN arguments to use. File should be in json format (in key value format like {"--dev": "tun"} or {"--persist-key": true})
- ``LEAP_KCP``: Enforce the use of KCP in obfsvpn
# headless mode
As a wise person once said, "you don't want to struggle with Qt every day".
## backend
There's a barebones binary that launches the same backend that the qt5 client uses.
You will need a `providers.json` file containing the parameters for you own deployment. This is usually generated during the vendoring step, but you can manually edit the one for riseup:
```
go build ./cmd/bitmaskd
```
You might need to install the helpers (bitmask-root, polkit policies etc...). Do it manually, or use the embedded files (It will ask for sudo).
```
./bitmaskd -i
```
With the polkit files in place, you can now run bitmask backend in the foreground:
```
./bitmaskd -d gui/providers/providers.json
```
TODO: make it a proper daemon, logging etc.
If you find problems while running (like polkit asking for password every time), you probably need to debug your polkit installation. Every system has its quirks, and bitmask has mostly been tested in debian-based desktops. For arch, you might need to add your user to group wheel.
## firewall
While testing, you are likely to get the iptables firewall leaving you with blocked outgoing connections. You can control `bitmask-root` manually:
```
sudo /usr/sbin/bitmask-root help
sudo /usr/sbin/bitmask-root firewall stop
```
## cli
There's no cli at the moment, but you can use the web api. To authenticate, you need to pass a token that is writen to a temporary file when the backend is initialized:
```
curl -H "X-Auth-Token:`cat /tmp/bitmask-token`" http://localhost:8000/vpn/status
curl -H "X-Auth-Token:`cat /tmp/bitmask-token`" http://localhost:8000/vpn/start
curl -H "X-Auth-Token:`cat /tmp/bitmask-token`" http://localhost:8000/vpn/stop
```
......@@ -11,12 +11,25 @@ When a string has being modified you need to regenerate the locales:
```
To fetch the translations from transifex (API\_TOKEN is the transifex API token):
To fetch the translations from transifex you need to use the Transifex cli:
https://developers.transifex.com/docs/cli and an api (API\_TOKEN is the transifex API
token)
```
API_TOKEN='xxxxxxxxxxx' make locales
API_TOKEN='xxxxxxxxxxx' tx pull
```
If you want to add a new language create an empty file `gui/i18n/main_$lang.ts` before running `make locales`.
If you want to add a new language you can:
```
API_TOKEN='xxxxxxxxxxx' tx pull -a
```
Sometimes language codes are not what you expect. This applies for missing languages as
well. When you check in transifex, you can also see what is used there, for example fa_IR
or es_AR, es or es_CU. When you want to use some language in general instead of some
regional version you can use the mapping in the .tx/config. Examples: fa_IR maps to fa.
For this project we expect files to be like main_es_AR.ts or main_pl.ts See
https://doc.qt.io/QtForMCUs-2.5/qtul-cmake-getting-started.html
Testing the translations
------------------------
......
How to create VMs for building and testing
============================================================
For Debian and Ubuntu, we want to support the two latest LTS (long term support) releases. For each release, we need to build packages for each distro.
Release overview
- https://www.debian.org/releases/
- https://www.releases.ubuntu.com/
Download and setup VMs
-------------------------
To get VMs, you can use:
- quickemu https://github.com/quickemu-project/quickemu
- create Virtualbox VMs by hand
- vagrant
.. code:: bash
mkdir -p ~/leap/vms & cd ~/leap/vms
quickget xubuntu 24.04
quickget xubuntu 22.04
quickget debian 12.5.0 xfce
quickget debian 11.9.0 xfce
# start vm and install OS (with --display spice you have a shared clipboard)
quickemu --vm xubuntu-24.04.conf --display spice
Install tools & dependencies
---------------------------------
.. code:: bash
# install base
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install -y firefox featherpad tmux vim git make fd-find ripgrep magic-wormhole
# install make deps (check branding/templates/debian/control-template)
sudo apt install golang make pkg-config g++ git libqt6svg6-dev qt6-tools-dev qt6-tools-dev-tools qt6-base-dev libqt6qml6 qt6-declarative-dev dh-golang libgl-dev qt6-5compat-dev qt6-declarative-dev-tools qt6-l10n-tools
# install deps (check branding/templates/debian/control-template)
sudo apt install libqt6core6 libqt6gui6 libqt6qml6 libqt6widgets6 libstdc++6 libqt6svg6 qml6-module-qtquick qml6-module-qtquick-controls qml6-module-qtquick-dialogs qml6-module-qtquick-layouts qml6-module-qtqml-workerscript qml6-module-qtquick-templates qml6-module-qt-labs-settings qml6-module-qtquick-window qml6-module-qt-labs-platform qml6-module-qtcore qml6-module-qt5compat-graphicaleffects openvpn policykit-1-gnome
sudo ln -s $(qmake6 -query "QT_INSTALL_BINS")/lrelease /usr/local/bin/lrelease
If go < 1.20 (Debian 12)
---------------------------------
The go package of Debian 12 is too old (< 1.20). Please install the `golang-go` package of `bookworm-backports`.
- https://backports.debian.org/Instructions/
- https://packages.debian.org/bookworm-backports/golang/golang
Build desktop client
---------------------------------
You can override the version with env VERSION= (required for all targets)
.. code:: bash
git clone https://0xacab.org/leap/bitmask-vpn.git
cd bitmask-vpn
sudo make depends
PROVIDER=bitmask make vendor
QMAKE=qmake6 make build
# install helper on Linux (only for manual testing, gets installed by the pckage)
build/qt/release/bitmask-vpn --install-helpers
Build deb package
---------------------------------
.. code:: bash
# create debian package (you can also set the version with VERSION=)
make package_deb
sudo dpkg -i deploy/bitmask-vpn_0.24.5-66-gd52c528_amd64.deb
# Release procedure
## Prepare source code repo for release
1. Generate the changelog and update the `CHANGELOG` file
```
$ git log --format="- %s" <last_release_tag>..HEAD
```
2. Open a Merge request with the above change
3. Create an annotated tag for the release version, the version for the app is taken from the o/p of `git desribe`
```
# tag should point to the commit that updated the CHANGELOG file
$ git tag -a 0.24.8 HEAD
```
## Build Installers for Windows and MacOS
### Steps to build the windows installer (needs Windows 10 or higher):
1. Generate the installer `.exe` file
```
$ make vendor # make sure to set the PROVIDER env variable to the correct provider
$ make build
$ make installer
```
2. Sign the installer:
```
PS> signtool sign /f .\leap.pfx /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 /p <password_for_cert> <path_to_installer.exe>
```
### Steps to build the MacOS installer (needs MacOS 12 or higher):
1. Generate the installer `.app` file
```
$ make vendor # make sure to set the PROVIDER env variable to the correct provider
$ make build
$ make installer
```
2.Sign the MacOS installer:
```
$ export CODESIGN_IDENTITY=<codesign_id>
$ codesign --sign "${CODESIGN_IDENTITY}" --options runtime --timestamp --force <path_to_installer.app/Content/MacOS/installer_executable>
```
3. Create DMG to upload for Apple notarization
```
$ mkdir -p build/installer/out && cp -R build/installer/<installer.app> build/installer/out
$ cd build/installer
$ hdiutil create -volname <installer_name> -srcfolder out -ov -format UDZO <output_dmg_name.dmg>
```
4. Upload DMG for notarization
```
$ export APP_PASSWORD=<app_password>
$ xcrun notarytool submit --verbose --apple-id=<appleid> --team-id=<teamid> --password ${APP_PASSWORD} --wait --timeout 30m <path_to_dmg>
# To get logs or the notarization response for debugging
$ xcrun notarytool logs <notarization_id> --apple-id=<appleid> --team-id=<teamid> --password ${APP_PASSWORD}
```
>**IMPORTANT:** Upload builds, renew the *-latest* symlinks and their `lastver` files
>**NOTE:** Update packages for Ubuntu in the [leapcodes PPA](./build-ppa.md)
Release procedure
=====================
1. Bump the static release file in `pkg/version`. After a release, this should read something like `0.21.2+git`. This file is used to generate version strings from tarballs.
2. Tag the release
3. Build the latest builder image:
```
make builder_image
```
3. Build the snap package:
With everything ready on the docker image, this one should be built "in a snap"
(badum-tsss).
```
make package_snap_in_docker
```
4. Build the windows installer:
(TBD)
5. Build the OSX package:
(TBD)
6. Build the debian package:
(TBD)
7. Upload builds, renew the *-latest* symlinks and their `lastver` files (important!)
# How to uninstall Desktop LEAP VPN
*Applies to RiseupVPN, CalyxVPN, CodigoSurVPN etc...*
*Applies to RiseupVPN, CalyxVPN, and Bitmask.*
**For the time being, it's important that you follow this instructions and uninstall manually: if
you remove the app by some other means, it's likely that you will end up with a broken network**.
......
module 0xacab.org/leap/bitmask-vpn
go 1.17
go 1.22.2
require (
0xacab.org/leap/obfsvpn v0.0.0-20220626143947-feff527c00e5
git.torproject.org/pluggable-transports/goptlib.git v1.2.0
0xacab.org/leap/obfsvpn v1.3.1-0.20241121155258-e6b06efc4456
git.torproject.org/pluggable-transports/goptlib.git v1.3.0
git.torproject.org/pluggable-transports/snowflake.git v1.1.0
github.com/ProtonMail/go-autostart v0.0.0-20210130080809-00ed301c8e9a
github.com/apparentlymart/go-openvpn-mgmt v0.0.0-20200929191752-4d2ce95ae600
github.com/cretz/bine v0.2.0
github.com/dchest/siphash v1.2.3 // indirect
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect
github.com/keybase/go-ps v0.0.0-20190827175125-91aafc93ba19
github.com/pion/webrtc/v3 v3.1.41
github.com/sevlyar/go-daemon v0.1.5
github.com/pion/webrtc/v3 v3.2.44
github.com/smartystreets/goconvey v1.6.4
github.com/xtaci/kcp-go/v5 v5.6.1
github.com/xtaci/smux v1.5.16
github.com/xtaci/kcp-go/v5 v5.6.11
github.com/xtaci/smux v1.5.24
// Do not update obfs4 past e330d1b7024b, a backwards incompatible change was
// made that will break negotiation!! riseup should move to the newest asap.
gitlab.com/yawning/obfs4.git v0.0.0-20210511220700-e330d1b7024b // indirect
golang.org/x/sys v0.0.0-20220624220833-87e55d714810
gitlab.com/yawning/obfs4.git v0.0.0-20231012084234-c3e2d44b1033 // indirect
golang.org/x/sys v0.28.0
)
require github.com/natefinch/npipe v0.0.0-20160621034901-c1b8fa8bdcce
require (
0xacab.org/leap/bitmask-core v0.0.0-20241213164419-d3c23078a4e0
0xacab.org/leap/menshen v0.0.0-20241122184833-0524d7e093d5
github.com/natefinch/npipe v0.0.0-20160621034901-c1b8fa8bdcce
github.com/prometheus-community/pro-bing v0.4.0
github.com/rs/zerolog v1.33.0
github.com/stretchr/testify v1.9.0
)
require (
github.com/google/uuid v1.3.0 // indirect
0xacab.org/leap/tunnel-telemetry v0.0.0-20240830081933-7328bb50078b // indirect
filippo.io/edwards25519 v1.1.0 // indirect
github.com/andybalholm/brotli v1.1.0 // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/asdine/storm/v3 v3.2.1 // indirect
github.com/babolivier/go-doh-client v0.0.0-20201028162107-a76cff4cb8b6 // indirect
github.com/cloudflare/circl v1.3.9 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/analysis v0.23.0 // indirect
github.com/go-openapi/errors v0.22.0 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/loads v0.22.0 // indirect
github.com/go-openapi/runtime v0.28.0 // indirect
github.com/go-openapi/spec v0.21.0 // indirect
github.com/go-openapi/strfmt v0.23.0 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/go-openapi/validate v0.24.0 // indirect
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
github.com/google/pprof v0.0.0-20231212022811-ec68065c825e // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/jtolds/gls v4.20.0+incompatible // indirect
github.com/kalikaneko/socks5 v1.0.1 // indirect
github.com/klauspost/cpuid/v2 v2.0.14 // indirect
github.com/klauspost/reedsolomon v1.10.0 // indirect
github.com/pion/datachannel v1.5.2 // indirect
github.com/pion/dtls/v2 v2.1.5 // indirect
github.com/pion/ice/v2 v2.2.6 // indirect
github.com/pion/interceptor v0.1.11 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
github.com/klauspost/reedsolomon v1.12.2 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/onsi/ginkgo/v2 v2.13.2 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pion/datachannel v1.5.7 // indirect
github.com/pion/dtls/v2 v2.2.11 // indirect
github.com/pion/ice/v2 v2.3.28 // indirect
github.com/pion/interceptor v0.1.29 // indirect
github.com/pion/logging v0.2.2 // indirect
github.com/pion/mdns v0.0.5 // indirect
github.com/pion/mdns v0.0.12 // indirect
github.com/pion/randutil v0.1.0 // indirect
github.com/pion/rtcp v1.2.9 // indirect
github.com/pion/rtp v1.7.13 // indirect
github.com/pion/sctp v1.8.2 // indirect
github.com/pion/sdp/v3 v3.0.5 // indirect
github.com/pion/srtp/v2 v2.0.9 // indirect
github.com/pion/stun v0.3.5 // indirect
github.com/pion/transport v0.13.1 // indirect
github.com/pion/turn/v2 v2.0.8 // indirect
github.com/pion/udp v0.1.1 // indirect
github.com/pion/rtcp v1.2.14 // indirect
github.com/pion/rtp v1.8.6 // indirect
github.com/pion/sctp v1.8.18 // indirect
github.com/pion/sdp/v3 v3.0.9 // indirect
github.com/pion/srtp/v2 v2.0.18 // indirect
github.com/pion/stun v0.6.1 // indirect
github.com/pion/transport/v2 v2.2.5 // indirect
github.com/pion/turn/v2 v2.1.6 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/quic-go/quic-go v0.47.0 // indirect
github.com/refraction-networking/utls v1.6.7 // indirect
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect
github.com/templexxx/cpu v0.0.9 // indirect
github.com/templexxx/cpu v0.1.0 // indirect
github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect
github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b // indirect
github.com/templexxx/xorsimd v0.4.1 // indirect
github.com/templexxx/xorsimd v0.4.2 // indirect
github.com/tjfoc/gmsm v1.4.1 // indirect
github.com/xtaci/kcp-go v5.4.20+incompatible // indirect
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e // indirect
gitlab.com/yawning/edwards25519-extra v0.0.0-20231005122941-2149dcafc266 // indirect
gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/goptlib v1.5.0 // indirect
go.etcd.io/bbolt v1.3.10 // indirect
go.mongodb.org/mongo-driver v1.16.0 // indirect
go.opentelemetry.io/otel v1.28.0 // indirect
go.opentelemetry.io/otel/metric v1.28.0 // indirect
go.opentelemetry.io/otel/trace v1.28.0 // indirect
go.uber.org/mock v0.4.0 // indirect
golang.org/x/crypto v0.30.0 // indirect
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect
golang.org/x/mod v0.17.0 // indirect
golang.org/x/net v0.32.0 // indirect
golang.org/x/sync v0.10.0 // indirect
golang.org/x/text v0.21.0 // indirect
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
This diff is collapsed.
......@@ -3,10 +3,11 @@ package main
/* a wrapper around bitmask that exposes status to a QtQml gui.
Have a look at the pkg/backend module for further enlightment. */
import (
"C"
"unsafe"
import "C"
import "unsafe"
import (
"0xacab.org/leap/bitmask-vpn/pkg/backend"
)
......@@ -31,10 +32,8 @@ func SwitchOff() {
}
//export UseLocation
func UseLocation(label string) {
// a bit of a hack to force the compiler to copy the string
// so the original C++ string will not be used as it will be changed down the line
location := string([]byte(label))
func UseLocation(label *C.char) {
location := C.GoString(label)
backend.UseLocation(location)
}
......@@ -44,8 +43,9 @@ func UseAutomaticGateway() {
}
//export SetTransport
func SetTransport(transport string) {
backend.SetTransport(string(transport))
func SetTransport(transport *C.char) {
tp := C.GoString(transport)
backend.SetTransport(tp)
}
//export GetTransport
......@@ -92,6 +92,8 @@ func InitializeBitmaskContext(provider string,
opts.Obfs4 = obfs4
opts.DisableAutostart = disableAutostart
opts.StartVPN = startVPN
opts.DisableAutostart = true
opts.SkipLaunch = true
go backend.InitializeBitmaskContext(opts)
}
......
......@@ -5,14 +5,15 @@ set -e
# set -x
# --------------------
XBUILD=${XBUILD-no}
LRELEASE=${LRELEASE-lrelease}
VENDOR_PATH=${VENDOR_PATH-providers/riseup}
APPNAME=${APPNAME-BitmaskVPN}
XBUILD="${XBUILD:-no}"
LRELEASE="${LRELEASE:-lrelease}"
VENDOR_PATH="${VENDOR_PATH:-providers/riseup}"
APPNAME="${APPNAME:-Bitmask}"
LDFLAGS_VER="-X 0xacab.org/leap/bitmask-vpn/pkg/config/version.appVersion=${VERSION}"
OSX_TARGET=10.11
OSX_TARGET=12
WIN64="win64"
GO=`which go`
GO=`command -v go`
PROJECT=bitmask.pro
TARGET_GOLIB=lib/libgoshim.a
......@@ -20,7 +21,7 @@ SOURCE_GOLIB=gui/backend.go
MAKE=${MAKE:=make}
QTBUILD=build/qt
RELEASE=$QTBUILD/release
RELEASE_DIR=$QTBUILD/release
DEBUGP=$QTBUILD/debug
PLATFORM=$(uname -s)
......@@ -53,7 +54,7 @@ then
else
if [ "$QMAKE" == "" ]
then
QMAKE="$(command -v qmake5 || command -v qmake)"
QMAKE="$(command -v qmake6 || command -v qmake)"
fi
fi
......@@ -64,9 +65,6 @@ function init {
}
function buildGoLib {
echo "[+] Using go in" $GO "[`go version`]"
"$GO" generate ./pkg/config/version/genver/gen.go || echo "[!] Error on go generate"
if [ "$PLATFORM" == "Darwin" ]
then
GOOS=darwin
......@@ -78,13 +76,15 @@ function buildGoLib {
if [ "$XBUILD" == "no" ]
then
echo "[+] Building Go library with standard Go compiler"
CGO_ENABLED=1 GOOS=$GOOS CC=$CC CGO_CFLAGS=$CGO_CFLAGS CGO_LDFLAGS=$CGO_LDFLAGS go build -buildmode=c-archive -ldflags="-extar=$AR -extld=$LD -extldflags=$LDFLAGS" -o $TARGET_GOLIB $SOURCE_GOLIB
CGO_ENABLED=1 GOOS=$GOOS CC=$CC CGO_CFLAGS=$CGO_CFLAGS CGO_LDFLAGS=$CGO_LDFLAGS go build -buildmode=c-archive \
-ldflags="${LDFLAGS_VER} -extar=$AR -extld=$LD -extldflags=$LDFLAGS" -o $TARGET_GOLIB $SOURCE_GOLIB
fi
if [ "$XBUILD" == "$WIN64" ]
then
echo "[+] Building Go library with mxe"
echo "[+] Using cc:" $CC
CC=$CC CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -buildmode=c-archive -ldflags="-extar=$AR -extld=$LD -extldflags=$LDFLAGS" -o $TARGET_GOLIB $SOURCE_GOLIB
CC=$CC CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -buildmode=c-archive -ldflags="${LDFLAGS_VER} \
-extar=$AR -extld=$LD -extldflags=$LDFLAGS" -o $TARGET_GOLIB $SOURCE_GOLIB
fi
}
......@@ -92,7 +92,8 @@ function buildQmake {
echo "[+] Now building Qml app with Qt qmake"
echo "[+] Using qmake in:" $QMAKE
mkdir -p $QTBUILD
$QMAKE -early QMAKE_CC=$CC QMAKE_CXX=$CXX QMAKE_LINK=$CXX -o "$QTBUILD/Makefile" CONFIG+=release VENDOR_PATH="${VENDOR_PATH}" $PROJECT
$QMAKE -early QMAKE_CC=$CC QMAKE_CXX=$CXX QMAKE_LINK=$CXX -o "$QTBUILD/Makefile" CONFIG+=release VENDOR_PATH="${VENDOR_PATH}" \
RELEASE=${RELEASE} TARGET=${TARGET} $PROJECT
#CONFIG=+force_debug_info CONFIG+=debug CONFIG+=debug_and_release
}
......@@ -103,28 +104,28 @@ function renameOutput {
if [ "$DEBUG" == "1" ]
then
echo "[+] Selecting DEBUG build"
mv $DEBUGP/bitmask $RELEASE/$TARGET
mv $DEBUGP/bitmask $RELEASE_DIR/$TARGET
else
echo "[+] Selecting RELEASE build"
mv $RELEASE/bitmask $RELEASE/$TARGET
strip $RELEASE/$TARGET
mv $RELEASE_DIR/bitmask $RELEASE_DIR/$TARGET
strip $RELEASE_DIR/$TARGET
fi
echo "[+] Binary is in" $RELEASE/$TARGET
echo "[+] Binary is in" $RELEASE_DIR/$TARGET
elif [ "$PLATFORM" == "Darwin" ]
then
rm -rf $RELEASE/$TARGET.app
mv $RELEASE/bitmask.app/ $RELEASE/$TARGET.app/
mv $RELEASE/$TARGET.app/Contents/MacOS/bitmask $RELEASE/$TARGET.app/Contents/MacOS/$APPNAME
rm -rf $RELEASE_DIR/$TARGET.app
mv $RELEASE_DIR/bitmask.app/ $RELEASE_DIR/$TARGET.app/
mv $RELEASE_DIR/$TARGET.app/Contents/MacOS/bitmask $RELEASE_DIR/$TARGET.app/Contents/MacOS/$APPNAME
# bsd sed
sed -i '' "s/>bitmask/>${APPNAME}/" $RELEASE/$TARGET.app/Contents/Info.plist
echo "[+] App is in" $RELEASE/$TARGET
sed -i '' "s/>bitmask/>${APPNAME}/" $RELEASE_DIR/$TARGET.app/Contents/Info.plist
echo "[+] App is in" $RELEASE_DIR/$TARGET
else # for MINGWIN or CYGWIN
mv $RELEASE/bitmask.exe $RELEASE/$TARGET.exe
mv $RELEASE_DIR/bitmask.exe $RELEASE_DIR/$TARGET.exe
fi
}
function buildDefault {
echo "[+] Building BitmaskVPN"
echo "[+] Building Bitmask"
if [ "$LRELEASE" != "no" ]
then
$LRELEASE bitmask.pro
......@@ -138,7 +139,6 @@ function buildDefault {
$MAKE -C $QTBUILD clean
$MAKE -C $QTBUILD $MAKEFLAGS all
renameOutput
echo "[+] Done."
}
......
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Controls.Material 2.1
import QtQuick
import QtQuick.Controls
import QtQuick.Controls.Material
import "../themes/themes.js" as Theme
......@@ -44,7 +44,7 @@ ThemedPage {
Image {
id: aboutIcon
height: 60
source: "../resources/icon-noshield.svg"
source: customTheme.iconSplash
fillMode: Image.PreserveAspectFit
anchors.horizontalCenter: parent.horizontalCenter
}
......@@ -90,7 +90,7 @@ ThemedPage {
//: %3 -> donation text if activated
//: %4 -> terms of service
let _txt = qsTr(
"<style>a:link {color: '" + Theme.green + "';}</style><p>%1 is an easy, fast, and secure VPN service from %2. %1 does not require a user account, keep logs, or track you in any way.</p> %3 <p>By using this application, you agree to the <a href=\"%4\">Terms of Service</a>. This service is provided as-is, without any warranty, and is intended for people who work to make the world a better place.</p>").arg(_name).arg(_provider).arg(_donateTXT).arg(_tosURL)
"<style>a:link {color: '" + Theme.green + "';}</style><p>%1 is an easy, fast, and secure VPN service from %2. %1 does not require a user account, keep logs, or track you in any way.</p> %3 <p>By using this application, you agree to the Terms of Service available at <a href=\"%4\">%4</a>. This service is provided as-is, without any warranty, and is intended for people, who work to make the world a better place.</p>").arg(_name).arg(_provider).arg(_donateTXT).arg(_tosURL)
return _txt
}
......
import QtQuick 2.5
import QtQuick.Controls 2.14
import QtQuick
import QtQuick.Controls
import "../themes/themes.js" as Theme
import "../themes"
......