2 $logfiles = "/home/groups/o/op/openrocket/persistent/logs/access-";
5 // getallheaders method
6 if (!function_exists('getallheaders')) {
7 function getallheaders() {
8 foreach ($_SERVER as $name => $value) {
9 if (substr($name, 0, 5) == 'HTTP_') {
10 $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
18 // Parse + validate headers
24 foreach (getallheaders() as $header => $value) {
25 if (preg_match("/^[a-zA-Z0-9 !$%&()*+,.\\/:=?@_~-]{1,40}$/", $value)) {
26 $h = strtolower($header);
27 if ($h == 'x-openrocket-version') {
29 } else if ($h == 'x-openrocket-id') {
31 } else if ($h == 'x-openrocket-os') {
33 } else if ($h == 'x-openrocket-java') {
35 } else if ($h == 'x-openrocket-country') {
42 if ((strlen($orversion) > 0 || strlen($orid) > 0 || strlen($oros) > 0
43 || strlen($orjava) > 0 || strlen($orcountry) > 0) &&
45 (strlen($orversion) < 20 && strlen($orid) < 50 && strlen($oros) < 50
46 && strlen($orjava) < 50 && strlen($orcountry) < 50)) {
48 $file = $logfiles . gmdate("Y-m");
49 $line = gmdate("Y-m-d H:i:s") . ";" . $orid . ";" . $orversion .
50 ";" . $oros . ";" . $orjava . ";" . $orcountry . "\n";
52 $fp = fopen($file, 'a');
60 // Set HTTP content-type header
61 // No charset allowed for 0.9.4
62 //header("Content-type: text/plain; charset=utf-8");
63 header("Content-type: text/plain");
66 * Currently all old versions are handled manually.
67 * Update checking was introduced in OpenRocket 0.9.4
69 $version = $_GET["version"];
72 if (preg_match("/^0\.9\.6/",$version)) {
73 $updates = "Version: 1.0.0\n" .
74 "6: Hundreds of new thrustcurves\n" .
76 } else if (preg_match("/^0\.9\.(4|5pre|5|6pre)/",$version)) {
77 $updates = "Version: 1.0.0\n" .
78 "7: Hundreds of new thrustcurves\n" .
79 "6: Aerodynamic computation updates\n" .
80 "5: Numerous bug fixes";
84 if (strlen($updates) == 0) {
86 // No updates available
87 header("HTTP/1.0 204 No Content");
91 header("HTTP/1.0 200 OK");