website in tor network container improved
Sponsored by "Теплица социальных технологий", 2021 В рамках работы над задачами по хакатону 2021
This commit is contained in:
parent
3bcc12869b
commit
b244158b95
25 changed files with 676 additions and 295 deletions
|
@ -74,8 +74,8 @@ void ServerContainersLogic::onPushButtonContinueClicked(DockerContainer c, int p
|
|||
emit uiLogic()->goToPage(Page::ServerConfiguringProgress);
|
||||
qApp->processEvents();
|
||||
|
||||
ErrorCode e = uiLogic()->serverConfiguringProgressLogic()->doInstallAction([this, c](){
|
||||
return ServerController::setupContainer(m_settings.serverCredentials(uiLogic()->selectedServerIndex), c);
|
||||
ErrorCode e = uiLogic()->serverConfiguringProgressLogic()->doInstallAction([this, c, &config](){
|
||||
return ServerController::setupContainer(m_settings.serverCredentials(uiLogic()->selectedServerIndex), c, config);
|
||||
});
|
||||
|
||||
if (!e) {
|
||||
|
|
|
@ -51,7 +51,8 @@ QMap<DockerContainer, QJsonObject> WizardLogic::getInstallConfigsFromWizardPage(
|
|||
|
||||
void WizardLogic::onPushButtonVpnModeFinishClicked()
|
||||
{
|
||||
uiLogic()->installServer(getInstallConfigsFromWizardPage());
|
||||
auto containers = getInstallConfigsFromWizardPage();
|
||||
uiLogic()->installServer(containers);
|
||||
if (checkBoxVpnModeChecked()) {
|
||||
m_settings.setRouteMode(Settings::VpnOnlyForwardSites);
|
||||
} else {
|
||||
|
@ -61,5 +62,6 @@ void WizardLogic::onPushButtonVpnModeFinishClicked()
|
|||
|
||||
void WizardLogic::onPushButtonLowFinishClicked()
|
||||
{
|
||||
uiLogic()->installServer(getInstallConfigsFromWizardPage());
|
||||
auto containers = getInstallConfigsFromWizardPage();
|
||||
uiLogic()->installServer(containers);
|
||||
}
|
||||
|
|
|
@ -88,7 +88,7 @@ void CloakLogic::onPushButtonProtoCloakSaveClicked()
|
|||
return progressBarProtoCloakResetMaximium();
|
||||
};
|
||||
|
||||
ErrorCode e = uiLogic()->doInstallAction([this, containerConfig, newContainerConfig](){
|
||||
ErrorCode e = uiLogic()->doInstallAction([this, containerConfig, &newContainerConfig](){
|
||||
return ServerController::updateContainer(m_settings.serverCredentials(uiLogic()->selectedServerIndex), uiLogic()->selectedDockerContainer, containerConfig, newContainerConfig);
|
||||
},
|
||||
page_proto_cloak, progressBar_proto_cloak_reset,
|
||||
|
|
|
@ -125,7 +125,7 @@ void OpenVpnLogic::onPushButtonProtoOpenVpnSaveClicked()
|
|||
return progressBarProtoOpenVpnResetMaximium();
|
||||
};
|
||||
|
||||
ErrorCode e = uiLogic()->doInstallAction([this, containerConfig, newContainerConfig](){
|
||||
ErrorCode e = uiLogic()->doInstallAction([this, containerConfig, &newContainerConfig](){
|
||||
return ServerController::updateContainer(m_settings.serverCredentials(uiLogic()->selectedServerIndex), uiLogic()->selectedDockerContainer, containerConfig, newContainerConfig);
|
||||
},
|
||||
page_proto_openvpn, progressBar_proto_openvpn_reset,
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
#include <QDesktopServices>
|
||||
#include <QTimer>
|
||||
#include <QProcess>
|
||||
#include <QStorageInfo>
|
||||
|
||||
#include "OtherProtocolsLogic.h"
|
||||
#include "core/servercontroller.h"
|
||||
#include <functional>
|
||||
#include "../../uilogic.h"
|
||||
#include "utils.h"
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
@ -12,11 +20,23 @@ OtherProtocolsLogic::OtherProtocolsLogic(UiLogic *logic, QObject *parent):
|
|||
|
||||
}
|
||||
|
||||
OtherProtocolsLogic::~OtherProtocolsLogic()
|
||||
{
|
||||
for (QProcess *p: m_sftpMpuntProcesses) {
|
||||
if (p) Utils::signalCtrl(p->processId(), CTRL_C_EVENT);
|
||||
if (p) p->kill();
|
||||
if (p) p->waitForFinished();
|
||||
if (p) delete p;
|
||||
}
|
||||
}
|
||||
|
||||
void OtherProtocolsLogic::updateProtocolPage(const QJsonObject &config, DockerContainer container, bool haveAuthData)
|
||||
{
|
||||
set_labelTftpUserNameText(config.value(config_key::userName).toString());
|
||||
set_labelTftpPasswordText(config.value(config_key::password).toString(protocols::sftp::defaultUserName));
|
||||
set_labelTftpPortText(config.value(config_key::port).toString(protocols::sftp::defaultUserName));
|
||||
set_labelTftpPortText(config.value(config_key::port).toString());
|
||||
|
||||
set_labelTorWebSiteAddressText(config.value(config_key::site).toString());
|
||||
}
|
||||
|
||||
//QJsonObject OtherProtocolsLogic::getProtocolConfigFromPage(QJsonObject oldConfig)
|
||||
|
@ -24,7 +44,84 @@ void OtherProtocolsLogic::updateProtocolPage(const QJsonObject &config, DockerCo
|
|||
|
||||
//}
|
||||
|
||||
void OtherProtocolsLogic::onPushButtonProtoShadowSocksSaveClicked()
|
||||
|
||||
void OtherProtocolsLogic::onPushButtonSftpMountDriveClicked()
|
||||
{
|
||||
#ifdef Q_OS_WINDOWS
|
||||
QProcess drivesProc;
|
||||
drivesProc.start("wmic logicaldisk get caption");
|
||||
drivesProc.waitForFinished();
|
||||
QString drives = drivesProc.readAll();
|
||||
qDebug() << drives;
|
||||
|
||||
|
||||
QString letters = "CFGHIJKLMNOPQRSTUVWXYZ";
|
||||
QString letter;
|
||||
for (int i = letters.size() - 1; i > 0; i--) {
|
||||
letter = letters.at(i);
|
||||
if (!drives.contains(letter + ":")) break;
|
||||
}
|
||||
if (letter == "C:") {
|
||||
// set err info
|
||||
qDebug() << "Can't find free drive letter";
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
set_pushButtonSftpMountEnabled(false);
|
||||
QProcess *p = new QProcess;
|
||||
m_sftpMpuntProcesses.append(p);
|
||||
p->setProcessChannelMode(QProcess::MergedChannels);
|
||||
|
||||
connect(p, &QProcess::readyRead, this, [this, p, letter](){
|
||||
QString s = p->readAll();
|
||||
if (s.contains("The service sshfs has been started")) {
|
||||
QDesktopServices::openUrl(QUrl("file:///" + letter + ":"));
|
||||
set_pushButtonSftpMountEnabled(true);
|
||||
}
|
||||
});
|
||||
|
||||
// QString cmd = QString("net use \\\\sshfs\\%1@51.77.32.168!%2 /USER:%1 %3")
|
||||
// .arg(labelTftpUserNameText())
|
||||
// .arg(labelTftpPortText())
|
||||
// .arg(labelTftpPasswordText());
|
||||
|
||||
p->setProgram("C:\\Program Files1\\SSHFS-Win\\bin\\sshfs.exe");
|
||||
|
||||
QString host = m_settings.serverCredentials(uiLogic()->selectedServerIndex).hostName;
|
||||
QString args = QString(
|
||||
"%1@%2:/ %3: "
|
||||
"-o port=%4 "
|
||||
"-f "
|
||||
"-o reconnect"
|
||||
"-orellinks "
|
||||
"-ofstypename=SSHFS "
|
||||
"-o ssh_command=/usr/bin/ssh.exe "
|
||||
"-oUserKnownHostsFile=/dev/null "
|
||||
"-oStrictHostKeyChecking=no "
|
||||
"-o password_stdin")
|
||||
.arg(labelTftpUserNameText())
|
||||
.arg(host)
|
||||
.arg(letter)
|
||||
.arg(labelTftpPortText());
|
||||
|
||||
|
||||
p->setNativeArguments(args);
|
||||
p->start();
|
||||
p->waitForStarted(50);
|
||||
if (p->state() != QProcess::Running) {
|
||||
qDebug() << "onPushButtonSftpMountDriveClicked process not started";
|
||||
}
|
||||
else {
|
||||
p->write((labelTftpPasswordText() + "\n").toUtf8());
|
||||
}
|
||||
|
||||
//qDebug().noquote() << "onPushButtonSftpMountDriveClicked" << args;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
void OtherProtocolsLogic::checkBoxSftpRestoreClicked()
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
#include "PageProtocolLogicBase.h"
|
||||
|
||||
#include <QProcess>
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class OtherProtocolsLogic : public PageProtocolLogicBase
|
||||
|
@ -12,13 +14,18 @@ class OtherProtocolsLogic : public PageProtocolLogicBase
|
|||
AUTO_PROPERTY(QString, labelTftpUserNameText)
|
||||
AUTO_PROPERTY(QString, labelTftpPasswordText)
|
||||
AUTO_PROPERTY(QString, labelTftpPortText)
|
||||
AUTO_PROPERTY(bool, pushButtonSftpMountEnabled)
|
||||
AUTO_PROPERTY(bool, checkBoxSftpRestoreChecked)
|
||||
|
||||
AUTO_PROPERTY(QString, labelTorWebSiteAddressText)
|
||||
|
||||
|
||||
public:
|
||||
Q_INVOKABLE void onPushButtonProtoShadowSocksSaveClicked();
|
||||
|
||||
Q_INVOKABLE void onPushButtonSftpMountDriveClicked();
|
||||
Q_INVOKABLE void checkBoxSftpRestoreClicked();
|
||||
public:
|
||||
explicit OtherProtocolsLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~OtherProtocolsLogic() = default;
|
||||
~OtherProtocolsLogic();
|
||||
|
||||
void updateProtocolPage(const QJsonObject &config, DockerContainer container, bool haveAuthData) override;
|
||||
//QJsonObject getProtocolConfigFromPage(QJsonObject oldConfig) override;
|
||||
|
@ -27,5 +34,7 @@ private:
|
|||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
QList <QProcess *> m_sftpMpuntProcesses;
|
||||
|
||||
};
|
||||
#endif // OTHER_PROTOCOLS_LOGIC_H
|
||||
|
|
|
@ -82,7 +82,7 @@ void ShadowSocksLogic::onPushButtonProtoShadowSocksSaveClicked()
|
|||
return progressBarProtoShadowSocksResetMaximium();
|
||||
};
|
||||
|
||||
ErrorCode e = uiLogic()->doInstallAction([this, containerConfig, newContainerConfig](){
|
||||
ErrorCode e = uiLogic()->doInstallAction([this, containerConfig, &newContainerConfig](){
|
||||
return ServerController::updateContainer(m_settings.serverCredentials(uiLogic()->selectedServerIndex), uiLogic()->selectedDockerContainer, containerConfig, newContainerConfig);
|
||||
},
|
||||
page_proto_shadowsocks, progressBar_proto_shadowsocks_reset,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue