Скрипт для автоматического создания сабов

(Ответов: 3, Просмотров: 1648)
  1. Senior Member
    • Регистрация: 08.09.2009
    • Сообщений: 191
    • Репутация: 17
    Подскажите такой, желательно бесплатный
    Работать на cpanel, может юзает кто?
    Мне срочно нужен доктор...
    • 0
  2. Опытный Аватар для LIME
    • Регистрация: 02.09.2009
    • Сообщений: 420
    • Репутация: 16
    Вообще-то это не скрипт (ну разве только ты bash-скрипт имеешь в виду). Это делается с помощью bind, .htaccess и альясов в виртуальных хостах. Погугли на предмет wildcard domains. В Cpanel должна быть эта функция вроде.
    • 0
  3. Senior Member
    • Регистрация: 08.09.2009
    • Сообщений: 191
    • Репутация: 17
    LIME, погуглим..
    но вроде были такие скрипты отдельные..
    Мне срочно нужен доктор...
    • 0
  4. Гуру Аватар для 24110
    • Регистрация: 07.09.2009
    • Сообщений: 1,649
    • Репутация: 91
    У меня есть такой скрипт, писал для себя.
    В txt-шник забиваются названия доменов (можно как с www, так и без) и путь до SERVER_ROOT, где начинаются виртуальные хосты. Скрипт сам создает папки, смотрит, есть ли такие записи в httpd.conf, перезапускает сервак, смотрит ли все правильно поставилось. Вечером выложу, скриптик дома остался :)

    Bump:
    PHP код:
    <?php

    $SERVER_ROOT 
    '/var/www';
    $APACHE_CONFIG  '/etc/httpd/conf/httpd.conf';
    #$APACHE_CONFIG = '/etc/apache2/httpd.conf';
    $DOMAINS_FILE './domains.txt';


    if ( ! 
    file_exists($SERVER_ROOT) )
    {
            echo 
    'Missing SERVER_ROOT: ' $SERVER_ROOT;
            die();
    }

    if ( ! 
    file_exists($APACHE_CONFIG) )
    {
            echo 
    'Missing Apache congif: ' $APACHE_CONFIG;
            die();
    }

    if ( ! 
    file_exists($DOMAINS_FILE) )
    {
            echo 
    'Missing domains list: ' $DOMAINS_FILE;
            die();
    }

    $domains array_values($domains);


    foreach ( 
    $domains as $k=>$v )
    {
            
    $res add_site($v);
            if ( 
    FALSE === $res )
                    echo 
    '~~Can\'t add ' $v '~~' PHP_EOL;
            else if ( 
    TRUE === $res  )
                    echo 
    $v ' was successfully added' PHP_EOL;
            else
                    echo 
    '## ' $res '  ##' PHP_EOL;


            if ( 
    restart_apache() )
                    echo 
    '~~Apache was restarted~~' PHP_EOL;
            else
                    echo 
    '~~Can\'t restart Apache~~' PHP_EOL;
    }


    function 
    add_site($site_url)
    {
            global 
    $SERVER_ROOT$APACHE_CONFIG;

            
    $SERVER_ROOT rtrim($SERVER_ROOT'/');

                    
    // let's count dots '.'
                    
    $dots_cnt substr_count($site_url'.');

                    if ( ! 
    in_array($dots_cnt, array(1,2)) )
                            return 
    FALSE;

                    
    $subdomain '';
    if ( 
    == $dots_cnt // 2nd level domain
                    
    {
                            
    // make folders
                            
    if ( ! file_exists$SERVER_ROOT '/' $site_url ) )
                            {
                                    
    mkdir($SERVER_ROOT '/' $site_url);
                                    
    mkdir($SERVER_ROOT '/' $site_url '/htdocs'0775);
                                    if ( ! 
    file_exists($SERVER_ROOT '/' $site_url) || ! file_exists($SERVER_ROOT '/' $site_url '/htdocs'))
                                            return 
    FALSE;
                            }
                    }
                    else 
    // 3rd level domain or SUBDOMAIN
                    
    {
                            
    $first_dot_position strpos($site_url'.');
                            if ( 
    FALSE === $first_dot_position )
                                    return 
    FALSE;

                            
    $subdomain '/' substr($site_url0$first_dot_position);

                            
    $site_url substr($site_urlstrlen($subdomain));

                            
    // domain
                            
    if ( ! file_exists$SERVER_ROOT '/' $site_url ) )
                            {
                                    
    mkdir($SERVER_ROOT '/' $site_url); // domain
                            
    }
                            if ( ! 
    file_exists$SERVER_ROOT '/' $site_url '/htdocs' ) )
                            {
                                    
    mkdir($SERVER_ROOT '/' $site_url '/htdocs');
                            }
                            if ( ! 
    file_exists$SERVER_ROOT '/' $site_url '/htdocs' $subdomain )   )
                            {
                                    
    mkdir($SERVER_ROOT '/' $site_url '/htdocs' $subdomain); // subdomain
                            
    }

                                    if ( ! 
    file_exists($SERVER_ROOT '/' $site_url) || ! file_exists($SERVER_ROOT '/' $site_url '/htdocs') || ! file_exists($SERVER_ROOT '/' $site_url '/htdocs' $subdomain) )
                                            return 
    FALSE;
                    }
         
    // if httpd.conf already has this VirtualHost
            
    $httpd_conf file_get_contents($APACHE_CONFIG);
            if ( ! 
    strlen($subdomain) )
                    
    $pattern '~\s+'.preg_quote($site_url).'\s+~is';
            else
                    
    $pattern '~\s+'.preg_quote(trim($subdomain,'/').'.'.$site_url).'\s+~is';

            if ( 
    preg_match($pattern$httpd_conf) )
                    return 
    $site_url $subdomain ' is already exists in httpd.conf';

            
    // lets's open httpd.conf
            
    $conf fopen($APACHE_CONFIG'a+');
            if ( ! 
    $conf )
            {
                    echo 
    'Cant\'t open httpd.conf in ' $APACHE_CONFIG '<br />';
                    return 
    FALSE;
            }

            
    $message  '<VirtualHost *:80>' PHP_EOL;
            
    $message .= '    ServerAdmin webmaster@dummy-host.example.com' PHP_EOL;
            
    $message .= '    DocumentRoot /var/www/' $site_url '/htdocs' $subdomain PHP_EOL;
            if ( 
    strlen($subdomain) )
            {
                    
    $message .= '    ServerName ' trim($subdomain'/') . '.' $site_url PHP_EOL;
                    
    $message .= '    ServerAlias www.' trim($subdomain'/') . '.' .  $site_url PHP_EOL;
            }
            else
            {
                    
    $message .= '    ServerName ' $site_url PHP_EOL;
                    
    $message .= '    ServerAlias www.' .  $site_url PHP_EOL;
            }
            
    $message .= '    ErrorLog /var/www/' $site_url '/' strtoupper(trim($subdomain'/')) .'error_log' PHP_EOL;
            
    $message .= '    CustomLog /var/www/' $site_url '/' strtoupper(trim($subdomain'/')) .'access_log common' PHP_EOL;
            
    $message .= '</VirtualHost>' PHP_EOL PHP_EOL;

            
    fwrite($conf$message);
            
    fclose($conf);

            return 
    TRUE;
    }


    function 
    restart_apache($command '/etc/rc.d/init.d/httpd restart')
    {
            if ( 
    exec($command) )
                    return 
    TRUE;

            return 
    FALSE;
    }

    function 
    xmp($arr)
    {
            echo 
    '<xmp>';
            
    print_r($arr);
            echo 
    '</xmp>';
    }

    ?>
    Если я не ошибаюсь, то это последняя редакция скрипта. Если кто будет пробовать и не получится - пишите в личку, разберемся :)
    Парам-пам-пам!
    • 0

    Спасибо сказали:

    BABBLS(17.09.2009), LEO(28.09.2009), Mangock(18.09.2009),

Похожие темы

Темы Раздел Ответов Последний пост
Сервис автоматического продвижения от Ашманова
Софт, скрипты, сервисы 12 14.04.2010 01:24
Новый сервис автоматического создания сайтов
Реклама партнерских программ 7 05.02.2010 16:44
Посоветуйте программу для автоматического заполнения форм
Софт, скрипты, сервисы 14 26.11.2009 22:46
WP-poster - класс для автоматического постинга Wordpress и подобных.
Софт, скрипты, сервисы 2 18.09.2009 14:47
Автоматическое создание сабов на DirectAdmin
Софт, скрипты, сервисы 7 10.09.2009 22:37

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры