mirror of https://github.com/layters/testshop
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.7 KiB
61 lines
1.7 KiB
#pragma once
|
|
|
|
#ifndef PROXY_MANAGER_HPP_NEROSHOP
|
|
#define PROXY_MANAGER_HPP_NEROSHOP
|
|
|
|
#include <QObject>
|
|
#include <QNetworkAccessManager>
|
|
#include <QNetworkReply>
|
|
#include <QProcess>
|
|
|
|
namespace neroshop {
|
|
|
|
class ProxyManager : public QObject {
|
|
Q_OBJECT
|
|
Q_PROPERTY(bool torEnabled READ isTorEnabled NOTIFY networkProxyChanged)
|
|
Q_PROPERTY(QString torOutput READ getTorOutput NOTIFY torOutputChanged)
|
|
public:
|
|
ProxyManager(QObject *parent = nullptr);
|
|
~ProxyManager();
|
|
|
|
Q_INVOKABLE void useDefaultProxy();
|
|
Q_INVOKABLE void useTorProxy();
|
|
Q_INVOKABLE void useI2PProxy();
|
|
|
|
Q_INVOKABLE static void downloadTor();
|
|
Q_INVOKABLE void startTorDaemon();
|
|
Q_INVOKABLE void stopTorDaemon();
|
|
|
|
void setTorEnabled(bool torEnabled);
|
|
|
|
QNetworkAccessManager * getNetworkClearnet() const;
|
|
QNetworkAccessManager * getNetworkTor() const;
|
|
QNetworkAccessManager * getNetworkI2P() const;
|
|
QNetworkAccessManager * getNetwork() const;
|
|
|
|
QString getTorOutput() const;
|
|
|
|
Q_INVOKABLE static bool hasTor();
|
|
Q_INVOKABLE static bool isTorRunning();
|
|
Q_INVOKABLE bool isTorEnabled() const;
|
|
public slots:
|
|
QNetworkReply * getUrl(const QString& url);
|
|
void onReplyFinished(QNetworkReply * reply);
|
|
signals:
|
|
void networkProxyChanged();
|
|
void processStarted();
|
|
void processFinished(int exitCode, QProcess::ExitStatus exitStatus);
|
|
void torOutputChanged(const QString &output);
|
|
private:
|
|
static void extractTar(const QString& fileName);
|
|
QNetworkAccessManager * clearnetManager;
|
|
QNetworkAccessManager * torManager;
|
|
QNetworkAccessManager * i2pManager;
|
|
bool m_torEnabled; // tor status
|
|
QProcess *torProcess = nullptr;
|
|
QString torOutput;
|
|
};
|
|
|
|
}
|
|
#endif
|