summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/daq/nginx-lua/s5-nginx-lua-fetch.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/daq/nginx-lua/s5-nginx-lua-fetch.py b/src/daq/nginx-lua/s5-nginx-lua-fetch.py
new file mode 100755
index 0000000..ef13d02
--- /dev/null
+++ b/src/daq/nginx-lua/s5-nginx-lua-fetch.py
@@ -0,0 +1,85 @@
+#!/usr/bin/python
+#
+# sfive
+#
+# sfive - spreadspace streaming statistics suite is a generic
+# statistic collection tool for streaming server infrastuctures.
+# The system collects and stores meta data like number of views
+# and throughput from a number of streaming servers and stores
+# it in a global data store.
+# The data acquisition is designed to be generic and extensible in
+# order to support different streaming software.
+# sfive also contains tools and applications to filter and visualize
+# live and recorded data.
+#
+#
+# Copyright (C) 2014 Christian Pointner <equinox@spreadspace.org>
+# Markus Grueneis <gimpf@gimpf.org>
+#
+# This file is part of sfive.
+#
+# sfive is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3
+# as published by the Free Software Foundation.
+#
+# sfive is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with sfive. If not, see <http://www.gnu.org/licenses/>.
+#
+
+from twisted.internet import reactor
+from twisted.internet.defer import Deferred
+from twisted.internet.protocol import Protocol
+from twisted.web.client import Agent
+from twisted.web.http_headers import Headers
+
+import simplejson as json
+import datetime
+
+class SFiveNGXluaProto(Protocol):
+ def __init__(self, finished):
+ self.data = ''
+ self.finished = finished
+ print 'Started receiving log data'
+
+ def dataReceived(self, bytes):
+ self.data += bytes
+ lines = self.data.splitlines(True)
+ if len(lines) > 0:
+ if '\n' not in lines[-1] and '\r' not in lines[-1]:
+ self.data = lines[-1]
+ del lines[-1]
+ else:
+ self.data = ''
+
+ if len(lines) > 0:
+ print '\nlog data received:'
+ for line in lines:
+ print json.loads(line)
+
+ def connectionLost(self, reason):
+ print 'Finished receiving log data:', reason.getErrorMessage()
+ self.finished.callback(None)
+
+agent = Agent(reactor)
+d = agent.request(
+ 'GET',
+ 'http://calypso.spreadspace.org/sfive',
+ Headers({'User-Agent': ['SFive nginx-lua fetcher']}),
+ None)
+
+def cbRequest(response):
+ finished = Deferred()
+ response.deliverBody(SFiveNGXluaProto(finished))
+ return finished
+d.addCallback(cbRequest)
+
+def cbShutdown(ignored):
+ reactor.stop()
+d.addBoth(cbShutdown)
+
+reactor.run()