summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/rz_feedback.py29
-rw-r--r--src/server/rz_server.py7
2 files changed, 35 insertions, 1 deletions
diff --git a/src/server/rz_feedback.py b/src/server/rz_feedback.py
new file mode 100644
index 00000000..74fe2c7f
--- /dev/null
+++ b/src/server/rz_feedback.py
@@ -0,0 +1,29 @@
+import logging
+
+from flask import request
+from flask import json
+
+
+log = logging.getLogger('rhizi')
+
+def feedback():
+ """
+ Email all parts as attachments to configured feedback email
+ """
+
+ def sanitize_input(req):
+ d = request.form.to_dict()
+ feedback = d['feedback']
+ req_json = json.loads(feedback)
+ url = req_json['url']
+ note = req_json['note']
+ img = req_json['img'] # FIXME base64 encoded data URI
+ html = req_json['html']
+ return url, note, img, html
+
+ try:
+ url, note, img, html = sanitize_input(request)
+ except:
+ log.warn('failed to sanitize inputs. request: %s' % request)
+
+ return "success"
diff --git a/src/server/rz_server.py b/src/server/rz_server.py
index 118cfa16..52db213e 100644
--- a/src/server/rz_server.py
+++ b/src/server/rz_server.py
@@ -29,6 +29,7 @@ from rz_mesh import init_ws_interface
from rz_kernel import RZ_Kernel
import rz_api
import rz_api_rest
+import rz_feedback
class Config(object):
"""
@@ -194,12 +195,16 @@ def init_rest_interface(cfg, flask_webapp):
rest_entry('/logout', rz_api.logout, {'methods': ['GET', 'POST']}),
rest_entry('/match/node-set', rz_api.match_node_set_by_attr_filter_map),
rest_entry('/monitor/server-info', rz_api.monitor__server_info),
+ rest_entry('/feedback', rz_feedback.feedback),
]
+ # FIXME: but should be rate limited (everything should be, regardless of login)
+ no_login_paths = set(['/login', '/feedback'])
+
for re_entry in rest_entry_set:
rest_path, f, flask_args = re_entry
- if cfg.access_control and '/login' != rest_path:
+ if cfg.access_control and rest_path not in no_login_paths:
# currently require login on all but /login paths
f = login_decorator(f)