Merge pull request #103844 from lourkeur/onionshare-2.3

onionshare: 2.2 -> 2.3.1
This commit is contained in:
Jörg Thalheim 2021-02-24 19:32:24 +00:00 committed by GitHub
commit 7ce33fa627
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 124 additions and 165 deletions

View file

@ -1,30 +1,33 @@
{ {
lib, lib,
buildPythonApplication, buildPythonApplication,
stdenv,
substituteAll, substituteAll,
fetchFromGitHub, fetchFromGitHub,
isPy3k, isPy3k,
flask, flask,
flask-httpauth, flask-httpauth,
flask-socketio,
stem, stem,
psutil,
pyqt5, pyqt5,
pycrypto, pycrypto,
pysocks, pyside2,
pytest, pytestCheckHook,
qrcode,
qt5, qt5,
requests, requests,
unidecode,
tor, tor,
obfs4, obfs4,
}: }:
let let
version = "2.2"; version = "2.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "micahflee"; owner = "micahflee";
repo = "onionshare"; repo = "onionshare";
rev = "v${version}"; rev = "v${version}";
sha256 = "0m8ygxcyp3nfzzhxs2dfnpqwh1vx0aws44lszpnnczz4fks3a5j4"; sha256 = "sha256-H09x3OF6l1HLHukGPvV2rZUjW9fxeKKMZkKbY9a2m9I=";
}; };
meta = with lib; { meta = with lib; {
description = "Securely and anonymously send and receive files"; description = "Securely and anonymously send and receive files";
@ -51,63 +54,76 @@ let
maintainers = with maintainers; [ lourkeur ]; maintainers = with maintainers; [ lourkeur ];
}; };
common = buildPythonApplication { in rec {
pname = "onionshare-common"; onionshare = buildPythonApplication {
inherit version meta src; pname = "onionshare-cli";
inherit version meta;
disable = !isPy3k; src = "${src}/cli";
propagatedBuildInputs = [
flask
flask-httpauth
stem
pyqt5
pycrypto
pysocks
requests
];
buildInputs = [
tor
obfs4
];
patches = [ patches = [
# hardcode store paths of dependencies
(substituteAll { (substituteAll {
src = ./fix-paths.patch; src = ./fix-paths.patch;
inherit tor obfs4; inherit tor obfs4;
inherit (tor) geoip; inherit (tor) geoip;
}) })
]; ];
postPatch = "substituteInPlace onionshare/common.py --subst-var-by common $out"; disable = !isPy3k;
propagatedBuildInputs = [
flask
flask-httpauth
flask-socketio
stem
psutil
pycrypto
requests
unidecode
];
doCheck = false; buildInputs = [
}; tor
in obfs4
{ ];
onionshare = stdenv.mkDerivation {
pname = "onionshare";
inherit version meta;
dontUnpack = true; checkInputs = [
pytestCheckHook
];
inherit common; preCheck = ''
installPhase = '' # Tests use the home directory
mkdir -p $out/bin export HOME="$(mktemp -d)"
cp $common/bin/onionshare -t $out/bin
''; '';
}; };
onionshare-gui = stdenv.mkDerivation {
pname = "onionshare-gui"; onionshare-gui = buildPythonApplication {
pname = "onionshare";
inherit version meta; inherit version meta;
src = "${src}/desktop/src";
patches = [
# hardcode store paths of dependencies
(substituteAll {
src = ./fix-paths-gui.patch;
inherit tor obfs4;
inherit (tor) geoip;
})
];
disable = !isPy3k;
propagatedBuildInputs = [
onionshare
pyqt5
pyside2
psutil
qrcode
];
nativeBuildInputs = [ qt5.wrapQtAppsHook ]; nativeBuildInputs = [ qt5.wrapQtAppsHook ];
dontUnpack = true; preFixup = ''
wrapQtApp $out/bin/onionshare
inherit common;
installPhase = ''
mkdir -p $out/bin
cp $common/bin/onionshare-gui -t $out/bin
wrapQtApp $out/bin/onionshare-gui
''; '';
doCheck = false;
pythonImportsCheck = [ "onionshare" ];
}; };
} }

View file

