Ejemplo n.º 1
0
/**
 * The Procedure for the tuning-primer Shell script
 * 
 * @param Menu $backMenu The Menu for return
 * 
 * @return void
 */
function tuningPrimerProcedure(Menu $backMenu)
{
    $procedure = new Procedure();
    echo "Select a mode:\n\n";
    echo "[1] All (perform all checks) [default]\n";
    echo "[2] Prompt (prompt for login credintials and socket and execution mode)\n";
    echo "[3] Memory (run checks for tunable options which effect memory usage)\n";
    echo "[4] Disk, file (run checks for options which effect i/o performance or file handle limits)\n";
    echo "[5] InnoDB (run InnoDB checks)\n";
    echo "[6] Misc (run checks for that don't categorise" . " well Slow Queries, Binary logs, Used Connections and Worker Threads)\n";
    echo "[7] Banner (show banner info)\n";
    echo "-------------------------------------------------------------------------------\n";
    $choice = "0";
    $procedure->showReturnChoice($choice);
    $qt_mode = $procedure->createQuestion("\nSelected mode: ");
    $mode = $procedure->askQuestion($qt_mode);
    switch ($mode) {
        case "1":
            $mode = "all";
            break;
        case "2":
            $mode = "prompt";
            break;
        case "3":
            $mode = "memory";
            break;
        case "4":
            $mode = "file";
            break;
        case "5":
            $mode = "innodb";
            break;
        case "6":
            $mode = "misc";
            break;
        case "7":
            $mode = "banner";
            break;
        case "":
            $mode = "all";
            break;
        case $choice:
            $procedure->clearScreen();
            $procedure->showMenu($backMenu, true);
        default:
            $procedure->clearScreen();
            cecho("Incorrect input", "red");
            echo "\n";
            setupProcedure($backMenu);
    }
    echo "\n";
    echo shell_exec("sh " . dirname(__FILE__) . "/tuning-primer.sh " . $mode) . "\n";
}
Ejemplo n.º 2
0
/**
 * The Procedure for the genMasterKey function
 *
 * @param Menu $backMenu The Menu for return
 *
 * @return void
 */
function genMasterKeyProcedure($backMenu)
{
    $procedure = new Procedure();
    $choice = "0";
    $procedure->showReturnChoice($choice);
    $qt_dirKey = $procedure->createQuestion("\nEnter the directory to create in a recursively way (ie /var/.mediboard/): ");
    $dirKey = $procedure->askQuestion($qt_dirKey);
    if ($dirKey === $choice) {
        $procedure->clearScreen();
        $procedure->showMenu($backMenu, true);
        exit;
    }
    $qt_apacheGrp = $procedure->createQuestion("\nApache user's group [default www-data]: ", "www-data");
    $apacheGrp = $procedure->askQuestion($qt_apacheGrp);
    echo "\n";
    genMasterKey($dirKey, $apacheGrp);
}
Ejemplo n.º 3
0
/**
 * The Procedure for the loguptime function
 * 
 * @param Menu $backMenu The Menu for return
 * 
 * @return void
 */
function logUptimeProcedure(Menu $backMenu)
{
    $procedure = new Procedure();
    $choice = "0";
    $procedure->showReturnChoice($choice);
    $qt_hostname = $procedure->createQuestion("Hostname [default localhost]: ", "localhost");
    $hostname = $procedure->askQuestion($qt_hostname);
    if ($hostname === $choice) {
        $procedure->clearScreen();
        $procedure->showMenu($backMenu, true);
        exit;
    }
    $qt_file = $procedure->createQuestion("File (target for log) [default /var/log/uptime.log]: ", "/var/log/uptime.log");
    $file = $procedure->askQuestion($qt_file);
    echo "\n";
    logUptime($file, $hostname);
}
Ejemplo n.º 4
0
/**
 * The Procedure for the logping function
 * 
 * @param Menu $backMenu The Menu for return
 * 
 * @return void
 */
