mirror of https://github.com/oxen-io/lokinet
Merge remote-tracking branch 'origin/stable' into ubuntu/bionic
commit
dbc007f5de
@ -0,0 +1 @@
|
||||
/var/log/lokinet.log 644 5 5M $D0 J
|
@ -1,14 +1,53 @@
|
||||
#!/bin/sh
|
||||
set -x
|
||||
test `whoami` == root || exit 1
|
||||
|
||||
touch /var/lib/lokinet/suspend-launchd-service # Prevent restarting on exit
|
||||
# this is for dns tomfoolery
|
||||
scutil_query()
|
||||
{
|
||||
key=$1
|
||||
|
||||
scutil<<EOT
|
||||
open
|
||||
get $key
|
||||
d.show
|
||||
close
|
||||
EOT
|
||||
}
|
||||
|
||||
# get guid for service
|
||||
SERVICE_GUID=`scutil_query State:/Network/Global/IPv4 \
|
||||
| grep "PrimaryService" \
|
||||
| awk '{print $3}'`
|
||||
|
||||
# get name of network service
|
||||
SERVICE_NAME=`scutil_query Setup:/Network/Service/$SERVICE_GUID \
|
||||
| grep "UserDefinedName" \
|
||||
| awk -F': ' '{print $2}'`
|
||||
|
||||
# tell dns to be "empty" so that it's reset
|
||||
networksetup -setdnsservers "$SERVICE_NAME" empty
|
||||
|
||||
# Prevent restarting on exit
|
||||
touch /var/lib/lokinet/suspend-launchd-service
|
||||
|
||||
# shut off lokinet gracefully
|
||||
pgrep lokinet$ && /opt/lokinet/bin/lokinet-vpn --kill
|
||||
|
||||
# kill the gui and such
|
||||
killall LokinetGUI
|
||||
killall lokinet
|
||||
sleep 5 # Give it some time to shut down before we bring launchd into this
|
||||
launchctl stop network.loki.lokinet.daemon
|
||||
launchctl unload /Library/LaunchDaemons/network.loki.lokinet.daemon.plist
|
||||
# if the launch daemon is there kill it
|
||||
/bin/launchctl stop network.loki.lokinet.daemon
|
||||
/bin/launchctl unload /Library/LaunchDaemons/network.loki.lokinet.daemon.plist
|
||||
|
||||
# kill it and make sure it's dead
|
||||
killall -9 lokinet
|
||||
|
||||
rm -rf /Library/LaunchDaemons/network.loki.lokinet.daemon.plist
|
||||
rm -rf /Applications/Lokinet/
|
||||
rm -rf /Applications/LokinetGUI.app
|
||||
rm -rf /var/lib/lokinet
|
||||
rm -rf /usr/local/lokinet/
|
||||
rm -rf /opt/lokinet
|
||||
|
||||
rm -f /etc/newsyslog.d/lokinet.conf
|
||||
|
@ -0,0 +1,46 @@
|
||||
#!/bin/sh
|
||||
|
||||
|
||||
# this is for dns tomfoolery
|
||||
scutil_query()
|
||||
{
|
||||
key=$1
|
||||
|
||||
scutil<<EOT
|
||||
open
|
||||
get $key
|
||||
d.show
|
||||
close
|
||||
EOT
|
||||
}
|
||||
|
||||
# get guid for service
|
||||
SERVICE_GUID=`scutil_query State:/Network/Global/IPv4 \
|
||||
| grep "PrimaryService" \
|
||||
| awk '{print $3}'`
|
||||
|
||||
# get name of network service
|
||||
SERVICE_NAME=`scutil_query Setup:/Network/Service/$SERVICE_GUID \
|
||||
| grep "UserDefinedName" \
|
||||
| awk -F': ' '{print $2}'`
|
||||
|
||||
# tell dns to be "empty" so that it's reset
|
||||
networksetup -setdnsservers "$SERVICE_NAME" empty
|
||||
# suspend existing lokinet if it's there
|
||||
[ -e /var/lib/lokinet ] && touch /var/lib/lokinet/suspend-launchd-service
|
||||
# kill it
|
||||
killall lokinet || true
|
||||
# wait a sec
|
||||
sleep 1
|
||||
# make sure it's fucking dead
|
||||
killall -9 lokinet || true
|
||||
|
||||
# check for prexisting lokinet and kill it if it's there
|
||||
[ -e /Library/LaunchDaemons/network.loki.lokinet.daemon.plist ] && (
|
||||
launchctl stop network.loki.lokinet.daemon ;
|
||||
launchctl unload /Library/LaunchDaemons/network.loki.lokinet.daemon.plist ;
|
||||
rm -rf /Library/LaunchDaemons/network.loki.lokinet.daemon.plist
|
||||
)
|
||||
|
||||
# clear out the install dir beforehand
|
||||
rm -rf /opt/lokinet
|
@ -0,0 +1,85 @@
|
||||
cmake_minimum_required(VERSION 3.10) # bionic's cmake version
|
||||
|
||||
# Has to be set before `project()`, and ignored on non-macos:
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12 CACHE STRING "macOS deployment target (Apple clang only)")
|
||||
|
||||
find_program(CCACHE_PROGRAM ccache)
|
||||
if(CCACHE_PROGRAM)
|
||||
foreach(lang C CXX)
|
||||
if(NOT DEFINED CMAKE_${lang}_COMPILER_LAUNCHER AND NOT CMAKE_${lang}_COMPILER MATCHES ".*/ccache")
|
||||
message(STATUS "Enabling ccache for ${lang}")
|
||||
set(CMAKE_${lang}_COMPILER_LAUNCHER ${CCACHE_PROGRAM} CACHE STRING "")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
set(PROJECT_NAME lokinet-uninstaller)
|
||||
project(${PROJECT_NAME}
|
||||
VERSION 0.0.1
|
||||
DESCRIPTION "lokinet uninstaller for macos"
|
||||
LANGUAGES CXX)
|
||||
|
||||
add_executable(${PROJECT_NAME}
|
||||
main.cpp)
|
||||
|
||||
find_package(Qt5 COMPONENTS Widgets REQUIRED)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
"-framework Security"
|
||||
Qt5::Core Qt5::Widgets)
|
||||
|
||||
set_target_properties(${PROJECT_NAME}
|
||||
PROPERTIES
|
||||
CXX_STANDARD 17
|
||||
CXX_EXTENSIONS OFF
|
||||
CXX_STANDARD_REQUIRED ON
|
||||
)
|
||||
|
||||
|
||||
set(MACOS_SIGN ""
|
||||
CACHE STRING "enable codesigning -- use a 'Apple Distribution' key (or key description) from `security find-identity -v`")
|
||||
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lokinet-uninstall.icns
|
||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mk-icns.sh ${CMAKE_CURRENT_SOURCE_DIR}/icon.svg ${CMAKE_CURRENT_BINARY_DIR}/lokinet-uninstall.icns
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/icon.svg ${CMAKE_CURRENT_SOURCE_DIR}/mk-icns.sh)
|
||||
|
||||
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/lokinet-uninstall.icns)
|
||||
|
||||
set_target_properties(${PROJECT_NAME}
|
||||
PROPERTIES
|
||||
MACOSX_BUNDLE TRUE
|
||||
OUTPUT_NAME UninstallLokinet
|
||||
RESOURCE "${CMAKE_CURRENT_BINARY_DIR}/lokinet-uninstall.icns")
|
||||
|
||||
set(MACOSX_BUNDLE_BUNDLE_NAME UninstallLokinet)
|
||||
set(MACOSX_BUNDLE_GUI_IDENTIFIER org.lokinet.lokinet-uninstaller)
|
||||
set(MACOSX_BUNDLE_INFO_STRING "Lokinet uninstaller")
|
||||
set(MACOSX_BUNDLE_ICON_FILE lokinet-uninstall.icns)
|
||||
set(MACOSX_BUNDLE_LONG_VERSION_STRING ${PROJECT_VERSION})
|
||||
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION})
|
||||
set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION})
|
||||
set(MACOSX_BUNDLE_COPYRIGHT "© 2020, The Loki Project")
|
||||
|
||||
get_target_property(uic_location Qt5::uic IMPORTED_LOCATION)
|
||||
get_filename_component(qt_dir ${uic_location} DIRECTORY)
|
||||
|
||||
if(MACOS_SIGN)
|
||||
add_custom_command(TARGET ${PROJECT_NAME}
|
||||
POST_BUILD
|
||||
COMMAND echo "Running qt magic macos deploy script"
|
||||
COMMAND "${qt_dir}/macdeployqt" UninstallLokinet.app -always-overwrite
|
||||
COMMAND echo "Signing app bundle and everything inside it"
|
||||
COMMAND codesign -s "${MACOS_SIGN}" --deep --strict --options runtime --force -vvv UninstallLokinet.app
|
||||
)
|
||||
else()
|
||||
add_custom_command(TARGET ${PROJECT_NAME}
|
||||
POST_BUILD
|
||||
COMMAND echo "Running qt magic macos deploy script"
|
||||
COMMAND "${qt_dir}/macdeployqt" UninstallLokinet.app -always-overwrite
|
||||
)
|
||||
endif()
|
||||
|
||||
install(TARGETS lokinet-uninstaller
|
||||
RUNTIME DESTINATION bin
|
||||
BUNDLE DESTINATION .
|
||||
RESOURCE DESTINATION .)
|
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg data-name="Layer 1" version="1.1" viewBox="0 0 1e3 1e3" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<metadata>
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||
<dc:title>lokinet icon</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs>
|
||||
<style type="text/css">.cls-1{fill:#fff;}.cls-2{fill:#6cbe45;}.cls-3{fill:none;stroke:#fff;stroke-linecap:round;stroke-miterlimit:10;stroke-width:9px;}.cls-4{fill:#1c1c1c;}</style>
|
||||
</defs>
|
||||
<title>lokinet icon</title>
|
||||
<circle class="cls-1" cx="500" cy="500" r="500"/>
|
||||
<path class="cls-2" transform="translate(.02 .11)" d="M502.6,560.44l8,7.34,14.5,13.09c.74.67,1.42,1.38,2.09,2.09L541,595.54a20.87,20.87,0,0,1,0,31l-16.8,15.2a38.3,38.3,0,0,0,4-3.08l94.71-85.73-55.92-50.64Z"/>
|
||||
<path class="cls-2" transform="translate(.02 .11)" d="m754.35 415.61v-0.52a69.39 69.39 0 0 0-23.13-50.47l-187.92-167.57a20.88 20.88 0 0 1-3.77 26.39l-14.07 12.73c-0.09 0.08-0.16 0.17-0.25 0.25l-25.1 22.71 168.94 150.65-46.22 41.83 116.27 105.29a46.54 46.54 0 0 1 15.28 34.54c0 1.28-0.1 2.55-0.21 3.82a38.26 38.26 0 0 0 0.23-4v-174.88c0-0.26-0.04-0.52-0.05-0.77z"/>
|
||||
<path class="cls-2" transform="translate(.02 .11)" d="m500 441.68-38.63-35a20.88 20.88 0 0 1 0-31l10.49-9.49 0.35-0.43a37.93 37.93 0 0 1 6.07-5.38 39 39 0 0 0-3.46 2.75l-95.23 86.2 56 50.57z"/>
|
||||
<path class="cls-2" transform="translate(.02 .11)" d="m460.61 776.35 11.83-10.7a32.29 32.29 0 0 1 2.34-2.34l25-22.59-166.32-148.34 46.15-41.77-118.72-107.23a46.58 46.58 0 0 1-15.31-34.47c0-1.48 0.09-3 0.23-4.43a36.09 36.09 0 0 0-0.25 4.18v174.85a69.42 69.42 0 0 0 23.19 51.75l188.46 168.07a20.86 20.86 0 0 1 3.4-26.98z"/>
|
||||
<path class="cls-3" transform="translate(.02 .11)" d="m525 422.75"/>
|
||||
<path class="cls-4" transform="translate(.02 .11)" d="M754.38,591.44A46.54,46.54,0,0,0,739.1,556.9L525.19,363.21c-.24-.22-.51-.41-.76-.62l-10.26-9.29a20.86,20.86,0,0,0-28,0l-7.92,7.16a37.93,37.93,0,0,0-6.07,5.38l-.35.43-10.49,9.49a20.88,20.88,0,0,0,0,31l38.83,35.15,0,0,165.1,149.5-190.51,172a32.29,32.29,0,0,0-2.34,2.34l-11.83,10.7a20.87,20.87,0,0,0,0,30.95l24.82,22.48a20.87,20.87,0,0,0,28,0l41.08-37.17-.08-.08L739,625.91A46.58,46.58,0,0,0,754.38,591.44Z"/>
|
||||
<path class="cls-4" transform="translate(.02 .11)" d="M541,595.54,527.21,583c-.67-.71-1.35-1.42-2.09-2.09l-14.5-13.09-8.68-7.95-.06,0-167.22-151L525.21,236.42c.09-.08.16-.17.25-.25l14.07-12.73a20.88,20.88,0,0,0,0-31L514.71,170a20.87,20.87,0,0,0-28,0l-41.08,37.18h0L260.85,374.39a46.56,46.56,0,0,0,0,69L445.27,609.91l-.06.05,42.89,39a20.87,20.87,0,0,0,28,0l24.83-22.47A20.87,20.87,0,0,0,541,595.54Z"/>
|
||||
<path d="m173.66 173.36 646.24 642.31" fill="#f00" stroke="#f00" stroke-linecap="round" stroke-width="50"/>
|
||||
<path d="m824.02 175.25-648.03 648.03" fill="none" stroke="#f00" stroke-linecap="round" stroke-width="50"/>
|
||||
</svg>
|
After Width: | Height: | Size: 3.0 KiB |
@ -0,0 +1,45 @@
|
||||
|
||||
#include <QApplication>
|
||||
#include <QMessageBox>
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#include <Security/Security.h>
|
||||
|
||||
int uninstall();
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
QApplication app{argc, argv};
|
||||
if(QMessageBox::question(nullptr, "Lokinet Uninstaller", "Do You want to uninstall Lokinet?",
|
||||
QMessageBox::Yes|QMessageBox::No)
|
||||
== QMessageBox::Yes)
|
||||
{
|
||||
QMessageBox msgBox;
|
||||
const auto retcode = uninstall();
|
||||
if(retcode == 0)
|
||||
{
|
||||
msgBox.setText("Lokinet has been successfully uninstalled, you may now remove the uninstaller if you wish.");
|
||||
}
|
||||
else
|
||||
{
|
||||
msgBox.setText("Failed to uninstall lokinet");
|
||||
}
|
||||
msgBox.exec();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int uninstall()
|
||||
{
|
||||
AuthorizationRef authorizationRef;
|
||||
OSStatus status;
|
||||
|
||||
status = AuthorizationCreate(nullptr, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &authorizationRef);
|
||||
if(status != 0)
|
||||
return status;
|
||||
char* tool = "/bin/sh";
|
||||
char* args[] = {"/opt/lokinet/bin/lokinet_uninstall.sh", nullptr};
|
||||
FILE* pipe = stdout;
|
||||
|
||||
return AuthorizationExecuteWithPrivileges(authorizationRef, tool, kAuthorizationFlagDefaults, args, &pipe);
|
||||
}
|
||||
|
@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Invoked from cmake as mk-icns.sh /path/to/icon.svg /path/to/output.icns
|
||||
svg="$1"
|
||||
out="$2"
|
||||
outdir="${out/%.icns/.iconset}"
|
||||
|
||||
set -e
|
||||
|
||||
mkdir -p "${outdir}"
|
||||
for size in 16 32 64 128 256 512 1024; do
|
||||
convert -background none -resize "${size}x${size}" "$svg" -strip "png32:${outdir}/icon_${size}x${size}.png"
|
||||
done
|
||||
mv "${outdir}/icon_1024x1024.png" "${outdir}/icon_512x512@2x.png"
|
||||
for size in 16 32 128 256; do
|
||||
double=$((size * 2))
|
||||
cp "${outdir}/icon_${double}x${double}.png" "${outdir}/icon_${size}x${size}@2x.png"
|
||||
done
|
||||
|
||||
iconutil -c icns "${outdir}"
|
@ -0,0 +1,11 @@
|
||||
--- a/services/listen_dnsport.c 2020-11-16 20:07:44.494582149 -0400
|
||||
+++ b/services/listen_dnsport.c 2020-11-16 20:07:31.074585943 -0400
|
||||
@@ -533,7 +533,7 @@
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
-# elif defined(IP_DONTFRAG)
|
||||
+# elif defined(IP_DONTFRAG) && !defined(__APPLE__)
|
||||
int off = 0;
|
||||
if (setsockopt(s, IPPROTO_IP, IP_DONTFRAG,
|
||||
&off, (socklen_t)sizeof(off)) < 0) {
|
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
mkdir -p build-windows
|
||||
cd build-windows
|
||||
cmake -G Ninja -DCMAKE_CROSSCOMPILE=ON -DCMAKE_EXE_LINKER_FLAGS=-fstack-protector -DLIBUV_ROOT=$PWD/../external/libuv -DCMAKE_CXX_FLAGS=-fdiagnostics-color=always -DCMAKE_TOOLCHAIN_FILE=../contrib/cross/mingw64.cmake -DBUILD_STATIC_DEPS=ON -DBUILD_PACKAGE=ON -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DWITH_TESTS=OFF -DNATIVE_BUILD=OFF -DSTATIC_LINK=ON -DWITH_SYSTEMD=OFF -DFORCE_LOKIMQ_SUBMODULE=ON -DSUBMODULE_CHECK=OFF -DWITH_LTO=OFF ..
|
||||
ninja package
|
@ -1 +1 @@
|
||||
Subproject commit ea484729c7bb7b430259a422df373e86bdd95b55
|
||||
Subproject commit e7487fd0c8ee843b3a3df16563ee42dad2fde050
|
Loading…
Reference in New Issue