From 238dc11dae659a7bd7207cc606f60e7801fd5409 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Tue, 24 Oct 2023 10:10:39 -0400 Subject: [PATCH] index.html.in: support random and user-specified security codes The security code will now be set at page-load to a random two digit string with characters taken from the set [0-9A-Z]. I've never actually seen two consecutive digits (zero through nine) in the official app; but it's good enough for now. What's better is that you can pass ?code=YO via URL paramaters to set the code to "YO". Since the code only changes once every day, a one-way ticket revealing the code now essentially gets you a day pass. Note: The resulting codes are not usually centered properly (yet). --- index.html.in | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/index.html.in b/index.html.in index 13a10e3..0bec5e7 100644 --- a/index.html.in +++ b/index.html.in @@ -262,6 +262,34 @@ window.addEventListener("load", center_ticket); + /*************************/ + /* Set the security code */ + /*************************/ + + /* All elements produced by inkscape contain a single + * that itself contains the actual text. */ + const ct = document.getElementById("codetext"); + + /* Get the "code" from the querystring if it's there */ + let params = new URLSearchParams(document.location.search); + if (params.get("code")) { + ct.firstChild.textContent = params.get("code"); + } + else { + /* Otherwise, use a random code */ + const bucket = ["0","1","2","3","4","5","6","7","8","9", + "A","B","C","D","E","F","G","H","I","J", + "K","L","M","N","O","P","Q","R","S","T", + "U","V","W","X","Y","Z"]; + + /* Two random ints between 0 and 35 */ + const i1 = Math.floor(Math.random() * 36); + const i2 = Math.floor(Math.random() * 36); + const d1 = bucket[i1]; + const d2 = bucket[i2]; + ct.firstChild.textContent = d1 + d2; + } + /*****************************************/ /* Next, set up the ticket date and time */ /*****************************************/ -- 2.44.2