free cp 4 web
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
Re: free cp 4 web
на GTK.....
/me - почувствовал рядом линукз
/me - почувствовал рядом линукз
Z301171463546 - можно пожертвовать мне денег
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
Re: free cp 4 web
я не говорил, что GTK = linux, не надо
P.s. кодить можно на том, что нравится

P.s. кодить можно на том, что нравится
Z301171463546 - можно пожертвовать мне денег
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: free cp 4 web
я тоже не говорил что linux - это кодить



-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: free cp 4 web
ldap пока не надо трогать, всё должно быть завязано на конфигах и базе данных, чем больше связок, тем нестабильней система. GTK лесом, вебморды за глаза хватит.ProFTP писал(а):openldap?
кстате, может пойти другим путем, написать на GTK2+ клиент-сервер...
-
- лейтенант
- Сообщения: 863
- Зарегистрирован: 2007-09-24 12:41:05
- Откуда: dn.ua
- Контактная информация:
Re: free cp 4 web
охота вам геморой на свою Жzg писал(а):собственно как я вижу эту панель: логинишься, попадаешь в панель управления, там есть список клиентов, за каждым клиентов закреплены домены. На домен вешается хостинг, фтп и почта. Так же идёт автоподдержка ДНС домена первичная или вторичная. Собстевнно и хостинг и почта должны быть в рамках домена. То есть будет кнопочка "добавить домен", нажав на которую создастся виртуал хост с поддержкой домена, а на него уже будет идти почта и фтп. Этого функционала хватит за глаза на первое время, всё остальное через правку конфигов. Остальные сервисы, типа PMA. клуглого куба и даже постфиксадмина, должны ставиться уже после установки основного пакета, то есть идти просто дополнениями.
Я скоро займусь веб-мордой всего этого дела, думаю и екзим туда же прикручу со временем, чтоб от постфиксадмина не зависеть.

syscp это уже давно все умеет, и еще кучу всего, необходимость которого вы еще не осознали

разве что изобрести еще один кастыль для получения опыта....
ЗЫ. по поводу пакетов не вчитался. Но с пакетами, я полагал, ситуация очевидна! Под релизы закреплены версии софта, под стейбл - нет. Но как правило пакеты со стейбла успешно ставятся и на ближайший релиз.
With best wishes, Sergej Kandyla
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: free cp 4 web
гм.. странный вопрос, гемморой уже есть, плеск называетсяpaix писал(а):охота вам геморой на свою Ж

несомненно, я даже не буду споритьpaix писал(а):syscp это уже давно все умеет, и еще кучу всего, необходимость которого вы еще не осознали

агаpaix писал(а):разве что изобрести еще один кастыль для получения опыта....

- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: free cp 4 web
управление jail'ами?
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: free cp 4 web
погоди покаProFTP писал(а):управление jail'ами?
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: free cp 4 web
а для хостинга может мало потребности просто будет... то есть чтобы не повторять всё за плеск...
потому что VDS дешевеет, за 30$ в месяц можно найти, и прямо там станет сайтов штук 50 маленьких...
потому что VDS дешевеет, за 30$ в месяц можно найти, и прямо там станет сайтов штук 50 маленьких...
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: free cp 4 web
1)а как быть с файлми конфигурации от какого пользователя читать/записывать файлы конфигов apache22, это в jail держать apache надо?
2) я так понял что держать конфиги в SQLite/MySQL не реализуемо, потому что нигде этого нету, почему-то...
2) я так понял что держать конфиги в SQLite/MySQL не реализуемо, потому что нигде этого нету, почему-то...
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: free cp 4 web
держать конфиги апача в базе нецелесообразно не стоит - появляется лишняя ненужная зависимость от MySQL, тем более, что данные хранятся в неструктурированном виде, просто как текстовые файлы, смысла нет.
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: free cp 4 web
есть такое как SQLite и BerkleyDB
кстате, на апаче это не реализуемо если полноценно все директивы ставить в таблицу, нужно все модули переписывать, и половину самого апача..
на других ве серверах это есть всё...
кстате, на апаче это не реализуемо если полноценно все директивы ставить в таблицу, нужно все модули переписывать, и половину самого апача..
на других ве серверах это есть всё...
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: free cp 4 web
хочеться спросить про то большая ли разница испольховать apache13 или apache22??
просто есть пару модов для apache13 которые позваоляют вставлять в MySQL или SQLite таблицу много директив
вот например единственный модуль mod_vhost_dbi для apache20-22 поддреживает только некоторые директивы, всего 3 или 4, автор модуля написал что для того чтобы добавить все директивы, то надо половину апача переписывать и все его моды...
все таки очень хорошо было бы если через DB
просто есть пару модов для apache13 которые позваоляют вставлять в MySQL или SQLite таблицу много директив
вот например единственный модуль mod_vhost_dbi для apache20-22 поддреживает только некоторые директивы, всего 3 или 4, автор модуля написал что для того чтобы добавить все директивы, то надо половину апача переписывать и все его моды...

