#!/bin/bash KEY_FILE=~/.dlinux-cli.key if [ ! -f $KEY_FILE ]; then echo -e "Key file not found, run:\necho \"[YOUR-API-KEY]\" > $KEY_FILE" exit 1 fi API_KEY="$(cat $KEY_FILE)" print_help() { printf " $0 hello - Get a hello message $0 name - Get your SSHID $0 start - Start your container $0 stop - Stop your container $0 restart - Restart your container $0 info - Get info about your container $0 stats - Get your container memory usage statistics $0 time - Get your container expiration time $0 rootpass - Reset root user password $0 key-time - Get your api key expiration time $0 exec [--user user] [--pwd directory] --cmd command - Execute a command in your container $0 notify - Send a message DM to your discord " } # Helper function call_api() { curl -X $1 -H "x-ssh-auth: $API_KEY" -H "Content-Type: application/json" "https://api.ssh.surf/$2" -d "$3" 2> /dev/null } # Commands command_hello() { call_api GET hello | jq -r .message } command_name() { call_api GET name | jq -r .message } command_start() { call_api GET start | jq -r .message } command_stop() { call_api GET stop | jq -r .message } command_restart() { call_api GET restart | jq -r .message } command_info() { data=$(call_api GET info) printf " Name: $(echo $data | jq -r .data.name) IP Address: $(echo $data | jq -r .data.IPAddress) MAC Address: $(echo $data | jq -r .data.MACAddress) Memory: $(echo $data | jq -r .data.memory) CPUs: $(echo $data | jq -r .data.cpus) Restart policy: $(echo $data | jq -r .data.restartPolicy.Name) Restarts: $(echo $data | jq -r .data.restarts) State: $(echo $data | jq -r .data.state.Status) Pid: $(echo $data | jq -r .data.state.Pid) Started at: $(echo $data | jq -r .data.state.StartedAt) " } command_stats() { data=$(call_api GET stats) printf " Raw: $(echo $data | jq -r .data.memory.raw) Percentage: $(echo $data | jq -r .data.memory.percent)% CPU: $(echo $data | jq -r .data.cpu)% " } command_time() { call_api GET time | jq -r .expireDate } command_rootpass() { data=$(call_api GET rootpass) echo "Your new root password is: $(echo $data | jq -r .newRootPass)" } command_key-time() { call_api GET key-time | jq -r .keyexpireString } command_exec() { while test $# -gt 0; do case $1 in --user|-u) user=$2; shift ;; --pwd|-p) pwd=$2; shift ;; --cmd|-c) cmd=$2; shift ;; esac shift done user=${user:-"root"} pwd=${pwd:-"/"} if ! test $user == "root"; then cmd="runuser -u $user -- $cmd" fi call_api POST exec "{\"pwd\":\"$pwd\",\"cmd\":\"$cmd\"}" | jq -r .stdout } command_notify() { call_api POST notify "{\"message\":\"$2\"}" | jq -r .message } # Command handler if [ $1 ]; then command_$1 "$@" else print_help fi