summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cgi-bin/cookies.cgi62
1 files changed, 62 insertions, 0 deletions
diff --git a/cgi-bin/cookies.cgi b/cgi-bin/cookies.cgi
new file mode 100644
index 0000000..c8fe80a
--- /dev/null
+++ b/cgi-bin/cookies.cgi
@@ -0,0 +1,62 @@
+#!/usr/bin/python3
+
+import cgi
+import cgitb
+import os
+import sys
+import io
+import json
+
+cgitb.enable()
+
+cookies = {}
+
+if os.environ.has_key('HTTP_COOKIE'):
+ for cookie in map(str.strip, str.split(os.environ['HTTP_COOKIE'], ';')):
+ (key, value) = cookie.split('=')
+ cookies[key] = value
+
+print("Content-Type: text/html")
+print("")
+print("""
+<html>
+ <head><title>Cookie test</title></head>
+ <body>
+ <h1>Reflected cookies</h1>
+ <ul>
+""")
+
+for k, v in cookies.items():
+ print(" <li>{}: {}</li>".format(cgi.escape(k), cgi.escape(v)))
+print("""
+ </ul>
+ <hr />
+ <script>""")
+
+print(" var uploaded_cookies = {};".format(json.dumps(cookies)))
+print("""
+function getCookie(cname) {
+ var name = cname + "=";
+ var ca = document.cookie.split(';');
+ for(var i = 0; i < ca.length; i++) {
+ var c = ca[i];
+ while (c.charAt(0) == ' ') {
+ c = c.substring(1);
+ }
+ if (c.indexOf(name) == 0) {
+ return c.substring(name.length, c.length);
+ }
+ }
+ return "";
+}
+ var counter = getCookie("counter");
+ if (counter === "") { counter = "0"; }
+ var uploaded_counter = uploaded_cookies["counter"] || "0";
+ document.write("<b>Cookie:</b> " + counter + "<br/><b>JSON:</b> " + uploaded_counter + "<br />");
+ document.cookie = "counter=" + ((parseInt(counter) + 1).toString());
+ </script>
+ </body>
+</html>
+""")
+
+