free cp 4 web

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение zingel » 2008-09-01 23:41:26

на GTK.....

/me - почувствовал рядом линукз
Z301171463546 - можно пожертвовать мне денег

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-09-01 23:43:05

почему именно линукс?

http://gtk2-perl.sourceforge.net/doc/intro/
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение zingel » 2008-09-01 23:52:10

я не говорил, что GTK = linux, не надо =)

P.s. кодить можно на том, что нравится
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-09-01 23:55:52

я тоже не говорил что linux - это кодить :-D :drinks:
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: free cp 4 web

Непрочитанное сообщение zg » 2008-09-02 8:09:23

ProFTP писал(а):openldap?

кстате, может пойти другим путем, написать на GTK2+ клиент-сервер... :evil:
ldap пока не надо трогать, всё должно быть завязано на конфигах и базе данных, чем больше связок, тем нестабильней система. GTK лесом, вебморды за глаза хватит.

paix
лейтенант
Сообщения: 863
Зарегистрирован: 2007-09-24 12:41:05
Откуда: dn.ua
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение paix » 2008-09-03 13:04:06

zg писал(а):собственно как я вижу эту панель: логинишься, попадаешь в панель управления, там есть список клиентов, за каждым клиентов закреплены домены. На домен вешается хостинг, фтп и почта. Так же идёт автоподдержка ДНС домена первичная или вторичная. Собстевнно и хостинг и почта должны быть в рамках домена. То есть будет кнопочка "добавить домен", нажав на которую создастся виртуал хост с поддержкой домена, а на него уже будет идти почта и фтп. Этого функционала хватит за глаза на первое время, всё остальное через правку конфигов. Остальные сервисы, типа PMA. клуглого куба и даже постфиксадмина, должны ставиться уже после установки основного пакета, то есть идти просто дополнениями.

Я скоро займусь веб-мордой всего этого дела, думаю и екзим туда же прикручу со временем, чтоб от постфиксадмина не зависеть.
охота вам геморой на свою Ж ;)
syscp это уже давно все умеет, и еще кучу всего, необходимость которого вы еще не осознали ;)

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

ЗЫ. по поводу пакетов не вчитался. Но с пакетами, я полагал, ситуация очевидна! Под релизы закреплены версии софта, под стейбл - нет. Но как правило пакеты со стейбла успешно ставятся и на ближайший релиз.
With best wishes, Sergej Kandyla

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: free cp 4 web

Непрочитанное сообщение zg » 2008-09-03 15:24:46

paix писал(а):охота вам геморой на свою Ж
гм.. странный вопрос, гемморой уже есть, плеск называется :-D
paix писал(а):syscp это уже давно все умеет, и еще кучу всего, необходимость которого вы еще не осознали
несомненно, я даже не буду спорить :smile: проект, который тут пока планируется, всего лишь альтернатива. Да и квалификацию тоже надо повышать.
paix писал(а):разве что изобрести еще один кастыль для получения опыта....
ага :smile: лично я ещё не выпустил ни одного готового продукта, хотя разработал не одну систему.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-09-05 3:14:34

управление jail'ами?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: free cp 4 web

Непрочитанное сообщение zg » 2008-09-05 6:20:34

ProFTP писал(а):управление jail'ами?
погоди пока

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-09-05 8:08:57

а для хостинга может мало потребности просто будет... то есть чтобы не повторять всё за плеск...

потому что VDS дешевеет, за 30$ в месяц можно найти, и прямо там станет сайтов штук 50 маленьких...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-09-06 18:24:25

1)а как быть с файлми конфигурации от какого пользователя читать/записывать файлы конфигов apache22, это в jail держать apache надо?

2) я так понял что держать конфиги в SQLite/MySQL не реализуемо, потому что нигде этого нету, почему-то...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: free cp 4 web

Непрочитанное сообщение zg » 2008-09-07 8:38:08

держать конфиги апача в базе нецелесообразно не стоит - появляется лишняя ненужная зависимость от MySQL, тем более, что данные хранятся в неструктурированном виде, просто как текстовые файлы, смысла нет.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-09-07 18:38:46

есть такое как SQLite и BerkleyDB

кстате, на апаче это не реализуемо если полноценно все директивы ставить в таблицу, нужно все модули переписывать, и половину самого апача..

на других ве серверах это есть всё...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-09-13 11:24:04

хочеться спросить про то большая ли разница испольховать apache13 или apache22??

просто есть пару модов для apache13 которые позваоляют вставлять в MySQL или SQLite таблицу много директив


вот например единственный модуль mod_vhost_dbi для apache20-22 поддреживает только некоторые директивы, всего 3 или 4, автор модуля написал что для того чтобы добавить все директивы, то надо половину апача переписывать и все его моды... :fool:

все таки очень хорошо было бы если через DB
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: free cp 4 web

Непрочитанное сообщение zg » 2008-09-13 13:38:25

работает?

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-09-13 13:45:56