@ -0,0 +1,37 @@
--- a/onionshare/gui_common.py
+++ b/onionshare/gui_common.py
@@ -376,29 +376,10 @@ class GuiCommon:
}
def get_tor_paths(self):
- if self.common.platform == "Linux":
- tor_path = shutil.which("tor")
- obfs4proxy_file_path = shutil.which("obfs4proxy")
- prefix = os.path.dirname(os.path.dirname(tor_path))
- tor_geo_ip_file_path = os.path.join(prefix, "share/tor/geoip")
- tor_geo_ipv6_file_path = os.path.join(prefix, "share/tor/geoip6")
- elif self.common.platform == "Windows":
- base_path = self.get_resource_path("tor")
- tor_path = os.path.join(base_path, "Tor", "tor.exe")
- obfs4proxy_file_path = os.path.join(base_path, "Tor", "obfs4proxy.exe")
- tor_geo_ip_file_path = os.path.join(base_path, "Data", "Tor", "geoip")
- tor_geo_ipv6_file_path = os.path.join(base_path, "Data", "Tor", "geoip6")
- elif self.common.platform == "Darwin":
- base_path = self.get_resource_path("tor")
- tor_path = os.path.join(base_path, "tor")
- obfs4proxy_file_path = os.path.join(base_path, "obfs4proxy.exe")
- tor_geo_ip_file_path = os.path.join(base_path, "geoip")
- tor_geo_ipv6_file_path = os.path.join(base_path, "geoip6")
- elif self.common.platform == "BSD":
- tor_path = "/usr/local/bin/tor"
- tor_geo_ip_file_path = "/usr/local/share/tor/geoip"
- tor_geo_ipv6_file_path = "/usr/local/share/tor/geoip6"
- obfs4proxy_file_path = "/usr/local/bin/obfs4proxy"
+ tor_path = "@tor@/bin/tor"
+ tor_geo_ip_file_path = "@geoip@/share/tor/geoip"
+ tor_geo_ipv6_file_path = "@geoip@/share/tor/geoip6"
+ obfs4proxy_file_path = "@obfs4@/bin/obfs4proxy"
return (
tor_path,

View file

@ -1,68 +1,31 @@
diff --git a/onionshare/common.py b/onionshare/common.py --- a/onionshare_cli/common.py
index 3373462..7fd245b 100644 +++ b/onionshare_cli/common.py
--- a/onionshare/common.py @@ -86,33 +86,10 @@ class Common:
+++ b/onionshare/common.py return path
@@ -87,66 +87,16 @@ class Common(object):
),
"share",
)
- if not os.path.exists(prefix):
- # While running tests during stdeb bdist_deb, look 3 directories up for the share folder
- prefix = os.path.join(
- os.path.dirname(
- os.path.dirname(os.path.dirname(os.path.dirname(prefix)))
- ),
- "share",
- )
-
- elif self.platform == "BSD" or self.platform == "Linux":
- # Assume OnionShare is installed systemwide in Linux, since we're not running in dev mode
- prefix = os.path.join(sys.prefix, "share/onionshare")
-
- elif getattr(sys, "frozen", False):
- # Check if app is "frozen"
- # https://pythonhosted.org/PyInstaller/#run-time-information
- if self.platform == "Darwin":
- prefix = os.path.join(sys._MEIPASS, "share")
- elif self.platform == "Windows":
- prefix = os.path.join(os.path.dirname(sys.executable), "share")
+ else:
+ prefix = "@common@/share/onionshare"
return os.path.join(prefix, filename)
def get_tor_paths(self): def get_tor_paths(self):
- if self.platform == "Linux": - if self.platform == "Linux":
- tor_path = "/usr/bin/tor" - tor_path = shutil.which("tor")
- tor_geo_ip_file_path = "/usr/share/tor/geoip" - if not tor_path:
- tor_geo_ipv6_file_path = "/usr/share/tor/geoip6" - raise CannotFindTor()
- obfs4proxy_file_path = "/usr/bin/obfs4proxy" - obfs4proxy_file_path = shutil.which("obfs4proxy")
- prefix = os.path.dirname(os.path.dirname(tor_path))
- tor_geo_ip_file_path = os.path.join(prefix, "share/tor/geoip")
- tor_geo_ipv6_file_path = os.path.join(prefix, "share/tor/geoip6")
- elif self.platform == "Windows": - elif self.platform == "Windows":
- base_path = os.path.join( - base_path = self.get_resource_path("tor")
- os.path.dirname(os.path.dirname(self.get_resource_path(""))), "tor" - tor_path = os.path.join(base_path, "Tor", "tor.exe")
- ) - obfs4proxy_file_path = os.path.join(base_path, "Tor", "obfs4proxy.exe")
- tor_path = os.path.join(os.path.join(base_path, "Tor"), "tor.exe") - tor_geo_ip_file_path = os.path.join(base_path, "Data", "Tor", "geoip")
- obfs4proxy_file_path = os.path.join( - tor_geo_ipv6_file_path = os.path.join(base_path, "Data", "Tor", "geoip6")
- os.path.join(base_path, "Tor"), "obfs4proxy.exe"
- )
- tor_geo_ip_file_path = os.path.join(
- os.path.join(os.path.join(base_path, "Data"), "Tor"), "geoip"
- )
- tor_geo_ipv6_file_path = os.path.join(
- os.path.join(os.path.join(base_path, "Data"), "Tor"), "geoip6"
- )
- elif self.platform == "Darwin": - elif self.platform == "Darwin":
- base_path = os.path.dirname( - tor_path = shutil.which("tor")
- os.path.dirname(os.path.dirname(self.get_resource_path(""))) - if not tor_path:
- ) - raise CannotFindTor()
- tor_path = os.path.join(base_path, "Resources", "Tor", "tor") - obfs4proxy_file_path = shutil.which("obfs4proxy")
- tor_geo_ip_file_path = os.path.join(base_path, "Resources", "Tor", "geoip") - prefix = os.path.dirname(os.path.dirname(tor_path))
- tor_geo_ipv6_file_path = os.path.join( - tor_geo_ip_file_path = os.path.join(prefix, "share/tor/geoip")
- base_path, "Resources", "Tor", "geoip6" - tor_geo_ipv6_file_path = os.path.join(prefix, "share/tor/geoip6")
- )
- obfs4proxy_file_path = os.path.join(
- base_path, "Resources", "Tor", "obfs4proxy"
- )
- elif self.platform == "BSD": - elif self.platform == "BSD":
- tor_path = "/usr/local/bin/tor" - tor_path = "/usr/local/bin/tor"
- tor_geo_ip_file_path = "/usr/local/share/tor/geoip" - tor_geo_ip_file_path = "/usr/local/share/tor/geoip"
@ -72,63 +35,6 @@ index 3373462..7fd245b 100644
+ tor_geo_ip_file_path = "@geoip@/share/tor/geoip" + tor_geo_ip_file_path = "@geoip@/share/tor/geoip"
+ tor_geo_ipv6_file_path = "@geoip@/share/tor/geoip6" + tor_geo_ipv6_file_path = "@geoip@/share/tor/geoip6"
+ obfs4proxy_file_path = "@obfs4@/bin/obfs4proxy" + obfs4proxy_file_path = "@obfs4@/bin/obfs4proxy"
return ( return (
tor_path, tor_path,
diff --git a/setup.py b/setup.py
index 9af72fc..53ca47b 100644
--- a/setup.py
+++ b/setup.py
@@ -70,41 +70,41 @@ classifiers = [
]
data_files = [
(
- os.path.join(sys.prefix, "share/applications"),
+ "share/applications",
["install/org.onionshare.OnionShare.desktop"],
),
(
- os.path.join(sys.prefix, "share/icons/hicolor/scalable/apps"),
+ "share/icons/hicolor/scalable/apps",
["install/org.onionshare.OnionShare.svg"],
),
(
- os.path.join(sys.prefix, "share/metainfo"),
+ "share/metainfo",
["install/org.onionshare.OnionShare.appdata.xml"],
),
- (os.path.join(sys.prefix, "share/onionshare"), file_list("share")),
- (os.path.join(sys.prefix, "share/onionshare/images"), file_list("share/images")),
- (os.path.join(sys.prefix, "share/onionshare/locale"), file_list("share/locale")),
+ ( "share/onionshare", file_list("share")),
+ ( "share/onionshare/images", file_list("share/images")),
+ ( "share/onionshare/locale", file_list("share/locale")),
(
- os.path.join(sys.prefix, "share/onionshare/templates"),
+ "share/onionshare/templates",
file_list("share/templates"),
),
(
- os.path.join(sys.prefix, "share/onionshare/static/css"),
+ "share/onionshare/static/css",
file_list("share/static/css"),
),
(
- os.path.join(sys.prefix, "share/onionshare/static/img"),
+ "share/onionshare/static/img",
file_list("share/static/img"),
),
(
- os.path.join(sys.prefix, "share/onionshare/static/js"),
+ "share/onionshare/static/js",
file_list("share/static/js"),
),
]
if not platform.system().endswith("BSD") and platform.system() != "DragonFly":
data_files.append(
(
- "/usr/share/nautilus-python/extensions/",
+ "share/nautilus-python/extensions/",
["install/scripts/onionshare-nautilus.py"],
)
)