This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch feature/x2goserver-xsettings in repository x2goserver. commit d777c252361dc417078b8dd7fd9f158a2d4db0db Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 24 23:12:07 2014 +0100 xsettings: split up common functionality (variables, functions) into extensions/base/x2goserver-xsettings-common.sh and reference this file in hooks. --- .../x2goserver-xsettings-common.sh} | 13 +-- .../post-resume.d/900_xsettings-xsettingsd-refresh | 19 +--- .../post-start.d/900_xsettings-xsettingsd-startup | 114 +------------------- .../000_xsettings-xsettingsd-shutdown | 4 +- 4 files changed, 8 insertions(+), 142 deletions(-) diff --git a/x2goserver-xsettings/lib/x2go/extensions/post-start.d/900_xsettings-xsettingsd-startup b/x2goserver-xsettings/lib/x2go/extensions/base/x2goserver-xsettings-common.sh similarity index 89% copy from x2goserver-xsettings/lib/x2go/extensions/post-start.d/900_xsettings-xsettingsd-startup copy to x2goserver-xsettings/lib/x2go/extensions/base/x2goserver-xsettings-common.sh index eb8885a..a65102d 100644 --- a/x2goserver-xsettings/lib/x2go/extensions/post-start.d/900_xsettings-xsettingsd-startup +++ b/x2goserver-xsettings/lib/x2go/extensions/base/x2goserver-xsettings-common.sh @@ -115,20 +115,13 @@ merge() { done < "${BASE_FILE}" } -export X2GO_SESSION="${1}" - -X2GO_SESSIONINFO="$(x2golistsessions | grep "${X2GO_SESSION}")" -X2GO_SESSION_DIR="${HOME}/.x2go/C-${X2GO_SESSION}/" -X2GO_CONF_DIR="$(x2gopath etc)" -XSETTINGSD_PID="${X2GO_SESSION_DIR}/xsettingsd.pid" +SETTINGSD_PID="${X2GO_SESSION_DIR}/xsettingsd.pid" XSETTINGSD_LOG="${X2GO_SESSION_DIR}/xsettingsd.log" XSETTINGSD_REMOTE_CONF="${X2GO_SESSION_DIR}/xsettings-remote" XSETTINGSD_DEFAULT_CONF="${X2GO_CONF_DIR}/xsettings" XSETTINGSD_OVERRIDES_CONF="${HOME}/.xsettings-x2go" XSETTINGSD_CONF="${X2GO_CONF_DIR}/xsettings" -export DISPLAY=":$(echo "${X2GO_SESSIONINFO}" | cut -d "|" -f3 | sed -e "s/[^0-9\-]//g")" - XSETTINGSD_BASE_CONF="${XSETTINGSD_DEFAULT_CONF}" [ -r "${XSETTINGSD_REMOTE_CONF}" ] && XSETTINGSD_BASE_CONF="${XSETTINGSD_REMOTE_CONF}" @@ -139,7 +132,3 @@ if [ ! -f "${XSETTINGSD_OVERRIDES_CONF}" ]; then echo "# You may edit this file to fit your needs." echo "# All settings in here will override remote machine or global settings.") > "${XSETTINGSD_OVERRIDES_CONF}" fi - -merge "${XSETTINGSD_BASE_CONF}" "${XSETTINGSD_OVERRIDES_CONF}" "${XSETTINGSD_CONF}" "${X2GO_SESSION_DIR}" - -nohup xsettingsd -c "${XSETTINGSD_CONF}" >"${XSETTINGSD_LOG}" 2>&1 & echo "${!}" > "${XSETTINGSD_PID}" diff --git a/x2goserver-xsettings/lib/x2go/extensions/post-resume.d/900_xsettings-xsettingsd-refresh b/x2goserver-xsettings/lib/x2go/extensions/post-resume.d/900_xsettings-xsettingsd-refresh index 9748f23..e94997e 100644 --- a/x2goserver-xsettings/lib/x2go/extensions/post-resume.d/900_xsettings-xsettingsd-refresh +++ b/x2goserver-xsettings/lib/x2go/extensions/post-resume.d/900_xsettings-xsettingsd-refresh @@ -19,32 +19,17 @@ # # Copyright (C) 2014 Mihai Moldovan <ionic@ionic.de> -. SOMEPLACE/x2goserver-xsettings-common.sh +X2GO_EXTENSIONS_BASE="$(x2gopath libexec)/extensions/base/" +. ${X2GO_EXTENSIONS_BASE}/x2goserver-xsettings-common.sh export X2GO_SESSION="${1}" X2GO_SESSIONINFO="$(x2golistsessions | grep "${X2GO_SESSION}")" X2GO_SESSION_DIR="${HOME}/.x2go/C-${X2GO_SESSION}/" X2GO_CONF_DIR="$(x2gopath etc)" -XSETTINGSD_PID="${X2GO_SESSION_DIR}/xsettingsd.pid" -XSETTINGSD_REMOTE_CONF="${X2GO_SESSION_DIR}/xsettings-remote" -XSETTINGSD_DEFAULT_CONF="${X2GO_CONF_DIR}/xsettings" -XSETTINGSD_OVERRIDES_CONF="${HOME}/.xsettings-x2go" -XSETTINGSD_CONF="${X2GO_CONF_DIR}/xsettings" export DISPLAY=":$(echo "${X2GO_SESSIONINFO}" | cut -d "|" -f3 | sed -e "s/[^0-9\-]//g")" -XSETTINGSD_BASE_CONF="${XSETTINGSD_DEFAULT_CONF}" -[ -r "${XSETTINGSD_REMOTE_CONF}" ] && XSETTINGSD_BASE_CONF="${XSETTINGSD_REMOTE_CONF}" - -# Create a missing XSETTINGSD_OVERRIDES_CONF, if necessary. -if [ ! -f "${XSETTINGSD_OVERRIDES_CONF}" ]; then - (echo "# xsettings overrides file for X2Go." - echo "# Created on $(date "+%Y-%m-%d %T")." - echo "# You may edit this file to fit your needs." - echo "# All settings in here will override remote machine or global settings.") > "${XSETTINGSD_OVERRIDES_CONF}" -fi - merge "${XSETTINGSD_BASE_CONF}" "${XSETTINGSD_OVERRIDES_CONF}" "${XSETTINGSD_CONF}" "${X2GO_SESSION_DIR}" kill -s HUP "${XSETTINGSD_PID}" diff --git a/x2goserver-xsettings/lib/x2go/extensions/post-start.d/900_xsettings-xsettingsd-startup b/x2goserver-xsettings/lib/x2go/extensions/post-start.d/900_xsettings-xsettingsd-startup index eb8885a..b62d26b 100644 --- a/x2goserver-xsettings/lib/x2go/extensions/post-start.d/900_xsettings-xsettingsd-startup +++ b/x2goserver-xsettings/lib/x2go/extensions/post-start.d/900_xsettings-xsettingsd-startup @@ -19,127 +19,17 @@ # # Copyright (C) 2014 Mihai Moldovan <ionic@ionic.de> -# Removes redundant white space and comments. -# Note that in-line comments are supported. -# Comments start with a hash and everything succeeding, as well as the hash character -# itself will be removed. -sanitize_line() { - INPUT="${1}" - - [ -z "${INPUT}" ] && echo "" - - echo "${INPUT}" | sed -e 's/^[[:blank:]]*//' -e 's/#.*//' -} - -# Returns the key. -# Is supposed to be used on sanitized input lines only. -extract_key() { - INPUT="${1}" - - [ -z "${INPUT}" ] && echo "" - - echo "${INPUT}" | sed -e 's/^\([^[:blank]]*\)[[:blank:]].*$/\1/' -} - -# Returns the value. -# Is supposed to be used on sanitized input lines only. -extract_value() { - INPUT="${1}" - - [ -z "${INPUT}" ] && echo "" - - echo "${INPUT}" | sed -e 's/^[^[:blank]]*[[:blank:]][[:blank]]*\([^[:blank:]]*\).*$/\1/' -} - -# Merge a base file with a overrides file and write the result to an out file. -# For keys which are both in the base and overrides file, the overrides file -# takes precedence. -# Keys only specified in one of the files will be copied to the out file. -# Both the base and overrides files MUST exist and be readable. -# The out file MAY exist. The base directory of this file MUST be writeable. -# If the out file does not exist, it will be created. -merge() { - BASE_FILE="${1}" - OVERRIDES_FILE="${2}" - OUT_FILE="${3}" - SESSION_DIR="${4}" - - # Sanitizing input parameters. - # Yes, you CAN specify /dev/null for OVERRIDES_FILE or BASE_FILE. - [ -z "${OVERRIDES_FILE}" -o ! -r "${OVERRIDES_FILE}" ] && return 1 - [ -z "${BASE_FILE}" -o ! -r "${BASE_FILE}" ] && return 1 - [ -z "${OUT_FILE}" ] && return 1 - if [ ! -f "${OUT_FILE}" ]; then - touch "${OUT_FILE}" || return 1 - elif [ ! -w "${OUT_FILE}" ]; then - return 1 - fi - [ -z "${SESSION_DIR}" ] && return 1 - - TMP_KEY="${SESSION_DIR}/xsettings-merge.k" - TMP_KEYVALUE="${SESSION_DIR}/xsettings-merge.kv" - - touch "${TMP_KEY}" || return 1 - - # All checks passed. We have readable input files and a writeable output file. - # Go for launch. - while read line; do - parsed_line="$(sanitize_line "${line}")" - [ -z "${parsed_line}" ] && continue - - key="$(extract_key "${parsed_line}")" - value="$(extract_value "${parsed_line}")" - [ -z "${key}" ] && continue - [ -z "${value}" ] && continue - - echo "${key}" >> "${TMP_KEY}" - echo "${key} ${value}" >> "${OUT_FILE}" - done < "${OVERRIDES_FILE}" - - # Code duplication, but this part is actually specialized. - while read line; do - parsed_line="$(sanitize_line "${line}")" - [ -z "${parsed_line}" ] && continue - - key="$(extract_key "${parsed_line}")" - value="$(extract_value "${parsed_line}")" - [ -z "${key}" ] && continue - [ -z "${value}" ] && continue - - # Filter out keys already defined in the parsed overrides file. - while read overrides_key; do - [ -n "${overrides_key}" ] && [ "${key}" = "${overrides_key}" ] && continue 2 - done < "${TMP_KEY}" - - echo "${key} ${value}" >> "${OUT_FILE}" - done < "${BASE_FILE}" -} +X2GO_EXTENSIONS_BASE="$(x2gopath libexec)/extensions/base/" +. ${X2GO_EXTENSIONS_BASE}/x2goserver-xsettings-common.sh export X2GO_SESSION="${1}" X2GO_SESSIONINFO="$(x2golistsessions | grep "${X2GO_SESSION}")" X2GO_SESSION_DIR="${HOME}/.x2go/C-${X2GO_SESSION}/" X2GO_CONF_DIR="$(x2gopath etc)" -XSETTINGSD_PID="${X2GO_SESSION_DIR}/xsettingsd.pid" -XSETTINGSD_LOG="${X2GO_SESSION_DIR}/xsettingsd.log" -XSETTINGSD_REMOTE_CONF="${X2GO_SESSION_DIR}/xsettings-remote" -XSETTINGSD_DEFAULT_CONF="${X2GO_CONF_DIR}/xsettings" -XSETTINGSD_OVERRIDES_CONF="${HOME}/.xsettings-x2go" -XSETTINGSD_CONF="${X2GO_CONF_DIR}/xsettings" export DISPLAY=":$(echo "${X2GO_SESSIONINFO}" | cut -d "|" -f3 | sed -e "s/[^0-9\-]//g")" -XSETTINGSD_BASE_CONF="${XSETTINGSD_DEFAULT_CONF}" -[ -r "${XSETTINGSD_REMOTE_CONF}" ] && XSETTINGSD_BASE_CONF="${XSETTINGSD_REMOTE_CONF}" - -# Create a missing XSETTINGSD_OVERRIDES_CONF, if necessary. -if [ ! -f "${XSETTINGSD_OVERRIDES_CONF}" ]; then - (echo "# xsettings overrides file for X2Go." - echo "# Created on $(date "+%Y-%m-%d %T")." - echo "# You may edit this file to fit your needs." - echo "# All settings in here will override remote machine or global settings.") > "${XSETTINGSD_OVERRIDES_CONF}" -fi - merge "${XSETTINGSD_BASE_CONF}" "${XSETTINGSD_OVERRIDES_CONF}" "${XSETTINGSD_CONF}" "${X2GO_SESSION_DIR}" nohup xsettingsd -c "${XSETTINGSD_CONF}" >"${XSETTINGSD_LOG}" 2>&1 & echo "${!}" > "${XSETTINGSD_PID}" diff --git a/x2goserver-xsettings/lib/x2go/extensions/pre-terminate.d/000_xsettings-xsettingsd-shutdown b/x2goserver-xsettings/lib/x2go/extensions/pre-terminate.d/000_xsettings-xsettingsd-shutdown index fde8fe6..8789ae1 100644 --- a/x2goserver-xsettings/lib/x2go/extensions/pre-terminate.d/000_xsettings-xsettingsd-shutdown +++ b/x2goserver-xsettings/lib/x2go/extensions/pre-terminate.d/000_xsettings-xsettingsd-shutdown @@ -19,10 +19,12 @@ # # Copyright (C) 2014 Mihai Moldovan <ionic@ionic.de> +X2GO_EXTENSIONS_BASE="$(x2gopath libexec)/extensions/base/" +. ${X2GO_EXTENSIONS_BASE}/x2goserver-xsettings-common.sh + export X2GO_SESSION="${1}" X2GO_SESSIONINFO="$(x2golistsessions | grep "${X2GO_SESSION}")" X2GO_SESSION_DIR="${HOME}/.x2go/C-${X2GO_SESSION}/" -XSETTINGSD_PID="${X2GO_SESSION_DIR}/xsettingsd.pid" kill "$(cat "${XSETTINGSD_PID}")" -- Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git