что именно? :Search:

вы про апачъ?

вот тут многе директивы http://www.lissyara.su/?id=1151

и тут но не знаю что там http://www.lissyara.su/?id=1140

и еще один есть в нем SSL можно поставить директивы...

есть смысл ставить 1.3, или может какой нить другой сервер , или забить на БД?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: free cp 4 web

Непрочитанное сообщение zg » 2008-09-13 16:06:27

ProFTP писал(а):есть смысл ставить 1.3, или может какой нить другой сервер , или забить на БД?
я бы пока забил :smile: текстовые файлики меня вполне устраивают

paix
лейтенант
Сообщения: 863
Зарегистрирован: 2007-09-24 12:41:05
Откуда: dn.ua
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение paix » 2008-09-15 12:06:24

ProFTP писал(а):что именно? :Search:

есть смысл ставить 1.3, или может какой нить другой сервер , или забить на БД?
чем проще тем лучше.
Я первый, кто не будет пользоваться сим продуктом, если веб сервер будет хранить конфиги в бд.

насчет апач1 вс апач2.
Если вы не знаете какие фишки того или иного апача вам нужны - то пользовать что без разницы.

Апач1 очень добротный и сильно попилянный. Кроме того к нему много кастыличиков имеется, которые апач 2 не умеет.
например mod_aclr и подобные.
Кроме того, в большинстве случаев апач используется как пхп\сжи\фастцжи бекенд, что лишает смысла использовать всякие извраты 2го апача типа worker\perchaild etc.

Единственное, что мне нравится во 2ом, это удобная реализация include.

И вообще, если можно неюзать апач, лучше его не юзать :-)
With best wishes, Sergej Kandyla

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: free cp 4 web

Непрочитанное сообщение zg » 2008-09-15 12:57:37

paix писал(а):И вообще, если можно неюзать апач, лучше его не юзать :-)
мне от апача нужны кодировки, виртуал хосты, SSL, suexec, .htaccess, авторизация и mod_rewrite :smile: а так всё-равно апач, не апач, первый, не первый, второй или малиновый, лишь бы работало :smile:

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-09-16 9:04:21

paix писал(а): чем проще тем лучше.
Я первый, кто не будет пользоваться сим продуктом, если веб сервер будет хранить конфиги в бд.
можно сразу и в текстовом, и в бд
не знаю как в плеск, но вот например в syscp для того чтобы перезаписать новую директиву нужно пол файла удалить или весь и добавить просто с новой директивой - это криво... рано или поздно может похерится это, если будут перегрузы или еще что-то... потому что нету трансакции... (или я ошибаюсь?)
paix писал(а): Кроме того, в большинстве случаев апач используется как пхп\сжи\фастцжи бекенд, что лишает смысла использовать всякие извраты 2го апача типа worker\perchaild etc.
фастцжи если все равно на каком, то хорошо, тогда надо на 1.3 переходить, это точная информация, что всё равно на каком? где-то был что с динамическими странциа апачъ22 быстрее работает на 70% (точно не помню, но и не знаю в каком режиме пхп)


в принципе все равно, лишь бы работало...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

paix
лейтенант
Сообщения: 863
Зарегистрирован: 2007-09-24 12:41:05
Откуда: dn.ua
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение paix » 2008-09-16 11:32:54

syscp конфиги в базе данных не хранит(хранила).

fastcgi все равно на каком, главное чтобы prefork. На workere он постоянно падал, думаю на peruserid и подобных будет тоже самое. Эксперементировать желания нет.

На счет скорости, случайно не тесты Димы Котерова читал? на dklab.ru? :) шутка.
With best wishes, Sergej Kandyla

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-09-16 11:46:34

paix писал(а):syscp конфиги в базе данных не хранит(хранила).
я вроде бы не говорил что она хранит в базе данных...
ну это ладно... все равно решаемо... хоть в базе, хоть нет...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-10-14 5:36:21

не много не доделано, если надо делаю

Код: Выделить всё

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'} );
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: free cp 4 web

Непрочитанное сообщение ProFTP » 2008-10-14 6:16:07

как делать тарифный план, нужно для сайта или для сайтов делать?

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 съест весь траф или спам будет отправлять, то другие тоже будут страдать их закроют или скорость меньше будет...


тут как квоту поставить для групы чтоли надо, если несколько сайтов на одну квоту (во втором типе) ??

или использовать первый вариант?
я просто видел что многие почему-то использют в тарифных планах несколько сайтов, не понятно как тут правильно...


(для первого типа:
один сайт - один домен - и одна квота - один пользователь.

следеющий сайт, если надо или если поодомен хочу:

один сайт - один домен (или поддомен другой с него) - и одна квота - один пользователь)
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: free cp 4 web

Непрочитанное сообщение zg » 2008-10-14 20:30:40

ну ты монстр )))) стока всего написал и ничё не понятно )) пока это не нужно, нужна система управления клиентами.