Папки шлюза: тестовый — igate_exchange_test, боевой — igate_exchange; все папки в сообщении; Samba — в установщике
- Имена папок: тестовый контур — igate_exchange_test, боевой — igate_exchange (было igate_exchange и igate_exchange_prod); bj переименовывает открытые по прежней схеме сам — при сверке, в первый раз через 30 с после запуска. - После сохранения — все открытые папки с контуром: \\IP\igate_exchange_test (тестовый TEST3), \\IP\igate_exchange (боевой). - Закрыть папки — Samba выключается (сервер не отвечает по SMB, пока папок нет). - Установщик (bj-installer, preseed Debian, слой пакетов образа Ubuntu): samba, winbind, libnss-winbind — заранее, чтобы в закрытом контуре папки открывались без интернета; необязательной частью (нет на диске и нет сети — установка bj продолжается); службы выключены до открытия папок. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -330,7 +330,7 @@ SQL
|
||||
CONF=/etc/samba/smb.conf; B='# >>> bj: папки шлюза НРД'; E='# <<< bj: папки шлюза НРД'
|
||||
GB='# >>> bj: вход через домен'; GE='# <<< bj: вход через домен'
|
||||
on=$(j enabled); su=$(j user); sp=$(j password); mode=$(j mode); vu=$(j valid)
|
||||
manual=false; [ -f "$CONF" ] && sed "/^$B/,/^$E/d" "$CONF" | grep -q '^\[igate_exchange\]' && manual=true
|
||||
manual=false; [ -f "$CONF" ] && sed "/^$B/,/^$E/d" "$CONF" | grep -qE '^\[igate_exchange(_test|_prod)?\]' && manual=true
|
||||
dmode=simple; [ -f "$CONF" ] && grep -q "^$GB" "$CONF" && dmode=domain
|
||||
if [ "${on:-}" = status ] || [ -z "${on:-}" ]; then
|
||||
mine=false; [ -f "$CONF" ] && grep -q "^$B" "$CONF" && mine=true
|
||||
@@ -347,8 +347,8 @@ SQL
|
||||
[ "$manual" = true ] && err "папка igate_exchange уже открыта вручную в $CONF — bj её не меняет; чтобы управлять из bj, уберите её из smb.conf"
|
||||
if [ "$on" != true ]; then
|
||||
[ -f "$CONF" ] && sed -i "/^$B/,/^$E/d" "$CONF"
|
||||
systemctl reload smbd >/dev/null 2>&1 || true
|
||||
ok "доступ к папкам шлюза по сети закрыт"; exit 0
|
||||
systemctl disable --now smbd nmbd >/dev/null 2>&1 || true # папок bj нет — сервер не отвечает по SMB
|
||||
ok "доступ к папкам шлюза по сети закрыт, Samba выключена"; exit 0
|
||||
fi
|
||||
[ -n "$mode" ] || mode=$dmode
|
||||
if ! command -v smbd >/dev/null 2>&1; then
|
||||
@@ -398,7 +398,7 @@ SQL
|
||||
[ -f "$CONF" ] && sed -i "/^$B/,/^$E/d" "$CONF"
|
||||
{ echo "$B"
|
||||
for c in test3 prod; do d=$(exchange_dir "$c"); [ -d "$d" ] || continue
|
||||
n=igate_exchange; [ "$c" = prod ] && n=igate_exchange_prod
|
||||
n=igate_exchange_test; [ "$c" = prod ] && n=igate_exchange # боевой — без суффикса, тестовый — _test
|
||||
printf '[%s]\n comment = Шлюз НРД: папки обмена %s (INBOX/OUTBOX/SENT/ERRORS)\n path = %s\n browseable = yes\n read only = no\n valid users = %s\n force user = %s\n force group = %s\n' "$n" "$c" "$d" "$valid" "$SVC_USER" "$SVC_USER"
|
||||
done
|
||||
echo "$E"; } >> "$CONF"
|
||||
@@ -407,8 +407,13 @@ SQL
|
||||
sed -i -E 's/^([[:space:]]*)map to guest[[:space:]]*=[[:space:]]*bad user.*$/\1map to guest = never/I' "$CONF"
|
||||
testparm -s "$CONF" >/dev/null 2>&1 || { sed -i "/^$B/,/^$E/d" "$CONF"; err "smb.conf после правки не проходит проверку (testparm) — правка отменена"; }
|
||||
systemctl enable smbd >/dev/null 2>&1; systemctl restart smbd >/dev/null 2>&1 || err "служба smbd не перезапустилась"
|
||||
if [ "$dmode" = domain ]; then ok "${note}папки шлюза открыты по сети для сотрудников домена с доступом к bj: \\\\$(hostname -I | awk '{print $1}')\\igate_exchange"
|
||||
else ok "${note}папки шлюза открыты по сети для $su: \\\\$(hostname -I | awk '{print $1}')\\igate_exchange"; fi ;;
|
||||
ip=$(hostname -I | awk '{print $1}'); where=""
|
||||
for n in $(sed -n "/^$B/,/^$E/p" "$CONF" | sed -n 's/^\[\(.*\)\]$/\1/p'); do
|
||||
t="боевой"; case "$n" in *_test) t="тестовый TEST3" ;; esac
|
||||
where="$where${where:+, }\\\\$ip\\$n ($t)"
|
||||
done
|
||||
if [ "$dmode" = domain ]; then ok "${note}папки шлюза открыты по сети для сотрудников домена с доступом к bj: $where"
|
||||
else ok "${note}папки шлюза открыты по сети для $su: $where"; fi ;;
|
||||
|
||||
*) err "неизвестная команда: $cmd" ;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user