Compare commits

...
9 Commits
8 changed files with 28 additions and 14 deletions
+2 -2
View File
@@ -119,7 +119,7 @@ RUN git clone -b v1.2.11 --depth 1 https://github.com/madler/zlib && \
make -j$THREADS && \ make -j$THREADS && \
make -j$THREADS install make -j$THREADS install
RUN git clone -b VER-2-10-2 --depth 1 https://git.sv.nongnu.org/r/freetype/freetype2.git && \ RUN git clone -b VER-2-10-2 https://git.sv.nongnu.org/r/freetype/freetype2.git && \
cd freetype2 && \ cd freetype2 && \
git reset --hard 132f19b779828b194b3fede187cee719785db4d8 && \ git reset --hard 132f19b779828b194b3fede187cee719785db4d8 && \
./autogen.sh && \ ./autogen.sh && \
@@ -164,7 +164,7 @@ RUN wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz && \
sha256sum -c hashsum.txt && \ sha256sum -c hashsum.txt && \
tar -xzf openssl-1.1.1g.tar.gz && \ tar -xzf openssl-1.1.1g.tar.gz && \
cd openssl-1.1.1g && \ cd openssl-1.1.1g && \
CFLAGS='-fPIC' CXXFLAGS='-fPIC' ./config no-asm no-shared no-zlib-dynamic --prefix=/usr/local/openssl && \ CFLAGS='-fPIC' CXXFLAGS='-fPIC' ./config no-shared no-zlib-dynamic --prefix=/usr/local/openssl && \
make -j$THREADS && \ make -j$THREADS && \
make -j$THREADS install make -j$THREADS install
+1 -1
View File
@@ -2,7 +2,7 @@
[![Build Status](https://build.featherwallet.org/api/badges/feather/feather/status.svg)](https://build.featherwallet.org/feather/feather) [![Build Status](https://build.featherwallet.org/api/badges/feather/feather/status.svg)](https://build.featherwallet.org/feather/feather)
Feather is a free, open-source Monero client for Mac OS and Linux platforms written in C++ with the Qt framework. It is created and maintained by [dsc](dsc@xmr.pm) and [tobtoht](thotbot@protonmail.com). Feather is a free, open-source Monero client Linux with ports for Mac OS and Windows written in C++ with the Qt framework. It is created and maintained by [dsc](dsc@xmr.pm) and [tobtoht](thotbot@protonmail.com).
## Development resources ## Development resources
* Web: [featherwallet.org](https://featherwallet.org) * Web: [featherwallet.org](https://featherwallet.org)
+4
View File
@@ -134,6 +134,10 @@ if(HAVE_SYS_PRCTL_H)
target_compile_definitions(feather PRIVATE HAVE_SYS_PRCTL_H=1) target_compile_definitions(feather PRIVATE HAVE_SYS_PRCTL_H=1)
endif() endif()
if(STATIC)
target_compile_definitions(feather PRIVATE STATIC=1)
endif()
if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
target_compile_definitions(feather PRIVATE QT_NO_DEBUG=1) target_compile_definitions(feather PRIVATE QT_NO_DEBUG=1)
endif() endif()
+4 -3
View File
@@ -82,10 +82,11 @@ AppContext::AppContext(QCommandLineParser *cmdargs) {
this->defaultWalletDir = QString("%1/Monero/wallets").arg(this->configRoot); this->defaultWalletDir = QString("%1/Monero/wallets").arg(this->configRoot);
this->defaultWalletDirRoot = QString("%1/Monero").arg(this->configRoot); this->defaultWalletDirRoot = QString("%1/Monero").arg(this->configRoot);
#elif defined(Q_OS_WIN) #elif defined(Q_OS_WIN)
// @TODO this->defaultWalletDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) + "/Monero";
this->defaultWalletDirRoot = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
#endif #endif
// Create ~/Monero/wallets if it does not exist yet // Create wallet dirs
if (!QDir().mkpath(defaultWalletDir)) if (!QDir().mkpath(defaultWalletDir))
qCritical() << "Unable to create dir: " << defaultWalletDir; qCritical() << "Unable to create dir: " << defaultWalletDir;
@@ -169,7 +170,7 @@ AppContext::AppContext(QCommandLineParser *cmdargs) {
} }
void AppContext::initTor() { void AppContext::initTor() {
this->tor = new Tor(this); this->tor = new Tor(this, this);
this->tor->start(); this->tor->start();
if (!(isTails || isWhonix)) { if (!(isTails || isWhonix)) {
+1 -1
View File
@@ -14,7 +14,7 @@
#include <QtPlugin> #include <QtPlugin>
#if defined(Q_OS_LINUX) #if defined(Q_OS_LINUX) && defined(STATIC)
Q_IMPORT_PLUGIN(QXcbIntegrationPlugin) Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)
#endif #endif
+2
View File
@@ -932,6 +932,8 @@ void MainWindow::homeWidgetChanged(const QString &widgetName) {
} }
void MainWindow::closeEvent(QCloseEvent *event) { void MainWindow::closeEvent(QCloseEvent *event) {
m_ctx->tor->stop();
this->saveGeo(); this->saveGeo();
if(m_wizard != nullptr) if(m_wizard != nullptr)
m_wizard->close(); m_wizard->close();
+3
View File
@@ -376,6 +376,9 @@
<addaction name="menuHelp"/> <addaction name="menuHelp"/>
</widget> </widget>
<action name="actionOpen"> <action name="actionOpen">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text"> <property name="text">
<string>Open wallet</string> <string>Open wallet</string>
</property> </property>
+11 -7
View File
@@ -50,6 +50,13 @@ Tor::Tor(AppContext *ctx, QObject *parent)
return; return;
} }
// Don't spawn Tor on default port to avoid conflicts
Tor::torPort = 19450;
if (Utils::portOpen(Tor::torHost, Tor::torPort)) {
this->localTor = true;
return;
}
qDebug() << "Using embedded tor instance"; qDebug() << "Using embedded tor instance";
m_process.setProcessChannelMode(QProcess::MergedChannels); m_process.setProcessChannelMode(QProcess::MergedChannels);
@@ -58,6 +65,10 @@ Tor::Tor(AppContext *ctx, QObject *parent)
connect(&m_process, &QProcess::stateChanged, this, &Tor::stateChanged); connect(&m_process, &QProcess::stateChanged, this, &Tor::stateChanged);
} }
void Tor::stop() {
m_process.kill();
}
void Tor::start() { void Tor::start() {
if (this->localTor) { if (this->localTor) {
this->checkConnection(); this->checkConnection();
@@ -65,9 +76,6 @@ void Tor::start() {
return; return;
} }
// Don't spawn Tor on default port to avoid conflicts
Tor::torPort = 19450;
auto state = m_process.state(); auto state = m_process.state();
if (state == QProcess::ProcessState::Running || state == QProcess::ProcessState::Starting) { if (state == QProcess::ProcessState::Running || state == QProcess::ProcessState::Starting) {
this->errorMsg = "Can't start Tor, already running or starting"; this->errorMsg = "Can't start Tor, already running or starting";
@@ -101,10 +109,6 @@ void Tor::start() {
m_process.start(this->torPath, arguments); m_process.start(this->torPath, arguments);
} }
void Tor::stop() {
m_process.terminate();
}
void Tor::checkConnection() { void Tor::checkConnection() {
// We might not be able to connect to localhost if torsocks is used to start feather // We might not be able to connect to localhost if torsocks is used to start feather
if (m_ctx->isTorSocks) if (m_ctx->isTorSocks)