128 lines
2.7 KiB
Bash
Executable File
128 lines
2.7 KiB
Bash
Executable File
#!/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 <message> - 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
|