Compare commits

..

58 Commits

Author SHA1 Message Date
luigi1111
588b8435b7 Merge pull request #4051
1215a6e Assume untrusted daemon in simple mode (j-berman)
499c2a4 qsTr scan tx error (j-berman)
3b0e66a Display clear error when user scans older tx via untrusted daemon (j-berman)
4cd6652 Update balance after calling scan_tx (j-berman)
2023-09-30 18:34:24 -04:00
luigi1111
8983cae468 Merge pull request #4220
f5cb244 build: prepare v0.18.3.0 (selsta)
2023-09-30 18:24:50 -04:00
luigi1111
3612866f9f Merge pull request #4219
8f7de0e p2pool: update to v3.7 (SChernykh)
2023-09-30 18:24:28 -04:00
luigi1111
beb336cb93 Merge pull request #4217
b60a98a workflows: run flatpak only in main repo (selsta)
2023-09-30 18:23:54 -04:00
luigi1111
90cbe37846 Merge pull request #4216
7040e3b docker: update zlib to 1.3 (selsta)
2023-09-30 18:23:33 -04:00
luigi1111
10984a0a37 Merge pull request #4211
145ea10 flatpak: Start workflow after release (BigmenPixel0)
2023-09-30 18:22:48 -04:00
selsta
f5cb2443d1 build: prepare v0.18.3.0 2023-09-30 23:43:41 +02:00
SChernykh
8f7de0e9fc p2pool: update to v3.7 2023-09-30 12:26:38 +02:00
selsta
b60a98ae6c workflows: run flatpak only in main repo 2023-09-15 21:35:02 +02:00
selsta
7040e3b72f docker: update zlib to 1.3 2023-09-15 20:00:31 +02:00
luigi1111
12a0966eb9 Merge pull request #4213
d338e06 p2pool: update to v3.6.2 (SChernykh)
2023-09-14 22:27:37 -05:00
luigi1111
5ff03786c7 Merge pull request #4210
d42caf1 cmake: update libicu to 73 (selsta)
2023-09-14 22:27:06 -05:00
luigi1111
483b825a2f Merge pull request #4157
6c4a8fb DaemonManager.cpp: disable JIT on macOS ARM (selsta)
2023-09-14 22:26:02 -05:00
luigi1111
ca304fc63d Merge pull request #4156
ad1b53f main: add ARM build tag for auto updater (selsta)
2023-09-14 22:25:31 -05:00
luigi1111
5a1a349977 Merge pull request #4155
a9e0aff workflows: set default arch for macOS bundle (selsta)
2023-09-14 22:25:08 -05:00
luigi1111
5683f76cd0 Merge pull request #4154
371ff61 cmake: copy missing boost lib, run codesign (selsta)
2023-09-14 22:23:23 -05:00
luigi1111
cc7d7da346 Merge pull request #4153
cad8874 README: add mingw-w64-x86_64-pcre for msys2 instructions (selsta)
2023-09-14 22:22:28 -05:00
luigi1111
d10e4d1e50 Merge pull request #4150
5345dcc cmake: add install_name_tool to fix svg rendering (selsta)
2023-09-14 22:22:03 -05:00
SChernykh
d338e06abd p2pool: update to v3.6.2 2023-09-03 17:39:28 +02:00
BigmenPixel0
145ea10d93 flatpak: Start workflow after release 2023-08-18 12:51:39 +05:00
selsta
d42caf1fbc cmake: update libicu to 73 2023-08-18 01:25:18 +02:00
luigi1111
705cc6573f Merge pull request #4151
7765b8b flatpak: Add workflow (BigmenPixel0)
2023-08-17 14:39:09 -05:00
luigi1111
5c3544f211 Merge pull request #4201
a65fbee Fixing broken link to Arch linux package repo (web3d3v)
2023-08-17 10:34:49 -05:00
luigi1111
f859664443 Merge pull request #4190
17e3ed6 p2pool: update to v3.5 (SChernykh)
2023-08-17 10:34:02 -05:00
luigi1111
2d25364f42 Merge pull request #4185
ddcc17b installers/windows/Readme.htm Updated blockchain size and added pruning description (Dvd-Znf)
2023-08-17 10:33:30 -05:00
luigi1111
8323fb02ca Merge pull request #4183
f6549f3 deploy: remove libssp (tobtoht)
2023-08-17 10:32:58 -05:00
luigi1111
d442ca38dc Merge pull request #4177
fa2241f WizardSummary: fix seed language and hide during restore (selsta)
2023-08-17 10:32:31 -05:00
luigi1111
57409a8c47 Merge pull request #4158
6bd11f2 TxUtils: add handleOpenAliasResolution func, simplify code (selsta)
2023-08-17 10:31:52 -05:00
luigi1111
f002987edd Merge pull request #4149
434f548 Prove/Check: clear text fields on wallet close (plowsof)
2023-08-17 10:31:23 -05:00
luigi1111
866a7b3a78 Merge pull request #4147
3331078 p2pool: fix crash without network connection (selsta)
6ac8e7a p2pool: add more detailed failure message (selsta)
2023-08-17 10:31:00 -05:00
luigi1111
f342d46541 Merge pull request #4146
90c4aa4 wizard: add Ledger Stax image (selsta)
2023-08-17 10:30:28 -05:00
luigi1111
f5e016930b Merge pull request #4145
7a4052f readme: tweak build instructions (Botspot)
2023-08-17 10:30:07 -05:00
luigi1111
ac9a305543 Merge pull request #4144
4cbfa5e docker: update OpenSSL to 1.1.1u (tobtoht)
2023-08-17 10:29:22 -05:00
luigi1111
f824aebfaa Merge pull request #4143
b6e336d docker: update Linux & Windows Qt to 5.15.10 (tobtoht)
2023-08-17 10:28:59 -05:00
BigmenPixel0
7765b8b462 flatpak: Add workflow 2023-08-15 19:18:45 +05:00
web3d3v
a65fbee213 Fixing broken link to Arch linux package repo 2023-07-27 06:28:36 +03:00
SChernykh
17e3ed6c97 p2pool: update to v3.5 2023-06-30 19:00:00 +02:00
tobtoht
b6e336dbaf docker: update Linux & Windows Qt to 5.15.10 2023-06-06 21:48:59 +02:00
Dvd-Znf
ddcc17b7b8 installers/windows/Readme.htm Updated blockchain size and added pruning description 2023-06-04 11:28:23 +03:00
tobtoht
f6549f328b deploy: remove libssp
dfa6dd8c26
2023-05-30 20:06:36 +02:00
tobtoht
4cbfa5efb2 docker: update OpenSSL to 1.1.1u 2023-05-30 16:35:36 +02:00
selsta
fa2241f1a5 WizardSummary: fix seed language and hide during restore 2023-05-16 19:55:54 +02:00
selsta
6bd11f2270 TxUtils: add handleOpenAliasResolution func, simplify code 2023-04-21 14:45:09 +02:00
selsta
6c4a8fb819 DaemonManager.cpp: disable JIT on macOS ARM 2023-04-19 16:02:22 +02:00
selsta
ad1b53fa63 main: add ARM build tag for auto updater 2023-04-17 21:56:42 +02:00
selsta
a9e0affe59 workflows: set default arch for macOS bundle 2023-04-17 21:47:30 +02:00
selsta
371ff6105b cmake: copy missing boost lib, run codesign 2023-04-17 21:45:50 +02:00
selsta
cad8874724 README: add mingw-w64-x86_64-pcre for msys2 instructions 2023-04-17 19:28:04 +02:00
selsta
5345dcc11b cmake: add install_name_tool to fix svg rendering 2023-04-15 21:41:29 +02:00
selsta
33310786db p2pool: fix crash without network connection 2023-04-13 15:45:56 +02:00
selsta
6ac8e7a464 p2pool: add more detailed failure message 2023-04-13 15:44:52 +02:00
plowsof
434f548a87 Prove/Check: clear text fields on wallet close 2023-04-10 23:37:29 +01:00
selsta
90c4aa4ec6 wizard: add Ledger Stax image 2023-04-07 23:15:14 +02:00
Botspot
7a4052f3af readme: tweak build instructions 2023-04-06 02:10:50 +02:00
j-berman
1215a6e5d8 Assume untrusted daemon in simple mode 2022-10-29 14:25:20 -05:00
j-berman
499c2a47fc qsTr scan tx error 2022-10-29 14:22:37 -05:00
j-berman
3b0e66a3d0 Display clear error when user scans older tx via untrusted daemon 2022-10-28 16:14:31 -05:00
j-berman
4cd6652825 Update balance after calling scan_tx 2022-10-20 16:23:10 -05:00
31 changed files with 605 additions and 130 deletions

