2021-04-04 23:12:36 +03:00
|
|
|
#include "scripts_registry.h"
|
|
|
|
|
|
|
|
|
|
#include <QObject>
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
#include <QFile>
|
|
|
|
|
|
2021-04-26 23:19:19 +03:00
|
|
|
QString amnezia::scriptFolder(amnezia::DockerContainer container)
|
2021-04-04 23:12:36 +03:00
|
|
|
{
|
2021-04-26 23:19:19 +03:00
|
|
|
switch (container) {
|
|
|
|
|
case DockerContainer::OpenVpn: return QLatin1String("openvpn");
|
2021-09-20 21:51:28 +03:00
|
|
|
case DockerContainer::Cloak: return QLatin1String("openvpn_cloak");
|
|
|
|
|
case DockerContainer::ShadowSocks: return QLatin1String("openvpn_shadowsocks");
|
2021-04-26 23:19:19 +03:00
|
|
|
case DockerContainer::WireGuard: return QLatin1String("wireguard");
|
2021-10-04 19:07:49 +03:00
|
|
|
case DockerContainer::Ipsec: return QLatin1String("ipsec");
|
|
|
|
|
|
2021-09-21 01:49:28 +03:00
|
|
|
case DockerContainer::TorWebSite: return QLatin1String("website_tor");
|
2021-09-22 14:49:08 +03:00
|
|
|
case DockerContainer::Dns: return QLatin1String("dns");
|
2021-11-17 23:42:17 +03:00
|
|
|
//case DockerContainer::FileShare: return QLatin1String("file_share");
|
2021-09-22 14:49:08 +03:00
|
|
|
case DockerContainer::Sftp: return QLatin1String("sftp");
|
2021-04-04 23:12:36 +03:00
|
|
|
default: return "";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString amnezia::scriptName(SharedScriptType type)
|
|
|
|
|
{
|
|
|
|
|
switch (type) {
|
|
|
|
|
case SharedScriptType::prepare_host: return QLatin1String("prepare_host.sh");
|
|
|
|
|
case SharedScriptType::install_docker: return QLatin1String("install_docker.sh");
|
|
|
|
|
case SharedScriptType::build_container: return QLatin1String("build_container.sh");
|
2021-04-26 22:54:31 +03:00
|
|
|
case SharedScriptType::remove_container: return QLatin1String("remove_container.sh");
|
|
|
|
|
case SharedScriptType::remove_all_containers: return QLatin1String("remove_all_containers.sh");
|
2021-04-04 23:12:36 +03:00
|
|
|
case SharedScriptType::setup_host_firewall: return QLatin1String("setup_host_firewall.sh");
|
2021-04-26 22:54:31 +03:00
|
|
|
case SharedScriptType::check_connection: return QLatin1String("check_connection.sh");
|
2023-01-01 21:48:20 +03:00
|
|
|
case SharedScriptType::check_server_is_busy: return QLatin1String("check_server_is_busy.sh");
|
2021-04-04 23:12:36 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString amnezia::scriptName(ProtocolScriptType type)
|
|
|
|
|
{
|
|
|
|
|
switch (type) {
|
|
|
|
|
case ProtocolScriptType::dockerfile: return QLatin1String("Dockerfile");
|
2021-05-07 23:28:37 +03:00
|
|
|
case ProtocolScriptType::run_container: return QLatin1String("run_container.sh");
|
2021-04-04 23:12:36 +03:00
|
|
|
case ProtocolScriptType::configure_container: return QLatin1String("configure_container.sh");
|
|
|
|
|
case ProtocolScriptType::container_startup: return QLatin1String("start.sh");
|
|
|
|
|
case ProtocolScriptType::openvpn_template: return QLatin1String("template.ovpn");
|
2021-06-12 11:59:36 +03:00
|
|
|
case ProtocolScriptType::wireguard_template: return QLatin1String("template.conf");
|
2021-04-04 23:12:36 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString amnezia::scriptData(amnezia::SharedScriptType type)
|
|
|
|
|
{
|
|
|
|
|
QString fileName = QString(":/server_scripts/%1").arg(amnezia::scriptName(type));
|
|
|
|
|
QFile file(fileName);
|
|
|
|
|
if (! file.open(QIODevice::ReadOnly)) {
|
2021-09-22 14:49:08 +03:00
|
|
|
qDebug() << "Warning: script missing" << fileName;
|
2021-04-04 23:12:36 +03:00
|
|
|
return "";
|
|
|
|
|
}
|
2021-05-07 23:28:37 +03:00
|
|
|
QByteArray ba = file.readAll();
|
|
|
|
|
if (ba.isEmpty()) {
|
2021-09-22 14:49:08 +03:00
|
|
|
qDebug() << "Warning: script is empty" << fileName;
|
2021-05-07 23:28:37 +03:00
|
|
|
}
|
|
|
|
|
return ba;
|
2021-04-04 23:12:36 +03:00
|
|
|
}
|
|
|
|
|
|
2021-04-26 23:19:19 +03:00
|
|
|
QString amnezia::scriptData(amnezia::ProtocolScriptType type, DockerContainer container)
|
2021-04-04 23:12:36 +03:00
|
|
|
{
|
2021-04-26 23:19:19 +03:00
|
|
|
QString fileName = QString(":/server_scripts/%1/%2").arg(amnezia::scriptFolder(container), amnezia::scriptName(type));
|
2021-04-04 23:12:36 +03:00
|
|
|
QFile file(fileName);
|
|
|
|
|
if (! file.open(QIODevice::ReadOnly)) {
|
2021-09-22 14:49:08 +03:00
|
|
|
qDebug() << "Warning: script missing" << fileName;
|
2021-04-04 23:12:36 +03:00
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
QByteArray data = file.readAll();
|
|
|
|
|
data.replace("\r", "");
|
|
|
|
|
return data;
|
|
|
|
|
}
|