X-Git-Url: https://www.flypig.org.uk/git/?a=blobdiff_plain;f=src%2Fvpncontrol.cpp;h=7bd002f666f0b6ba5f253fb3433e2cdbbdc51640;hb=ee3968ffa08d4e0fcbad87765efa3aeb32ff0554;hp=8b0c79a96b3c575e39cec12c73e9db994afe7788;hpb=3aba2d3bed67a9d91350393dd4772f566aca7db1;p=openvpnui.git diff --git a/src/vpncontrol.cpp b/src/vpncontrol.cpp index 8b0c79a..7bd002f 100644 --- a/src/vpncontrol.cpp +++ b/src/vpncontrol.cpp @@ -1,11 +1,26 @@ #include "vpncontrol.h" #include "stdio.h" +#include + VPNControl::VPNControl(QObject *parent) : QObject(parent), vpnProcess(NULL), - vpnStatus(VPNSTATUS_INVALID) + vpnStatus(VPNSTATUS_INVALID), + server(""), + port(1194), + compressed(true), + useTLS(true), + tlsDirection(1) { + // Read in the settings + QSettings settings; + + server = settings.value("server", "127.0.0.1").toString(); + port = settings.value("port", 1194).toInt(); + compressed = settings.value("compressed", true).toBool(); + useTLS = settings.value("useTLS", true).toBool(); + tlsDirection = settings.value("tlsDirection", 1).toInt(); } void VPNControl::initialise() @@ -21,6 +36,92 @@ void VPNControl::setStatus(VPNSTATUS newStatus) printf ("Emitting status %d\n", newStatus); } } +int VPNControl::getTlsDirection() const +{ + return tlsDirection; +} + +void VPNControl::setTlsDirection(int value) +{ + if (value != tlsDirection) { + printf ("TLS direction set to %d\n", value); + tlsDirection = value; + settingsSetValue("tlsDirection", value); + emit tlsDirectionChanged (value); + } +} + +bool VPNControl::getUseTLS() const +{ + return useTLS; +} + +void VPNControl::setUseTLS(bool value) +{ + if (value != useTLS) { + printf ("Use TLS set to %d\n", value); + useTLS = value; + settingsSetValue("useTLS", value); + emit useTLSChanged(useTLS); + } +} + +bool VPNControl::getCompressed() const +{ + return compressed; +} + +void VPNControl::setCompressed(bool value) +{ + if (value != compressed) { + printf ("Use compression set to %d\n", value); + compressed = value; + settingsSetValue("compressed", value); + emit compressedChanged(compressed); + } +} + +unsigned int VPNControl::getPort() const +{ + return port; +} + +void VPNControl::setPort(unsigned int value) +{ + if (value != port) { + printf ("Port set to %d\n", value); + port = value; + settingsSetValue("port", value); + emit portChanged(port); + } +} + +QString VPNControl::getServer() const +{ + return server; +} + +void VPNControl::setServer(const QString &value) +{ + if (value != server) { + printf ("Server set to %s\n", value.toUtf8().constData()); + server = value; + settingsSetValue("server", value); + emit serverChanged(server); + } +} + +void VPNControl::settingsSetValue (QString key, QString value) { + QSettings settings; + + settings.setValue(key, value); +} + +void VPNControl::settingsSetValue (QString key, int value) { + QSettings settings; + + settings.setValue(key, value); +} void VPNControl::vpnConnect() { if (vpnProcess != NULL) { @@ -30,11 +131,8 @@ void VPNControl::vpnConnect() { printf ("Connect\n"); vpnProcess = new QProcess(); - //QString program = "/home/nemo/Documents/Development/Projects/Stooge/stooge"; QString program = "openvpn"; - QStringList arguments; - arguments << "/home/nemo/Documents/Configure/OpenVPN/client.ovpn"; - + collectArguments (); vpnProcess->setReadChannel(QProcess::StandardOutput); connect(vpnProcess, SIGNAL(error(QProcess::ProcessError)), this, SLOT(readError(QProcess::ProcessError))); connect(vpnProcess, SIGNAL(readyRead()), this, SLOT(readData())); @@ -44,7 +142,51 @@ void VPNControl::vpnConnect() { vpnProcess->start(program, arguments); vpnProcess->closeWriteChannel(); setStatus(VPNSTATUS_INITIALISING); + arguments.clear(); + } +} + +void VPNControl::collectArguments () { + arguments.clear(); + + addArgument("config", "/home/nemo/Documents/Configure/OpenVPN/config.ovpn"); + addArgument("remote", server); + addArgument("port", QString::number(port)); + addOption("comp-lzo", compressed); + if (useTLS) { + addArgument("tls-auth", "/home/nemo/Documents/Configure/OpenVPN/ta.key"); + addValue(QString::number(tlsDirection)); } + addArgument("ca", "/home/nemo/Documents/Configure/OpenVPN/ca.crt"); + addArgument("cert", "/home/nemo/Documents/Configure/OpenVPN/Jolla.crt"); + addArgument("key", "/home/nemo/Documents/Configure/OpenVPN/Jolla.key"); +} + +void VPNControl::addArgument (QString key, QString value) { + QString argument; + + argument = "--" + key; + arguments.append(argument); + if (value != "") { + arguments.append(value); + } +} + +void VPNControl::addArgument (QString key) { + QString argument; + + argument = "--" + key; + arguments.append(argument); +} + +void VPNControl::addOption (QString key, bool add) { + if (add) { + addArgument (key); + } +} + +void VPNControl::addValue (QString key) { + arguments.append(key); } void VPNControl::vpnDisconnect() { @@ -95,3 +237,8 @@ void VPNControl::readError(QProcess::ProcessError error) // Disconnect vpnDisconnect(); } + +void VPNControl::updateConfiguration() +{ + printf ("Update configuration\n"); +}