diff --git a/predict/ajax.php b/predict/ajax.php
index 399b039..08ef904 100644
--- a/predict/ajax.php
+++ b/predict/ajax.php
@@ -1,4 +1,5 @@
(time() + 180*3600)) {
+ echo false;
+ break;
+ }
+
+ // now we have a populated model, run the predictor
+ runPred($pred_model);
+ echo true . "|" . $pred_model['uuid'];
+ } else {
+ echo "The form submit function was called without any data";
+ echo false;
+ }
break;
default:
diff --git a/predict/includes/functions.inc.php b/predict/includes/functions.inc.php
new file mode 100644
index 0000000..e60be20
--- /dev/null
+++ b/predict/includes/functions.inc.php
@@ -0,0 +1,94 @@
+ $value ){
+ $sha1str .= $idx . "=" . $value . ",";
+ }
+ $uuid = sha1($sha1str);
+ return $uuid;
+}
+
+function verifyModel($pred_model, $software_available) {
+ if(!isset($pred_model)) return false;
+ foreach($pred_model as $idx => $value) {
+ if ($idx == "software") {
+ if (!in_array($value, $software_available)) return false;
+ } else {
+ if (!is_numeric($value)) {
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+function runPred($pred_model) {
+ // make in INI file
+ makePredDir($pred_model);
+ makeINI($pred_model);
+
+ // if we're using --hd, then append it to the exec string
+ if ( $pred_model['software'] == "gfs_hd" ) $use_hd ="--hd ";
+
+ // use `at` to automatically background the task
+ $ph = popen("at now", "w");
+ fwrite($ph, "cd /var/www/hab/predict/ && ./predict.py -v --latdelta=3 --londelta=3 --lat=52 --lon=0 " . $use_hd . $pred_model['uuid']);
+ fclose($ph);
+
+}
+
+function makePredDir($pred_model) {
+ shell_exec("mkdir preds/" . $pred_model['uuid']); //make sure we use the uuid from model
+}
+
+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);
+}
+
+
+?>
diff --git a/predict/index.php b/predict/index.php
index 4ea1e81..8ae8a05 100644
--- a/predict/index.php
+++ b/predict/index.php
@@ -9,123 +9,6 @@
//
// get the time for populating the form
$time = time() + 3600;
-$form_submitted = 0;
-$software_available = array("gfs", "gfs_hd");
-
-$pred_model = array();
-
-if ( isset($_POST['submit'])) { // form was submitted, let's run a pred!
-
- $form_submitted = 1;
-
- // first, populate the prediction model
- $pred_model['hour'] = $_POST['hour'];
- $pred_model['min'] = $_POST['min'];
- $pred_model['sec'] = $_POST['sec'];
-
- $pred_model['month'] = $_POST['month'];
- $pred_model['day'] = $_POST['day'];
- $pred_model['year'] = $_POST['year'];
-
- $pred_model['lat'] = $_POST['lat'];
- $pred_model['lon'] = $_POST['lon'];
- $pred_model['asc'] = (float)$_POST['ascent'];
- $pred_model['alt'] = $_POST['initial_alt'];
- $pred_model['des'] = $_POST['drag'];
- $pred_model['burst'] = $_POST['burst'];
- $pred_model['float'] = $_POST['float_time'];
-
- $pred_model['wind_error'] = 0;
-
- $pred_model['software'] = $_POST['software'];
-
- // verify the model here
- if ( !verifyModel($pred_model, $software_available) ) die ("The model verification failed");
-
- $pred_model['uuid'] = makesha1hash($pred_model); // make a sha1 hash of the model for uuid
-
- // make a timestamp of the form data
- $pred_model['timestamp'] = mktime($_pred_model['hour'], $_pred_model['min'], $_pred_model['sec'], (int)$_pred_model['month'] + 1, $_pred_model['day'], (int)$_pred_model['year'] - 2000);
- // and check that it's within range
- if ($pred_model['timestamp'] > (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 makesha1hash($pred_model) {
- $sha1str;
- foreach ( $pred_model as $idx => $value ){
- $sha1str .= $idx . "=" . $value . ",";
- }
- $uuid = sha1($sha1str);
- return $uuid;
-}
-
-function verifyModel($pred_model, $software_available) {
- if(!isset($pred_model)) return false;
- foreach($pred_model as $idx => $value) {
- if ($idx == "software") {
- if (!in_array($value, $software_available)) return false;
- } else {
- if (!is_numeric($value)) {
- return false;
- }
- }
- }
- return true;
-}
-
-function runPred($pred_model) {
- // make in INI file
- makePredDir($pred_model);
- makeINI($pred_model);
-
- // if we're using --hd, then append it to the exec string
- if ( $pred_model['software'] == "gfs_hd" ) $use_hd ="--hd ";
-
- // use `at` to automatically background the task
- $ph = popen("at now", "w");
- fwrite($ph, "cd /var/www/hab/predict/ && ./predict.py -v --latdelta=3 --londelta=3 --lat=52 --lon=0 " . $use_hd . $pred_model['uuid']);
- fclose($ph);
-
-}
-
-function makePredDir($pred_model) {
- shell_exec("mkdir preds/" . $pred_model['uuid']); //make sure we use the uuid from model
-}
-
-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");
-}
-
?>
@@ -139,10 +22,8 @@ function runGRIB($pred_model) { // runs the grib predictor