Merge branch 'dev' of github.com:amnezia-vpn/amnezia-client into feature/new-gui

This commit is contained in:
vladimir.kuznetsov 2023-08-16 13:26:41 +05:00
commit e0d6e0117e
12 changed files with 63 additions and 40 deletions

View file

@ -348,13 +348,16 @@ if(ANDROID)
foreach(abi IN ITEMS ${QT_ANDROID_ABIS}) foreach(abi IN ITEMS ${QT_ANDROID_ABIS})
set_property(TARGET ${PROJECT} PROPERTY QT_ANDROID_EXTRA_LIBS set_property(TARGET ${PROJECT} PROPERTY QT_ANDROID_EXTRA_LIBS
${CMAKE_CURRENT_LIST_DIR}/android/lib/wireguard/${abi}/libwg.so ${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/wireguard/android/${abi}/libwg.so
${CMAKE_CURRENT_LIST_DIR}/android/lib/wireguard/${abi}/libwg-go.so ${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/wireguard/android/${abi}/libwg-go.so
${CMAKE_CURRENT_LIST_DIR}/android/lib/wireguard/${abi}/libwg-quick.so ${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/wireguard/android/${abi}/libwg-quick.so
${CMAKE_CURRENT_LIST_DIR}/android/lib/openvpn/${abi}/libck-ovpn-plugin.so ${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/shadowsocks/android/${abi}/libredsocks.so
${CMAKE_CURRENT_LIST_DIR}/android/lib/openvpn/${abi}/libovpn3.so ${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/shadowsocks/android/${abi}/libsslocal.so
${CMAKE_CURRENT_LIST_DIR}/android/lib/openvpn/${abi}/libovpnutil.so ${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/shadowsocks/android/${abi}/libtun2socks.so
${CMAKE_CURRENT_LIST_DIR}/android/lib/openvpn/${abi}/librsapss.so ${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/openvpn/android/${abi}/libck-ovpn-plugin.so
${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/openvpn/android/${abi}/libovpn3.so
${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/openvpn/android/${abi}/libovpnutil.so
${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/openvpn/android/${abi}/librsapss.so
${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/libssh/android/${abi}/libssh.so ${CMAKE_CURRENT_LIST_DIR}/3rd-prebuilt/3rd-prebuilt/libssh/android/${abi}/libssh.so
) )

View file

@ -138,8 +138,8 @@ android {
resConfig "en" resConfig "en"
minSdkVersion = 24 minSdkVersion = 24
targetSdkVersion = 34 targetSdkVersion = 34
versionCode 26 // Change to a higher number versionCode 31 // Change to a higher number
versionName "3.0.8" // Change to a higher number versionName "3.0.9" // Change to a higher number
javaCompileOptions.annotationProcessorOptions.arguments = [ javaCompileOptions.annotationProcessorOptions.arguments = [
"room.schemaLocation": "${qtAndroidDir}/schemas".toString() "room.schemaLocation": "${qtAndroidDir}/schemas".toString()

View file

@ -1 +0,0 @@
../../3rd-prebuilt/3rd-prebuilt/openvpn/android

View file

@ -1 +0,0 @@
../../../client/3rd-prebuilt/3rd-prebuilt/wireguard/android

View file

@ -1 +0,0 @@
../../../../../client/3rd-prebuilt/3rd-prebuilt/shadowsocks/android

View file

@ -236,14 +236,7 @@ ErrorCode ServerController::setupContainer(const ServerCredentials &credentials,
ErrorCode e = ErrorCode::NoError; ErrorCode e = ErrorCode::NoError;
e = isUserInSudo(credentials, container); e = isUserInSudo(credentials, container);
if (e) if (e) return e;
return e;
if (!isUpdate) {
e = isServerPortBusy(credentials, container, config);
if (e)
return e;
}
e = isServerDpkgBusy(credentials, container); e = isServerDpkgBusy(credentials, container);
if (e) if (e)
@ -254,6 +247,16 @@ ErrorCode ServerController::setupContainer(const ServerCredentials &credentials,
return e; return e;
qDebug().noquote() << "ServerController::setupContainer installDockerWorker finished"; qDebug().noquote() << "ServerController::setupContainer installDockerWorker finished";
if (!isUpdate) {
e = isServerPortBusy(credentials, container, config);
if (e) return e;
}
if (!isUpdate) {
e = isServerPortBusy(credentials, container, config);
if (e) return e;
}
e = prepareHostWorker(credentials, container, config); e = prepareHostWorker(credentials, container, config);
if (e) if (e)
return e; return e;
@ -356,8 +359,8 @@ ErrorCode ServerController::installDockerWorker(const ServerCredentials &credent
replaceVars(amnezia::scriptData(SharedScriptType::install_docker), genVarsForScript(credentials)), replaceVars(amnezia::scriptData(SharedScriptType::install_docker), genVarsForScript(credentials)),
cbReadStdOut, cbReadStdErr); cbReadStdOut, cbReadStdErr);
if (stdOut.contains("command not found")) qDebug().noquote() << "ServerController::installDockerWorker" << stdOut;
return ErrorCode::ServerDockerFailedError; if (stdOut.contains("command not found")) return ErrorCode::ServerDockerFailedError;
return error; return error;
} }
@ -655,7 +658,7 @@ ErrorCode ServerController::isServerPortBusy(const ServerCredentials &credential
ProtocolProps::transportProtoToString(ProtocolProps::defaultTransportProto(protocol), protocol); ProtocolProps::transportProtoToString(ProtocolProps::defaultTransportProto(protocol), protocol);
QString transportProto = containerConfig.value(config_key::transport_proto).toString(defaultTransportProto); QString transportProto = containerConfig.value(config_key::transport_proto).toString(defaultTransportProto);
QString script = QString("sudo lsof -i -P -n | grep -E ':%1 ").arg(port); QString script = QString("which lsof &>/dev/null || true && sudo lsof -i -P -n | grep -E ':%1 ").arg(port);
for (auto &port : fixedPorts) { for (auto &port : fixedPorts) {
script = script.append("|:%1").arg(port); script = script.append("|:%1").arg(port);
} }

View file

@ -369,16 +369,18 @@ namespace libssh {
m_passphraseCallback = passphraseCallback; m_passphraseCallback = passphraseCallback;
authResult = ssh_pki_import_privkey_base64(credentials.secretData.toStdString().c_str(), nullptr, callback, nullptr, &privateKey); authResult = ssh_pki_import_privkey_base64(credentials.secretData.toStdString().c_str(), nullptr, callback, nullptr, &privateKey);
if (authResult == SSH_OK) { if (authResult == SSH_OK) {
char* key = new char[65535]; char *b64 = nullptr;
authResult = ssh_pki_export_privkey_base64(privateKey, nullptr, nullptr, nullptr, &key); authResult = ssh_pki_export_privkey_base64(privateKey, nullptr, nullptr, nullptr, &b64);
decryptedPrivateKey = key; decryptedPrivateKey = QString(b64);
delete[] key;
if (authResult != SSH_OK) { if (authResult != SSH_OK) {
qDebug() << "failed to export private key"; qDebug() << "failed to export private key";
errorCode = ErrorCode::InternalError; errorCode = ErrorCode::InternalError;
} }
else {
ssh_string_free_char(b64);
}
} else { } else {
errorCode = ErrorCode::SshPrivateKeyError; errorCode = ErrorCode::SshPrivateKeyError;
} }

View file

@ -1,10 +1,20 @@
pm_apt="/usr/bin/apt-get"; pm_yum="/usr/bin/yum";\ if which apt-get > /dev/null 2>&1; then pm=$(which apt-get); docker_pkg="docker.io"; dist="debian";\
if [[ -f "$pm_apt" ]]; then pm=$pm_apt; docker_pkg="docker.io"; else pm=$pm_yum; docker_pkg="docker"; fi;\ elif which dnf > /dev/null 2>&1; then pm=$(which dnf); docker_pkg="docker"; dist="fedora";\
if [[ ! -f "/usr/bin/sudo" ]]; then $pm update -y -q; $pm install -y -q sudo; fi;\ elif which yum > /dev/null 2>&1; then pm=$(which yum); docker_pkg="docker"; dist="centos";\
docker_service=$(systemctl list-units --full -all | grep docker.service | grep -v inactive | grep -v dead | grep -v failed);\ else echo "Packet manager not found"; exit 1; fi;\
if [[ -f "$pm_apt" ]]; then export DEBIAN_FRONTEND=noninteractive; fi;\ echo "Dist: $dist, Packet manager: $pm, Docker pkg: $docker_pkg";\
if [[ -z "$docker_service" ]]; then sudo $pm update -y -q; sudo $pm install -y -q curl $docker_pkg; fi;\ if [ "$dist" = "debian" ]; then export DEBIAN_FRONTEND=noninteractive; fi;\
docker_service=$(systemctl list-units --full -all | grep docker.service | grep -v inactive | grep -v dead | grep -v failed);\ if ! command -v sudo > /dev/null 2>&1; then $pm update -yq; $pm install -yq sudo; fi;\
if [[ -z "$docker_service" ]]; then sleep 5 && sudo systemctl start docker && sleep 5; fi;\ if ! command -v fuser > /dev/null 2>&1; then $pm install -yq psmisc; fi;\
if [[ -f "$pm_yum" ]]; then sudo systemctl enable docker && sudo systemctl start docker; fi;\ if ! command -v lsof > /dev/null 2>&1; then $pm install -yq lsof; fi;\
if ! command -v docker > /dev/null 2>&1; then $pm update -yq; $pm install -yq $docker_pkg;\
if [ "$dist" = "fedora" ] || [ "$dist" = "debian" ]; then sudo systemctl enable docker && sudo systemctl start docker; fi;\
fi;\
if [ "$dist" = "debian" ]; then \
docker_service=$(systemctl list-units --full --all | grep docker.service | grep -v inactive | grep -v dead | grep -v failed);\
if [ -z "$docker_service" ]; then sudo $pm update -yq; sudo $pm install -yq curl $docker_pkg; fi;\
sleep 3 && sudo systemctl start docker && sleep 3;\
fi;\
if ! command -v sudo > /dev/null 2>&1; then echo "Failed to install Docker";exit 1;fi;\
docker --version docker --version

View file

@ -1,5 +1,6 @@
# Run container # Run container
sudo docker run -d \ sudo docker run -d \
--privileged \
--log-driver none \ --log-driver none \
--restart always \ --restart always \
--cap-add=NET_ADMIN \ --cap-add=NET_ADMIN \

View file

@ -1,5 +1,6 @@
# Run container # Run container
sudo docker run -d \ sudo docker run -d \
--privileged \
--log-driver none \ --log-driver none \
--restart always \ --restart always \
--cap-add=NET_ADMIN \ --cap-add=NET_ADMIN \

View file

@ -1,7 +1,8 @@
# Run container # Run container
sudo docker run \ sudo docker run -d \
--privileged \
--log-driver none \ --log-driver none \
-d --restart always \ --restart always \
--cap-add=NET_ADMIN \ --cap-add=NET_ADMIN \
-p $SHADOWSOCKS_SERVER_PORT:$SHADOWSOCKS_SERVER_PORT/tcp \ -p $SHADOWSOCKS_SERVER_PORT:$SHADOWSOCKS_SERVER_PORT/tcp \
--name $CONTAINER_NAME $CONTAINER_NAME --name $CONTAINER_NAME $CONTAINER_NAME

View file

@ -1,4 +1,9 @@
CUR_USER=$(whoami);\ CUR_USER=$(whoami);\
sudo mkdir -p $DOCKERFILE_FOLDER;\ sudo mkdir -p $DOCKERFILE_FOLDER;\
sudo chown $CUR_USER $DOCKERFILE_FOLDER sudo chown $CUR_USER $DOCKERFILE_FOLDER;\
if ! sudo docker network ls | grep -q amnezia-dns-net; then sudo docker network create --driver bridge --subnet=172.29.172.0/24 --opt com.docker.network.bridge.name=amn0 amnezia-dns-net; fi if ! sudo docker network ls | grep -q amnezia-dns-net; then sudo docker network create \
--driver bridge \
--subnet=172.29.172.0/24 \
--opt com.docker.network.bridge.name=amn0 \
amnezia-dns-net;\
fi