(time() + 180*3600)) { die("The time was too far in the future, 180 days max"); } // now we have a populated model, run the predictor runPred($pred_model); } function runPred($pred_model) { // do things $pred_software = $_POST['software']; // check the software requested is available $software_available = array('grib', 'dap'); if (!in_array($pred_software, $software_available)) { die("Invalid software selected: " . $pred_software); } // SANITY CHECK ALL POST VARS HERE // // make in INI file makePredDir($pred_model); makeINI($pred_model); if ( $pred_software == $software_available[0] ) { // using grib runGRIB($pred_model); } else if ( $pred_software == $software_available[1] ) { // using dap //runDAP(); } else { die("We couldn't find the software you asked for"); } } function makePredDir($pred_model) { shell_exec("mkdir preds/" . $pred_model['uuid']); //make sure we use the POSTed uuid } function makeINI($pred_model) { // makes an ini file $fh = fopen("preds/" . $pred_model['uuid'] . "/scenario.ini", "a"); //append $w_string = "[launch-site]\nlatitude = " . $pred_model['lat'] . "\naltitude = " . $pred_model['alt'] . "\n"; $w_string .= "longitude = " . $pred_model['lon'] . "\n[atmosphere]\nwind-error = "; $w_string .= $pred_model['wind_error'] . "\n[altitude-model]\nascent-rate = " . $pred_model['asc'] . "\n"; $w_string .= "descent-rate = " . $pred_model['des'] . "\nburst-altitude = "; $w_string .= $pred_model['burst'] . "\n[launch-time]\nhour = " . $pred_model['hour'] . "\n"; $w_string .= "month = " . $pred_model['month'] . "\nsecond = " . $pred_model['sec'] . "\n"; $w_string .= "year = " . $pred_model['year'] . "\nday = " . $pred_model['day'] . "\nminute = "; $w_string .= $pred_model['min'] . "\n"; fwrite($fh, $w_string); fclose($fh); } function runGRIB($pred_model) { // runs the grib predictor $lockfile = fopen("lock", "w"); $shellcmd = "./one_off_prediction " . $pred_model['lat'] . " " . $pred_model['lon'] . " " . $pred_model['alt'] ." " . (float)$pred_model['asc'] . " " . $pred_model['des']*1.1045 . " " . $pred_model['burst'] . " " . $pred_model['timestamp'] . " " . $pred_model['float'] . " &"; echo $shellcmd; //shell_exec($shellcmd); if (!file_exists("flight_path.csv")) { unlink("lock"); die("The predictor didn't write a file"); } shell_exec("mv flight_path.* preds/".$pred_model['uuid']."/"); unlink("lock"); } ?>