function logPingProcedure(Menu $backMenu)
{
    $procedure = new Procedure();
    $choice = "0";
    $procedure->showReturnChoice($choice);
    $qt_hostname = $procedure->createQuestion("Hostname [default localhost]: ", "localhost");
    $hostname = $procedure->askQuestion($qt_hostname);
    if ($hostname === $choice) {
        $procedure->clearScreen();
        $procedure->showMenu($backMenu, true);
        exit;
    }
    $qt_dir = $procedure->createQuestion("File directory [default /var/log/ping]: ", "/var/log/ping");
    $dir = $procedure->askQuestion($qt_dir);
    $qt_output = $procedure->createQuestion("Output file [default {$hostname}.log]: ", "{$hostname}.log");
    $output = $procedure->askQuestion($qt_output);
    echo "\n";
    logPing($hostname, $output, $dir);
}
Ejemplo n.º 5
0
/**
 * The Procedure for the rotatebinlogs function
 * 
 * @param Menu $backMenu The Menu for return
 * 
 * @return void
 */
function rotateBinlogsProcedure(Menu $backMenu)
{
    $procedure = new Procedure();
    $choice = "0";
    $procedure->showReturnChoice($choice);
    $qt_userAdminDB = $procedure->createQuestion("MySQL username: "******"MySQL user password: "******"BinLogs directory [default /var/log/mysql]: ", "/var/log/mysql");
    $binLogsDir = $procedure->askQuestion($qt_binLogsDir);
    $qt_binLogIndexFilename = $procedure->createQuestion("BinLog index filename [default log-bin.index]: ", "log-bin.index");
    $binLogIndexFilename = $procedure->askQuestion($qt_binLogIndexFilename);
    $qt_backupDir = $procedure->createQuestion("Backup directory [default /mbbackup/binlogs]: ", "/mbbackup/binlogs");
    $backupDir = $procedure->askQuestion($qt_backupDir);
    echo "\n";
    rotateBinlogs($userAdminDB, $passAdminDB, $binLogsDir, $binLogIndexFilename, $backupDir);
}
Ejemplo n.º 6
0
/**
 * The Procedure for the sendfileftp function
 * 
 * @param Menu $backMenu The Menu for return
 * 
 * @return void
 */
function sendFileFTPProcedure(Menu $backMenu)
{
    $procedure = new Procedure();
    $choice = "0";
    $procedure->showReturnChoice($choice);
    $qt_hostname = $procedure->createQuestion("Hostname: ");
    $hostname = $procedure->askQuestion($qt_hostname);
    if ($hostname === $choice) {
        $procedure->clearScreen();
        $procedure->showMenu($backMenu, true);
        exit;
    }
    $qt_username = $procedure->createQuestion("Username: "******"File: ");
    $file = $procedure->askQuestion($qt_file);
    $qt_port = $procedure->createQuestion("Port [default 21]: ", 21);
    $port = $procedure->askQuestion($qt_port);
    $qt_passiveMode = $procedure->createQuestion("Switch to passive mode [y or n, default n]? ", "n");
    $passiveMode = $procedure->askQuestion($qt_passiveMode);
    $qt_ASCIIMode = $procedure->createQuestion("Switch to ASCII mode [y or n, default n]? ", "n");
    $ASCIIMode = $procedure->askQuestion($qt_ASCIIMode);
    $commandLine = "php " . dirname(__FILE__) . "/sendFileFTP.php " . $hostname . " " . $username . " " . $password . " " . $file;
    if ($port != "") {
        $commandLine .= " -p " . $port;
    }
    if ($passiveMode == "y") {
        $commandLine .= " -m";
    }
    if ($ASCIIMode == "y") {
        $commandLine .= " -t";
    }
    echo "\n";
    echo shell_exec($commandLine) . "\n\n";
}
Ejemplo n.º 7
0
/**
 * The Procedure for the request function
 * 
 * @param Menu $backMenu The Menu for return
 * 
 * @return void
 */
