From 73d0c7a96df2212d5a3ee6289fc286f3e6459028 Mon Sep 17 00:00:00 2001 From: "kali kaneko (leap communications)" Date: Fri, 9 Oct 2020 18:53:11 +0200 Subject: [pkg] refactor vendor init/check --- Makefile | 44 +- bitmask.pro | 1 + branding/README.rst | 64 - branding/assets/calyx/icon.bmp | Bin 360138 -> 0 bytes branding/assets/calyx/icon.icns | Bin 44161 -> 0 bytes branding/assets/calyx/icon.ico | Bin 18317 -> 0 bytes branding/assets/calyx/icon.png | Bin 18339 -> 0 bytes branding/assets/calyx/icon.svg | 16375 ---------------------------- branding/assets/calyx/osx-background.png | Bin 28726 -> 0 bytes branding/assets/demo/icon.bmp | Bin 65674 -> 0 bytes branding/assets/demo/icon.icns | Bin 1359609 -> 0 bytes branding/assets/demo/icon.ico | Bin 4286 -> 0 bytes branding/assets/demo/icon.png | Bin 17473 -> 0 bytes branding/assets/demo/icon.svg | 80 - branding/assets/demolib | 1 - branding/assets/riseup/icon.bmp | Bin 65674 -> 0 bytes branding/assets/riseup/icon.icns | Bin 1359609 -> 0 bytes branding/assets/riseup/icon.ico | Bin 4286 -> 0 bytes branding/assets/riseup/icon.png | Bin 16809 -> 0 bytes branding/assets/riseup/icon.svg | 80 - branding/assets/riseup/osx-background.png | Bin 278046 -> 0 bytes branding/config/calyx-ca.crt | 31 - branding/config/demo-ca.crt | 32 - branding/config/demolib-ca.crt | 10 - branding/config/riseup-ca.crt | 32 - branding/config/vendor.conf | 63 - branding/scripts/ASSETS_LIST | 2 - branding/scripts/ASSETS_REQUIRED | 3 + branding/scripts/check | 62 +- branding/scripts/check-ca-crt | 74 + branding/scripts/check-ca-crt.py | 61 - branding/scripts/getparam | 5 +- branding/scripts/init | 96 +- docs/branding.rst | 63 + providers/calyx/assets/icon.bmp | Bin 0 -> 360138 bytes providers/calyx/assets/icon.icns | Bin 0 -> 44161 bytes providers/calyx/assets/icon.ico | Bin 0 -> 18317 bytes providers/calyx/assets/icon.png | Bin 0 -> 18339 bytes providers/calyx/assets/icon.svg | 16375 ++++++++++++++++++++++++++++ providers/calyx/calyx-ca.crt | 31 + providers/demolib/demolib-ca.crt | 10 + providers/riseup/assets/icon.icns | Bin 0 -> 1359609 bytes providers/riseup/assets/icon.ico | Bin 0 -> 4286 bytes providers/riseup/assets/icon.svg | 80 + providers/riseup/riseup-ca.crt | 32 + providers/vendor.conf | 63 + 46 files changed, 16879 insertions(+), 16891 deletions(-) delete mode 100644 branding/README.rst delete mode 100644 branding/assets/calyx/icon.bmp delete mode 100644 branding/assets/calyx/icon.icns delete mode 100644 branding/assets/calyx/icon.ico delete mode 100644 branding/assets/calyx/icon.png delete mode 100644 branding/assets/calyx/icon.svg delete mode 100644 branding/assets/calyx/osx-background.png delete mode 100644 branding/assets/demo/icon.bmp delete mode 100644 branding/assets/demo/icon.icns delete mode 100755 branding/assets/demo/icon.ico delete mode 100644 branding/assets/demo/icon.png delete mode 100644 branding/assets/demo/icon.svg delete mode 120000 branding/assets/demolib delete mode 100644 branding/assets/riseup/icon.bmp delete mode 100644 branding/assets/riseup/icon.icns delete mode 100755 branding/assets/riseup/icon.ico delete mode 100755 branding/assets/riseup/icon.png delete mode 100644 branding/assets/riseup/icon.svg delete mode 100644 branding/assets/riseup/osx-background.png delete mode 100644 branding/config/calyx-ca.crt delete mode 100644 branding/config/demo-ca.crt delete mode 100644 branding/config/demolib-ca.crt delete mode 100644 branding/config/riseup-ca.crt delete mode 100644 branding/config/vendor.conf delete mode 100644 branding/scripts/ASSETS_LIST create mode 100644 branding/scripts/ASSETS_REQUIRED create mode 100755 branding/scripts/check-ca-crt delete mode 100755 branding/scripts/check-ca-crt.py create mode 100644 docs/branding.rst create mode 100644 providers/calyx/assets/icon.bmp create mode 100644 providers/calyx/assets/icon.icns create mode 100644 providers/calyx/assets/icon.ico create mode 100644 providers/calyx/assets/icon.png create mode 100644 providers/calyx/assets/icon.svg create mode 100644 providers/calyx/calyx-ca.crt create mode 100644 providers/demolib/demolib-ca.crt create mode 100644 providers/riseup/assets/icon.icns create mode 100755 providers/riseup/assets/icon.ico create mode 100644 providers/riseup/assets/icon.svg create mode 100644 providers/riseup/riseup-ca.crt create mode 100644 providers/vendor.conf diff --git a/Makefile b/Makefile index 695edc2..3525c44 100644 --- a/Makefile +++ b/Makefile @@ -7,11 +7,10 @@ XBUILD ?= no SKIP_CACHECK ?= no -PROVIDER ?= $(shell grep ^'provider =' branding/config/vendor.conf | cut -d '=' -f 2 | tr -d "[:space:]") -APPNAME ?= $(shell branding/scripts/getparam appname | tail -n 1) -TARGET ?= $(shell branding/scripts/getparam binname | tail -n 1) -PROVIDER_CONFIG ?= branding/config/vendor.conf -DEFAULT_PROVIDER = branding/assets/default/ +VENDOR_PATH ?= providers +APPNAME ?= $(shell VENDOR_PATH=${VENDOR_PATH} branding/scripts/getparam appname | tail -n 1) +TARGET ?= $(shell VENDOR_PATH=${VENDOR_PATH} branding/scripts/getparam binname | tail -n 1) +PROVIDER ?= $(shell grep ^'provider =' ${VENDOR_PATH}/vendor.conf | cut -d '=' -f 2 | tr -d "[:space:]") VERSION ?= $(shell git describe) # go paths @@ -195,39 +194,28 @@ test_ui: golib ######################################################################### vendor_init: - @./branding/scripts/init - # TODO we should do the prepare step here, store it in VENDOR_PATH + @VENDOR_PATH=${VENDOR_PATH} ./branding/scripts/init vendor_check: - @./branding/scripts/check - # TODO move ca-check here + @VENDOR_PATH=${VENDOR_PATH} ./branding/scripts/check ${PROVIDER} +ifeq (${SKIP_CACHECK}, no) + @VENDOR_PATH=${VENDOR_PATH} ${SCRIPTS}/check-ca-crt ${PROVIDER} +endif -vendor: gen_providers_json - # TODO merge with prepare, after moving the gen_pkg to vendor_init +vendor: gen_providers_json prepare_templates gen_pkg_snap gen_pkg_deb gen_providers_json: @python3 branding/scripts/gen-providers-json.py branding/config/vendor.conf gui/providers/providers.json -prepare: prepare_templates gen_pkg_win gen_pkg_osx gen_pkg_snap gen_pkg_deb prepare_done - prepare_templates: generate relink_default tgz @mkdir -p build/${PROVIDER}/bin/ deploy @cp ${TEMPLATES}/makefile/Makefile build/${PROVIDER}/Makefile @VERSION=${VERSION} PROVIDER_CONFIG=${PROVIDER_CONFIG} ${SCRIPTS}/generate-vendor-make.py build/${PROVIDER}/vendor.mk -ifeq (${SKIP_CACHECK}, no) - @${SCRIPTS}/check-ca-crt.py ${PROVIDER} ${PROVIDER_CONFIG} -endif generate: @go generate gui/backend.go @go generate pkg/config/version/genver/gen.go -relink_default: -ifneq (,$(wildcard ${DEFAULT_PROVIDER})) - @cd branding/assets && unlink default -endif - @cd branding/assets && ln -s ${PROVIDER} default - TGZ_NAME = bitmask-vpn_${VERSION}-src TGZ_PATH = $(shell pwd)/build/${TGZ_NAME} tgz: @@ -236,12 +224,7 @@ tgz: @cd build/ && tar czf bitmask-vpn_$(VERSION).tgz ${TGZ_NAME} @rm -rf $(TGZ_PATH) -# XXX port/deprecate ----------------------------------------------- -gen_pkg_win: - @mkdir -p build/${PROVIDER}/windows/ - @cp -r ${TEMPLATES}/windows build/${PROVIDER} - @VERSION=${VERSION} PROVIDER_CONFIG=${PROVIDER_CONFIG} ${SCRIPTS}/generate-win.py build/${PROVIDER}/windows/data.json - @cd build/${PROVIDER}/windows && python3 generate.py +# XXX port/deprecate -------------------------------------------------------------------------------------------------- gen_pkg_deb: @cp -r ${TEMPLATES}/debian build/${PROVIDER} @@ -261,9 +244,8 @@ gen_pkg_snap: @cp branding/assets/default/icon.png build/${PROVIDER}/snap/gui/${PROVIDER}-vpn.png rm build/${PROVIDER}/snap/generate.py -prepare_done: - @echo - @echo 'Done. You can do "make build" now.' +# --------------------------------------------------------------------------------------------------------------------- + ######################################################################### # packaging action diff --git a/bitmask.pro b/bitmask.pro index 111ff04..795a3d5 100644 --- a/bitmask.pro +++ b/bitmask.pro @@ -32,6 +32,7 @@ HEADERS += \ LIBS += -L../../lib -lgoshim -lpthread RESOURCES += gui/gui.qrc +RESOURCES += providers/riseup/vendor.qrc DESTDIR = release OBJECTS_DIR = release/.obj diff --git a/branding/README.rst b/branding/README.rst deleted file mode 100644 index 108ba5e..0000000 --- a/branding/README.rst +++ /dev/null @@ -1,64 +0,0 @@ -BitmaskVPN Branding Procedure -================================================================================ - -This folder contains everything that is needed to generate a customized built of -the Desktop BitmaskVPN app for a given provider. - - -Configure --------------------------------------------------------------------------------- - -To start a new vendoring project, initialize a new repo for your provider: - - export VENDOR_PATH=../leapvpn-myprovider-pkg - make vendor_init - -Follow the directions in the output of the above command. Basically you need to -configure your provider CA certificate, and some graphical assets: - - * Copy your provider CA certificate to the same folder: 'config/-ca.crt' - * Check the list of assets at 'assets/FILES.Readme'. - -You can validate your configuration: - - export VENDOR_PATH=../leapvpn-myprovider-pkg - make vendor_check - -Checkout --------------------------------------------------------------------------------- - - git clone https://0xacab.org/leap/bitmask-vpn - cd bitmask-vpn - git pull --tags - - -Package --------------------------------------------------------------------------------- - -NOTE: Some of the following scripts need network access, since they will check -whether the configuration published by your provider matches what is configured -before the build. If you want to skip this check, pass `SKIP_CACHECK=yes` - -Run:: - - export VENDOR_PATH=../leapvpn-myprovider-pkg - make vendor - make prepare - -Then you can build the binary:: - - make build - -* FIXME: the following does not work yet --------------------- - REFACTORING in progress ------------------------------------ - -Then you can build all the packages:: - - make packages - -Alternatively, you can build only for an specific os:: - - make package_win - make package_osx - make package_snap - make package_deb diff --git a/branding/assets/calyx/icon.bmp b/branding/assets/calyx/icon.bmp deleted file mode 100644 index c9e1b0a..0000000 Binary files a/branding/assets/calyx/icon.bmp and /dev/null differ diff --git a/branding/assets/calyx/icon.icns b/branding/assets/calyx/icon.icns deleted file mode 100644 index 1fd6045..0000000 Binary files a/branding/assets/calyx/icon.icns and /dev/null differ diff --git a/branding/assets/calyx/icon.ico b/branding/assets/calyx/icon.ico deleted file mode 100644 index 1950733..0000000 Binary files a/branding/assets/calyx/icon.ico and /dev/null differ diff --git a/branding/assets/calyx/icon.png b/branding/assets/calyx/icon.png deleted file mode 100644 index 5b0e175..0000000 Binary files a/branding/assets/calyx/icon.png and /dev/null differ diff --git a/branding/assets/calyx/icon.svg b/branding/assets/calyx/icon.svg deleted file mode 100644 index b9d83af..0000000 --- a/branding/assets/calyx/icon.svg +++ /dev/null @@ -1,16375 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/branding/assets/calyx/osx-background.png b/branding/assets/calyx/osx-background.png deleted file mode 100644 index 91bcd8f..0000000 Binary files a/branding/assets/calyx/osx-background.png and /dev/null differ diff --git a/branding/assets/demo/icon.bmp b/branding/assets/demo/icon.bmp deleted file mode 100644 index 9e918e4..0000000 Binary files a/branding/assets/demo/icon.bmp and /dev/null differ diff --git a/branding/assets/demo/icon.icns b/branding/assets/demo/icon.icns deleted file mode 100644 index b4c9a20..0000000 Binary files a/branding/assets/demo/icon.icns and /dev/null differ diff --git a/branding/assets/demo/icon.ico b/branding/assets/demo/icon.ico deleted file mode 100755 index c65c9e1..0000000 Binary files a/branding/assets/demo/icon.ico and /dev/null differ diff --git a/branding/assets/demo/icon.png b/branding/assets/demo/icon.png deleted file mode 100644 index fb1aacd..0000000 Binary files a/branding/assets/demo/icon.png and /dev/null differ diff --git a/branding/assets/demo/icon.svg b/branding/assets/demo/icon.svg deleted file mode 100644 index a19c6c6..0000000 --- a/branding/assets/demo/icon.svg +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/branding/assets/demolib b/branding/assets/demolib deleted file mode 120000 index efd261b..0000000 --- a/branding/assets/demolib +++ /dev/null @@ -1 +0,0 @@ -demo \ No newline at end of file diff --git a/branding/assets/riseup/icon.bmp b/branding/assets/riseup/icon.bmp deleted file mode 100644 index 9e918e4..0000000 Binary files a/branding/assets/riseup/icon.bmp and /dev/null differ diff --git a/branding/assets/riseup/icon.icns b/branding/assets/riseup/icon.icns deleted file mode 100644 index b4c9a20..0000000 Binary files a/branding/assets/riseup/icon.icns and /dev/null differ diff --git a/branding/assets/riseup/icon.ico b/branding/assets/riseup/icon.ico deleted file mode 100755 index c65c9e1..0000000 Binary files a/branding/assets/riseup/icon.ico and /dev/null differ diff --git a/branding/assets/riseup/icon.png b/branding/assets/riseup/icon.png deleted file mode 100755 index 492d850..0000000 Binary files a/branding/assets/riseup/icon.png and /dev/null differ diff --git a/branding/assets/riseup/icon.svg b/branding/assets/riseup/icon.svg deleted file mode 100644 index a19c6c6..0000000 --- a/branding/assets/riseup/icon.svg +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/branding/assets/riseup/osx-background.png b/branding/assets/riseup/osx-background.png deleted file mode 100644 index 0e6cbf6..0000000 Binary files a/branding/assets/riseup/osx-background.png and /dev/null differ diff --git a/branding/config/calyx-ca.crt b/branding/config/calyx-ca.crt deleted file mode 100644 index 2923144..0000000 --- a/branding/config/calyx-ca.crt +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQ0FADBEMQ4wDAYDVQQKDAVjYWx5 -eDEaMBgGA1UECwwRaHR0cHM6Ly9jYWx5eC5uZXQxFjAUBgNVBAMMDWNhbHl4IFJv -b3QgQ0EwHhcNMTMwNzAyMDAwMDAwWhcNMjMwNzAyMDAwMDAwWjBEMQ4wDAYDVQQK -DAVjYWx5eDEaMBgGA1UECwwRaHR0cHM6Ly9jYWx5eC5uZXQxFjAUBgNVBAMMDWNh -bHl4IFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDupdnx -Bgat537XOqrZOulE/RvjoXB1S07sy9/MMtksXFoQuWJZRCSTp1Jaqg3H/e9o1nct -LQO91+izfJe07TUyajFl7CfllYgMeyKTYcT85dFwNX4pcIHZr8UpmO0MpGBoR4W1 -8cPa3vxAG0CsyUmrASJVyhRouk4qazRosM5RwBxTdMzCK7L3SwqPQoxlY9YmRJlD -XYZlK5VMJd0dj9XxhMeFs5n43R0bsDENryrExSbuxoNfnUoQg3wffKk+Z0gW7YgW -ivPsbObqOgXUuBEU0xr9xMNBpU33ffLIsccrHq1EKp8zGfCOcww6v7+zEadUkVLo -6j/rRhYYgRw9lijZG1rMuV/mTGnUqbjHsdoz5mzkFFWeTSqo44lvhveUyCcwRNmi -2sjS77l0fCTzfreufffFoOEcRVMRfsnJdu/xPeARoXILEx8nQ421mSn6spOZlDQr -Tt0T0BAWt+VNc+m0IGSW3SwS7r5MUyQ/M5GrbQBGi5W2SzPriKZ79YTOwPVmXKLZ -vJoEuKRDkEPJLBAhcD5oSQljOm/Wp/hjmRH4HnI1y4XMshWlDsyRDB1Au5yrsfwN -noFVSskEcbXlZfNgml4lktLBqz+qwsw+voq6Ak7ROKbc0ii5s8+iNMbAtIK7GcFF -kuKKIyRmmGlDim/SDhlNdWo7Ah4Akde7zfWufwIDAQABo2AwXjAdBgNVHQ4EFgQU -AY8+K4ZupAQ+L9ttFJG3vaLBq5gwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMB -Af8wHwYDVR0jBBgwFoAUAY8+K4ZupAQ+L9ttFJG3vaLBq5gwDQYJKoZIhvcNAQEN -BQADggIBAOpXi5o3g/2o2rPa53iG7Zgcy8RpePGgZk6xknGYWeLamEqSh+XWQZ2w -2kQP54bf8HfPj3ugJBWsVtYAs/ltJwzeBfYDrwEJd1N8tw2IRuGlQOWiTAVVLBj4 -Zs+dikSuMoA399f/7BlUIEpVLUiV/emTtbkjFnDeKEV9zql6ypR0BtR8Knf8ALvL -YfMsWLvTe4rXeypzxIaE2pn8ttcXLYAX0ml2MofTi5xcDhMn1vznKIvs82xhncQx -I1MJMWqPHNHgJUJpA+y1IFh5LPbpag9PKQ0yQ9sM+/dyGumF2jElsMw71flh/Txr -2dEv8+FNV1pPK26XJZBK24rNWFs30eAFfH9EQCwVla174I4PDoWqsIR7vtQMObDt -Bq34R3TjjJJIt2sCSlYLooWwiK7Q+d/SgYqA+MSDmmwhzm86ToK6cwbCsvuw1AxR -X6VIs4U8wOotgljzX/CSpKqlxcqZjhnAuelZ1+KiN8RHKPj7AzSLYOv/YwTjLTIq -EOxquoNR58uDa5pBG22a7xWbSaKosn/mEl8SrUr6klzzc8Vh09IMoxrw74uLdAg2 -1jnrhm7qg91Ttb0aXiqbV+Kg/qQzojdewnnoBFnv4jaQ3y8zDCfMhsBtWlWz4Knb -Zqga1WyRm3Gj1j6IV0oOincYMrw5YA7bgXpwop/Lo/mmliMA14ps ------END CERTIFICATE----- diff --git a/branding/config/demo-ca.crt b/branding/config/demo-ca.crt deleted file mode 100644 index 80d41c3..0000000 --- a/branding/config/demo-ca.crt +++ /dev/null @@ -1,32 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFbzCCA1egAwIBAgIBATANBgkqhkiG9w0BAQ0FADBKMRgwFgYDVQQDDA9CaXRt -YXNrIFJvb3QgQ0ExEDAOBgNVBAoMB0JpdG1hc2sxHDAaBgNVBAsME2h0dHBzOi8v -Yml0bWFzay5uZXQwHhcNMTIxMTA2MDAwMDAwWhcNMjIxMTA2MDAwMDAwWjBKMRgw -FgYDVQQDDA9CaXRtYXNrIFJvb3QgQ0ExEDAOBgNVBAoMB0JpdG1hc2sxHDAaBgNV -BAsME2h0dHBzOi8vYml0bWFzay5uZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQC1eV4YvayaU+maJbWrD4OHo3d7S1BtDlcvkIRS1Fw3iYDjsyDkZxai -dHp4EUasfNQ+EVtXUvtk6170EmLco6Elg8SJBQ27trE6nielPRPCfX3fQzETRfvB -7tNvGw4Jn2YKiYoMD79kkjgyZjkJ2r/bEHUSevmR09BRp86syHZerdNGpXYhcQ84 -CA1+V+603GFIHnrP+uQDdssW93rgDNYu+exT+Wj6STfnUkugyjmPRPjL7wh0tzy+ -znCeLl4xiV3g9sjPnc7r2EQKd5uaTe3j71sDPF92KRk0SSUndREz+B1+Dbe/RGk4 -MEqGFuOzrtsgEhPIX0hplhb0Tgz/rtug+yTT7oJjBa3u20AAOQ38/M99EfdeJvc4 -lPFF1XBBLh6X9UKF72an2NuANiX6XPySnJgZ7nZ09RiYZqVwu/qt3DfvLfhboq+0 -bQvLUPXrVDr70onv5UDjpmEA/cLmaIqqrduuTkFZOym65/PfAPvpGnt7crQj/Ibl -DEDYZQmP7AS+6zBjoOzNjUGE5r40zWAR1RSi7zliXTu+yfsjXUIhUAWmYR6J3KxB -lfsiHBQ+8dn9kC3YrUexWoOqBiqJOAJzZh5Y1tqgzfh+2nmHSB2dsQRs7rDRRlyy -YMbkpzL9ZsOUO2eTP1mmar6YjCN+rggYjRrX71K2SpBG6b1zZxOG+wIDAQABo2Aw -XjAdBgNVHQ4EFgQUuYGDLL2sswnYpHHvProt1JU+D48wDgYDVR0PAQH/BAQDAgIE -MAwGA1UdEwQFMAMBAf8wHwYDVR0jBBgwFoAUuYGDLL2sswnYpHHvProt1JU+D48w -DQYJKoZIhvcNAQENBQADggIBADeG67vaFcbITGpi51264kHPYPEWaXUa5XYbtmBl -cXYyB6hY5hv/YNuVGJ1gWsDmdeXEyj0j2icGQjYdHRfwhrbEri+h1EZOm1cSBDuY -k/P5+ctHyOXx8IE79DBsZ6IL61UKIaKhqZBfLGYcWu17DVV6+LT+AKtHhOrv3TSj -RnAcKnCbKqXLhUPXpK0eTjPYS2zQGQGIhIy9sQXVXJJJsGrPgMxna1Xw2JikBOCG -htD/JKwt6xBmNwktH0GI/LVtVgSp82Clbn9C4eZN9E5YbVYjLkIEDhpByeC71QhX -EIQ0ZR56bFuJA/CwValBqV/G9gscTPQqd+iETp8yrFpAVHOW+YzSFbxjTEkBte1J -aF0vmbqdMAWLk+LEFPQRptZh0B88igtx6tV5oVd+p5IVRM49poLhuPNJGPvMj99l -mlZ4+AeRUnbOOeAEuvpLJbel4rhwFzmUiGoeTVoPZyMevWcVFq6BMkS+jRR2w0jK -G6b0v5XDHlcFYPOgUrtsOBFJVwbutLvxdk6q37kIFnWCd8L3kmES5q4wjyFK47Co -Ja8zlx64jmMZPg/t3wWqkZgXZ14qnbyG5/lGsj5CwVtfDljrhN0oCWK1FZaUmW3d -69db12/g4f6phldhxiWuGC/W6fCW5kre7nmhshcltqAJJuU47iX+DarBFiIj816e -yV8e ------END CERTIFICATE----- diff --git a/branding/config/demolib-ca.crt b/branding/config/demolib-ca.crt deleted file mode 100644 index ae726f4..0000000 --- a/branding/config/demolib-ca.crt +++ /dev/null @@ -1,10 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBQzCB6aADAgECAgEBMAoGCCqGSM49BAMCMBcxFTATBgNVBAMTDExFQVAgUm9v -dCBDQTAeFw0yMDA4MDYxOTA3NDRaFw0yNTA4MDYxOTEyNDRaMBcxFTATBgNVBAMT -DExFQVAgUm9vdCBDQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIG5POr4cAdK -kTavKpSJr8nW1V7HLpr27qKaShpk1TUy5ipaAlusmavGLxKsPE+i3AMlvf/f6ch3 -1MjAtIf5rYujJjAkMA4GA1UdDwEB/wQEAwICpDASBgNVHRMBAf8ECDAGAQH/AgEB -MAoGCCqGSM49BAMCA0kAMEYCIQDXj280LNZbSbi0Y2WvtQrJBUw4wdm8qAeOeuH7 -6XiLEwIhAPBRsmst/ujcChsG2t6LpG+p8s4rfIfh8YLo/4qrcc5p ------END CERTIFICATE----- - diff --git a/branding/config/riseup-ca.crt b/branding/config/riseup-ca.crt deleted file mode 100644 index cbec39c..0000000 --- a/branding/config/riseup-ca.crt +++ /dev/null @@ -1,32 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFjTCCA3WgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBZMRgwFgYDVQQKDA9SaXNl -dXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UE -AwwXUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EwHhcNMTQwNDI4MDAwMDAwWhcNMjQw -NDI4MDAwMDAwWjBZMRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsM -Emh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UEAwwXUmlzZXVwIE5ldHdvcmtzIFJv -b3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC76J4ciMJ8Sg0m -TP7DF2DT9zNe0Csk4myoMFC57rfJeqsAlJCv1XMzBmXrw8wq/9z7XHv6n/0sWU7a -7cF2hLR33ktjwODlx7vorU39/lXLndo492ZBhXQtG1INMShyv+nlmzO6GT7ESfNE -LliFitEzwIegpMqxCIHXFuobGSCWF4N0qLHkq/SYUMoOJ96O3hmPSl1kFDRMtWXY -iw1SEKjUvpyDJpVs3NGxeLCaA7bAWhDY5s5Yb2fA1o8ICAqhowurowJpW7n5ZuLK -5VNTlNy6nZpkjt1QycYvNycffyPOFm/Q/RKDlvnorJIrihPkyniV3YY5cGgP+Qkx -HUOT0uLA6LHtzfiyaOqkXwc4b0ZcQD5Vbf6Prd20Ppt6ei0zazkUPwxld3hgyw58 -m/4UIjG3PInWTNf293GngK2Bnz8Qx9e/6TueMSAn/3JBLem56E0WtmbLVjvko+LF -PM5xA+m0BmuSJtrD1MUCXMhqYTtiOvgLBlUm5zkNxALzG+cXB28k6XikXt6MRG7q -hzIPG38zwkooM55yy5i1YfcIi5NjMH6A+t4IJxxwb67MSb6UFOwg5kFokdONZcwj -shczHdG9gLKSBIvrKa03Nd3W2dF9hMbRu//STcQxOailDBQCnXXfAATj9pYzdY4k -ha8VCAREGAKTDAex9oXf1yRuktES4QIDAQABo2AwXjAdBgNVHQ4EFgQUC4tdmLVu -f9hwfK4AGliaet5KkcgwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMBAf8wHwYD -VR0jBBgwFoAUC4tdmLVuf9hwfK4AGliaet5KkcgwDQYJKoZIhvcNAQENBQADggIB -AGzL+GRnYu99zFoy0bXJKOGCF5XUXP/3gIXPRDqQf5g7Cu/jYMID9dB3No4Zmf7v -qHjiSXiS8jx1j/6/Luk6PpFbT7QYm4QLs1f4BlfZOti2KE8r7KRDPIecUsUXW6P/ -3GJAVYH/+7OjA39za9AieM7+H5BELGccGrM5wfl7JeEz8in+V2ZWDzHQO4hMkiTQ -4ZckuaL201F68YpiItBNnJ9N5nHr1MRiGyApHmLXY/wvlrOpclh95qn+lG6/2jk7 -3AmihLOKYMlPwPakJg4PYczm3icFLgTpjV5sq2md9bRyAg3oPGfAuWHmKj2Ikqch -Td5CHKGxEEWbGUWEMP0s1A/JHWiCbDigc4Cfxhy56CWG4q0tYtnc2GMw8OAUO6Wf -Xu5pYKNkzKSEtT/MrNJt44tTZWbKV/Pi/N2Fx36my7TgTUj7g3xcE9eF4JV2H/sg -tsK3pwE0FEqGnT4qMFbixQmc8bGyuakr23wjMvfO7eZUxBuWYR2SkcP26sozF9PF -tGhbZHQVGZUTVPyvwahMUEhbPGVerOW0IYpxkm0x/eaWdTc4vPpf/rIlgbAjarnJ -UN9SaWRlWKSdP4haujnzCoJbM7dU9bjvlGZNyXEekgeT0W2qFeGGp+yyUWw8tNsp -0BuC1b7uW/bBn/xKm319wXVDvBgZgcktMolak39V7DVO ------END CERTIFICATE----- diff --git a/branding/config/vendor.conf b/branding/config/vendor.conf deleted file mode 100644 index d9e6a25..0000000 --- a/branding/config/vendor.conf +++ /dev/null @@ -1,63 +0,0 @@ -[default] - -provider = riseup - -[riseup] - -name = Riseup -applicationName = RiseupVPN -binaryName = riseup-vpn - -providerURL = riseup.net -auth = anon -apiURL = https://api.black.riseup.net/ -caURL = https://black.riseup.net/ca.crt - -infoURL = https://riseup.net/vpn -tosURL = https://riseup.net/tos -helpURL = https://riseup.net/support - -geolocationAPI = https://api.black.riseup.net:9001/json -askForDonations = true -donateURL = https://riseup.net/vpn/donate - - -[calyx] - -name = Calyx -applicationName = CalyxVPN -binaryName = calyx-vpn - -providerURL = https://calyx.net -auth = anon -apiURL = https://api.calyx.net:4430/ -caURL = https://calyx.net/ca.crt - -infoURL = https://calyx.net/ -tosURL = https://calyx.net/tos -helpURL = https://calyx.net/support - -geolocationAPI = https://api.black.riseup.net:9001/json -askForDonations = false -donateURL = - - -[demolib] - -name = demolib -applicationName = DemoLibVPN -binaryName = demolib-vpn -auth = sip -authEmptyPass = true - -providerURL = vpnlib.bitmask.net -apiURL = https://api.vpnlib.bitmask.net:4430/ -caURL = https://api.vpnlib.bitmask.net/ca.crt - -infoURL = https://libraryvpn.org/ -tosURL = https://libraryvpn.org/ -helpURL = https://libraryvpn.org/ - -geolocationAPI = https://getmyip.vpnlib.bitmask.net/json -askForDonations = false -donateURL = diff --git a/branding/scripts/ASSETS_LIST b/branding/scripts/ASSETS_LIST deleted file mode 100644 index 71c89e3..0000000 --- a/branding/scripts/ASSETS_LIST +++ /dev/null @@ -1,2 +0,0 @@ -svg/icon.svg -ico/logo.ico diff --git a/branding/scripts/ASSETS_REQUIRED b/branding/scripts/ASSETS_REQUIRED new file mode 100644 index 0000000..b1889d1 --- /dev/null +++ b/branding/scripts/ASSETS_REQUIRED @@ -0,0 +1,3 @@ +icon.svg +icon.ico +icon.icns diff --git a/branding/scripts/check b/branding/scripts/check index 07b2a71..aab962e 100755 --- a/branding/scripts/check +++ b/branding/scripts/check @@ -1,4 +1,64 @@ #!/usr/bin/env python3 +import os +import sys + +# TODO check file list +# TODO remove fom README + +VENDOR_PATH = None + +def getVendorPath(): + global VENDOR_PATH + VENDOR_PATH = os.environ.get("VENDOR_PATH") + if not VENDOR_PATH: + print("[ERROR] VENDOR_PATH not set") + sys.exit(1) + + if not os.path.isdir(os.path.abspath(VENDOR_PATH)): + print("[ERROR] VENDOR_PATH folder does not exist:", VENDOR_PATH) + sys.exit(1) + +def checkCAFile(provider): + caFile = os.path.join(os.path.abspath(VENDOR_PATH), provider, provider + '-ca.crt') + if not os.path.isfile(caFile): + print("ERROR: Missing provider CA file:", caFile) + sys.exit(1) + print('[+] CA file ok:', caFile) + +def checkAssets(provider): + top = os.path.join(os.path.abspath(VENDOR_PATH), 'assets') + if os.path.isdir(top): + ok = checkAssetFiles(top) + if ok: + return + under = os.path.join(os.path.abspath(VENDOR_PATH), provider, 'assets') + if os.path.isdir(under): + ok = checkAssetFiles(under) + if ok: + return + print('[!] ERROR: cannot find some assets for provider {provider}'.format(provider=provider)) + sys.exit(1) + +def checkAssetFiles(path): + for item in allAssets(): + asset = os.path.join(path, item) + if not os.path.isfile(asset): + print("[!] Error: missing asset file:", asset) + return False + return True + +def allAssets(): + with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "ASSETS_REQUIRED")) as f: + allAssets = f.readlines() + return list(map(lambda s: s.strip(), allAssets)) + if __name__ == "__main__": - print("[+] Checking your provider config... (WIP)") + print("[+] Checking your provider config...") + provider = sys.argv[1] + if not provider: + print("ERROR: must pass provider as first argument") + sys.exit(1) + getVendorPath() + checkCAFile(provider) + checkAssets(provider) diff --git a/branding/scripts/check-ca-crt b/branding/scripts/check-ca-crt new file mode 100755 index 0000000..7458263 --- /dev/null +++ b/branding/scripts/check-ca-crt @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 +import os +import re +import sys +import configparser +import urllib.request + +SCRIPT_NAME = 'check-ca-crt' +VENDOR_PATH = None + +USAGE = '''Check that the stored provider CA matches the one announced online. +Usage: {name} + +Example: {name} riseup'''.format(name=SCRIPT_NAME) + + +def getLocalCert(provider): + with open(os.path.join(VENDOR_PATH, provider, + '{provider}-ca.crt'.format(provider=sanitize(provider).lower()))) as crt: + return crt.read().strip() + + +def getRemoteCert(uri): + print("... checking cert from", uri) + fp = urllib.request.urlopen(uri) + remote_cert = fp.read().decode('utf-8').strip() + fp.close() + return remote_cert + +def getUriForProvider(provider, configfile): + c = configparser.ConfigParser() + c.read(configfile) + return c[provider]['caURL'] + +def sanitize(s): + return re.sub(r'[^\w\s-]', '', s).strip() + +if __name__ == '__main__': + VENDOR_PATH = os.environ.get('VENDOR_PATH') + + if not VENDOR_PATH: + print('[!] ERROR: Please set VENDOR_PATH variable first') + sys.exit(1) + if not os.path.isdir(os.path.abspath(VENDOR_PATH)): + print('[!] ERROR: VENDOR_PATH points to non-existent dir') + sys.exit(1) + + if len(sys.argv) != 2: + print('[!] Not enough arguments') + print(USAGE) + sys.exit(1) + + provider = sys.argv[1] + config = os.path.abspath(os.path.join(VENDOR_PATH, 'vendor.conf')) + if not os.path.isfile(config): + print('[!] ERROR: cannot open {config}') + sys.exit(1) + + try: + uri = getUriForProvider(provider, config) + except IndexError: + print('[!] Misconfigured provider') + sys.exit(1) + + local = getLocalCert(provider) + remote = getRemoteCert(uri) + + try: + assert local == remote + except AssertionError: + print('[!] ERROR: remote and local CA certs do not match') + sys.exit(1) + else: + print('OK: local CA matches what provider announces') diff --git a/branding/scripts/check-ca-crt.py b/branding/scripts/check-ca-crt.py deleted file mode 100755 index dbf9b40..0000000 --- a/branding/scripts/check-ca-crt.py +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env python3 -import re -import sys -import configparser -import urllib.request - -SCRIPT_NAME = 'check-ca-crt.py' - -USAGE = '''Check that the stored provider CA matches the one announced online. -Usage: {name} - -Example: {name} riseup branding/config/vendor.conf'''.format(name=SCRIPT_NAME) - - -def getLocalCert(provider): - sanitized = re.sub(r'[^\w\s-]', '', provider).strip().lower() - with open('branding/config/' - '{provider}-ca.crt'.format(provider=sanitized)) as crt: - return crt.read().strip() - - -def getRemoteCert(uri): - print("... checking cert from", uri) - fp = urllib.request.urlopen(uri) - remote_cert = fp.read().decode('utf-8').strip() - fp.close() - return remote_cert - - -def getUriForProvider(provider, configfile): - c = configparser.ConfigParser() - c.read(configfile) - return c[provider]['caURL'] - - -if __name__ == '__main__': - - if len(sys.argv) != 3: - print('[!] Not enough arguments') - print(USAGE) - sys.exit(1) - - provider = sys.argv[1] - config = sys.argv[2] - - try: - uri = getUriForProvider(provider, config) - except IndexError: - print('[!] Misconfigured provider') - sys.exit(1) - - local = getLocalCert(provider) - remote = getRemoteCert(uri) - - try: - assert local == remote - except AssertionError: - print('[!] ERROR: remote and local CA certs do not match') - sys.exit(1) - else: - print('OK: local CA matches what provider announces') diff --git a/branding/scripts/getparam b/branding/scripts/getparam index 2b87e1e..235745d 100755 --- a/branding/scripts/getparam +++ b/branding/scripts/getparam @@ -13,9 +13,10 @@ from provider import getProviderData def getData(): here = os.path.abspath(os.path.dirname(__file__)) - configPath = os.path.join(here, '../../branding/config/vendor.conf') + vendorPath = os.environ.get('VENDOR_PATH') + configPath = os.path.join(vendorPath, 'vendor.conf') if not os.path.isfile(configPath): - print("ERROR: path does not exist", config) + print("ERROR: path does not exist", configPath) os.exit(1) config = configparser.ConfigParser() config.read(configPath) diff --git a/branding/scripts/init b/branding/scripts/init index ba9ce52..4c57d43 100755 --- a/branding/scripts/init +++ b/branding/scripts/init @@ -2,13 +2,15 @@ # (c) LEAP Encryption Access Project 2020 # License: GPL +import string import subprocess import sys import os VENDOR_PATH = None +PROVIDER=None SCRIPT_NAME = sys.argv[0] -CA_README = "config/CERT.Readme" +CA_README = "CERT.Readme" ASSETS_README = "assets/FILES.Readme" def initVendor(): @@ -17,9 +19,9 @@ def initVendor(): bail("ERROR: Please set VENDOR_PATH environment variable.") VENDOR_PATH = os.path.abspath(VENDOR_PATH) if os.path.isdir(VENDOR_PATH): - bail("ERROR: VENDOR_PATH folder already exists") + bail("ERROR: VENDOR_PATH folder already exists {path}".format(path=VENDOR_PATH)) - for d in ["config", "assets", "pkg"]: + for d in ["assets"]: os.makedirs(os.path.join(VENDOR_PATH, d)) initVendorConfig() @@ -27,10 +29,12 @@ def initVendor(): displayRepoInfo() def displayRepoInfo(): + print() print("[+] Initialized repo in", VENDOR_PATH) - print(f"[ ] - Add the assets in the assets/ folder, see {ASSETS_README}.") - print(f"[ ] - Add the CA certificate in the config/ folder, see {CA_README}.") - print("[ ] - Remember to commit your changes.") + print() + print(f"- Please add all the needed assets. See {VENDOR_PATH}/{ASSETS_README}.") + print(f"- Add your provider's CA certificate, see see {VENDOR_PATH}/{PROVIDER}/{CA_README}.") + print("- Remember to commit your changes.") print() print("[+] After doing that, you can run 'make vendor_check' to validate the configuration for your provider.") @@ -46,15 +50,42 @@ def bail(msg=None): def getVendorPath(): return os.environ.get('VENDOR_PATH') +def sanitize(word): + result = "" + for letter in word: + if letter in string.ascii_letters: + result = result + letter.lower() + return result + +def getProvider(): + provider = os.environ.get('PROVIDER') + if not provider: + provider = input('> provider name? ') + provider = sanitize(provider) + print("[+] provider name:", provider) + return provider + +def getProviderURL(): + url = os.environ.get('PROVIDER_URL') + if not url : + url = input('> provider url?: https://') + return url.replace('https://', '').replace('/', '') + +def getAppName(provider): + return provider[0].capitalize() + provider[1:] + "VPN" + def initVendorConfig(): + with open(os.path.join(VENDOR_PATH, "vendor.conf"), "w") as f: + f.write(getConf()) - with open(os.path.join(VENDOR_PATH, "config", "vendor.conf"), "w") as f: - f.write(CONF_TEMPLATE) + caDir = os.path.join(VENDOR_PATH, PROVIDER) + print("CADIR??", caDir) - with open(os.path.join(VENDOR_PATH, CA_README), "w") as f: - f.write(CA_INFO) + os.makedirs(caDir, exist_ok=True) + with open(os.path.join(caDir, CA_README), "w") as f: + f.write(getCAInfo()) - with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "ASSETS_LIST")) as f: + with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "ASSETS_REQUIRED")) as f: allAssets = f.read() with open(os.path.join(VENDOR_PATH, ASSETS_README), "w") as f: @@ -69,34 +100,44 @@ def initGitRepo(): CONF_TEMPLATE = """[default] -provider = myprovider +provider = {provider} -[myprovider] +[{provider}] -name = MyProvider -applicationName = MyProviderVPN -binaryName = myprovider-vpn +name = {provider} +applicationName = {appName} +binaryName = {provider}-vpn -providerURL = example.org +providerURL = https://{providerURL} auth = anon -apiURL = https://api.myprovider.net/ -caURL = https://myprovider.net/ca.crt +apiURL = https://api.{providerURL}/ +caURL = https://{providerURL}/ca.crt -infoURL = https://myprovider.net/vpn -tosURL = https://myprovider.net/tos -helpURL = https://myprovider.net/support +infoURL = https://{providerURL}/vpn +tosURL = https://{providerURL}/tos +helpURL = https://{providerURL}/support -geolocationAPI = https://myprovider.net:9001/json +geolocationAPI = https://{providerURL}:9001/json -askForDonations = true -donateURL = https://myprovider.net/vpn/donate +askForDonations = false +donateURL = https://{providerURL}/vpn/donate """ +def getConf(): + return CONF_TEMPLATE.format( + provider=PROVIDER, + appName=getAppName(PROVIDER), + providerURL=PROVIDER_URL) + + CA_INFO = """Place in this folder your provider's CA certificate, with the name: - -ca.crt + {provider}-ca.crt """ +def getCAInfo(): + return CA_INFO.format(provider=PROVIDER) + ASSETS_INFO = """This is the list of assets that you MUST place in this folder for your provider: """ @@ -104,5 +145,8 @@ ASSETS_INFO = """This is the list of assets that you MUST place in this folder f if __name__ == "__main__": if len(sys.argv) != 1: bail() + VENDOR_PATH = getVendorPath() + PROVIDER = getProvider() + PROVIDER_URL = getProviderURL() initVendor() diff --git a/docs/branding.rst b/docs/branding.rst new file mode 100644 index 0000000..6c7a0d9 --- /dev/null +++ b/docs/branding.rst @@ -0,0 +1,63 @@ +BitmaskVPN Branding Procedure +================================================================================ + +This document contains the instructions to generate a custom build of the +Desktop BitmaskVPN app for a given provider. + +Configure +-------------------------------------------------------------------------------- + +All the needed information to vendorize BitmaskVPN are contained in an external +folder, where you will place the connection details to your own provider and +any asset that you want to customize. To start a new vendoring project, you need +to initialize a new repo for your provider: + + export VENDOR_PATH=../leapvpn-myprovider-pkg + make vendor_init + +Follow the directions in the output of the above command. Basically you need to +configure your provider CA certificate, and some graphical assets: + + * Copy your provider CA certificate to the same folder: '-ca.crt' + * Check the list of assets at 'assets/FILES.Readme'. + +You can validate your configuration: + + VENDOR_PATH=../myprovider-vpn-pkg vendor_check + +This will fetch your provider's CA against the one you have configured. If you +want to skip the online check, set the `SKIP_CACHECK` to "yes". + +Checkout the source +-------------------------------------------------------------------------------- + + git clone https://0xacab.org/leap/bitmask-vpn + cd bitmask-vpn + git pull --tags + + +Build & package +-------------------------------------------------------------------------------- + +NOTE: Some of the following scripts need network access, since they will check +whether the configuration published by your provider matches what is configured +before the build. If you want to skip this check, pass `SKIP_CACHECK=yes` + +Run:: + + VENDOR_PATH=../myprovider-vpn-pkg make vendor + +Then you can build the binaries for some quick manual testing:: + + make build + +Now you can build the installer for your host platform:: + + make build_installer + +Previously we had a cross-compilation setup in place. Cross compilation will be added back in the future. + +For debian and snap packages (FIXME -- WORK IN PROGRESS): + + make debian + make snap diff --git a/providers/calyx/assets/icon.bmp b/providers/calyx/assets/icon.bmp new file mode 100644 index 0000000..c9e1b0a Binary files /dev/null and b/providers/calyx/assets/icon.bmp differ diff --git a/providers/calyx/assets/icon.icns b/providers/calyx/assets/icon.icns new file mode 100644 index 0000000..1fd6045 Binary files /dev/null and b/providers/calyx/assets/icon.icns differ diff --git a/providers/calyx/assets/icon.ico b/providers/calyx/assets/icon.ico new file mode 100644 index 0000000..1950733 Binary files /dev/null and b/providers/calyx/assets/icon.ico differ diff --git a/providers/calyx/assets/icon.png b/providers/calyx/assets/icon.png new file mode 100644 index 0000000..5b0e175 Binary files /dev/null and b/providers/calyx/assets/icon.png differ diff --git a/providers/calyx/assets/icon.svg b/providers/calyx/assets/icon.svg new file mode 100644 index 0000000..b9d83af --- /dev/null +++ b/providers/calyx/assets/icon.svg @@ -0,0 +1,16375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/providers/calyx/calyx-ca.crt b/providers/calyx/calyx-ca.crt new file mode 100644 index 0000000..2923144 --- /dev/null +++ b/providers/calyx/calyx-ca.crt @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQ0FADBEMQ4wDAYDVQQKDAVjYWx5 +eDEaMBgGA1UECwwRaHR0cHM6Ly9jYWx5eC5uZXQxFjAUBgNVBAMMDWNhbHl4IFJv +b3QgQ0EwHhcNMTMwNzAyMDAwMDAwWhcNMjMwNzAyMDAwMDAwWjBEMQ4wDAYDVQQK +DAVjYWx5eDEaMBgGA1UECwwRaHR0cHM6Ly9jYWx5eC5uZXQxFjAUBgNVBAMMDWNh +bHl4IFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDupdnx +Bgat537XOqrZOulE/RvjoXB1S07sy9/MMtksXFoQuWJZRCSTp1Jaqg3H/e9o1nct +LQO91+izfJe07TUyajFl7CfllYgMeyKTYcT85dFwNX4pcIHZr8UpmO0MpGBoR4W1 +8cPa3vxAG0CsyUmrASJVyhRouk4qazRosM5RwBxTdMzCK7L3SwqPQoxlY9YmRJlD +XYZlK5VMJd0dj9XxhMeFs5n43R0bsDENryrExSbuxoNfnUoQg3wffKk+Z0gW7YgW +ivPsbObqOgXUuBEU0xr9xMNBpU33ffLIsccrHq1EKp8zGfCOcww6v7+zEadUkVLo +6j/rRhYYgRw9lijZG1rMuV/mTGnUqbjHsdoz5mzkFFWeTSqo44lvhveUyCcwRNmi +2sjS77l0fCTzfreufffFoOEcRVMRfsnJdu/xPeARoXILEx8nQ421mSn6spOZlDQr +Tt0T0BAWt+VNc+m0IGSW3SwS7r5MUyQ/M5GrbQBGi5W2SzPriKZ79YTOwPVmXKLZ +vJoEuKRDkEPJLBAhcD5oSQljOm/Wp/hjmRH4HnI1y4XMshWlDsyRDB1Au5yrsfwN +noFVSskEcbXlZfNgml4lktLBqz+qwsw+voq6Ak7ROKbc0ii5s8+iNMbAtIK7GcFF +kuKKIyRmmGlDim/SDhlNdWo7Ah4Akde7zfWufwIDAQABo2AwXjAdBgNVHQ4EFgQU +AY8+K4ZupAQ+L9ttFJG3vaLBq5gwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMB +Af8wHwYDVR0jBBgwFoAUAY8+K4ZupAQ+L9ttFJG3vaLBq5gwDQYJKoZIhvcNAQEN +BQADggIBAOpXi5o3g/2o2rPa53iG7Zgcy8RpePGgZk6xknGYWeLamEqSh+XWQZ2w +2kQP54bf8HfPj3ugJBWsVtYAs/ltJwzeBfYDrwEJd1N8tw2IRuGlQOWiTAVVLBj4 +Zs+dikSuMoA399f/7BlUIEpVLUiV/emTtbkjFnDeKEV9zql6ypR0BtR8Knf8ALvL +YfMsWLvTe4rXeypzxIaE2pn8ttcXLYAX0ml2MofTi5xcDhMn1vznKIvs82xhncQx +I1MJMWqPHNHgJUJpA+y1IFh5LPbpag9PKQ0yQ9sM+/dyGumF2jElsMw71flh/Txr +2dEv8+FNV1pPK26XJZBK24rNWFs30eAFfH9EQCwVla174I4PDoWqsIR7vtQMObDt +Bq34R3TjjJJIt2sCSlYLooWwiK7Q+d/SgYqA+MSDmmwhzm86ToK6cwbCsvuw1AxR +X6VIs4U8wOotgljzX/CSpKqlxcqZjhnAuelZ1+KiN8RHKPj7AzSLYOv/YwTjLTIq +EOxquoNR58uDa5pBG22a7xWbSaKosn/mEl8SrUr6klzzc8Vh09IMoxrw74uLdAg2 +1jnrhm7qg91Ttb0aXiqbV+Kg/qQzojdewnnoBFnv4jaQ3y8zDCfMhsBtWlWz4Knb +Zqga1WyRm3Gj1j6IV0oOincYMrw5YA7bgXpwop/Lo/mmliMA14ps +-----END CERTIFICATE----- diff --git a/providers/demolib/demolib-ca.crt b/providers/demolib/demolib-ca.crt new file mode 100644 index 0000000..ae726f4 --- /dev/null +++ b/providers/demolib/demolib-ca.crt @@ -0,0 +1,10 @@ +-----BEGIN CERTIFICATE----- +MIIBQzCB6aADAgECAgEBMAoGCCqGSM49BAMCMBcxFTATBgNVBAMTDExFQVAgUm9v +dCBDQTAeFw0yMDA4MDYxOTA3NDRaFw0yNTA4MDYxOTEyNDRaMBcxFTATBgNVBAMT +DExFQVAgUm9vdCBDQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIG5POr4cAdK +kTavKpSJr8nW1V7HLpr27qKaShpk1TUy5ipaAlusmavGLxKsPE+i3AMlvf/f6ch3 +1MjAtIf5rYujJjAkMA4GA1UdDwEB/wQEAwICpDASBgNVHRMBAf8ECDAGAQH/AgEB +MAoGCCqGSM49BAMCA0kAMEYCIQDXj280LNZbSbi0Y2WvtQrJBUw4wdm8qAeOeuH7 +6XiLEwIhAPBRsmst/ujcChsG2t6LpG+p8s4rfIfh8YLo/4qrcc5p +-----END CERTIFICATE----- + diff --git a/providers/riseup/assets/icon.icns b/providers/riseup/assets/icon.icns new file mode 100644 index 0000000..b4c9a20 Binary files /dev/null and b/providers/riseup/assets/icon.icns differ diff --git a/providers/riseup/assets/icon.ico b/providers/riseup/assets/icon.ico new file mode 100755 index 0000000..c65c9e1 Binary files /dev/null and b/providers/riseup/assets/icon.ico differ diff --git a/providers/riseup/assets/icon.svg b/providers/riseup/assets/icon.svg new file mode 100644 index 0000000..a19c6c6 --- /dev/null +++ b/providers/riseup/assets/icon.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/providers/riseup/riseup-ca.crt b/providers/riseup/riseup-ca.crt new file mode 100644 index 0000000..cbec39c --- /dev/null +++ b/providers/riseup/riseup-ca.crt @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBZMRgwFgYDVQQKDA9SaXNl +dXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UE +AwwXUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EwHhcNMTQwNDI4MDAwMDAwWhcNMjQw +NDI4MDAwMDAwWjBZMRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsM +Emh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UEAwwXUmlzZXVwIE5ldHdvcmtzIFJv +b3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC76J4ciMJ8Sg0m +TP7DF2DT9zNe0Csk4myoMFC57rfJeqsAlJCv1XMzBmXrw8wq/9z7XHv6n/0sWU7a +7cF2hLR33ktjwODlx7vorU39/lXLndo492ZBhXQtG1INMShyv+nlmzO6GT7ESfNE +LliFitEzwIegpMqxCIHXFuobGSCWF4N0qLHkq/SYUMoOJ96O3hmPSl1kFDRMtWXY +iw1SEKjUvpyDJpVs3NGxeLCaA7bAWhDY5s5Yb2fA1o8ICAqhowurowJpW7n5ZuLK +5VNTlNy6nZpkjt1QycYvNycffyPOFm/Q/RKDlvnorJIrihPkyniV3YY5cGgP+Qkx +HUOT0uLA6LHtzfiyaOqkXwc4b0ZcQD5Vbf6Prd20Ppt6ei0zazkUPwxld3hgyw58 +m/4UIjG3PInWTNf293GngK2Bnz8Qx9e/6TueMSAn/3JBLem56E0WtmbLVjvko+LF +PM5xA+m0BmuSJtrD1MUCXMhqYTtiOvgLBlUm5zkNxALzG+cXB28k6XikXt6MRG7q +hzIPG38zwkooM55yy5i1YfcIi5NjMH6A+t4IJxxwb67MSb6UFOwg5kFokdONZcwj +shczHdG9gLKSBIvrKa03Nd3W2dF9hMbRu//STcQxOailDBQCnXXfAATj9pYzdY4k +ha8VCAREGAKTDAex9oXf1yRuktES4QIDAQABo2AwXjAdBgNVHQ4EFgQUC4tdmLVu +f9hwfK4AGliaet5KkcgwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMBAf8wHwYD +VR0jBBgwFoAUC4tdmLVuf9hwfK4AGliaet5KkcgwDQYJKoZIhvcNAQENBQADggIB +AGzL+GRnYu99zFoy0bXJKOGCF5XUXP/3gIXPRDqQf5g7Cu/jYMID9dB3No4Zmf7v +qHjiSXiS8jx1j/6/Luk6PpFbT7QYm4QLs1f4BlfZOti2KE8r7KRDPIecUsUXW6P/ +3GJAVYH/+7OjA39za9AieM7+H5BELGccGrM5wfl7JeEz8in+V2ZWDzHQO4hMkiTQ +4ZckuaL201F68YpiItBNnJ9N5nHr1MRiGyApHmLXY/wvlrOpclh95qn+lG6/2jk7 +3AmihLOKYMlPwPakJg4PYczm3icFLgTpjV5sq2md9bRyAg3oPGfAuWHmKj2Ikqch +Td5CHKGxEEWbGUWEMP0s1A/JHWiCbDigc4Cfxhy56CWG4q0tYtnc2GMw8OAUO6Wf +Xu5pYKNkzKSEtT/MrNJt44tTZWbKV/Pi/N2Fx36my7TgTUj7g3xcE9eF4JV2H/sg +tsK3pwE0FEqGnT4qMFbixQmc8bGyuakr23wjMvfO7eZUxBuWYR2SkcP26sozF9PF +tGhbZHQVGZUTVPyvwahMUEhbPGVerOW0IYpxkm0x/eaWdTc4vPpf/rIlgbAjarnJ +UN9SaWRlWKSdP4haujnzCoJbM7dU9bjvlGZNyXEekgeT0W2qFeGGp+yyUWw8tNsp +0BuC1b7uW/bBn/xKm319wXVDvBgZgcktMolak39V7DVO +-----END CERTIFICATE----- diff --git a/providers/vendor.conf b/providers/vendor.conf new file mode 100644 index 0000000..d9e6a25 --- /dev/null +++ b/providers/vendor.conf @@ -0,0 +1,63 @@ +[default] + +provider = riseup + +[riseup] + +name = Riseup +applicationName = RiseupVPN +binaryName = riseup-vpn + +providerURL = riseup.net +auth = anon +apiURL = https://api.black.riseup.net/ +caURL = https://black.riseup.net/ca.crt + +infoURL = https://riseup.net/vpn +tosURL = https://riseup.net/tos +helpURL = https://riseup.net/support + +geolocationAPI = https://api.black.riseup.net:9001/json +askForDonations = true +donateURL = https://riseup.net/vpn/donate + + +[calyx] + +name = Calyx +applicationName = CalyxVPN +binaryName = calyx-vpn + +providerURL = https://calyx.net +auth = anon +apiURL = https://api.calyx.net:4430/ +caURL = https://calyx.net/ca.crt + +infoURL = https://calyx.net/ +tosURL = https://calyx.net/tos +helpURL = https://calyx.net/support + +geolocationAPI = https://api.black.riseup.net:9001/json +askForDonations = false +donateURL = + + +[demolib] + +name = demolib +applicationName = DemoLibVPN +binaryName = demolib-vpn +auth = sip +authEmptyPass = true + +providerURL = vpnlib.bitmask.net +apiURL = https://api.vpnlib.bitmask.net:4430/ +caURL = https://api.vpnlib.bitmask.net/ca.crt + +infoURL = https://libraryvpn.org/ +tosURL = https://libraryvpn.org/ +helpURL = https://libraryvpn.org/ + +geolocationAPI = https://getmyip.vpnlib.bitmask.net/json +askForDonations = false +donateURL = -- cgit v1.2.3