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 : /proc/self/root/usr/local/siteapps/phpMyFamily-1.4.1-15/scripts/ |
Current File : //proc/self/root/usr/local/siteapps/phpMyFamily-1.4.1-15/scripts/reconfigure |
#!/usr/bin/perl -w use strict; use File::Path; use File::Copy; my %params; my %psa_params; my @imp_params = qw( vhost_path domain_name install_prefix ssl_target_directory dbuser dbpasswd dbname admin_name admin_passwd admin_email ); my $is_error=0; sub print_out { my ($text) = @_; print STDERR $text; } 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_out "reconfigure: 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_out "reconfigure: can't open file `$fname` for writing\n"; return 0; } print F $file_content; close F; return 1; } sub mysql_quote { my @params = @_; my $size = @params; if (0 == $size) { return; } my $i; for ($i=0; $i<$size; $i++) { unless (defined $params[$i]) { $params[$i] = ''; } else { # replace ' for \' # replace \ for \\ $params[$i] =~ s/\\/\\\\/g; $params[$i] =~ s/'/\\'/g; } } if (wantarray( )) { return @params; } elsif (defined wantarray( )) { return $params[0]; } else { return; } } sub php_quote { my @params = @_; my $size = @params; if (0 == $size) { return; } my $i; for ($i=0; $i<$size; $i++) { unless (defined $params[$i]) { $params[$i] = ''; } else { # replace ' for \' # replace \ for \\ $params[$i] =~ s/\\/\\\\/g; $params[$i] =~ s/'/\\'/g; } } if (wantarray( )) { return @params; } elsif (defined wantarray( )) { return $params[0]; } else { return; } } sub shell_quote { my @params = @_; my $size = @params; if (0 == $size) { return; } my $i; for ($i=0; $i<$size; $i++) { unless (defined $params[$i]) { $params[$i] = ''; } else { # replace ' for \' # replace \ for \\ $params[$i] =~ s/\\/\\\\/g; $params[$i] =~ s/"/\\\"/g; $params[$i] =~ s/\$/\\\$/g; } } if (wantarray( )) { return @params; } elsif (defined wantarray( )) { return $params[0]; } else { return; } } # parse input to hash while (<STDIN>){ my ($k,$v); if (/^([^=]+)=(.+)$/){ $v = $2; chomp $v; $k = $1; $params{"$k"} = $v; } } # parse plesk config file open PSACONF, '/etc/psa/psa.conf'; while (<PSACONF>){ chomp; unless (/^#/){ if (/^(\s*[_a-zA-Z]+)\s+(.+?)\s*$/){ $psa_params{$1} = $2; } } } close PSACONF; # check important parameters foreach (@imp_params){ unless (check_parameter($_)){ print_out "reconfigure: parameter `$_` not found\n"; $is_error = 1; } } if ($is_error){ exit 1; } # remote DB checking my ($dbhost, $dbport, $dbremote_params, $dbhostport); $dbremote_params = ''; $dbhost = 'localhost'; $dbhostport = $dbhost; 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}\" "; $dbhostport = $dbhost; if (defined $params{'dbport'} && $params{'dbport'} ne '') { $dbport = $params{'dbport'}; $dbhostport .= ":${dbport}"; $m_dbport = shell_quote($dbport); $dbremote_params .= " --port=\"${m_dbport}\" "; } } # check SSL my $ssl_enable; my $documents_directory; my $proto; if ($params{'ssl_target_directory'} eq 'true'){ $documents_directory = 'httpsdocs'; $ssl_enable = "1"; $proto = 'https'; } else { $documents_directory = 'httpdocs'; $ssl_enable = "0"; $proto = 'http'; } # set base variables if ($params{install_prefix} eq '.') { $params{install_prefix} = ''; } else { $params{install_prefix} = '/' . $params{install_prefix}; } my $root_dir = $params{'vhost_path'}.'/'.$documents_directory.$params{install_prefix}; my $app_url = $proto . '://' . $params{domain_name} . $params{install_prefix}; my $config_file = "${root_dir}/inc/config.inc.php"; my $config_file_in = $config_file . '.in'; # generate config file my %config_params = ( 'DBNAME' => php_quote($params{dbname}), 'DBHOSTPORT' => php_quote($dbhostport), 'DBUSER' => php_quote($params{dbuser}), 'DBPASSWD' => php_quote($params{dbpasswd}), 'APPURL' => php_quote($app_url), 'ADMIN_EMAIL' => php_quote($params{admin_email}), 'DESCR' => php_quote($params{description}), 'DOMAIN_NAME' => php_quote($params{domain_name}) ); unless (copy($config_file_in, $config_file)) { print_out "couldn't copy config file\n"; exit 1; } unless (modify_file($config_file, \%config_params)) { print_out "couldn't change file ${config_file}\n"; exit 1; } # change permissions chmod 0777, $root_dir . '/images'; chmod 0777, $root_dir . '/docs'; # modifying database my $mysql_query_file = "${root_dir}/mysql-reconfig.sql"; unless (open F, ">${mysql_query_file}") { print_out "Unable to create mysql-query file\n"; exit 1; } my ($m_admin_name, $m_admin_pass, $m_admin_email) = mysql_quote($params{admin_name}, $params{admin_passwd}, $params{admin_email}); print F "UPDATE family_users SET username='${m_admin_name}', email = '${m_admin_email}' "; if (lc($m_admin_pass) ne 'none') { print F ", password=md5('${m_admin_pass}')" } print F " WHERE id='43';"; close F; my $mysql_bin = $psa_params{'MYSQL_BIN_D'}.'/mysql'; my ($m_dbuser, $m_dbpass, $m_dbname) = shell_quote($params{'dbuser'}, $params{'dbpasswd'}, $params{'dbname'}); my $mysql_cmd = "${mysql_bin} ${dbremote_params} -u\"${m_dbuser}\" -p\"${m_dbpass}\" \"${m_dbname}\" <${mysql_query_file}"; my $mysql_res = `$mysql_cmd`; if ($?){ print_out "couldn't modify data in the database:\n${mysql_res}\n"; $is_error = 1; } unlink($mysql_query_file); if (-e $mysql_query_file) { print_out "unable to delete file `${mysql_query_file}`: $!\nPlease remove it manually!"; $is_error = 1; } if ($is_error) { exit 1; }
Cokiee Shell Web 1.0, Coded By Razor
Neueste Kommentare