function requestProcedure(Menu $backMenu)
{
    $procedure = new Procedure();
    $choice = "0";
    $procedure->showReturnChoice($choice);
    $qt_rootURL = $procedure->createQuestion("Root URL (ie https://localhost/mediboard): ");
    $rootURL = $procedure->askQuestion($qt_rootURL);
    if ($rootURL === $choice) {
        $procedure->clearScreen();
        $procedure->showMenu($backMenu, true);
        exit;
    }
    $qt_username = $procedure->createQuestion("Username (ie cron): ");
    $username = $procedure->askQuestion($qt_username);
    $password = prompt_silent();
    $qt_params = $procedure->createQuestion("Params (ie m=dPpatients&tab=vw_medecins): ");
    $params = $procedure->askQuestion($qt_params);
    $qt_times = $procedure->createQuestion("Times (number of repetitions) [default 1]: ", 1);
    $times = $procedure->askQuestion($qt_times);
    $qt_delay = $procedure->createQuestion("Delay (time between each repetition) [default 1]: ", 1);
    $delay = $procedure->askQuestion($qt_delay);
    $qt_file = $procedure->createQuestion("File (file for the output, ie log.txt) [default no file]: ");
    $file = $procedure->askQuestion($qt_file);
    echo "\n";
    request($rootURL, $username, $password, $params, $times, $delay, $file);
}
Ejemplo n.º 8
0
/**
 * The Procedure for the update function
 * 
 * @param Menu $backMenu The Menu for return
 * 
 * @return void
 */
function updateProcedure(Menu $backMenu)
{
    $procedure = new Procedure();
    echo "Action to perform:\n\n";
    echo "[1] Show the update log\n";
    echo "[2] Perform the actual update\n";
    echo "--------------------------------\n";
    $choice = "0";
    $procedure->showReturnChoice($choice);
    $qt_action = $procedure->createQuestion("\nSelected action: ");
    $action = $procedure->askQuestion($qt_action);
    switch ($action) {
        case "1":
            $action = "info";
            break;
        case "2":
            $action = "real";
            break;
        case $choice:
            $procedure->clearScreen();
            $procedure->showMenu($backMenu, true);
        default:
            $procedure->clearScreen();
            cecho("Incorrect input", "red");
            echo "\n";
            setupProcedure($backMenu);
    }
    $qt_revision = $procedure->createQuestion("\nRevision number [default HEAD]: ", "HEAD");
    $revision = $procedure->askQuestion($qt_revision);
    echo "\n";
    update($action, $revision);
}
Ejemplo n.º 9
0
/**
 * The Procedure for the basebackup function
 * 
 * @param Menu $backMenu The Menu for return
 * 
 * @return void
 */
function baseBackupProcedure(Menu $backMenu)
{
    $procedure = new Procedure();
    echo "Method:\n\n";
    echo "[1] Hotcopy\n";
    echo "[2] Dump\n";
    echo "--------------------\n";
    $choice = "0";
    $procedure->showReturnChoice($choice);
    $qt_method = $procedure->createQuestion("\nSelected method: ");
    $method = $procedure->askQuestion($qt_method);
    switch ($method) {
        case "1":
            $method = "hotcopy";
            break;
        case "2":
            $method = "dump";
            break;
        case $choice:
            $procedure->clearScreen();
            $procedure->showMenu($backMenu, true);
            break;
        default:
            $procedure->clearScreen();
            cecho("Incorrect input", "red");
            echo "\n";
            baseBackupProcedure($backMenu);
    }
    $qt_username = $procedure->createQuestion("Username (to access database): ");
    $username = $procedure->askQuestion($qt_username);
    $password = prompt_silent();
    $hostname = "";
    $port = "";
    $qt_DBBackup = $procedure->createQuestion("Database to backup (ie mediboard): ");
    $DBBackup = $procedure->askQuestion($qt_DBBackup);
    $qt_backupPath = $procedure->createQuestion("Backup path (ie /var/backup): ");
    $backupPath = $procedure->askQuestion($qt_backupPath);
    $qt_time = $procedure->createQuestion("Time (in days before removal of files) [default 7]: ", 7);
    $time = $procedure->askQuestion($qt_time);
    if ($method == "hotcopy") {
        $qt_binLog = $procedure->createQuestion("Create a binary log index [y or n, default n]? ", "n");
        $binLog = $procedure->askQuestion($qt_binLog);
    } else {
        $binLog = "";
    }
    $qt_mail = $procedure->createQuestion("Send a mail when diskfull is detected [y or n, default n]? ", "n");
    $mail = $procedure->askQuestion($qt_mail);
    if ($mail == "y") {
        $qt_usernameMail = $procedure->createQuestion("Username (to send a mail): ");
        $usernameMail = $procedure->askQuestion($qt_usernameMail);
        $passwordMail = prompt_silent();
    } else {
        $usernameMail = "";
        $passwordMail = "";
    }
    $qt_lock = $procedure->createQuestion("Lock file path (ie /tmp/lock.txt) (leave blank for no lock file): ", null);
    $lock = $procedure->askQuestion($qt_lock);
    echo "\n";
    baseBackup($method, $username, $password, $hostname, $port, $DBBackup, $backupPath, $time, $binLog, $usernameMail, $passwordMail, $lock);
}
Ejemplo n.º 10
0
/**
 * The Procedure for the setup function
 * 
 * @param Menu $backMenu The Menu for return
 * 
 * @return void
 */
