From c8142283e2ee731b2fb604a39494dfc23343f767 Mon Sep 17 00:00:00 2001 From: "erinn@openprivacy.ca" Date: Tue, 14 Apr 2020 18:50:58 +0000 Subject: [PATCH] initial commit --- admin.php | 54 ++++++ cmd/decrypt.php.txt | 30 ++++ cmd/genkeys.php.txt | 21 +++ css/custom.css | 38 ++++ css/normalize.css | 427 ++++++++++++++++++++++++++++++++++++++++++++ css/skeleton.css | 418 +++++++++++++++++++++++++++++++++++++++++++ img/logo.png | Bin 0 -> 13642 bytes index.php | 36 ++++ php/config.inc.php | 44 +++++ php/footer.tpl.php | 7 + php/form.inc.php | 56 ++++++ php/header.tpl.php | 18 ++ 12 files changed, 1149 insertions(+) create mode 100644 admin.php create mode 100755 cmd/decrypt.php.txt create mode 100755 cmd/genkeys.php.txt create mode 100644 css/custom.css create mode 100644 css/normalize.css create mode 100644 css/skeleton.css create mode 100644 img/logo.png create mode 100755 index.php create mode 100644 php/config.inc.php create mode 100644 php/footer.tpl.php create mode 100755 php/form.inc.php create mode 100755 php/header.tpl.php diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..f9a3403 --- /dev/null +++ b/admin.php @@ -0,0 +1,54 @@ + +

Password:

+ '); + +if (strlen(DL_PASS) < 1) { + include header; + echo "

Admin password cannot be blank. Update DL_PASS in php/config.inc.php to use this feature.

"; + include footer; + exit(); +} + +if (strpos(__FILE__, 'admin.php') !== false) { + include header; + echo "

Please rename admin.php before using this tool. We suggest something like: ".hash("sha256", microtime() . random_int(PHP_INT_MIN, PHP_INT_MAX) . "t08ujli4helfiubhi8uy98yhe4f@#RETHrtg80uj").".php

"; + include footer; + exit(); +} + +$ip = $_SERVER['REMOTE_ADDR']; +if (count($ADMIN_IPS) > 0 && array_search($ip, $ADMIN_IPS) === false) { + include header; + echo "

Sorry, but your IP address does not have permission to access this tool. Please contact the form maintainer to resolve this.

