/** * 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"; }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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"; }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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); }