Forráskód Böngészése

demo mode (and auth check for /stats)

raylu 11 éve
szülő
commit
e3b580669f

+ 19 - 7
web/sysvitals_web.py

@@ -79,23 +79,35 @@ class LogoutHandler(BaseHandler):
 		self.redirect('/')
 
 class ServersHandler(BaseHandler):
-	@tornado.web.authenticated
 	@tornado.gen.coroutine
 	def get(self):
-		groups = servers = None
-		user_id = self.current_user['id']
+		if self.current_user:
+			user_id = self.current_user['id']
+			demo = False
+		else:
+			user_id = 1
+			demo = True
 		groups = yield self.db.get_groups(user_id)
 		servers = yield self.db.get_servers(user_id)
-		self.render('servers.html', groups=groups, servers=servers)
+		self.render('servers.html', groups=groups, servers=servers, demo=demo)
 
 class StatsHandler(BaseHandler):
-	@tornado.web.authenticated
 	@tornado.gen.coroutine
 	def get(self, group_id, server_id):
 		group_id = int(group_id)
+		if self.current_user:
+			user_id = self.current_user['id']
+			demo = False
+		elif group_id == 1:
+			user_id = 1
+			demo = True
+		else:
+			raise tornado.web.HTTPError(401)
+		servers = yield self.db.get_servers(user_id)
+		if group_id not in servers:
+			raise tornado.web.HTTPError(403)
 		api_key = yield self.db.get_api_key(group_id)
-		servers = yield self.db.get_servers(self.current_user['id'])
-		self.render('stats.html', group_id=group_id, api_key=api_key, servers=servers[group_id])
+		self.render('stats.html', group_id=group_id, api_key=api_key, servers=servers[group_id], demo=demo)
 
 class GroupsHandler(BaseHandler):
 	@tornado.web.authenticated

+ 1 - 0
web/templates/base.html

@@ -25,6 +25,7 @@
 					<a href="/groups">groups</a>
 					<a href="/logout">logout</a>
 				{% else %}
+					<a href="/servers">demo</a>
 					<a href="/login">login</a>
 					<a href="/register">sign up</a>
 				{% end %}

+ 2 - 2
web/templates/home.html

@@ -6,12 +6,12 @@
 
 {% block main %}
 	<p>
-		sysvitals is system monitoring as a service. Think hosted <a href="http://munin-monitoring.org/" target="_blank">Munin</a>, but way faster, prettier, and easier.
+		sysvitals is Linux system monitoring as a service. Think hosted <a href="http://munin-monitoring.org/" target="_blank">Munin</a>, but way faster, prettier, and easier.
 	</p>
 	<p>
 		The <a href="/client/sysvitals_client">client</a> sends CPU, memory, network, and disk usage data to the sysvitals API once a minute.
 	</p>
 	<p>
-		The site queries that same API to draw pretty <del>pictures</del> graphs.
+		The site queries that same API to draw pretty <del>pictures</del> <a href="/servers">graphs</a>.
 	</p>
 {% end %}

+ 4 - 0
web/templates/servers.html

@@ -1,6 +1,10 @@
 {% extends "base.html" %}
 
 {% block main %}
+	{% if demo %}
+		<h2>demo mode</h2>
+	{% end %}
+
 	{% for group in groups %}
 		<p>
 			{{ group['name'] }}

+ 4 - 0
web/templates/stats.html

@@ -13,6 +13,10 @@
 {% end %}
 
 {% block main %}
+	{% if demo %}
+		<h2>demo mode</h2>
+	{% end %}
+
 	{% for server in servers %}
 		<br>
 		<a href="/stats/{{ server['group_id'] }}/{{ server['id'] }}">{{ server['hostname'] }}</a>