View File

@@ -15,6 +15,10 @@ p2pool_files = [{
"os": "LINUX",
"filename": "linux-x64.tar.gz"
},
{
"os": "MACOS_AARCH64",
"filename": "macos-aarch64.tar.gz",
},
{
"os": "MACOS",
"filename": "macos-x64.tar.gz",

View File

@@ -75,19 +75,22 @@ jobs:
run: python3 monero-gui/.github/qt_helper.py mac_x64 desktop 5.15.2 clang_64 c384008156fe63cc183bade0316828c598ff3e5074397c0c9ccc588d6cdc5aca
working-directory: ../
- name: build
run: CMAKE_PREFIX_PATH=/Users/runner/work/monero-gui/5.15.2/clang_64 make release -j3
run: |
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D ARCH=default -D CMAKE_PREFIX_PATH=/Users/runner/work/monero-gui/5.15.2/clang_64 ..
make
- name: deploy
run: make deploy
working-directory: build/release
working-directory: build
- name: test qml
run: build/release/bin/monero-wallet-gui.app/Contents/MacOS/monero-wallet-gui --test-qml
run: build/bin/monero-wallet-gui.app/Contents/MacOS/monero-wallet-gui --test-qml
- name: create .tar
run: tar -cf monero-wallet-gui.tar monero-wallet-gui.app
working-directory: build/release/bin
working-directory: build/bin
- uses: actions/upload-artifact@v2
with:
name: ${{ github.job }}
path: build/release/bin/monero-wallet-gui.tar
path: build/bin/monero-wallet-gui.tar
docker-linux-static:
runs-on: ubuntu-20.04

174
.github/workflows/flatpak.yml vendored Normal file
View File

@@ -0,0 +1,174 @@
name: Flatpak
on:
release:
types: released
jobs:
part1:
name: Part 1/3
if: github.repository == 'monero-project/monero-gui'
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
options: --privileged
strategy:
matrix:
arch: [x86_64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Install deps
run: dnf -y install docker
- name: Setup QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64
- name: Build flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
env:
FLATPAK_BUILDER_N_JOBS: 3
with:
manifest-path: share/org.getmonero.Monero.yaml
arch: ${{ matrix.arch }}
cache: false
stop-at-module: boost
- name: Tar flatpak-builder
run: tar -cvf flatpak-builder.tar .flatpak-builder
- name: Save flatpak-builder
uses: actions/upload-artifact@v3
with:
name: flatpak-builder-${{ matrix.arch }}
path: flatpak-builder.tar
part2:
name: Part 2/3
if: github.repository == 'monero-project/monero-gui'
needs: part1
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
options: --privileged
strategy:
matrix:
arch: [x86_64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install deps
run: dnf -y install docker
- name: Setup QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64
- name: Restore flatpak-builder
uses: actions/download-artifact@v3
with:
name: flatpak-builder-${{ matrix.arch }}
- name: Untar flatpak-builder
run: tar -xvf flatpak-builder.tar
- name: Build flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
env:
FLATPAK_BUILDER_N_JOBS: 3
with:
manifest-path: share/org.getmonero.Monero.yaml
arch: ${{ matrix.arch }}
cache: false
stop-at-module: monero-gui
- name: Tar flatpak-builder
run: tar -cvf flatpak-builder.tar .flatpak-builder
- name: Save flatpak-builder
uses: actions/upload-artifact@v3
with:
name: flatpak-builder-${{ matrix.arch }}
path: flatpak-builder.tar
part3:
name: Part 3/3
if: github.repository == 'monero-project/monero-gui'
needs: [part1, part2]
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
options: --privileged
strategy:
matrix:
arch: [x86_64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Add version and date
run: |
sed -i 's/<version>/${{ github.event.release.tag_name }}/g' $GITHUB_WORKSPACE/share/org.getmonero.Monero.metainfo.xml
sed -i 's/<date>/'"$(date '+%F')"'/g' $GITHUB_WORKSPACE/share/org.getmonero.Monero.metainfo.xml
- name: Install deps
run: dnf -y install docker
- name: Setup QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64
- name: Restore flatpak-builder
uses: actions/download-artifact@v3
with:
name: flatpak-builder-${{ matrix.arch }}
- name: Untar flatpak-builder
run: tar -xvf flatpak-builder.tar
- name: Build flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
env:
FLATPAK_BUILDER_N_JOBS: 3
with:
manifest-path: share/org.getmonero.Monero.yaml
arch: ${{ matrix.arch }}
cache: false
- name: Validate AppData
working-directory: flatpak_app/files/share/appdata
run: appstream-util validate org.getmonero.Monero.appdata.xml
- name: Delete flatpak-builder
uses: geekyeggo/delete-artifact@v2
with:
name: flatpak-builder-${{ matrix.arch }}
- name: Print hashes
working-directory: flatpak_app/files/bin
run: |
echo "Hashes of the ${{ matrix.arch }} binaries:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
for bin in monero-blockchain-ancestry monero-blockchain-depth monero-blockchain-export monero-blockchain-import monero-blockchain-mark-spent-outputs monero-blockchain-prune monero-blockchain-prune-known-spent-data monero-blockchain-stats monero-blockchain-usage monerod monero-gen-ssl-cert monero-gen-trusted-multisig monero-wallet-cli monero-wallet-gui monero-wallet-rpc p2pool; do sha256sum $bin; done >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "An example command to check hashes:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "$ flatpak run --command=sha256sum org.getmonero.Monero /app/bin/monero-wallet-gui" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
- name: Publish to Flathub Beta
uses: flatpak/flatpak-github-actions/flat-manager@v6
with:
flat-manager-url: https://hub.flathub.org
repository: beta
token: ${{ secrets.FLATHUB_ }}

View File

@@ -4,8 +4,8 @@ project(monero-gui)
message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
set(VERSION_MAJOR "18")
set(VERSION_MINOR "2")
set(VERSION_REVISION "2")
set(VERSION_MINOR "3")
set(VERSION_REVISION "0")
set(VERSION "0.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
option(STATIC "Link libraries statically, requires static Qt")

View File

@@ -43,8 +43,8 @@ RUN echo y | ${ANDROID_SDK_ROOT}/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT} "
ENV HOST_PATH=${PATH}
ENV PATH=${TOOLCHAIN_DIR}/aarch64-linux-android/bin:${TOOLCHAIN_DIR}/bin:${PATH}
ARG ZLIB_VERSION=1.2.13
ARG ZLIB_HASH=b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30
ARG ZLIB_VERSION=1.3
ARG ZLIB_HASH=ff0ba4c292013dbc27530b3a81e1f9a813cd39de01ca5e0f8bf355702efa593e
RUN wget -q https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz \
&& echo "${ZLIB_HASH} zlib-${ZLIB_VERSION}.tar.gz" | sha256sum -c \
&& tar -xzf zlib-${ZLIB_VERSION}.tar.gz \
@@ -117,8 +117,8 @@ RUN wget -q https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION_D
install -j${THREADS} \
&& rm -rf $(pwd)
ARG OPENSSL_VERSION=1.1.1q
ARG OPENSSL_HASH=d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca
ARG OPENSSL_VERSION=1.1.1u
ARG OPENSSL_HASH=e2f8d84b523eecd06c7be7626830370300fbcc15386bf5142d72758f6963ebc6
RUN wget -q https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
&& echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \
&& tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \

View File

@@ -1,7 +1,7 @@
FROM ubuntu:16.04
ARG THREADS=1
ARG QT_VERSION=v5.15.8-lts-lgpl
ARG QT_VERSION=v5.15.10-lts-lgpl
ENV CFLAGS="-fPIC"
ENV CPPFLAGS="-fPIC"
@@ -113,9 +113,9 @@ RUN git clone -b xkbcommon-0.5.0 --depth 1 https://github.com/xkbcommon/libxkbco
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b v1.2.11 --depth 1 https://github.com/madler/zlib && \
RUN git clone -b v1.3 --depth 1 https://github.com/madler/zlib && \
cd zlib && \
git reset --hard cacf7f1d4e3d44d871b605da3b647f07d718623f && \
git reset --hard 09155eaa2f9270dc4ed1fa13e2b4b2613e6e4851 && \
./configure --static && \
make -j$THREADS && \
make -j$THREADS install && \
@@ -165,11 +165,11 @@ RUN wget https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_
./b2 --with-atomic --with-system --with-filesystem --with-thread --with-date_time --with-chrono --with-regex --with-serialization --with-program_options --with-locale variant=release link=static runtime-link=static cflags="${CFLAGS}" cxxflags="${CXXFLAGS}" install -a --prefix=/usr && \
rm -rf $(pwd)
RUN wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz && \
echo "d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca openssl-1.1.1q.tar.gz" | sha256sum -c && \
tar -xzf openssl-1.1.1q.tar.gz && \
rm openssl-1.1.1q.tar.gz && \
cd openssl-1.1.1q && \
RUN wget https://www.openssl.org/source/openssl-1.1.1u.tar.gz && \
echo "e2f8d84b523eecd06c7be7626830370300fbcc15386bf5142d72758f6963ebc6 openssl-1.1.1u.tar.gz" | sha256sum -c && \
tar -xzf openssl-1.1.1u.tar.gz && \
rm openssl-1.1.1u.tar.gz && \
cd openssl-1.1.1u && \
./config no-asm no-shared no-zlib-dynamic --prefix=/usr --openssldir=/usr && \
make -j$THREADS && \
make -j$THREADS install && \

View File

@@ -1,7 +1,7 @@
FROM ubuntu:20.04
ARG THREADS=1
ARG QT_VERSION=v5.15.8-lts-lgpl
ARG QT_VERSION=v5.15.10-lts-lgpl
ENV SOURCE_DATE_EPOCH=1397818193
RUN apt update && \

View File

@@ -86,7 +86,7 @@ Status of the translations:
## Installing the Monero GUI from a package
Packages are available for
* Arch Linux: [monero-gui](https://www.archlinux.org/packages/community/x86_64/monero-gui/)
* Arch Linux: [monero-gui](https://archlinux.org/packages/extra/x86_64/monero-gui/)
* Void Linux: `xbps-install -S monero-gui`
* Flatpak: [Monero GUI](https://flathub.org/apps/details/org.getmonero.Monero)
* GuixSD: `guix package -i monero-gui`
@@ -107,7 +107,7 @@ Packaging for your favorite distribution would be a welcome contribution!
```
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
```
\* `master` - replace with the desired version tag (e.g. `v0.18.2.2`) to build the release binaries.
\* `master` - replace with the desired version tag (e.g. `v0.18.3.0`) to build the release binaries.
3. Prepare build environment
```
cd monero-gui
@@ -130,7 +130,7 @@ Packaging for your favorite distribution would be a welcome contribution!
```
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
```
\* `master` - replace with the desired version tag (e.g. `v0.18.2.2`) to build the release binaries.
\* `master` - replace with the desired version tag (e.g. `v0.18.3.0`) to build the release binaries.
3. Prepare build environment
```
cd monero-gui
@@ -257,18 +257,10 @@ The following instructions will fetch Qt from your distribution's repositories i
4. Build
If on x86-64:
```
make release -j4
```
If on ppc64le:
```
make release-linux-ppc64le -j4
```
\* `4` - number of CPU threads to use
\* Add `CMAKE_PREFIX_PATH` environment variable to set a custom Qt install directory, e.g. `CMAKE_PREFIX_PATH=$HOME/Qt/5.9.7/gcc_64 make release -j4`
@@ -318,7 +310,7 @@ The Monero GUI on Windows is 64 bits only; 32-bit Windows GUI builds are not off
3. Install MSYS2 packages for Monero dependencies; the needed 64-bit packages have `x86_64` in their names
```
pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb mingw-w64-x86_64-libgcrypt mingw-w64-x86_64-unbound
pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb mingw-w64-x86_64-libgcrypt mingw-w64-x86_64-unbound mingw-w64-x86_64-pcre
```
You find more details about those dependencies in the [Monero documentation](https://github.com/monero-project/monero). Note that that there is no more need to compile Boost from source; like everything else, you can install it now with a MSYS2 package.

View File

@@ -17,7 +17,33 @@ if(APPLE OR (WIN32 AND NOT STATIC))
add_custom_command(TARGET deploy
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${_qt_svg_dylib} $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/
COMMENT "Copying libqsvg.dylib"
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtGui.framework/Versions/5/QtGui" "@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtWidgets.framework/Versions/5/QtWidgets" "@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtSvg.framework/Versions/5/QtSvg" "@executable_path/../Frameworks/QtSvg.framework/Versions/5/QtSvg" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtCore.framework/Versions/5/QtCore" "@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMENT "Copying libqsvg.dylib, running install_name_tool"
)
endif()
# libbost_filesyste-mt.dylib has a dependency on libboost_atomic-mt.dylib, maydeployqt does not copy it by itself
find_package(Boost COMPONENTS atomic)
get_target_property(BOOST_ATOMIC_LIB_PATH Boost::atomic LOCATION)
if(EXISTS ${BOOST_ATOMIC_LIB_PATH})
add_custom_command(TARGET deploy
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${BOOST_ATOMIC_LIB_PATH}" "$<TARGET_FILE_DIR:monero-wallet-gui>/../Frameworks/"
COMMENT "Copying libboost_atomic-mt.dylib"
)
endif()
# Apple Silicon requires all binaries to be codesigned
find_program(CODESIGN_EXECUTABLE NAMES codesign)
if(CODESIGN_EXECUTABLE)
add_custom_command(TARGET deploy
POST_BUILD
COMMAND "${CODESIGN_EXECUTABLE}" --force --deep --sign - "$<TARGET_FILE_DIR:monero-wallet-gui>/../.."
COMMENT "Running codesign..."
)
endif()
@@ -58,7 +84,6 @@ if(APPLE OR (WIN32 AND NOT STATIC))
libglib-2.0-0.dll
libfreetype-6.dll
libbz2-1.dll
libssp-0.dll
libpcre2-16-0.dll
libhidapi-0.dll
libdouble-conversion.dll
@@ -74,19 +99,19 @@ if(APPLE OR (WIN32 AND NOT STATIC))
)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
list(APPEND WIN_DEPLOY_DLLS
libicudtd72.dll
libicuind72.dll
libicuiod72.dll
libicutud72.dll
libicuucd72.dll
libicudtd73.dll
libicuind73.dll
libicuiod73.dll
libicutud73.dll
libicuucd73.dll
)
else() # assume release
list(APPEND WIN_DEPLOY_DLLS
libicudt72.dll
libicuin72.dll
libicuio72.dll
libicutu72.dll
libicuuc72.dll
libicudt73.dll
libicuin73.dll
libicuio73.dll
libicutu73.dll
libicuuc73.dll
)
endif()
list(TRANSFORM WIN_DEPLOY_DLLS PREPEND "$ENV{MSYSTEM_PREFIX}/bin/")

BIN
images/ledgerStax.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@@ -167,7 +167,6 @@ Type: files; Name: "{app}\libstdc++-6.dll"
Type: files; Name: "{app}\libtiff-5.dll"
Type: files; Name: "{app}\libwinpthread-1.dll"
Type: files; Name: "{app}\zlib1.dll"
Type: files; Name: "{app}\libssp-0.dll"
Type: files; Name: "{app}\libhidapi-0.dll"
Type: files; Name: "{app}\libeay32.dll"
Type: files; Name: "{app}\ssleay32.dll"

View File

@@ -56,11 +56,14 @@
i.e. let it download the blockchain and store it locally on your computer, or you can configure your wallet to
access a remote <i>open node</i> to get indirect access to the blockchain.</p>
<p>Working with your own copy of the blockchain is <b>preferred</b>: It strengthens the Monero network, and it
<p>You can also <i>Prune</i> the blockchain in order to save 2/3 of storage space while keeping the full transaction history.
More information regarding how pruning works can be found <a href="https://www.getmonero.org/resources/moneropedia/pruning.html">here</a>.</p>
<p>Working with your own copy of the blockchain, even pruned, is <b>preferred</b>: It strengthens the Monero network, and it
provides the most security and privacy possible for you.</p>
<p>However if your Internet access makes it difficult to run a full node, or if you have simply no room to store
the blockchain locally (about 90 GB in May 2020, and of course growing), you can compromise and try to connect
the blockchain locally (about 160 GB in June 2023, and of course growing), you can compromise and try to connect
to a remote node. One way of finding such a node is checking
<a href="https://moneroworld.com/#nodes">this page</a>.
</p>

View File

@@ -76,3 +76,34 @@ function isValidOpenAliasAddress(address) {
// make sure it is not some kind of floating number
return address.length > 2 && isNaN(parseFloat(address)) && address.indexOf('.') >= 0
}
function handleOpenAliasResolution(address, descriptionText) {
const result = walletManager.resolveOpenAlias(address);
if (!result) {
return { message: qsTr("No address found") };
}
const [isDnssecValid, resolvedAddress] = result.split("|");
const isAddressValid = walletManager.addressValid(resolvedAddress, appWindow.persistentSettings.nettype);
let updatedDescriptionText = descriptionText;
if (isDnssecValid === "true") {
if (isAddressValid) {
updatedDescriptionText = descriptionText ? `${address} ${descriptionText}` : address;
return { address: resolvedAddress, description: updatedDescriptionText };
} else {
return { message: qsTr("No valid address found at this OpenAlias address") };
}
} else if (isDnssecValid === "false") {
if (isAddressValid) {
return {
address: resolvedAddress,
message: qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed"),
};
} else {
return { message: qsTr("No valid address found at this OpenAlias address, but the DNSSEC signatures could not be verified, so this may be spoofed") };
}
} else {
return { message: qsTr("Internal error") };
}
}

View File

@@ -379,7 +379,7 @@ ApplicationWindow {
}
function isTrustedDaemon() {
return !persistentSettings.useRemoteNode || remoteNodesModel.currentRemoteNode().trusted;
return appWindow.walletMode >= 2 && (!persistentSettings.useRemoteNode || remoteNodesModel.currentRemoteNode().trusted);
}
function usefulName(path) {
@@ -2186,7 +2186,7 @@ ApplicationWindow {
function getBuildTag() {
if (isMac) {
return "mac-x64";
return isARM ? "mac-armv8" : "mac-x64";
}
if (isWindows) {
return oshelper.installed ? "install-win-x64" : "win-x64";

2
monero

Submodule monero updated: e06129bb4d...f9b81a589e

View File

@@ -387,34 +387,17 @@ Rectangle {
visible: TxUtils.isValidOpenAliasAddress(addressLine.text)
enabled : visible
onClicked: {
var result = walletManager.resolveOpenAlias(addressLine.text)
if (result) {
var parts = result.split("|")
if (parts.length === 2) {
var address_ok = walletManager.addressValid(parts[1], appWindow.persistentSettings.nettype)
if (parts[0] === "true") {
if (address_ok) {
// prepend openalias to description
descriptionLine.text = descriptionLine.text ? addressLine.text + " " + descriptionLine.text : addressLine.text
addressLine.text = parts[1]
} else {
root.oa_message(qsTr("No valid address found at this OpenAlias address"))
}
} else if (parts[0] === "false") {
if (address_ok) {
addressLine.text = parts[1]
root.oa_message(qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed"))
} else {
root.oa_message(qsTr("No valid address found at this OpenAlias address, but the DNSSEC signatures could not be verified, so this may be spoofed"))
}
} else {
root.oa_message(qsTr("Internal error"))
}
} else {
root.oa_message(qsTr("Internal error"))
const response = TxUtils.handleOpenAliasResolution(addressLine.text, descriptionLine.text);
if (response) {
if (response.message) {
oa_message(response.message);
}
if (response.address) {
addressLine.text = response.address;
}
if (response.description) {
descriptionLine.text = response.description;
}
} else {
root.oa_message(qsTr("No address found"))
}
}
}

View File

@@ -41,6 +41,7 @@ ColumnLayout {
property int panelHeight: 900
property alias miningView: stateView.miningView
property alias signView: stateView.signView
property alias prooveView: stateView.prooveView
property alias state: stateView.state
MoneroComponents.Navbar {
@@ -151,6 +152,7 @@ ColumnLayout {
function clearFields() {
signView.clearFields();
prooveView.clearFields();
}
}

View File

@@ -641,10 +641,25 @@ allArgs = allArgs.filter( ( el ) => !defaultArgs.includes( el.split(" ")[0] ) )
}
}
function p2poolDownloadFailed() {
function p2poolDownloadFailed(errorCode) {
statusMessage.visible = false
errorPopup.title = qsTr("P2Pool Installation Failed") + translationManager.emptyString;
errorPopup.text = qsTr("P2Pool installation failed.") + isWindows ? (" " + qsTr("Try starting the program with administrator privileges.")) : ""
switch (errorCode) {
case P2PoolManager.HashVerificationFailed:
errorPopup.text = qsTr("Hash verification failed.") + translationManager.emptyString;
break;
case P2PoolManager.BinaryNotAvailable:
errorPopup.text = qsTr("P2Pool download is not available.") + translationManager.emptyString;
break;
case P2PoolManager.ConnectionIssue:
errorPopup.text = qsTr("P2Pool download failed due to a connection issue.") + translationManager.emptyString;
break;
case P2PoolManager.InstallationFailed:
errorPopup.text = qsTr("P2Pool installation failed.") + (isWindows ? (" " + qsTr("Try starting the program with administrator privileges.")) : "")
break;
default:
errorPopup.text = qsTr("Unknown error.") + translationManager.emptyString;
}
errorPopup.icon = StandardIcon.Critical
errorPopup.open()
update()

View File

@@ -415,41 +415,18 @@ Rectangle {
text: qsTr("Resolve") + translationManager.emptyString
visible: TxUtils.isValidOpenAliasAddress(address)
onClicked: {
var result = walletManager.resolveOpenAlias(address)
if (result) {
var parts = result.split("|")
if (parts.length == 2) {
var address_ok = walletManager.addressValid(parts[1], appWindow.persistentSettings.nettype)
if (parts[0] === "true") {
if (address_ok) {
// prepend openalias to description
descriptionLine.text = descriptionLine.text ? address + " " + descriptionLine.text : address
descriptionCheckbox.checked = true
recipientRepeater.itemAt(index).children[1].children[0].text = parts[1];
}
else
oa_message(qsTr("No valid address found at this OpenAlias address"))
}
else if (parts[0] === "false") {
if (address_ok) {
recipientRepeater.itemAt(index).children[1].children[0].text = parts[1];
oa_message(qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed"))
}
else
{
oa_message(qsTr("No valid address found at this OpenAlias address, but the DNSSEC signatures could not be verified, so this may be spoofed"))
}
}
else {
oa_message(qsTr("Internal error"))
}
const response = TxUtils.handleOpenAliasResolution(address, descriptionLine.text);
if (response) {
if (response.message) {
oa_message(response.message);
}
else {
oa_message(qsTr("Internal error"))
if (response.address) {
recipientRepeater.itemAt(index).children[1].children[0].text = response.address;
}
if (response.description) {
descriptionLine.text = response.description;
descriptionCheckbox.checked = true;
}
}
else {
oa_message(qsTr("No address found"))
}
}
}

View File

@@ -259,6 +259,17 @@ Rectangle {
}
}
function clearFields() {
checkProofAddressLine.text = ""
checkProofMessageLine.text = ""
checkProofSignatureLine.text = ""
checkProofTxIdLine.text = ""
getProofAddressLine.text = ""
getProofMessageLine.text = ""
getProofTxIdLine.text = ""
getReserveProofAmtLine.text = ""
}
function onPageCompleted() {
console.log("TxKey page loaded");

View File

@@ -138,9 +138,19 @@ Rectangle {
inputDialog.onAcceptedCallback = function() {
var txid = inputDialog.inputText.trim();
if (currentWallet.scanTransactions([txid])) {
updateBalance();
appWindow.showStatusMessage(qsTr("Transaction successfully scanned"), 3);
} else {
appWindow.showStatusMessage(qsTr("Failed to scan transaction") + ": " + currentWallet.errorString, 5);
console.error("Error: ", currentWallet.errorString);
if (currentWallet.errorString == "The wallet has already seen 1 or more recent transactions than the scanned tx") {
informationPopup.title = qsTr("Error") + translationManager.emptyString;
informationPopup.text = qsTr("The wallet has already seen 1 or more recent transactions than the scanned transaction.\n\nIn order to rescan the transaction, you can re-sync your wallet by resetting the wallet restore height in the Settings > Info page. Make sure to use a restore height from before your wallet's earliest transaction.") + translationManager.emptyString;
informationPopup.icon = StandardIcon.Critical
informationPopup.onCloseCallback = null
informationPopup.open();
} else {
appWindow.showStatusMessage(qsTr("Failed to scan transaction") + ": " + currentWallet.errorString, 5);
}
}
}
inputDialog.onRejectedCallback = null;

View File

@@ -281,6 +281,7 @@
<file>images/ledgerNanoS.png</file>
<file>images/ledgerNanoSPlus.png</file>
<file>images/ledgerNanoX.png</file>
<file>images/ledgerStax.png</file>
<file>images/trezor.png</file>
<file>images/trezor@2x.png</file>
<file>qtquickcontrols2.conf</file>

View File

@@ -0,0 +1,10 @@
[Desktop Entry]
Name=Monero GUI
GenericName=Monero-GUI
Comment=Monero GUI
Exec=monero-wallet-gui
Type=Application
Terminal=false
Categories=Network;Qt;Finance;Office;
Icon=org.getmonero.Monero
StartupNotify=true

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>org.getmonero.Monero</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>BSD-3-Clause</project_license>
<content_rating type="oars-1.1"/>
<developer_name>The Monero Project</developer_name>
<categories>
<category>Network</category>
<category>Qt</category>
<category>Finance</category>
<category>Office</category>
</categories>
<name>Monero GUI</name>
<summary>Monero: the secure, private, untraceable cryptocurrency</summary>
<description>
<p>Monero is a private, secure, untraceable, decentralised digital currency. You
are your bank, you control your funds, and nobody can trace your transfers
unless you allow them to do so.</p>
<p>Privacy: Monero uses a cryptographically sound system to allow you to send
and receive funds without your transactions being easily revealed on the
blockchain (the ledger of transactions that everyone has). This ensures that
your purchases, receipts, and all transfers remain absolutely private by
default.</p>
<p>Security: Using the power of a distributed peer-to-peer consensus network,
every transaction on the network is cryptographically secured. Individual
wallets have a 25 word mnemonic seed that is only displayed once, and can be
written down to backup the wallet. Wallet files are encrypted with a passphrase
to ensure they are useless if stolen.</p>
<p>Untraceability: By taking advantage of ring signatures, a special property of
a certain type of cryptography, Monero is able to ensure that transactions are
not only untraceable, but have an optional measure of ambiguity that ensures
that transactions cannot easily be tied back to an individual user or computer.</p>
</description>
<launchable type="desktop-id">org.getmonero.Monero.desktop</launchable>
<screenshots>
<screenshot type="default">
<caption>A screenshot of the Monero GUI wallet</caption>
<image>https://raw.githubusercontent.com/monero-project/monero-site/master/img/downloads/gui.png</image>
</screenshot>
</screenshots>
<url type="homepage">https://getmonero.org</url>
<url type="bugtracker">https://github.com/monero-project/monero-gui/issues</url>
<url type="donation">https://getmonero.org/get-started/contributing</url>
<url type="faq">https://getmonero.org/get-started/faq</url>
<url type="help">https://getmonero.org/resources/user-guides</url>
<url type="translate">https://translate.getmonero.org</url>
<url type="contact">https://getmonero.org/community/hangouts</url>
<url type="contribute">https://getmonero.org/get-started/contributing</url>
<releases>
<release version="<version>" date="<date>"/>
</releases>
<custom>
<value key="flathub::manifest">https://github.com/monero-project/monero-gui/tree/master/share/org.getmonero.Monero.yaml</value>
</custom>
</component>

View File

@@ -0,0 +1,133 @@
app-id: org.getmonero.Monero
runtime: org.kde.Platform
runtime-version: 5.15-22.08
sdk: org.kde.Sdk
finish-args:
- --share=network
- --share=ipc
- --socket=x11
- --socket=wayland
- --device=all
- --filesystem=~/Monero:create
- --persist=.bitmonero
cleanup:
- /include
- /etc
- /share/man
- /lib/pkgconfig
- /lib/cmake
- '*.a'
- '*.la'
command: monero-wallet-gui
modules:
- name: protobuf
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
sources:
- type: git
url: https://github.com/protocolbuffers/protobuf
tag: v22.4
commit: 40e1daca18708c21c7edf07c489a688355bd297b
- name: boost
buildsystem: simple
build-commands:
- ./bootstrap.sh --prefix=$FLATPAK_DEST --with-libraries=chrono,date_time,filesystem,locale,program_options,regex,serialization,system,thread
- ./b2 headers
- ./b2 -j$FLATPAK_BUILDER_N_JOBS install variant=release --layout=system
sources:
- type: archive
url: https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.gz
sha256: 66a469b6e608a51f8347236f4912e27dc5c60c60d7d53ae9bfe4683316c6f04c
- name: libunbound
config-opts:
- --with-libunbound-only
sources:
- type: archive
url: https://nlnetlabs.nl/downloads/unbound/unbound-1.17.1.tar.gz
sha256: ee4085cecce12584e600f3d814a28fa822dfaacec1f94c84bfd67f8a5571a5f4
- name: libsodium
sources:
- type: archive
url: https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz
sha256: 6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1
- name: libusb
sources:
- type: archive
url: https://github.com/libusb/libusb/releases/download/v1.0.26/libusb-1.0.26.tar.bz2
sha256: 12ce7a61fc9854d1d2a1ffe095f7b5fac19ddba095c259e6067a46500381b5a5
- name: hidapi
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
sources:
- type: archive
url: https://github.com/libusb/hidapi/archive/hidapi-0.13.1.tar.gz
sha256: 476a2c9a4dc7d1fc97dd223b84338dbea3809a84caea2dcd887d9778725490e3
- name: libzmq
config-opts:
- --with-libsodium
- --disable-Werror
sources:
- type: archive
url: https://github.com/zeromq/libzmq/releases/download/v4.3.4/zeromq-4.3.4.tar.gz
sha256: c593001a89f5a85dd2ddf564805deb860e02471171b3f204944857336295c3e5
- name: libgss
sources:
- type: archive
url: https://ftp.gnu.org/gnu/gss/gss-1.0.4.tar.gz
sha256: ecceabdef4cae3fce7218b2ecb83eb4227dba44b53b61b8c2b2e88ae02419c73
- name: libuv
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
sources:
- type: archive
url: https://github.com/libuv/libuv/archive/v1.44.2.tar.gz
sha256: e6e2ba8b4c349a4182a33370bb9be5e23c51b32efb9b9e209d0e8556b73a48da
- name: p2pool
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DWITH_LTO=OFF
sources:
- type: git
url: https://github.com/SChernykh/p2pool
tag: v3.2
commit: 92827035e07ff15da6b7645a332f3e59aa0ab1c4
post-install:
- install -Dm755 p2pool $FLATPAK_DEST/bin/p2pool
- name: monero-gui
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DWITH_DESKTOP_ENTRY=OFF
- -DWITH_UPDATER=OFF
build-options:
arch:
aarch64:
config-opts:
- -DARCH=armv8-a
- -DBUILD_TAG=linux-armv8
x86_64:
config-opts:
- -DARCH=default
sources:
- type: dir
path: ../
post-install:
- install -Dpm644 share/org.getmonero.Monero.desktop $FLATPAK_DEST/share/applications/$FLATPAK_ID.desktop
- install -Dpm644 share/org.getmonero.Monero.metainfo.xml $FLATPAK_DEST/share/metainfo/$FLATPAK_ID.metainfo.xml
- for x in 16 24 32 48 64 96 128 256; do install -Dpm644 images/appicons/${x}x${x}.png $FLATPAK_DEST/share/icons/hicolor/${x}x${x}/apps/$FLATPAK_ID.png; done

View File

@@ -117,8 +117,17 @@ bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const
connect(m_daemon.get(), SIGNAL(readyReadStandardOutput()), this, SLOT(printOutput()));
connect(m_daemon.get(), SIGNAL(readyReadStandardError()), this, SLOT(printError()));
// Start monerod
bool started = m_daemon->startDetached(m_monerod, arguments);
#if defined(Q_OS_MAC) && defined(__aarch64__)
// RandomX crashes with JIT enabled when started as a detached process, disable it for now
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("MONERO_RANDOMX_UMASK", "8");
m_daemon->setProcessEnvironment(env);
#endif
m_daemon->setProgram(m_monerod);
m_daemon->setArguments(arguments);
bool started = m_daemon->startDetached();
// add state changed listener
connect(m_daemon.get(), SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(stateChanged(QProcess::ProcessState)));

View File

@@ -156,6 +156,7 @@ bool isLinux = false;
bool isTails = false;
bool isDesktop = false;
bool isOpenGL = true;
bool isARM = false;
int main(int argc, char *argv[])
{
@@ -177,6 +178,9 @@ int main(int argc, char *argv[])
#elif defined(Q_OS_MAC)
bool isMac = true;
#endif
#if defined(__aarch64__)
bool isARM = true;
#endif
// detect low graphics mode (start-low-graphics-mode.bat)
if(qgetenv("QMLSCENE_DEVICE") == "softwarecontext")
@@ -483,6 +487,7 @@ Verify update binary using 'shasum'-compatible (SHA256 algo) output signed by tw
engine.rootContext()->setContextProperty("isAndroid", isAndroid);
engine.rootContext()->setContextProperty("isOpenGL", isOpenGL);
engine.rootContext()->setContextProperty("isTails", isTails);
engine.rootContext()->setContextProperty("isARM", isARM);
engine.rootContext()->setContextProperty("screenAvailableWidth", screenAvailableSize.width());
engine.rootContext()->setContextProperty("screenAvailableHeight", screenAvailableSize.height());

View File

@@ -43,23 +43,31 @@
#include <QMap>
#include <QCryptographicHash>
#if defined(Q_OS_MACOS) && defined(__aarch64__) && !defined(Q_OS_MACOS_AARCH64)
#define Q_OS_MACOS_AARCH64
#endif
void P2PoolManager::download() {
m_scheduler.run([this] {
QUrl url;
QString fileName;
QString validHash;
#ifdef Q_OS_WIN
url = "https://github.com/SChernykh/p2pool/releases/download/v3.2/p2pool-v3.2-windows-x64.zip";
fileName = m_p2poolPath + "/p2pool-v3.2-windows-x64.zip";
validHash = "5c3c7a43782b2d468c37f8d559ef3095902ffec9a2bab39128412979fc245702";
url = "https://github.com/SChernykh/p2pool/releases/download/v3.7/p2pool-v3.7-windows-x64.zip";
fileName = m_p2poolPath + "/p2pool-v3.7-windows-x64.zip";
validHash = "9888afb51a206f1d2c6efc414dd1f498f82de58c689fbb73aceecd88ecdf6c43";
#elif defined(Q_OS_LINUX)
url = "https://github.com/SChernykh/p2pool/releases/download/v3.2/p2pool-v3.2-linux-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v3.2-linux-x64.tar.gz";
validHash = "d3f47b8300bb693880308f410294593b823fdd4bbe4c6863408167ee3def29d9";
url = "https://github.com/SChernykh/p2pool/releases/download/v3.7/p2pool-v3.7-linux-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v3.7-linux-x64.tar.gz";
validHash = "d5b932053f56f85b119450e64b1a7765c632f16c6226c8762b00e48f50e7e421";
#elif defined(Q_OS_MACOS_AARCH64)
url = "https://github.com/SChernykh/p2pool/releases/download/v3.7/p2pool-v3.7-macos-aarch64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v3.7-macos-aarch64.tar.gz";
validHash = "d2b483a10c01f4a84faacbb8e2eedafef451ca4e6a4128e44800018556bb2c62";
#elif defined(Q_OS_MACOS)
url = "https://github.com/SChernykh/p2pool/releases/download/v3.2/p2pool-v3.2-macos-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v3.2-macos-x64.tar.gz";
validHash = "1cc573038d4234afc77464410061587e2b2bd57a4785607de3488a6a5c8ded97";
url = "https://github.com/SChernykh/p2pool/releases/download/v3.7/p2pool-v3.7-macos-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v3.7-macos-x64.tar.gz";
validHash = "444ded858b18a9ecba7d08a2d333188d1758a3da358817887d28d0827dc4287b";
#endif
QFile file(fileName);
epee::net_utils::http::http_simple_client http_client;
@@ -68,7 +76,10 @@ void P2PoolManager::download() {
std::chrono::milliseconds timeout = std::chrono::seconds(10);
http_client.set_server(url.host().toStdString(), "443", {});
bool success = http_client.invoke_get(url.path().toStdString(), timeout, {}, std::addressof(response), {{"User-Agent", userAgent}});
if (response->m_response_code == 302) {
if (success && response->m_response_code == 404) {
emit p2poolDownloadFailure(BinaryNotAvailable);
return;
} else if (success && response->m_response_code == 302) {
epee::net_utils::http::fields_list fields = response->m_header_info.m_etc_fields;
for (std::pair<std::string, std::string> i : fields) {
if (i.first == "Location") {
@@ -82,7 +93,7 @@ void P2PoolManager::download() {
}
}
if (!success) {
emit p2poolDownloadFailure();
emit p2poolDownloadFailure(ConnectionIssue);
}
else {
std::string stringData = response->m_body;
@@ -90,7 +101,7 @@ void P2PoolManager::download() {
QByteArray hashData = QCryptographicHash::hash(data, QCryptographicHash::Sha256);
QString hash = hashData.toHex();
if (hash != validHash) {
emit p2poolDownloadFailure();
emit p2poolDownloadFailure(HashVerificationFailed);
}
else {
file.open(QIODevice::WriteOnly);
@@ -102,7 +113,7 @@ void P2PoolManager::download() {
emit p2poolDownloadSuccess();
}
else {
emit p2poolDownloadFailure();
emit p2poolDownloadFailure(InstallationFailed);
}
}
}

View File

@@ -51,13 +51,22 @@ public:
Q_INVOKABLE bool isInstalled();
Q_INVOKABLE void getStatus();
Q_INVOKABLE void download();
enum DownloadError {
BinaryNotAvailable,
ConnectionIssue,
HashVerificationFailed,
InstallationFailed,
};
Q_ENUM(DownloadError)
private:
bool running(NetworkType::Type nettype) const;
signals:
void p2poolStartFailure() const;
void p2poolStatus(bool isMining, int hashrate) const;
void p2poolDownloadFailure() const;
void p2poolDownloadFailure(int errorCode) const;
void p2poolDownloadSuccess() const;
private:

View File

@@ -171,6 +171,8 @@ Rectangle {
return "qrc:///images/ledgerNanoSPlus.png";
} else if (ledgerType == "Ledger Nano X") {
return "qrc:///images/ledgerNanoX.png";
} else if (ledgerType == "Ledger Stax") {
return "qrc:///images/ledgerStax.png";
}
}
return "";

View File

@@ -54,7 +54,8 @@ ColumnLayout {
WizardSummaryItem {
Layout.fillWidth: true
header: qsTr("Mnemonic seed language") + translationManager.emptyString
value: persistentSettings.language
value: persistentSettings.language_wallet
visible: wizardStateView.state === "wizardCreateWallet5" && !wizardController.walletOptionsIsRecoveringFromDevice
}
WizardSummaryItem {