summaryrefslogtreecommitdiff
path: root/tools/mmd/tracker.wsgi
diff options
context:
space:
mode:
Diffstat (limited to 'tools/mmd/tracker.wsgi')
-rw-r--r--tools/mmd/tracker.wsgi106
1 files changed, 106 insertions, 0 deletions
diff --git a/tools/mmd/tracker.wsgi b/tools/mmd/tracker.wsgi
new file mode 100644
index 0000000..cd64971
--- /dev/null
+++ b/tools/mmd/tracker.wsgi
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+
+from cgi import escape
+from urlparse import parse_qs
+
+def application (environ, response):
+ """
+ beginning of WSGI/python application for
+ MURSAT1 Tracker
+ """
+
+ body = '''
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8" />
+ <title>MURSAT1 tracker</title>
+ <link rel="stylesheet" type="text/css" href="http://hofos.at/mmd/static/mmd.css" />
+ <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
+ <script src="static/predictlib.js" type="text/javascript"></script>
+ <script src="static/tle.js" type="text/javascript"></script>
+ <script src="static/orbtrak.js" type="text/javascript"></script>
+ <script type="text/javascript">
+ function load()
+ {{
+ Orb.startOSMTracking(90, {longitude}, {latitude}, {altitude}, '{name}');
+ }}
+ </script>
+</head>
+<body onload="load ()">
+ <div class="groundstation">
+ <span id="gsName"></span>,
+ Lon:
+ <span id="gsLongitude"></span>,
+ Lat:
+ <span id="gsLatitude"></span>,
+ Alt:
+ <span id="gsAltitude"></span>
+ </div>
+ <div id="osm"></div>
+ <table class="current">
+ <tr>
+ <th class="telemetry">Longitude</th>
+ <th class="telemetry">Latitude</th>
+ <th class="telemetry">Azimuth</th>
+ <th class="telemetry">Elevation</th>
+ <th class="telemetry">Altitude</th>
+ </tr>
+ <tr>
+ <td class="telemetry" id="longitude">
+ </td>
+ <td class="telemetry" id="latitude">
+ </td>
+ <td class="telemetry" id="azimuth">
+ </td>
+ <td class="telemetry" id="elevation">
+ </td>
+ <td class="telemetry" id="altitude">
+ </td>
+ </tr>
+ </table>
+ <div class="telemetry">Set refresh rate to <span>
+ <select class="telemetry" name="refresh" id="refresh">
+ <option value="100">0.1</option>
+ <option value="500">0.5</option>
+ <option value="1000">1.0</option>
+ <option value="2000">2.0</option>
+ <option value="5000" selected="selected">5.0</option>
+ </select> seconds</span>
+ </div>
+ <div class="telemetry">
+ <input class="telemetry" type="submit" value="update" id="setPreviewMinutes" onClick="Orb.createSatelliteTrack ()" />
+ preview for the next <input class="telemetry" type="text" name="previewMinutes" id="previewMinutes" value="30" size="5" />
+ minutes
+ </div>
+ <pre id="debug"></pre>
+</body>
+'''
+
+ qs = parse_qs (environ['QUERY_STRING'], True)
+ if qs.has_key ('longitude') and qs.has_key ('latitude') and qs.has_key ('altitude'):
+ query = {
+ 'longitude': escape (qs.get ('longitude')[0]),
+ 'latitude': escape (qs.get ('latitude')[0]),
+ 'altitude': escape (qs.get ('altitude')[0])
+ }
+ if qs.has_key ('name'):
+ query ['name'] = escape (qs.get ('name')[0])
+ else:
+ query ['name'] = 'unknown set'
+ else:
+ query = {
+ 'longitude': 15.44226,
+ 'latitude': 47.06576,
+ 'altitude': 376,
+ 'name': 'Graz'
+ }
+
+ body = body.format (**query)
+ headers = ([('Content-Type', 'text/html'), ('Content-Length', str (len (body)))])
+ response ('200 OK', headers)
+
+ return [body]
+
+# vim: tw=0 ts=2 expandtab
+# EOF