Add REPOSITORY[]= REPOPUBLIC_NET= REPOPUBLIC_WEB[]=

master v2.79
Dmitry Razumov 2 years ago
parent 04f50bfa58
commit a1ac34e9eb
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -1426,6 +1426,17 @@ ubconfig_exec_system(){
*) NO_FIND_EXCUTE=1 ;; *) NO_FIND_EXCUTE=1 ;;
esac esac
;; ;;
"[${SYSCONF}/update]"|"[update]")
case "${NAME_VAR}" in
REPOSITORY) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_01_repository "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
REPOSITORY\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_01_repository "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
REPOPUBLIC_NET) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_02_repopublic_net "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
REPOPUBLIC_WEB\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_03_repopublic_web "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
REPOPUBLIC_CACHE\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_04_repopublic_cache "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
AUTOUPDATE) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_autoupdate "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;;
*) NO_FIND_EXCUTE=1 ;;
esac
;;
"[${SYSCONF}/boot]"|"[boot]") "[${SYSCONF}/boot]"|"[boot]")
case "${NAME_VAR}" in case "${NAME_VAR}" in
GRUB_TIMEOUT) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/20-grub exec_grub_timeout ;; GRUB_TIMEOUT) ${ROOTFS}/usr/lib/ublinux/rc.halt.pre/20-grub exec_grub_timeout ;;

