Page 1 of 2
Ограничение на количество возможных пользователей в панели.
Posted: Thu Mar 02, 2017 9:31 pm
by Spyces
Здарова мужики! Использую VestaCP как панель упр. хотингом.
Суть: Хочу чтобы на этом сервере создалось максимум два или три пользователя ( по 5-10 ГБ диска, так как больше на сервере нет места, к примеру) Все ограничения на квоту и т.д. это понятно, как ограничить количество создаваемых пользователей, чтобы биллинг (hope billing) при попытке создать нового уперся в лимит и выдал ошибку, а то он будет создавать и дальше их.
Re: Ограничение на количество возможных пользователей в панели.
Posted: Thu Mar 02, 2017 9:43 pm
by skurudo
чтобы биллинг (hope billing) при попытке создать нового уперся в лимит и выдал ошибку, а то он будет создавать и дальше их.
Если бы дело было только в ручном создании, то ограничить стоит пакетами и квотой, но здесь вмешивается биллинг. Думаю, что вопрос к создателям hopebilling .
Re: Ограничение на количество возможных пользователей в панели.
Posted: Thu Mar 02, 2017 10:03 pm
by Spyces
Биллинг этот только использует API на создание пользователя. То есть, думаю кусок кода втулить в /bin/v-add-user
Там уже есть проверки на наименование, пароль и т.д.
Только вот, какой и будет ли так работать?
Re: Ограничение на количество возможных пользователей в панели.
Posted: Fri Mar 03, 2017 10:48 am
by Mr.Erbutw
Spyces wrote:Биллинг этот только использует API на создание пользователя. То есть, думаю кусок кода втулить в /bin/v-add-user
Там уже есть проверки на наименование, пароль и т.д.
Только вот, какой и будет ли так работать?
Hoppebilling не умеет не регистрировать или блокировать регистрацию.
Или vestacp в момент переполнения будет блокировать как ?
вот для
примера
Re: Ограничение на количество возможных пользователей в панели.
Posted: Fri Mar 03, 2017 11:33 am
by skurudo
Spyces wrote:Биллинг этот только использует API на создание пользователя. То есть, думаю кусок кода втулить в /bin/v-add-user Там уже есть проверки на наименование, пароль и т.д. Только вот, какой и будет ли так работать?
Да, так можно сделать.
Нужно будет криптовать самостоятельно это дело да еще и следить, чтобы при обновлении не съехало.
Re: Ограничение на количество возможных пользователей в панели.
Posted: Fri Mar 03, 2017 11:40 am
by skurudo
Если делать в лоб, то все вроде не сложно.
Итак, колбасим /usr/local/vesta/bin/v-add-user
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
}
#наша вставка заканчивается здесь
Здесь мы ориентируемся на количество записей в /etc/passwd, принимаем значение за количество пользователей. Подсчитываем их командой "cat /etc/passwd | wc -l" и считаем, сколько всего нам нужно будет держать пользователей. Количество пользователей задаем жестко в numberlimit, ориентируясь на количество строк выше. Предположим, что после установки системы и Vesta, у нас там 38 записей, соответственно сверяемся с numberlimit при добавлении пользователя. Если numberlimit меньше или раньше количеству пользователей, то выдаем ошибку - полна народу в нашей хате.
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: Работу я проверил кстати, решение вполне себе рабочее.
Re: Ограничение на количество возможных пользователей в панели.
Posted: Fri Mar 03, 2017 11:47 am
by skurudo
Возможно для красоты стоило бы это все делать как-то через глобальные переменные или как-то облагородить, но не знаю, что-то я не очень уверен, что такое ограничение - это не индивидуальный кастом или грабли по-просту говоря.
Логику is_user_nubmer наверное можно как-то усилить с учетом места на диске, но опять же не ясно, стоит ли. Если у нас более менее одинаково нарезан диск и стандартные пакеты, то это кажется лишним.
Re: Ограничение на количество возможных пользователей в панели.
Posted: Fri Mar 03, 2017 2:30 pm
by Mr.Erbutw
Для хоста самое главное;
1. Удаление пользователя после блокировки, если не использует.
2. Не регистрировать если закончилось место.
3. Проверка сайта (работает или нет,) если нет то зачем он ...
4. * Квоты.
5. *Доп ip (смена, добавление к юзеру).
А биллин это не умеет. Это надо расширять функционал панели.
[первый пункт можно отнести к билингу]
* - исключение в панели управлении.
Re: Ограничение на количество возможных пользователей в панели.
Posted: Fri Mar 03, 2017 5:30 pm
by skurudo
Mr.Erbutw wrote:2. Не регистрировать если закончилось место.
Вот здесь можно прикинуть формулу максимального количества пользователей от места. Особенно будет приятно, если сервер режется одинаковыми кусками - один сервер: все места по 5 гб, второй - все по 10. Такую логику изобразить наверное не сложно будет.
Mr.Erbutw wrote:3. Проверка сайта (работает или нет,) если нет то зачем он ...
Ну это как раз не важно, как говориться - оплочено же :)
Re: Ограничение на количество возможных пользователей в панели.
Posted: Fri Mar 03, 2017 8:26 pm
by Mr.Erbutw
skurudo wrote:
Вот здесь можно прикинуть формулу максимального количества пользователей от места. Особенно будет приятно, если сервер режется одинаковыми кусками - один сервер: все места по 5 гб, второй - все по 10. Такую логику изобразить наверное не сложно будет.
ладно если 3 тарифа, если в дальнейшем предоставлять от 0,5, 1, 2, 5, 8, 10 гб , думаю косячно считать общее.
Ну это как раз не важно, как говориться - оплочено же :)
У меня Free :/