Scripts fix for macos

This commit is contained in:
pokamest 2021-01-08 15:43:45 +03:00 committed by Admin
parent 82241701a9
commit f45fb442de
2 changed files with 39 additions and 26 deletions

View file

@ -32,7 +32,7 @@ QString OpenVpnConfigurator::getEasyRsaShPath()
//return "\"" + easyRsaShPath + "\""; //return "\"" + easyRsaShPath + "\"";
return "\"/Program Files (x86)/AmneziaVPN/easyrsa/easyrsa\""; return "\"/Program Files (x86)/AmneziaVPN/easyrsa/easyrsa\"";
#else #else
return QDir::toNativeSeparators(QApplication::applicationDirPath()) + "/easyrsa/easyrsa"; return QDir::toNativeSeparators(QApplication::applicationDirPath()) + "/easyrsa";
#endif #endif
} }
@ -40,69 +40,82 @@ QProcessEnvironment OpenVpnConfigurator::prepareEnv()
{ {
QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
QString pathEnvVar = env.value("PATH"); QString pathEnvVar = env.value("PATH");
#ifdef Q_OS_WIN
pathEnvVar.prepend(QDir::toNativeSeparators(QApplication::applicationDirPath()) + "\\easyrsa\\bin;"); pathEnvVar.prepend(QDir::toNativeSeparators(QApplication::applicationDirPath()) + "\\easyrsa\\bin;");
pathEnvVar.prepend(QDir::toNativeSeparators(QApplication::applicationDirPath()) + "\\openvpn\\i386;"); pathEnvVar.prepend(QDir::toNativeSeparators(QApplication::applicationDirPath()) + "\\openvpn\\i386;");
pathEnvVar.prepend(QDir::toNativeSeparators(QApplication::applicationDirPath()) + "\\openvpn\\x64;"); pathEnvVar.prepend(QDir::toNativeSeparators(QApplication::applicationDirPath()) + "\\openvpn\\x64;");
#else
pathEnvVar.prepend(QDir::toNativeSeparators(QApplication::applicationDirPath()) + "/Contents/MacOS");
#endif
env.insert("PATH", pathEnvVar); env.insert("PATH", pathEnvVar);
return env; return env;
} }
void OpenVpnConfigurator::initPKI(const QString &path) ErrorCode OpenVpnConfigurator::initPKI(const QString &path)
{ {
#ifdef Q_OS_WIN
QProcess p; QProcess p;
p.setProcessChannelMode(QProcess::MergedChannels); p.setProcessChannelMode(QProcess::MergedChannels);
p.setProcessEnvironment(prepareEnv()); p.setProcessEnvironment(prepareEnv());
//QString command = QString("sh.exe"); #ifdef Q_OS_WIN
QString command = QString("cmd.exe"); //p.setProgram("sh.exe");
//p.setNativeArguments(getEasyRsaShPath() + " init-pki"); //p.setNativeArguments(getEasyRsaShPath() + " init-pki");
p.setProgram("cmd.exe");
p.setNativeArguments(QString("/C \"sh.exe %1\"").arg(getEasyRsaShPath() + " init-pki")); p.setNativeArguments(QString("/C \"sh.exe %1\"").arg(getEasyRsaShPath() + " init-pki"));
//qDebug().noquote() << p.nativeArguments(); #else
p.setProgram(getEasyRsaShPath());
p.setArguments(QStringList() << "init-pki");
#endif
p.setWorkingDirectory(path); p.setWorkingDirectory(path);
p.start(command); // QObject::connect(&p, &QProcess::channelReadyRead, [&](){
p.waitForFinished(); // qDebug().noquote() << p.readAll();
qDebug().noquote() << p.readAll(); // });
#endif p.start();
p.waitForFinished();
if (p.exitCode() == 0) return ErrorCode::NoError;
else return ErrorCode::EasyRsaError;
} }
QString OpenVpnConfigurator::genReq(const QString &path, const QString &clientId) ErrorCode OpenVpnConfigurator::genReq(const QString &path, const QString &clientId)
{ {
#ifdef Q_OS_WIN
QProcess p; QProcess p;
p.setProcessChannelMode(QProcess::MergedChannels); p.setProcessChannelMode(QProcess::MergedChannels);
p.setProcessEnvironment(prepareEnv()); p.setProcessEnvironment(prepareEnv());
//QString command = QString("sh.exe"); #ifdef Q_OS_WIN
QString command = QString("cmd.exe"); //p.setProgram("sh.exe");
//p.setNativeArguments(getEasyRsaShPath() + " gen-req " + clientId + " nopass"); //p.setNativeArguments(getEasyRsaShPath() + " gen-req " + clientId + " nopass");
p.setNativeArguments(QString("/C \"sh.exe %1\"").arg(getEasyRsaShPath() + " gen-req " + clientId + " nopass"));
//qDebug().noquote() << p.nativeArguments();
p.setProgram("cmd.exe");
p.setNativeArguments(QString("/C \"sh.exe %1\"").arg(getEasyRsaShPath() + " gen-req " + clientId + " nopass"));
#else
p.setArguments(QStringList() << "gen-req" << clientId << "nopass");
p.setProgram(getEasyRsaShPath());
#endif
p.setWorkingDirectory(path); p.setWorkingDirectory(path);
QObject::connect(&p, &QProcess::channelReadyRead, [&](){ QObject::connect(&p, &QProcess::channelReadyRead, [&](){
QString data = p.readAll(); QString data = p.readAll();
qDebug().noquote() << data; //qDebug().noquote() << data;
if (data.contains("Common Name (eg: your user, host, or server name)")) { if (data.contains("Common Name (eg: your user, host, or server name)")) {
p.write("\n"); p.write("\n");
} }
}); });
p.start(command); p.start();
p.waitForFinished(); p.waitForFinished();
// qDebug().noquote() << p.readAll();
return ""; if (p.exitCode() == 0) return ErrorCode::NoError;
#endif else return ErrorCode::EasyRsaError;
} }
@ -119,7 +132,7 @@ OpenVpnConfigurator::ConnectionData OpenVpnConfigurator::createCertRequest()
QString path = dir.path(); QString path = dir.path();
initPKI(path); initPKI(path);
genReq(path, connData.clientId); ErrorCode errorCode = genReq(path, connData.clientId);
QFile req(path + "/pki/reqs/" + connData.clientId + ".req"); QFile req(path + "/pki/reqs/" + connData.clientId + ".req");

View file

@ -29,8 +29,8 @@ private:
static QString getEasyRsaShPath(); static QString getEasyRsaShPath();
static QProcessEnvironment prepareEnv(); static QProcessEnvironment prepareEnv();
static void initPKI(const QString &path); static ErrorCode initPKI(const QString &path);
static QString genReq(const QString &path, const QString &clientId); static ErrorCode genReq(const QString &path, const QString &clientId);
static ConnectionData createCertRequest(); static ConnectionData createCertRequest();