From 18597eef646fa46bc01a23c479d64789a66c5039 Mon Sep 17 00:00:00 2001
From: MOIS3Y <s.zhukovskii@ispsystem.com>
Date: Thu, 27 Apr 2023 18:41:57 +0900
Subject: [PATCH] Create: support go3 ver with ssh certs

---
 gogoCHAD3.sh | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 127 insertions(+)
 create mode 100755 gogoCHAD3.sh

diff --git a/gogoCHAD3.sh b/gogoCHAD3.sh
new file mode 100755
index 0000000..787c3b6
--- /dev/null
+++ b/gogoCHAD3.sh
@@ -0,0 +1,127 @@
+#!/usr/bin/env bash
+
+# █▀▀ █▀█ █▄░█ █▀▀ █ █▀▀
+# █▄▄ █▄█ █░▀█ █▀░ █ █▄█
+# ---------------------------------------
+
+# REQUIRED:
+go_server="ssh.ispsystem.net"                   # set here GO server address
+key_path="/home/stepan/.ssh/ispkeys/ISP_ecdsa"  # set here fullpath to you private ssh_key
+key_username="s.zhukovskii"                     # set first half your name from corp email
+
+# UPGRADABLE OVER TIME
+image="mois3y/isp_support:0.0.2"                # set image helpfull image for access to VM/DCI
+
+# OPTIONAL:
+hide_output=">> /dev/null"                     # uncomment this line to hide image pull and rm info
+
+
+
+# █▀▄▀█ ▄▀█ █ █▄░█
+# █░▀░█ █▀█ █ █░▀█
+# ----------------------------
+
+# Check second arument (if empty set default 22 port)
+if ! [ -z $3 ]; then PORT=$3; else PORT=22; fi
+
+# Parse address
+address=$(echo $2 | egrep -o '[a-zA-Z0-9\.\-]+\.[a-zA-Z0-9\.\-]+')
+
+# SSH full command:
+ssh_run="ssh -A -t -i $key_path $key_username@$go_server go3 $address -p$PORT"
+
+# Access functions:
+access_vmdci() {
+    # bin command:
+    docker_pull="/usr/bin/docker pull $image $hide_output"
+    docker_rm="/usr/bin/docker image rm $image $hide_output" # delete image from client host
+    docker_run="/usr/bin/docker run"
+
+    # docker command params:
+    conf_file="/opt/ispsystem/$platform/config.json"
+    scripts_path="/root"
+
+    mount_conf="--mount type=bind,source=$conf_file,target=/app/config.json,readonly"
+    mount_host="--mount type=bind,source=$scripts_path,target=/app/host"
+
+    # start container:
+    container_params="$network $mount_conf $mount_host -e PLATFORM=$platform -e CLIENT_HOST=$address --rm $image"
+
+    # ENTRYPOINT:
+    echo "Сonnect to client server and get access to web UI please wait...."
+    $ssh_run "$docker_pull && $docker_run $container_params && $docker_rm"
+    echo "Сonnect to client server again with ssh session please wait...."
+    $ssh_run
+
+}
+
+access_fivegen() {
+    KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
+    # bin command:
+    key_gen="/usr/local/mgr5/sbin/mgrctl -m $panel session.newkey key=$KEY"
+
+    # ENTRYPOINT:
+    echo "Сonnect to client server and get access to web UI please wait...."
+    $ssh_run "$key_gen"
+    echo ""
+    echo "Your access link:"
+    echo ""
+    echo "============================================================================="
+    echo "https://$address:1500/$panel?func=auth&key=$KEY"
+    echo "============================================================================="
+    echo ""
+    echo "Сonnect to client server again with ssh session please wait...."
+    echo ""
+    $ssh_run
+}
+
+
+if [[ "$1" == "--vm" ]]; then
+    platform="vm"
+    network="--network=vm_vm_box_net"
+    access_vmdci
+
+elif [[ "$1" == "--dci" ]]; then
+    platform="dci"
+    network="--network=dci_auth"
+    access_vmdci
+
+elif [[ "$1" == "--bill" ]]; then
+    panel="billmgr"
+    access_fivegen
+
+elif [[ "$1" == "--ip" ]]; then
+    panel="ipmgr"
+    access_fivegen
+
+elif [[ "$1" == "--dns" ]]; then
+    panel="dnsmgr"
+    access_fivegen
+
+elif [[ "$1" == "--vm5" ]]; then
+    panel="vmmgr"
+    access_fivegen
+
+elif [[ "$1" == "--dci5" ]]; then
+    panel="dcimgr"
+    access_fivegen
+
+else
+	cat <<- EOF
+============================================
+    Usage : access.sh host port --panel
+
+    Available Control panels:
+
+        --vm
+        --dci
+        --bill
+        --ip
+        --dns
+        --vm5
+        --dci5
+
+=============================================
+	EOF
+fi
+