@ -12,75 +12,287 @@ SOURCE=${SYSCONF}/update; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
debug_mode "$0" "$@" debug_mode "$0" "$@"
## Настройка подключения репозиториев ## Настройка подключения репозиториев
## REPOSITORY[<name_repo>]=disable | <siglevel>:<usage>:<server_path_1>,<server_path_2>,...,<server_path_n> ## REPOSITORY=disable|enable
## <name_repo> # Произвольное имя репозитория. Обязательный ## *disable # Отключить управление списком репозиториев, по умолчанию
## disable # Отключить отдин из репозиториев по умолчанию: core,extra,community,multilib,ublinux,modules ## # Используются репозитории из пакета pacman, по умолчанию: core,extra,community,multilib,modules
## <siglevel> # Уровень проверки подписи репозитория, можно выбрать одну из основных и вторую из дополнительных, разделитель запятая. Не обязательный ## enable # Включить управление списком репозиториев
## # Последовательность имеет значение, т.к. накладываются правила каскадно. По умолчанию: Required,DatabaseOptional ## # Используются системные репозитории core,extra,community,multilib,modules и указанные в параметре REPOSITORY[*]
## Never # Проверка подписи выполняться не будет. Основная ## only # Включить управление списком репозиториев
## PackageNever # Только для пакетов. Дополнительная ## # Используются только репозитории указанные в параметре REPOSITORY[*]
## DatabaseNever # Только для базы данных. Дополнительная ## Порядок указания репозиториев важен
## Optional # Подписи будут проверяться при их наличии, но неподписанные базы данных и пакеты также будут приниматься. Основная ## По умолчанию включены системные репозитории, имена: core,extra,community,multilib,modules
## REPOSITORY[<name_repo>]=<server_path_1>,<server_path_2>,...,<server_path_n>;<siglevel>;<usage>;disable
## <name_repo> # Произвольное имя репозитория. Обязательный
## # Имена системных репозиториев: core,extra,community,multilib,modules
## <server_path_n> # Полный URL-адрес места, где можно найти базу данных, пакеты и подписи (если доступны) для этого репозитория. Обязательный
## # Возможно указать несколько, через запятую (,)
## # Символ $ обязательно экранировать \$
## <file> # Если указан доступный файл, то подключить как дополнительный файл расширения конфигурации (Include = <file>)
## file:// # URL префикс для репозитория в каталоге
## ftp:// # URL префикс для репозитория FTP
## http:// # URL префикс для репозитория HTTP
## https:// # URL префикс для репозитория HTTPS
## <siglevel> # Уровень проверки подписи репозитория, можно выбрать одну из основных и вторую из дополнительных, разделитель запятая. Не обязательный
## # Последовательность имеет значение, т.к. накладываются правила каскадно. По умолчанию: Required,DatabaseOptional
## Never # Проверка подписи выполняться не будет. Основная
## PackageNever # Только для пакетов. Дополнительная
## DatabaseNever # Только для базы данных. Дополнительная
## Optional # Подписи будут проверяться при их наличии, но неподписанные базы данных и пакеты также будут приниматься. Основная
## PackageOptional # Только для пакетов. Дополнительная ## PackageOptional # Только для пакетов. Дополнительная
## *DatabaseOptional # Только для базы данных. Дополнительная ## *DatabaseOptional # Только для базы данных. Дополнительная
## *Required # Подписи будут необходимы для всех пакетов и баз данных. Основная ## *Required # Подписи будут необходимы для всех пакетов и баз данных. Основная
## PackageRequired # Только для пакетов. Дополнительная ## PackageRequired # Только для пакетов. Дополнительная
## DatabaseRequired # Только для базы данных. Дополнительная ## DatabaseRequired # Только для базы данных. Дополнительная
## TrustedOnly # Если подпись проверяется для пакетов и базы, она должна находиться в связке ключей и быть полностью доверенной; маргинальное доверие не применимо ## TrustedOnly # Если подпись проверяется для пакетов и базы, она должна находиться в связке ключей и быть полностью доверенной; маргинальное доверие не применимо
## PackageTrustedOnly # Если подпись проверяется только для пакетов ## PackageTrustedOnly # Если подпись проверяется только для пакетов
## DatabaseTrustedOnly # Если подпись проверяется только для базы данных ## DatabaseTrustedOnly # Если подпись проверяется только для базы данных
## TrustAll # Если подпись проверена, она должна находиться в связке ключей, но ей не требуется назначать уровень доверия (например, неизвестное или предельное доверие) ## TrustAll # Если подпись проверена, она должна находиться в связке ключей, но ей не требуется назначать уровень доверия (например, неизвестное или предельное доверие)
## PackageTrustAll # Если подпись проверена только для пакетов ## PackageTrustAll # Если подпись проверена только для пакетов
## DatabaseTrustAll # Если подпись проверена только для базы данных ## DatabaseTrustAll # Если подпись проверена только для базы данных
## <usage> # Уровень использования этого репозитория. Не обязательный ## <usage> # Уровень использования этого репозитория. Не обязательный
## *All # Включать все перечисленные функции для репозитория. Это значение по умолчанию ## *All # Включать все перечисленные функции для репозитория, по умолчанию
## Sync # Включать обновления для этого репозитория ## Sync # Включать обновления для этого репозитория
## Search # Включать поиск этого репозитория ## Search # Включать поиск этого репозитория
## Install # Включать установку пакетов из этого репозитория во время операции --sync ## Install # Включать установку пакетов из этого репозитория во время операции --sync
## Upgrade # Позволить этому репозиторию быть действительным источником пакетов при выполнении --sysupgrade ## Upgrade # Позволить этому репозиторию быть действительным источником пакетов при выполнении --sysupgrade
## <server_path_n> # Полный URL-адрес места, где можно найти базу данных, пакеты и подписи (если доступны) для этого репозитория. Обязательный ## disable # Временно отключить управление репозиторием, либо после = указать - пример: REPOSITORY[modules]=-/etc/pacman.d/mirrorlist
## # Возможно указать несколько, через запятую. ## REPOSITORY[core]=/etc/pacman.d/mirrorlist;;;disable
## <file> # Если указан доступный файл, то подключить как дополнительный файл расширения конфигурации ## REPOSITORY[modules]="https://repo.ublinux.ru/2405/\$repo/\$arch"
## file:// # URL префикс для репозитория в каталоге ## REPOSITORY[modules]='https://repo.ublinux.ru/2405/$repo/$arch'
## ftp:// # URL префикс для репозитория FTP ## REPOSITORY[mymodules]=http://192.168.0.1:8080/repo/2204;;;disable
## http:// # URL префикс для репозитория HTTP ## REPOSITORY[webmyrepo]=http://myweb.org/myrepo;never
## https:// # URL префикс для репозитория HTTPS ## REPOSITORY[localmyrepo]=file:///home/myrepo;never;All
## REPOSITORY[modules]=::http://192.168.0.1:8080/repo/2204 ## REPOSITORY[myrepo]=/home/myrepo/mirrorlist
## REPOSITORY[webmyrepo]=never::http://myweb.org/myrepo exec_01_repository(){
## REPOSITORY[localmyrepo]=never::file:///home/myrepo repository_enable_only(){
exec_repository(){ local FILE_SOURCE_DEFAULT="/usr/lib/ublinux/default"
true local FILE_SOURCE_UPDATE="${SYSCONF}/update"
local FILE_PACMAN_CONF="${ROOTFS}/etc/pacman.conf"
local REPOSITORY_LIST=
local PACMAN_CONF_DATA=
# Удалим все действующие репозитории
awk -i inplace -v b=2 '/^\[.*\]$/{f=1; c++} !(f && c>=b); /^\s*$/{f=0}' ${FILE_PACMAN_CONF}
# Удалить в конце файла все пустые строки
sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' -i ${FILE_PACMAN_CONF}
[[ ${REPOSITORY[0]} == "enable" ]] && REPOSITORY_LIST+=$(grep -oE "^[[:blank:]]*REPOSITORY\[.*]=" ${FILE_SOURCE_DEFAULT} 2>/dev/null)$'\n'
REPOSITORY_LIST+=$(grep -oE "^[[:blank:]]*REPOSITORY\[.*]=" ${FILE_SOURCE_UPDATE} 2>/dev/null)
local REPOSITORY_NAME= REPOSITORY_VAR=
while IFS='=' read -u3 REPOSITORY_NAME REPOSITORY_VAR; do
[[ ${REPOSITORY_NAME} =~ ^.*'['(.*)']' ]] && REPOSITORY_NAME=${BASH_REMATCH[1]} || continue
[[ -n ${REPOSITORY[${REPOSITORY_NAME}]} ]] \
&& while IFS=';' read -u4 REPOSITORY_SERVER_PATHS REPOSITORY_SIGLEVEL REPOSITORY_USAGE REPOSITORY_DISABLE NULL; do
[[ ${REPOSITORY_SERVER_PATHS} =~ ^("disable"|"-") ]] && continue
[[ ${REPOSITORY_DISABLE} = @("disable"|"off"|"no") ]] && continue
PACMAN_CONF_DATA+=$'\n'
PACMAN_CONF_DATA+="[${REPOSITORY_NAME}]"$'\n'
[[ -n ${REPOSITORY_SIGLEVEL} ]] && PACMAN_CONF_DATA+="SigLevel = ${REPOSITORY_SIGLEVEL}"$'\n'
[[ -n ${REPOSITORY_USAGE} ]] && PACMAN_CONF_DATA+="Usage = ${REPOSITORY_USAGE}"$'\n'
[[ -n ${REPOSITORY_SERVER_PATHS} ]] \
&& while IFS= read -u5 REPOSITORY_SERVER_PATH; do
if [[ ${REPOSITORY_SERVER_PATH} =~ ^"/" ]]; then
PACMAN_CONF_DATA+="Include = ${REPOSITORY_SERVER_PATH}"$'\n'
elif [[ ${REPOSITORY_SERVER_PATH} =~ ^("file:"|"ftp:"|"http:"|"https:") ]]; then
PACMAN_CONF_DATA+="Server = ${REPOSITORY_SERVER_PATH}"$'\n'
fi
done 5<<< "${REPOSITORY_SERVER_PATHS//,/$'\n'}"
#echo "${REPOSITORY_NAME} == ${REPOSITORY_SERVER_PATHS} :: ${REPOSITORY_SIGLEVEL} :: ${REPOSITORY_USAGE} :: ${REPOSITORY_DISABLE} :: ${NULL}"
done 4<<< "${REPOSITORY[${REPOSITORY_NAME}]}"
done 3< <(awk -v RS="[\n]+" '!n[$0]++' <<< "${REPOSITORY_LIST}")
echo "${PACMAN_CONF_DATA}" >> ${FILE_PACMAN_CONF}
}
repository_disable(){
# Отключить управление репозиториями, восстановить из пакета pacman.conf
find /memory/bundles -maxdepth 3 -path "*/etc/*" -type f -name "pacman.conf" -exec cp -af {} "/etc/" \; -quit
}
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
[[ -n ${COMMAND} ]] || COMMAND="set="
local PARAM="$@"
if [[ -n ${PARAM} ]]; then
REPOSITORY_NAME=${PARAM%%=*}
REPOSITORY_VAR=${PARAM#*=}
fi
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ ${#REPOSITORY[@]} != 0 ]]; then
if [[ ${REPOSITORY[0]} == @("enable"|"only") ]]; then
repository_enable_only
elif [[ ${REPOSITORY[0]} == "disable" ]]; then
repository_disable
ubconfig --noexecute remove [update] REPOSITORY
fi
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
if [[ ${REPOSITORY[0]} == @("enable"|"only") ]]; then
repository_enable_only
elif [[ ${REPOSITORY_NAME} == "REPOSITORY" ]]; then
# Удаление параметра REPOSITORY= . Отключить управление репозиториями
repository_disable
fi
fi
} }
## Опубликовать локальный репозиторий в локальной сети, подключиться к сети распределённых репозиториев. ## pacredir (https://github.com/eworm-de/pacredir)
## При установке пакета пакет ищется в распределённой сети репозиториев и устанавливается самой последней доступной версией. ## Опубликовать локальный репозиторий в локальной сети и подключиться к сети распределённых репозиториев
## REPOPUBLIC_NET=<name_repos_1>,...,<name_repos_n> ## При установке пакета пакет ищется в распределённой сети репозиториев и устанавливается самой последней доступной версией
## <name_repo> # Подключенное имя репозитория, например: core,extra,community,multilib,ublinux,modules ## REPOPUBLIC_NET=disable|no|none|enable|yes,db,<name_repos_1>,...,<name_repos_n>
## all # Если name_repo=all, то опубликовать все подключенные репозитории ## disable|no|none # Отключить все репозитории от сети распределённых репозиториев
## REPOPUBLIC_NET=all ## enable|yes # Подключить все репозитории к сети распределённых репозиториев
## REPOPUBLIC_NET=modules ## db # Получать БД пакетов pacman от сети распределённых репозиториев
exec_repopublic_net(){ ## <name_repo> # Подключенное имя репозитория, например: core,extra,community,multilib,modules
true ## REPOPUBLIC_NET=enable,db
## REPOPUBLIC_NET=db,community,modules
exec_02_repopublic_net(){
disable_pacredir(){
systemctl disable pacserve.service pacredir.service
systemctl stop pacserve.service pacredir.service
sed -E "/Include = \/etc\/pacman.d\/pacredir/d" -i ${FILE_PACMAN_CONF}
}
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
[[ -n ${COMMAND} ]] || COMMAND="set="
local FILE_PACMAN_CONF="${ROOTFS}/etc/pacman.conf"
local FILE_PACREDIR_CONF="${ROOTFS}/etc/pacman.d/pacredir"
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ ${#REPOPUBLIC_NET[@]} != 0 ]]; then
local DB_CACHE=
local REPOPUBLIC_NET_DISABLE=
local DATA_PACMAN_CONF=$(cat ${FILE_PACMAN_CONF})
#sed -E "/Include = \/etc\/pacman.d\/pacredir/d" <<< ${DATA_PACMAN_CONF}
local DATA_PACMAN_CONF=${DATA_PACMAN_CONF//$'\n'Include = \/etc\/pacman.d\/pacredir/}
while IFS= read -u3 REPOPUBLIC_NET_REPOSITORY; do
if [[ ${REPOPUBLIC_NET_REPOSITORY,,} == @("disable"|"no"|"none") ]]; then
# Отключить управление
REPOPUBLIC_NET_DISABLE=yes
break
elif [[ ${REPOPUBLIC_NET_REPOSITORY,,} == "db" ]]; then
# Включить запрос БД pacman из кеш сервера
DB_CACHE=yes
elif [[ ${REPOPUBLIC_NET_REPOSITORY,,} == @("enable"|"yes") ]]; then
# Добавить ко всем репозиториям в pacman.conf: Include = /etc/pacman.d/pacredir
DATA_PACMAN_CONF=$(sed -E "0,/^\[.*\]$/! s/(^\[.*\]$)/\1\nInclude = \/etc\/pacman.d\/pacredir/" <<< ${DATA_PACMAN_CONF}) #"
else
# Добавить к указанному репозиторию, работать через кеш сервер
DATA_PACMAN_CONF=$(sed -E "/\[${REPOPUBLIC_NET_REPOSITORY}\]/a Include = \/etc\/pacman.d\/pacredir" <<< ${DATA_PACMAN_CONF})
fi
done 3<<< "${REPOPUBLIC_NET//,/$'\n'}"
if [[ -n ${REPOPUBLIC_NET_DISABLE} ]]; then
disable_pacredir
else
[[ -n ${DB_CACHE} ]] && sed -E "s/^#(Server = )/\1/" -i ${FILE_PACREDIR_CONF} || sed -E "s/^(Server = )/#\1/" -i ${FILE_PACREDIR_CONF}
echo "${DATA_PACMAN_CONF}" > ${FILE_PACMAN_CONF}
systemctl restart pacserve.service pacredir.service
fi
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
disable_pacredir
fi
} }
## Опубликовать локальный репозиторий в виде локального WEB ресурса ## darkhttpd or miniserve
## REPOPUBLIC_WEB[<path>]=enable|disable,listing:<port>:<auth_name>:<auth_pass>:<auth_hash> ## Опубликовать хранилище или репозиторий в виде локального WEB ресурса
## <path> # Путь до каталога репозитория, который будет опубликован ## Если необходимо опубликовать выборочные репозитории, то создать новый каталог хранилища в который переместить симлинки выбранных репозиториев. Опубликовать новый каталог хранилища.
## enable # Включить публикацию ## REPOPUBLIC_WEB[<path>[:<repo1,repo2,...>]]=enable|yes|disable|no|none:listing:<port>:<auth_name>:<auth_pass>:<auth_hash>
## disable # Выключить публикацию ## <path> # Путь до каталога хранилища, который будет опубликован
## listing # Включить WEB обозреватель файлов. Не обязятельный ## <path>:repo1,repo2 # Путь до каталога хранилища и выбранные репозитории из хранилища которые будут опубликованы
## <port> # Порт по которому доступен репозиторий. По умолчанию: 8080. Не обязательный ## enable|yes # Включить публикацию
## <auth_name> # Параметры авторизации, имя пользователя. Не обязательный ## disable|no|none # Выключить публикацию
## <auth_pass> # Параметры авторизации, открытый пароль или тип хеша. Не обязательный ## listing # Включить WEB обозреватель файлов. Не обязятельный
## password # Не зашифрованный пароль ## <port> # Порт по которому доступен репозиторий. По умолчанию: 8080. Не обязательный
## sha256 # Использовать зашифрованный пароль SHA256 ## <auth_name> # Параметры авторизации, имя пользователя. Не обязательный
## sha512 # Использовать зашифрованный пароль SHA512 ## <auth_pass> # Параметры авторизации, открытый пароль или тип хеша. Не обязательный
## <auth_hash> # Параметры авторизации, зашифроваггый пароль SHA256 или SHA512. Не обязательный ## <password> # Не зашифрованный пароль
## REPOPUBLIC_WEB[/home/myrepo]=enable ## sha256 # Использовать зашифрованный пароль SHA256, применять только совместно с <auth_hash>
exec_repopublic_web(){ ## sha512 # Использовать зашифрованный пароль SHA512, применять только совместно с <auth_hash>
true ## <auth_hash> # Параметры авторизации, не зашифрованный или зашифрованный пароль SHA256 или SHA512. Не обязательный
## # Получить SHA шифр из пароля: echo -n "PASSWORD" | sha512sum | cut -f 1 -d ' '
## REPOPUBLIC_WEB[/home/storage]=enable:listing
## REPOPUBLIC_WEB[/home/storage:repo-1,repo-2]=enable:listing::ublinux:123
## REPOPUBLIC_WEB[/home/storage:repo-1,repo-2]=enable:listing::ublinux:sha512:123
## REPOPUBLIC_WEB[/home/storage:repo-1,repo-2]=enable:listing::ublinux:sha256:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
exec_03_repopublic_web(){
kill_web_service(){
local REPOPUBLIC_WEB_PATH=$1
if [[ -n ${REPOPUBLIC_WEB_PATH} ]]; then
# Убить процесс с указанным каталогом
pkill -f "darkhttpd ${REPOPUBLIC_WEB_PATH}"
pkill -f "miniserve .* ${REPOPUBLIC_WEB_PATH}"
else
# Убить все процессы
pkill -f "darkhttpd .* ${PATH_LOG_REPOPUBLIC_WEB}"
pkill -f "miniserve .* --title UBLinux Repository:"
fi
}
mount_bind_storage(){
umount "${PATH_NEW_REPOPUBLIC_WEB_PATH}"/* 2>/dev/null
install -dm755 "${PATH_NEW_REPOPUBLIC_WEB_PATH}/pool"
mount --bind -o ro "${SRC_REPOPUBLIC_WEB_PATH_POOL}" "${PATH_NEW_REPOPUBLIC_WEB_PATH}/pool"
while IFS= read -u4 SELECT_SRC_REPOPUBLIC_WEB_PATH_REPO; do
if [[ -d ${SRC_REPOPUBLIC_WEB_PATH_POOL%/*}/${SELECT_SRC_REPOPUBLIC_WEB_PATH_REPO} ]]; then
install -dm755 "${PATH_NEW_REPOPUBLIC_WEB_PATH}/${SELECT_SRC_REPOPUBLIC_WEB_PATH_REPO}"
mount --bind -o ro "${SRC_REPOPUBLIC_WEB_PATH_POOL%/*}/${SELECT_SRC_REPOPUBLIC_WEB_PATH_REPO}" "${PATH_NEW_REPOPUBLIC_WEB_PATH}/${SELECT_SRC_REPOPUBLIC_WEB_PATH_REPO}"
else
echo "WARNING: repository '${SRC_REPOPUBLIC_WEB_PATH_POOL%/*}/${SELECT_SRC_REPOPUBLIC_WEB_PATH_REPO}' not found!"
fi
done 4<<< ${SRC_REPOPUBLIC_WEB_PATH_REPOLIST//,/$'\n'}
}
[[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift
[[ -n ${COMMAND} ]] || COMMAND="set="
local PATH_NEW_REPOPUBLIC_WEB_PATH="${ROOTFS}/srv/http/repopublic_web"
local PATH_LOG_REPOPUBLIC_WEB="${ROOTFS}/var/log/repopublic_web"
if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ ${#REPOPUBLIC_WEB[@]} != 0 ]]; then
local ARGS_DRAKHTTPD=" --daemon --chroot --no-server-id --uid http --gid http --mimetypes /etc/conf.d/mimetypes --log ${PATH_LOG_REPOPUBLIC_WEB}/darkhttpd.log"
local ARGS_MINISERV=" --color-scheme archlinux --color-scheme-dark archlinux --hide-theme-selector --hide-version-footer --dirs-first --title 'UBLinux Repository: '"
[[ -d ${PATH_LOG_REPOPUBLIC_WEB} ]] || install -dm755 "${PATH_LOG_REPOPUBLIC_WEB}"
while IFS= read -u3 REPOPUBLIC_WEB_PATHS; do
local CREATE_BIND_STORAGE=
if [[ ${REPOPUBLIC_WEB_PATHS} =~ ":" ]]; then
# Указано хранилище и репозитории для публикации
SRC_REPOPUBLIC_WEB_PATH_POOL="${REPOPUBLIC_WEB_PATHS%:*}/pool"
SRC_REPOPUBLIC_WEB_PATH_REPOLIST=${REPOPUBLIC_WEB_PATHS#*:}
if [[ -d ${SRC_REPOPUBLIC_WEB_PATH_POOL} ]]; then
REPOPUBLIC_WEB_PATH=${PATH_NEW_REPOPUBLIC_WEB_PATH}
CREATE_BIND_STORAGE=yes
else
# Публикуемый каталог не содержит pool всех пакетов, публикуем каталог храниища
REPOPUBLIC_WEB_PATH=${REPOPUBLIC_WEB_PATHS}
fi
else
# Указано только хранилище
REPOPUBLIC_WEB_PATH=${REPOPUBLIC_WEB_PATHS}
fi
IFS=: read -r SELECT_STATUS SELECT_LISTING SELECT_PORT SELECT_AUTH_NAME SELECT_AUTH_PASS SELECT_AUTH_HASH NULL <<< "${REPOPUBLIC_WEB[${REPOPUBLIC_WEB_PATHS}]}"
if [[ ${SELECT_STATUS} == @("enable"|"yes") ]]; then
[[ -n ${CREATE_BIND_STORAGE} ]] && mount_bind_storage
[[ ${SELECT_LISTING} == "listing" ]] || { ARGS_DRAKHTTPD+=" --no-listing"; ARGS_MINISERV+=" --disable-indexing"; }
[[ -n ${SELECT_PORT} ]] && ARGS_DRAKHTTPD+=" --port ${SELECT_PORT}" && ARGS_MINISERV+=" --port ${SELECT_PORT}" || { ARGS_DRAKHTTPD+=" --port 80"; ARGS_MINISERV+=" --port 80"; }
if [[ -n ${SELECT_AUTH_NAME} && -n ${SELECT_AUTH_PASS} ]]; then
if [[ -z ${SELECT_AUTH_HASH} ]]; then
ARGS_DRAKHTTPD+=" --auth ${SELECT_AUTH_NAME}:${SELECT_AUTH_PASS}"; ARGS_MINISERV+=" --auth ${SELECT_AUTH_NAME}:${SELECT_AUTH_PASS}"
else
ARGS_DRAKHTTPD=
[[ ${SELECT_AUTH_PASS,,} == "sha256" && ${#SELECT_AUTH_HASH} -ne 64 ]] && SELECT_AUTH_HASH=$(echo -n "${SELECT_AUTH_HASH}" | sha256sum | cut -f 1 -d ' ')
[[ ${SELECT_AUTH_PASS,,} == "sha512" && ${#SELECT_AUTH_HASH} -ne 128 ]] && SELECT_AUTH_HASH=$(echo -n "${SELECT_AUTH_HASH}" | sha512sum | cut -f 1 -d ' ')
ARGS_MINISERV+=" --auth ${SELECT_AUTH_NAME}:${SELECT_AUTH_PASS}:${SELECT_AUTH_HASH}"
fi
fi
if [[ -n ${ARGS_DRAKHTTPD} ]]; then
# Без шифрованного пароля, используем darkhttpd
kill_web_service "${REPOPUBLIC_WEB_PATH}"
darkhttpd "${REPOPUBLIC_WEB_PATH}" ${ARGS_DRAKHTTPD}
else
# C шифрованным паролем, используем miniserve
kill_web_service "${REPOPUBLIC_WEB_PATH}"
eval setsid miniserve ${ARGS_MINISERV} -- "${REPOPUBLIC_WEB_PATH}" 1>"${PATH_LOG_REPOPUBLIC_WEB}"/miniserve.log 2>&1 &
fi
elif [[ ${SELECT_STATUS} == @("disable"|"no"|"none") ]]; then
kill_web_service "${REPOPUBLIC_WEB_PATH}"
umount "${PATH_NEW_REPOPUBLIC_WEB_PATH}"/* 2>/dev/null
rm -rdf "${PATH_NEW_REPOPUBLIC_WEB_PATH}"
fi
done 3< <(printf "%s\n" "${!REPOPUBLIC_WEB[@]}")
elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then
kill_web_service
umount "${PATH_NEW_REPOPUBLIC_WEB_PATH}"/* 2>/dev/null
rm -rdf "${PATH_NEW_REPOPUBLIC_WEB_PATH}"
fi
} }
## pacoloco (https://github.com/anatol/pacoloco)
## Опубликовать ленивое зеркало подключенных репозиториев в виде локального WEB ресурса. ## Опубликовать ленивое зеркало подключенных репозиториев в виде локального WEB ресурса.
## Получая запрос от пользователя, загружает с удалённого репозитория пакет и сохраняет в кеше передавая его пользователю. ## Получая запрос от пользователя, загружает с удалённого репозитория пакет и сохраняет в кеше передавая его пользователю.
## REPOPUBLIC_CACHE[<path>]=enable|disable:<port>:<server_name_1>@<server_url_1>,...,<server_name_n>@<server_url_n> ## REPOPUBLIC_CACHE[<path>]=enable|disable:<port>:<server_name_1>@<server_url_1>,...,<server_name_n>@<server_url_n>
@ -99,7 +311,7 @@ exec_repopublic_web(){
## https:// # URL префикс для репозитория на HTTPS ## https:// # URL префикс для репозитория на HTTPS
## REPOPUBLIC_CACHE[/mnt/livedata/ublinux-data/repopublic_cache]=enable ## REPOPUBLIC_CACHE[/mnt/livedata/ublinux-data/repopublic_cache]=enable
## REPOPUBLIC_CACHE[/mnt/livedata/ublinux-data/repopublic_cache]=enable:80:myrepo@http://192.168.0.1:8080/repo/2204 ## REPOPUBLIC_CACHE[/mnt/livedata/ublinux-data/repopublic_cache]=enable:80:myrepo@http://192.168.0.1:8080/repo/2204
exec_repopublic_cache(){ exec_04_repopublic_cache(){
true true
} }

@ -20,12 +20,12 @@ SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
PATH_LIB_UBBOOT="${ROOTFS}/usr/lib/ubboot" PATH_LIB_UBBOOT="${ROOTFS}/usr/lib/ubboot"
#Profile updating #Profile updating
OS_RELEASE_PRETTY_NAME="UBLinux 0000 Unknown (x)" OS_RELEASE_PRETTY_NAME="UBLinux 0000 Unknown (x)"
PATH_VERSION=$(ls /memory/layer-base/0/VERSION* 2>/dev/null | head -1) PATH_VERSION=$(find /memory/layer-base/ -maxdepth 2 -type f -name "VERSION*" 2>/dev/null | tail -1)
[[ -n "${PATH_VERSION}" ]] || PATH_VERSION="$(ls /VERSION* 2>/dev/null | head -1)" [[ -n ${PATH_VERSION} ]] || PATH_VERSION="$(find ${ROOTFS}/ -maxdepth 1 -type f -name "VERSION*" 2>/dev/null | tail -1)"
[[ -n "${PATH_VERSION}" ]] && OS_RELEASE_PRETTY_NAME=$(head -1 "${PATH_VERSION}" 2>/dev/null ) [[ -n ${PATH_VERSION} ]] && OS_RELEASE_PRETTY_NAME=$(head -1 "${PATH_VERSION}" 2>/dev/null)
echo "${OS_RELEASE_PRETTY_NAME}" > ${ROOTFS}/etc/ublinux-release echo "${OS_RELEASE_PRETTY_NAME}" > ${ROOTFS}/etc/ublinux-release
${PATH_LIB_UBBOOT}/ubdistconv -l ${OS_RELEASE_PRETTY_NAME} > ${ROOTFS}/etc/lsb-release ${PATH_LIB_UBBOOT}/ubdistconv -l ${OS_RELEASE_PRETTY_NAME} > ${ROOTFS}/etc/lsb-release
${PATH_LIB_UBBOOT}/ubdistconv -o ${OS_RELEASE_PRETTY_NAME} > ${ROOTFS}/usr/lib/os-release ${PATH_LIB_UBBOOT}/ubdistconv -o ${OS_RELEASE_PRETTY_NAME} > ${ROOTFS}/usr/lib/os-release

@ -55,7 +55,7 @@ exec_auditd(){
AUDITD_VAR=${AUDITD[${AUDITD_NAME}]} AUDITD_VAR=${AUDITD[${AUDITD_NAME}]}
fi fi
[[ ${AUDITD_VAR} =~ ^\"(.*)\"$ ]] && AUDITD_VAR=${BASH_REMATCH[1]} [[ ${AUDITD_VAR} =~ ^\"(.*)\"$ ]] && AUDITD_VAR=${BASH_REMATCH[1]}
ESC_AUDITD_VAR=$(sed 's/[^a-zA-Z0-9,_@%-]/\\&/g' <<< "${AUDITD_VAR}") ESC_AUDITD_VAR=$(sed 's/[^a-zA-Z0-9=",_@#%&<> -]/\\&/g' <<< "${AUDITD_VAR}")
sed "/^${ESC_AUDITD_VAR}$/d" -i "${FILE_PATTERN_AUDITD_CONF}" sed "/^${ESC_AUDITD_VAR}$/d" -i "${FILE_PATTERN_AUDITD_CONF}"
fi fi
} }
@ -225,11 +225,11 @@ exec_logrotate(){
[[ ${FILES_LOG} == ${RULES_LOG} ]] && unset RULES_LOG [[ ${FILES_LOG} == ${RULES_LOG} ]] && unset RULES_LOG
FILES_LOG="${FILES_LOG//,/ }" FILES_LOG="${FILES_LOG//,/ }"
# Вставить в список файлов последним # Вставить в список файлов последним
[[ -n ${FILES_LOG} ]] && ESC_FILES_LOG=$(sed 's/[^a-zA-Z0-9,_@%-]/\\&/g' <<< "${FILES_LOG}") [[ -n ${FILES_LOG} ]] && ESC_FILES_LOG=$(sed 's/[^a-zA-Z0-9=",_@#%&<> -]/\\&/g' <<< "${FILES_LOG}")
[[ -n ${FILES_LOG} ]] && [[ ! $(cat "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}") =~ ${FILES_LOG} ]] \ [[ -n ${FILES_LOG} ]] && [[ ! $(cat "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}") =~ ${FILES_LOG} ]] \
&& sed -E "0,/ \{/s/ \{/ ${ESC_FILES_LOG} \{/" -i "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}" && sed -E "0,/ \{/s/ \{/ ${ESC_FILES_LOG} \{/" -i "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}"
# Вставить в список правил последним # Вставить в список правил последним
[[ -n ${RULES_LOG} ]] && ESC_RULES_LOG=$(sed 's/[^a-zA-Z0-9,_@%-]/\\&/g' <<< "${RULES_LOG}") [[ -n ${RULES_LOG} ]] && ESC_RULES_LOG=$(sed 's/[^a-zA-Z0-9=",_@#%&<> -]/\\&/g' <<< "${RULES_LOG}")
[[ -n ${RULES_LOG} ]] && [[ ! $(cat "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}") =~ ${RULES_LOG} ]] \ [[ -n ${RULES_LOG} ]] && [[ ! $(cat "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}") =~ ${RULES_LOG} ]] \
&& sed -E "/^\}$/i\\\t${ESC_RULES_LOG}" -i "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}" && sed -E "/^\}$/i\\\t${ESC_RULES_LOG}" -i "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}"
done 3< <(printf "%s\n" "${!LOGROTATE[@]}") done 3< <(printf "%s\n" "${!LOGROTATE[@]}")
@ -240,10 +240,10 @@ exec_logrotate(){
[[ ${FILES_LOG} == ${RULES_LOG} ]] && unset RULES_LOG [[ ${FILES_LOG} == ${RULES_LOG} ]] && unset RULES_LOG
FILES_LOG="${FILES_LOG//,/ }" FILES_LOG="${FILES_LOG//,/ }"
# Если удаляемая часть относится к файлу, то просто вырезать, если к тексту, то удалить строку # Если удаляемая часть относится к файлу, то просто вырезать, если к тексту, то удалить строку
[[ -n ${FILES_LOG} ]] && ESC_FILES_LOG=$(sed 's/[^a-zA-Z0-9,_@%-]/\\&/g' <<< "${FILES_LOG}") [[ -n ${FILES_LOG} ]] && ESC_FILES_LOG=$(sed 's/[^a-zA-Z0-9=",_@#%&<> -]/\\&/g' <<< "${FILES_LOG}")
[[ -n ${FILES_LOG} ]] && [[ $(cat "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}") =~ ${FILES_LOG} ]] \ [[ -n ${FILES_LOG} ]] && [[ $(cat "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}") =~ ${FILES_LOG} ]] \
&& sed -E "0,/ \{/s/${ESC_FILES_LOG}//" -i "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}" && sed -E "0,/ \{/s/${ESC_FILES_LOG}//" -i "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}"
[[ -n ${RULES_LOG} ]] && ESC_RULES_LOG=$(sed 's/[^a-zA-Z0-9,_@%-]/\\&/g' <<< "${RULES_LOG}") [[ -n ${RULES_LOG} ]] && ESC_RULES_LOG=$(sed 's/[^a-zA-Z0-9=",_@#%&<> -]/\\&/g' <<< "${RULES_LOG}")
[[ -n ${RULES_LOG} ]] && [[ $(cat "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}") =~ ${RULES_LOG} ]] \ [[ -n ${RULES_LOG} ]] && [[ $(cat "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}") =~ ${RULES_LOG} ]] \
&& sed "/${ESC_RULES_LOG}/d" -i "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}" && sed "/${ESC_RULES_LOG}/d" -i "${FILE_PATTERN_LOGROTATE_CONF}${NAME_FILE}"
done 3< <(printf "%s\n" "${!LOGROTATE[@]}") done 3< <(printf "%s\n" "${!LOGROTATE[@]}")

@ -48,7 +48,7 @@ shopt -s extglob
# if [[ -x ${ROOTFS}/usr/bin/chpasswd ]]; then # if [[ -x ${ROOTFS}/usr/bin/chpasswd ]]; then
# echo "${USER_NAME}:${USER_PASS}" | ${CMD_CHROOT} /usr/bin/chpasswd --encrypted # echo "${USER_NAME}:${USER_PASS}" | ${CMD_CHROOT} /usr/bin/chpasswd --encrypted
# else # else
# ESC_USER_PASS=$(sed 's/[^a-zA-Z0-9,_@%-]/\\&/g' <<< "${USER_PASS}") # ESC_USER_PASS=$(sed 's/[^a-zA-Z0-9=",_@#%&<> -]/\\&/g' <<< "${USER_PASS}")
# EPOCH_DAY=$(( $(${CMD_CHROOT} date +%s)/(60*60*24) )) # (60*60*24)=18400 second on day # EPOCH_DAY=$(( $(${CMD_CHROOT} date +%s)/(60*60*24) )) # (60*60*24)=18400 second on day
# USER_FROM_SHADOW=$(grep "^${USER_NAME}:" "${FILE_SHADOW}") # USER_FROM_SHADOW=$(grep "^${USER_NAME}:" "${FILE_SHADOW}")
# if [[ -z ${USER_FROM_SHADOW} ]]; then # if [[ -z ${USER_FROM_SHADOW} ]]; then
@ -73,7 +73,7 @@ shopt -s extglob
# if [[ -x ${ROOTFS}/usr/bin/chgpasswd ]]; then # if [[ -x ${ROOTFS}/usr/bin/chgpasswd ]]; then
# echo "${GROUP_NAME}:${GROUP_PASS}" | ${CMD_CHROOT} /usr/bin/chgpasswd --encrypted # echo "${GROUP_NAME}:${GROUP_PASS}" | ${CMD_CHROOT} /usr/bin/chgpasswd --encrypted
# else # else
# ESC_GROUP_PASS=$(sed 's/[^a-zA-Z0-9,_@%-]/\\&/g' <<< "${GROUP_PASS}") # ESC_GROUP_PASS=$(sed 's/[^a-zA-Z0-9=",_@#%&<> -]/\\&/g' <<< "${GROUP_PASS}")
# GROUP_FROM_SHADOW=$(grep "^${GROUP_NAME}:" "${FILE_GSHADOW}") # GROUP_FROM_SHADOW=$(grep "^${GROUP_NAME}:" "${FILE_GSHADOW}")
# if [[ -z ${GROUP_FROM_SHADOW} ]]; then # if [[ -z ${GROUP_FROM_SHADOW} ]]; then
# echo "${GROUP_NAME}:${GROUP_PASS}::" >> "${FILE_GSHADOW}" # echo "${GROUP_NAME}:${GROUP_PASS}::" >> "${FILE_GSHADOW}"

@ -314,14 +314,19 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,swapspace,systemd-timesyncd,cups
## Настройка подключения репозиториев ## Настройка подключения репозиториев
## REPOSITORY=disable|enable ## REPOSITORY=disable|enable
## *disable # Отключить управление списком репозиториев, по умолчанию ## *disable # Отключить управление списком репозиториев, по умолчанию
## # Когда управление списиком отключено, то используются репозитории из пакета по умолчанию: core,extra,community,multilib,ublinux,modules ## # Используются репозитории из пакета pacman, по умолчанию: core,extra,community,multilib,modules
## enable # Включить управление списком репозиториев ## enable # Включить управление списком репозиториев
## # Когда управление списком включено, то используются репозитории только параметра REPOSITORY. ## # Используются системные репозитории core,extra,community,multilib,modules и указанные в параметре REPOSITORY[*]
## only # Включить управление списком репозиториев
## # Используются только репозитории указанные в параметре REPOSITORY[*]
## Порядок указания репозиториев важен
## По умолчанию включены системные репозитории, имена: core,extra,community,multilib,modules
## REPOSITORY[<name_repo>]=<server_path_1>,<server_path_2>,...,<server_path_n>;<siglevel>;<usage>;disable ## REPOSITORY[<name_repo>]=<server_path_1>,<server_path_2>,...,<server_path_n>;<siglevel>;<usage>;disable
## <name_repo> # Произвольное имя репозитория. Обязательный ## <name_repo> # Произвольное имя репозитория. Обязательный
## # По умолчанию включены системные репозитории, имена: core,extra,community,multilib,ublinux,modules ## # Имена системных репозиториев: core,extra,community,multilib,modules
## <server_path_n> # Полный URL-адрес места, где можно найти базу данных, пакеты и подписи (если доступны) для этого репозитория. Обязательный ## <server_path_n> # Полный URL-адрес места, где можно найти базу данных, пакеты и подписи (если доступны) для этого репозитория. Обязательный
## # Возможно указать несколько, через запятую (,) ## # Возможно указать несколько, через запятую (,)
## # Символ $ обязательно экранировать \$
## <file> # Если указан доступный файл, то подключить как дополнительный файл расширения конфигурации (Include = <file>) ## <file> # Если указан доступный файл, то подключить как дополнительный файл расширения конфигурации (Include = <file>)
## file:// # URL префикс для репозитория в каталоге ## file:// # URL префикс для репозитория в каталоге
## ftp:// # URL префикс для репозитория FTP ## ftp:// # URL префикс для репозитория FTP
@ -350,38 +355,47 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,swapspace,systemd-timesyncd,cups
## Search # Включать поиск этого репозитория ## Search # Включать поиск этого репозитория
## Install # Включать установку пакетов из этого репозитория во время операции --sync ## Install # Включать установку пакетов из этого репозитория во время операции --sync
## Upgrade # Позволить этому репозиторию быть действительным источником пакетов при выполнении --sysupgrade ## Upgrade # Позволить этому репозиторию быть действительным источником пакетов при выполнении --sysupgrade
## disable # Временно отключить управление репозиторием ## disable # Временно отключить управление репозиторием, либо после = указать - пример: REPOSITORY[modules]=-/etc/pacman.d/mirrorlist
## REPOSITORY[core]=/etc/pacman.d/mirrorlist ## REPOSITORY[core]=/etc/pacman.d/mirrorlist;;;disable
## REPOSITORY[extra]=/etc/pacman.d/mirrorlist;;;disable ## REPOSITORY[modules]="https://repo.ublinux.ru/2405/\$repo/\$arch"
## REPOSITORY[modules]='https://repo.ublinux.ru/2405/$repo/$arch'
## REPOSITORY[mymodules]=http://192.168.0.1:8080/repo/2204;;;disable ## REPOSITORY[mymodules]=http://192.168.0.1:8080/repo/2204;;;disable
## REPOSITORY[webmyrepo]=http://myweb.org/myrepo;never ## REPOSITORY[webmyrepo]=http://myweb.org/myrepo;never
## REPOSITORY[localmyrepo]=file:///home/myrepo;never;All ## REPOSITORY[localmyrepo]=file:///home/myrepo;never;All
## REPOSITORY[myrepo]=/home/myrepo/mirrorlist ## REPOSITORY[myrepo]=/home/myrepo/mirrorlist
## Опубликовать локальный репозиторий в локальной сети, подключиться к сети распределённых репозиториев. ## Опубликовать локальный репозиторий в локальной сети и подключиться к сети распределённых репозиториев
## При установке пакета пакет ищется в распределённой сети репозиториев и устанавливается самой последней доступной версией. ## При установке пакета пакет ищется в распределённой сети репозиториев и устанавливается самой последней доступной версией
## REPOPUBLIC_NET=<name_repos_1>,...,<name_repos_n> ## REPOPUBLIC_NET=disable|no|none|enable|yes,db,<name_repos_1>,...,<name_repos_n>
## <name_repo> # Подключенное имя репозитория, например: core,extra,community,multilib,ublinux,modules ## disable|no|none # Отключить все репозитории от сети распределённых репозиториев
## all # Если name_repo=all, то опубликовать все подключенные репозитории ## enable|yes # Подключить все репозитории к сети распределённых репозиториев
## REPOPUBLIC_NET=all ## db # Получать БД пакетов pacman от сети распределённых репозиториев
## REPOPUBLIC_NET=modules ## <name_repo> # Подключенное имя репозитория, например: core,extra,community,multilib,modules
## REPOPUBLIC_NET=enable,db
## Опубликовать локальный репозиторий в виде локального WEB ресурса ## REPOPUBLIC_NET=db,community,modules
## REPOPUBLIC_WEB[<path>]=enable|disable,listing:<port>:<auth_name>:<auth_pass>:<auth_hash>
## <path> # Путь до каталога репозитория, который будет опубликован ## Опубликовать хранилище или репозиторий в виде локального WEB ресурса
## enable # Включить публикацию ## Если необходимо опубликовать выборочные репозитории, то создать новый каталог хранилища в который переместить симлинки выбранных репозиториев. Опубликовать новый каталог хранилища.
## disable # Выключить публикацию ## REPOPUBLIC_WEB[<path>[:<repo1,repo2,...>]]=enable|yes|disable|no|none:listing:<port>:<auth_name>:<auth_pass>:<auth_hash>
## listing # Включить WEB обозреватель файлов. Не обязятельный ## <path> # Путь до каталога хранилища, который будет опубликован
## <port> # Порт по которому доступен репозиторий. По умолчанию: 8080. Не обязательный ## <path>:repo1,repo2 # Путь до каталога хранилища и выбранные репозитории из хранилища которые будут опубликованы
## <auth_name> # Параметры авторизации, имя пользователя. Не обязательный ## enable|yes # Включить публикацию
## <auth_pass> # Параметры авторизации, открытый пароль или тип хеша. Не обязательный ## disable|no|none # Выключить публикацию
## password # Не зашифрованный пароль ## listing # Включить WEB обозреватель файлов. Не обязятельный
## sha256 # Использовать зашифрованный пароль SHA256 ## <port> # Порт по которому доступен репозиторий. По умолчанию: 8080. Не обязательный
## sha512 # Использовать зашифрованный пароль SHA512 ## <auth_name> # Параметры авторизации, имя пользователя. Не обязательный
## <auth_hash> # Параметры авторизации, зашифрованный пароль SHA256 или SHA512. Не обязательный ## <auth_pass> # Параметры авторизации, открытый пароль или тип хеша. Не обязательный
## REPOPUBLIC_WEB[/home/myrepo]=enable ## <password> # Не зашифрованный пароль
## sha256 # Использовать зашифрованный пароль SHA256, применять только совместно с <auth_hash>
## Опубликовать ленивое зеркало подключенных репозиториев в виде локального WEB ресурса. ## sha512 # Использовать зашифрованный пароль SHA512, применять только совместно с <auth_hash>
## <auth_hash> # Параметры авторизации, не зашифрованный или зашифрованный пароль SHA256 или SHA512. Не обязательный
## # Получить SHA шифр из пароля: echo -n "PASSWORD" | sha512sum | cut -f 1 -d ' '
## REPOPUBLIC_WEB[/home/storage]=enable:listing
## REPOPUBLIC_WEB[/home/storage:repo-1,repo-2]=enable:listing::ublinux:123
## REPOPUBLIC_WEB[/home/storage:repo-1,repo-2]=enable:listing::ublinux:sha512:123
## REPOPUBLIC_WEB[/home/storage:repo-1,repo-2]=enable:listing::ublinux:sha256:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
## Опубликовать ленивое зеркало подключенных репозиториев в виде локального WEB ресурса
## Получая запрос от пользователя, загружает с удалённого репозитория пакет и сохраняет в кеше передавая его пользователю. ## Получая запрос от пользователя, загружает с удалённого репозитория пакет и сохраняет в кеше передавая его пользователю.
## REPOPUBLIC_CACHE[<path>]=enable|disable:<port>:<server_name_1>@<server_url_1>,...,<server_name_n>@<server_url_n> ## REPOPUBLIC_CACHE[<path>]=enable|disable:<port>:<server_name_1>@<server_url_1>,...,<server_name_n>@<server_url_n>
## <path> # Путь до каталога файлов кеша, если не указан, то по умолчанию: /mnt/livedata/ublinux-data/repopublic_cache ## <path> # Путь до каталога файлов кеша, если не указан, то по умолчанию: /mnt/livedata/ublinux-data/repopublic_cache
@ -402,7 +416,7 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,swapspace,systemd-timesyncd,cups
## Настройка автообновления системы ## Настройка автообновления системы
## AUTOUPDATE=enable | <mode>:<interval>:<repository> ## AUTOUPDATE=enable | <mode>:<interval>:<repository>
## enable # Включает автообновление с параметрами modsys:boot:core,extra,community,multilib,ublinux,modules ## enable # Включает автообновление с параметрами modsys:boot:core,extra,community,multilib,modules
## <mode> # Режимы обновления ## <mode> # Режимы обновления
## *modsys # Вначале обновлять все модули и после систему ## *modsys # Вначале обновлять все модули и после систему
## module # Обновлять только модули ## module # Обновлять только модули
@ -412,8 +426,14 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,swapspace,systemd-timesyncd,cups
## 12h # Каждые 12 часов ## 12h # Каждые 12 часов
## 7d # Каждые 7 дней ## 7d # Каждые 7 дней
## 1m # Один раз в месяц ## 1m # Один раз в месяц
## <repository> # Имена репозиториев с которых будет происходить обновление. Если не указано, то по умолчанию: core,extra,community,multilib,ublinux,modules ## <repository> # Имена репозиториев с которых будет происходить обновление. Репозитории из списка по умолчанию или параметра REPOSITORY
## # Если не указано, то по умолчанию: core,extra,community,multilib,modules
## AUTOUPDATE=enable ## AUTOUPDATE=enable
##
## Врямя проведения последнего обновления
## AUTOUPDATE_TIMESTAMP=<datetime>
## <datetime> # Дата и время, в формате: DD/MM/YYYY HH:MM
## AUTOUPDATE_TIMESTAMP="31/12/2023 12:00"
[/etc/ublinux/mount] [/etc/ublinux/mount]
## Настройка подключения сетевых ресурсов ## Настройка подключения сетевых ресурсов
@ -583,6 +603,7 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,swapspace,systemd-timesyncd,cups
## # Пример записи сценария: sharedscripts,postrotate,/usr/bin/chronyc cyclelogs > /dev/null 2>&1 || true,echo Ok,endscript ## # Пример записи сценария: sharedscripts,postrotate,/usr/bin/chronyc cyclelogs > /dev/null 2>&1 || true,echo Ok,endscript
#LOGROTATE[samba]="/var/log/samba/log.smbd,/var/log/samba/log.nmbd,/var/log/samba/*.log:notifempty,missingok,copytruncate" #LOGROTATE[samba]="/var/log/samba/log.smbd,/var/log/samba/log.nmbd,/var/log/samba/*.log:notifempty,missingok,copytruncate"
#LOGROTATE[clamav]="/var/log/clamav/clamd.log,/var/log/clamav/freshclam.log,/var/log/clamav/clamav-milter.log:create 644 clamav clamav,sharedscripts,missingok,notifempty,postrotate,/bin/kill -HUP \`cat /run/clamav/clamd.pid 2>/dev/null\` 2> /dev/null || true,/bin/kill -HUP \`cat /run/clamav/freshclam.pid 2>/dev/null\` 2> /dev/null || true,/bin/kill -HUP \`cat /run/clamav/clamav-milter.pid 2>/dev/null\` 2> /dev/null || true,endscript" #LOGROTATE[clamav]="/var/log/clamav/clamd.log,/var/log/clamav/freshclam.log,/var/log/clamav/clamav-milter.log:create 644 clamav clamav,sharedscripts,missingok,notifempty,postrotate,/bin/kill -HUP \`cat /run/clamav/clamd.pid 2>/dev/null\` 2> /dev/null || true,/bin/kill -HUP \`cat /run/clamav/freshclam.pid 2>/dev/null\` 2> /dev/null || true,/bin/kill -HUP \`cat /run/clamav/clamav-milter.pid 2>/dev/null\` 2> /dev/null || true,endscript"
#LOGROTATE[clamav]='/var/log/clamav/clamd.log,/var/log/clamav/freshclam.log,/var/log/clamav/clamav-milter.log:create 644 clamav clamav,sharedscripts,missingok,notifempty,postrotate,/bin/kill -HUP `cat /run/clamav/clamd.pid 2>/dev/null` 2> /dev/null || true,/bin/kill -HUP `cat /run/clamav/freshclam.pid 2>/dev/null` 2> /dev/null || true,/bin/kill -HUP `cat /run/clamav/clamav-milter.pid 2>/dev/null` 2> /dev/null || true,endscript'
#LOGROTATE[chrony]="/var/log/chrony/*.log:missingok,nocreate,sharedscripts,postrotate,/usr/bin/chronyc cyclelogs > /dev/null 2>&1 || true,endscript" #LOGROTATE[chrony]="/var/log/chrony/*.log:missingok,nocreate,sharedscripts,postrotate,/usr/bin/chronyc cyclelogs > /dev/null 2>&1 || true,endscript"
[/etc/ublinux/boot] [/etc/ublinux/boot]
@ -632,6 +653,7 @@ GRUB_BOOT_SILENT="splash loglevel=3"
## usbcore.autosuspend=-1 # Отключить автозасыпание USB устройств в режиме suspend ## usbcore.autosuspend=-1 # Отключить автозасыпание USB устройств в режиме suspend
## ipv6.disable=1 # Отключить глобально ipv6 ## ipv6.disable=1 # Отключить глобально ipv6
## GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" ## GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau"
GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau"
## Выбор загрузки версии ядра ## Выбор загрузки версии ядра
## Если параметр не задан, то загружаемся с самой последней установленной версией ## Если параметр не задан, то загружаемся с самой последней установленной версией
@ -733,7 +755,6 @@ GRUB_BOOT_SILENT="splash loglevel=3"
## Адрес сети по умолчанию ## Адрес сети по умолчанию
#NETWORKIP=192.168.1. #NETWORKIP=192.168.1.
[/etc/ublinux/save] [/etc/ublinux/save]
## Настройка сохранений ## Настройка сохранений
################################################################################ ################################################################################
@ -758,6 +779,15 @@ GRUB_BOOT_SILENT="splash loglevel=3"
#SAVE_MODULE_INCLUDE="/etc/pacman.d/gnupg,/etc/NetworkManager/system-connections" #SAVE_MODULE_INCLUDE="/etc/pacman.d/gnupg,/etc/NetworkManager/system-connections"
#SAVE_MODULE_EXCLUDE="/etc/ublinux" #SAVE_MODULE_EXCLUDE="/etc/ublinux"
## TODO
## Удалить указанные изменения, после успешной очистки параметр удаляется
## SAVE_CLEAN=all|changes,rootcopy,home
## all # Удалить все изменения из /changes/ /rootcopy/ /home/
## changes # Удалить только системные изменения /changes/
## rootcopy # Удалить только изменения /rootcopy/
## home # Удалить только изменения /home/
## SAVE_CLEAN=changes,rootcopy
[/etc/ublinux/network] [/etc/ublinux/network]
## Настройка сети ## Настройка сети
################################################################################ ################################################################################
@ -1037,10 +1067,10 @@ NSSWITCHWINBIND=yes
## ACCESS_ALLOWED_SGID[/home]=- ## ACCESS_ALLOWED_SGID[/home]=-
## Ограничить запуск исполняемых файлов и интерпретаторов языков программирования в интерактивном режиме ## Ограничить запуск исполняемых файлов и интерпретаторов языков программирования в интерактивном режиме
## ACCESS_DENIED_EXEC[<find_path_1> <find_path_n> <options>]=<file_1>,<file_2>,<file_n> ## ACCESS_DENIED_EXEC[<find_path_1>,<find_path_n>,<options>]=<file_1>,<file_2>,<file_n>
## Find path: # Пути поиска указанных файлов, можно использовать разделитель: пробел, запятая, точка с запятой ## Find path: # Пути поиска указанных файлов, можно использовать разделитель: пробел, запятая, точка с запятой
## <empty> # Если пусто и не задан [], то будут выбраны пути поиска ="/usr/bin /usr/local/bin /usr/local/sbin /home" ## <empty> # Если пусто и не задан [], то будут выбраны пути поиска ="/usr/bin /usr/local/bin /usr/local/sbin /home"
## <find_path_n> # Путь до каталога поиска /path/subpath,/path/*/subpath. Если в имени пути используется пробел, то необходимо путь обрамить \" ## <find_path_n> # Путь до каталога поиска /path/subpath,/path/*/subpath
## Options: # Опции применяются ко все указанным каталогам и должны быть самые последние в списке ## Options: # Опции применяются ко все указанным каталогам и должны быть самые последние в списке
## -maxdepth 1 # Путь до каталога поиска с уровнем вложения 1 ## -maxdepth 1 # Путь до каталога поиска с уровнем вложения 1
## Files: # Имена файлов, можно использовать разделитель: пробел, запятая, двоеточие ## Files: # Имена файлов, можно использовать разделитель: пробел, запятая, двоеточие
@ -1049,7 +1079,7 @@ NSSWITCHWINBIND=yes
## ACCESS_DENIED_EXEC=interpreter ## ACCESS_DENIED_EXEC=interpreter
## ACCESS_DENIED_EXEC[/usr/bin,/usr/bin/local]=gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk ## ACCESS_DENIED_EXEC[/usr/bin,/usr/bin/local]=gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk
## ACCESS_DENIED_EXEC[/home/*/local/bin]=myfile ## ACCESS_DENIED_EXEC[/home/*/local/bin]=myfile
## ACCESS_DENIED_EXEC[\"/home/superadmin/soft my\"]=myfile ## ACCESS_DENIED_EXEC[/home/superadmin/soft my]=myfile
## Отключить пользовательские nosuid nodev noexec на смонтированные цели ## Отключить пользовательские nosuid nodev noexec на смонтированные цели
## MOUNT_ATTR[<source_1>,<source_n>]=<attribut_1>,<attribut_n> ## MOUNT_ATTR[<source_1>,<source_n>]=<attribut_1>,<attribut_n>

Loading…
Cancel
Save