{
// Read in the settings
QSettings settings;
+ settings.setValue("showAll", false);
+ // Read configuration 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();
- settings.setValue("showAll", false);
+ caCertFile = settings.value("caCertFile", "").toString();
+ clientCertFile = settings.value("clientCertFile", "").toString();
+ clientKeyFile = settings.value("clientKeyFile", "").toString();
+ tlsKeyFile = settings.value("tlsKeyFile", "").toString();
+ configFile = settings.value("configFile", "").toString();
}
void VPNControl::initialise()
}
}
+QString VPNControl::getCaCertFile () const
+{
+ return caCertFile;
+}
+
+void VPNControl::setCaCertFile(const QString &value)
+{
+ if (value != caCertFile) {
+ caCertFile = value;
+ settingsSetValue("caCertFile", value);
+ emit caCertFileChanged(caCertFile);
+ }
+}
+
+void VPNControl::setClientCertFile(const QString &value)
+{
+ if (value != clientCertFile) {
+ clientCertFile = value;
+ settingsSetValue("clientCertFile", value);
+ emit clientCertFileChanged(clientCertFile);
+ }
+}
+
+void VPNControl::setClientKeyFile(const QString &value)
+{
+ if (value != clientKeyFile) {
+ clientKeyFile = value;
+ settingsSetValue("clientKeyFile", value);
+ emit clientKeyFileChanged(clientKeyFile);
+ }
+}
+
+void VPNControl::setTlsKeyFile(const QString &value)
+{
+ if (value != tlsKeyFile) {
+ tlsKeyFile = value;
+ settingsSetValue("tlsKeyFile", value);
+ emit tlsKeyFileChanged(tlsKeyFile);
+ }
+}
+
+void VPNControl::setConfigFile(const QString &value)
+{
+ if (value != configFile) {
+ configFile = value;
+ settingsSetValue("configFile", value);
+ emit tlsKeyFileChanged(configFile);
+ }
+}
+
+QString VPNControl::getClientCertFile () const
+{
+ return clientCertFile;
+}
+
+QString VPNControl::getClientKeyFile () const
+{
+ return clientKeyFile;
+}
+
+QString VPNControl::getTlsKeyFile () const
+{
+ return tlsKeyFile;
+}
+
+QString VPNControl::getConfigFile () const
+{
+ return configFile;
+}
+
QString VPNControl::getLogText() const
{
return logText;
void VPNControl::setLogText(const QString &value)
{
logText = value;
- emit logTextChanged(value);
+ emit logTextChanged(logText);
}
void VPNControl::settingsSetValue (QString key, QString value) {
void VPNControl::collectArguments () {
arguments.clear();
- addArgument("config", "/home/nemo/Documents/Configure/OpenVPN/config.ovpn");
- addArgument("remote", server);
- addArgument("port", QString::number(port));
+ addArgumentNonempty("config", configFile);
+ addOption("client", true);
+ addOption("persist-key", true);
+ addOption("persist-tun", true);
+ addOption("nobind", true);
+ addArgument("resolv-retry", "infinite");
+ addArgument("dev", "tun");
+ addArgument("verb", "3");
+ addArgument("proto", "udp");
+ addArgument("user", "nemo");
+ addArgument("group", "nemo");
+ addArgumentNonempty("remote", server);
+ addArgumentNonempty("port", QString::number(port));
addOption("comp-lzo", compressed);
- if (useTLS) {
- addArgument("tls-auth", "/home/nemo/Documents/Configure/OpenVPN/ta.key");
+ if ((useTLS) && (!tlsKeyFile.isEmpty())) {
+ addArgument("tls-auth", tlsKeyFile);
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");
+ addArgumentNonempty("ca", caCertFile);
+ addArgumentNonempty("cert", clientCertFile);
+ addArgumentNonempty("key", clientKeyFile);
}
void VPNControl::addArgument (QString key, QString value) {
argument = "--" + key;
arguments.append(argument);
- if (value != "") {
+ if (!value.isEmpty()) {
+ arguments.append(value);
+ }
+}
+
+void VPNControl::addArgumentNonempty (QString key, QString value) {
+ QString argument;
+
+ if (!value.isEmpty()) {
+ argument = "--" + key;
+ arguments.append(argument);
arguments.append(value);
}
}
void VPNControl::logAppend(const QString &text)
{
if (!text.isEmpty()) {
+ QString append = text;
+ // Ensure we end with a newline
+ if (!append.endsWith('\n')) {
+ append += '\n';
+ }
// How many lines to add
- int newLines = text.count('\n');
+ int newLines = append.count('\n');
int currentLines = logText.count('\n');
- int removeLines = currentLines + newLines - 18;
+ int removeLines = currentLines + newLines - 24;
- // Remove excess lines
+ // Remove excess lines from the top
while (removeLines > 0) {
- int nextLine = logText.lastIndexOf('\n');
+ int nextLine = logText.indexOf('\n');
if (nextLine > 0) {
- logText = logText.left(nextLine);
+ logText = logText.mid(nextLine + 1);
}
removeLines--;
}
// Add new lines
- logText.prepend(text);
+ logText.append(append);
emit logTextChanged(logText);
}
}
+