diff --git a/ublinux/rc.preinit.d/30-network-hostname b/ublinux/rc.preinit.d/30-network-hostname new file mode 100755 index 0000000..5b86c69 --- /dev/null +++ b/ublinux/rc.preinit.d/30-network-hostname @@ -0,0 +1,78 @@ +#!/bin/bash +# +# Initial script for Live operating system +# This script are launching before starting init from linux-live script. +# Current dir allways must be set to root (/) +# All system path must be relative, except initrd dirs + +ENABLED=yes +[[ ${ENABLED} != yes ]] && exit 0 +DEBUGMODE=no + +PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin + +unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=. + +SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +debug_mode "$0" "$@" + +SYSCONF="${ROOTFS}/${SYSCONF}" +SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null + +exec_hostname(){ + local PARAM="$@" + [[ -n ${PARAM} ]] && eval "${PARAM%%=*}='${PARAM#*=}'" + SET_HOSTNAME="${HOSTNAME}" + [[ -z ${SET_HOSTNAME} ]] && SET_HOSTNAME=ublinux-live + tail -c1 -- hosts | grep -qx $'\n' || echo >> ${ROOTFS}/etc/hosts + HOSTS_1="127.0.0.1 sb-ssl.l.google.com safebrowsing.clients.google.com safebrowsing.cache.l.google.com" + grep -q "^\s*${HOSTS_1}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_1}" >> ${ROOTFS}/etc/hosts + HOSTS_2="127.0.0.1 ${SET_HOSTNAME%%.*}" + grep -q "^\s*${HOSTS_2}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_2}" >> ${ROOTFS}/etc/hosts + echo "${SET_HOSTNAME}" > ${ROOTFS}/etc/hostname + [[ ${SET_HOSTNAME} != ${SET_HOSTNAME#*.} ]] && DOMAIN="${SET_HOSTNAME#*.}" + if [[ ${DOMAIN} != "" ]]; then + HOSTNAME="${SET_HOSTNAME%%.*}.${DOMAIN}" + HOSTS_3="127.0.0.1 ${SET_HOSTNAME}" + grep -q "^\s*${HOSTS_3}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_3}" >> ${ROOTFS}/etc/hosts + ## Указать доменных пользователей AccountsService, что-бы были видны для выбора логина в DM + ls -d ${ROOTFS}/home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri touch ${ROOTFS}/var/lib/AccountsService/users/{} + ## Домен для сервера dhcpd + sed s/"option domain-name .*"/"option domain-name \"${DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf + sed s/"option nis-domain .*"/"option nis-domain \"${DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf + ## Имя хоста записать в конфиг с постфиксом домена + sed /^HOSTNAME=/d -i ${ROOTFS}/etc/ublinux/config + echo "HOSTNAME=${SET_HOSTNAME}" >> ${ROOTFS}/etc/ublinux/config + fi +} + +exec_hostname_live(){ + [[ -z ${ROOTFS} ]] || return 0 + local PARAM="$@" + [[ -n ${PARAM} ]] && eval "${PARAM%%=*}='${PARAM#*=}'" + SET_HOSTNAME="${HOSTNAME}" + [[ -z ${SET_HOSTNAME} ]] && SET_HOSTNAME=ublinux-live + [[ ${SET_HOSTNAME} != ${SET_HOSTNAME#*.} ]] && DOMAIN="${SET_HOSTNAME#*.}" + [[ ${DOMAIN} != "" ]] && ubconfig -q set network DOMAIN="${DOMAIN}" + hostnamectl set-hostname ${SET_HOSTNAME} + ## Если меняется имя хоста в запущенных X, то новое имя добавляем в xauth + who | grep "(:[0-9.]*)$" | cut -d' ' -f1 | xargs -ri su {} -c "xauth list | sed 's|^.*/|su {} -c \\\\\"xauth add ${SET_HOSTNAME}/|;s|$|\\\\\"|'" | xargs -ri sh -c '{}' +} + +################ +##### MAIN ##### +################ + + if [[ -z $@ || $1 == set ]]; then + shift + KERNEL_HOSTNAME=$(cmdline_value hostname) + [[ ${KERNEL_HOSTNAME} == "" ]] || HOSTNAME=${KERNEL_HOSTNAME} + exec_hostname $@ + exec_hostname_live $@ + elif [[ $1 == remove ]]; then + shift + exec_hostname $@ + exec_hostname_live $@ + fi diff --git a/ublinux/rc.preinit.d/30-network b/ublinux/rc.preinit.d/32-network similarity index 69% rename from ublinux/rc.preinit.d/30-network rename to ublinux/rc.preinit.d/32-network index 8b78eb1..4fe7849 100755 --- a/ublinux/rc.preinit.d/30-network +++ b/ublinux/rc.preinit.d/32-network @@ -23,22 +23,6 @@ SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null - echo "127.0.0.1 sb-ssl.l.google.com safebrowsing.clients.google.com safebrowsing.cache.l.google.com" >> etc/hosts - grep -q "127\.0\.0\.1\s{1,}${HOSTNAME%%.*}\s*$" etc/hosts || echo "127.0.0.1 ${HOSTNAME%%.*}" >> etc/hosts - if [[ ${DOMAIN} != "" ]]; then - HOSTNAME="${HOSTNAME%%.*}.${DOMAIN}" - grep -q "127\.0\.0\.1\s{1,}${HOSTNAME}\s*$" etc/hosts || echo "127.0.0.1 ${HOSTNAME}" >> etc/hosts - ## Указать доменных пользователей AccountsService, что-бы были видны для выбора логина в DM - ls -d home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri touch var/lib/AccountsService/users/{} - ## Домен для сервера dhcpd - sed -i s/"option domain-name .*"/"option domain-name \"${DOMAIN}\";"/g etc/dhcpd.conf - sed -i s/"option nis-domain .*"/"option nis-domain \"${DOMAIN}\";"/g etc/dhcpd.conf - ## Имя хоста записать в конфиг с постфиксом домена - sed -i /^HOSTNAME=/d etc/ublinux/config - echo "HOSTNAME=${HOSTNAME}" >> etc/ublinux/config - fi - echo "${HOSTNAME}" > etc/hostname - #if [ "$UBLINUXSERVER" != "" ] ;then # sed -i s/.*ublinux-server.*/"$UBLINUXSERVER UBLinux-Server"/ etc/hosts diff --git a/ublinux/rc.preinit.d/32-iptables b/ublinux/rc.preinit.d/35-iptables similarity index 100% rename from ublinux/rc.preinit.d/32-iptables rename to ublinux/rc.preinit.d/35-iptables diff --git a/ublinux/rc.preinit.d/33-ufw b/ublinux/rc.preinit.d/36-ufw similarity index 100% rename from ublinux/rc.preinit.d/33-ufw rename to ublinux/rc.preinit.d/36-ufw