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: Работу я проверил кстати, решение вполне себе рабочее.

Code: Select all

$ v-add-user user4 user3user3user3 [email protected]
Error: user room full

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 :/