]> git.proxmox.com Git - pve-manager.git/blob - spice-example-sh
ui: user edit: protect user's TFA settings again
[pve-manager.git] / spice-example-sh
1 #!/bin/bash
2
3 set -e
4
5 # needs pve-manager >= 3.1-44
6
7 usage() {
8 echo "Usage: $0 [-u <string>] [-p <string>] vmid [node [proxy]]"
9 echo
10 echo "-u username. Default root@pam"
11 echo "-p password. Default ''"
12 echo
13 echo "vmid: id for VM"
14 echo "node: Proxmox cluster node name"
15 echo "proxy: DNS or IP (use <node> as default)"
16 exit 1
17 }
18
19 PASSWORD=""
20 USERNAME=""
21
22 while getopts ":u:p:" o; do
23 case "${o}" in
24 u)
25 USERNAME="${OPTARG}"
26 ;;
27 p)
28 PASSWORD="${OPTARG}"
29 ;;
30 *)
31 usage
32 ;;
33 esac
34 done
35
36 shift $((OPTIND-1))
37
38 if [[ -z "$PASSWORD" ]]; then
39 PASSWORD=""
40 fi
41 if [[ -z "$USERNAME" ]]; then
42 USERNAME='root@pam'
43 fi
44
45 DEFAULTHOST="$(hostname -f)"
46
47 # select VM
48 [[ -z "$1" ]] && usage
49 VMID="$1"
50
51 #[[ -z "$2" ]] && usage
52 NODE="${2:-$DEFAULTHOST}"
53
54 if [[ -z "$3" ]]; then
55 PROXY="$NODE"
56 else
57 PROXY="$3"
58 fi
59
60 NODE="${NODE%%\.*}"
61
62 DATA="$(curl -f -s -S -k --data-urlencode "username=$USERNAME" --data-urlencode "password=$PASSWORD" "https://$PROXY:8006/api2/json/access/ticket")"
63
64 echo "AUTH OK"
65
66 TICKET="${DATA//\"/}"
67 TICKET="${TICKET##*ticket:}"
68 TICKET="${TICKET%%,*}"
69 TICKET="${TICKET%%\}*}"
70
71 CSRF="${DATA//\"/}"
72 CSRF="${CSRF##*CSRFPreventionToken:}"
73 CSRF="${CSRF%%,*}"
74 CSRF="${CSRF%%\}*}"
75
76 curl -f -s -S -k -b "PVEAuthCookie=$TICKET" -H "CSRFPreventionToken: $CSRF" "https://$PROXY:8006/api2/spiceconfig/nodes/$NODE/qemu/$VMID/spiceproxy" -d "proxy=$PROXY" > spiceproxy
77
78 exec remote-viewer spiceproxy