xpra icon
Bug tracker and wiki

This bug tracker and wiki are being discontinued
please use https://github.com/Xpra-org/xpra instead.


Ticket #2989: start_pod.sh

File start_pod.sh, 2.8 KB (added by louis-mulder, 4 months ago)

Bash script to startup a pod or get the ip-info

Line 
1#!/bin/bash
2# Louis Mulder
3#
4# Startup a pod or get information of a running pod
5#
6XPRA_ADMIN_USER=${XPRA_ADMIN_USER:-xpra} ; export XPRA_ADMIN_USER
7#
8# ---- Don't change below if you not know what you are doing ------
9#
10XPRA_TOPDIR_INT=${XPRA_TOPDIR_INT:-/srv}
11POD_FROM_NAME=`hostname -s`
12POD_FROM_NAMESPACE=${POD_FROM_NAMESPACE:-"ingress-${NAMESPACE}"}
13#
14export XPRA_TOPDIR_INT POD_FROM_NAMESPACE
15
16case "${XPRA_ARGV}" in
17  #(
18   *info* ) exit 0
19            # Prevent to startup a Pod.
20  ;;
21  #(
22   *start*) exit 1
23  ;;
24esac
25
26#
27
28USERNAME=${1}
29XPRA_POD_DISPLAY=${2}
30shift 2
31XPRA_ARGV="${*}"
32
33export USERNAME XPRA_POD_DISPLAY
34
35case "${XPRA_ARGV}" in
36  #(
37   *info* )
38            IFS=':'
39            set -- `getent passwd ${USERNAME} | sed -e 's/\*/NA/g'`
40            exec echo ${1}\|NA\|${3}\|${4}\|tcp:0.0.0.0:443\|\|\|
41            # Prevent to startup a Pod.
42  ;;
43  #(
44   *start*) echo
45            exit 1
46  ;;
47esac
48
49# only request launcher/attach or http are allowed
50
51   eval `echo POD_FROM_IPS=\"\`ip a | expand |\
52               sed -e '/.*[Ii][Nn][Ee][Tt].*[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*/!d'\
53                   -e 's/\(.*[Ii][Nn][Ee][Tt] \)\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)\(\/.*\)/\2/'\
54                   -e '/127.*$/d'\`\"
55
56         for i in ${POD_FROM_IPS}
57         do
58            echo POD_FROM=\`kubectl get -n ${POD_FROM_NAMESPACE} --output json  pods |\
59            jq '.items[] | select(.status.podIP=="'${i}'")' | jq .metadata.name | sort -u\`
60         done`
61
62   export SESSION_TYPE POD_FROM_NAMESPACE POD_FROM_IPS POD_FROM_NAME
63
64   XPRA_SESSION=`IFS='-'
65                 set --  ${XPRA_POD_DISPLAY} 
66                 UN=\`getent passwd ${1} | sed 's/:.*//'\`
67                 if [ "${UN}" = '' ]
68                 then
69                     echo "${XPRA_POD_DISPLAY}" | sed -e 's/-*[MmNn][Hh][Dd]-*//'
70                 else
71                     echo "${XPRA_POD_DISPLAY}" | sed -e '{\
72                                   s/'"${UN}"'//         
73                                   s/-*[MmNn][Hh][Dd]-*//
74                         }'
75                 fi`
76
77   GRP_LIST=`id ${USERNAME} | sed -e '{
78                 s/[\ \t]\+//g
79                 s/[Uu][Ii][Dd]=[0-9][0-9]*(//
80                 s/[Gg][Ii][Dd]=[0-9][0-9]*(//
81                 s/[Gg][Rr][Oo][Uu][Pp][Ss]=[0-9][0-9]*(//
82                 s/[,]*[0-9][0-9]*(//g
83                 s/'"${USERNAME}"')//g
84                 s/)/\n/g
85                 }' | sort -u`
86
87
88   USERNAME=${USERNAME:-`id -u`}
89
90   for subdir in ${USERNAME} ${GRP_LIST} default
91    do
92      if [ -x ${XPRA_TOPDIR_INT}/session_types/${subdir}/xpra_startup_${XPRA_SESSION}.sh ]
93       then
94        exec ${XPRA_TOPDIR_INT}/session_types/start_or_get_pod.sh ${subdir}/${XPRA_SESSION}
95      fi
96    done
97
98    (
99     echo "Script ${XPRA_TOPDIR_INT}/session_types/[XXX]/${XPRA_SESSION} not found or not executable by user ${USERNAME}"
100     echo "XXX subdirs seen in container/pod : ${USERNAME} ${GRP_LIST} or default"
101    ) 1>&2
102exit 4