Ограничение на количество возможных пользователей в панели.
Re: Ограничение на количество возможных пользователей в панели.
Дык, П - планирование :)Mr.Erbutw wrote: ладно если 3 тарифа, если в дальнейшем предоставлять от 0,5, 1, 2, 5, 8, 10 гб , думаю косячно считать общее.
Тем более, оплачено тобой :-)))Mr.Erbutw wrote:У меня Free :/Ну это как раз не важно, как говориться - оплочено же :)
Re: Ограничение на количество возможных пользователей в панели.
skurudo wrote:Если делать в лоб, то все вроде не сложно.
Итак, колбасим /usr/local/vesta/bin/v-add-user
Здесь мы ориентируемся на количество записей в /etc/passwd, принимаем значение за количество пользователей. Подсчитываем их командой "cat /etc/passwd | wc -l" и считаем, сколько всего нам нужно будет держать пользователей. Количество пользователей задаем жестко в numberlimit, ориентируясь на количество строк выше. Предположим, что после установки системы и Vesta, у нас там 38 записей, соответственно сверяемся с numberlimit при добавлении пользователя. Если numberlimit меньше или раньше количеству пользователей, то выдаем ошибку - полна народу в нашей хате.Code: Select all
#----------------------------------------------------------# # Variable&Function # #----------------------------------------------------------# # Argument definition user=$1 password=$2; HIDE=2 email=$3 package=${4-default} fname=$5 lname=$6 # Includes source $VESTA/func/main.sh source $VESTA/conf/vesta.conf is_user_free() { check_sysuser=$(cut -f 1 -d : /etc/passwd | grep "^$user$" ) if [ ! -z "$check_sysuser" ] || [ -e "$USER_DATA" ]; then check_result $E_EXISTS "user $user exists" fi } #наша вставка начинается здесь numberlimit=38 is_user_nubmer() { check_usernumber=$(cat /etc/passwd | wc -l) if [[ "$numberlimit" -le "$check_usernumber" ]]; then check_result $E_INVALID "user room full" exit fi } #наша вставка заканчивается здесь
Просто проверка нашей переменной.Code: Select all
#----------------------------------------------------------# # Verifications # #----------------------------------------------------------# check_args '3' "$#" 'USER PASSWORD EMAIL [PACKAGE] [FNAME] [LNAME]' is_format_valid 'user' 'email' 'package' if [ ! -z "$fname" ]; then is_format_valid 'fname' 'lname' fi is_user_free "$user" is_password_valid is_package_valid #наша вставка начинается здесь is_user_nubmer #наша вставка заканчивается здесь
PS: Работу я проверил кстати, решение вполне себе рабочее.Code: Select all
$ v-add-user user4 user3user3user3 [email protected] Error: user room full
Спасибо за быструю отзывчивость и помощь в решении этой проблемы, попробую так сделать. Приятно, что у бесплатной панели такие разработчики.
Re: Ограничение на количество возможных пользователей в панели.
Немного не до понимаю в чем это реализация лучше, и попробую описать (как вижу я),skurudo wrote:Если делать в лоб, то все вроде не сложно.
Здесь мы ориентируемся на количество записей в /etc/passwd, принимаем значение за количество пользователей. Подсчитываем их командой "cat /etc/passwd | wc -l" и считаем, сколько всего нам нужно будет держать пользователей. Количество пользователей задаем жестко в numberlimit, ориентируясь на количество строк выше. Предположим, что после установки системы и Vesta, у нас там 38 записей, соответственно сверяемся с numberlimit при добавлении пользователя. Если numberlimit меньше или раньше количеству пользователей, то выдаем ошибку - полна народу в нашей хате.
ПРИМЕР:
Пользователей на сервере + 2,5 Ка, и hdd на 4 Тб
тут происходит подсчет записей что не есть хорошо.
ну заняли 3 Тб но есть папка которая не значиться в панели управления и весит 1 Тб
ну как бы и места не осталось (по логике веще) и все данные говорят что все место уперлось в потолок.
А этот скрипт считает что еще место есть свободное.
Почему нельзя подсчитывать общее количество занятого пространства с установленным лимитом 4 Тб.
(Может я ошибаюсь, но хотелось бы увидеть что есть как).
Re: Ограничение на количество возможных пользователей в панели.
Наверное потому что я уже написал и это было не сложно :)Mr.Erbutw wrote: Немного не до понимаю в чем это реализация лучше, и попробую описать (как вижу я),
А то что ты предлагаешь, слегка сложнее в реализации, потому что усложняется логика.
Думаешь я с тобой не согласен? Так ведь нет! Конечно идеальное решение должно учитывать и место на диске, этого не требовалось по условию задачи и я не потратил время, чтобы подумать над этим как следует. Скорее всего в добавление стоило бы втыкнуть проверку диска и лимиты, при которых бы шел отбой.Mr.Erbutw wrote:Почему нельзя подсчитывать общее количество занятого пространства с установленным лимитом 4 Тб.(Может я ошибаюсь, но хотелось бы увидеть что есть как).
Re: Ограничение на количество возможных пользователей в панели.
Просто повезло. Обычно мы более медлительные, бородатые и неразговорчивые :)Spyces wrote:Спасибо за быструю отзывчивость и помощь в решении этой проблемы, попробую так сделать. Приятно, что у бесплатной панели такие разработчики.
Re: Ограничение на количество возможных пользователей в панели.
О спасибо. Смысл понятен, так и думал.skurudo wrote: Конечно идеальное решение должно учитывать и место на диске, этого не требовалось по условию задачи и я не потратил время, чтобы подумать над этим как следует. Скорее всего в добавление стоило бы втыкнуть проверку диска и лимиты, при которых бы шел отбой.