все таки очень хорошо было бы если через DB
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: free cp 4 web
работает?
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: free cp 4 web
что именно? 
вы про апачъ?
вот тут многе директивы http://www.lissyara.su/?id=1151
и тут но не знаю что там http://www.lissyara.su/?id=1140
и еще один есть в нем SSL можно поставить директивы...
есть смысл ставить 1.3, или может какой нить другой сервер , или забить на БД?

вы про апачъ?
вот тут многе директивы http://www.lissyara.su/?id=1151
и тут но не знаю что там http://www.lissyara.su/?id=1140
и еще один есть в нем SSL можно поставить директивы...
есть смысл ставить 1.3, или может какой нить другой сервер , или забить на БД?
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: free cp 4 web
я бы пока забилProFTP писал(а):есть смысл ставить 1.3, или может какой нить другой сервер , или забить на БД?

-
- лейтенант
- Сообщения: 863
- Зарегистрирован: 2007-09-24 12:41:05
- Откуда: dn.ua
- Контактная информация:
Re: free cp 4 web
чем проще тем лучше.ProFTP писал(а):что именно?
есть смысл ставить 1.3, или может какой нить другой сервер , или забить на БД?
Я первый, кто не будет пользоваться сим продуктом, если веб сервер будет хранить конфиги в бд.
насчет апач1 вс апач2.
Если вы не знаете какие фишки того или иного апача вам нужны - то пользовать что без разницы.
Апач1 очень добротный и сильно попилянный. Кроме того к нему много кастыличиков имеется, которые апач 2 не умеет.
например mod_aclr и подобные.
Кроме того, в большинстве случаев апач используется как пхп\сжи\фастцжи бекенд, что лишает смысла использовать всякие извраты 2го апача типа worker\perchaild etc.
Единственное, что мне нравится во 2ом, это удобная реализация include.
И вообще, если можно неюзать апач, лучше его не юзать :-)
With best wishes, Sergej Kandyla
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: free cp 4 web
мне от апача нужны кодировки, виртуал хосты, SSL, suexec, .htaccess, авторизация и mod_rewritepaix писал(а):И вообще, если можно неюзать апач, лучше его не юзать :-)


- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: free cp 4 web
можно сразу и в текстовом, и в бдpaix писал(а): чем проще тем лучше.
Я первый, кто не будет пользоваться сим продуктом, если веб сервер будет хранить конфиги в бд.
не знаю как в плеск, но вот например в syscp для того чтобы перезаписать новую директиву нужно пол файла удалить или весь и добавить просто с новой директивой - это криво... рано или поздно может похерится это, если будут перегрузы или еще что-то... потому что нету трансакции... (или я ошибаюсь?)
фастцжи если все равно на каком, то хорошо, тогда надо на 1.3 переходить, это точная информация, что всё равно на каком? где-то был что с динамическими странциа апачъ22 быстрее работает на 70% (точно не помню, но и не знаю в каком режиме пхп)paix писал(а): Кроме того, в большинстве случаев апач используется как пхп\сжи\фастцжи бекенд, что лишает смысла использовать всякие извраты 2го апача типа worker\perchaild etc.
в принципе все равно, лишь бы работало...
-
- лейтенант
- Сообщения: 863
- Зарегистрирован: 2007-09-24 12:41:05
- Откуда: dn.ua
- Контактная информация:
Re: free cp 4 web
syscp конфиги в базе данных не хранит(хранила).
fastcgi все равно на каком, главное чтобы prefork. На workere он постоянно падал, думаю на peruserid и подобных будет тоже самое. Эксперементировать желания нет.
На счет скорости, случайно не тесты Димы Котерова читал? на dklab.ru?
шутка.
fastcgi все равно на каком, главное чтобы prefork. На workere он постоянно падал, думаю на peruserid и подобных будет тоже самое. Эксперементировать желания нет.
На счет скорости, случайно не тесты Димы Котерова читал? на dklab.ru?

