From 852d9dc8c42c953c665793e329dd89ab3a4cffd2 Mon Sep 17 00:00:00 2001 From: asmeron Date: Mon, 20 Oct 2025 01:48:26 +0600 Subject: [PATCH] Fix 80-server-storage --- ublinux/rc.desktop/all/bookmarks | 39 +++++++++++++++++--------- ublinux/rc.preinit.d/80-server-storage | 18 ++++++------ 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/ublinux/rc.desktop/all/bookmarks b/ublinux/rc.desktop/all/bookmarks index 15ba05f..7c5026f 100755 --- a/ublinux/rc.desktop/all/bookmarks +++ b/ublinux/rc.desktop/all/bookmarks @@ -27,18 +27,17 @@ add_bookmarks(){ done echo "${encoded_string}" } - BOOKMARKS_PATH="${HOME}/.config/gtk-3.0/bookmarks" if [[ -f ${HOME}/.config/user-dirs.dirs ]]; then source "${HOME}/.config/user-dirs.dirs" else - XDG_DESKTOP_DIR=$(xdg-user-dir DESKTOP 2>/dev/null) - XDG_DOWNLOAD_DIR=$(xdg-user-dir DOWNLOAD 2>/dev/null) - XDG_TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2>/dev/null) - XDG_PUBLICSHARE_DIR=$(xdg-user-dir PUBLICSHARE 2>/dev/null) - XDG_DOCUMENTS_DIR=$(xdg-user-dir DOCUMENTS 2>/dev/null) - XDG_MUSIC_DIR=$(xdg-user-dir MUSIC 2>/dev/null) - XDG_PICTURES_DIR=$(xdg-user-dir PICTURES 2>/dev/null) - XDG_VIDEOS_DIR=$(xdg-user-dir VIDEOS 2>/dev/null) + local XDG_DESKTOP_DIR=$(xdg-user-dir DESKTOP 2>/dev/null) + local XDG_DOWNLOAD_DIR=$(xdg-user-dir DOWNLOAD 2>/dev/null) + local XDG_TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2>/dev/null) + local XDG_PUBLICSHARE_DIR=$(xdg-user-dir PUBLICSHARE 2>/dev/null) + local XDG_DOCUMENTS_DIR=$(xdg-user-dir DOCUMENTS 2>/dev/null) + local XDG_MUSIC_DIR=$(xdg-user-dir MUSIC 2>/dev/null) + local XDG_PICTURES_DIR=$(xdg-user-dir PICTURES 2>/dev/null) + local XDG_VIDEOS_DIR=$(xdg-user-dir VIDEOS 2>/dev/null) fi # Если не получены каталоги, то выйти if [[ -n ${XDG_DESKTOP_DIR} || -n ${XDG_DOWNLOAD_DIR} || -n ${XDG_TEMPLATES_DIR} || -n ${XDG_PUBLICSHARE_DIR} \ @@ -47,17 +46,31 @@ add_bookmarks(){ else return 0 fi - [[ -e ${HOME}/.config/gtk-3.0/bookmarks ]] || touch ${BOOKMARKS_PATH} + local BOOKMARKS_PATH="${HOME}/.config/gtk-3.0/bookmarks" + local BOOKMARKS_DATA= + local BOOKMARKS_DATA_NEW= + if [[ -e ${BOOKMARKS_PATH} ]]; then + BOOKMARKS_DATA="$(< ${BOOKMARKS_PATH})" + # Если последний символ содержит переход на новую строку и конец файла, инчае вставляем $'\n' + [[ -z $(tail -c 1 "${BOOKMARKS_PATH}") ]] || BOOKMARKS_DATA_NEW+=$'\n' + # Через условие не сделать, в переменой обрезает все последние \n и последний является $ концом + #[[ "${BOOKMARKS_DATA}" =~ $'\n'$ ]] && BOOKMARKS_DATA_NEW+="--"$'\n' + fi # Исключаем "${XDG_DESKTOP_DIR}" т.к. уже присутствует - for SELECT_XDG_DIR in "${XDG_DOWNLOAD_DIR}" "${XDG_TEMPLATES_DIR}" "${XDG_PUBLICSHARE_DIR}" "${XDG_DOCUMENTS_DIR}" "${XDG_MUSIC_DIR}" "${XDG_PICTURES_DIR}" "${XDG_VIDEOS_DIR}"; do + for SELECT_XDG_DIR in "${XDG_DOWNLOAD_DIR}" "${XDG_DOCUMENTS_DIR}" "${XDG_MUSIC_DIR}" "${XDG_PICTURES_DIR}" "${XDG_VIDEOS_DIR}" "${XDG_TEMPLATES_DIR}" "${XDG_PUBLICSHARE_DIR}"; do [[ ${SELECT_XDG_DIR} == ${HOME} ]] && continue URLENCODE_XDG_DIR="file://$(urlencode "${SELECT_XDG_DIR}")" - grep -Eq "^${URLENCODE_XDG_DIR}$" ${BOOKMARKS_PATH} || echo "${URLENCODE_XDG_DIR}" >> ${BOOKMARKS_PATH} + if [[ ${BOOKMARKS_DATA} == "" ]]; then + BOOKMARKS_DATA_NEW+="${URLENCODE_XDG_DIR}"$'\n' + elif [[ ! ${BOOKMARKS_DATA} =~ (^|$'\n')${URLENCODE_XDG_DIR}($'\n'|$) ]]; then + BOOKMARKS_DATA_NEW+="${URLENCODE_XDG_DIR}"$'\n' + fi done + [[ -n ${BOOKMARKS_DATA_NEW} ]] && echo -n "${BOOKMARKS_DATA_NEW}" >> "${BOOKMARKS_PATH}" # Создадим ссылку символическую на публичный общий каталог, для быстрого общего доступа [[ -d ${XDG_PUBLICSHARE_DIR} && -d /home/usershares && ! -L ${XDG_PUBLICSHARE_DIR}/usershares ]] && ln -s /home/usershares ${XDG_PUBLICSHARE_DIR}/usershares - true + return 0 } ################ diff --git a/ublinux/rc.preinit.d/80-server-storage b/ublinux/rc.preinit.d/80-server-storage index e7b21c2..e80f5d3 100755 --- a/ublinux/rc.preinit.d/80-server-storage +++ b/ublinux/rc.preinit.d/80-server-storage @@ -39,7 +39,7 @@ exec_storage_containers_path(){ fi if ! grep -qi "^\s*graphroot = \"${STORAGE_CONTAINERS_PATH}\"" ${ROOTFS}/${FILE_STORAGE_CONTAINERS_CONF}; then if grep -qi "^\s*graphroot" ${ROOTFS}/${FILE_STORAGE_CONTAINERS_CONF}; then - sed -r "s:^\s*(graphroot).*:\1 = \"${STORAGE_CONTAINERS_PATH}\":g" -i ${ROOTFS}/${FILE_STORAGE_CONTAINERS_CONF} + sed -r "s|^(\s*graphroot).*|\1\ = \"${STORAGE_CONTAINERS_PATH}\"|g" -i ${ROOTFS}/${FILE_STORAGE_CONTAINERS_CONF} elif grep -qi "^\s*#graphroot" ${ROOTFS}/${FILE_STORAGE_CONTAINERS_CONF}; then sed "/^\s*#graphroot\s*/agraphroot = \"${STORAGE_CONTAINERS_PATH}\"" -i ${ROOTFS}/${FILE_STORAGE_CONTAINERS_CONF} else @@ -51,7 +51,7 @@ exec_storage_containers_path(){ exec_storage_docker_path(){ STORAGE_DOCKER_NAME="storage.docker" - STORAGE_DOCKER_PATH_DEFAULT="/memory/layer-base/1/${STORAGE_CONTAINERS_NAME}" + STORAGE_DOCKER_PATH_DEFAULT="/memory/layer-base/1/${STORAGE_DOCKER_NAME}" #STORAGE_DOCKER_PATH_SYSTEM="/var/lib/docker" FILE_DOCKER_CONF="/etc/docker/daemon.json" FILE_DOCKER_MODPROBE="/etc/modprobe.d/ubconfig-docker.conf" @@ -65,20 +65,20 @@ exec_storage_docker_path(){ fi [[ -d ${FILE_DOCKER_CONF%/*} ]] || install -dm0755 ${FILE_DOCKER_CONF%/*} if [[ -f ${FILE_DOCKER_CONF} ]]; then - # Переделать, содержимое в переменную и манипуляции в переменной, в конце зпись переменной в файл - if ! grep -qi "^\s+\"data-root\": \"${STORAGE_DOCKER_PATH}\"" ${ROOTFS}/${FILE_DOCKER_CONF}; then - if grep -qi "^\s+\"data-root\":" ${ROOTFS}/${FILE_DOCKER_CONF}; then - sed -r "s|^\s+(\"data-root\":)|\1 \"${STORAGE_DOCKER_PATH}\"|" -i ${ROOTFS}/${FILE_DOCKER_CONF} + # Изменить содержимое переменной data-root + if ! grep -qi "^\s*\"data-root\": \"${STORAGE_DOCKER_PATH}\"" ${ROOTFS}/${FILE_DOCKER_CONF}; then + if grep -qi "^\s*\"data-root\":" ${ROOTFS}/${FILE_DOCKER_CONF}; then + sed -r "s|^(\s*\"data-root\":).*|\1\ \"${STORAGE_DOCKER_PATH}\"|" -i ${ROOTFS}/${FILE_DOCKER_CONF} elif grep -qi "^\s*#\s*\"data-root\":" ${ROOTFS}/${FILE_DOCKER_CONF}; then - sed "/^\s*#\s*\"data-root\":/a \"data-root\": \"${STORAGE_DOCKER_PATH}\"" -i ${ROOTFS}/${FILE_DOCKER_CONF} + sed "/^\s*#\s*\"data-root\":/a\ \"data-root\": \"${STORAGE_DOCKER_PATH}\"" -i ${ROOTFS}/${FILE_DOCKER_CONF} else - sed "/^\s*{\s*/a \"data-root\": \"${STORAGE_DOCKER_PATH}\"," -i ${ROOTFS}/${FILE_DOCKER_CONF} + sed "/^\s*{\s*/a\ \"data-root\": \"${STORAGE_DOCKER_PATH}\"," -i ${ROOTFS}/${FILE_DOCKER_CONF} fi fi else cat << EOF > ${FILE_DOCKER_CONF} { - "data-root": "${STORAGE_DOCKER_PATH}" + "data-root": "${STORAGE_DOCKER_PATH}" } EOF fi