die; break; } if ($pdo) { chmod($installer_root . '/../../framework/db', 0777); chmod($installer_root . '/../../framework/db/cashmusic.sqlite', 0777); } // push in all the tables try { $pdo->exec(file_get_contents($installer_root . '/../../framework/php/settings/sql/cashmusic_db_sqlite.sql')); } catch (PDOException $e) { echo "\nOh. Shit. Something's wrong: Couldn't write to the database. {$e}\n\n"; die; break; } $user_email = readStdin("\nMain system login email address: "); $system_salt = md5($user_email . time()); $user_password = substr(md5($system_salt . 'password'), 4, 7); $password_hash = hash_hmac('sha256', $user_password, $system_salt); $data = array('email_address' => $user_email, 'password' => $password_hash, 'is_admin' => true, 'api_key' => $api_key = hash_hmac('md5', time() . $password_hash . rand(976654, 1234567267), $system_salt) . substr((string) time(), 6), 'api_secret' => hash_hmac('sha256', time() . $password_hash . rand(976654, 1234567267), $system_salt), 'creation_date' => time()); $query = "INSERT INTO people (email_address,password,is_admin,api_key,api_secret,creation_date) VALUES (:email_address,:password,:is_admin,:api_key,:api_secret,:creation_date)"; try { $q = $pdo->prepare($query); } catch (PDOException $e) { echo "\nOh. Shit. Something's wrong: Couldn't prepare query. {$e}\n\n"; die; break; } try { $success = $q->execute($data); } catch (PDOException $e) {
if ($update->hasPostInstructions()) { echo PHP_EOL . '===================================' . PHP_EOL; echo $update->getPostInstructions(); echo PHP_EOL . '===================================' . PHP_EOL; } } else { echo sprintf(PHP_EOL . 'Sorry, an unexpected error has occured : %s' . PHP_EOL, $updateError->getMessage()); print $updateError->getTraceAsString() . PHP_EOL; print "Trace: " . PHP_EOL; foreach ($update->getLogs() as $log) { echo sprintf('[%s] %s' . PHP_EOL, $log[0], $log[1]); } if (true === $backup) { while (1) { echo "Would you like to restore the backup database ? (Y/n)" . PHP_EOL; $rep = readStdin(true); if ($rep == 'y') { echo "Database restore started. Wait, it could take a while..." . PHP_EOL; if (false === $update->restoreDb()) { echo sprintf(PHP_EOL . 'Sorry, your database can\'t be restore. Try to do it manually : %s' . PHP_EOL, $update->getBackupFile()); exit(5); } else { echo "Database successfully restore." . PHP_EOL; exit(5); } break; } elseif ($rep == 'n') { exit(0); } } }
} } } } if (!defined('STDIN')) { // force CLI, the browser is *so* 2007... echo "Please run installer from the command line. usage:<br / >> php installers/php/dev_installer.php"; } else { if (count($argv) < 2) { echo "\nWrong. Usage: php manifest_builder.php <RELEASE FILES DIRECTORY>\n"; } else { echo "\n\n /)-_-(/\n" . " (o o)\n" . " .-----__/\\o/\n" . " / __ /\n" . " \\__/\\ / \\_\\ |/\n" . " \\/\\ ||\n" . " o // ||\n" . " xxx |\\ |\\ \n" . "\n\n" . " C A S H M U S I C\n" . " RELEASE PROFILER\n\n"; $version = readStdin('Version number: '); $release_date = time(); $schema_change = readStdin("\nSchema change for upgrades? (y/n): ", false, 'n'); $script_needed = readStdin("\nScripting needed for upgrades? (y/n): ", false, 'n'); if ($schema_change == 'y') { $schema_change = 'true'; } else { $schema_change = 'false'; } if ($script_needed == 'y') { $script_needed = 'true'; } else { $script_needed = 'false'; } $profile = "{\n\t\"version\":{$version},\n\t\"releasedate\":{$release_date},\n\t\"schemachange\":{$schema_change},\n\t\"scriptneeded\":{$script_needed},\n\t\"blobs\":{\n"; profile_directory($argv[1], $argv[1], $profile); $profile = rtrim($profile, ",\n"); $profile .= "\n\t}\n}"; file_put_contents($argv[1] . '/release_profile.json', $profile);
// push in all the tables try { $pdo->exec(file_get_contents($installer_root . '/../../framework/settings/sql/cashmusic_db_sqlite.sql')); $success = true; } catch (PDOException $e) { echo "\nOh. Shit. Something's wrong: Couldn't write to the database. {$e}\n\n"; die; break; } } } if ($success) { $user_email = readStdin("\nLogin email address: "); $user_password = readStdin("Login password: "******"\nUse defaut system salt? (y/n): ", false, 'y'); $force_hmac = readStdin("\nForce HMAC hash? (test 5.2 without crypt) (y/n): ", false, 'n'); if (strtolower(substr($default_salt, 0, 1)) == 'y') { $system_salt = 'I was born of sun beams; Warming up our limbs'; } else { $system_salt = md5($user_email . time()); } if (!defined('CRYPT_BLOWFISH')) { define('CRYPT_BLOWFISH', 0); } if (!defined('CRYPT_SHA512')) { define('CRYPT_SHA512', 0); } if (!defined('CRYPT_SHA256')) { define('CRYPT_SHA256', 0); } if (CRYPT_BLOWFISH + CRYPT_SHA512 + CRYPT_SHA256 && strtolower(substr($force_hmac, 0, 1)) != 'y') {
} // push in all the tables try { $pdo->exec(file_get_contents($installer_root . '/../../framework/php/settings/sql/cashmusic_db_sqlite.sql')); $success = true; } catch (PDOException $e) { echo "\nOh. Shit. Something's wrong: Couldn't write to the database. {$e}\n\n"; die; break; } } } if ($success) { $user_email = readStdin("\nLogin email address: "); $user_password = readStdin("Login password: "******"\nUse defaut system salt? (y/n): ", false, 'y'); if (strtolower(substr($default_salt, 0, 1)) == 'y') { $system_salt = 'I was born of sun beams; Warming up our limbs'; } else { $system_salt = md5($user_email . time()); } $password_hash = hash_hmac('sha256', $user_password, $system_salt); $data = array('email_address' => $user_email, 'password' => $password_hash, 'is_admin' => true, 'api_key' => $api_key = hash_hmac('md5', time() . $password_hash . rand(976654, 1234567267), $system_salt) . substr((string) time(), 6), 'api_secret' => hash_hmac('sha256', time() . $password_hash . rand(976654, 1234567267), $system_salt), 'creation_date' => time()); $query = "INSERT INTO people (email_address,password,is_admin,api_key,api_secret,creation_date) VALUES (:email_address,:password,:is_admin,:api_key,:api_secret,:creation_date)"; try { $q = $pdo->prepare($query); $success = $q->execute($data); } catch (PDOException $e) { echo "\nOh. Shit. Something's wrong. Couldn't add the user to the database. {$e}\n\n"; die; break;
function main() { $nick = getNickFromArgs(); $mapData = null; $charData = null; // This will force everyone into creating a Dynasty save. // We patching shit, yo. $dynPatch = false; $dynPath = getSaveFilePath($nick, SaveFileType::Dynasty); if (!file_exists($dynPath)) { saveGame($nick, SaveFileType::Dynasty); $dynPatch = true; } if (!checkIfNewGame($nick)) { // Load character save data. $charFilePath = getSaveFilePath($nick, SaveFileType::Character); $charData = FileIO::UnserializeFile($charFilePath); $charDataDirty = false; // Load map save data. $mapFilePath = getSaveFilePath($nick, SaveFileType::Map); $mapData = FileIO::UnserializeFile($mapFilePath); $mapDataDirty = false; // Load dynasty save data. $dynFilePath = getSaveFilePath($nick, SaveFileType::Dynasty); $dynData = FileIO::UnserializeFile($dynFilePath); $dynDataDirty = false; // Put everyone into the dynasty initialisation state, just this once. //$notYetPatched = !isset($charData->patched); $notYetPatched = !isset($dynData->initialised); $notPatching = $charData->state != GameStates::DynastyInit; if (empty($dynData) || $notYetPatched && $notPatching) { $charData->patchState = $charData->state; $charData->patchPrevState = $charData->previousState; DEBUG_echo("Patching in Dynasty..."); StateManager::ChangeState($charData, GameStates::DynastySplash); } // Patch the stat changes in. doStatPatchIfNeeded($charData); // Ensure it's sane. if (empty($charData) || empty($mapData)) { echo "ERROR: Save data's f****d.\n"; exit(3); } // Read STDIN for input. $input = readStdin(); switch ($charData->state) { case GameStates::DynastySplash: DEBUG_echo("DynastySplash"); echo "Your Dynasty begins, and needs a name. Choose your name wisely - you cannot alter history.\n"; StateManager::ChangeState($charData, GameStates::DynastyInit); $dynData->initialised = true; $charDataDirty = true; $dynDataDirty = true; break; case GameStates::DynastyInit: DEBUG_echo("DynastyInit"); // Validate input. $validName = preg_match("/^[a-zA-Z]{1,16}\$/", $input, $output); if (!$validName) { echo "Please enter a valid name. Letters only, between 1 and 16 characters.\n"; return; } $dynData->name = $input; $output = "The Dynasty of {$input} begins! Onwards, to adventure!"; echo "{$output}\n"; // Hook back up to where we were. $charData->state = $charData->patchState; $charData->previousState = $charData->patchPrevState; $charDataDirty = true; $dynDataDirty = true; break; case GameStates::NameSelect: DEBUG_echo("NameSelect"); $validName = preg_match("/^[a-zA-Z]{1,16}\$/", $input, $output); if (!$validName) { echo "Please enter a valid name. Letters only, between 1 and 16 characters.\n"; exit(13); } $output = "Please choose a class for {$input} {$dynData->name}: "; global $classSelect; foreach ($classSelect->commands as $fragment) { $output .= "{$fragment->displayString}, "; } $output = rtrim($output, ", ") . "\n"; echo $output; $charData->name = $input; StateManager::ChangeState($charData, GameStates::ClassSelect); $charDataDirty = true; break; case GameStates::ClassSelect: DEBUG_echo("ClassSelect"); $input = strtolower($input); $setClass = classSelect($input, $charData, $dynData, $charData->name); if ($setClass) { StateManager::ChangeState($charData, GameStates::FirstPlay); $charDataDirty = true; } break; // Initialise the characters // Initialise the characters case GameStates::FirstPlay: DEBUG_echo("FirstPlay"); firstPlay($charData, $dynData); StateManager::ChangeState($charData, GameStates::Adventuring); // purposeful fall-through! // The main loop for when we're romping around. // purposeful fall-through! // The main loop for when we're romping around. case GameStates::Adventuring: DEBUG_echo("Adventuring"); adventuring($input, $charData, $mapData, $dynData); $charDataDirty = true; $mapDataDirty = true; break; // Sleepy nap time. // Sleepy nap time. case GameStates::Resting: DEBUG_echo("Resting"); resting($input, $charData, $mapData); $charDataDirty = true; break; // IT'S CLOBBERING TIME // IT'S CLOBBERING TIME case GameStates::Combat: DEBUG_echo("Combat"); combat($input, $charData, $mapData, $dynData); $charDataDirty = true; $mapDataDirty = true; break; case GameStates::Spellcasting: DEBUG_echo("Spellcasting"); $nonCombat = isset($charData->previousState) && $charData->previousState != GameStates::Combat; spellcasting($input, $charData, $mapData, $nonCombat); $charDataDirty = true; $mapDataDirty = true; break; case GameStates::Looting: DEBUG_echo("Looting"); looting($input, $charData, $mapData); $charDataDirty = true; $mapDataDirty = true; break; case GameStates::LevelUp: DEBUG_echo("LevelUp"); levelUp($input, $charData, $mapData); $charDataDirty = true; break; case GameStates::UsingItem: DEBUG_echo("UsingItem"); $nonCombat = isset($charData->previousState) && $charData->previousState != GameStates::Combat; usingItem($input, $charData, $mapData, $nonCombat); $charDataDirty = true; break; case GameStates::Shopping: DEBUG_echo("Shopping"); shopping($input, $charData, $mapData); $charDataDirty = true; $mapDataDirty = true; break; case GameStates::Dynasty: DEBUG_echo("Dynasty"); dynasty($input, $charData, $mapData, $dynData); $charDataDirty = true; $dynDataDirty = true; break; default: break; } } else { // Initialise the character save. saveGame($nick, SaveFileType::Character); // Initialise the map save. saveGame($nick, SaveFileType::Map); // Prompt for name/dynasty select. if (!$dynPatch) { echo "How do you want to alter your Dynasty?\n"; } else { echo "Welcome to blaventure!\n"; } } if (isset($charData) && $charDataDirty) { saveGame($nick, SaveFileType::Character, $charData); } if (isset($mapData) && $mapDataDirty) { saveGame($nick, SaveFileType::Map, $mapData); } if (isset($dynData) && $dynDataDirty) { saveGame($nick, SaveFileType::Dynasty, $dynData); } }