Compare commits

..

5 Commits

Author SHA1 Message Date
Mazay B 1b75b68373 Fix in AndroidController [NO CI] 2023-06-18 17:49:03 +01:00
pokamest a116774104 Bugfix/macos fixes (#247)
* Icon for macos and tiny fixes
* Macos deploy build fix
2023-05-28 16:24:00 +01:00
pokamest adcc74ac8e Merge pull request #245 from amnezia-vpn/fix/ui_fixes
Tiny ui fixes
2023-05-24 08:17:40 -07:00
pokamest 3e0085b4a4 PopupWithQuestion.qml fix 2023-05-24 16:12:07 +01:00
pokamest 17fb2a98d6 Fix question when removing server from list 2023-05-24 12:18:40 +01:00
32 changed files with 81 additions and 301 deletions
+1 -1
View File
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR)
set(PROJECT AmneziaVPN)
project(${PROJECT} VERSION 3.0.7.2
project(${PROJECT} VERSION 3.0.7.4
DESCRIPTION "AmneziaVPN"
HOMEPAGE_URL "https://amnezia.org/"
)
+5 -2
View File
@@ -92,7 +92,6 @@ set(HEADERS ${HEADERS}
${CMAKE_CURRENT_LIST_DIR}/protocols/vpnprotocol.h
${CMAKE_CURRENT_BINARY_DIR}/version.h
${CMAKE_CURRENT_LIST_DIR}/core/sshclient.h
${CMAKE_CURRENT_LIST_DIR}/protocols/
)
if(NOT IOS)
@@ -215,7 +214,11 @@ if(APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15)
add_compile_definitions(MVPN_MACOS)
# ICON = $$PWD/images/app.icns
set(ICON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/images/app.icns)
set(MACOSX_BUNDLE_ICON_FILE app.icns)
set_source_files_properties(${ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
set(SOURCES ${SOURCES} ${ICON_FILE})
find_library(FW_COCOA Cocoa)
find_library(FW_APPLICATIONSERVICES ApplicationServices)
+3 -3
View File
@@ -136,9 +136,9 @@ android {
defaultConfig {
resConfig "en"
minSdkVersion = 24
targetSdkVersion = 31
versionCode 10 // Change to a higher number
versionName "2.0.10" // Change to a higher number
targetSdkVersion = 34
versionCode 21 // Change to a higher number
versionName "3.0.7" // Change to a higher number
javaCompileOptions.annotationProcessorOptions.arguments = [
"room.schemaLocation": "${qtAndroidDir}/schemas".toString()
+2 -9
View File
@@ -61,9 +61,6 @@ QVector<amnezia::Proto> ContainerProps::protocolsForContainer(amnezia::DockerCon
case DockerContainer::Sftp:
return { Proto::Sftp};
case DockerContainer::Nextcloud:
return { Proto::Nextcloud };
default:
return { defaultProtocol(container) };
}
@@ -93,8 +90,7 @@ QMap<DockerContainer, QString> ContainerProps::containerHumanNames()
{DockerContainer::TorWebSite, QObject::tr("Web site in Tor network")},
{DockerContainer::Dns, QObject::tr("DNS Service")},
//{DockerContainer::FileShare, QObject::tr("SMB file sharing service")},
{DockerContainer::Sftp, QObject::tr("Sftp file sharing service")},
{DockerContainer::Nextcloud, QObject::tr("Nextcloud")}
{DockerContainer::Sftp, QObject::tr("Sftp file sharing service")}
};
}
@@ -111,8 +107,7 @@ QMap<DockerContainer, QString> ContainerProps::containerDescriptions()
{DockerContainer::TorWebSite, QObject::tr("Web site in Tor network")},
{DockerContainer::Dns, QObject::tr("DNS Service")},
//{DockerContainer::FileShare, QObject::tr("SMB file sharing service - is Window file sharing protocol")},
{DockerContainer::Sftp, QObject::tr("Sftp file sharing service - is secure FTP service")},
{DockerContainer::Nextcloud, QObject::tr("Nextcloud private cloud")},
{DockerContainer::Sftp, QObject::tr("Sftp file sharing service - is secure FTP service")}
};
}
@@ -129,7 +124,6 @@ amnezia::ServiceType ContainerProps::containerService(DockerContainer c)
case DockerContainer::Dns : return ServiceType::Other;
//case DockerContainer::FileShare : return ServiceType::Other;
case DockerContainer::Sftp : return ServiceType::Other;
case DockerContainer::Nextcloud : return ServiceType::Other;
default: return ServiceType::Other;
}
}
@@ -148,7 +142,6 @@ Proto ContainerProps::defaultProtocol(DockerContainer c)
case DockerContainer::Dns : return Proto::Dns;
//case DockerContainer::FileShare : return Protocol::FileShare;
case DockerContainer::Sftp : return Proto::Sftp;
case DockerContainer::Nextcloud : return Proto::Nextcloud;
default: return Proto::Any;
}
}
+1 -3
View File
@@ -24,9 +24,7 @@ enum DockerContainer {
TorWebSite,
Dns,
//FileShare,
Sftp,
Nextcloud
Sftp
};
Q_ENUM_NS(DockerContainer)
} // namespace ContainerEnumNS
-1
View File
@@ -17,7 +17,6 @@ QString amnezia::scriptFolder(amnezia::DockerContainer container)
case DockerContainer::Dns: return QLatin1String("dns");
//case DockerContainer::FileShare: return QLatin1String("file_share");
case DockerContainer::Sftp: return QLatin1String("sftp");
case DockerContainer::Nextcloud: return QLatin1String("nextcloud");
default: return "";
}
}
+1 -7
View File
@@ -491,7 +491,6 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential
const QJsonObject &ssConfig = config.value(ProtocolProps::protoToString(Proto::ShadowSocks)).toObject();
const QJsonObject &wireguarConfig = config.value(ProtocolProps::protoToString(Proto::WireGuard)).toObject();
const QJsonObject &sftpConfig = config.value(ProtocolProps::protoToString(Proto::Sftp)).toObject();
const QJsonObject &nextcloudConfig = config.value(ProtocolProps::protoToString(Proto::Nextcloud)).toObject();
//
Vars vars;
@@ -569,11 +568,6 @@ ServerController::Vars ServerController::genVarsForScript(const ServerCredential
vars.append({{"$SFTP_USER", sftpConfig.value(config_key::userName).toString() }});
vars.append({{"$SFTP_PASSWORD", sftpConfig.value(config_key::password).toString() }});
// Nextcloud vars
QString port = nextcloudConfig.value(config_key::port).toString(QString::number(ProtocolProps::defaultPort(Proto::Nextcloud)));
vars.append({{"$NEXTCLOUD_PORT", port }});
vars.append({{"$NEXTCLOUD_ADMIN_USER", nextcloudConfig.value(config_key::adminUser).toString(protocols::nextcloud::defaultAdminUser) }});
vars.append({{"$NEXTCLOUD_ADMIN_PASSWORD", nextcloudConfig.value(config_key::adminPassword).toString(protocols::nextcloud::defaultAdminPassword) }});
QString serverIp = Utils::getIPAddress(credentials.hostName);
if (!serverIp.isEmpty()) {
@@ -667,7 +661,7 @@ ErrorCode ServerController::isServerPortBusy(const ServerCredentials &credential
}
ErrorCode errorCode = runScript(credentials,
replaceVars(script, genVarsForScript(credentials, container, containerConfig)), cbReadStdOut, cbReadStdErr);
replaceVars(script, genVarsForScript(credentials, container)), cbReadStdOut, cbReadStdErr);
if (errorCode != ErrorCode::NoError) {
return errorCode;
}
-2
View File
@@ -257,7 +257,6 @@ namespace libssh {
int bytesWritten = sftp_write(file, buffer, bufferSize);
std::string chunk(buffer, bufferSize);
qDebug() << "sftp write: " << QString(chunk.c_str());
if (bytesWritten != bufferSize) {
fin.close();
@@ -272,7 +271,6 @@ namespace libssh {
fin.read(buffer, lastChunkSize);
std::string chunk(buffer, lastChunkSize);
qDebug() << "sftp write: " << QString(chunk.c_str());
int bytesWritten = sftp_write(file, buffer, lastChunkSize);
+4 -11
View File
@@ -79,8 +79,7 @@ QMap<amnezia::Proto, QString> ProtocolProps::protocolHumanNames()
{Proto::TorWebSite, "Web site in Tor network"},
{Proto::Dns, "DNS Service"},
{Proto::FileShare, "File Sharing Service"},
{Proto::Sftp, QObject::tr("Sftp service")},
{Proto::Nextcloud, QObject::tr("Nextcloud")}
{Proto::Sftp, QObject::tr("Sftp service")}
};
}
@@ -97,11 +96,10 @@ amnezia::ServiceType ProtocolProps::protocolService(Proto p)
case Proto::Cloak : return ServiceType::Vpn;
case Proto::ShadowSocks : return ServiceType::Vpn;
case Proto::WireGuard : return ServiceType::Vpn;
case Proto::TorWebSite : return ServiceType::Other;
case Proto::TorWebSite : return ServiceType::Other;
case Proto::Dns : return ServiceType::Other;
case Proto::FileShare : return ServiceType::Other;
case Proto::Nextcloud : return ServiceType::Other;
default: return ServiceType::Other;
default: return ServiceType::Other;
}
}
@@ -120,7 +118,6 @@ int ProtocolProps::defaultPort(Proto p)
case Proto::Dns : return 53;
case Proto::FileShare : return 139;
case Proto::Sftp : return 222;
case Proto::Nextcloud : return 8080;
default: return -1;
}
}
@@ -133,7 +130,6 @@ bool ProtocolProps::defaultPortChangeable(Proto p)
case Proto::Cloak : return true;
case Proto::ShadowSocks : return true;
case Proto::WireGuard : return true;
case Proto::Nextcloud : return true;
case Proto::Ikev2 : return false;
case Proto::L2tp : return false;
@@ -160,8 +156,6 @@ TransportProto ProtocolProps::defaultTransportProto(Proto p)
case Proto::Dns : return TransportProto::Udp;
case Proto::FileShare : return TransportProto::Udp;
case Proto::Sftp : return TransportProto::Tcp;
case Proto::Nextcloud : return TransportProto::Tcp;
default: return defaultTransportProto(Proto::Any);
}
}
@@ -180,8 +174,7 @@ bool ProtocolProps::defaultTransportProtoChangeable(Proto p)
case Proto::Dns : return false;
case Proto::FileShare : return false;
case Proto::Sftp : return false;
case Proto::Nextcloud : return false;
default: return false;
default: return false;
}
}
+1 -12
View File
@@ -12,9 +12,6 @@ namespace config_key {
constexpr char hostName[] = "hostName";
constexpr char userName[] = "userName";
constexpr char password[] = "password";
constexpr char adminUser[] = "adminUser";
constexpr char adminPassword[] = "adminPassword";
constexpr char port[] = "port";
constexpr char local_port[] = "local_port";
@@ -128,12 +125,6 @@ constexpr char serverPskKeyPath[] = "/opt/amnezia/wireguard/wireguard_psk.key";
}
namespace nextcloud {
constexpr char defaultAdminUser[] = "admin";
constexpr char defaultAdminPassword[] = "admin";
}
namespace sftp {
constexpr char defaultUserName[] = "sftp_user";
@@ -163,9 +154,7 @@ enum Proto {
TorWebSite,
Dns,
FileShare,
// Fileshare
Sftp,
Nextcloud
Sftp
};
Q_ENUM_NS(Proto)
-4
View File
@@ -34,9 +34,6 @@
<file>server_scripts/openvpn_cloak/configure_container.sh</file>
<file>server_scripts/openvpn_cloak/start.sh</file>
<file>server_scripts/openvpn_cloak/template.ovpn</file>
<file>server_scripts/nextcloud/Dockerfile</file>
<file>server_scripts/nextcloud/configure_container.sh</file>
<file>server_scripts/nextcloud/run_container.sh</file>
<file>server_scripts/install_docker.sh</file>
<file>server_scripts/build_container.sh</file>
<file>server_scripts/prepare_host.sh</file>
@@ -98,7 +95,6 @@
<file>ui/qml/Pages/Protocols/PageProtoTorWebSite.qml</file>
<file>ui/qml/Pages/Protocols/PageProtocolBase.qml</file>
<file>ui/qml/Pages/Protocols/PageProtoWireGuard.qml</file>
<file>ui/qml/Pages/Protocols/PageProtoNextcloud.qml</file>
<file>ui/qml/Pages/InstallSettings/InstallSettingsBase.qml</file>
<file>ui/qml/Pages/InstallSettings/SelectContainer.qml</file>
<file>ui/qml/Pages/Share/PageShareProtoCloak.qml</file>
+1 -3
View File
@@ -7,6 +7,4 @@ if [[ -z "$docker_service" ]]; then sudo $pm update -y -q; sudo $pm install -y -
docker_service=$(systemctl list-units --full -all | grep docker.service | grep -v inactive | grep -v dead | grep -v failed);\
if [[ -z "$docker_service" ]]; then sleep 5 && sudo systemctl start docker && sleep 5; fi;\
if [[ -f "$pm_yum" ]]; then sudo systemctl enable docker && sudo systemctl start docker; fi;\
if [[ ! -f "/usr/bin/docker-compose" ]]; then sudo $pm update -y -q; sudo $pm install -y -q docker-compose; fi;\
docker --version \
docker-compose --version
docker --version
@@ -1,3 +0,0 @@
FROM nextcloud:latest as amnezia-nextcloud
LABEL maintainer="AmneziaVPN"
@@ -1,4 +0,0 @@
# Run container
sudo docker run -d \
-p $NEXTCLOUD_PORT:80 \
--name $CONTAINER_NAME $CONTAINER_NAME
@@ -55,7 +55,6 @@ public:
friend class ShadowSocksLogic;
friend class CloakLogic;
friend class UiLogic;
friend class NextcloudLogic;
void onUpdatePage() override;
ErrorCode doInstallAction(const std::function<ErrorCode()> &action);
@@ -100,6 +100,11 @@ void ServerSettingsLogic::onLineEditDescriptionEditingFinished()
uiLogic()->onUpdateAllPages();
}
bool ServerSettingsLogic::isCurrentServerHasCredentials()
{
return m_settings->haveAuthData(uiLogic()->m_selectedServerIndex);
}
#if defined(Q_OS_ANDROID)
/* Auth result handler for Android */
void authResultReceiver::handleActivityResult(int receiverRequestCode, int resultCode, const QJniObject &data)
@@ -31,6 +31,8 @@ public:
Q_INVOKABLE void onPushButtonClearClientCacheClicked();
Q_INVOKABLE void onLineEditDescriptionEditingFinished();
Q_INVOKABLE bool isCurrentServerHasCredentials();
public:
explicit ServerSettingsLogic(UiLogic *uiLogic, QObject *parent = nullptr);
~ServerSettingsLogic() = default;
+1 -1
View File
@@ -23,7 +23,7 @@ class StartPageLogic : public PageLogicBase
AUTO_PROPERTY(QString, labelWaitInfoText)
AUTO_PROPERTY(bool, pushButtonBackFromStartVisible)
AUTO_PROPERTY(QString, privateKeyPassphrase);
AUTO_PROPERTY(QString, privateKeyPassphrase)
READONLY_PROPERTY(QRegularExpression, ipAddressPortRegex)
public:
@@ -1,58 +0,0 @@
#include "NextcloudLogic.h"
#include <functional>
#include "core/servercontroller.h"
#include "ui/pages_logic/ServerConfiguringProgressLogic.h"
#include "ui/uilogic.h"
using namespace amnezia;
using namespace PageEnumNS;
NextcloudLogic::NextcloudLogic(UiLogic *logic, QObject *parent):
PageProtocolLogicBase(logic, parent),
m_lineNextcloudPortText{},
m_lineAdminUserText{},
m_lineAdminPasswordText{},
m_pushButtonSaveVisible{false},
m_progressBarResetVisible{false},
m_labelInfoVisible{true},
m_labelInfoText{},
m_progressBarResetValue{0},
m_progressBarResetMaximium{100}
{
}
void NextcloudLogic::updateProtocolPage(const QJsonObject &nextcloudConfig, DockerContainer container, bool haveAuthData)
{
set_pageEnabled(haveAuthData);
set_pushButtonSaveVisible(haveAuthData);
set_progressBarResetVisible(haveAuthData);
set_lineAdminUserText(nextcloudConfig.value(config_key::adminUser).toString(protocols::nextcloud::defaultAdminUser));
set_lineAdminPasswordText(nextcloudConfig.value(config_key::adminPassword).toString(protocols::nextcloud::defaultAdminPassword));
}
QJsonObject NextcloudLogic::getProtocolConfigFromPage(QJsonObject oldConfig)
{
oldConfig.insert(config_key::adminUser, lineAdminUserText());
oldConfig.insert(config_key::adminPassword, lineAdminPasswordText());
return oldConfig;
}
void NextcloudLogic::onPushButtonSaveClicked()
{
QJsonObject protocolConfig = m_settings->protocolConfig(uiLogic()->m_selectedServerIndex, uiLogic()->m_selectedDockerContainer, Proto::Nextcloud);
protocolConfig = getProtocolConfigFromPage(protocolConfig);
QJsonObject containerConfig = m_settings->containerConfig(uiLogic()->m_selectedServerIndex, uiLogic()->m_selectedDockerContainer);
QJsonObject newContainerConfig = containerConfig;
newContainerConfig.insert(ProtocolProps::protoToString(Proto::Nextcloud), protocolConfig);
}
void NextcloudLogic::onPushButtonCancelClicked()
{
emit uiLogic()->pageLogic<ServerConfiguringProgressLogic>()->cancelDoInstallAction(true);
}
@@ -1,47 +0,0 @@
#ifndef NEXTCLOUDLOGIC_H
#define NEXTCLOUDLOGIC_H
#include "PageProtocolLogicBase.h"
class UiLogic;
class NextcloudLogic : public PageProtocolLogicBase
{
Q_OBJECT
AUTO_PROPERTY(QString, lineNextcloudPortText)
AUTO_PROPERTY(QString, lineAdminUserText)
AUTO_PROPERTY(QString, lineAdminPasswordText)
AUTO_PROPERTY(bool, labelInfoVisible)
AUTO_PROPERTY(QString, labelInfoText)
AUTO_PROPERTY(int, progressBarResetValue)
AUTO_PROPERTY(int, progressBarResetMaximium)
AUTO_PROPERTY(bool, progressBarResetVisible)
AUTO_PROPERTY(bool, progressBarTextVisible)
AUTO_PROPERTY(QString, progressBarText)
AUTO_PROPERTY(bool, labelServerBusyVisible)
AUTO_PROPERTY(QString, labelServerBusyText)
AUTO_PROPERTY(bool, pushButtonSaveVisible)
AUTO_PROPERTY(bool, pushButtonCancelVisible)
public:
Q_INVOKABLE void onPushButtonSaveClicked();
Q_INVOKABLE void onPushButtonCancelClicked();
public:
explicit NextcloudLogic(UiLogic *uiLogic, QObject *parent = nullptr);
~NextcloudLogic() = default;
void updateProtocolPage(const QJsonObject &nextcloudConfig, DockerContainer container, bool haveAuthData) override;
QJsonObject getProtocolConfigFromPage(QJsonObject oldConfig) override;
private:
UiLogic *m_uiLogic;
};
#endif // NEXTCLOUDLOGIC_H
+8 -3
View File
@@ -13,12 +13,18 @@ Popup {
anchors.centerIn: Overlay.overlay
modal: true
closePolicy: Popup.NoAutoClose
closePolicy: Popup.CloseOnEscape
width: parent.width - 20
focus: true
onAboutToHide: {
parent.forceActiveFocus(true)
}
ColumnLayout {
width: parent.width
Text {
horizontalAlignment: Text.AlignHCenter
Layout.fillWidth: true
@@ -28,9 +34,9 @@ Popup {
}
RowLayout {
Layout.fillWidth: true
BlueButtonType {
id: yesButton
Layout.preferredWidth: parent.width / 2
Layout.fillWidth: true
text: yesText
onClicked: {
@@ -43,7 +49,6 @@ Popup {
}
BlueButtonType {
id: noButton
Layout.preferredWidth: parent.width / 2
Layout.fillWidth: true
text: noText
onClicked: {
+6 -1
View File
@@ -110,13 +110,18 @@ PageBase {
Layout.topMargin: 10
text: qsTr("Forget this server")
onClicked: {
if (ServerSettingsLogic.isCurrentServerHasCredentials()) {
popupForgetServer.questionText = "Attention! This action will not remove any data from the server, it will just remove server from the list. Continue?"
}
else {
popupForgetServer.questionText = "Remove server from the list?"
}
popupForgetServer.open()
}
}
PopupWithQuestion {
id: popupForgetServer
questionText: "Attention! This action will not remove the container on the server, it will only remove the container information from the application. Continue?"
yesFunc: function() {
ServerSettingsLogic.onPushButtonForgetServer()
close()
+15 -13
View File
@@ -233,9 +233,8 @@ PageBase {
anchors.top: label_server_ip.bottom
anchors.horizontalCenter: parent.horizontalCenter
text: StartPageLogic.lineEditIpText
onEditingFinished: {
StartPageLogic.lineEditIpText = text
}
onEditingFinished: { StartPageLogic.lineEditIpText = text }
onTextEdited: { StartPageLogic.lineEditIpText = text }
validator: RegularExpressionValidator {
regularExpression: StartPageLogic.ipAddressPortRegex
@@ -253,9 +252,8 @@ PageBase {
anchors.top: label_login.bottom
anchors.horizontalCenter: parent.horizontalCenter
text: StartPageLogic.lineEditLoginText
onEditingFinished: {
StartPageLogic.lineEditLoginText = text
}
onEditingFinished: { StartPageLogic.lineEditLoginText = text }
onTextEdited: { StartPageLogic.lineEditLoginText = text }
}
LabelType {
@@ -268,25 +266,29 @@ PageBase {
id: new_server_password
anchors.top: label_new_server_password.bottom
anchors.horizontalCenter: parent.horizontalCenter
inputMethodHints: Qt.ImhSensitiveData
echoMode: TextInput.Password
text: StartPageLogic.lineEditPasswordText
onEditingFinished: {
StartPageLogic.lineEditPasswordText = text
}
onEditingFinished: { StartPageLogic.lineEditPasswordText = text }
onTextEdited: { StartPageLogic.lineEditPasswordText = text }
onAccepted: { StartPageLogic.onPushButtonConnect() }
}
TextFieldType {
id: new_server_ssh_key
anchors.top: label_new_server_password.bottom
anchors.horizontalCenter: parent.horizontalCenter
visible: false
height: 71
font.pixelSize: 10
verticalAlignment: Text.AlignTop
inputMethodHints: Qt.ImhSensitiveData
text: StartPageLogic.textEditSshKeyText
onEditingFinished: {
StartPageLogic.textEditSshKeyText = text
}
visible: false
onEditingFinished: { StartPageLogic.textEditSshKeyText = text }
onTextEdited: { StartPageLogic.textEditSshKeyText = text }
onAccepted: { StartPageLogic.onPushButtonConnect() }
}
LabelType {
@@ -1,80 +0,0 @@
import QtQuick
import QtQuick.Controls
import ProtocolEnum 1.0
import "../"
import "../../Controls"
import "../../Config"
PageProtocolBase {
id: root
protocol: ProtocolEnum.Nextcloud
logic: UiLogic.protocolLogic(protocol)
BackButton {
id: back
}
Caption {
id: caption
text: qsTr("Nextcloud settings")
}
Rectangle {
id: frame_settings
width: parent.width
anchors.top: caption.bottom
anchors.topMargin: 10
border.width: 1
border.color: "lightgray"
anchors.bottomMargin: 5
anchors.horizontalCenter: parent.horizontalCenter
radius: 2
Grid {
id: grid
anchors.fill: parent
columns: 2
horizontalItemAlignment: Grid.AlignHCenter
verticalItemAlignment: Grid.AlignVCenter
topPadding: 5
leftPadding: 30
rightPadding: 30
spacing: 5
LabelType {
width: 130
text: qsTr("Port")
}
TextFieldType {
id: tf_port_num
width: parent.width - 130 - parent.spacing - parent.leftPadding * 2
text: logic.lineNextcloudPortText
readOnly: true
}
LabelType {
width: 130
text: qsTr("Admin user")
}
TextFieldType {
id: tf_admin_user
width: parent.width - 130 - parent.spacing - parent.leftPadding * 2
text: logic.lineAdminUserText
readOnly: true
}
LabelType {
width: 130
text: qsTr("Admin password")
}
TextFieldType {
id: tf_admin_password
width: parent.width - 130 - parent.spacing - parent.leftPadding * 2
text: logic.lineAdminPasswordText
readOnly: true
}
}
}
}
+1 -1
View File
@@ -354,7 +354,7 @@ Window {
}
textArea.wrapMode: cbLogWrap.checked ? TextEdit.WordWrap: TextEdit.NoWrap
Keys.onPressed: {
Keys.onPressed: function(event) {
UiLogic.keyPressEvent(event.key)
event.accepted = true
}
+4 -6
View File
@@ -74,7 +74,6 @@
#include "pages_logic/protocols/ShadowSocksLogic.h"
#include "pages_logic/protocols/OtherProtocolsLogic.h"
#include "pages_logic/protocols/WireGuardLogic.h"
#include "pages_logic/protocols/NextcloudLogic.h"
using namespace amnezia;
using namespace PageEnumNS;
@@ -101,7 +100,6 @@ UiLogic::UiLogic(std::shared_ptr<Settings> settings, std::shared_ptr<VpnConfigur
m_protocolLogicMap.insert(Proto::Dns, new OtherProtocolsLogic(this));
m_protocolLogicMap.insert(Proto::Sftp, new OtherProtocolsLogic(this));
m_protocolLogicMap.insert(Proto::TorWebSite, new OtherProtocolsLogic(this));
m_protocolLogicMap.insert(Proto::Nextcloud, new NextcloudLogic(this));
}
@@ -135,13 +133,13 @@ void UiLogic::initializeUiLogic()
connect(AndroidController::instance(), &AndroidController::initialized, [this](bool status, bool connected, const QDateTime& connectionDate) {
if (connected) {
pageLogic<VpnLogic>()->onConnectionStateChanged(VpnProtocol::Connected);
m_vpnConnection->restoreConnection();
if (m_vpnConnection) m_vpnConnection->restoreConnection();
}
});
if (!AndroidController::instance()->initialize(pageLogic<StartPageLogic>())) {
qCritical() << QString("Init failed") ;
emit VpnProtocol::Error;
return;
qCritical() << QString("Init failed");
if (m_vpnConnection) m_vpnConnection->connectionStateChanged(VpnProtocol::Error);
return;
}
#endif
-2
View File
@@ -52,7 +52,6 @@ class PageProtocolLogicBase;
class OpenVpnLogic;
class ShadowSocksLogic;
class CloakLogic;
class NextcloudLogic;
class OtherProtocolsLogic;
@@ -101,7 +100,6 @@ public:
friend class OpenVpnLogic;
friend class ShadowSocksLogic;
friend class CloakLogic;
friend class NextcloudLogic;
friend class OtherProtocolsLogic;
+4 -6
View File
@@ -40,8 +40,8 @@ DMG_FILENAME=$PROJECT_DIR/${APP_NAME}.dmg
if [ -z "${QT_VERSION+x}" ]; then
QT_VERSION=6.4.1;
QIF_VERSION=4.1
# QT_BIN_DIR=$HOME/Qt/$QT_VERSION/macos/bin
QIF_BIN_DIR=${QT_BIN_DIR:-$HOME/Qt/$QT_VERSION/macos/bin}/../../../Tools/QtInstallerFramework/$QIF_VERSION/bin
QT_BIN_DIR=$HOME/Qt/$QT_VERSION/macos/bin
QIF_BIN_DIR=$QT_BIN_DIR/../../../Tools/QtInstallerFramework/$QIF_VERSION/bin
fi
echo "Using Qt in $QT_BIN_DIR"
@@ -66,11 +66,9 @@ echo "____________________________________"
echo "............Deploy.................."
echo "____________________________________"
# Package
# Package
echo "Packaging ..."
#cd $DEPLOY_DIR
$QT_BIN_DIR/macdeployqt $OUT_APP_DIR/$APP_FILENAME -always-overwrite -qmldir=$PROJECT_DIR
cp -av $BUILD_DIR/service/server/$APP_NAME-service $BUNDLE_DIR/Contents/macOS
cp -Rv $PROJECT_DIR/deploy/data/macos/* $BUNDLE_DIR/Contents/macOS
@@ -147,7 +145,7 @@ if [ "${MAC_CERT_PW+x}" ]; then
fi
echo "Building DMG installer..."
hdiutil create -volname $APP_NAME -srcfolder $BUILD_DIR/installer/$APP_NAME.app -ov -format UDZO $DMG_FILENAME
hdiutil create -volname Amnezia -srcfolder $BUILD_DIR/installer/$APP_NAME.app -ov -format UDZO $DMG_FILENAME
if [ "${MAC_CERT_PW+x}" ]; then
echo "Signing DMG installer..."
-4
View File
@@ -7,10 +7,6 @@ set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT IOS AND NOT ANDROID)
#include(common.cmake)
#if (qtservice-uselib)
# add_subdirectory(buildlib)
#endif()
add_subdirectory(server)
endif()
+15 -12
View File
@@ -94,11 +94,16 @@ include_directories(
add_executable(${PROJECT} ${SOURCES} ${HEADERS})
target_link_libraries(${PROJECT} PRIVATE Qt6::Core Qt6::Network Qt6::RemoteObjects Qt6::Core5Compat ${LIBS})
qt_add_repc_sources(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipc_interface.rep)
if(NOT IOS)
qt_add_repc_sources(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipc_process_interface.rep)
if(APPLE)
set_target_properties(${PROJECT} PROPERTIES
INSTALL_RPATH "@executable_path/../Frameworks"
BUILD_WITH_INSTALL_RPATH TRUE
)
endif()
qt_add_repc_sources(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipc_interface.rep)
qt_add_repc_sources(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipc_process_interface.rep)
# deploy artifacts required to run the application to the debug build folder
if(WIN32)
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
@@ -112,12 +117,10 @@ elseif(APPLE AND NOT IOS)
set(DEPLOY_ARTIFACT_PATH "macos")
endif()
if(NOT IOS AND NOT ANDROID)
add_custom_command(
TARGET ${PROJECT} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E $<IF:$<CONFIG:Debug>,copy_directory,true>
${CMAKE_SOURCE_DIR}/deploy/data/${DEPLOY_ARTIFACT_PATH}
$<TARGET_FILE_DIR:${PROJECT}>
COMMAND_EXPAND_LISTS
)
endif()
add_custom_command(
TARGET ${PROJECT} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E $<IF:$<CONFIG:Debug>,copy_directory,true>
${CMAKE_SOURCE_DIR}/deploy/data/${DEPLOY_ARTIFACT_PATH}
$<TARGET_FILE_DIR:${PROJECT}>
COMMAND_EXPAND_LISTS
)