#!/usr/bin/perl -w
use CGI;
$Q = new CGI;
$ENV{'PATH'} = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$ENV{'PATH'}";
my %msg = (
ru => {
page_title => "Установка BILLmanager",
versiondesc => "Выберите версию BILLmanager, которая будет установлена на ваш сервер.",
mysqldesc => "Пожалуйста, укажите параметры соединения с базой данных MySQL. Обращаем ваше внимание, что база данных должна быть создана в кодировке UTF8",
mysqlhost => "Сервер",
mysqldb => "База данных",
mysqluser => "Пользователь",
mysqlpass => "Пароль",
mysqlsock => "Путь до сокета mysql",
ahttpdesc => "В целях безопасности, работа с BILLmanager осуществляется по протоколу HTTPS, обеспечивающему безопасную передачу данных. Однако использование HTTPS протокола возможно не всегда. Если ваш сайт не поддерживает HTTPS, то стоит разрешить использовать обычный HTTP протокол.",
ahttp => "Разрешить соединение по HTTP протоколу",
apassdesc => "Вам необходимо задать пароль администратора BILLmanager. Обязательно запомните его.",
apass => "Пароль пользователя admin",
apass2 => "Повторите пароль",
butinstall => "Установить",
installdesc => "Процедура установки BILLmanager может занять продолжительное время. Пожалуйста, запаситесь терпением и не прерывайте процедуру установки.",
er_fetch => "Ошибка: На сервере нет ни одной из следующих программ: fetch, wget, curl. Обратитесь к вашему хостинг провайдеру.",
er_md5 => "Ошибка: На сервере не найдено программы для проверки контрольной суммы: /sbin/md5 или /usr/bin/md5sum. Обратитесь к вашему хостинг провайдеру.",
er_arch => "Ошибка: Не удаётся определить архитектуру сервера.",
er_os => "Ошибка: Установка на вашу операционную систему невозможна.",
er_mysql => "Ошибка: На сервере не удалось найти команду mysql. Обратитесь к вашему хостинг провайдеру.",
er_tar => "Ошибка: На сервере не удалось найти команду tar. Обратитесь к вашему хостинг провайдеру.",
er_lic => "Ошибка: Лицензий BILLmanager на ваш IP-адрес %s не существует.",
er_version => "Ошибка: Неправильно указана версия BILLmanager.",
er_mhost => "Ошибка: Неправильно указана Сервер MySQL.",
er_mdb => "Ошибка: Неправильно указана База данных MySQL.",
er_muser => "Ошибка: Неправильно указана Пользователь MySQL.",
er_mpass => "Ошибка: Неправильно указана Пароль к MySQL.",
er_msock => "Ошибка: Неправильно указана Путь до сокета MySQL.",
er_mconnect => "Ошибка: Не удалось соединиться с базой данных по указанным вами параметрам.",
er_apass => "Ошибка: Не задан пароль пользователя admin.",
er_apassconfirm => "Ошибка: Пароль пользователя admin и подтверждение пароля не совпадают.",
er_md5sum => "Ошибка: Не прошла проверка контрольной суммы MD5. Вероятно архив BILLmanager скачен некорректно. Пожалуйста, попробуйте еще раз.",
er_fopen => "Ошибка: Невозможно открыть файл %s",
er_setpasswd => "Ошибка: Невозможно установить пароль пользователя. Ответ системы: %s",
},
en => {
page_title => "Installing BILLmanager",
versiondesc => "Select a BILLmanager version that will be installed on your server.",
mysqldesc => "Specify parameters to connect to the MySQL database. Please note, you should use UTF8 encoding to create a database",
mysqlhost => "Server",
mysqldb => "Database",
mysqluser => "User",
mysqlpass => "Password",
mysqlsock => "MySQL SOCK",
ahttpdesc => "For security purposes, work with BILLmanager is provided via an HTTPS protocol that allows secure data transfer. But there may be situations when it is not possible to use HTTPS. If your site does not support HTTPS, use a common HTTP protocol.",
ahttp => "Allow connection via HTTP",
apassdesc => "Provide a BILLmanager administrator's password. Please, keep it in mind.",
apass => "admin password",
apass2 => "Re-type the password",
butinstall => "Install",
installdesc => "It may take long time for the BILLmanager installation process to complete. Please be patient to complete the installation.",
er_root => "Error: Please run script as web-site user.",
er_fetch => "Error: Failed to find the following programs on the server: fetch, wget, curl. Contact your hosting provider.",
er_md5 => "Error: Failed to find the checksum program on the server: /sbin/md5 or /usr/bin/md5sum. Contact your hosting provider.",
er_arch => "Error: Cannot determinate the server architecture.",
er_os => "Error: Unable to install BILLmanager on your operating system.",
er_mysql => "Error: Failed to find a mysql command on the server. Contact your hosting provider.",
er_tar => "Error: Failed to find a tar command on the server. Contact your hosting provider.",
er_lic => "Error: A BILLmanager license for your IP-address %s does not exist.",
er_version => "Error: Incorrect BILLmanager version BILLmanager.",
er_mhost => "Error: Incorrect MySQL Server.",
er_mdb => "Error: Incorrect MySQL Database.",
er_muser => "Error: Incorrect MySQL User.",
er_mpass => "Error: Incorrect MySQL Password.",
er_msock => "Error: Incorrect MySQL Sock.",
er_mconnect => "Error: Failed to connect to a database with specified parameters.",
er_apass => "Error: admin password required.",
er_apassconfirm => "Error: admin password and confirmation password do not match.",
er_md5sum => "Error: Failed to verify the MD5 checksum. The BILLmanager archive might have been downloaded incorrectly. Please try again.",
er_fopen => "Error: Failed to open the file %s",
er_setpasswd => "Error: Can not set a user password. Response of the system: %s",
}
);
my %data = ();
my $errormsg = "";
my $lang = "en";
if ( exists $ENV{HTTP_ACCEPT_LANGUAGE} && $ENV{HTTP_ACCEPT_LANGUAGE} =~ /ru/i ) { $lang = "ru"; }
my $CMD = 0;
if ( $#ARGV != -1 ) {
$CMD = 1;
for my $a ( @ARGV ) { if ( $a =~ /--(\w+)=(.*)/ ) { $data{$1} = $2; } }
$data{action} = "install";
use POSIX;
if ( &getuid() == 0 ) { &error("er_root"); }
}
if ( $CMD == 0 && !exists($ENV{HTTP_HOST}) ) {
&printCmdHelp();
}
if ( $CMD == 0 ) {
$data{action} = $Q->param("action");
}
my $fetch = "";
my $md5 = "";
my $server = "http://ru.download.ispsystem.com";
my $arch = "";
my $os = "";
my %md5Step = (
'/usr/bin/md5sum' => 0,
'/sbin/md5' => 3
);
# Server IP address
my $ip = $ENV{SERVER_ADDR};
if ( $CMD == 1 ) {
if ( exists($data{ip}) ) { $ip = $data{ip}; }
else {
my $ifcfg = `ifconfig`;
if ( $ifcfg =~ /inet.*?(\d+\.\d+\.\d+\.\d+)/s ) { $ip = $1; }
}
}
my @vers = ( "BILLmanager", "BILLmanager-Corporate", "BILLmanager-Advanced", "BILLmanager-Standart", "BILLmanager-RUCENTER" );
my @avers = ();
my %html = ();
&getHtml();
&initVars();
&getLicList();
if ( $data{action} eq "install" ) {
&install();
}
&step1();
sub step1 {
$data{version} = $Q->param("version");
$data{mhost} = $Q->param("mhost");
$data{mdb} = $Q->param("mdb");
$data{muser} = $Q->param("muser");
$data{mpass} = $Q->param("mpass");
$data{msock} = $Q->param("msock");
$data{ahttp} = $Q->param("ahttp");
$data{apass} = $Q->param("apass");
$data{apass2} = $Q->param("apass2");
# Set title
my $content = $html{page};
$content =~ s/%TITLE%/&gm("page_title")/e;
# Error handling
if ( $errormsg ne "" ) { $errormsg = "