tidy installer script

This commit is contained in:
ddvk 2021-09-26 23:50:53 +02:00
parent 83feb65863
commit a6a59b1c3a
2 changed files with 62 additions and 37 deletions

View file

@ -1,10 +1,19 @@
BINARY=dist/rmake-proxy BINARY=dist/rmfake-proxy
WINBINARY=dist/rmfake-proxy.exe
LINUXBINARY=dist/rmfake-proxy64
INSTALLER=dist/installer.sh INSTALLER=dist/installer.sh
.PHONY: clean .PHONY: clean
all: $(INSTALLER) all: $(INSTALLER) $(WINBINARY) $(LINUXBINARY)
$(LINUXBINARY): version.go main.go
go build -ldflags="-w -s" -o $@
$(BINARY): version.go main.go
GOARCH=arm GOARM=7 go build -ldflags="-w -s" -o $@
$(WINBINARY): version.go main.go
GOOS=windows go build -ldflags="-w -s" -o $@
$(BINARY): version.go
GOARCH=arm GOARM=7 go build -ldflags="-w -s" -o $(BINARY)
version.go: version.go:
go generate go generate

View file

@ -5,11 +5,6 @@ UNIT_NAME=proxy
BINARY=rmfake-proxy BINARY=rmfake-proxy
DESTINATION="/home/root/rmfakecloud" DESTINATION="/home/root/rmfakecloud"
echo ""
echo "rmFakeCloud proxy installer"
echo ""
# Create destination folder # Create destination folder
@ -45,7 +40,7 @@ After=home.mount
Environment=HOME=/home/root Environment=HOME=/home/root
#EnvironmentFile=$workdir/proxy.cfg #EnvironmentFile=$workdir/proxy.cfg
WorkingDirectory=$workdir WorkingDirectory=$workdir
ExecStart=$workdir/${BINARY} -cert $workdir/proxy.crt -key $workdir/proxy.key ${cloudurl} ExecStart=$workdir/${BINARY} -cert $workdir/proxy.bundle.crt -key $workdir/proxy.key ${cloudurl}
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
@ -61,17 +56,18 @@ function uninstall(){
#rm proxy.key proxy.crt ca.crt ca.srl ca.key proxy.pubkey proxy.csr csr.conf proxy.cfg #rm proxy.key proxy.crt ca.crt ca.srl ca.key proxy.pubkey proxy.csr csr.conf proxy.cfg
rm /usr/local/share/ca-certificates/ca.crt rm /usr/local/share/ca-certificates/ca.crt
update-ca-certificates --fresh update-ca-certificates --fresh
rm /etc/systemd/system/proxy.service rm /etc/systemd/system/${UNIT_NAME}.service
sed -i '/# rmfake_start/,/# rmfake_end/d' /etc/hosts sed -i '/# rmfake_start/,/# rmfake_end/d' /etc/hosts
echo "Marking files as not synced to prevent data loss" echo "Marking files as not synced to prevent data loss"
echo "Stopping xochitl..."
systemctl stop xochitl
fixsync fixsync
rm -fr $DESTINATION rm -fr $DESTINATION
echo "You can restart xochitl now" echo "Restart xochitl for the changes to take effect"
} }
function generate_certificates(){ function generate_certificates(){
# thanks to https://gist.github.com/Soarez/9688998 # thanks to https://gist.github.com/Soarez/9688998
pushd $DESTINATION
cat <<EOF > csr.conf cat <<EOF > csr.conf
[ req ] [ req ]
@ -107,50 +103,50 @@ DNS.2 = my.remarkable.com
DNS.3 = internal.cloud.remarkable.com DNS.3 = internal.cloud.remarkable.com
DNS.4 = ping.remarkable.com DNS.4 = ping.remarkable.com
DNS.5 = *.remarkable.com DNS.5 = *.remarkable.com
# DNS.3 = any additional hosts
EOF EOF
# ca # ca
if [ ! -f ca.crt ]; then if [ ! -f ca.crt ]; then
echo "Generating ca..." echo "Generating CA key and crt..."
openssl genrsa -out ca.key 2048 openssl genrsa -out ca.key 2048
openssl req -new -sha256 -x509 -key ca.key -out ca.crt -days 3650 -subj /CN=rmfakecloud openssl req -new -sha256 -x509 -key ca.key -out ca.crt -days 3650 -subj /CN=rmfakecloud
rm proxy.key || true rm -f proxy.key
rm proxy.pubkey || true rm -f proxy.pubkey
else else
echo "CA exists" echo "CA exists"
fi fi
if [ ! -f proxy.key ]; then if [ ! -f proxy.key ]; then
echo "Generating proxy keys..." echo "Generating private key..."
openssl genrsa -out proxy.key 2048 openssl genrsa -out proxy.key 2048
rm proxy.pubkey || true rm -f proxy.pubkey
else else
echo "Private key exists" echo "Private key exists"
fi fi
if [ ! -f proxy.pubkey ]; then if [ ! -f proxy.pubkey ]; then
echo "Generating pub key..."
openssl rsa -in proxy.key -pubout -out proxy.pubkey openssl rsa -in proxy.key -pubout -out proxy.pubkey
rm proxy.crt || true rm -f proxy.crt
else else
echo "Pub key exists" echo "Pub key exists"
fi fi
if [ ! -f proxy.crt ]; then if [ ! -f proxy.crt ]; then
echo "Generating csr and crt..."
openssl req -new -config ./csr.conf -key proxy.key -out proxy.csr openssl req -new -config ./csr.conf -key proxy.key -out proxy.csr
# Signing # Signing
openssl x509 -req -in proxy.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out proxy.crt -days 3650 -extfile csr.conf -extensions caext openssl x509 -req -in proxy.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out proxy.crt -days 3650 -extfile csr.conf -extensions caext
#cat proxy.crt ca.crt > proxy.bundle.crt cat proxy.crt ca.crt > proxy.bundle.crt
echo "showing result" #echo "showing result"
#openssl x509 -in proxy.bundle.crt -text -noout #openssl x509 -in proxy.bundle.crt -text -noout
echo "Generation complete" echo "Generation complete!"
else else
echo "crt exists" echo "crt exists"
fi fi
popd
} }
function install_certificates(){ function install_certificates(){
@ -183,61 +179,81 @@ EOF
} }
function getproxy(){ function getproxy(){
read -p "Enter your own cloud url: " url read -p "Enter your own cloud url [http(s)://somehost:port] >" url
echo $url echo $url
} }
function doinstall(){ function doinstall(){
echo "Extracting embedded binary..."
unpack unpack
pushd "${DESTINATION}"
generate_certificates generate_certificates
install_certificates install_certificates
# install proxy # install proxy
url=$(getproxy) url=$1
if [ -z $url ]; then
url=$(getproxy)
fi
install_proxyservice $url install_proxyservice $url
echo "Patching /etc/hosts"
patch_hosts patch_hosts
echo "Stoping xochitl.."
systemctl stop xochitl systemctl stop xochitl
echo "Fixing sync status..."
fixsync fixsync
echo "Starting xochitl..."
systemctl start xochitl systemctl start xochitl
popd
} }
case $1 in case $1 in
"uninstall" ) "uninstall" )
uninstall uninstall
;; ;;
"install" ) "install" )
doinstall shift 1
;; doinstall $1
;;
"setproxy" ) "gencert" )
generate_certificates
;;
"setcloud" )
shift 1 shift 1
url=$1 url=$1
if [ $# -lt 1 ]; then if [ $# -lt 1 ]; then
url=$(getproxy) url=$(getproxy)
fi fi
install_proxyservice $url install_proxyservice $url
;; ;;
* ) * )
cat <<EOF cat <<EOF
rmFakeCloud reverse proxy installer
Usage: Usage:
install install [cloudurl]
installs installs and asks for cloud url
uninstall uninstall
uninstall uninstall, removes everything
setproxy [cloudurl] gencert
generate certificates
setcloud [cloudurl]
changes the cloud address to changes the cloud address to
EOF EOF
;; ;;
esac esac
# Exit from the script with success (0)
exit 0 exit 0
__ARCHIVE__ __ARCHIVE__