With best wishes, Sergej Kandyla
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: free cp 4 web
я вроде бы не говорил что она хранит в базе данных...paix писал(а):syscp конфиги в базе данных не хранит(хранила).
ну это ладно... все равно решаемо... хоть в базе, хоть нет...
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: free cp 4 web
не много не доделано, если надо делаю
Код: Выделить всё
use Apache::Admin::Config;
my $conf = new Apache::Admin::Config '/$qhost',
or die $Apache::Admin::Config::ERROR;
my $vhost;
my %templ_value;
my $templ_value;
my ( $serveradmin, $serveralis, $costomlog, $errorlog, @drtvs4 );
foreach my $vh ( $conf->section('VirtualHost') ) {
if ( $vh->directive('ServerName')->value eq $nameserver ) {
$serveradmin = $vh->directive('ServerAdmin');
$serveralis = $vh->directive('ServerAlias');
$costomlog = $vh->directive('CustomLog');
$errorlog = $vh->directive('ErrorLog');
@drtvs4 = $vh->directive('ErrorDocument');
}
}
my $template = HTML::Template->new(
filename => $dir . 'tempele-apache22-aid.html',
die_on_bad_params => '0'
);
my $url = $query->url( -relative => 1 );
$template->param( URL => $url );
$template->param( AID => $aid );
if ( defined($saa) ) {
if ($serveradmin) {
use Data::Validate::Email qw(is_email);
if (
(
( length($saa) )
&& ( 70 > length($saa) )
&& ( 5 < length($saa) )
)
&& ( is_email($saa) )
)
{
foreach my $vh ( $conf->section('VirtualHost') ) {
if ( $vh->directive('ServerName')->value eq $nameserver ) {
$vh->directive('ServerAdmin')->set_value($saa);
}
}
$conf->save;
#my $okssa="ok add ServerAdmin";
}
else { %templ_value = ( 'errorsa' => 1 ); }
} #else { $vh->add_directive(ServerAdmin => $saa) } }
if ($serveradmin) {
#my ($serveradmin);
# my $serveradmin=$vh->directive('ServerAdmin');
%templ_value = ( serveradmin => $serveradmin );
}
else { %templ_value = ( 'noserverserveradmin' => '1' ); }
$template->param( NOSERVERADMIN => $templ_value{'noserverserveradmin'} );
$template->param( SERVERADMIN => $templ_value{'serveradmin'} );
$template->param( ERRORSA => $templ_value{'errorsa'} );
my $addsa = $query->param("addsa");
if ( defined($addsa) ) {
use Data::Validate::Domain qw(is_domain);
if ( ( ( 70 > length($addsa) ) && ( 4 < length($addsa) ) )
&& ( is_domain($addsa) ) )
{
if ($serveralis) {
#my $serveralis=$vh->directive('ServerAlias');
my @serv_array = split( / /, $serveralis );
my $n = scalar(@serv_array);
my ( $match, $found, $item );
foreach $item (@serv_array) {
if ( $item eq $addsa ) { $match = $item; $found = 1; last; }
}
if ( !$found ) {
$serv_array[$n] = $addsa;
my $addsa2 = join( ' ', @serv_array );
foreach my $vh ( $conf->section('VirtualHost') ) {
if (
$vh->directive('ServerName')->value eq $nameserver )
{
$vh->directive('ServerAlias')->set_value($addsa2);
}
}
$conf->save;
}
else { %templ_value = ( 'addsa_found' => '1' ); }
}
}
else { %templ_value = ( 'addsa_noval' => '1' ); }
}
my $sadelete = $query->param("sadelete");
if ( defined($sadelete) ) {
if ($serveralis) {
my @serv_array;
@serv_array = split( / /, $serveralis );
my $n = scalar(@serv_array);
delete( @serv_array[$sadelete] );
my $addsa2 = join( ' ', @serv_array );
foreach my $vh ( $conf->section('VirtualHost') ) {
if ( $vh->directive('ServerName')->value eq $nameserver ) {
$vh->directive('ServerAlias')->set_value($addsa2);
}
}
$conf->save;
}
}
my $allsa = $query->param("allsa");
if ( defined($allsa) ) {
my $satooall = $query->param("satooall");
if ($serveralis) {
$satooall = $query->param("satooall");
my @serv_array;
@serv_array = split( / /, $serveralis );
my $n = scalar(@serv_array);
my $ss = "*.$nameserver";
if ( ( defined($satooall) ) && ( $satooall eq "1" ) ) {
if ( ( $n eq '2' ) && ( $serv_array[1] eq $ss ) ) {
%templ_value = ( 'satooall_in_use' => '1' );
}
else {
my $allsa2 = "$nameserver2 $ss";
foreach my $vh ( $conf->section('VirtualHost') ) {
if (
$vh->directive('ServerName')->value eq $nameserver )
{
$vh->directive('ServerAlias')->set_value($allsa2);
}
}
$conf->save;
}
}
elsif ( ( defined($satooall) ) && ( $satooall eq "2" ) ) {
if ( ( $n > 0 ) && ( $serv_array[1] ne $ss ) ) {
%templ_value = ( 'nosatooall_in_use' => '1' );
}
else {
my $allsa2 = $nameserver2;
foreach my $vh ( $conf->section('VirtualHost') ) {
if (
$vh->directive('ServerName')->value eq $nameserver )
{
$vh->directive('ServerAlias')->set_value($allsa2);
}
}
$conf->save;
}
}
else { %templ_value = ( 'no_satooall_param' => '1' ); }
}
}
my ( @serv_array, @array_for_template );
if ($serveralis) {
@serv_array = split( / /, $serveralis );
my $n = scalar(@serv_array);
my $ss = "*.$nameserver";
shift(@serv_array);
my $ns = 1;
@array_for_template;
@array_for_template =
map +{ savalue => $_, savalue2 => $aid, savalue3 => $ns++ },
@serv_array;
if ( ( $n eq 2 ) && ( $serv_array[1] eq $ss ) ) {
%templ_value = ( 'temlp_serveralis_all' => '1' );
}
else { %templ_value = ( 'notemlp_serveralis_all' => '1' ); }
}
else { %templ_value = ( 'noserveralis' => '1' ); }
$template->param(
TEMP_SERVERALIAS_ALL => $templ_value{'temlp_serveralis_all'} );
$template->param(
NOTEMP_SERVERALIAS_ALL => $templ_value{'notemlp_serveralis_all'} );
if ( $templ_value{'addsa_found'} ) {
$template->param( ADDSA_FOUND => 'ServerAlias found, not added' );
}
$template->param( ADDSA_NOVAL => $templ_value{'addsa_noval'} );
$template->param( SATOOALL_IN_USE => $templ_value{'satooall_in_use'} );
$template->param( NOSATOOALL_IN_USE => $templ_value{'nosatooall_in_use'} );
$template->param( NO_SATOOALL_IN_USE => $templ_value{'no_satooall_param'} );
if ( $templ_value{'notemlp_serveralis_all'} ) {
$template->param( SA8 => \@array_for_template );
}
my $oneoffcl = $query->param("oneoffcl");
if ( defined($oneoffcl) ) {
my $clvalue = $query->param("clvalue");
if ( $clvalue eq '1' ) {
if ($costomlog) { %templ_value = ( 'customlog_in_use' => '1' ); }
else {
my $dircl = "/home/$qhost/log/httpd-access.log combined";
foreach my $vh ( $conf->section('VirtualHost') ) {
if ( $vh->directive('ServerName')->value eq $nameserver ) {
$vh->add_directive( CustomLog => $dircl );
}
}
$conf->save;
}
}
elsif ( $clvalue eq '2' ) {
if ($costomlog) {
foreach my $vh ( $conf->section('VirtualHost') ) {
if ( $vh->directive('ServerName')->value eq $nameserver ) {
$vh->directive('CustomLog')->delete;
}
}
$conf->save;
}
else { %templ_value = ( 'no_customlog_in_use' => '1' ); }
}
else { %templ_value = ( 'no_clvalue' => '1' ); }
}
my $type_cl = $query->param("type_cl");
if ( defined($type_cl) ) {
my $typecls = $query->param("typecls");
if ($costomlog) {
my $customl_type = $costomlog;
my ( $file, $typelog ) = split( / /, $customl_type );
if ( ( $typecls eq '0' ) && ( $typelog eq 'combined' ) ) {
%templ_value = ( 'typecls_in_use_combined' => '1' );
}
elsif ( ( $typecls eq '0' ) && ( $typelog ne 'combined' ) ) {
my $typecls_value = "$file combined";
foreach my $vh ( $conf->section('VirtualHost') ) {
if ( $vh->directive('ServerName')->value eq $nameserver ) {
$vh->directive('CustomLog')->set_value($typecls_value);
}
}
$conf->save;
}
elsif ( ( $typecls eq '1' ) && ( $typelog eq 'common' ) ) {
%templ_value = ( 'typecls_in_use_common' => '1' );
}
elsif ( ( $typecls eq '1' ) && ( $typelog ne 'common' ) ) {
my $typecls_value = "$file common";
foreach my $vh ( $conf->section('VirtualHost') ) {
if ( $vh->directive('ServerName')->value eq $nameserver ) {
$vh->directive('CustomLog')->set_value($typecls_value);
}
}
$conf->save;
}
else { %templ_value = ( 'no_typecls' => '1' ); }
}
else { %templ_value = ( 'no_cl' => '1' ); }
}
if ($costomlog) {
$template->param( CLTRUE => '1' );
my ( $file, $typelog ) = split( / /, $costomlog );
if ( $typelog eq 'combined' ) {
$template->param( CLT_CD => '1' );
}
elsif ( $typelog eq 'common' ) {
%templ_value = ( 'customlogtype_cn' => '1' );
}
else { %templ_value = ( 'nocustomlogtype' => '1' ); }
}
else { %templ_value = ( 'nocustomlog' => '1' ); }
$template->param( CLT_CN => $templ_value{'customlogtype_cn'} );
$template->param( NOCLT => $templ_value{'nocustomlogtype'} );
$template->param( NOCLTRUE => $templ_value{'nocustomlog'} );
$template->param( CL_IN_USE => $templ_value{'customlog_in_use'} );
$template->param( NO_CL_IN_USE => $templ_value{'no_customlog_in_use'} );
$template->param( NO_CLVALUE => $templ_value{'no_clvalue'} );
$template->param(
TYPE_CL_IN_USE_D => $templ_value{'typecls_in_use_combined'} );
$template->param(
TYPE_CL_IN_USE_C => $templ_value{'typecls_in_use_common'} );
$template->param( NOTYPE_CL => $templ_value{'no_typecls'} );
$template->param( NO_CL_IN_USE => $templ_value{'no_cl'} );
if ($errorlog) {
%templ_value = ( 'errorlogtrue' => '1' );
}
else { %templ_value = ( 'noerrorlog' => '1' ); }
$template->param( ERRORLOG => $templ_value{'notemlp_serveralis_all'} );
$template->param( NOERRORLOG => $templ_value{'notemlp_serveralis_all'} );
my ( $type_errord, $tttt, $match_index2, @drtvs3 );
my $error_typeer_edadd;
sub eett1 {
my ( $type_errord, $edvalue, $edtvalue ) = @_;
if ( $type_errord ne '1' ) {
use Data::Validate::URI qw(is_uri);
if ( ( !length($edvalue) )
|| ( 65 < length($edvalue) )
|| ( 5 > length($edvalue) )
|| ( !is_uri($edvalue) ) )
{
my $error_typedoc2 = "1";
$error_typedoc = \$error_typedoc2;
return $error_typedoc;
}
}
if ( ( $type_errord > 0 ) && ( ( 3 == length($edtvalue) ) ) ) {
my ( $found, $item );
my @er_array = (
100, 101, 200, 201, 202, 203, 204, 205, 206, 300,
301, 302, 303, 304, 305, 400, 401, 402, 403, 404,
405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
415, 500, 501, 502, 503, 504, 505
);
foreach $item (@er_array) {
if ( $item eq $edtvalue ) { $found = 1; last; }
}
if ( !$found ) {
my $error_type2 = "1";
$error_type = \$error_type2;
return $error_type;
}
my $tttt2 = "1";
$tttt = \$tttt2;
return $tttt;
}
}
sub eett2 {
my ( $edtvalue, @drtvs4 ) = @_;
for my $loopindex ( 0 .. $#drtvs4 ) {
my ( $key, $value ) = split( / /, $drtvs4[$loopindex] );
push( @drtvs3, { $key => $value } );
}
my ( $match_key, $match_index, $found );
for my $loopindex ( 0 .. $#drtvs3 ) {
for my $key2 ( keys %{ $drtvs3[$loopindex] } ) {
if ( $key2 eq $edtvalue ) {
$drtvs3[$loopindex]{$key2};
$match_key = $key2;
$match_index = $loopindex;
$found = 1;
last;
}
}
}
print $match_index;
if ( !$found && $type_errord ne '2' ) {
my $error_typeer2 = "1";
$error_typeer = \$error_typeer2;
return $error_typeer;
}
if ( $found && $type_errord eq '2' ) {
my $error_typeer_edadd2 = "1";
$error_typeer_edadd = \$error_typeer_edadd2;
return $error_typeer_edadd;
}
$match_index2 = \$match_index;
return ( @drtvs3, $match_index2 );
}
my $eddelete = $query->param("eddelete");
my $edadd = $query->param("edadd");
my $edchange = $query->param("edchange");
if ( $eddelete || $edchange || $edadd ) {
my $edtvalue = $query->param("edtvalue");
my $edvalue = $query->param("edvalue");
if ( ( defined($eddelete) ) && (@drtvs4) ) {
$type_errord = "1";
}
elsif ( defined($edadd) ) {
$type_errord = "2";
}
elsif ( ( defined($edchange) ) && (@drtvs4) ) {
$type_errord = "3";
}
else { my $type_errord = "0"; }
eett1( $type_errord, $edvalue, $edtvalue );
if (
defined($$tttt)
&& eett2( $edtvalue, @drtvs4 )
&& ( ( defined($$match_index2) && $type_errord ne '2' )
|| ( !defined($$error_typeer_edadd) && $type_errord eq '2' ) )
)
{
if ( ( $type_errord eq '3' ) && defined($$match_index2) && @drtvs3 )
{
$drtvs3[$$match_index2] = { $edtvalue => $edvalue };
}
elsif ( ( $type_errord eq '2' ) && !defined($$error_typeer_edadd) )
{
my $match_index3;
if ( $#drtvs3 >= 0 ) { $match_index3 = $#drtvs3 + 1; }
else { $match_index3 = 0; }
print "99999 $match_index3 $#drtvs3 ";
$drtvs3[$match_index3] = { $edtvalue => $edvalue };
}
elsif (( $type_errord eq '1' )
&& defined($$match_index2)
&& @drtvs3 )
{
delete( @drtvs3[$$match_index2] );
}
else { exit; }
foreach my $vh ( $conf->section('VirtualHost') ) {
if ( $vh->directive('ServerName')->value eq $nameserver ) {
while ( $vh->directive('ErrorDocument') ) {
$vh->directive('ErrorDocument')->delete;
}
for my $loopindex2 ( 0 .. $#drtvs3 ) {
for my $key4 ( keys %{ $drtvs3[$loopindex2] } ) {
my $value_er = $drtvs3[$loopindex2]{$key4};
my $setvalue_error = "$key4 $value_er";
$vh->add_directive(
ErrorDocument => $setvalue_error );
}
}
}
}
$conf->save;
}
else {
$templ_value{'ed_error'} =
$$error_type ne '1' ? (0)
: $$error_type ne '1' ? (0)
: $$error_typeer ne '1' ? (0)
: $$error_typeer_edadd ne '1' ? (0)
: (1);
}
}
$template->param( ED_ERROR_VALUEDOC => $$error_typedoc );
$template->param( ED_ERROR_TYPEDOC => $$error_type );
$template->param( ED_ERROR_NO_USE => $$error_typeer );
$template->param( ED_ERROR_IN_USE => $$error_typeer_edadd );
$template->param( ED_ERROR => $templ_value{'ed_error'} );
my @arrayedout;
my @arrayedout2;
my @er_array = (
100, 101, 200, 201, 202, 203, 204, 205, 206, 300, 301, 302, 303, 304,
305, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
413, 414, 415, 500, 501, 502, 503, 504, 505
);
if (@drtvs4) {
for my $loopindex9 ( 0 .. $#drtvs4 ) {
my ( $key9, $value9 ) = split( / /, $drtvs4[$loopindex9] );
push( @arrayedout,
{ errort => $key9, erroru => $value9, aid => $aid } );
}
for my $loopindex ( 0 .. $#drtvs4 ) {
my ( $key, $value ) = split( / /, $drtvs4[$loopindex] );
push @arrayedseen, $key;
}
my %seen;
@seen{@er_array} = ();
delete @seen{@arrayedseen};
my @aonly = sort keys %seen;
if ( @aonly > 0 ) {
@arrayedout2 = map +{ errortype => $_ }, @aonly;
}
else {
%templ_value = ( 'errortype_limit' => '1' );
}
}
else {
@arrayedout2 = map +{ errortype => $_ }, @er_array;
}
if ( $templ_value{'errortype_limit'} ) {
$template->param( ERRORTYPELIMIT => $templ_value{'errortype_limit'} );
}
else { $template->param( ADDDOCUM => \@arrayedout2 ); }
$template->param( SA10 => \@arrayedout );
$template->param( AUTHORIZE => $authorize );
$template->param( WELCOME => $welcome );
$template->param( USERSE => $$session{'name'} );
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: free cp 4 web
как делать тарифный план, нужно для сайта или для сайтов делать?
1 тип: 1 сайт - 50Мб - 1$ - 300М трафа - 2 ящика
1 сайт - 50Мб - 1.5$ - 300М трафа - 2 ящика- ssl - pgsql
или 2 тип: 10 сайтов - 200Мб - 4$ - 500М трафа - 20 ящиков
10 сайтов - 200Мб - 5$ - 500М трафа - 20 ящиков - ssl - pgsql
как правильно, если эти 4 варианта СРАЗУ, то не много геморойно будет писать код...
ну и если 1 сайт из 10 съест весь траф или спам будет отправлять, то другие тоже будут страдать их закроют или скорость меньше будет...
тут как квоту поставить для групы чтоли надо, если несколько сайтов на одну квоту (во втором типе) ??
или использовать первый вариант?
я просто видел что многие почему-то использют в тарифных планах несколько сайтов, не понятно как тут правильно...
(для первого типа:
один сайт - один домен - и одна квота - один пользователь.
следеющий сайт, если надо или если поодомен хочу:
один сайт - один домен (или поддомен другой с него) - и одна квота - один пользователь)
1 тип: 1 сайт - 50Мб - 1$ - 300М трафа - 2 ящика
1 сайт - 50Мб - 1.5$ - 300М трафа - 2 ящика- ssl - pgsql
или 2 тип: 10 сайтов - 200Мб - 4$ - 500М трафа - 20 ящиков
10 сайтов - 200Мб - 5$ - 500М трафа - 20 ящиков - ssl - pgsql
как правильно, если эти 4 варианта СРАЗУ, то не много геморойно будет писать код...
ну и если 1 сайт из 10 съест весь траф или спам будет отправлять, то другие тоже будут страдать их закроют или скорость меньше будет...
тут как квоту поставить для групы чтоли надо, если несколько сайтов на одну квоту (во втором типе) ??
или использовать первый вариант?
я просто видел что многие почему-то использют в тарифных планах несколько сайтов, не понятно как тут правильно...
(для первого типа:
один сайт - один домен - и одна квота - один пользователь.
следеющий сайт, если надо или если поодомен хочу:
один сайт - один домен (или поддомен другой с него) - и одна квота - один пользователь)
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: free cp 4 web
ну ты монстр )))) стока всего написал и ничё не понятно )) пока это не нужно, нужна система управления клиентами.