Merge branch 'develop' into 1064_tabs

This commit is contained in:
Micah Lee 2020-03-22 11:23:24 -07:00
commit 097f5f6047
No known key found for this signature in database
GPG Key ID: 403C2657CD994F73
7 changed files with 1241 additions and 68 deletions

View File

@ -1,3 +1,22 @@
# Index
* [Building OnionShare](#building-onionshare)
* [Linux](#linux)
* [For Debian-like distros](#for-debian-like-distros)
* [For Fedora-like distros](#for-fedora-like-distros)
* [macOS](#macos)
* [Windows](#windows)
* [Setting up your dev environment](#setting-up-your-dev-environment)
* [To make a .exe](#to-make-a-exe)
* [To build the installer](#to-build-the-installer)
* [Running tests](#running-tests)
* [Making releases](#making-releases)
* [Changelog, version, and signed git tag](#changelog-version-and-signed-git-tag)
* [Linux release](#linux-release)
* [macOS release](#macos-release)
* [Windows release](#windows-release)
* [Source package](#source-package)
* [Publishing the release](#publishing-the-release)
# Building OnionShare
Start by getting the source code:
@ -11,13 +30,13 @@ cd onionshare
Install the needed dependencies:
For Debian-like distros:
#### For Debian-like distros:
```
apt install -y python3-flask python3-stem python3-pyqt5 python3-crypto python3-socks python-nautilus tor obfs4proxy python3-pytest build-essential fakeroot python3-all python3-stdeb dh-python python3-flask-httpauth python3-distutils python3-psutil python3-watchdog
```
For Fedora-like distros:
#### For Fedora-like distros:
```
dnf install -y python3-flask python3-flask-httpauth python3-stem python3-qt5 python3-crypto python3-pysocks nautilus-python tor obfs4 python3-pytest rpm-build python3-psutil python3-watchdog
@ -36,7 +55,7 @@ Create a .deb on Debian-like distros: `./install/build_deb.sh`
Create a .rpm on Fedora-like distros: `./install/build_rpm.sh`
For OpenSuSE: There are instructions for building [in the wiki](https://github.com/micahflee/onionshare/wiki/Linux-Distribution-Support#opensuse-leap-150).
For openSUSE: There are instructions for building [in the wiki](https://github.com/micahflee/onionshare/wiki/Linux-Distribution-Support#opensuse-leap-150).
For ArchLinux: There is a PKBUILD available [here](https://aur.archlinux.org/packages/onionshare/) that can be used to install OnionShare.
@ -52,24 +71,17 @@ You may also need to run the command `/Applications/Python\ 3.7/Install\ Certifi
Install Qt 5.13.1 for macOS from https://www.qt.io/offline-installers. I downloaded `qt-opensource-mac-x64-5.13.1.dmg`. In the installer, you can skip making an account, and all you need is `Qt` > `Qt 5.13.1` > `macOS`.
Now install pip dependencies. If you want to use a virtualenv, create it and activate it first:
If you don't have it already, install poetry (`pip3 install --user poetry`). Then install dependencies:
```sh
python3 -m venv venv
. venv/bin/activate
```
Then install the dependencies:
```sh
pip3 install -r install/requirements.txt
poetry install
```
#### You can run both the CLI and GUI versions of OnionShare without building an bundle
```sh
./dev_scripts/onionshare
./dev_scripts/onionshare-gui
poetry run ./dev_scripts/onionshare
poetry run ./dev_scripts/onionshare-gui
```
#### To build the app bundle
@ -94,19 +106,25 @@ Now you should have `dist/OnionShare.pkg`.
Download Python 3.7.4, 32-bit (x86) from https://www.python.org/downloads/release/python-374/. I downloaded `python-3.7.4.exe`. When installing it, make sure to check the "Add Python 3.7 to PATH" checkbox on the first page of the installer.
Open a command prompt, cd to the onionshare folder, and install dependencies with pip:
Install the Qt 5.13.1 from https://www.qt.io/offline-installers. I downloaded `qt-opensource-windows-x86-5.13.1.exe`. In the installer, you can skip making an account, and all you need `Qt` > `Qt 5.13.1` > `MSVC 2017 32-bit`.
```cmd
pip install -r install\requirements.txt
Install [poetry](https://python-poetry.org/). Open PowerShell, and run:
```
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python
```
Install the Qt 5.13.1 from https://www.qt.io/offline-installers. I downloaded `qt-opensource-windows-x86-5.13.1.exe`. In the installer, you can skip making an account, and all you need `Qt` > `Qt 5.13.1` > `MSVC 2017 32-bit`.
And add `%USERPROFILE%\.poetry\bin` to your path. Then open a command prompt and cd to the `dangerzone` folder, and install the poetry dependencies:
```
poetry install
```
After that you can try both the CLI and the GUI version of OnionShare:
```
python dev_scripts\onionshare
python dev_scripts\onionshare-gui
poetry run python dev_scripts\onionshare
poetry run python dev_scripts\onionshare-gui
```
#### If you want to build a .exe
@ -141,19 +159,6 @@ cd "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\
vcvars32.bat
```
Make sure you have a new enough `setuptools`:
```
pip install --upgrade setuptools
```
Now make sure you don't have PyInstaller installed from pip:
```
pip uninstall PyInstaller
rmdir C:\Users\user\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\PyInstaller /S
```
Change to a folder where you keep source code, and clone the PyInstaller git repo and checkout the `v3.5` tag:
```
@ -164,6 +169,14 @@ git tag -v v3.5
(Note that ideally you would verify the git tag, but the PGP key that has signed the `v3.5` git tag for is not published anywhere, so this isn't possible. See [this issue](https://github.com/pyinstaller/pyinstaller/issues/4430).)
The next step is to compile the bootloader. We should do this all in dangerzone's poetry shell:
```
cd onionshare
poetry shell
cd ..\pyinstaller
```
And compile the bootloader, following [these instructions](https://pythonhosted.org/PyInstaller/bootloader-building.html). To compile, run this:
```
@ -171,11 +184,12 @@ cd bootloader
python waf distclean all --target-arch=32bit --msvc_targets=x86
```
Finally, install the PyInstaller module into your local site-packages:
Finally, install the PyInstaller module into your poetry environment:
```
cd ..
python setup.py install
exit
```
Now the next time you use PyInstaller to build OnionShare, the `.exe` file should not be flagged as malicious by anti-virus.
@ -245,6 +259,7 @@ This section documents the release process. Unless you're a core OnionShare deve
Before making a release, all of these should be complete:
* `share/version.txt` should have the correct version
* `pyproject.toml` should have the correct version
* `install/onionshare.nsi` should have the correct version, for the Windows installer
* `CHANGELOG.md` should be updated to include a list of all major changes since the last release
* There must be a PGP-signed git tag for the version, e.g. for OnionShare 2.1, the tag must be `v2.1`

View File

@ -4,6 +4,7 @@ GenericName=OnionShare Client
Comment=Share a file securely and anonymously over Tor
Comment[da]=Del en fil sikkert og anonymt over Tor
Comment[de]=Teile Dateien sicher und anonym über das Tor-Netzwerk
Comment[hr]=Dijeli datoteku sigurno i anonimno preko Tora
Exec=/usr/bin/onionshare-gui
Terminal=false
Type=Application
@ -12,5 +13,6 @@ Categories=Network;FileTransfer;
Keywords=tor;anonymity;privacy;onion service;file sharing;file hosting;
Keywords[da]=tor;anonymitet;privatliv;onion-tjeneste;fildeling;filhosting;
Keywords[de]=tor;Anonymität;Privatsphäre;Onion-Service;File-Sharing;File-Hosting;
Keywords[hr]=tor;anonimnost;privatnost;Onion usluga;dijeljenje datoteka;hosting datoteka;
StartupNotify=true
StartupWMClass=onionshare

View File

@ -1,10 +0,0 @@
atomicwrites==1.3.0
attrs==19.1.0
more-itertools==7.2.0
pluggy==0.13.0
py==1.8.0
pytest==5.1.2
pytest-faulthandler==2.0.1
pytest-qt==3.2.2
six==1.12.0
urllib3==1.25.3

View File

@ -1,24 +0,0 @@
altgraph==0.16.1
certifi==2019.9.11
chardet==3.0.4
Click==7.0
Flask==1.1.1
Flask-HTTPAuth==3.3.0
future==0.17.1
idna==2.8
itsdangerous==1.1.0
Jinja2==2.10.1
macholib==1.11
MarkupSafe==1.1.1
pefile==2019.4.18
pycryptodome==3.9.0
PyInstaller==3.5
PyQt5==5.13.1
PyQt5-sip==4.19.19
PySocks==1.7.0
requests==2.22.0
stem==1.7.1
urllib3==1.25.3
Werkzeug==0.15.6
watchdog==0.9.0
psutil==5.6.7

View File

@ -46,6 +46,30 @@ def main(cwd=None):
# Display OnionShare banner
print(f"OnionShare {common.version} | https://onionshare.org/")
reset='\033[0m'
purple='\33[95m'
print(purple)
print(" @@@@@@@@@ ")
print(" @@@@@@@@@@@@@@@@@@@ ")
print(" @@@@@@@@@@@@@@@@@@@@@@@@@ ")
print(" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ")
print(" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ___ _ ")
print(" @@@@@@ @@@@@@@@@@@@@ / _ \ (_) ")
print(" @@@@ @ @@@@@@@@@@@ | | | |_ __ _ ___ _ __ ")
print(" @@@@@@@@ @@@@@@@@@@ | | | | '_ \| |/ _ \| '_ \ ")
print(" @@@@@@@@@@@@ @@@@@@@@@@ \ \_/ / | | | | (_) | | | | ")
print(" @@@@@@@@@@@@@@@@ @@@@@@@@@ \___/|_| |_|_|\___/|_| |_| ")
print(" @@@@@@@@@ @@@@@@@@@@@@@@@@ _____ _ ")
print(" @@@@@@@@@@ @@@@@@@@@@@@ / ___| | ")
print(" @@@@@@@@@@ @@@@@@@@ \ `--.| |__ __ _ _ __ ___ ")
print(" @@@@@@@@@@@ @ @@@@ `--. \ '_ \ / _` | '__/ _ \\")
print(" @@@@@@@@@@@@@ @@@@@@ /\__/ / | | | (_| | | | __/")
print(" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \____/|_| |_|\__,_|_| \___|")
print(" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ")
print(" @@@@@@@@@@@@@@@@@@@@@@@@@ ")
print(" @@@@@@@@@@@@@@@@@@@ ")
print(" @@@@@@@@@ ")
print(reset)
# OnionShare CLI in OSX needs to change current working directory (#132)
if common.platform == "Darwin":

1116
poetry.lock generated Normal file

File diff suppressed because it is too large Load Diff

50
pyproject.toml Normal file
View File

@ -0,0 +1,50 @@
[tool.poetry]
name = "onionshare"
version = "2.2"
description = "OnionShare lets you securely and anonymously send and receive files. It works by starting a web server, making it accessible as a Tor onion service, and generating an unguessable web address so others can download files from you, or upload files to you. It does _not_ require setting up a separate server or using a third party file-sharing service."
authors = ["Micah Lee <micah@micahflee.com>"]
license = "GPLv3+"
[tool.poetry.dependencies]
python = "*"
altgraph = "*"
certifi = "*"
chardet = "*"
Click = "*"
Flask = "*"
Flask-HTTPAuth = "*"
future = "*"
idna = "*"
itsdangerous = "*"
Jinja2 = "*"
macholib = "*"
MarkupSafe = "*"
pefile = "*"
pycryptodome = "*"
PyQt5 = "*"
PyQt5-sip = "*"
PySocks = "*"
requests = "*"
stem = "*"
urllib3 = "*"
Werkzeug = "*"
watchdog = "*"
psutil = "*"
[tool.poetry.dev-dependencies]
atomicwrites = "*"
attrs = "*"
more-itertools = "*"
pluggy = "*"
py = "*"
pytest = "*"
pytest-faulthandler = "*"
pytest-qt = "*"
six = "*"
urllib3 = "*"
pyinstaller = {version = "*", platform = "darwin"}
setuptools = {version = "*", platform = "windows"}
[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"