diff options
author | JulioJu | 2016-05-26 11:33:57 +0200 |
---|---|---|
committer | JulioJu | 2016-05-26 11:33:57 +0200 |
commit | 1b06bcfb2fb49c2da5a5dd08f4a65a369233381e (patch) | |
tree | ca9dafd68dfc4191772a73fc91ee829846e47b80 /marionnet.install | |
download | aur-1b06bcfb2fb49c2da5a5dd08f4a65a369233381e.tar.gz |
Initial commit
Diffstat (limited to 'marionnet.install')
-rw-r--r-- | marionnet.install | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/marionnet.install b/marionnet.install new file mode 100644 index 000000000000..dce302d37894 --- /dev/null +++ b/marionnet.install @@ -0,0 +1,182 @@ + +# Adapted fromĀ : +# http://bazaar.launchpad.net/~marionnet-drivers/marionnet/trunk/view/head:/useful-scripts/marionnet_from_scratch +# (LGPL) + +pre_install() { + # ============================================================= + # Install marionnet_kernels and filesystems + # ============================================================= + echo ">>> Warning! Download marionnet kernels and filesystems (Linux + distributions Debian Lenny, Mandriva, Pinocchio, etc.)" + echo -e ">>> Warning! this operation can take many and many hours! \n\n\n" + wget http://www.marionnet.org/downloads/marionnet_from_scratch/marionnet_from_scratch + echo -e "\n\n\n>>>\`./marionnet_from_scratch --download-only -m trunk\`" + chmod +x ./marionnet_from_scratch + ./marionnet_from_scratch --download-only -m trunk + +} + +post_install () { + + +# Here $SUDO_OR_NOTHING is null +tmpfile=$(mktemp /tmp/marionnetInstallTmpXXXXXXX) + +# ============================================================= +# Adjust X -nolisten tcp +# ============================================================= + +function remove_nolisten_assignment_from { +# global SUDO_OR_NOTHING +local i=$1 +$SUDO_OR_NOTHING sed -i -e 's/\(^[a-ZA-Z0-9]*[=].*[-]nolisten tcp.*\)$/#\1\n\1/g' $i +$SUDO_OR_NOTHING sed -i -e 's/\(^[a-ZA-Z0-9]*[=].*\)[-]nolisten tcp\(.*\)$/\1 \2/g' $i +} + +function remove_nolisten_X_or_startx_actuals_from { +# global SUDO_OR_NOTHING +local i=$1 +$SUDO_OR_NOTHING sed -i -e 's/\(^[a-ZA-Z0-9/: ]*X.*\)[-]nolisten tcp\(.*\)$/\1\2/g' $i +$SUDO_OR_NOTHING sed -i -e 's/\(^[a-ZA-Z0-9/: ]*startx.*\)[-]nolisten tcp\(.*\)$/\1\2/g' $i +} + +function remove_DisallowTCP_from { +# global SUDO_OR_NOTHING +local i=$1 +$SUDO_OR_NOTHING sed -i -e 's/\(^DisallowTCP=true.*\)$/#\1\nDisallowTCP=false/g' $i +} + +# Sections in file have the form "[security]" +function ensure_section_and_binding { +[[ $# -ge 3 ]] || return 1 +local SECTION=$1 # ex: security +local VARIABLE=$2 # ex: Enable +local VALUE=$3 # ex: true +local AWK_PROGRAM +shift 3 +AWK_PROGRAM=" +BEGIN {x=0} +/\[$SECTION\]/ {x=1;print;next} +(x==1) && /$VARIABLE=.*/ {print \"$VARIABLE=$VALUE\"; x=2; next} +(x==1) && /\[.*\]/ {print \"$VARIABLE=$VALUE\n\"; print; x=2; next} +/\[.*\]/ {print;next} +{print} + END {if (x==0) print \"[$SECTION]\"; if (x==0 || x==1) print \"$VARIABLE=$VALUE\n\";}" + case $# in + 0) awk "$AWK_PROGRAM" ;; + *) + local i + local TMPFILE=$(tmpfile) + for i in "$@"; do + awk 0<"$i" 1>$TMPFILE "$AWK_PROGRAM" + cat $TMPFILE 1>"$i" + done + rm $TMPFILE + ;; + esac +} + +# This is needed, for instance, for ubuntu 10.10 +function ensure_DisallowTCP_false_to_gdm_custom_dot_conf { +# global SUDO_OR_NOTHING CHANGED_FILES +local custom=${1:-/etc/gdm/custom.conf} +local TMPFILE=$(tmpfile) +cp $custom $TMPFILE +ensure_section_and_binding "security" "DisallowTCP" "false" $TMPFILE +ensure_section_and_binding "xdmcp" "Enable" "true" $TMPFILE +if ! diff -q $custom $TMPFILE >/dev/null; then + CHANGED_FILES+="$custom " + $SUDO_OR_NOTHING bash -c "cat $TMPFILE >$custom" +fi +} + +# This is needed, for instance, for ubuntu 12.04 +function ensure_xserver_allow_tcp_in_lightdm_dot_conf { +# global SUDO_OR_NOTHING CHANGED_FILES +local custom=${1:-/etc/lightdm/lightdm.conf} +local TMPFILE=$(tmpfile) +cp $custom $TMPFILE +ensure_section_and_binding "SeatDefaults" "xserver-allow-tcp" "true" $TMPFILE +if ! diff -q $custom $TMPFILE >/dev/null; then + CHANGED_FILES+="$custom " + $SUDO_OR_NOTHING bash -c "cat $TMPFILE >$custom" +fi +} + + +function apply_all_filters { +# global CHANGED_FILES +local i=$1 +cat $i > $BACKUP +{ remove_nolisten_assignment_from $i; + remove_DisallowTCP_from $i; + remove_nolisten_X_or_startx_actuals_from $i; +} || true +diff -q $BACKUP $i >/dev/null || { +CHANGED_FILES+="$i " + } +} + +function adjust_X_display_manager { +# global SUDO_OR_NOTHING CHANGED_FILES +local BACKUP=$(tmpfile) +DIRS=$($SUDO_OR_NOTHING find /etc/ -type d -name "?dm") +if [[ -d /etc/X11/xinit ]]; then DIRS+=" /etc/X11/xinit/"; fi +FILES=$([[ -n $DIRS ]] && $SUDO_OR_NOTHING find $DIRS -name "*rc" -o -name "*.conf") +FILES=$(for i in $FILES; do grep -l "^[a-zA-Z0-9/_\-= ]*[-]nolisten tcp" $i; done) +for i in $FILES; do apply_all_filters $i; done +rm -f $BACKUP +# A special case: gdm/gdm3 : +if [[ -d /etc/gdm ]]; then + $SUDO_OR_NOTHING touch /etc/gdm/custom.conf + ensure_DisallowTCP_false_to_gdm_custom_dot_conf +elif [[ -d /etc/gdm? ]]; then + $SUDO_OR_NOTHING touch /etc/gdm?/custom.conf /etc/gdm?/daemon.conf + ensure_DisallowTCP_false_to_gdm_custom_dot_conf /etc/gdm?/custom.conf + ensure_DisallowTCP_false_to_gdm_custom_dot_conf /etc/gdm?/daemon.conf +fi +# Another special case: lightdm +if [[ -d /etc/lightdm ]]; then + $SUDO_OR_NOTHING touch /etc/lightdm/lightdm.conf + ensure_xserver_allow_tcp_in_lightdm_dot_conf +fi +[[ -n $CHANGED_FILES ]] +} + +if ps -A -o cmd | grep -q '^[a-zA-Z0-9/]*X.*[-]nolisten tcp'; then + echo '---' + echo "* Warning: your X server has been launched with the option '-nolisten tcp'" + echo " => This option should be removed from your X display manager configuration." + echo -n " Shall I try to fix it ([y]/n)? " + read z + if [[ $z != n && $z != N ]]; then + if adjust_X_display_manager; then + echo " >>> READ THIS LINES READ THIS LINES READ THIS LINES \ + READ THIS LINES READ THIS LINES READ THIS LINES READ THIS LINES \ + WARNIN READ THIS LINES READ THIS LINES WARNIN READ THIS LINES \ + READ THIS LINES WARNIN READ THIS LINES \ + READ THIS LINES WARNIN READ THIS LINES READ THIS LINES WARNIN \ + READ THIS LINES READ THIS LINES WARNIN READ THIS LINES \ + READ THIS LINES WARNIN READ THIS LINES \ + READ THIS LINES WARNIN READ THIS LINES READ THIS LINES" + echo " Ok. File(s) changed: $CHANGED_FILES" + echo " You must restart your X display manager for the changes to take effect." + else + echo " >>> READ THIS LINES READ THIS LINES READ THIS LINES \ + READ THIS LINES READ THIS LINES READ THIS LINES READ THIS LINES \ + WARNIN READ THIS LINES READ THIS LINES WARNIN READ THIS LINES \ + READ THIS LINES WARNIN READ THIS LINES \ + READ THIS LINES WARNIN READ THIS LINES READ THIS LINES WARNIN \ + READ THIS LINES READ THIS LINES WARNIN READ THIS LINES \ + READ THIS LINES WARNIN READ THIS LINES \ + READ THIS LINES WARNIN READ THIS LINES READ THIS LINES" + echo " Sorry, no change performed: you must edit your configuration manually." + fi + fi +fi + +} + + +# vim: ft=sh |