From ae9dad81273f09ae5919c3b03a09f07dce7ecc52 Mon Sep 17 00:00:00 2001 From: Andreas Griffin <116060138+andreasgriffin@users.noreply.github.com> Date: Sat, 25 Jan 2025 07:31:33 +0100 Subject: [PATCH] Proxy added (#69) - added optional proxy setting to connect through (Tor) proxy - added additional way to set address category through context menu --- .pre-commit-config.yaml | 2 +- bitcoin_safe/fx.py | 7 +- .../gui/icons/status_connected_proxy.svg | 306 ++++++++++++++++++ bitcoin_safe/gui/locales/app_ar_AE.qm | Bin 96913 -> 97842 bytes bitcoin_safe/gui/locales/app_ar_AE.ts | 106 +++--- bitcoin_safe/gui/locales/app_de_DE.qm | Bin 111389 -> 112398 bytes bitcoin_safe/gui/locales/app_de_DE.ts | 106 +++--- bitcoin_safe/gui/locales/app_es_ES.qm | Bin 108701 -> 109742 bytes bitcoin_safe/gui/locales/app_es_ES.ts | 106 +++--- bitcoin_safe/gui/locales/app_fr_FR.qm | Bin 112651 -> 113642 bytes bitcoin_safe/gui/locales/app_fr_FR.ts | 106 +++--- bitcoin_safe/gui/locales/app_hi_IN.qm | Bin 101833 -> 102858 bytes bitcoin_safe/gui/locales/app_hi_IN.ts | 106 +++--- bitcoin_safe/gui/locales/app_it_IT.qm | Bin 107529 -> 108622 bytes bitcoin_safe/gui/locales/app_it_IT.ts | 106 +++--- bitcoin_safe/gui/locales/app_ja_JP.qm | Bin 82895 -> 83824 bytes bitcoin_safe/gui/locales/app_ja_JP.ts | 106 +++--- bitcoin_safe/gui/locales/app_pt_PT.qm | Bin 107673 -> 108716 bytes bitcoin_safe/gui/locales/app_pt_PT.ts | 106 +++--- bitcoin_safe/gui/locales/app_ru_RU.qm | Bin 108139 -> 109164 bytes bitcoin_safe/gui/locales/app_ru_RU.ts | 106 +++--- bitcoin_safe/gui/locales/app_zh_CN.qm | Bin 74357 -> 75210 bytes bitcoin_safe/gui/locales/app_zh_CN.ts | 106 +++--- bitcoin_safe/gui/qt/address_list.py | 40 ++- bitcoin_safe/gui/qt/downloader.py | 15 +- bitcoin_safe/gui/qt/main.py | 29 +- .../gui/qt/network_settings/__main__.py | 3 +- bitcoin_safe/gui/qt/network_settings/main.py | 151 ++++++--- bitcoin_safe/gui/qt/qt_wallet.py | 24 +- bitcoin_safe/gui/qt/ui_tx.py | 5 +- .../gui/qt/update_notification_bar.py | 17 +- bitcoin_safe/gui/qt/util.py | 14 + bitcoin_safe/mempool.py | 23 +- bitcoin_safe/network_config.py | 55 +++- bitcoin_safe/signature_manager.py | 28 +- bitcoin_safe/wallet.py | 20 +- poetry.lock | 146 +++++---- pyproject.toml | 1 + tests/non_gui/test_signature_manager.py | 4 +- tools/build.py | 38 ++- 40 files changed, 1435 insertions(+), 553 deletions(-) create mode 100644 bitcoin_safe/gui/icons/status_connected_proxy.svg diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 294b287..eb84072 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -34,7 +34,7 @@ repos: rev: v1.11.2 # Use the latest MyPy version hooks: - id: mypy - files: ^bitcoin_safe/ + files: ^bitcoin_safe/|^tools/ args: - --check-untyped-defs # - --disallow-untyped-defs diff --git a/bitcoin_safe/fx.py b/bitcoin_safe/fx.py index 5c8f000..cf64a3f 100644 --- a/bitcoin_safe/fx.py +++ b/bitcoin_safe/fx.py @@ -43,9 +43,9 @@ class FX(QObject, ThreadingManager): signal_data_updated: TypedPyQtSignalNo = pyqtSignal() # type: ignore - def __init__(self, threading_parent: ThreadingManager | None = None) -> None: + def __init__(self, proxies: Dict | None, threading_parent: ThreadingManager | None = None) -> None: super().__init__(threading_parent=threading_parent) # type: ignore - + self.proxies = proxies self.rates: Dict[str, Dict] = {} self.update() logger.debug(f"initialized {self}") @@ -89,7 +89,6 @@ def on_success(data) -> None: self.append_thread( threaded_fetch( - "https://api.coingecko.com/api/v3/exchange_rates", - on_success, + "https://api.coingecko.com/api/v3/exchange_rates", on_success, proxies=self.proxies ) ) diff --git a/bitcoin_safe/gui/icons/status_connected_proxy.svg b/bitcoin_safe/gui/icons/status_connected_proxy.svg new file mode 100644 index 0000000..88c8ae8 --- /dev/null +++ b/bitcoin_safe/gui/icons/status_connected_proxy.svg @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Lapo Calamandrei + + + + + Record + + + record + media + + + + + Jakub Steiner + + + + + + + + + + + + + + + + + + + + diff --git a/bitcoin_safe/gui/locales/app_ar_AE.qm b/bitcoin_safe/gui/locales/app_ar_AE.qm index 37889be0cff1abd5f4e33ae1464351e15c42e40f..517d37fc81f79e69cada0b32dfccc057f61a491a 100644 GIT binary patch delta 7996 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 diff --git a/bitcoin_safe/gui/locales/app_ar_AE.ts b/bitcoin_safe/gui/locales/app_ar_AE.ts index 4eaf096..daa2bf3 100644 --- a/bitcoin_safe/gui/locales/app_ar_AE.ts +++ b/bitcoin_safe/gui/locales/app_ar_AE.ts @@ -83,6 +83,10 @@ Copy as csv نسخ كملف csv + + Set category + تعيين الفئة + Tx تحويلة @@ -438,6 +442,17 @@ Please back up this descriptor to be able to recover the funds! اختر الجهاز المكتشف + + DeviceManager + + Trusted + موثوق + + + Untrusted + غير موثوق + + DisplayAddressDialog @@ -1413,6 +1428,14 @@ Location of signing device: ..... Mempool Instance URL عنوان Mempool Instance + + The proxy does not apply to the Sync&Chat feature! + الوكيل لا ينطبق على ميزة المزامنة والدردشة! + + + Proxy: + بروكسي: + Apply && Shutdown تطبيق && إيقاف @@ -1721,10 +1744,26 @@ Location of signing device: ..... Choose a new name, or an existing name for merging: اختر اسمًا جديدًا، أو اسمًا موجودًا للدمج: + + Syncing with {server} + مزامنة مع {server} + + + Connected to {server} + متصل بـ {server} + + + Disconnected from {server} + منفصل عن {server} + Click for new address انقر للحصول على عنوان جديد + + Sync && Chat + المزامنة && الدردشة + Export labels تصدير التسميات @@ -1737,10 +1776,6 @@ Location of signing device: ..... Import labels استيراد التسميات - - Sync && Chat - المزامنة && الدردشة - All Files (*);;JSONL Files (*.jsonl);;JSON Files (*.json) جميع الملفات (*);;ملفات JSONL (*.jsonl);;ملفات JSON (*.json) @@ -2333,18 +2368,10 @@ You can restore your labels at a later time with 'Import Sync Key'. - TrustedDevice - - Connected to {id} - متصل ب{id} - - - Syncing Address labels - مزامنة تسميات العناوين - + TrustedDeviceItem - Can share Transactions - يمكن مشاركة المعاملات + Untrust device + جهاز غير موثوق @@ -2403,14 +2430,6 @@ You can restore your labels at a later time with 'Import Sync Key'.Set custom Relay list تعيين قائمة تتابع مخصصة - - Trusted - موثوق - - - UnTrusted - غير موثوق - My Device: {id} جهازي: {id} @@ -2625,14 +2644,14 @@ below {rate} - UnTrustedDevice + UntrustedDeviceItem - Trust {id} - ثق {id} + Trust + ثقة - Accept trust request from {other} - قبول طلب الثقة من {other} + Trust this device + ثق بهذا الجهاز @@ -3212,6 +3231,10 @@ Please install it. This is a private and fast way to connect to the bitcoin network. هذه طريقة خاصة وسريعة للاتصال بشبكة البيتكوين. + + Run your bitcoind with "bitcoind -chain=test" + قم بتشغيل bitcoind الخاص بك باستخدام "bitcoind -chain=test" + Run your bitcoind with "bitcoind -chain=signet" This however is a different signet than mutinynet.com. قم بتشغيل bitcoind الخاص بك باستخدام "bitcoind -chain=signet" ومع ذلك، فإن هذا التوقيع مختلف عن mutinynet.com. @@ -3222,20 +3245,24 @@ It is best to use your own server, such as {link}. يمكن للخادم ربط عنوان IP الخاص بك بعناوين المحفظة. من الأفضل استخدام خادمك الخاص، مثل {link}. - You can setup {link} with an electrum server on {server} and a block explorer on {explorer} - يمكنك إعداد {link} مع خادم إليكتروم على {server} ومستكشف الكتل على {explorer} + You can setup {electrum} with an electrum server on {server} and a block explorer on {explorer} + يمكنك إعداد {electrum} بخادم إلكتروم على {server} ومستكشف البلوك على {explorer} + + + A good option is {electrum_testnet4} and as block explorer {explorer_testnet4} + خيار جيد هو {electrum_testnet4} وكمستكشف بلوك {explorer_testnet4} - A good option is {link} and a block explorer on {explorer}. - الخيار الجيد هو {link} ومستكشف الكتل على {explorer}. + Signet choose {electrum} and a block explorer on {mempool_url}. + اختر Signet {electrum} ومستكشف بلوك على {mempool_url}. You can setup {setup} with an esplora server on {server} and a block explorer on {explorer} يمكنك إعداد {setup} باستخدام خادم esplora على {server} ومستكشف الكتل على {explorer} - A good option is {link} and a block explorer on {explorer}. There is a {faucet}. - الخيار الجيد هو {link} ومستكشف الكتل على {explorer}. هناك {faucet}. + A (somtimes working) server is {link} and a block explorer on {explorer}. There is a {faucet}. + خادم (يعمل أحياناً) هو {link} ومستكشف بلوك على {explorer}. هناك {faucet}. You can connect your own Bitcoin node, such as {link}. @@ -3245,9 +3272,16 @@ It is best to use your own server, such as {link}. Run your bitcoind with "bitcoind -chain=regtest" قم بتشغيل bitcoind الخاص بك باستخدام "bitcoind -chain=regtest" + + + network_config - Run your bitcoind with "bitcoind -chain=test" - قم بتشغيل bitcoind الخاص بك باستخدام "bitcoind -chain=test" + {server_name} via the proxy {proxy} + {server_name} عبر البروكسي {proxy} + + + {server_name} + {server_name} diff --git a/bitcoin_safe/gui/locales/app_de_DE.qm b/bitcoin_safe/gui/locales/app_de_DE.qm index 48b1c813619124401da5328044519543e79d53a6..75f7b5dc46ec2695c67b30f7d17387ffe7fc6fe4 100644 GIT binary patch delta 8015 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 MCQ_L?gVpHxKeV7{hX4Qo delta 7041 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 U_>{Copy as csv Als CSV kopieren + + Set category + Kategorie festlegen + Tx Tx @@ -438,6 +442,17 @@ Please back up this descriptor to be able to recover the funds! Erkanntes Gerät auswählen + + DeviceManager + + Trusted + Vertrauenswürdig + + + Untrusted + Nicht vertrauenswürdig + + DisplayAddressDialog @@ -1413,6 +1428,14 @@ Location of signing device: ..... Mempool Instance URL Mempool Instance-URL + + The proxy does not apply to the Sync&Chat feature! + Der Proxy gilt nicht für die Sync&Chat-Funktion! + + + Proxy: + Proxy: + Apply && Shutdown Anwenden && Herunterfahren @@ -1718,10 +1741,26 @@ Location of signing device: ..... Choose a new name, or an existing name for merging: Wählen Sie einen neuen Namen oder einen bestehenden Namen zum Zusammenführen: + + Syncing with {server} + Synchronisierung mit {server} + + + Connected to {server} + Verbunden mit {server} + + + Disconnected from {server} + Getrennt von {server} + Click for new address Für neue Adresse klicken + + Sync && Chat + Synchronisieren && Chatten + Export labels Etiketten exportieren @@ -1734,10 +1773,6 @@ Location of signing device: ..... Import labels Etiketten importieren - - Sync && Chat - Synchronisieren && Chatten - All Files (*);;JSONL Files (*.jsonl);;JSON Files (*.json) Alle Dateien (*);;JSONL-Dateien (*.jsonl);;JSON-Dateien (*.json) @@ -2330,18 +2365,10 @@ You can restore your labels at a later time with 'Import Sync Key'. - TrustedDevice - - Connected to {id} - Verbunden mit {id} - - - Syncing Address labels - Adresslabels synchronisieren - + TrustedDeviceItem - Can share Transactions - Kann Transaktionen teilen + Untrust device + Gerät nicht vertrauen @@ -2400,14 +2427,6 @@ You can restore your labels at a later time with 'Import Sync Key'.Set custom Relay list Benutzerdefinierte Relay-Liste festlegen - - Trusted - Vertrauenswürdig - - - UnTrusted - Nicht vertrauenswürdig - My Device: {id} Mein Gerät: {id} @@ -2622,14 +2641,14 @@ below {rate} - UnTrustedDevice + UntrustedDeviceItem - Trust {id} - Vertrauen {id} + Trust + Vertrauen - Accept trust request from {other} - Vertrauensanfrage von {other} akzeptieren + Trust this device + Diesem Gerät vertrauen @@ -3209,6 +3228,10 @@ Please install it. This is a private and fast way to connect to the bitcoin network. Dies ist eine private und schnelle Möglichkeit, sich mit dem Bitcoin-Netzwerk zu verbinden. + + Run your bitcoind with "bitcoind -chain=test" + Führen Sie Ihren bitcoind mit "bitcoind -chain=test" aus + Run your bitcoind with "bitcoind -chain=signet" This however is a different signet than mutinynet.com. Führen Sie Ihren bitcoind mit "bitcoind -chain=signet" aus. Dies ist jedoch ein anderes Signet als mutinynet.com. @@ -3219,20 +3242,24 @@ It is best to use your own server, such as {link}. Der Server kann Ihre IP-Adresse den Wallet-Adressen zuordnen. Es ist am besten, Ihren eigenen Server zu verwenden, wie {link}. - You can setup {link} with an electrum server on {server} and a block explorer on {explorer} - Sie können {link} mit einem Electrum-Server auf {server} und einem Block-Explorer auf {explorer} einrichten + You can setup {electrum} with an electrum server on {server} and a block explorer on {explorer} + Sie können {electrum} mit einem Electrum-Server auf {server} und einem Block-Explorer auf {explorer} einrichten + + + A good option is {electrum_testnet4} and as block explorer {explorer_testnet4} + Eine gute Option ist {electrum_testnet4} und als Block-Explorer {explorer_testnet4} - A good option is {link} and a block explorer on {explorer}. - Eine gute Option ist {link} und ein Block-Explorer auf {explorer}. + Signet choose {electrum} and a block explorer on {mempool_url}. + Signet wählen {electrum} und einen Block-Explorer auf {mempool_url}. You can setup {setup} with an esplora server on {server} and a block explorer on {explorer} Sie können {setup} mit einem Esplora-Server auf {server} und einem Block-Explorer auf {explorer} einrichten - A good option is {link} and a block explorer on {explorer}. There is a {faucet}. - Eine gute Option ist {link} und ein Block-Explorer auf {explorer}. Dort gibt es ein {faucet}. + A (somtimes working) server is {link} and a block explorer on {explorer}. There is a {faucet}. + Ein (manchmal funktionierender) Server ist {link} und ein Block-Explorer auf {explorer}. Es gibt ein {faucet}. You can connect your own Bitcoin node, such as {link}. @@ -3242,9 +3269,16 @@ It is best to use your own server, such as {link}. Run your bitcoind with "bitcoind -chain=regtest" Führen Sie Ihren bitcoind mit "bitcoind -chain=regtest" aus + + + network_config - Run your bitcoind with "bitcoind -chain=test" - Führen Sie Ihren bitcoind mit "bitcoind -chain=test" aus + {server_name} via the proxy {proxy} + {server_name} über den Proxy {proxy} + + + {server_name} + {server_name} diff --git a/bitcoin_safe/gui/locales/app_es_ES.qm b/bitcoin_safe/gui/locales/app_es_ES.qm index 20ce15fee65d0bdfaeff8c37b76f06cba3f115fd..7e8e9092d96f3b89b6af177177d1c848197a6cce 100644 GIT binary patch delta 8013 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 as csv Copiar como csv + + Set category + Establecer categoría + Tx Tx @@ -438,6 +442,17 @@ Please back up this descriptor to be able to recover the funds! Seleccionar el dispositivo detectado + + DeviceManager + + Trusted + Confiado + + + Untrusted + No confiado + + DisplayAddressDialog @@ -1413,6 +1428,14 @@ Location of signing device: ..... Mempool Instance URL URL de instancia de Mempool + + The proxy does not apply to the Sync&Chat feature! + ¡El proxy no se aplica a la función de Sincronización y Chat! + + + Proxy: + Proxy: + Apply && Shutdown Aplicar && Apagar @@ -1721,10 +1744,26 @@ Location of signing device: ..... Choose a new name, or an existing name for merging: Elige un nuevo nombre o un nombre existente para fusionar: + + Syncing with {server} + Sincronizando con {server} + + + Connected to {server} + Conectado a {server} + + + Disconnected from {server} + Desconectado de {server} + Click for new address Haz clic para una nueva dirección + + Sync && Chat + Sincronizar && Chatear + Export labels Exportar etiquetas @@ -1737,10 +1776,6 @@ Location of signing device: ..... Import labels Importar etiquetas - - Sync && Chat - Sincronizar && Chatear - All Files (*);;JSONL Files (*.jsonl);;JSON Files (*.json) Todos los archivos (*);;Archivos JSONL (*.jsonl);;Archivos JSON (*.json) @@ -2333,18 +2368,10 @@ You can restore your labels at a later time with 'Import Sync Key'. - TrustedDevice - - Connected to {id} - Conectado a {id} - - - Syncing Address labels - Sincronizando etiquetas de direcciones - + TrustedDeviceItem - Can share Transactions - Puede compartir transacciones + Untrust device + Dispositivo no confiable @@ -2403,14 +2430,6 @@ You can restore your labels at a later time with 'Import Sync Key'.Set custom Relay list Establecer lista personalizada de Relay - - Trusted - Confiado - - - UnTrusted - No confiado - My Device: {id} Mi dispositivo: {id} @@ -2625,14 +2644,14 @@ below {rate} - UnTrustedDevice + UntrustedDeviceItem - Trust {id} - Confiar {id} + Trust + Confianza - Accept trust request from {other} - Aceptar solicitud de confianza de {other} + Trust this device + Confía en este dispositivo @@ -3212,6 +3231,10 @@ Please install it. This is a private and fast way to connect to the bitcoin network. Esta es una forma privada y rápida de conectarse a la red bitcoin. + + Run your bitcoind with "bitcoind -chain=test" + Ejecuta tu bitcoind con "bitcoind -chain=test" + Run your bitcoind with "bitcoind -chain=signet" This however is a different signet than mutinynet.com. Ejecuta tu bitcoind con "bitcoind -chain=signet" Sin embargo, este es un signet diferente al de mutinynet.com. @@ -3222,20 +3245,24 @@ It is best to use your own server, such as {link}. El servidor puede asociar tu dirección IP con las direcciones de la cartera. Es mejor usar tu propio servidor, como {link}. - You can setup {link} with an electrum server on {server} and a block explorer on {explorer} - Puedes configurar {link} con un servidor de electrum en {server} y un explorador de bloques en {explorer} + You can setup {electrum} with an electrum server on {server} and a block explorer on {explorer} + Puedes configurar {electrum} con un servidor electrum en {server} y un explorador de bloques en {explorer} + + + A good option is {electrum_testnet4} and as block explorer {explorer_testnet4} + Una buena opción es {electrum_testnet4} y como explorador de bloques {explorer_testnet4} - A good option is {link} and a block explorer on {explorer}. - Una buena opción es {link} y un explorador de bloques en {explorer}. + Signet choose {electrum} and a block explorer on {mempool_url}. + Signet elige {electrum} y un explorador de bloques en {mempool_url}. You can setup {setup} with an esplora server on {server} and a block explorer on {explorer} Puedes configurar {setup} con un servidor esplora en {server} y un explorador de bloques en {explorer} - A good option is {link} and a block explorer on {explorer}. There is a {faucet}. - Una buena opción es {link} y un explorador de bloques en {explorer}. Hay un {faucet}. + A (somtimes working) server is {link} and a block explorer on {explorer}. There is a {faucet}. + Un servidor (a veces funciona) es {link} y un explorador de bloques en {explorer}. Hay un {faucet}. You can connect your own Bitcoin node, such as {link}. @@ -3245,9 +3272,16 @@ It is best to use your own server, such as {link}. Run your bitcoind with "bitcoind -chain=regtest" Ejecuta tu bitcoind con "bitcoind -chain=regtest" + + + network_config - Run your bitcoind with "bitcoind -chain=test" - Ejecuta tu bitcoind con "bitcoind -chain=test" + {server_name} via the proxy {proxy} + {server_name} a través del proxy {proxy} + + + {server_name} + {server_name} diff --git a/bitcoin_safe/gui/locales/app_fr_FR.qm b/bitcoin_safe/gui/locales/app_fr_FR.qm index 1baab8cff1bf817757031ddabd3f97254d613b31..4aaf410108fae92c5fa4b3ff6552f8ab5c28fef6 100644 GIT binary patch delta 7906 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 Zl$hw)2_+Rqwu_nG_t{gTO=EXE{|j2+kxc*q diff --git a/bitcoin_safe/gui/locales/app_fr_FR.ts b/bitcoin_safe/gui/locales/app_fr_FR.ts index 39655cd..dd51731 100644 --- a/bitcoin_safe/gui/locales/app_fr_FR.ts +++ b/bitcoin_safe/gui/locales/app_fr_FR.ts @@ -83,6 +83,10 @@ Copy as csv Copier en csv + + Set category + Définir la catégorie + Tx Tx @@ -438,6 +442,17 @@ Please back up this descriptor to be able to recover the funds! Scanner les adresses à l'avance + + DeviceManager + + Trusted + Exporter la clé de synchronisation + + + Untrusted + Non fiable + + DisplayAddressDialog @@ -1413,6 +1428,14 @@ Location of signing device: ..... Mempool Instance URL URL de l'instance Mempool + + The proxy does not apply to the Sync&Chat feature! + Le proxy ne s'applique pas à la fonctionnalité de Synchronisation et de Chat ! + + + Proxy: + Proxy : + Apply && Shutdown Appliquer && Arrêter @@ -1721,10 +1744,26 @@ Voulez-vous continuer malgré tout ? Choose a new name, or an existing name for merging: Choisissez un nouveau nom, ou un nom existant pour la fusion: + + Syncing with {server} + Synchronisation avec {server} + + + Connected to {server} + Connecté à {server} + + + Disconnected from {server} + Déconnecté de {server} + Click for new address Cliquez pour une nouvelle adresse + + Sync && Chat + Synchroniser && Discuter + Export labels Exporter les étiquettes @@ -1737,10 +1776,6 @@ Voulez-vous continuer malgré tout ? Import labels Importer les étiquettes - - Sync && Chat - Synchroniser && Discuter - All Files (*);;JSONL Files (*.jsonl);;JSON Files (*.json) Tous les fichiers (*);;Fichiers JSONL (*.jsonl);;Fichiers JSON (*.json) @@ -2333,18 +2368,10 @@ You can restore your labels at a later time with 'Import Sync Key'. - TrustedDevice - - Connected to {id} - Connecté à {id} - - - Syncing Address labels - Synchronisation des étiquettes d'adresse - + TrustedDeviceItem - Can share Transactions - Peut partager des Transactions + Untrust device + Appareil non fiable @@ -2403,14 +2430,6 @@ You can restore your labels at a later time with 'Import Sync Key'.Set custom Relay list Exportation de clé de synchronisation - - Trusted - Exporter la clé de synchronisation - - - UnTrusted - Importer la clé de synchronisation - My Device: {id} Réinitialiser la clé de synchronisation @@ -2625,14 +2644,14 @@ below {rate} - UnTrustedDevice + UntrustedDeviceItem - Trust {id} - Faire confiance à {id} + Trust + Confiance - Accept trust request from {other} - Accepter la demande de confiance de {other} + Trust this device + Faire confiance à cet appareil @@ -3212,6 +3231,10 @@ Please install it. This is a private and fast way to connect to the bitcoin network. C'est un moyen privé et rapide de se connecter au réseau bitcoin. + + Run your bitcoind with "bitcoind -chain=test" + Exécutez votre bitcoind avec "bitcoind -chain=test" + Run your bitcoind with "bitcoind -chain=signet" This however is a different signet than mutinynet.com. Exécutez votre bitcoind avec "bitcoind -chain=signet" Cependant, c'est un signet différent de mutinynet.com. @@ -3222,20 +3245,24 @@ It is best to use your own server, such as {link}. Le serveur peut associer votre adresse IP aux adresses des portefeuilles. Il est préférable d'utiliser votre propre serveur, tel que {link}. - You can setup {link} with an electrum server on {server} and a block explorer on {explorer} - Vous pouvez configurer {link} avec un serveur Electrum sur {server} et un explorateur de blocs sur {explorer} + You can setup {electrum} with an electrum server on {server} and a block explorer on {explorer} + Vous pouvez configurer {electrum} avec un serveur electrum sur {server} et un explorateur de blocs sur {explorer} + + + A good option is {electrum_testnet4} and as block explorer {explorer_testnet4} + Une bonne option est {electrum_testnet4} et comme explorateur de blocs {explorer_testnet4} - A good option is {link} and a block explorer on {explorer}. - Une bonne option est {link} et un explorateur de blocs sur {explorer}. + Signet choose {electrum} and a block explorer on {mempool_url}. + Signet choisit {electrum} et un explorateur de blocs sur {mempool_url}. You can setup {setup} with an esplora server on {server} and a block explorer on {explorer} Vous pouvez configurer {setup} avec un serveur esplora sur {server} et un explorateur de blocs sur {explorer} - A good option is {link} and a block explorer on {explorer}. There is a {faucet}. - Une bonne option est {link} et un explorateur de blocs sur {explorer}. Il y a un {faucet}. + A (somtimes working) server is {link} and a block explorer on {explorer}. There is a {faucet}. + Un serveur (parfois fonctionnel) est {link} et un explorateur de blocs sur {explorer}. Il y a un {faucet}. You can connect your own Bitcoin node, such as {link}. @@ -3245,9 +3272,16 @@ It is best to use your own server, such as {link}. Run your bitcoind with "bitcoind -chain=regtest" Exécutez votre bitcoind avec "bitcoind -chain=regtest" + + + network_config - Run your bitcoind with "bitcoind -chain=test" - Exécutez votre bitcoind avec "bitcoind -chain=test" + {server_name} via the proxy {proxy} + {server_name} via le proxy {proxy} + + + {server_name} + {server_name} diff --git a/bitcoin_safe/gui/locales/app_hi_IN.qm b/bitcoin_safe/gui/locales/app_hi_IN.qm index b131cb93801585392b569e8b1d16c692a7647eb3..8c26a348c8ea6f136740a108499d786f0cf1c01d 100644 GIT binary patch delta 8102 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

O#?)+?`)_=^wy;24ApsCor)iHLFWt4OS`i z*7NI=&jQA3erwrg;JF816gvyZTFC!=jZCWhtT2PKk;TR;O!MQnXDkIiZRU4o4g%_2 zwvzI{`FZ7sE{ha)OHz2Uox;;66;=&acqW<)5wCutN0T!S-`PZeANL9<@K@p{JF4Iz=$jS zIhzL6HnP+${6(!Z)$VxylGkCX5pmGXCT8Gp_05%73Bf3pvD%Ldg7efsjZy6VZd zM*dNC5Cw4;{?*9`RDg!??^K>((ar)>UjUxo6;vDFgC&d-c+2EmpjWma%q*rn4HoQM zrh$!qEZDE71>tDkBWhC%}Gs5Z?6r4JpkiU@L zPtgi%dnZ!6o+qsR^Ad0l3eUR>g~4yAeHRObpF_dqwL;NCO821p7GYa1rP-Q;3fD#n zKQEgJbQOeOHthiO+bx{14J1ny`ra2#MgI*X`Ut0UMvzaLaMh0l3tC_!Q#BN>-HM>O zp||jRKMJy|yM&jM$rYx_!auX<_xM=hb2qAxEgq}IF6(Fe|36<4+)l`wzLnYna@c*dm&k1QHgr~iCQr3fqMDo%andHLWcWGSnMh><6v~sDIjD53Hk| zdUtbL@EZ?xNdyfPEArIk(WKdqMe2%>-+=>X)JJ>#1pKgBeezqfRO?)IwY~wMI;t?U z&_?DRsBpqV_01w$_>aNr+sUsfJzdq$tj+EEBlX9Xn<@X#?Xg|}=dY?i-B?Z)t5md` zsRGm;#73>mU;#747QQ6$-&4dMttci&nZ#bIG$2Y6`-P;?sI^_}A32M%W|kQCoU&#{ zg*d=BlS=YraX>n0Uh_d5GLW(;^p0rF25j*cM_YqAeuFq3mMjX6V`AFQBw)@hahj_= zaAUJLEtZhDz!CWO3$3n)#y&#JQ`B!4i9li{4}aofe2o%S(Ww(_(fd#e{>m zn0=jMCH#hstbUM~JIEDiIMGJdLMyI%wE(PrgqS~p*69)=uCd&lO{MmTxXwES*bpPG zizgrdzFgdFAdBohDsEGg=Hn~HZHsDY0Lf6u)hcY>Q{mo`3QHf_$T%qMH%8ncQJyzw zsL*SrxGS9Mi~fOFQXWNVdP219d7DcT>c!F{pDDUOiw8X@t%O9e{O%zt7o3)So78nY~nKURT%9L z{BMXKo6y23ziCub8gOBqMwOul8*u}t1-LMhZ|nf z%vyDeD&AC02Bis9!xRRdwUPB(q?zk&m7 zCsAREjg%b6GzTUWNsSCOz=;6K^bdWwUXs+*-2mp*S!#CfB@MBQq~--QR?k@`wLC^NO=@6>~4!`70=j}+}^wn(k4_w8z=HbYkfkM>Dz;yoz;AJ>(_$0MoKrg)iU?XccQVQCXLv31?dOW^O8#1g=yO`CD0@c=e3p(j zNFmpV(yt@vd#g7}=V~bnJlz!f50EZo-=xy}T)I|7*$`78UAOeu1ZcNQpM5sb{69ig z^HXWh_KU1dJ4QiMAlo-Cp)NO5Zu-ohX1KF*3%`qC_HnYi%LSnDu-rx}2ewAaK0ngm zeOk!v20jIDddc0A$x`tT#obA-k+qoKS3VdjVi7E0ogJ-obtbN zjvP~%4yL*$Cq3IpmF}LL(zFn)!!|iRkt}leshstQe16qco+rCflUgA!__;AyXb*Y8 ziygG793(GJegPJAP+nHI7+5%6Uhbv`q{edY6$<9fL*_dQqeR$^0fSGC}_MB8Vzfs#bpK1SZYZ8VAs{`jdmUnKw@p&^fI~E7FXd z<&jJ#-f~FmG2MEj>yu8Jwz;eA-~KwC1Ju*@|5A@mI_4@oyiFVZ6S>NL zkv8UNTWZ%Yw6WIbEsg7F$5fK(ziy;8*WCf84%E&I;mM~}+C|S|fPZCabA0Lp4eo2# z%rB$h>7p$tx=#!4&=$NUmprM_{vc5W4EtKUVRR<2X}7lUBq`AHgm(7@O0&iO+C3j; zQLx?6mgc>s0_CYae1O&)a7$Yma-8}@A{*im~cj!e6wo%UJOI_iS2bn5&bq)BI;m_!=r%5{dL6r39_>+Eim<~vO~ z`-(_95AfERrjQ_c4|T2sZUarSbS*kx}M<{GtGWxUC+tX#Y#hTJ!kI+OH=7W+R~9p{A}I8Zz$r5iYZ1^IZX zF4CIE^IGV>-AFzb2kQo3h3MWMR$D?iX&;HA4V@e8Hd3f=WZWSL%Jy6Y8`MPobZZXBVS z|L}|M#yx=!By_sl(vTeF!8 zyO|VL33~0aT8jF<`a0$zz>m}P_Qj<6m?ioK?~e%tiI4Lm$viH3MbvQkp)@e^gGvk(g8!NzVt;fnBzKq*{>yF9%1^jPy1=2 zxuHKAO=&5b^=BmtMqf^UHa7^^vs!jG5%pnry?& z&{~@PhAQ+rZ^-ORo6zB+VaarIRTC#eZp+uy|MhbXYja)5H1`a9i=ybHy0ziR&YfT` z_J(7zcW9RT({OsgA)4Pm8g7T3r9qI`++FK?;Zq$7V)bmpr~71KXGg<7#zWNq6K)#*xkkru zod+7#*_5Auzcy-Cc!71*80Ed!sNgI$+6R$^qGOE?v>1HFt+ZAq~8 ze;A$S1k$0CozWy7Cc!rtn_VG`?X@#D-|a>_tmDR(?dk8o!szZm7ECEMdQ7rxqKg+s z&%f8w5NR>CtNBbD37xTHGz}JhzQ(WSH=zRMY3$$OHwwCVj)w{ldno+y#YX1vk8#Ef5?oi$Xt4|(4c0l%m>Cm5 z?ev{7E0@y8d$e&*%pBS#*D)@6MP18DZCo~j14Dn~vcH;BEpKhiiy;?{oo`$<=ngQ; z-Ed|uf##xN};xg%E9 zqng3%=s;nc@ktJ)-}q0)=YNv``iru8jWU~3$Bs&gGex9~GN+D;NlQpFr;21eeMHKn)U>$R;JC>NF>y>qKefON zBp^1YZiPp1-Jm41IWC4CFr_7#W+cR>|35FeORXeVDF7y$G;Jh5y6Px(lQ^k{~<$Z5XUO`oIPDURa|86oEKeMiT{?d^u3yO zcIeuV^|G+@(O|1r$} ze5Le)3kz$Xa2DyHAqzuI|Go+|jY&$1H6)w|Nc(c|N2g3X;viL$d!sin7yj$bxAF?f{EmwKyEc- ryv=0wC9BD-k>ZxuaX1NAI)WAP6B5khOY74W%h~L^sCopy as csv सीएसवी के रूप में कॉपी करें + + Set category + श्रेणी सेट करें + Tx टीएक्स @@ -438,6 +442,17 @@ Please back up this descriptor to be able to recover the funds! पता लगाए गए उपकरण का चयन करें + + DeviceManager + + Trusted + विश्वसनीय + + + Untrusted + अविश्वसनीय + + DisplayAddressDialog @@ -1413,6 +1428,14 @@ Location of signing device: ..... Mempool Instance URL मेमपूल इंस्टेंस URL + + The proxy does not apply to the Sync&Chat feature! + प्रॉक्सी सिंक और चैट सुविधा पर लागू नहीं होती! + + + Proxy: + प्रॉक्सी: + Apply && Shutdown लागू करें && बंद करें @@ -1721,10 +1744,26 @@ Location of signing device: ..... Choose a new name, or an existing name for merging: नया नाम चुनें, या विलय के लिए मौजूदा नाम चुनें: + + Syncing with {server} + {server} के साथ सिंकिंग + + + Connected to {server} + {server} से जुड़ा हुआ + + + Disconnected from {server} + {server} से डिस्कनेक्टेड + Click for new address नया पता के लिए क्लिक करें + + Sync && Chat + सिंक && चैट + Export labels लेबल निर्यात करें @@ -1737,10 +1776,6 @@ Location of signing device: ..... Import labels लेबल आयात करें - - Sync && Chat - सिंक && चैट - All Files (*);;JSONL Files (*.jsonl);;JSON Files (*.json) सभी फ़ाइलें (*);;JSONL फ़ाइलें (*.jsonl);;JSON फ़ाइलें (*.json) @@ -2333,18 +2368,10 @@ You can restore your labels at a later time with 'Import Sync Key'. - TrustedDevice - - Connected to {id} - {id} से जुड़ा हुआ - - - Syncing Address labels - पता लेबल सिंक करना - + TrustedDeviceItem - Can share Transactions - लेन-देन साझा कर सकते हैं + Untrust device + डिवाइस पर भरोसा नहीं @@ -2403,14 +2430,6 @@ You can restore your labels at a later time with 'Import Sync Key'.Set custom Relay list कस्टम रिले सूची सेट करें - - Trusted - विश्वसनीय - - - UnTrusted - अविश्वसनीय - My Device: {id} मेरा उपकरण: {id} @@ -2625,14 +2644,14 @@ below {rate} - UnTrustedDevice + UntrustedDeviceItem - Trust {id} - {id} पर भरोसा करें + Trust + भरोसा - Accept trust request from {other} - {other} से भरोसा अनुरोध स्वीकार करें + Trust this device + इस डिवाइस पर भरोसा करें @@ -3212,6 +3231,10 @@ Please install it. This is a private and fast way to connect to the bitcoin network. यह बिटकॉइन नेटवर्क से जुड़ने का एक निजी और तेज़ तरीका है। + + Run your bitcoind with "bitcoind -chain=test" + "bitcoind -chain=test" के साथ अपना bitcoind चलाएं + Run your bitcoind with "bitcoind -chain=signet" This however is a different signet than mutinynet.com. "bitcoind -chain=signet" के साथ अपना bitcoind चलाएं यह हालांकि mutinynet.com के अलग signet है। @@ -3222,20 +3245,24 @@ It is best to use your own server, such as {link}. सर्वर आपके IP पते को वॉलेट पतों के साथ जोड़ सकता है। अपना खुद का सर्वर उपयोग करना सबसे अच्छा है, जैसे कि {link}। - You can setup {link} with an electrum server on {server} and a block explorer on {explorer} - आप {link} के साथ एक इलेक्ट्रम सर्वर पर {server} और एक ब्लॉक एक्सप्लोरर पर {explorer} के साथ सेटअप कर सकते हैं + You can setup {electrum} with an electrum server on {server} and a block explorer on {explorer} + आप {server} पर एक इलेक्ट्रम सर्वर के साथ {electrum} सेटअप कर सकते हैं और एक ब्लॉक एक्सप्लोरर {explorer} पर + + + A good option is {electrum_testnet4} and as block explorer {explorer_testnet4} + एक अच्छा विकल्प है {electrum_testnet4} और ब्लॉक एक्सप्लोरर के रूप में {explorer_testnet4} - A good option is {link} and a block explorer on {explorer}. - एक अच्छा विकल्प है {link} और एक ब्लॉक एक्सप्लोरर पर {explorer}। + Signet choose {electrum} and a block explorer on {mempool_url}. + Signet चुनें {electrum} और एक ब्लॉक एक्सप्लोरर पर {mempool_url}। You can setup {setup} with an esplora server on {server} and a block explorer on {explorer} आप {setup} के साथ एक esplora सर्वर पर {server} और एक ब्लॉक एक्सप्लोरर पर {explorer} के साथ सेटअप कर सकते हैं - A good option is {link} and a block explorer on {explorer}. There is a {faucet}. - एक अच्छा विकल्प है {link} और एक ब्लॉक एक्सप्लोरर पर {explorer}। वहाँ एक {faucet} है। + A (somtimes working) server is {link} and a block explorer on {explorer}. There is a {faucet}. + एक (कभी-कभी काम करने वाला) सर्वर है {link} और एक ब्लॉक एक्सप्लोरर पर {explorer}। एक {faucet} है। You can connect your own Bitcoin node, such as {link}. @@ -3245,9 +3272,16 @@ It is best to use your own server, such as {link}. Run your bitcoind with "bitcoind -chain=regtest" "bitcoind -chain=regtest" के साथ अपना bitcoind चलाएं + + + network_config - Run your bitcoind with "bitcoind -chain=test" - "bitcoind -chain=test" के साथ अपना bitcoind चलाएं + {server_name} via the proxy {proxy} + प्रॉक्सी {proxy} के माध्यम से {server_name} + + + {server_name} + {server_name} diff --git a/bitcoin_safe/gui/locales/app_it_IT.qm b/bitcoin_safe/gui/locales/app_it_IT.qm index 706b698b18f0bcf48213a3815a16a73eece9a602..7ac65fd75166d0d8889b52cf8008b54b6a647259 100644 GIT binary patch delta 8243 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 delta 7121 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 F{{mergJb{z diff --git a/bitcoin_safe/gui/locales/app_it_IT.ts b/bitcoin_safe/gui/locales/app_it_IT.ts index 3d9acca..ad866cf 100644 --- a/bitcoin_safe/gui/locales/app_it_IT.ts +++ b/bitcoin_safe/gui/locales/app_it_IT.ts @@ -83,6 +83,10 @@ Copy as csv Copia come csv + + Set category + Imposta categoria + Tx Tx @@ -438,6 +442,17 @@ Please back up this descriptor to be able to recover the funds! Seleziona il dispositivo rilevato + + DeviceManager + + Trusted + Fidato + + + Untrusted + Non fidato + + DisplayAddressDialog @@ -1413,6 +1428,14 @@ Location of signing device: ..... Mempool Instance URL URL dell'istanza Mempool + + The proxy does not apply to the Sync&Chat feature! + Il proxy non si applica alla funzione di Sincronizzazione e Chat! + + + Proxy: + Proxy: + Apply && Shutdown Applica && Spegni @@ -1721,10 +1744,26 @@ Vuoi procedere comunque? Choose a new name, or an existing name for merging: Scegli un nuovo nome, o un nome esistente per la fusione: + + Syncing with {server} + Sincronizzazione con {server} + + + Connected to {server} + Connesso a {server} + + + Disconnected from {server} + Disconnesso da {server} + Click for new address Clicca per un nuovo indirizzo + + Sync && Chat + Sincronizza && Chatta + Export labels Esporta etichette @@ -1737,10 +1776,6 @@ Vuoi procedere comunque? Import labels Importa etichette - - Sync && Chat - Sincronizza && Chatta - All Files (*);;JSONL Files (*.jsonl);;JSON Files (*.json) Tutti i File (*);;File JSONL (*.jsonl);;File JSON (*.json) @@ -2333,18 +2368,10 @@ You can restore your labels at a later time with 'Import Sync Key'. - TrustedDevice - - Connected to {id} - Connesso a {id} - - - Syncing Address labels - Sincronizzazione etichette indirizzi - + TrustedDeviceItem - Can share Transactions - Può condividere transazioni + Untrust device + Dispositivo non fidato @@ -2403,14 +2430,6 @@ You can restore your labels at a later time with 'Import Sync Key'.Set custom Relay list Imposta l'elenco dei Relay personalizzati - - Trusted - Fidato - - - UnTrusted - Non fidato - My Device: {id} Il mio dispositivo: {id} @@ -2625,14 +2644,14 @@ below {rate} - UnTrustedDevice + UntrustedDeviceItem - Trust {id} - Fidati di {id} + Trust + Fiducia - Accept trust request from {other} - Accetta la richiesta di fiducia da {other} + Trust this device + Fidati di questo dispositivo @@ -3212,6 +3231,10 @@ Please install it. This is a private and fast way to connect to the bitcoin network. Questo è un modo privato e veloce per connettersi alla rete bitcoin. + + Run your bitcoind with "bitcoind -chain=test" + Esegui il tuo bitcoind con "bitcoind -chain=test" + Run your bitcoind with "bitcoind -chain=signet" This however is a different signet than mutinynet.com. Esegui il tuo bitcoind con "bitcoind -chain=signet" Questo tuttavia è un signet diverso da mutinynet.com. @@ -3222,20 +3245,24 @@ It is best to use your own server, such as {link}. Il server può associare il tuo indirizzo IP agli indirizzi del portafoglio. È meglio usare il proprio server, come {link}. - You can setup {link} with an electrum server on {server} and a block explorer on {explorer} - Puoi configurare {link} con un server electrum su {server} e un block explorer su {explorer} + You can setup {electrum} with an electrum server on {server} and a block explorer on {explorer} + Puoi impostare {electrum} con un server electrum su {server} e un esploratore di blocchi su {explorer} + + + A good option is {electrum_testnet4} and as block explorer {explorer_testnet4} + Una buona opzione è {electrum_testnet4} e come esploratore di blocchi {explorer_testnet4} - A good option is {link} and a block explorer on {explorer}. - Una buona opzione è {link} e un block explorer su {explorer}. + Signet choose {electrum} and a block explorer on {mempool_url}. + Signet sceglie {electrum} e un esploratore di blocchi su {mempool_url}. You can setup {setup} with an esplora server on {server} and a block explorer on {explorer} Puoi configurare {setup} con un server esplora su {server} e un block explorer su {explorer} - A good option is {link} and a block explorer on {explorer}. There is a {faucet}. - Una buona opzione è {link} e un block explorer su {explorer}. C'è un {faucet}. + A (somtimes working) server is {link} and a block explorer on {explorer}. There is a {faucet}. + Un server (a volte funzionante) è {link} e un esploratore di blocchi su {explorer}. C'è un {faucet}. You can connect your own Bitcoin node, such as {link}. @@ -3245,9 +3272,16 @@ It is best to use your own server, such as {link}. Run your bitcoind with "bitcoind -chain=regtest" Esegui il tuo bitcoind con "bitcoind -chain=regtest" + + + network_config - Run your bitcoind with "bitcoind -chain=test" - Esegui il tuo bitcoind con "bitcoind -chain=test" + {server_name} via the proxy {proxy} + {server_name} tramite il proxy {proxy} + + + {server_name} + {server_name} diff --git a/bitcoin_safe/gui/locales/app_ja_JP.qm b/bitcoin_safe/gui/locales/app_ja_JP.qm index 2c1e21410aa343e13185064a4e0fac2e8acfb017..62ae1bc472e40fea10bf6c5f12bc56d928bc50ae 100644 GIT binary patch delta 8111 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 delta 7112 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 diff --git a/bitcoin_safe/gui/locales/app_ja_JP.ts b/bitcoin_safe/gui/locales/app_ja_JP.ts index 9a50377..2aa7937 100644 --- a/bitcoin_safe/gui/locales/app_ja_JP.ts +++ b/bitcoin_safe/gui/locales/app_ja_JP.ts @@ -83,6 +83,10 @@ Copy as csv CSVとしてコピー + + Set category + カテゴリを設定 + Tx トランザクション @@ -438,6 +442,17 @@ Please back up this descriptor to be able to recover the funds! 検出されたデバイスを選択する + + DeviceManager + + Trusted + 信頼済み + + + Untrusted + 信頼されていない + + DisplayAddressDialog @@ -1413,6 +1428,14 @@ Location of signing device: ..... Mempool Instance URL 新しいウォレットを作成 + + The proxy does not apply to the Sync&Chat feature! + プロキシは同期&チャット機能には適用されません! + + + Proxy: + プロキシ: + Apply && Shutdown 適用 && シャットダウン @@ -1721,10 +1744,26 @@ Location of signing device: ..... Choose a new name, or an existing name for merging: 新しい名前、またはマージするための既存の名前を選択してください: + + Syncing with {server} + {server} と同期中 + + + Connected to {server} + {server} に接続しました + + + Disconnected from {server} + {server} から切断しました + Click for new address ウォレットの設定がまだありません + + Sync && Chat + 同期 && チャット + Export labels 新規 @@ -1737,10 +1776,6 @@ Location of signing device: ..... Import labels ラベルのインポート - - Sync && Chat - 同期 && チャット - All Files (*);;JSONL Files (*.jsonl);;JSON Files (*.json) すべてのファイル (*);;JSONL ファイル (*.jsonl);;JSON ファイル (*.json) @@ -2333,18 +2368,10 @@ You can restore your labels at a later time with 'Import Sync Key'. - TrustedDevice - - Connected to {id} - {id}に接続済み - - - Syncing Address labels - アドレスラベルを同期する - + TrustedDeviceItem - Can share Transactions - トランザクションを共有することができます + Untrust device + デバイスを信頼しない @@ -2403,14 +2430,6 @@ You can restore your labels at a later time with 'Import Sync Key'.Set custom Relay list カスタムリレーリストを設定する - - Trusted - 信頼済み - - - UnTrusted - 信頼されていない - My Device: {id} 私のデバイス:{id} @@ -2625,14 +2644,14 @@ below {rate} - UnTrustedDevice + UntrustedDeviceItem - Trust {id} - {id}を信頼する + Trust + 信頼 - Accept trust request from {other} - {other}からの信頼リクエストを受け入れる + Trust this device + このデバイスを信頼する @@ -3212,6 +3231,10 @@ Please install it. This is a private and fast way to connect to the bitcoin network. これはビットコインネットワークに接続するためのプライベートかつ高速な方法です。 + + Run your bitcoind with "bitcoind -chain=test" + "bitcoind -chain=test"でbitcoindを実行してください + Run your bitcoind with "bitcoind -chain=signet" This however is a different signet than mutinynet.com. "bitcoind -chain=signet"でbitcoindを実行してください。ただし、これはmutinynet.comの別のsignetです。 @@ -3222,20 +3245,24 @@ It is best to use your own server, such as {link}. サーバーはIPアドレスをウォレットアドレスに関連付けることができます。{link}など、独自のサーバーを使用するのが最適です。 - You can setup {link} with an electrum server on {server} and a block explorer on {explorer} - {link}を{server}上のElectrumサーバーと{explorer}上のブロックエクスプローラーに設定できます。 + You can setup {electrum} with an electrum server on {server} and a block explorer on {explorer} + {server} でエレクトラムサーバーを使用して {electrum} を設定し、{explorer} でブロックエクスプローラーを使用することができます + + + A good option is {electrum_testnet4} and as block explorer {explorer_testnet4} + 良い選択肢は {electrum_testnet4} としてブロックエクスプローラー {explorer_testnet4} - A good option is {link} and a block explorer on {explorer}. - 良いオプションは{link}と{explorer}上のブロックエクスプローラーです。 + Signet choose {electrum} and a block explorer on {mempool_url}. + Signet は {electrum} と {mempool_url} でブロックエクスプローラーを選択します。 You can setup {setup} with an esplora server on {server} and a block explorer on {explorer} {setup}を{server}上のEsploraサーバーと{explorer}上のブロックエクスプローラーに設定できます。 - A good option is {link} and a block explorer on {explorer}. There is a {faucet}. - 良いオプションは{link}と{explorer}上のブロックエクスプローラーです。蛇口があります。 + A (somtimes working) server is {link} and a block explorer on {explorer}. There is a {faucet}. + (時々動作する)サーバーは {link} と {explorer} でブロックエクスプローラーです。{faucet} があります。 You can connect your own Bitcoin node, such as {link}. @@ -3245,9 +3272,16 @@ It is best to use your own server, such as {link}. Run your bitcoind with "bitcoind -chain=regtest" "bitcoind -chain=regtest"でbitcoindを実行してください + + + network_config - Run your bitcoind with "bitcoind -chain=test" - "bitcoind -chain=test"でbitcoindを実行してください + {server_name} via the proxy {proxy} + プロキシ {proxy} 経由の {server_name} + + + {server_name} + {server_name} diff --git a/bitcoin_safe/gui/locales/app_pt_PT.qm b/bitcoin_safe/gui/locales/app_pt_PT.qm index 8502cfa26ff667f22ca5f9282891fc3ec245385c..75f7c2240a301fa1bc68ad5fe031cde7182efe61 100644 GIT binary patch delta 8085 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 Sj;&`|U;At+xs<@FI{X*^(}q|8 diff --git a/bitcoin_safe/gui/locales/app_pt_PT.ts b/bitcoin_safe/gui/locales/app_pt_PT.ts index 4d8ff04..6a68ed2 100644 --- a/bitcoin_safe/gui/locales/app_pt_PT.ts +++ b/bitcoin_safe/gui/locales/app_pt_PT.ts @@ -83,6 +83,10 @@ Copy as csv Copiar como csv + + Set category + Definir categoria + Tx Tx @@ -438,6 +442,17 @@ Please back up this descriptor to be able to recover the funds! Selecionar o dispositivo detetado + + DeviceManager + + Trusted + Confiável + + + Untrusted + Não confiado + + DisplayAddressDialog @@ -1413,6 +1428,14 @@ Location of signing device: ..... Mempool Instance URL URL da Instância do Mempool + + The proxy does not apply to the Sync&Chat feature! + O proxy não se aplica à função de Sincronização e Chat! + + + Proxy: + Proxy: + Apply && Shutdown Aplicar && Encerrar @@ -1721,10 +1744,26 @@ Deseja prosseguir mesmo assim? Choose a new name, or an existing name for merging: Escolha um novo nome, ou um nome existente para fusão: + + Syncing with {server} + Sincronizando com {server} + + + Connected to {server} + Conectado a {server} + + + Disconnected from {server} + Desconectado de {server} + Click for new address Clique para novo endereço + + Sync && Chat + Sincronizar && Conversar + Export labels Exportar etiquetas @@ -1737,10 +1776,6 @@ Deseja prosseguir mesmo assim? Import labels Importar etiquetas - - Sync && Chat - Sincronizar && Conversar - All Files (*);;JSONL Files (*.jsonl);;JSON Files (*.json) Todos os Ficheiros (*);;Ficheiros JSONL (*.jsonl);;Ficheiros JSON (*.json) @@ -2333,18 +2368,10 @@ You can restore your labels at a later time with 'Import Sync Key'. - TrustedDevice - - Connected to {id} - Conectado a {id} - - - Syncing Address labels - Sincronizando etiquetas de endereços - + TrustedDeviceItem - Can share Transactions - Pode partilhar Transações + Untrust device + Dispositivo não confiável @@ -2403,14 +2430,6 @@ You can restore your labels at a later time with 'Import Sync Key'.Set custom Relay list Definir lista personalizada de Relay - - Trusted - Confiável - - - UnTrusted - Não confiável - My Device: {id} Meu dispositivo: {id} @@ -2625,14 +2644,14 @@ below {rate} - UnTrustedDevice + UntrustedDeviceItem - Trust {id} - Confiar {id} + Trust + Confiar - Accept trust request from {other} - Aceitar pedido de confiança de {other} + Trust this device + Confiar neste dispositivo @@ -3212,6 +3231,10 @@ Please install it. This is a private and fast way to connect to the bitcoin network. Esta é uma maneira privada e rápida de se conectar à rede bitcoin. + + Run your bitcoind with "bitcoind -chain=test" + Execute seu bitcoind com "bitcoind -chain=test" + Run your bitcoind with "bitcoind -chain=signet" This however is a different signet than mutinynet.com. Execute seu bitcoind com "bitcoind -chain=signet" No entanto, este é um signet diferente de mutinynet.com. @@ -3222,20 +3245,24 @@ It is best to use your own server, such as {link}. O servidor pode associar seu endereço IP aos endereços da carteira. É melhor usar seu próprio servidor, como {link}. - You can setup {link} with an electrum server on {server} and a block explorer on {explorer} - Você pode configurar {link} com um servidor electrum em {server} e um explorador de blocos em {explorer} + You can setup {electrum} with an electrum server on {server} and a block explorer on {explorer} + Você pode configurar {electrum} com um servidor electrum em {server} e um explorador de blocos em {explorer} + + + A good option is {electrum_testnet4} and as block explorer {explorer_testnet4} + Uma boa opção é {electrum_testnet4} e como explorador de blocos {explorer_testnet4} - A good option is {link} and a block explorer on {explorer}. - Uma boa opção é {link} e um explorador de blocos em {explorer}. + Signet choose {electrum} and a block explorer on {mempool_url}. + Signet escolha {electrum} e um explorador de blocos em {mempool_url}. You can setup {setup} with an esplora server on {server} and a block explorer on {explorer} Você pode configurar {setup} com um servidor esplora em {server} e um explorador de blocos em {explorer} - A good option is {link} and a block explorer on {explorer}. There is a {faucet}. - Uma boa opção é {link} e um explorador de blocos em {explorer}. Há uma {faucet}. + A (somtimes working) server is {link} and a block explorer on {explorer}. There is a {faucet}. + Um servidor (às vezes funciona) é {link} e um explorador de blocos em {explorer}. Há um {faucet}. You can connect your own Bitcoin node, such as {link}. @@ -3245,9 +3272,16 @@ It is best to use your own server, such as {link}. Run your bitcoind with "bitcoind -chain=regtest" Execute seu bitcoind com "bitcoind -chain=regtest" + + + network_config - Run your bitcoind with "bitcoind -chain=test" - Execute seu bitcoind com "bitcoind -chain=test" + {server_name} via the proxy {proxy} + {server_name} através do proxy {proxy} + + + {server_name} + {server_name} diff --git a/bitcoin_safe/gui/locales/app_ru_RU.qm b/bitcoin_safe/gui/locales/app_ru_RU.qm index bbe44918e6217a338e64ec6dd66119ef718474fc..2a8bfc8a274196ae56805deb8ec22e5f0d5cce6f 100644 GIT binary patch delta 8083 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 KKRtmxX!&m}B8!ax diff --git a/bitcoin_safe/gui/locales/app_ru_RU.ts b/bitcoin_safe/gui/locales/app_ru_RU.ts index a73e56d..4a13b0e 100644 --- a/bitcoin_safe/gui/locales/app_ru_RU.ts +++ b/bitcoin_safe/gui/locales/app_ru_RU.ts @@ -83,6 +83,10 @@ Copy as csv Копировать в CSV + + Set category + Установить категорию + Tx Транзакция @@ -438,6 +442,17 @@ Please back up this descriptor to be able to recover the funds! Выберите обнаруженное устройство + + DeviceManager + + Trusted + Доверенный + + + Untrusted + Недоверие + + DisplayAddressDialog @@ -1413,6 +1428,14 @@ Location of signing device: ..... Mempool Instance URL URL экземпляра Mempool + + The proxy does not apply to the Sync&Chat feature! + Прокси не применяется к функции Синхронизация и Чат! + + + Proxy: + Прокси: + Apply && Shutdown Применить && Завершить работу @@ -1721,10 +1744,26 @@ Location of signing device: ..... Choose a new name, or an existing name for merging: Выберите новое имя или существующее имя для объединения: + + Syncing with {server} + Синхронизация с {server} + + + Connected to {server} + Подключено к {server} + + + Disconnected from {server} + Отключено от {server} + Click for new address Нажмите для нового адреса + + Sync && Chat + Синхронизация && Чат + Export labels Экспортировать метки @@ -1737,10 +1776,6 @@ Location of signing device: ..... Import labels Импортировать метки - - Sync && Chat - Синхронизация && Чат - All Files (*);;JSONL Files (*.jsonl);;JSON Files (*.json) Все файлы (*);;Файлы JSONL (*.jsonl);;Файлы JSON (*.json) @@ -2333,18 +2368,10 @@ You can restore your labels at a later time with 'Import Sync Key'. - TrustedDevice - - Connected to {id} - Подключено к {id} - - - Syncing Address labels - Синхронизация меток адресов - + TrustedDeviceItem - Can share Transactions - Может делиться транзакциями + Untrust device + Недоверие устройству @@ -2403,14 +2430,6 @@ You can restore your labels at a later time with 'Import Sync Key'.Set custom Relay list Установить пользовательский список реле - - Trusted - Доверенный - - - UnTrusted - Не доверенный - My Device: {id} Мое устройство: {id} @@ -2625,14 +2644,14 @@ below {rate} - UnTrustedDevice + UntrustedDeviceItem - Trust {id} - Доверять {id} + Trust + Доверие - Accept trust request from {other} - Принять запрос доверия от {other} + Trust this device + Доверять этому устройству @@ -3212,6 +3231,10 @@ Please install it. This is a private and fast way to connect to the bitcoin network. Это приватный и быстрый способ подключения к биткойн-сети. + + Run your bitcoind with "bitcoind -chain=test" + Запустите ваш bitcoind с "bitcoind -chain=test" + Run your bitcoind with "bitcoind -chain=signet" This however is a different signet than mutinynet.com. Запустите ваш bitcoind с "bitcoind -chain=signet" Это, однако, другой signet, чем mutinynet.com. @@ -3222,20 +3245,24 @@ It is best to use your own server, such as {link}. Сервер может ассоциировать ваш IP-адрес с адресами кошелька. Лучше всего использовать свой собственный сервер, например {link}. - You can setup {link} with an electrum server on {server} and a block explorer on {explorer} - Вы можете настроить {link} с электрум-сервером на {server} и блок-эксплорером на {explorer} + You can setup {electrum} with an electrum server on {server} and a block explorer on {explorer} + Вы можете настроить {electrum} с сервером электрума на {server} и блок-эксплорером на {explorer} + + + A good option is {electrum_testnet4} and as block explorer {explorer_testnet4} + Хорошим вариантом будет {electrum_testnet4} и как блок-эксплорер {explorer_testnet4} - A good option is {link} and a block explorer on {explorer}. - Хороший вариант - {link} и блок-эксплорер на {explorer}. + Signet choose {electrum} and a block explorer on {mempool_url}. + Signet выберите {electrum} и блок-эксплорер на {mempool_url}. You can setup {setup} with an esplora server on {server} and a block explorer on {explorer} Вы можете настроить {setup} с сервером esplora на {server} и блок-эксплорером на {explorer} - A good option is {link} and a block explorer on {explorer}. There is a {faucet}. - Хороший вариант - {link} и блок-эксплорер на {explorer}. Есть {faucet}. + A (somtimes working) server is {link} and a block explorer on {explorer}. There is a {faucet}. + Работающий (иногда) сервер - {link} и блок-эксплорер на {explorer}. Есть {faucet}. You can connect your own Bitcoin node, such as {link}. @@ -3245,9 +3272,16 @@ It is best to use your own server, such as {link}. Run your bitcoind with "bitcoind -chain=regtest" Запустите ваш bitcoind с "bitcoind -chain=regtest" + + + network_config - Run your bitcoind with "bitcoind -chain=test" - Запустите ваш bitcoind с "bitcoind -chain=test" + {server_name} via the proxy {proxy} + {server_name} через прокси {proxy} + + + {server_name} + {server_name} diff --git a/bitcoin_safe/gui/locales/app_zh_CN.qm b/bitcoin_safe/gui/locales/app_zh_CN.qm index c17439d8d322e9c03dc447bd9214e5e2e96a7998..5a5e3ab3c9739791a61d06d84b23f7a64f783911 100644 GIT binary patch delta 7946 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 as csv 复制为csv + + Set category + 设置类别 + Tx 交易 @@ -438,6 +442,17 @@ Please back up this descriptor to be able to recover the funds! 选择检测到的设备 + + DeviceManager + + Trusted + 信任 + + + Untrusted + 不受信任 + + DisplayAddressDialog @@ -1414,6 +1429,14 @@ Location of signing device: ..... Mempool Instance URL Mempool实例URL + + The proxy does not apply to the Sync&Chat feature! + 代理不适用于同步和聊天功能! + + + Proxy: + 代理: + Apply && Shutdown 应用&&关闭 @@ -1724,10 +1747,26 @@ Location of signing device: ..... Choose a new name, or an existing name for merging: 选择一个新名称,或一个已有名称以进行合并: + + Syncing with {server} + 与 {server} 同步 + + + Connected to {server} + 已连接到 {server} + + + Disconnected from {server} + 已从 {server} 断开 + Click for new address 点击获取新地址 + + Sync && Chat + 同步 && 聊天 + Export labels 导出标签 @@ -1740,10 +1779,6 @@ Location of signing device: ..... Import labels 导入标签 - - Sync && Chat - 同步 && 聊天 - All Files (*);;JSONL Files (*.jsonl);;JSON Files (*.json) 所有文件 (*);;JSONL 文件 (*.jsonl);;JSON 文件 (*.json) @@ -2336,18 +2371,10 @@ You can restore your labels at a later time with 'Import Sync Key'. - TrustedDevice - - Connected to {id} - 已连接至{id} - + TrustedDeviceItem - Syncing Address labels - 同步地址标签 - - - Can share Transactions - 可以分享交易 + Untrust device + 不信任设备 @@ -2406,14 +2433,6 @@ You can restore your labels at a later time with 'Import Sync Key'.Set custom Relay list 设置自定义中继列表 - - Trusted - 信任 - - - UnTrusted - 未受信任 - My Device: {id} 我的设备:{id} @@ -2631,14 +2650,14 @@ below {rate} - UnTrustedDevice + UntrustedDeviceItem - Trust {id} - 信任{id} + Trust + 信任 - Accept trust request from {other} - 接受{other}的信任请求 + Trust this device + 信任此设备 @@ -3219,6 +3238,10 @@ Please install it. This is a private and fast way to connect to the bitcoin network. 这是一种私密且快速的连接到比特币网络的方式。 + + Run your bitcoind with "bitcoind -chain=test" + 使用 "bitcoind -chain=test" 运行您的bitcoind + Run your bitcoind with "bitcoind -chain=signet" This however is a different signet than mutinynet.com. 使用 "bitcoind -chain=signet" 运行您的bitcoind,但这和mutinynet.com的signet不同。 @@ -3229,20 +3252,24 @@ It is best to use your own server, such as {link}. 服务器可以将您的IP地址与钱包地址关联。最好使用您自己的服务器,如 {link}。 - You can setup {link} with an electrum server on {server} and a block explorer on {explorer} - 您可以在 {server} 上设置 {link},并在 {explorer} 上设置一个区块浏览器 + You can setup {electrum} with an electrum server on {server} and a block explorer on {explorer} + 你可以在 {server} 上设置 {electrum} 与一个区块浏览器在 {explorer} + + + A good option is {electrum_testnet4} and as block explorer {explorer_testnet4} + 一个好的选择是 {electrum_testnet4} 和作为区块浏览器的 {explorer_testnet4} - A good option is {link} and a block explorer on {explorer}. - 一个好选择是 {link} 和一个在 {explorer} 上的区块浏览器。 + Signet choose {electrum} and a block explorer on {mempool_url}. + Signet 选择 {electrum} 和一个区块浏览器在 {mempool_url}。 You can setup {setup} with an esplora server on {server} and a block explorer on {explorer} 您可以在 {server} 上设置 {setup},并在 {explorer} 上设置一个esplora服务器 - A good option is {link} and a block explorer on {explorer}. There is a {faucet}. - 一个好选择是 {link} 和一个在 {explorer} 上的区块浏览器。这里有一个 {faucet}。 + A (somtimes working) server is {link} and a block explorer on {explorer}. There is a {faucet}. + 一个(有时有效的)服务器是 {link} 和一个区块浏览器在 {explorer}。这里有一个 {faucet}。 You can connect your own Bitcoin node, such as {link}. @@ -3252,9 +3279,16 @@ It is best to use your own server, such as {link}. Run your bitcoind with "bitcoind -chain=regtest" 使用 "bitcoind -chain=regtest" 运行您的bitcoind + + + network_config - Run your bitcoind with "bitcoind -chain=test" - 使用 "bitcoind -chain=test" 运行您的bitcoind + {server_name} via the proxy {proxy} + 通过代理 {proxy} 的 {server_name} + + + {server_name} + {server_name} diff --git a/bitcoin_safe/gui/qt/address_list.py b/bitcoin_safe/gui/qt/address_list.py index 7d56183..80c27f4 100644 --- a/bitcoin_safe/gui/qt/address_list.py +++ b/bitcoin_safe/gui/qt/address_list.py @@ -102,7 +102,15 @@ needs_frequent_flag, ) from .taglist import AddressDragInfo -from .util import ColorScheme, Message, do_copy, read_QIcon, sort_id_to_icon, webopen +from .util import ( + ColorScheme, + Message, + create_color_square, + do_copy, + read_QIcon, + sort_id_to_icon, + webopen, +) class ImportLabelMenu: @@ -605,6 +613,8 @@ def create_menu(self, position: QPoint) -> Menu: ) menu.addSeparator() + self._add_category_menu(menu, idx) + menu.addSeparator() self.add_copy_menu(menu, idx, include_columns_even_if_hidden=[self.key_column]) @@ -623,6 +633,34 @@ def create_menu(self, position: QPoint) -> Menu: return menu + def _add_category_menu(self, menu: Menu, idx: QModelIndex): + copy_menu = menu.add_menu(self.tr("Set category")) + + def factory(category, address): + def f(category=category, address=address): + drag_info = AddressDragInfo([category], [address]) + logger.debug(f"_add_category_menu set {drag_info}") + self.signal_tag_dropped.emit(drag_info) + + return f + + for category in self.wallet.labels.categories: + item = self.sourceModel().horizontalHeaderItem(self.Columns.ADDRESS) + if not item: + continue + item_col = self.item_from_index(idx.sibling(idx.row(), self.Columns.ADDRESS)) + if not item_col: + continue + address = item_col.data(MyItemDataRole.ROLE_CLIPBOARD_DATA) + if address is None: + address = item_col.text().strip() + + copy_menu.add_action( + category, + factory(category=category, address=address), + icon=create_color_square(CategoryEditor.color(category)), + ) + # def place_text_on_clipboard(self, text: str, *, title: str = None) -> None: # if bdk.Address(text): # try: diff --git a/bitcoin_safe/gui/qt/downloader.py b/bitcoin_safe/gui/qt/downloader.py index 798f096..8a7a5b3 100644 --- a/bitcoin_safe/gui/qt/downloader.py +++ b/bitcoin_safe/gui/qt/downloader.py @@ -30,6 +30,7 @@ import logging import sys from pathlib import Path +from typing import Dict import requests from PyQt6.QtCore import QThread, pyqtSignal @@ -55,15 +56,16 @@ class DownloadThread(QThread): finished: TypedPyQtSignalNo = pyqtSignal() # type: ignore aborted: TypedPyQtSignalNo = pyqtSignal() # type: ignore - def __init__(self, url, destination_dir) -> None: + def __init__(self, url, destination_dir, proxies: Dict | None) -> None: super().__init__() self.url = url self.destination_dir = Path(destination_dir) + self.proxies = proxies self.filename: Path = self.destination_dir / Path(url).name def run(self) -> None: try: - response = requests.get(self.url, stream=True, timeout=10) + response = requests.get(self.url, stream=True, timeout=10, proxies=self.proxies) content_length = response.headers.get("content-length") if content_length is None: # no content length header @@ -85,11 +87,12 @@ def run(self) -> None: class Downloader(QWidget): finished: TypedPyQtSignal[DownloadThread] = pyqtSignal(DownloadThread) # type: ignore - def __init__(self, url, destination_dir) -> None: + def __init__(self, url, destination_dir, proxies: Dict | None) -> None: super().__init__() self.url = url self.destination_dir = Path(destination_dir) self.filename = Path(url).name # Extract filename from URL + self.proxies = proxies self.initUI() def initUI(self) -> None: @@ -121,7 +124,7 @@ def initUI(self) -> None: def startDownload(self) -> None: self.startButton.hide() self.progress.show() - self.mythread = DownloadThread(self.url, str(self.destination_dir)) + self.mythread = DownloadThread(self.url, str(self.destination_dir), proxies=self.proxies) self.mythread.progress.connect(self.progress.setValue) self.mythread.finished.connect(self.downloadFinished) self.mythread.aborted.connect(self.download_aborted) @@ -147,7 +150,9 @@ def showFile(self) -> None: app = QApplication(sys.argv) # Example usage downloader = Downloader( - "https://github.com/sparrowwallet/sparrow/releases/download/1.8.4/sparrow_1.8.4-1_amd64.deb", "/tmp" + "https://github.com/sparrowwallet/sparrow/releases/download/1.8.4/sparrow_1.8.4-1_amd64.deb", + "/tmp", + proxies=None, ) downloader.show() sys.exit(app.exec()) diff --git a/bitcoin_safe/gui/qt/main.py b/bitcoin_safe/gui/qt/main.py index de99dc6..082c078 100644 --- a/bitcoin_safe/gui/qt/main.py +++ b/bitcoin_safe/gui/qt/main.py @@ -47,6 +47,7 @@ from bitcoin_safe.gui.qt.wrappers import Menu, MenuBar from bitcoin_safe.keystore import KeyStoreImporterTypes from bitcoin_safe.logging_setup import get_log_file +from bitcoin_safe.network_config import ProxyInfo from bitcoin_safe.pdf_statement import make_and_open_pdf_statement from bitcoin_safe.pdfrecovery import make_and_open_pdf from bitcoin_safe.threading_manager import ThreadingManager @@ -134,7 +135,14 @@ def __init__( self.qt_wallets: Dict[str, QTWallet] = {} self.threading_manager = ThreadingManager(threading_manager_name=self.__class__.__name__) - self.fx = FX(threading_parent=self.threading_manager) + self.fx = FX( + threading_parent=self.threading_manager, + proxies=( + ProxyInfo.parse(self.config.network_config.proxy_url).get_requests_proxy_dist() + if self.config.network_config.proxy_url + else None + ), + ) self.language_chooser = LanguageChooser(self, self.config, [self.signals.language_switch]) if not config_present: self.config.language_code = self.language_chooser.dialog_choose_language(self) @@ -148,7 +156,13 @@ def __init__( signals_min=self.signals, threading_parent=self.threading_manager, ) - self.mempool_data.set_data_from_mempoolspace() + self.mempool_data.set_data_from_mempoolspace( + proxies=( + ProxyInfo.parse(self.config.network_config.proxy_url).get_requests_proxy_dist() + if self.config.network_config.proxy_url + else None + ) + ) self.last_qtwallet: Optional[QTWallet] = None # connect the listeners @@ -287,7 +301,13 @@ def setupUi(self) -> None: vbox.addWidget(self.notification_bar_testnet) self.update_notification_bar = UpdateNotificationBar( - signals_min=self.signals, threading_parent=self.threading_manager + signals_min=self.signals, + threading_parent=self.threading_manager, + proxies=( + ProxyInfo.parse(self.config.network_config.proxy_url).get_requests_proxy_dist() + if self.config.network_config.proxy_url + else None + ), ) self.update_notification_bar.check() # TODO: disable this, after it got more stable vbox.addWidget(self.update_notification_bar) @@ -1311,10 +1331,11 @@ def create_qtwallet_from_ui(): return qtprotowallet - def set_tab_widget_icon(self, tab: QWidget, icon: QIcon) -> None: + def set_tab_widget_icon(self, tab: QWidget, icon: QIcon, tooltip: str | None) -> None: idx = self.tab_wallets.indexOf(tab) if idx != -1: self.tab_wallets.setTabIcon(idx, icon) + self.tab_wallets.setTabToolTip(idx, tooltip if tooltip else "") def add_qt_wallet( self, qt_wallet: QTWallet, file_path: str | None = None, password: str | None = None diff --git a/bitcoin_safe/gui/qt/network_settings/__main__.py b/bitcoin_safe/gui/qt/network_settings/__main__.py index b7b9075..065d773 100644 --- a/bitcoin_safe/gui/qt/network_settings/__main__.py +++ b/bitcoin_safe/gui/qt/network_settings/__main__.py @@ -4,10 +4,9 @@ import numpy as np from PyQt6.QtWidgets import QApplication +from bitcoin_safe.gui.qt.network_settings.main import NetworkSettingsUI from bitcoin_safe.network_config import NetworkConfigs -from .main import NetworkSettingsUI - logging.basicConfig(level=logging.DEBUG) if __name__ == "__main__": diff --git a/bitcoin_safe/gui/qt/network_settings/main.py b/bitcoin_safe/gui/qt/network_settings/main.py index fbfb1bc..fe4d5f0 100644 --- a/bitcoin_safe/gui/qt/network_settings/main.py +++ b/bitcoin_safe/gui/qt/network_settings/main.py @@ -27,17 +27,39 @@ # SOFTWARE. +import json import logging -from typing import Optional, Tuple +import socket +import ssl +from typing import Dict, Optional, Tuple import bdkpython as bdk import numpy as np import requests +import socks # Import the socks module from PySocks +from PyQt6.QtCore import Qt, pyqtSignal +from PyQt6.QtGui import QColor, QKeyEvent +from PyQt6.QtWidgets import ( + QCheckBox, + QComboBox, + QDialog, + QDialogButtonBox, + QFormLayout, + QGroupBox, + QHBoxLayout, + QLabel, + QPushButton, + QStackedWidget, + QVBoxLayout, + QWidget, +) from bitcoin_safe.gui.qt.custom_edits import QCompleterLineEdit from bitcoin_safe.gui.qt.dialogs import question_dialog +from bitcoin_safe.gui.qt.notification_bar import NotificationBar from bitcoin_safe.gui.qt.util import ( Message, + adjust_bg_color_for_darkmode, ensure_scheme, get_host_and_port, read_QIcon, @@ -47,6 +69,7 @@ from bitcoin_safe.network_config import ( NetworkConfig, NetworkConfigs, + ProxyInfo, get_default_port, get_description, get_electrum_configs, @@ -61,39 +84,24 @@ logger = logging.getLogger(__name__) -import json -import socket -import ssl - -from PyQt6.QtCore import Qt, pyqtSignal -from PyQt6.QtGui import QKeyEvent -from PyQt6.QtWidgets import ( - QCheckBox, - QComboBox, - QDialog, - QDialogButtonBox, - QFormLayout, - QGroupBox, - QHBoxLayout, - QLabel, - QPushButton, - QStackedWidget, - QVBoxLayout, - QWidget, -) - -def test_mempool_space_server(url: str) -> bool: +def test_mempool_space_server(url: str, proxies: Dict | None) -> bool: try: - response = requests.get(f"{url}/api/blocks/tip/height", timeout=2) + response = requests.get(f"{url}/api/blocks/tip/height", timeout=2, proxies=proxies) return response.status_code == 200 except Exception as e: logger.warning(f"Mempool.space server connection test failed: {e}") return False -def get_electrum_server_version(host: str, port: int, use_ssl: bool = True, timeout=2) -> Optional[str]: +def get_electrum_server_version( + host: str, port: int, use_ssl: bool = True, timeout: int = 2, proxy_info: Optional[ProxyInfo] = None +) -> Optional[str]: try: + if proxy_info: + socks.set_default_proxy(proxy_info.get_socks_scheme(), proxy_info.host, proxy_info.port) + socket.socket = socks.socksocket # type: ignore + # Connect to the server with socket.create_connection((host, port), timeout=timeout) as sock: # Wrap the socket with SSL if required @@ -117,12 +125,12 @@ def get_electrum_server_version(host: str, port: int, use_ssl: bool = True, time if use_ssl: ssock.close() - # Check and print the server version + # Check and return the server version if "result" in response_json: logger.debug(f"Server version: {response_json['result']}") return response_json["result"] else: - logger.debug(f"Failed to retrieve server version of {host , port , use_ssl}.") + logger.debug(f"Failed to retrieve server version of {host, port, use_ssl}.") return None except Exception as e: logger.debug(f"Connection or communication error: {e}") @@ -133,11 +141,15 @@ def test_connection(network_config: NetworkConfig) -> Optional[str]: if network_config.server_type == BlockchainType.Electrum: try: host, port = get_host_and_port(network_config.electrum_url) - if host is None or port is None: logger.warning(f"No host or port given") return None - return get_electrum_server_version(host=host, port=port, use_ssl=network_config.electrum_use_ssl) + return get_electrum_server_version( + host=host, + port=port, + use_ssl=network_config.electrum_use_ssl, + proxy_info=ProxyInfo.parse(network_config.proxy_url) if network_config.proxy_url else None, + ) except Exception as e: logger.warning(f"Electrum connection test failed: {e}") return None @@ -145,7 +157,15 @@ def test_connection(network_config: NetworkConfig) -> Optional[str]: elif network_config.server_type == BlockchainType.Esplora: try: # Assuming Esplora's REST API for testing connection - response = requests.get(f"{network_config.esplora_url}/blocks/tip/height", timeout=2) + response = requests.get( + f"{network_config.esplora_url}/blocks/tip/height", + timeout=2, + proxies=( + ProxyInfo.parse(network_config.proxy_url).get_requests_proxy_dist() + if network_config.proxy_url + else None + ), + ) if response.status_code == 200: return response.json() else: @@ -348,6 +368,7 @@ def __init__( self.stackedWidget.addWidget(self.rpcTab) + # mempool self.groupbox_blockexplorer = QGroupBox() self.groupbox_blockexplorer_layout = QHBoxLayout(self.groupbox_blockexplorer) button_mempool = QPushButton(self) @@ -361,6 +382,24 @@ def __init__( self.groupbox_blockexplorer_layout.addWidget(self.edit_mempool_url) self._layout.addWidget(self.groupbox_blockexplorer) + # proxy + self.groupbox_proxy = QGroupBox() + self.groupbox_proxy_layout = QHBoxLayout(self.groupbox_proxy) + + self.proxy_url_edit = QCompleterLineEdit( + network=network, + suggestions={network: ["127.0.0.1:9050"] for network in bdk.Network}, + ) + self.proxy_url_edit.textChanged.connect(self.on_proxy_url_changed) + self.proxy_url_edit_label = QLabel() + self.groupbox_proxy_layout.addWidget(self.proxy_url_edit_label) + self.groupbox_proxy_layout.addWidget(self.proxy_url_edit) + self._layout.addWidget(self.groupbox_proxy) + self.proxy_warning_label = NotificationBar("") + self.proxy_warning_label.set_background_color(adjust_bg_color_for_darkmode(QColor("#FFDF00"))) + self.proxy_warning_label.set_icon(read_QIcon("warning.png")) + self._layout.addWidget(self.proxy_warning_label) + # Create buttons and layout self.button_box = QDialogButtonBox( QDialogButtonBox.StandardButton.Help @@ -404,6 +443,10 @@ def updateUi(self): self.rpc_username_edit_label.setText(self.tr("Username:")) self.rpc_password_edit_label.setText(self.tr("Password:")) self.groupbox_blockexplorer.setTitle(self.tr("Mempool Instance URL")) + self.proxy_warning_label.textLabel.setText( + self.tr("The proxy does not apply to the Sync&Chat feature!") + ) + self.proxy_url_edit_label.setText(self.tr("Proxy:")) if ok_button := self.button_box.button(QDialogButtonBox.StandardButton.Ok): ok_button.setText(self.tr("Apply && Shutdown")) @@ -420,10 +463,21 @@ def get_use_ssl(url: str): logger.debug(f"set use_ssl = {use_ssl}") self.electrum_use_ssl = use_ssl + def on_proxy_url_changed(self): + is_proxy = bool(self.proxy_url_edit.text().strip()) + self.proxy_warning_label.setHidden(not is_proxy) + def _test_connection(self, network_config: NetworkConfig) -> Tuple[str | None, bool]: server_connection = test_connection(network_config=network_config) - mempool_server = test_mempool_space_server(url=network_config.mempool_url) + mempool_server = test_mempool_space_server( + url=network_config.mempool_url, + proxies=( + ProxyInfo.parse(network_config.proxy_url).get_requests_proxy_dist() + if network_config.proxy_url + else None + ), + ) return server_connection, mempool_server def _format_test_responses( @@ -470,6 +524,7 @@ def _edits_set_network(self, network: bdk.Network): self.rpc_username_edit.set_network(network) self.rpc_password_edit.set_network(network) self.edit_mempool_url.set_network(network) + self.proxy_url_edit.set_network(network) def add_to_completer_memory(self): self.compactblockfilters_ip_address_edit.add_current_to_memory() @@ -479,6 +534,7 @@ def add_to_completer_memory(self): self.rpc_username_edit.add_current_to_memory() self.rpc_password_edit.add_current_to_memory() self.edit_mempool_url.add_current_to_memory() + self.proxy_url_edit.add_current_to_memory() def on_apply_click(self): new_network_config = self.get_network_settings_from_ui() @@ -565,18 +621,6 @@ def enableIPPortLineEdit(self, index: int): self.compactblockfilters_port_edit.setEnabled(False) # Properties for all user entries - - @property - def mempool_url(self) -> str: - url = self.edit_mempool_url.text() - url = url if url.endswith("/") else f"{url}/" - url = url.replace("api/", "") if url.endswith("api/") else url - return ensure_scheme(url) - - @mempool_url.setter - def mempool_url(self, value: str): - self.edit_mempool_url.setText(value) - @property def network(self) -> bdk.Network: return self.network_combobox.currentData() @@ -685,3 +729,24 @@ def rpc_password(self) -> str: @rpc_password.setter def rpc_password(self, password: str): self.rpc_password_edit.setText(password if password else "") + + @property + def mempool_url(self) -> str: + url = self.edit_mempool_url.text() + url = url if url.endswith("/") else f"{url}/" + url = url.replace("api/", "") if url.endswith("api/") else url + return ensure_scheme(url) + + @mempool_url.setter + def mempool_url(self, value: str): + self.edit_mempool_url.setText(value) + + @property + def proxy_url(self) -> str | None: + text = self.proxy_url_edit.text() + return text if text else None + + @proxy_url.setter + def proxy_url(self, url: str | None): + self.proxy_url_edit.setText(url if url else "") + self.on_proxy_url_changed() diff --git a/bitcoin_safe/gui/qt/qt_wallet.py b/bitcoin_safe/gui/qt/qt_wallet.py index bcfef87..6ee3e77 100644 --- a/bitcoin_safe/gui/qt/qt_wallet.py +++ b/bitcoin_safe/gui/qt/qt_wallet.py @@ -205,7 +205,7 @@ def __init__( fx: FX, get_lang_code: Callable[[], str], sync_tab: SyncTab | None = None, - set_tab_widget_icon: Optional[Callable[[QWidget, QIcon], None]] = None, + set_tab_widget_icon: Optional[Callable[[QWidget, QIcon, str | None], None]] = None, password: str | None = None, file_path: str | None = None, threading_parent: ThreadingManager | None = None, @@ -320,7 +320,7 @@ def from_file( mempool_data: MempoolData, fx: FX, get_lang_code: Callable[[], str], - set_tab_widget_icon: Optional[Callable[[QWidget, QIcon], None]] = None, + set_tab_widget_icon: Optional[Callable[[QWidget, QIcon, str | None], None]] = None, password: str | None = None, threading_parent: ThreadingManager | None = None, ) -> "QTWallet": @@ -976,18 +976,34 @@ def update_status_visualization(self, sync_status: SyncStatus) -> None: return icon = None + tooltip = None if sync_status == SyncStatus.syncing: icon = read_QIcon("status_waiting.svg") self.history_tab_with_toolbar.sync_button.set_icon_is_syncing() + tooltip = self.tr("Syncing with {server}").format( + server=self.config.network_config.description_short() + ) elif self.wallet.get_height() and sync_status in [SyncStatus.synced]: - icon = read_QIcon("status_connected.svg") + using_proxy = self.config.network_config.proxy_url + icon = ( + read_QIcon("status_connected_proxy.svg") + if using_proxy + else read_QIcon("status_connected.svg") + ) + tooltip = self.config.network_config.description_short() + tooltip = self.tr("Connected to {server}").format( + server=self.config.network_config.description_short() + ) self.history_tab_with_toolbar.sync_button.set_icon_allow_refresh() else: icon = read_QIcon("status_disconnected.svg") + tooltip = self.tr("Disconnected from {server}").format( + server=self.config.network_config.description_short() + ) self.history_tab_with_toolbar.sync_button.set_icon_allow_refresh() if self.set_tab_widget_icon: - self.set_tab_widget_icon(self.tab, icon) + self.set_tab_widget_icon(self.tab, icon, tooltip) def create_list_tab( self, diff --git a/bitcoin_safe/gui/qt/ui_tx.py b/bitcoin_safe/gui/qt/ui_tx.py index 22ffe6f..bea1780 100644 --- a/bitcoin_safe/gui/qt/ui_tx.py +++ b/bitcoin_safe/gui/qt/ui_tx.py @@ -64,7 +64,7 @@ import bdkpython as bdk from PyQt6.QtCore import Qt, pyqtSignal -from PyQt6.QtGui import QColor, QFont, QIcon +from PyQt6.QtGui import QColor, QFont from PyQt6.QtWidgets import ( QCheckBox, QDialogButtonBox, @@ -124,7 +124,6 @@ add_to_buttonbox, caught_exception_message, clear_layout, - icon_path, read_QIcon, ) from .utxo_list import UTXOList, UtxoListWithToolbar @@ -140,7 +139,7 @@ def __init__(self, signals_min: SignalsMin) -> None: self.category_dict: Dict[str, Set[str]] = {} self.signals_min = signals_min self.set_background_color(adjust_bg_color_for_darkmode(QColor("#FFDF00"))) - self.set_icon(QIcon(icon_path("warning.png"))) + self.set_icon(read_QIcon("warning.png")) self.optionalButton.setVisible(False) self.textLabel.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum) diff --git a/bitcoin_safe/gui/qt/update_notification_bar.py b/bitcoin_safe/gui/qt/update_notification_bar.py index ceae129..5bcb143 100644 --- a/bitcoin_safe/gui/qt/update_notification_bar.py +++ b/bitcoin_safe/gui/qt/update_notification_bar.py @@ -33,7 +33,7 @@ import shutil import tempfile from pathlib import Path -from typing import Any, List, Optional +from typing import Any, Dict, List, Optional from packaging import version from PyQt6.QtCore import pyqtSignal @@ -63,8 +63,13 @@ class UpdateNotificationBar(NotificationBar, ThreadingManager): key = KnownGPGKeys.andreasgriffin def __init__( - self, signals_min: SignalsMin, parent=None, threading_parent: ThreadingManager | None = None + self, + signals_min: SignalsMin, + proxies: Dict | None, + parent=None, + threading_parent: ThreadingManager | None = None, ) -> None: + self.proxies = proxies self.download_container = QWidget() self.download_container_layout = QHBoxLayout(self.download_container) current_margins = self.download_container_layout.contentsMargins() @@ -86,7 +91,7 @@ def __init__( refresh_icon = (self.style() or QStyle()).standardIcon(QStyle.StandardPixmap.SP_BrowserReload) self.optionalButton.setIcon(refresh_icon) - self.verifyer = SignatureVerifyer(list_of_known_keys=[self.key]) + self.verifyer = SignatureVerifyer(list_of_known_keys=[self.key], proxies=self.proxies) self.assets: List[Asset] = [] self.setVisible(False) @@ -126,7 +131,9 @@ def refresh(self) -> None: self.setVisible(True) for asset in self.assets: - downloader = Downloader(url=asset.url, destination_dir=tempfile.gettempdir()) + downloader = Downloader( + url=asset.url, destination_dir=tempfile.gettempdir(), proxies=self.proxies + ) downloader.finished.connect(self.on_download_finished) self.download_container_layout.addWidget(downloader) else: @@ -206,7 +213,7 @@ def get_filtered_assets(self, assets: List[Asset]) -> List[Asset]: def check(self) -> None: def do() -> Any: - return GitHubAssetDownloader(self.key.repository).get_assets_latest() + return GitHubAssetDownloader(self.key.repository, proxies=self.proxies).get_assets_latest() def on_done(result) -> None: pass diff --git a/bitcoin_safe/gui/qt/util.py b/bitcoin_safe/gui/qt/util.py index 3e71adb..52d29ff 100644 --- a/bitcoin_safe/gui/qt/util.py +++ b/bitcoin_safe/gui/qt/util.py @@ -882,3 +882,17 @@ def hash_color(text: str) -> QColor: def category_color(text: str) -> QColor: return adjust_bg_color_for_darkmode(hash_color(text)) + + +def create_color_square(color: QColor, length=24) -> QIcon: + # Define the size of the square icon + size = QSize(length, length) + + # Create a QPixmap of defined size + pixmap = QPixmap(size) + + # Fill the QPixmap with the provided color + pixmap.fill(color) + + # Create and return a QIcon from the QPixmap + return QIcon(pixmap) diff --git a/bitcoin_safe/mempool.py b/bitcoin_safe/mempool.py index 4c01fd4..ab4cc25 100644 --- a/bitcoin_safe/mempool.py +++ b/bitcoin_safe/mempool.py @@ -182,11 +182,11 @@ def fee_to_color(fee, colors=chartColors) -> str: return colors[indizes[-1]] -def fetch_from_url(url: str, is_json=True) -> Optional[Any]: +def fetch_from_url(url: str, proxies: Dict | None, is_json=True) -> Optional[Any]: logger.debug(f"fetch_json_from_url requests.get({url}, timeout=10)") try: - response = requests.get(url, timeout=10) + response = requests.get(url, timeout=10, proxies=proxies) # Check if the request was successful (status code 200) if response.status_code == 200: # Parse the JSON response @@ -201,9 +201,9 @@ def fetch_from_url(url: str, is_json=True) -> Optional[Any]: return None -def threaded_fetch(url: str, on_success, is_json=True) -> TaskThread: +def threaded_fetch(url: str, on_success, proxies: Dict | None, is_json=True) -> TaskThread: def do() -> Any: - return fetch_from_url(url, is_json=is_json) + return fetch_from_url(url, is_json=is_json, proxies=proxies) def on_error(packed_error_info) -> None: custom_exception_handler(*packed_error_info) @@ -296,7 +296,7 @@ def max_reasonable_fee_rate(self) -> float: return average_fee_rate * (1 + slack) - def set_data_from_mempoolspace(self, force=False) -> None: + def set_data_from_mempoolspace(self, proxies: Dict | None, force=False) -> None: if not force and datetime.datetime.now() - self.time_of_data < datetime.timedelta(minutes=9): logger.debug( f"Do not fetch data from {self.network_config.mempool_url} because data is only {datetime.datetime.now()- self.time_of_data } old." @@ -314,6 +314,7 @@ def on_mempool_blocks(mempool_blocks) -> None: threaded_fetch( f"{self.network_config.mempool_url}api/v1/fees/mempool-blocks", on_mempool_blocks, + proxies=proxies, ) ) logger.debug(f"started on_mempool_blocks") @@ -325,8 +326,7 @@ def on_recommended(recommended) -> None: self.append_thread( threaded_fetch( - f"{self.network_config.mempool_url}api/v1/fees/recommended", - on_recommended, + f"{self.network_config.mempool_url}api/v1/fees/recommended", on_recommended, proxies=proxies ) ) logger.debug(f"started on_recommended") @@ -338,15 +338,12 @@ def on_mempool_dict(mempool_dict) -> None: self.signal_data_updated.emit() self.append_thread( - threaded_fetch( - f"{self.network_config.mempool_url}api/mempool", - on_mempool_dict, - ) + threaded_fetch(f"{self.network_config.mempool_url}api/mempool", on_mempool_dict, proxies=proxies) ) logger.debug(f"started on_mempool_dict") - def fetch_block_tip_height(self) -> int: - response = fetch_from_url(f"{self.network_config.mempool_url}api/blocks/tip/height") + def fetch_block_tip_height(self, proxies: Dict | None) -> int: + response = fetch_from_url(f"{self.network_config.mempool_url}api/blocks/tip/height", proxies=proxies) return response if response else 0 def fee_rate_to_projected_block_index(self, fee_rate: float) -> int: diff --git a/bitcoin_safe/network_config.py b/bitcoin_safe/network_config.py index f32401a..a476dd8 100644 --- a/bitcoin_safe/network_config.py +++ b/bitcoin_safe/network_config.py @@ -29,14 +29,16 @@ import logging from dataclasses import dataclass +from urllib.parse import urlparse from packaging import version logger = logging.getLogger(__name__) -from typing import Any, Dict +from typing import Any, Dict, Literal import bdkpython as bdk +import socks from bitcoin_safe.pythonbdk_types import BlockchainType, CBFServerType from bitcoin_safe.storage import BaseSaveableClass, filtered_for_init @@ -48,6 +50,38 @@ FEE_RATIO_HIGH_WARNING = 0.05 # warn user if fee/amount for on-chain tx is higher than this +@dataclass +class ProxyInfo: + host: str | None + port: int | None + scheme: str = "socks5" + + def get_socks_scheme(self) -> Literal[1] | Literal[2]: + if self.scheme == "socks4": + return socks.SOCKS4 + return socks.SOCKS5 + + def get_url(self): + return f"{self.scheme}://{self.host}:{self.port}" + + def get_requests_proxy_dist(self): + return {"http": self.get_url(), "https": self.get_url()} + + @classmethod + def parse(cls, proxy_url: str): + # Prepend "socks5h://" if the proxy string does not contain a scheme + if "://" not in proxy_url: + proxy_url = f"{cls.scheme}://{proxy_url}" # Default to SOCKS5 with remote DNS + parsed_proxy = urlparse(proxy_url) + return cls(host=parsed_proxy.hostname, port=parsed_proxy.port, scheme=parsed_proxy.scheme) + + +def clean_electrum_url(url: str, electrum_use_ssl: bool) -> str: + if electrum_use_ssl and not url.startswith("ssl://"): + url = "ssl://" + url + return url + + def get_mempool_url(network: bdk.Network) -> Dict[str, str]: d = { bdk.Network.BITCOIN: { @@ -300,6 +334,25 @@ def __init__(self, network: bdk.Network) -> None: self.esplora_url: str = get_esplora_urls(network)["default"] self.mempool_url: str = get_mempool_url(network)["default"] + self.proxy_url: str | None = None + + def description_short(self): + server_name = "" + if self.server_type == BlockchainType.Electrum: + server_name = f"{self.electrum_url}" + elif self.server_type == BlockchainType.Esplora: + server_name = f"{self.esplora_url}" + elif self.server_type == BlockchainType.CompactBlockFilter: + server_name = f"{self.server_type.name}" + elif self.server_type == BlockchainType.RPC: + server_name = f"{self.server_type.name}" + + if self.proxy_url: + return translate("network_config", "{server_name} via the proxy {proxy}").format( + server_name=server_name, proxy=self.proxy_url + ) + else: + return translate("network_config", "{server_name}").format(server_name=server_name) def dump(self) -> Dict[str, Any]: d = super().dump() diff --git a/bitcoin_safe/signature_manager.py b/bitcoin_safe/signature_manager.py index 62d9c48..5365e42 100644 --- a/bitcoin_safe/signature_manager.py +++ b/bitcoin_safe/signature_manager.py @@ -123,14 +123,15 @@ class Asset: class GitHubAssetDownloader: - def __init__(self, repository: str) -> None: + def __init__(self, repository: str, proxies: Dict | None) -> None: self.repository = repository + self.proxies = proxies logger.debug(f"initialized {self}") def _get_assets(self, api_url) -> List[Asset]: try: logger.debug(f"Get assets from {api_url}") - response = requests.get(api_url, timeout=2) + response = requests.get(api_url, timeout=2, proxies=self.proxies) response.raise_for_status() assets = response.json().get("assets", []) @@ -154,12 +155,10 @@ def get_assets_latest(self) -> List[Asset]: class SignatureVerifyer: - def __init__( - self, - list_of_known_keys: Optional[List[SimpleGPGKey]], - ) -> None: + def __init__(self, list_of_known_keys: Optional[List[SimpleGPGKey]], proxies: Dict | None) -> None: self.list_of_known_keys = list_of_known_keys if list_of_known_keys else [] self.public_keys: Dict[str, pgpy.PGPKey] = {} + self.proxies = proxies self.import_known_keys() def import_public_key_file(self, path: Path) -> pgpy.PGPKey: @@ -300,8 +299,8 @@ def _get_asset_url(assets: List[Asset], ending: str) -> Optional[str]: return None @staticmethod - def _download_file(download_url: str, filename: Path) -> Path: - sig_response = requests.get(download_url, timeout=2) + def _download_file(download_url: str, filename: Path, proxies: Dict | None) -> Path: + sig_response = requests.get(download_url, timeout=2, proxies=proxies) sig_response.raise_for_status() with open(filename, "wb") as f: f.write(sig_response.content) @@ -309,12 +308,12 @@ def _download_file(download_url: str, filename: Path) -> Path: @staticmethod def _download_asset_file( - assets: List[Asset], target_directory: Path, asset_ending: str + assets: List[Asset], target_directory: Path, asset_ending: str, proxies: Dict | None ) -> Optional[Path]: if url := SignatureVerifyer._get_asset_url(assets, asset_ending): url_filename = Path(url).name filename = target_directory / url_filename - SignatureVerifyer._download_file(url, filename) + SignatureVerifyer._download_file(url, filename, proxies=proxies) return filename return None @@ -350,22 +349,27 @@ def get_signature_from_web(self, binary_filename: Path) -> Optional[Path]: if not tag: return None - assets = GitHubAssetDownloader(repository=key.repository).get_assets_by_tag(tag) + assets = GitHubAssetDownloader(repository=key.repository, proxies=self.proxies).get_assets_by_tag(tag) if assets: if key.manifest_ending: self._download_asset_file( - assets, target_directory=binary_filename.parent, asset_ending=key.manifest_ending + assets, + target_directory=binary_filename.parent, + asset_ending=key.manifest_ending, + proxies=self.proxies, ) sig_filename = self._download_asset_file( assets, target_directory=binary_filename.parent, asset_ending=f"{key.manifest_ending}.asc", + proxies=self.proxies, ) else: sig_filename = self._download_asset_file( assets, target_directory=binary_filename.parent, asset_ending=f"{binary_filename.name}.asc", + proxies=self.proxies, ) return sig_filename diff --git a/bitcoin_safe/wallet.py b/bitcoin_safe/wallet.py index 1965386..f2bfd77 100644 --- a/bitcoin_safe/wallet.py +++ b/bitcoin_safe/wallet.py @@ -33,6 +33,7 @@ import random from time import time +from bitcoin_safe.network_config import ProxyInfo, clean_electrum_url from bitcoin_safe.psbt_util import FeeInfo from .signals import Signals, UpdateFilter @@ -807,13 +808,16 @@ def init_blockchain(self) -> bdk.Blockchain: blockchain_config = None if self.config.network_config.server_type == BlockchainType.Electrum: - full_url = ( - "ssl://" if self.config.network_config.electrum_use_ssl else "" - ) + self.config.network_config.electrum_url blockchain_config = bdk.BlockchainConfig.ELECTRUM( bdk.ElectrumConfig( - url=full_url, - socks5=None, + url=clean_electrum_url( + self.config.network_config.electrum_url, self.config.network_config.electrum_use_ssl + ), + socks5=( + ProxyInfo.parse(self.config.network_config.proxy_url).get_url() + if self.config.network_config.proxy_url + else None + ), retry=2, timeout=10, stop_gap=max(self.gap, self.gap_change), @@ -824,7 +828,11 @@ def init_blockchain(self) -> bdk.Blockchain: blockchain_config = bdk.BlockchainConfig.ESPLORA( bdk.EsploraConfig( base_url=self.config.network_config.esplora_url, - proxy=None, + proxy=( + ProxyInfo.parse(self.config.network_config.proxy_url).get_url() + if self.config.network_config.proxy_url + else None + ), concurrency=1, stop_gap=max(self.gap, self.gap_change), timeout=10, diff --git a/poetry.lock b/poetry.lock index afff6f5..7959f04 100644 --- a/poetry.lock +++ b/poetry.lock @@ -791,61 +791,61 @@ typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "fonttools" -version = "4.55.5" +version = "4.55.6" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.55.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:58fbc0dba6c87a9ec57be7e6751a6442911e546750e362b39ff07e30445c355f"}, - {file = "fonttools-4.55.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b788742d99e7e62b3428728f3af743c6e169b53796c2b885adb0080c256c523e"}, - {file = "fonttools-4.55.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f64266bbeccd1c289f4ea2ae4cc8b87daa51ba44bdbf27b3950f6f303ee2ee9"}, - {file = "fonttools-4.55.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d073d6e0a5576c7b82d7926c8489f326b6c9381871660bbdeeafe5e9a7b400f7"}, - {file = "fonttools-4.55.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57e79e3fdb011792be6e9f73cb2154c37a2b3f14ff09ddec32f4d1591ba56d64"}, - {file = "fonttools-4.55.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:53f9b4bf0c4744bfabdd488db6eb374beb3ee4778f54019b48486aebbcc6c77d"}, - {file = "fonttools-4.55.5-cp310-cp310-win32.whl", hash = "sha256:4f47f9b4f2674b5841d119a5bffade603777729a23cb6d9413146b6b109cd04e"}, - {file = "fonttools-4.55.5-cp310-cp310-win_amd64.whl", hash = "sha256:01bf83e07a44a34d58d22a6af0013c94ed7d876c081ed04e6a6db368db3ec4f2"}, - {file = "fonttools-4.55.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:019ab35daacec241d567174e1e8068191b059a7e171f68483778a91485e8e27b"}, - {file = "fonttools-4.55.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:59fbfd348fe3c15b4cb31f0cb81a9fad67c1419596e2f349be0a1e48955775fd"}, - {file = "fonttools-4.55.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3686e74b372313495ffbe58b23304772bc2f7c7fb947da382f250bfc1b0417c"}, - {file = "fonttools-4.55.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f8065f503b2abc9d8d2b241da307c58c80df0e28c5ea8464fe8d2ba3bb76990"}, - {file = "fonttools-4.55.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ac1e3139c9776eb3a5119a25da5665fd961f6b39a5307b62bd427afba69b7c5e"}, - {file = "fonttools-4.55.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1bf14bcec231408581ee3cafcb23a0ef1821a974a6ff5031ccbc1aad65192de9"}, - {file = "fonttools-4.55.5-cp311-cp311-win32.whl", hash = "sha256:aa7868dd7d42992ccd722d70a3bd413d875ca51633b094b5867ab09ed8e78bbe"}, - {file = "fonttools-4.55.5-cp311-cp311-win_amd64.whl", hash = "sha256:d895f363e03697f7941c278fb7a42fca63d52de5416180ef1892dfd67a136698"}, - {file = "fonttools-4.55.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:5ad2b4a8bfd94ae6792c2f00e585fcdaa5c7803d87eedaeaa30e81616283e712"}, - {file = "fonttools-4.55.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:928d0a093eaab9bde8b295f01859b0463384b86ba800eb959370734588347444"}, - {file = "fonttools-4.55.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b10b408a68f5c1ecb927ad11860bf534312a236c61f3b20cb6e22bb55265b9"}, - {file = "fonttools-4.55.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1a06e77f956a5857a4444f689f0ca4a1c4bdbcb38c812805f54a1b21380cc24"}, - {file = "fonttools-4.55.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:85dc010bb9dc0fc9cfdb050ace4fb810ff5d5edb6a34045bce83dd4307b1a27c"}, - {file = "fonttools-4.55.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:546b195de57360e52b6f94bf126b1400004643fc2754705b6ae659293c34e449"}, - {file = "fonttools-4.55.5-cp312-cp312-win32.whl", hash = "sha256:8c9061a4027bfc62b22c55885e561d6eb36d3f6d058f7894e4d84eb778580e3f"}, - {file = "fonttools-4.55.5-cp312-cp312-win_amd64.whl", hash = "sha256:742c63ba8e2888dc6cf4cce98d16fe77d79a6c283f5c6d1a8e17d128ecde45fc"}, - {file = "fonttools-4.55.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a853ee8ac47c2e2e68d5a0f07f7f38eb616d60c4438bcff5c0312322451f15c6"}, - {file = "fonttools-4.55.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:444e84d8158ed40427827e5ff8db4d05d89560e19f2a6baf90565880d1c7c08f"}, - {file = "fonttools-4.55.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e8eb7ca7b3ef580114edd6f9ce9424e534b9cb1a98c918a42930f196b1ac59e"}, - {file = "fonttools-4.55.5-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c27b2084eb715bce93b4c3cc2080a8b3fb6aff5a105c221f150df42e79120a"}, - {file = "fonttools-4.55.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bb11588c41c9e867cebbf72485963252b2d782e97514845aa3fd372b31f63afe"}, - {file = "fonttools-4.55.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a65d4407ca31ec582d1a7105ee08986f6ef964ddcbe0a2878881926bc23cfba3"}, - {file = "fonttools-4.55.5-cp313-cp313-win32.whl", hash = "sha256:7cf3dc8051c0b37034c2661934e8795a1e95ac5cf4f97ce9935cf6f10ba481f0"}, - {file = "fonttools-4.55.5-cp313-cp313-win_amd64.whl", hash = "sha256:b5e6868d8952a31cb3643080ea1594adde971bf2a05aae5bc47bf0ac91e79575"}, - {file = "fonttools-4.55.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a7b3c77c5dcf0a1b4e3b57e976253f5ef09966f811b4b06d36f8eb8672c209fb"}, - {file = "fonttools-4.55.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91e989b53cdcb301ebd599c32a95cf397082184d46ec73125dbdc83b56720e2e"}, - {file = "fonttools-4.55.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:240927333041df5377a86d4458bdadea1573bd29589040dcab4e52b6277dfae1"}, - {file = "fonttools-4.55.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41b52283f68b090b85ba5fd94541ef15c21a17b7c7e3917fd9520297975838fc"}, - {file = "fonttools-4.55.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:686ee7f1d0ef1d8d540039219d256ee89724e9dc3db4c394b4c65f6512228924"}, - {file = "fonttools-4.55.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a0723737a3fb16e7d359df797c9c4d8a3fd974dfff1c27d245f6670efb4b8ab6"}, - {file = "fonttools-4.55.5-cp38-cp38-win32.whl", hash = "sha256:365e7f9005df0a0125d0728aa49340030431ba54b33f20226c5529a26ce4980f"}, - {file = "fonttools-4.55.5-cp38-cp38-win_amd64.whl", hash = "sha256:f51572d1c8277f91b2be575b7069f8765170cbf7c2d5b1cdd53d40dd2323b792"}, - {file = "fonttools-4.55.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9e747a98062af9dca29d035417c6f547b956908a0711a66697125596c40ad05a"}, - {file = "fonttools-4.55.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:96f6a1ed5181e80b1db8c1352d5f45c8cef875a9633ad69df6af4ee7c6895077"}, - {file = "fonttools-4.55.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ed53c04d444660a2eeef3d8a8fe8c62d9bd99d50a03b0400624144d3131cf4a"}, - {file = "fonttools-4.55.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25362494d1f9ef467c210fc1d73116811a01fd507345e865c14ecbd80b323380"}, - {file = "fonttools-4.55.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:acd86a4605586502f6716a543183dcedc4497a7cbce7fb1ca4e793daa5bfdc12"}, - {file = "fonttools-4.55.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2c14aae1b255767f2cb2f8c8de4c50d45f94bf125a5149325d3af0e4f6b39060"}, - {file = "fonttools-4.55.5-cp39-cp39-win32.whl", hash = "sha256:a8602b04451e7f62eda75071210ebea4e2ba7d2a24868eba2cf541232b88357c"}, - {file = "fonttools-4.55.5-cp39-cp39-win_amd64.whl", hash = "sha256:17a14d3a23e894289288d77abcf4b2e6e198c0e1ec6798522bcc51f1ffbfdf6d"}, - {file = "fonttools-4.55.5-py3-none-any.whl", hash = "sha256:6261deeaa54a720405fc4a21dc92f722d1b2c5a977910d464029534b9475f716"}, - {file = "fonttools-4.55.5.tar.gz", hash = "sha256:87afe2a1e81a55131bbae66f3f1718b1faee3218b1261abce036d7d189094c36"}, + {file = "fonttools-4.55.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:57d55fc965e5dd20c8a60d880e0f43bafb506be87af0b650bdc42591e41e0d0d"}, + {file = "fonttools-4.55.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:127999618afe3a2490fad54bab0650c5fbeab1f8109bdc0205f6ad34306deb8b"}, + {file = "fonttools-4.55.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3226d40cb92787e09dcc3730f54b3779dfe56bdfea624e263685ba17a6faac4"}, + {file = "fonttools-4.55.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e82772f70b84e17aa36e9f236feb2a4f73cb686ec1e162557a36cf759d1acd58"}, + {file = "fonttools-4.55.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a632f85bd73e002b771bcbcdc512038fa5d2e09bb18c03a22fb8d400ea492ddf"}, + {file = "fonttools-4.55.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:791e0cf862cdd3a252df395f1bb5f65e3a760f1da3c7ce184d0f7998c266614d"}, + {file = "fonttools-4.55.6-cp310-cp310-win32.whl", hash = "sha256:94f7f2c5c5f3a6422e954ecb6d37cc363e27d6f94050a7ed3f79f12157af6bb2"}, + {file = "fonttools-4.55.6-cp310-cp310-win_amd64.whl", hash = "sha256:2d15e02b93a46982a8513a208e8f89148bca8297640527365625be56151687d0"}, + {file = "fonttools-4.55.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0879f99eabbf2171dfadd9c8c75cec2b7b3aa9cd1f3955dd799c69d60a5189ef"}, + {file = "fonttools-4.55.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d77d83ca77a4c3156a2f4cbc7f09f5a8503795da658fa255b987ad433a191266"}, + {file = "fonttools-4.55.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07478132407736ee5e54f9f534e73923ae28e9bb6dba17764a35e3caf7d7fea3"}, + {file = "fonttools-4.55.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c06fbc2fd76b9bab03eddfd8aa9fb7c0981d314d780e763c80aa76be1c9982"}, + {file = "fonttools-4.55.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:09ed667c4753e1270994e5398cce8703e6423c41702a55b08f843b2907b1be65"}, + {file = "fonttools-4.55.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0ee6ed68af8d57764d69da099db163aaf37d62ba246cfd42f27590e3e6724b55"}, + {file = "fonttools-4.55.6-cp311-cp311-win32.whl", hash = "sha256:9f99e7876518b2d059a9cc67c506168aebf9c71ac8d81006d75e684222f291d2"}, + {file = "fonttools-4.55.6-cp311-cp311-win_amd64.whl", hash = "sha256:3aa6c684007723895aade9b2fe76d07008c9dc90fd1ef6c310b3ca9c8566729f"}, + {file = "fonttools-4.55.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:51120695ee13001533e50abd40eec32c01b9c6f44c5567db38a7acd3eedcd19d"}, + {file = "fonttools-4.55.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:76ac5a595f86892b49ba86ba2e46185adc76328ce6eff0583b30e5c3ab02a914"}, + {file = "fonttools-4.55.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b7535a5ac386e549e2b00b34c59b53f805e2423000676723b6867df3c10df04"}, + {file = "fonttools-4.55.6-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c42009177d3690894288082d5e3dac6bdc9f5d38e25054535e341a19cf5183a4"}, + {file = "fonttools-4.55.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:88f74bc19dbab3dee6a00ca67ca54bb4793e44ff0c4dcf1fa61d68651ae3fa0a"}, + {file = "fonttools-4.55.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bc6f58976ffc19fe1630119a2736153b66151d023c6f30065f31c9e8baed1303"}, + {file = "fonttools-4.55.6-cp312-cp312-win32.whl", hash = "sha256:4259159715142c10b0f4d121ef14da3fa6eafc719289d9efa4b20c15e57fef82"}, + {file = "fonttools-4.55.6-cp312-cp312-win_amd64.whl", hash = "sha256:d91fce2e9a87cc0db9f8042281b6458f99854df810cfefab2baf6ab2acc0f4b4"}, + {file = "fonttools-4.55.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9394813cc73fa22c5413ec1c5745c0a16f68dd2b890f7c55eaba5cb40187ed55"}, + {file = "fonttools-4.55.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ac817559a7d245454231374e194b4e457dca6fefa5b52af466ab0516e9a09c6e"}, + {file = "fonttools-4.55.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34405f1314f1e88b1877a9f9e497fe45190e8c4b29a6c7cd85ed7f666a57d702"}, + {file = "fonttools-4.55.6-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af5469bbf555047efd8752d85faeb2a3510916ddc6c50dd6fb168edf1677408f"}, + {file = "fonttools-4.55.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8a8004a19195eb8a8a13de69e26ec9ed60a5bc1fde336d0021b47995b368fac9"}, + {file = "fonttools-4.55.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:73a4aaf672e7b2265c6354a69cbbadf71b7f3133ecb74e98fec4c67c366698a3"}, + {file = "fonttools-4.55.6-cp313-cp313-win32.whl", hash = "sha256:73bdff9c44d36c57ea84766afc20517eda0c9bb1571b4a09876646264bd5ff3b"}, + {file = "fonttools-4.55.6-cp313-cp313-win_amd64.whl", hash = "sha256:132fa22be8a99784de8cb171b30425a581f04a40ec1c05183777fb2b1fe3bac9"}, + {file = "fonttools-4.55.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8398928acb8a57073606feb9a310682d4a7e2d7536f2c61719261f4c0974504c"}, + {file = "fonttools-4.55.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c2f78ebfdef578d4db7c44bc207ac5f9a5c1f22c9db606460dcc8ad48e183338"}, + {file = "fonttools-4.55.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fb545f3a4ebada908fa717ec732277de18dd10161f03ee3b3144d34477804de"}, + {file = "fonttools-4.55.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1062daa0390b32bfd062ded2b450db9e9cf10e5a9919561c13f535e818b1952b"}, + {file = "fonttools-4.55.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:860ab9ed3f9e088d3bdb77b9074e656635f173b039e77d550b603cba052a0dca"}, + {file = "fonttools-4.55.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:03701e7de70c71eb5965cb200986b0c11dfa3cf8e843e4f517ee30a0f43f0a25"}, + {file = "fonttools-4.55.6-cp38-cp38-win32.whl", hash = "sha256:f66561fbfb75785d06513b8025a50be37bf970c3c413e87581cc6eff10bc78f1"}, + {file = "fonttools-4.55.6-cp38-cp38-win_amd64.whl", hash = "sha256:edf159a8f1e48dc4683a715b36da76dd2f82954b16bfe11a215d58e963d31cfc"}, + {file = "fonttools-4.55.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:61aa1997c520bee4cde14ffabe81efc4708c500c8c81dce37831551627a2be56"}, + {file = "fonttools-4.55.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7954ea66a8d835f279c17d8474597a001ddd65a2c1ca97e223041bfbbe11f65e"}, + {file = "fonttools-4.55.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f4e88f15f5ed4d2e4bdfcc98540bb3987ae25904f9be304be9a604e7a7050a1"}, + {file = "fonttools-4.55.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d419483a6295e83cabddb56f1c7b7bfdc8169de2fcb5c68d622bd11140355f9"}, + {file = "fonttools-4.55.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:acc74884afddc2656bffc50100945ff407574538c152931c402fccddc46f0abc"}, + {file = "fonttools-4.55.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a55489c7e9d5ea69690a2afad06723c3d0c48c6d276a25391ea97cb31a16b37c"}, + {file = "fonttools-4.55.6-cp39-cp39-win32.whl", hash = "sha256:8c9de8d16d02ecc8b65e3f3d2d1e3002be2c4a3f094d580faf76d7f768bd45fe"}, + {file = "fonttools-4.55.6-cp39-cp39-win_amd64.whl", hash = "sha256:471961af7a4b8461fac0c8ee044b4986e6fe3746d4c83a1aacbdd85b4eb53f93"}, + {file = "fonttools-4.55.6-py3-none-any.whl", hash = "sha256:d20ab5a78d0536c26628eaadba661e7ae2427b1e5c748a0a510a44d914e1b155"}, + {file = "fonttools-4.55.6.tar.gz", hash = "sha256:1beb4647a0df5ceaea48015656525eb8081af226fe96554089fd3b274d239ef0"}, ] [package.extras] @@ -1832,22 +1832,22 @@ virtualenv = ">=20.10.0" [[package]] name = "protobuf" -version = "4.25.5" +version = "4.25.6" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.5-cp310-abi3-win32.whl", hash = "sha256:5e61fd921603f58d2f5acb2806a929b4675f8874ff5f330b7d6f7e2e784bbcd8"}, - {file = "protobuf-4.25.5-cp310-abi3-win_amd64.whl", hash = "sha256:4be0571adcbe712b282a330c6e89eae24281344429ae95c6d85e79e84780f5ea"}, - {file = "protobuf-4.25.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:b2fde3d805354df675ea4c7c6338c1aecd254dfc9925e88c6d31a2bcb97eb173"}, - {file = "protobuf-4.25.5-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:919ad92d9b0310070f8356c24b855c98df2b8bd207ebc1c0c6fcc9ab1e007f3d"}, - {file = "protobuf-4.25.5-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fe14e16c22be926d3abfcb500e60cab068baf10b542b8c858fa27e098123e331"}, - {file = "protobuf-4.25.5-cp38-cp38-win32.whl", hash = "sha256:98d8d8aa50de6a2747efd9cceba361c9034050ecce3e09136f90de37ddba66e1"}, - {file = "protobuf-4.25.5-cp38-cp38-win_amd64.whl", hash = "sha256:b0234dd5a03049e4ddd94b93400b67803c823cfc405689688f59b34e0742381a"}, - {file = "protobuf-4.25.5-cp39-cp39-win32.whl", hash = "sha256:abe32aad8561aa7cc94fc7ba4fdef646e576983edb94a73381b03c53728a626f"}, - {file = "protobuf-4.25.5-cp39-cp39-win_amd64.whl", hash = "sha256:7a183f592dc80aa7c8da7ad9e55091c4ffc9497b3054452d629bb85fa27c2a45"}, - {file = "protobuf-4.25.5-py3-none-any.whl", hash = "sha256:0aebecb809cae990f8129ada5ca273d9d670b76d9bfc9b1809f0a9c02b7dbf41"}, - {file = "protobuf-4.25.5.tar.gz", hash = "sha256:7f8249476b4a9473645db7f8ab42b02fe1488cbe5fb72fddd445e0665afd8584"}, + {file = "protobuf-4.25.6-cp310-abi3-win32.whl", hash = "sha256:61df6b5786e2b49fc0055f636c1e8f0aff263808bb724b95b164685ac1bcc13a"}, + {file = "protobuf-4.25.6-cp310-abi3-win_amd64.whl", hash = "sha256:b8f837bfb77513fe0e2f263250f423217a173b6d85135be4d81e96a4653bcd3c"}, + {file = "protobuf-4.25.6-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:6d4381f2417606d7e01750e2729fe6fbcda3f9883aa0c32b51d23012bded6c91"}, + {file = "protobuf-4.25.6-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:5dd800da412ba7f6f26d2c08868a5023ce624e1fdb28bccca2dc957191e81fb5"}, + {file = "protobuf-4.25.6-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:4434ff8bb5576f9e0c78f47c41cdf3a152c0b44de475784cd3fd170aef16205a"}, + {file = "protobuf-4.25.6-cp38-cp38-win32.whl", hash = "sha256:8bad0f9e8f83c1fbfcc34e573352b17dfce7d0519512df8519994168dc015d7d"}, + {file = "protobuf-4.25.6-cp38-cp38-win_amd64.whl", hash = "sha256:b6905b68cde3b8243a198268bb46fbec42b3455c88b6b02fb2529d2c306d18fc"}, + {file = "protobuf-4.25.6-cp39-cp39-win32.whl", hash = "sha256:3f3b0b39db04b509859361ac9bca65a265fe9342e6b9406eda58029f5b1d10b2"}, + {file = "protobuf-4.25.6-cp39-cp39-win_amd64.whl", hash = "sha256:6ef2045f89d4ad8d95fd43cd84621487832a61d15b49500e4c1350e8a0ef96be"}, + {file = "protobuf-4.25.6-py3-none-any.whl", hash = "sha256:07972021c8e30b870cfc0863409d033af940213e0e7f64e27fe017b929d2c9f7"}, + {file = "protobuf-4.25.6.tar.gz", hash = "sha256:f8cfbae7c5afd0d0eaccbe73267339bff605a2315860bb1ba08eb66670a9a91f"}, ] [[package]] @@ -2168,6 +2168,18 @@ files = [ [package.extras] cp2110 = ["hidapi"] +[[package]] +name = "pysocks" +version = "1.7.1" +description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"}, + {file = "PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5"}, + {file = "PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"}, +] + [[package]] name = "pytest" version = "8.3.4" @@ -2527,13 +2539,13 @@ files = [ [[package]] name = "semver" -version = "3.0.2" +version = "3.0.4" description = "Python helper for Semantic Versioning (https://semver.org)" optional = false python-versions = ">=3.7" files = [ - {file = "semver-3.0.2-py3-none-any.whl", hash = "sha256:b1ea4686fe70b981f85359eda33199d60c53964284e0cfb4977d243e37cf4bf4"}, - {file = "semver-3.0.2.tar.gz", hash = "sha256:6253adb39c70f6e51afed2fa7152bcd414c411286088fb4b9effb133885ab4cc"}, + {file = "semver-3.0.4-py3-none-any.whl", hash = "sha256:9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746"}, + {file = "semver-3.0.4.tar.gz", hash = "sha256:afc7d8c584a5ed0a11033af086e8af226a9c0b206f313e0301f8dd7b6b589602"}, ] [[package]] @@ -2891,4 +2903,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.13" -content-hash = "076f4a1421554bb518a174588ec5cf8ae92191bb4ffdcf56b3a2590f6ce93784" +content-hash = "a6b00c64503f23653b582636a2bff1fc014ab339bb36683b4823469f03f460af" diff --git a/pyproject.toml b/pyproject.toml index 061adde..22143c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,6 +44,7 @@ numpy = "2.2.1" # error in wine/pyinstaller when increased bitcoin-qr-tools = "^1.0.3" bitcoin-nostr-chat = "^0.6.1" # { git = "https://github.com/andreasgriffin/bitcoin-nostr-chat.git", rev = "1707c7479d9de4c1915f2b0d907b27f58703e7c0" } bitcoin-usb = "^0.7.4" +pysocks = "^1.7.1" [tool.poetry.group.dev.dependencies] diff --git a/tests/non_gui/test_signature_manager.py b/tests/non_gui/test_signature_manager.py index 5b5b02d..7234c8e 100644 --- a/tests/non_gui/test_signature_manager.py +++ b/tests/non_gui/test_signature_manager.py @@ -36,7 +36,7 @@ def test_download_manifest_and_verify() -> None: - manager = SignatureVerifyer(list_of_known_keys=KnownGPGKeys.all()) + manager = SignatureVerifyer(list_of_known_keys=KnownGPGKeys.all(), proxies=None) with tempfile.TemporaryDirectory() as tempdir: logger.debug(f"tempdir {tempdir}") @@ -53,7 +53,7 @@ def test_download_manifest_and_verify() -> None: def test_download_manifest_and_verify_wrong_signature() -> None: - manager = SignatureVerifyer(list_of_known_keys=KnownGPGKeys.all()) + manager = SignatureVerifyer(list_of_known_keys=KnownGPGKeys.all(), proxies=None) with tempfile.TemporaryDirectory() as tempdir: logger.debug(f"tempdir {tempdir}") diff --git a/tools/build.py b/tools/build.py index f9cabf7..a89d9b3 100644 --- a/tools/build.py +++ b/tools/build.py @@ -35,7 +35,7 @@ import shutil import subprocess from pathlib import Path -from typing import Dict, List, Literal +from typing import Callable, Dict, List, Literal from translation_handler import TranslationHandler, run_local @@ -227,21 +227,21 @@ def build_in_docker( run_local(f'docker build {DOCKER_BUILD_FLAGS} -t {docker_image} "{path_build}"') # Possibly do a fresh clone - FRESH_CLONE = False + cloned_path: Path | None = None if build_commit: logger.info(f"BITCOINSAFE_BUILD_COMMIT={build_commit}. Doing fresh clone and git checkout.") - FRESH_CLONE = Path(f"/tmp/{docker_image.replace(' ','')}/fresh_clone/bitcoin_safe") + cloned_path = Path(f"/tmp/{docker_image.replace(' ','')}/fresh_clone/bitcoin_safe") try: - run_local(f'rm -rf "{FRESH_CLONE}"') + run_local(f'rm -rf "{cloned_path}"') except subprocess.CalledProcessError: logger.info("We need sudo to remove previous FRESH_CLONE.") - run_local(f'sudo rm -rf "{FRESH_CLONE}"') + run_local(f'sudo rm -rf "{cloned_path}"') os.umask(0o022) - run_local(f'git clone "{PROJECT_ROOT}" "{FRESH_CLONE}"') - os.chdir(str(FRESH_CLONE)) + run_local(f'git clone "{PROJECT_ROOT}" "{cloned_path}"') + os.chdir(str(cloned_path)) run_local(f'git checkout "{build_commit}"') os.chdir(original_dir) - PROJECT_ROOT_OR_FRESHCLONE_ROOT = FRESH_CLONE + PROJECT_ROOT_OR_FRESHCLONE_ROOT = cloned_path else: logger.info("Not doing fresh clone.") @@ -290,20 +290,20 @@ def build_dmg( logger.info(f"Building within current project") # Possibly do a fresh clone - FRESH_CLONE = False + cloned_path: Path | None = None if build_commit: logger.info(f"BITCOINSAFE_BUILD_COMMIT={build_commit}. Doing fresh clone and git checkout.") - FRESH_CLONE = Path(f"/tmp/{build_commit.replace(' ','')}/fresh_clone/bitcoin_safe") + cloned_path = Path(f"/tmp/{build_commit.replace(' ','')}/fresh_clone/bitcoin_safe") try: - run_local(f'rm -rf "{FRESH_CLONE}"') + run_local(f'rm -rf "{cloned_path}"') except subprocess.CalledProcessError: logger.info("We need sudo to remove previous FRESH_CLONE.") - run_local(f'sudo rm -rf "{FRESH_CLONE}"') + run_local(f'sudo rm -rf "{cloned_path}"') os.umask(0o022) - run_local(f'git clone "{PROJECT_ROOT}" "{FRESH_CLONE}"') - os.chdir(str(FRESH_CLONE)) + run_local(f'git clone "{PROJECT_ROOT}" "{cloned_path}"') + os.chdir(str(cloned_path)) run_local(f'git checkout "{build_commit}"') - PROJECT_ROOT_OR_FRESHCLONE_ROOT = FRESH_CLONE + PROJECT_ROOT_OR_FRESHCLONE_ROOT = cloned_path else: logger.info("Not doing fresh clone.") @@ -354,7 +354,7 @@ def package_application( ): # self.update_briefcase_requires() - f_map = { + f_map: Dict[str, Callable[..., None]] = { "appimage": self.build_appimage_docker, "windows": self.build_windows_exe_and_installer_docker, "mac": self.build_dmg, @@ -398,9 +398,7 @@ def lock(self): run_local("poetry lock --no-cache --no-update") def verify(self, signed_files: List[Path]): - manager = SignatureVerifyer( - list_of_known_keys=[KnownGPGKeys.andreasgriffin], - ) + manager = SignatureVerifyer(list_of_known_keys=[KnownGPGKeys.andreasgriffin], proxies=None) assert signed_files for filepath in signed_files: @@ -576,7 +574,7 @@ def get_default_targets() -> List[TARGET_LITERAL]: targets = get_default_targets() else: print(f"--targets was given with the values: {args.targets}") - targets = [t.replace(",", "") for t in targets] + targets = [t.replace(",", "") for t in targets] # type: ignore builder = Builder(module_name="bitcoin_safe", clean_all=args.clean) builder.package_application(targets=targets, build_commit=args.commit)