"; + echo ""; + include footer; +} else { + if (isset($_POST) && isset($_POST['password'])) { + if ($_POST['password'] === $password) { + header('Content-Type: application/octet-stream'); + header("Content-Transfer-Encoding: Binary"); + header("Content-disposition: attachment; filename=\"submissions.dat\""); + readfile(FILE); + exit(); + } else { + include header; + echo "

Wrong password, sorry.\n"; + echo form; + include footer; + } + } else { + include header; + echo FORMCONTENTS; + date_default_timezone_set('America/Vancouver'); + echo "

Last submission received at " . date ("F d Y H:i:s", filemtime(FILE)) . ".

\n"; + include footer; + } +} + +?> diff --git a/cmd/decrypt.php.txt b/cmd/decrypt.php.txt new file mode 100755 index 0000000..185dd19 --- /dev/null +++ b/cmd/decrypt.php.txt @@ -0,0 +1,30 @@ + $v){ + echo "$k: $v\n"; + } + echo "\n"; +} + +?> diff --git a/cmd/genkeys.php.txt b/cmd/genkeys.php.txt new file mode 100755 index 0000000..b885969 --- /dev/null +++ b/cmd/genkeys.php.txt @@ -0,0 +1,21 @@ + diff --git a/css/custom.css b/css/custom.css new file mode 100644 index 0000000..4feffe5 --- /dev/null +++ b/css/custom.css @@ -0,0 +1,38 @@ +body { + background: #4b3557; +} + +body, p { + font-size: 1.5em; +} + +.container { + padding:2em; + background: #b09cbc; +} + +a { + color: #1A4C5C; +} + +textarea { + width: 80%; + height: 10em; +} + +div.titlebar { + margin-top: 1em; + margin-bottom: 3em; +} + +img.logo { + height: 10em; + float: left; + vertical-align:middle; +} + +h1.title { + float:right; + padding-top: 60px; + padding-right: 20px; +} diff --git a/css/normalize.css b/css/normalize.css new file mode 100644 index 0000000..81c6f31 --- /dev/null +++ b/css/normalize.css @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} \ No newline at end of file diff --git a/css/skeleton.css b/css/skeleton.css new file mode 100644 index 0000000..f28bf6c --- /dev/null +++ b/css/skeleton.css @@ -0,0 +1,418 @@ +/* +* Skeleton V2.0.4 +* Copyright 2014, Dave Gamache +* www.getskeleton.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/29/2014 +*/ + + +/* Table of contents +–––––––––––––––––––––––––––––––––––––––––––––––––– +- Grid +- Base Styles +- Typography +- Links +- Buttons +- Forms +- Lists +- Code +- Tables +- Spacing +- Utilities +- Clearing +- Media Queries +*/ + + +/* Grid +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.container { + position: relative; + width: 100%; + max-width: 960px; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; } +.column, +.columns { + width: 100%; + float: left; + box-sizing: border-box; } + +/* For devices larger than 400px */ +@media (min-width: 400px) { + .container { + width: 85%; + padding: 0; } +} + +/* For devices larger than 550px */ +@media (min-width: 550px) { + .container { + width: 80%; } + .column, + .columns { + margin-left: 4%; } + .column:first-child, + .columns:first-child { + margin-left: 0; } + + .one.column, + .one.columns { width: 4.66666666667%; } + .two.columns { width: 13.3333333333%; } + .three.columns { width: 22%; } + .four.columns { width: 30.6666666667%; } + .five.columns { width: 39.3333333333%; } + .six.columns { width: 48%; } + .seven.columns { width: 56.6666666667%; } + .eight.columns { width: 65.3333333333%; } + .nine.columns { width: 74.0%; } + .ten.columns { width: 82.6666666667%; } + .eleven.columns { width: 91.3333333333%; } + .twelve.columns { width: 100%; margin-left: 0; } + + .one-third.column { width: 30.6666666667%; } + .two-thirds.column { width: 65.3333333333%; } + + .one-half.column { width: 48%; } + + /* Offsets */ + .offset-by-one.column, + .offset-by-one.columns { margin-left: 8.66666666667%; } + .offset-by-two.column, + .offset-by-two.columns { margin-left: 17.3333333333%; } + .offset-by-three.column, + .offset-by-three.columns { margin-left: 26%; } + .offset-by-four.column, + .offset-by-four.columns { margin-left: 34.6666666667%; } + .offset-by-five.column, + .offset-by-five.columns { margin-left: 43.3333333333%; } + .offset-by-six.column, + .offset-by-six.columns { margin-left: 52%; } + .offset-by-seven.column, + .offset-by-seven.columns { margin-left: 60.6666666667%; } + .offset-by-eight.column, + .offset-by-eight.columns { margin-left: 69.3333333333%; } + .offset-by-nine.column, + .offset-by-nine.columns { margin-left: 78.0%; } + .offset-by-ten.column, + .offset-by-ten.columns { margin-left: 86.6666666667%; } + .offset-by-eleven.column, + .offset-by-eleven.columns { margin-left: 95.3333333333%; } + + .offset-by-one-third.column, + .offset-by-one-third.columns { margin-left: 34.6666666667%; } + .offset-by-two-thirds.column, + .offset-by-two-thirds.columns { margin-left: 69.3333333333%; } + + .offset-by-one-half.column, + .offset-by-one-half.columns { margin-left: 52%; } + +} + + +/* Base Styles +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +/* NOTE +html is set to 62.5% so that all the REM measurements throughout Skeleton +are based on 10px sizing. So basically 1.5rem = 15px :) */ +html { + font-size: 62.5%; } +body { + font-size: 1.5em; /* currently ems cause chrome bug misinterpreting rems on body element */ + line-height: 1.6; + font-weight: 400; + font-family: "Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #222; } + + +/* Typography +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 2rem; + font-weight: 300; } +h1 { font-size: 4.0rem; line-height: 1.2; letter-spacing: -.1rem;} +h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; } +h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; } +h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; } +h5 { font-size: 1.8rem; line-height: 1.5; letter-spacing: -.05rem; } +h6 { font-size: 1.5rem; line-height: 1.6; letter-spacing: 0; } + +/* Larger than phablet */ +@media (min-width: 550px) { + h1 { font-size: 5.0rem; } + h2 { font-size: 4.2rem; } + h3 { font-size: 3.6rem; } + h4 { font-size: 3.0rem; } + h5 { font-size: 2.4rem; } + h6 { font-size: 1.5rem; } +} + +p { + margin-top: 0; } + + +/* Links +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +a { + color: #1EAEDB; } +a:hover { + color: #0FA0CE; } + + +/* Buttons +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.button, +button, +input[type="submit"], +input[type="reset"], +input[type="button"] { + display: inline-block; + height: 38px; + padding: 0 30px; + color: #555; + text-align: center; + font-size: 11px; + font-weight: 600; + line-height: 38px; + letter-spacing: .1rem; + text-transform: uppercase; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border-radius: 4px; + border: 1px solid #bbb; + cursor: pointer; + box-sizing: border-box; } +.button:hover, +button:hover, +input[type="submit"]:hover, +input[type="reset"]:hover, +input[type="button"]:hover, +.button:focus, +button:focus, +input[type="submit"]:focus, +input[type="reset"]:focus, +input[type="button"]:focus { + color: #333; + border-color: #888; + outline: 0; } +.button.button-primary, +button.button-primary, +input[type="submit"].button-primary, +input[type="reset"].button-primary, +input[type="button"].button-primary { + color: #FFF; + background-color: #33C3F0; + border-color: #33C3F0; } +.button.button-primary:hover, +button.button-primary:hover, +input[type="submit"].button-primary:hover, +input[type="reset"].button-primary:hover, +input[type="button"].button-primary:hover, +.button.button-primary:focus, +button.button-primary:focus, +input[type="submit"].button-primary:focus, +input[type="reset"].button-primary:focus, +input[type="button"].button-primary:focus { + color: #FFF; + background-color: #1EAEDB; + border-color: #1EAEDB; } + + +/* Forms +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea, +select { + height: 38px; + padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */ + background-color: #fff; + border: 1px solid #D1D1D1; + border-radius: 4px; + box-shadow: none; + box-sizing: border-box; } +/* Removes awkward default styles on some inputs for iOS */ +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } +textarea { + min-height: 65px; + padding-top: 6px; + padding-bottom: 6px; } +input[type="email"]:focus, +input[type="number"]:focus, +input[type="search"]:focus, +input[type="text"]:focus, +input[type="tel"]:focus, +input[type="url"]:focus, +input[type="password"]:focus, +textarea:focus, +select:focus { + border: 1px solid #33C3F0; + outline: 0; } +label, +legend { + display: block; + margin-bottom: .5rem; + font-weight: 600; } +fieldset { + padding: 0; + border-width: 0; } +input[type="checkbox"], +input[type="radio"] { + display: inline; } +label > .label-body { + display: inline-block; + margin-left: .5rem; + font-weight: normal; } + + +/* Lists +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +ul { + list-style: circle inside; } +ol { + list-style: decimal inside; } +ol, ul { + padding-left: 0; + margin-top: 0; } +ul ul, +ul ol, +ol ol, +ol ul { + margin: 1.5rem 0 1.5rem 3rem; + font-size: 90%; } +li { + margin-bottom: 1rem; } + + +/* Code +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +code { + padding: .2rem .5rem; + margin: 0 .2rem; + font-size: 90%; + white-space: nowrap; + background: #F1F1F1; + border: 1px solid #E1E1E1; + border-radius: 4px; } +pre > code { + display: block; + padding: 1rem 1.5rem; + white-space: pre; } + + +/* Tables +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +th, +td { + padding: 12px 15px; + text-align: left; + border-bottom: 1px solid #E1E1E1; } +th:first-child, +td:first-child { + padding-left: 0; } +th:last-child, +td:last-child { + padding-right: 0; } + + +/* Spacing +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +button, +.button { + margin-bottom: 1rem; } +input, +textarea, +select, +fieldset { + margin-bottom: 1.5rem; } +pre, +blockquote, +dl, +figure, +table, +p, +ul, +ol, +form { + margin-bottom: 2.5rem; } + + +/* Utilities +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.u-full-width { + width: 100%; + box-sizing: border-box; } +.u-max-full-width { + max-width: 100%; + box-sizing: border-box; } +.u-pull-right { + float: right; } +.u-pull-left { + float: left; } + + +/* Misc +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +hr { + margin-top: 3rem; + margin-bottom: 3.5rem; + border-width: 0; + border-top: 1px solid #E1E1E1; } + + +/* Clearing +–––––––––––––––––––––––––––––––––––––––––––––––––– */ + +/* Self Clearing Goodness */ +.container:after, +.row:after, +.u-cf { + content: ""; + display: table; + clear: both; } + + +/* Media Queries +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +/* +Note: The best way to structure the use of media queries is to create the queries +near the relevant code. For example, if you wanted to change the styles for buttons +on small devices, paste the mobile query code up in the buttons section and style it +there. +*/ + + +/* Larger than mobile */ +@media (min-width: 400px) {} + +/* Larger than phablet (also point when grid becomes active) */ +@media (min-width: 550px) {} + +/* Larger than tablet */ +@media (min-width: 750px) {} + +/* Larger than desktop */ +@media (min-width: 1000px) {} + +/* Larger than Desktop HD */ +@media (min-width: 1200px) {} diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c09b390cb9a060ad76b413cad3e32e7e272d42 GIT binary patch literal 13642 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 BuKEA~ literal 0 HcmV?d00001 diff --git a/index.php b/index.php new file mode 100755 index 0000000..df54247 --- /dev/null +++ b/index.php @@ -0,0 +1,36 @@ +0) { + // add a few misc maybe-useful fields to the data before encrypting + $_POST['00a_received'] = date(DATE_RSS); + $_POST['00b_spam'] = isset($_POST['email']) && trim($_POST['email']) != "" ? "probably" : "unlikely"; + $_POST['00c_ip'] = $_SERVER['REMOTE_ADDR']; + $_POST['00d_session'] = session_id(); + + // serialize post data -- creates a risk of extraneous data being submitted by pests + $data = json_encode($_POST); + + // pubkey is a base64-encoded key generated by sodium_crypto_box_keypair + $pubKey = base64_decode(file_get_contents("key.public")); + + // for now, data is stored by encrypting each submission individually, base64 encoding it, + // and appending it as a separate line onto the end of the data file (prepending with a + // unix timestamp so later we can tell if new data has arrived without decrypting) + $encrypted = sodium_crypto_box_seal($data, $pubKey); + + if (file_put_contents(FILE, time() . "|" . base64_encode($encrypted)."\n", FILE_APPEND | LOCK_EX) !== false) { + echo MSG_SUCCESS; + } else { + echo MSG_FAIL; + } +} else { + include form; +} + +include footer; + +?> diff --git a/php/config.inc.php b/php/config.inc.php new file mode 100644 index 0000000..a856334 --- /dev/null +++ b/php/config.inc.php @@ -0,0 +1,44 @@ +Submission Received +

Thank you for your submission to '.MSG_TITLE.'!

+'); + +// Message for when a submission error occurred +define('MSG_FAIL', ' +

Error receiving submission

\n"; +

There was a problem with your submission. Please hit the Back button on your browser and try again in a few minutes, or contact the form\'s administrator if the problem persists.

+ '); + +// Displayed at the bottom of every page +define('MSG_FOOTER', '©2020 Our Awesome Org - All rights reserved. Form powered by Lockbox by Open Privacy'); + +// restrict the (optional) admin form to these IPs +$ADMIN_IPS = array( +/* "1.2.3.501", // erinn + "9.5.1.06", // sarah + "92.102.94.l" // dan*/ +); + +// if you would like you disable the IP check (not recommended!) you can use this line instead: +// $ADMIN_IPS = array(); + +// password for downloading submissions from the admin form +define('DL_PASS', ""); + + +// ============ include file locations -- you shouldn't need to change below this line + +define('header', 'php/header.tpl.php'); +define('footer', 'php/footer.tpl.php'); +define('form', 'php/form.inc.php'); + +?> diff --git a/php/footer.tpl.php b/php/footer.tpl.php new file mode 100644 index 0000000..157976b --- /dev/null +++ b/php/footer.tpl.php @@ -0,0 +1,7 @@ + +
+ +
+ + + diff --git a/php/form.inc.php b/php/form.inc.php new file mode 100755 index 0000000..0a950d1 --- /dev/null +++ b/php/form.inc.php @@ -0,0 +1,56 @@ +

Welcome to Lockbox by Open Privacy! To get started, replace the contents of this form in php/form.inc.php with your own. If you know HTML you can write the form yourself. Otherwise you can use any form building tool that outputs to HTML.

+ +
+ +

Application Questions

+ + + +

1. What is your name (preferred or legal)?

+ + +

2. What city/neighbourhood do you live in?

+ + +

3. Is there anything else you'd like us to know?

+ + +

4. What is your favourite flavour?

+ + +

5. Pick one?

+ + + + +

Please remember to click the Submit button below once you are ready.

+ + +
+ +
+ + + +
diff --git a/php/header.tpl.php b/php/header.tpl.php new file mode 100755 index 0000000..d05a804 --- /dev/null +++ b/php/header.tpl.php @@ -0,0 +1,18 @@ + + + + <?= MSG_TITLE ?> + + + + + + +
+ +
+ +

+
+
+