function setupProcedure(Menu $backMenu)
{
    $procedure = new Procedure();
    $choice = "0";
    $procedure->showReturnChoice($choice);
    echo "Select an optional sub directory [default none]:\n\n";
    echo "[1] modules\n";
    echo "[2] style\n";
    echo "[3] No sub directory\n";
    $qt_subDir = $procedure->createQuestion("\nSelected sub directory: ");
    $subDir = $procedure->askQuestion($qt_subDir);
    switch ($subDir) {
        case "1":
            $subDir = "modules";
            break;
        case "2":
            $subDir = "style";
            break;
        case $choice:
            $procedure->clearScreen();
            $procedure->showMenu($backMenu, true);
            exit;
    }
    $qt_apacheGrp = $procedure->createQuestion("\nApache user's group [optional]: ");
    $apacheGrp = $procedure->askQuestion($qt_apacheGrp);
    echo "\n";
    setup($subDir, $apacheGrp);
}
Ejemplo n.º 11
0
/**
 * The Procedure for the replacebase function
 * 
 * @param Menu $backMenu The Menu for return
 * 
 * @return void
 */
function replacebaseProcedure(Menu $backMenu)
{
    $procedure = new Procedure();
    $choice = "0";
    $procedure->showReturnChoice($choice);
    $qt_srcLocation = $procedure->createQuestion("Source location (if localhost 'symlink' instead of 'scp'): ");
    $srcLocation = $procedure->askQuestion($qt_srcLocation);
    if ($srcLocation === $choice) {
        $procedure->clearScreen();
        $procedure->showMenu($backMenu, true);
        exit;
    }
    $qt_srcDir = $procedure->createQuestion("Source directory (ie /var/backup): ");
    $srcDir = $procedure->askQuestion($qt_srcDir);
    $qt_srcDB = $procedure->createQuestion("Source database (ie mediboard): ");
    $srcDB = $procedure->askQuestion($qt_srcDB);
    $qt_tgtDir = $procedure->createQuestion("Target directory (ie /tmp) [default /tmp]: ", "/tmp");
    $tgtDir = $procedure->askQuestion($qt_tgtDir);
    $qt_tgtDB = $procedure->createQuestion("Target database (ie target_mediboard): ");
    $tgtDB = $procedure->askQuestion($qt_tgtDB);
    $qt_restart = $procedure->createQuestion("Restart MySQL Server (Warning) (ie for InnoDB) [y or n, default n]? ", "n");
    $restart = $procedure->askQuestion($qt_restart);
    $qt_safeCopy = $procedure->createQuestion("Make a safe copy of existing target database first [y or n, default n]? ", "n");
    $safeCopy = $procedure->askQuestion($qt_safeCopy);
    $qt_mySQLDir = $procedure->createQuestion("MySQL directory where databases are stored [default /var/lib/mysql]: ", "/var/lib/mysql");
    $mySQLDir = $procedure->askQuestion($qt_mySQLDir);
    $qt_port = $procedure->createQuestion("SSH port [default 22]: ", 22);
    $port = $procedure->askQuestion($qt_port);
    $qt_localCopy = $procedure->createQuestion("Make a distant copy (scp) [y or n, default y]? ", "y");
    $localCopy = $procedure->askQuestion($qt_localCopy);
    echo "\n";
    replaceBase($srcLocation, $srcDir, $srcDB, $tgtDir, $tgtDB, $restart, $safeCopy, $mySQLDir, $port, $localCopy);
}