Added Cookie Consent, among other things

This adds Cookie Consent library at public/libs/cookieconsent.

Added views/cookiepolicy.njk.

Added a new config option cookiePolicy. Disabled by default.

Updated views/faq.njk to use variables wherever applicable.
The variables are initiated at views/_globals.njk.
The said file also contains variables used at views/cookiepolicy.njk.

Restored messages about Cloudflare to FAQ.
They will be shown only if config.cloudflare.purgeCache is enabled.

Statistics will now capitalize first letters of the keys instead.

Updated background color of SweetAlert modals.

Moved table styling from dashboard.css to style.css (global),
since table will also be used in Cookie Policy page.

Bumped v1 version string and rebuilt client assets.
This commit is contained in:
Bobby Wibowo 2020-05-17 03:35:54 +07:00
parent 23843aa826
commit 86b51fe5f5
No known key found for this signature in database
GPG Key ID: 51C3A1E1E22D26CF
25 changed files with 402 additions and 77 deletions

View File

@ -45,6 +45,15 @@ module.exports = {
*/
pages: ['home', 'auth', 'dashboard', 'faq'],
/*
This will load public/libs/cookieconsent/cookieconsent.min.{css,js} on homepage (configured from home.js).
You may use this if you have some specific needs, since lolisafe by itself will not use Cookies at all.
Instead it will use Local Storage for both authentication and preferences/states in Dashboard.
I'm not sure if Cookies Laws apply to Local Storage as well, although I supppose it makes sense if they do.
NOTE: Enabling this will automatically push 'cookiepolicy' to pages array above.
*/
cookiePolicy: false,
/*
This can be either 'blacklist' or 'whitelist', which should be self-explanatory.
When this is set to neither, this will fallback to 'blacklist'.

View File

@ -1,2 +1,2 @@
body{-webkit-animation:none;animation:none}#dashboard{-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}.section{background:none}.menu-list a{color:#209cee;border:1px solid transparent;margin-top:-1px}.menu-list a.is-active{color:#fff;background:#209cee;border-color:#209cee}.menu-list a:not(.is-active):hover{color:#209cee;background:none;border-color:#209cee}.menu-list a[disabled]{color:#7a7a7a;pointer-events:none}.menu-list a.is-loading:after{-webkit-animation:spinAround .5s linear infinite;animation:spinAround .5s linear infinite;border-radius:290486px;border-color:transparent transparent #dbdbdb #dbdbdb;border-style:solid;border-width:2px;content:"";display:block;height:1em;width:1em;right:.5em;top:calc(50% - .5em);position:absolute!important}ul#albumsContainer{border-left:0;padding-left:0}ul#albumsContainer li{border-left:2px solid #585858;padding-left:.75em}#page.fade-in,ul#albumsContainer li{-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}.pagination{margin-bottom:1.25rem}.pagination a:not([disabled]){color:#eff0f1;border-color:#eff0f1;background:none}.pagination a.pagination-link:hover,.pagination a.pagination-next:not([disabled]):hover,.pagination a.pagination-previous:not([disabled]):hover{color:#000;background-color:#eff0f1;border-color:#eff0f1}.pagination a.pagination-link.is-current{color:#000;background-color:#eff0f1}.pagination a.is-loading:hover:after,.pagination a.pagination-link.is-current.is-loading:after{border-bottom-color:#000;border-left-color:#000}li[data-action=page-ellipsis]{cursor:pointer}.label{color:#bdc3c7}.menu-list li ul{border-left-color:#898b8d}.image-container .checkbox{position:absolute;top:11px;left:11px}.image-container .controls{display:flex;position:absolute;top:11px;right:11px}.image-container .controls .button{border-radius:0}.image-container .controls .button:not(:active):not(:hover){color:#fff;background-color:rgba(0,0,0,.56078)}.no-touch .image-container .checkbox{opacity:.5}.no-touch .image-container .controls,.no-touch .image-container .details{opacity:0}.no-touch .image-container:hover .checkbox,.no-touch .image-container:hover .controls,.no-touch .image-container:hover .details{opacity:1}#page{min-width:0}.table{color:#bdc3c7;background-color:#000;font-size:.75rem}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#2f2f2f}.table td,.table th{white-space:nowrap;vertical-align:middle;border-bottom:1px solid #585858}.table th{color:#eff0f1;height:2.25em;font-weight:400}.table thead td,.table thead th{color:#eff0f1;background-color:#585858;border-bottom:0;height:31px}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:1px}.table .cell-indent{padding-left:2.25em}.is-linethrough{text-decoration:line-through}#dashboard.is-loading #menu .menu-list a,#dashboard.is-loading [data-action]{cursor:progress}#dashboard.is-loading .column.bulk-operations [data-action],#dashboard.is-loading .column.exclusive-operations [data-action],#dashboard.is-loading .table [data-action],#dashboard.is-loading [data-action$=-help]{cursor:pointer}#statistics tr :first-child{width:50%}.expirydate{color:#bdc3c7}
body{-webkit-animation:none;animation:none}#dashboard{-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}.section{background:none}.menu-list a{color:#209cee;border:1px solid transparent;margin-top:-1px}.menu-list a.is-active{color:#fff;background:#209cee;border-color:#209cee}.menu-list a:not(.is-active):hover{color:#209cee;background:none;border-color:#209cee}.menu-list a[disabled]{color:#7a7a7a;pointer-events:none}.menu-list a.is-loading:after{-webkit-animation:spinAround .5s linear infinite;animation:spinAround .5s linear infinite;border-radius:290486px;border-color:transparent transparent #dbdbdb #dbdbdb;border-style:solid;border-width:2px;content:"";display:block;height:1em;width:1em;right:.5em;top:calc(50% - .5em);position:absolute!important}ul#albumsContainer{border-left:0;padding-left:0}ul#albumsContainer li{border-left:2px solid #585858;padding-left:.75em}#page.fade-in,ul#albumsContainer li{-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}.pagination{margin-bottom:1.25rem}.pagination a:not([disabled]){color:#eff0f1;border-color:#eff0f1;background:none}.pagination a.pagination-link:hover,.pagination a.pagination-next:not([disabled]):hover,.pagination a.pagination-previous:not([disabled]):hover{color:#000;background-color:#eff0f1;border-color:#eff0f1}.pagination a.pagination-link.is-current{color:#000;background-color:#eff0f1}.pagination a.is-loading:hover:after,.pagination a.pagination-link.is-current.is-loading:after{border-bottom-color:#000;border-left-color:#000}li[data-action=page-ellipsis]{cursor:pointer}.label{color:#bdc3c7}.menu-list li ul{border-left-color:#898b8d}.image-container .checkbox{position:absolute;top:11px;left:11px}.image-container .controls{display:flex;position:absolute;top:11px;right:11px}.image-container .controls .button{border-radius:0}.image-container .controls .button:not(:active):not(:hover){color:#fff;background-color:rgba(0,0,0,.56078)}.no-touch .image-container .checkbox{opacity:.5}.no-touch .image-container .controls,.no-touch .image-container .details{opacity:0}.no-touch .image-container:hover .checkbox,.no-touch .image-container:hover .controls,.no-touch .image-container:hover .details{opacity:1}#page{min-width:0}.is-linethrough{text-decoration:line-through}#dashboard.is-loading #menu .menu-list a,#dashboard.is-loading [data-action]{cursor:progress}#dashboard.is-loading .column.bulk-operations [data-action],#dashboard.is-loading .column.exclusive-operations [data-action],#dashboard.is-loading .table [data-action],#dashboard.is-loading [data-action$=-help]{cursor:pointer}#statistics tr :first-child{width:50%}.expirydate{color:#bdc3c7}
/*# sourceMappingURL=dashboard.css.map */

File diff suppressed because one or more lines are too long

2
dist/css/style.css vendored
View File

@ -1,2 +1,2 @@
html{background-color:#000;overflow-y:auto}body{color:#eff0f1;-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}@-webkit-keyframes fadeInOpacity{0%{opacity:0}to{opacity:1}}@keyframes fadeInOpacity{0%{opacity:0}to{opacity:1}}a{color:#209cee}a:hover{color:#67c3ff}hr{background-color:#585858}.message-body code,code{background-color:#000;border-radius:5px;font-size:1rem}.subtitle,.subtitle strong{color:#bdc3c7}.subtitle.is-brighter,.subtitle.is-brighter strong,.title{color:#eff0f1}.input,.select select,.textarea{color:#eff0f1;border-color:#585858;background-color:#000}.input::-moz-placeholder,.textarea::-moz-placeholder{color:#bdc3c7}.input::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:#bdc3c7}.input:-moz-placeholder,.textarea:-moz-placeholder{color:#bdc3c7}.input:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:#bdc3c7}.input.is-active,.input.is-focused,.input:active,.input:focus,.input:not([disabled]):hover,.select fieldset:not([disabled]) select:hover,.select select:not([disabled]):hover,.textarea.is-active,.textarea.is-focused,.textarea:active,.textarea:focus,.textarea:not([disabled]):hover,fieldset:not([disabled]) .input:hover,fieldset:not([disabled]) .select select:hover,fieldset:not([disabled]) .textarea:hover{border-color:#209cee}.input[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .input,fieldset[disabled] .select select,fieldset[disabled] .textarea{border-color:#585858;background-color:#2f2f2f}.label{color:#eff0f1;font-weight:400}.help{color:#bdc3c7}.progress{background-color:#585858}.button.is-info.is-hovered [class*=" icon-"]:before,.button.is-info.is-hovered [class^=icon-]:before,.button.is-info:hover [class*=" icon-"]:before,.button.is-info:hover [class^=icon-]:before{fill:#fff}.checkbox:hover,.radio:hover{color:#7f8c8d}.select:not(.is-multiple):not(.is-loading):after,.select:not(.is-multiple):not(.is-loading):hover:after{border-color:#eff0f1}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#585858}.message{background-color:#2f2f2f}.message-body{color:#eff0f1;border:0}.section.has-extra-bottom-padding{padding-bottom:6.5rem}a.floating-home-button{display:flex;position:fixed;right:1.5rem;bottom:1.5rem;border-radius:100%;background-color:#209cee;color:#fff;width:3.5rem;height:3.5rem;justify-content:center;align-items:center;transition:background-color .25s}a.floating-home-button:hover{background-color:#67c3ff;color:#fff}a.floating-home-button>.icon{margin-top:-2px}.hero.is-fullheight>.hero-body{min-height:100vh;height:100%}.hero.is-fullheight>.hero-body>.container{width:100%}
html{background-color:#000;overflow-y:auto}body{color:#eff0f1;-webkit-animation:fadeInOpacity .5s;animation:fadeInOpacity .5s}@-webkit-keyframes fadeInOpacity{0%{opacity:0}to{opacity:1}}@keyframes fadeInOpacity{0%{opacity:0}to{opacity:1}}a{color:#209cee}a:hover{color:#67c3ff}hr{background-color:#585858}.message-body code,code{background-color:#000;border-radius:5px;font-size:1rem}.subtitle,.subtitle strong{color:#bdc3c7}.subtitle.is-brighter,.subtitle.is-brighter strong,.title{color:#eff0f1}.input,.select select,.textarea{color:#eff0f1;border-color:#585858;background-color:#000}.input::-moz-placeholder,.textarea::-moz-placeholder{color:#bdc3c7}.input::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:#bdc3c7}.input:-moz-placeholder,.textarea:-moz-placeholder{color:#bdc3c7}.input:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:#bdc3c7}.input.is-active,.input.is-focused,.input:active,.input:focus,.input:not([disabled]):hover,.select fieldset:not([disabled]) select:hover,.select select:not([disabled]):hover,.textarea.is-active,.textarea.is-focused,.textarea:active,.textarea:focus,.textarea:not([disabled]):hover,fieldset:not([disabled]) .input:hover,fieldset:not([disabled]) .select select:hover,fieldset:not([disabled]) .textarea:hover{border-color:#209cee}.input[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .input,fieldset[disabled] .select select,fieldset[disabled] .textarea{border-color:#585858;background-color:#2f2f2f}.label{color:#eff0f1;font-weight:400}.help{color:#bdc3c7}.progress{background-color:#585858}.button.is-info.is-hovered [class*=" icon-"]:before,.button.is-info.is-hovered [class^=icon-]:before,.button.is-info:hover [class*=" icon-"]:before,.button.is-info:hover [class^=icon-]:before{fill:#fff}.checkbox:hover,.radio:hover{color:#7f8c8d}.select:not(.is-multiple):not(.is-loading):after,.select:not(.is-multiple):not(.is-loading):hover:after{border-color:#eff0f1}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#585858}.message{background-color:#2f2f2f}.message-body{color:#eff0f1;border:0}.table{color:#bdc3c7;background-color:#000}.table.is-narrow{font-size:.75rem}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#2f2f2f}.table td,.table th{white-space:nowrap;vertical-align:middle;border-bottom:1px solid #585858}.table th{color:#eff0f1;height:2.25em;font-weight:400}.table th.capitalize{text-transform:capitalize}.table thead td,.table thead th{color:#eff0f1;background-color:#383838;border-bottom:0;height:31px}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:1px}.table .cell-indent{padding-left:2.25em}.cc-window{font-family:inherit!important}.cc-link{padding:0!important}.section.has-extra-bottom-padding{padding-bottom:6.5rem}a.floating-home-button{display:flex;position:fixed;right:1.5rem;bottom:1.5rem;border-radius:100%;background-color:#209cee;color:#fff;width:3.5rem;height:3.5rem;justify-content:center;align-items:center;transition:background-color .25s}a.floating-home-button:hover{background-color:#67c3ff;color:#fff}a.floating-home-button>.icon{margin-top:-2px}.hero.is-fullheight>.hero-body{min-height:100vh;height:100%}.hero.is-fullheight>.hero-body>.container{width:100%}
/*# sourceMappingURL=style.css.map */

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
.swal-modal{background-color:#2f2f2f}.swal-modal .field{text-align:left;text-align:initial}.swal-modal.is-expanded{width:auto;max-width:90%}.swal-text,.swal-title{color:#eff0f1}.swal-text{text-align:center}.swal-content .checkbox,.swal-content .label,.swal-content .radio{color:#eff0f1}.swal-content .checkbox:hover,.swal-content .radio:hover{color:#bdc3c7}.swal-button{background-color:#3794d2;color:#eff0f1}.swal-button:hover{background-color:#1496ed}.swal-button:focus{box-shadow:0 0 0 1px #030303,0 0 0 3px rgba(55,148,210,.29)}.swal-button--loading{color:transparent}.swal-button--danger{background-color:#da4453}.swal-icon--info{border-color:#3794d2}.swal-icon--info:after,.swal-icon--info:before{background-color:#3794d2}.swal-icon--error{border-color:#da4453}.swal-icon--error__line{background-color:#da4453}.swal-icon--warning{border-color:#f67400;-webkit-animation:pulseWarning .5s infinite alternate;animation:pulseWarning .5s infinite alternate}.swal-icon--warning__body,.swal-icon--warning__dot{background-color:#f67400;-webkit-animation:pulseWarningBody .5s infinite alternate;animation:pulseWarningBody .5s infinite alternate}@-webkit-keyframes pulseWarning{0%{border-color:#ffaa60}to{border-color:#f67400}}@keyframes pulseWarning{0%{border-color:#ffaa60}to{border-color:#f67400}}@-webkit-keyframes pulseWarningBody{0%{background-color:#ffaa60}to{background-color:#f67400}}@keyframes pulseWarningBody{0%{background-color:#ffaa60}to{background-color:#f67400}}.swal-icon--success{border-color:#27ae60}.swal-icon--success__line{background-color:#27ae60}.swal-icon--success__hide-corners{background-color:#2f2f2f}.swal-icon--success:after,.swal-icon--success:before{background:#2f2f2f}.swal-display-thumb-container{min-width:200px;min-height:200px;display:flex;align-items:center;justify-content:center}
.swal-modal{background-color:#282828}.swal-modal .field{text-align:left;text-align:initial}.swal-modal.is-expanded{width:auto;max-width:90%}.swal-text,.swal-title{color:#eff0f1}.swal-text{text-align:center}.swal-content .checkbox,.swal-content .label,.swal-content .radio{color:#eff0f1}.swal-content .checkbox:hover,.swal-content .radio:hover{color:#bdc3c7}.swal-button{background-color:#3794d2;color:#eff0f1}.swal-button:hover{background-color:#1496ed}.swal-button:focus{box-shadow:0 0 0 1px #030303,0 0 0 3px rgba(55,148,210,.29)}.swal-button--loading{color:transparent}.swal-button--danger{background-color:#da4453}.swal-icon--info{border-color:#3794d2}.swal-icon--info:after,.swal-icon--info:before{background-color:#3794d2}.swal-icon--error{border-color:#da4453}.swal-icon--error__line{background-color:#da4453}.swal-icon--warning{border-color:#f67400;-webkit-animation:pulseWarning .5s infinite alternate;animation:pulseWarning .5s infinite alternate}.swal-icon--warning__body,.swal-icon--warning__dot{background-color:#f67400;-webkit-animation:pulseWarningBody .5s infinite alternate;animation:pulseWarningBody .5s infinite alternate}@-webkit-keyframes pulseWarning{0%{border-color:#ffaa60}to{border-color:#f67400}}@keyframes pulseWarning{0%{border-color:#ffaa60}to{border-color:#f67400}}@-webkit-keyframes pulseWarningBody{0%{background-color:#ffaa60}to{background-color:#f67400}}@keyframes pulseWarningBody{0%{background-color:#ffaa60}to{background-color:#f67400}}.swal-icon--success{border-color:#27ae60}.swal-icon--success__line{background-color:#27ae60}.swal-icon--success__hide-corners{background-color:#282828}.swal-icon--success:after,.swal-icon--success:before{background:#282828}.swal-display-thumb-container{min-width:200px;min-height:200px;display:flex;align-items:center;justify-content:center}
/*# sourceMappingURL=sweetalert.css.map */

View File

@ -1 +1 @@
{"version":3,"sources":["css/sweetalert.css"],"names":[],"mappings":"AAAA,YACE,wBACF,CAEA,mBACE,eAAkB,CAAlB,kBACF,CAEA,wBACE,UAAW,CACX,aACF,CAEA,uBAEE,aACF,CAEA,WACE,iBACF,CAEA,kEAGE,aACF,CAEA,yDAEE,aACF,CAEA,aACE,wBAAyB,CACzB,aACF,CAEA,mBACE,wBACF,CAEA,mBACE,2DACF,CAEA,sBACE,iBACF,CAEA,qBACE,wBACF,CAEA,iBACE,oBACF,CAEA,+CAEE,wBACF,CAEA,kBACE,oBACF,CAEA,wBACE,wBACF,CAEA,oBACE,oBAAqB,CACrB,qDAA8C,CAA9C,6CACF,CAEA,mDAEE,wBAAyB,CACzB,yDAAkD,CAAlD,iDACF,CAEA,gCACE,GACE,oBACF,CAEA,GACE,oBACF,CACF,CAEA,wBACE,GACE,oBACF,CAEA,GACE,oBACF,CACF,CAEA,oCACE,GACE,wBACF,CAEA,GACE,wBACF,CACF,CAEA,4BACE,GACE,wBACF,CAEA,GACE,wBACF,CACF,CAEA,oBACE,oBACF,CAEA,0BACE,wBACF,CAEA,kCACE,wBACF,CAEA,qDAEE,kBACF,CAEA,8BACE,eAAgB,CAChB,gBAAiB,CACjB,YAAa,CACb,kBAAmB,CACnB,sBACF","file":"sweetalert.css","sourcesContent":[".swal-modal {\n background-color: #2f2f2f\n}\n\n.swal-modal .field {\n text-align: initial\n}\n\n.swal-modal.is-expanded {\n width: auto;\n max-width: 90%\n}\n\n.swal-title,\n.swal-text {\n color: #eff0f1\n}\n\n.swal-text {\n text-align: center\n}\n\n.swal-content .label,\n.swal-content .checkbox,\n.swal-content .radio {\n color: #eff0f1\n}\n\n.swal-content .checkbox:hover,\n.swal-content .radio:hover {\n color: #bdc3c7\n}\n\n.swal-button {\n background-color: #3794d2;\n color: #eff0f1\n}\n\n.swal-button:hover {\n background-color: #1496ed\n}\n\n.swal-button:focus {\n box-shadow: 0 0 0 1px #030303, 0 0 0 3px rgba(55, 148, 210, 0.29)\n}\n\n.swal-button--loading {\n color: transparent\n}\n\n.swal-button--danger {\n background-color: #da4453\n}\n\n.swal-icon--info {\n border-color: #3794d2\n}\n\n.swal-icon--info::after,\n.swal-icon--info::before {\n background-color: #3794d2\n}\n\n.swal-icon--error {\n border-color: #da4453\n}\n\n.swal-icon--error__line {\n background-color: #da4453\n}\n\n.swal-icon--warning {\n border-color: #f67400;\n animation: pulseWarning 0.5s infinite alternate\n}\n\n.swal-icon--warning__body,\n.swal-icon--warning__dot {\n background-color: #f67400;\n animation: pulseWarningBody 0.5s infinite alternate\n}\n\n@-webkit-keyframes pulseWarning {\n 0% {\n border-color: #ffaa60\n }\n\n to {\n border-color: #f67400\n }\n}\n\n@keyframes pulseWarning {\n 0% {\n border-color: #ffaa60\n }\n\n to {\n border-color: #f67400\n }\n}\n\n@-webkit-keyframes pulseWarningBody {\n 0% {\n background-color: #ffaa60\n }\n\n to {\n background-color: #f67400\n }\n}\n\n@keyframes pulseWarningBody {\n 0% {\n background-color: #ffaa60\n }\n\n to {\n background-color: #f67400\n }\n}\n\n.swal-icon--success {\n border-color: #27ae60\n}\n\n.swal-icon--success__line {\n background-color: #27ae60\n}\n\n.swal-icon--success__hide-corners {\n background-color: #2f2f2f\n}\n\n.swal-icon--success::after,\n.swal-icon--success::before {\n background: #2f2f2f\n}\n\n.swal-display-thumb-container {\n min-width: 200px;\n min-height: 200px;\n display: flex;\n align-items: center;\n justify-content: center\n}\n"]}
{"version":3,"sources":["css/sweetalert.css"],"names":[],"mappings":"AAAA,YACE,wBACF,CAEA,mBACE,eAAkB,CAAlB,kBACF,CAEA,wBACE,UAAW,CACX,aACF,CAEA,uBAEE,aACF,CAEA,WACE,iBACF,CAEA,kEAGE,aACF,CAEA,yDAEE,aACF,CAEA,aACE,wBAAyB,CACzB,aACF,CAEA,mBACE,wBACF,CAEA,mBACE,2DACF,CAEA,sBACE,iBACF,CAEA,qBACE,wBACF,CAEA,iBACE,oBACF,CAEA,+CAEE,wBACF,CAEA,kBACE,oBACF,CAEA,wBACE,wBACF,CAEA,oBACE,oBAAqB,CACrB,qDAA8C,CAA9C,6CACF,CAEA,mDAEE,wBAAyB,CACzB,yDAAkD,CAAlD,iDACF,CAEA,gCACE,GACE,oBACF,CAEA,GACE,oBACF,CACF,CAEA,wBACE,GACE,oBACF,CAEA,GACE,oBACF,CACF,CAEA,oCACE,GACE,wBACF,CAEA,GACE,wBACF,CACF,CAEA,4BACE,GACE,wBACF,CAEA,GACE,wBACF,CACF,CAEA,oBACE,oBACF,CAEA,0BACE,wBACF,CAEA,kCACE,wBACF,CAEA,qDAEE,kBACF,CAEA,8BACE,eAAgB,CAChB,gBAAiB,CACjB,YAAa,CACb,kBAAmB,CACnB,sBACF","file":"sweetalert.css","sourcesContent":[".swal-modal {\n background-color: #282828\n}\n\n.swal-modal .field {\n text-align: initial\n}\n\n.swal-modal.is-expanded {\n width: auto;\n max-width: 90%\n}\n\n.swal-title,\n.swal-text {\n color: #eff0f1\n}\n\n.swal-text {\n text-align: center\n}\n\n.swal-content .label,\n.swal-content .checkbox,\n.swal-content .radio {\n color: #eff0f1\n}\n\n.swal-content .checkbox:hover,\n.swal-content .radio:hover {\n color: #bdc3c7\n}\n\n.swal-button {\n background-color: #3794d2;\n color: #eff0f1\n}\n\n.swal-button:hover {\n background-color: #1496ed\n}\n\n.swal-button:focus {\n box-shadow: 0 0 0 1px #030303, 0 0 0 3px rgba(55, 148, 210, 0.29)\n}\n\n.swal-button--loading {\n color: transparent\n}\n\n.swal-button--danger {\n background-color: #da4453\n}\n\n.swal-icon--info {\n border-color: #3794d2\n}\n\n.swal-icon--info::after,\n.swal-icon--info::before {\n background-color: #3794d2\n}\n\n.swal-icon--error {\n border-color: #da4453\n}\n\n.swal-icon--error__line {\n background-color: #da4453\n}\n\n.swal-icon--warning {\n border-color: #f67400;\n animation: pulseWarning 0.5s infinite alternate\n}\n\n.swal-icon--warning__body,\n.swal-icon--warning__dot {\n background-color: #f67400;\n animation: pulseWarningBody 0.5s infinite alternate\n}\n\n@-webkit-keyframes pulseWarning {\n 0% {\n border-color: #ffaa60\n }\n\n to {\n border-color: #f67400\n }\n}\n\n@keyframes pulseWarning {\n 0% {\n border-color: #ffaa60\n }\n\n to {\n border-color: #f67400\n }\n}\n\n@-webkit-keyframes pulseWarningBody {\n 0% {\n background-color: #ffaa60\n }\n\n to {\n background-color: #f67400\n }\n}\n\n@keyframes pulseWarningBody {\n 0% {\n background-color: #ffaa60\n }\n\n to {\n background-color: #f67400\n }\n}\n\n.swal-icon--success {\n border-color: #27ae60\n}\n\n.swal-icon--success__line {\n background-color: #27ae60\n}\n\n.swal-icon--success__hide-corners {\n background-color: #282828\n}\n\n.swal-icon--success::after,\n.swal-icon--success::before {\n background: #282828\n}\n\n.swal-display-thumb-container {\n min-width: 200px;\n min-height: 200px;\n display: flex;\n align-items: center;\n justify-content: center\n}\n"]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
dist/js/home.js vendored

File diff suppressed because one or more lines are too long

2
dist/js/home.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -158,6 +158,10 @@ safe.use('/api', api)
utils.clientVersion = versions['1']
}
// Cookie Policy
if (config.cookiePolicy)
config.pages.push('cookiepolicy')
// Check for custom pages, otherwise fallback to Nunjucks templates
for (const page of config.pages) {
const customPage = path.join(paths.customPages, `${page}.html`)

View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2016 Silktide Ltd
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@ -0,0 +1,6 @@
.cc-window{opacity:1;-webkit-transition:opacity 1s ease;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{-webkit-transition:transform 1s ease;-webkit-transition:-webkit-transform 1s ease;transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease,-webkit-transform 1s ease}.cc-animate.cc-revoke.cc-top{-webkit-transform:translateY(-2em);transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{-webkit-transform:translateY(2em);transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-top{-webkit-transform:translateY(0);transform:translateY(0)}.cc-animate.cc-revoke.cc-active.cc-bottom{-webkit-transform:translateY(0);transform:translateY(0)}.cc-revoke:hover{-webkit-transform:translateY(0);transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;-webkit-transition:max-height 1s;transition:max-height 1s}
.cc-revoke,.cc-window{position:fixed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-revoke:hover{text-decoration:underline}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em;text-decoration:underline}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1}
.cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.cc-window.cc-banner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:100%;margin-right:1em}.cc-compliance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-floating .cc-compliance>.cc-btn{-webkit-box-flex:1;-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em}
@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-floating,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset}.cc-window.cc-banner .cc-message{margin-right:0}}
.cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-webkit-box-flex:0;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block}
.cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em;margin-bottom:1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0}

File diff suppressed because one or more lines are too long

View File

@ -146,46 +146,6 @@ li[data-action="page-ellipsis"] {
min-width: 0
}
.table {
color: #bdc3c7;
background-color: #000;
font-size: 0.75rem
}
.table.is-hoverable tbody tr:not(.is-selected):hover {
background-color: #2f2f2f
}
.table td,
.table th {
white-space: nowrap;
vertical-align: middle;
border-bottom: 1px solid #585858
}
.table th {
color: #eff0f1;
height: 2.25em;
font-weight: normal
}
.table thead td,
.table thead th {
color: #eff0f1;
background-color: #585858;
border-bottom: 0;
height: 31px
}
.table tbody tr:last-child td,
.table tbody tr:last-child th {
border-bottom-width: 1px
}
.table .cell-indent {
padding-left: 2.25em
}
.is-linethrough {
text-decoration: line-through
}

View File

@ -168,6 +168,62 @@ fieldset[disabled] .select select:hover {
border: 0
}
.table {
color: #bdc3c7;
background-color: #000
}
.table.is-narrow {
font-size: 0.75rem
}
.table.is-hoverable tbody tr:not(.is-selected):hover {
background-color: #2f2f2f
}
.table td,
.table th {
white-space: nowrap;
vertical-align: middle;
border-bottom: 1px solid #585858
}
.table th {
color: #eff0f1;
height: 2.25em;
font-weight: normal
}
.table th.capitalize {
text-transform: capitalize
}
.table thead td,
.table thead th {
color: #eff0f1;
background-color: #383838;
border-bottom: 0;
height: 31px
}
.table tbody tr:last-child td,
.table tbody tr:last-child th {
border-bottom-width: 1px
}
.table .cell-indent {
padding-left: 2.25em
}
/** Cookie Consent **/
.cc-window {
font-family: inherit !important
}
.cc-link {
padding: 0 !important
}
/* floating button's bottom offset + height + bottom offset */
.section.has-extra-bottom-padding {
padding-bottom: 6.5rem

View File

@ -1,5 +1,5 @@
.swal-modal {
background-color: #2f2f2f
background-color: #282828
}
.swal-modal .field {
@ -129,12 +129,12 @@
}
.swal-icon--success__hide-corners {
background-color: #2f2f2f
background-color: #282828
}
.swal-icon--success::after,
.swal-icon--success::before {
background: #2f2f2f
background: #282828
}
.swal-display-thumb-container {

View File

@ -1499,7 +1499,7 @@ page.getAlbums = (params = {}) => {
<hr>
<h2 class="subtitle">List of albums</h2>
<div class="table-container">
<table class="table is-fullwidth is-hoverable">
<table class="table is-narrow is-fullwidth is-hoverable">
<thead>
<tr>
<th>ID</th>
@ -2567,10 +2567,10 @@ page.getStatistics = (params = {}) => {
const string = valKeys[j]
.replace(/([A-Z])/g, ' $1')
.toUpperCase()
.replace(/(^|\s)(cpu|db)/gi, (match, p1, p2) => p1 + p2.toUpperCase())
rows += `
<tr>
<th>${string}</th>
<th class="capitalize">${string}</th>
<td>${parsed}</td>
</tr>
`
@ -2587,10 +2587,10 @@ page.getStatistics = (params = {}) => {
content += `
<div class="table-container">
<table id="statistics" class="table is-fullwidth is-hoverable">
<table id="statistics" class="table is-narrow is-fullwidth is-hoverable">
<thead>
<tr>
<th>${keys[i].toUpperCase()}</th>
<th class="capitalize">${keys[i]}</th>
<td></td>
</tr>
</thead>

View File

@ -1066,6 +1066,33 @@ window.addEventListener('paste', event => {
})
window.onload = () => {
if (window.cookieconsent)
window.cookieconsent.initialise({
cookie: {
name: 'cookieconsent_status',
expiryDays: 730,
secure: true
},
palette: {
popup: {
background: '#282828',
text: '#eff0f1'
},
button: {
background: '#209cee',
text: '#ffffff'
}
},
theme: 'classic',
position: 'bottom-left',
content: {
message: 'We use cookies to offer you a better browsing experience and to analyze our traffic. You consent to our cookies if you continue to use this website.',
dismiss: 'Got it!',
link: 'Details in our Cookie Policy',
href: 'cookiepolicy'
}
})
page.checkIfPublic()
page.clipboardJS = new ClipboardJS('.clipboard-js')

View File

@ -1,5 +1,5 @@
{
"1": "1589651276",
"1": "1589661242",
"2": "1589010026",
"3": "1581416390",
"4": "1581416390",

View File

@ -4,7 +4,21 @@
{% set keywords = "upload,lolisafe,file,images,hosting,bobby,fiery" %}
{# Used in home.njk and nojs.njk #}
{% set home_subtitle = "A <strong>modern</strong> self-hosted file upload service" %}
{% set home_subtitle = "A <strong>modern</strong> self-hosted file upload service" %} {# HTML supported #}
{# Used in faq.njk and cookiepolicy.njk #}
{% set rootDomain = "fiery.me" %}
{% set wholeFaq = root + " website and sub-domains" %}
{% set wholeCookie = "This site and " + rootDomain + " website and sub-domains" %}
{% set email = "bobby@fiery.me" %}
{% set forkRepo = "https://github.com/BobbyWibowo/lolisafe" %}
{% set forkHost = "GitHub" %}
{% set forkIssues = forkRepo + "/issues/new/choose" %}
{% set takedownsUrl = "https://safe.fiery.me/takedowns" %}
{% set supportFaq = 'Thanks! You can become a patron on my <a href="https://www.patreon.com/bobbywibowo" target="_blank" rel="noopener">Patreon</a>!' %} {# HTML supported #}
{% set serverLocation = "Paris, <strong>France</strong>" %} {# HTML supported #}
{#
These are the footer links in the homepage and the No-JS uploader (home.njk & nojs.njk respectively).

207
views/cookiepolicy.njk Normal file
View File

@ -0,0 +1,207 @@
{% set metaTitle = "Cookie Policy" %}
{% set metaUrl = '/cookiepolicy' %}
{% extends "_layout.njk" %}
{% block stylesheets %}
{{ super() }}
<link rel="stylesheet" href="libs/fontello/fontello.css{{ versions[1] }}">
{% endblock %}
{% block content %}
{{ super() }}
<section class="section has-extra-bottom-padding">
<div class="container has-text-left">
<h1 class='title'>Cookie Policy</h1>
<h1 class="subtitle">
{{ globals.wholeCookie }} may use cookies. This page describe how and why we use cookies.
</h1>
<hr>
<h2 class='subtitle is-brighter'>What are cookies? -or- How to disable cookies?</h2>
<article class="message">
<div class="message-body">
<strong>Simply put, a cookie is a technology for remembering something about you.</strong><br>
If you want to learn more about cookies, as well as how to control and disable them, check out <a href="https://www.cookiesandyou.com/" target="_blank" rel="noopener">Cookies & You</a> website.
</div>
</article>
<h2 class='subtitle is-brighter'>How We Use Cookies</h2>
<article class="message">
<div class="message-body">
We use cookies for a variety of reasons detailed below.<br>
Unfortunately in most cases there are no industry standard options for disabling cookies without completely disabling the functionality and features they add to this site.<br>
It is recommended that you leave on all cookies if you are not sure whether you need them or not in case they are used to provide a service that you use.
</div>
</article>
<h2 class='subtitle is-brighter'>Account related cookies</h2>
<article class="message">
<div class="message-body">
If you create an account with us, then we will use cookies for the management of the signup process and general administration.
</div>
</article>
<h2 class='subtitle is-brighter'>Login related cookies</h2>
<article class="message">
<div class="message-body">
We use cookies when you are logged in so that we can remember that you are logged in.<br>
This prevents you from having to log in every single time you visit a new page.<br>
These cookies are typically removed or cleared when you log out to ensure that you can only access restricted features and areas when logged in.
</div>
</article>
<h2 class='subtitle is-brighter'>What information do we know about you?</h2>
<article class="message">
<div class="message-body">
We dont request or require you to provide personal information to access our web site.<br>
However, we may receive your IP address and user agent automatically.
</div>
</article>
<h2 class='subtitle is-brighter'>What about cookies?</h2>
<article class="message">
<div class="message-body">
{{ globals.wholeCookie }} may place cookies on your browser in order to identify you when you return to our website.
</div>
</article>
<h2 class='subtitle is-brighter'>Cookies We May Use</h2>
<article class="message">
<div class="message-body">
We may use the following cookies:<br>
<br>
<div class="table-container">
<table class="table is-fullwidth is-hoverable">
<thead>
<tr>
<th>Name</th>
<th>Source</th>
<th>Purpose</th>
<th>Storage Days</th>
</tr>
</thead>
<tbody>
<tr>
<th>chunkSize</th>
<td>{{ globals.rootDomain }}</td>
<td>Personalization</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>cid</th>
<td>{{ globals.rootDomain }}</td>
<td>Analytics</td>
<td>730</td>
</tr>
<tr>
<th>cookieconsent_status</th>
<td>{{ globals.rootDomain }}</td>
<td>Necessary</td>
<td>730</td>
</tr>
<tr>
<th>fileLength</th>
<td>{{ globals.rootDomain }}</td>
<td>Personalization</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>parallelUploads</th>
<td>{{ globals.rootDomain }}</td>
<td>Personalization</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>previewImages</th>
<td>{{ globals.rootDomain }}</td>
<td>Personalization</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>render</th>
<td>{{ globals.rootDomain }}</td>
<td>Personalization</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>selectedUploads</th>
<td>{{ globals.rootDomain }}</td>
<td>Necessary</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>selectedUploadsAll</th>
<td>{{ globals.rootDomain }}</td>
<td>Necessary</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>selectedUsers</th>
<td>{{ globals.rootDomain }}</td>
<td>Necessary</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>siBytes</th>
<td>{{ globals.rootDomain }}</td>
<td>Personalization</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>stripTags</th>
<td>{{ globals.rootDomain }}</td>
<td>Personalization</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>token</th>
<td>{{ globals.rootDomain }}</td>
<td>Necessary</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>uploadAge</th>
<td>{{ globals.rootDomain }}</td>
<td>Personalization</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>uploadsHistoryOrder</th>
<td>{{ globals.rootDomain }}</td>
<td>Personalization</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>viewTypeUploads</th>
<td>{{ globals.rootDomain }}</td>
<td>Necessary</td>
<td>LocalStorage</td>
</tr>
<tr>
<th>viewTypeUploadsAll</th>
<td>{{ globals.rootDomain }}</td>
<td>Necessary</td>
<td>LocalStorage</td>
</tr>
</tbody>
</table>
</div>
</div>
</article>
<h2 class='subtitle is-brighter'>Questions?</h2>
<article class="message">
<div class="message-body">
For more information, email <a href="mailto:{{ globals.email }}">{{ globals.email }}</a>.
</div>
</article>
</div>
</section>
<a class="floating-home-button" title="Back to Safe" href=".">
<span class="icon is-medium">
<i class="icon-home icon-2x"></i>
</span>
</a>
{% endblock %}

View File

@ -19,11 +19,11 @@
<div class="container has-text-left">
<h1 class='title is-spaced'>General</h1>
<h2 class='subtitle is-brighter'>What is safe.fiery.me?</h2>
<h2 class='subtitle is-brighter'>What is {{ globals.name }}?</h2>
<article class="message">
<div class="message-body">
This is a fork of <a href="https://github.com/WeebDev/lolisafe" target="_blank" rel="noopener">lolisafe</a>.<br>
GitHub repository of the fork is located <a href="https://github.com/BobbyWibowo/lolisafe" target="_blank" rel="noopener">here</a>.
{{ globals.forkHost }} repository of the fork is located <a href="{{ globals.forkRepo }}" target="_blank" rel="noopener">here</a>.
</div>
</article>
@ -37,10 +37,10 @@
<strong>Full-length episodes of anime or TV shows.</strong> These include <strong>audio files from CD dramas</strong>.<br>
<br>
Any of such uploads, when found, will be purged immediately without any prior notice.<br>
Repeat offenders will have their IPs permanently blocked from accessing <i>*.fiery.me</i> network.<br>
Repeat offenders will have their IPs permanently blocked from accessing {{ globals.wholeFaq }}.<br>
For child pornography specifically, first offenders will immediately be blocked permanently.<br>
<br>
* When Google Safe Search detects <i>unwanted software</i>, Chrome's users will be warned whenever they want to download anything from <i>*.fiery.me</i>, that the site is <i>unsafe</i>.
* When Google Safe Search detects <i>unwanted software</i>, Chrome's users will be alerted that anything they download from {{ globals.wholeFaq }} are <i>unsafe</i>.
</div>
</article>
@ -48,7 +48,9 @@
<article class="message">
<div class="message-body">
Unless the uploads are included within the banned categories above, or some other bullshit, I will.<br>
In case I have to take down any uploads, I will log their names and explanations in <a href="https://safe.fiery.me/takedowns" target="_blank">here</a>.<br>
{% if globals.takedownsUrl -%}
In case I have to take down any uploads, I will log their names and explanations in <a href="{{ globals.takedownsUrl }}" target="_blank">here</a>.<br>
{%- endif %}
<br>
Otherwise, we also have temporary uploads feature, with which you can have your uploads be automatically deleted after a period of time.<br>
It is disabled by default, but you can configure it through our homepage uploader's Config tab.
@ -83,17 +85,19 @@
<h2 class='subtitle is-brighter'>I saw something too illegal for my tastes here, what should I do?</h2>
<article class="message">
<div class="message-body">
Send a strongly worded email to <a href="mailto:bobby@fiery.me">bobby@fiery.me</a> and I will try to get back to you within <strong>48 hours</strong>.<br>
Send a strongly worded email to <a href="mailto:{{ globals.email }}">{{ globals.email }}</a> and I will try to get back to you within <strong>48 hours</strong>.<br>
These include copyright takedown notices and reports about uploads violating banned categories.
</div>
</article>
<h2 class='subtitle is-brighter'>How can I support safe.fiery.me?</h2>
{% if globals.supportFaq -%}
<h2 class='subtitle is-brighter'>How can I support {{ globals.name }}?</h2>
<article class="message">
<div class="message-body">
Thanks! You can become a patron on my <a href="https://www.patreon.com/bobbywibowo" target="_blank" rel="noopener">Patreon</a>!
{{ globals.supportFaq | safe }}
</div>
</article>
{%- endif %}
</div>
</section>
@ -127,21 +131,28 @@
</div>
</article>
{% if globals.serverLocation -%}
<h2 class='subtitle is-brighter'>Where is the server located?</h2>
<article class="message">
<div class="message-body">
Paris, <strong>France</strong>.{#<br>
We are using <a href="https://www.cloudflare.com/cdn/" target="_blank" rel="noopener">Cloudflare</a> though, so you can expect your uploads to be delivered quickly all over the world after they have been cached.#}
{{ globals.serverLocation | safe }}.
{% if config.cloudflare.purgeCache -%}
<br>
We are using <a href="https://www.cloudflare.com/cdn/" target="_blank" rel="noopener">Cloudflare</a> though, so you can expect your uploads to be delivered quickly all over the world after they have been cached.
{%- endif %}
</div>
</article>
{%- endif %}
{#<h2 class='subtitle is-brighter'>Since my uploads are cached, what about after I delete them from the dashboard?</h2>
{% if config.cloudflare.purgeCache -%}
<h2 class='subtitle is-brighter'>Since my uploads are cached, what about after I delete them from the dashboard?</h2>
<article class="message">
<div class="message-body">
We will send API requests to Cloudflare to purge their cache immediately after you delete your uploads from the dashboard.<br>
Cache of their thumbnails will also be purged, if applicable.
</div>
</article>#}
</article>
{%- endif %}
<h2 class='subtitle is-brighter'>Are there any Desktop clients?</h2>
<article class="message">
@ -191,13 +202,15 @@
</article>
{%- endif %}
{% if globals.forkRepo -%}
<h2 class='subtitle is-brighter'>I found a bug! -or- I want to request a feature!</h2>
<article class="message">
<div class="message-body">
Feel free to create a GitHub issue <a href="https://github.com/BobbyWibowo/lolisafe/issues/new/choose" target="_blank" rel="noopener">here</a>.</br>
If you do not have a GitHub account, you can also email <a href="mailto:bobby@fiery.me">bobby@fiery.me</a>.
Feel free to create a {{ globals.forkHost }} issue <a href="{{ globals.forkIssues }}" target="_blank" rel="noopener">here</a>.</br>
If you do not have a {{ globals.forkHost }} account, you can also email <a href="mailto:{{ globals.email }}">{{ globals.email }}</a>.
</div>
</article>
{%- endif %}
<h2 class='subtitle is-brighter'>How do I delete my own account <strong>and</strong> all the uploads associated with it?</h2>
<article class="message">
@ -227,7 +240,7 @@
Technically, <strong>none</strong>.<br>
After all, not even an email address is required to register an account.<br>
Anything will do as your usernames, and passwords are also encrypted.<br>
If a registered user has not uploaded anything even once, then I will not even have their IP address.
If a registered user has not uploaded anything even once, then I will not even be able to associate it to any specific IP address.
</div>
</article>
@ -235,7 +248,7 @@
<article class="message">
<div class="message-body">
<strong>Security purposes.</strong><br>
For example, in the case that it is necessary to purge uploads from a specific IP address due to abuse, it <i>will</i> help a lot to be able to find all uploads by that specific uploader.<br>
For instance, if it is necessary to purge uploads from a specific IP address due to abuse, it <i>will</i> help a lot to be able to find all uploads by that specific uploader.<br>
My safe have been plagued by aplenty of abuse, so this policy will remain as long as the safe lives on.
</div>
</article>
@ -253,7 +266,7 @@
<h2 class='subtitle is-brighter'>I still have more unanswered questions!</h2>
<article class="message">
<div class="message-body">
Feel free to email <a href="mailto:bobby@fiery.me">bobby@fiery.me</a>.
Feel free to email <a href="mailto:{{ globals.email }}">{{ globals.email }}</a>.
</div>
</article>
</div>

View File

@ -7,10 +7,14 @@
{% set urlExtensionsFilter = config.uploads.urlExtensionsFilter %}
{% set urlExtensionsFilterEnabled = urlExtensionsFilterMode and urlExtensionsFilterMode !== 'inherit' and urlExtensionsFilter.length %}
{% set temporaryUploadAges = config.uploads.temporaryUploadAges %}
{% set cookiePolicy = config.cookiePolicy %}
{% block stylesheets %}
{{ super() }}
<link rel="stylesheet" href="libs/fontello/fontello.css{{ versions[1] }}">
{% if cookiePolicy -%}
<link rel="stylesheet" href="libs/cookieconsent/cookieconsent.min.css{{ versions[3] }}">
{%- endif %}
<link rel="stylesheet" href="css/sweetalert.css{{ versions[1] }}">
<link rel="stylesheet" href="css/home.css{{ versions[1] }}">
{% endblock %}
@ -22,6 +26,9 @@
<script src="libs/axios/axios.min.js{{ versions[3] }}"></script>
<script src="libs/clipboard.js/clipboard.min.js{{ versions[3] }}"></script>
<script src="libs/lazyload/lazyload.min.js{{ versions[3] }}"></script>
{% if cookiePolicy -%}
<script src="libs/cookieconsent/cookieconsent.min.js{{ versions[3] }}"></script>
{%- endif %}
{# We assign an ID for this so that the script can find out its own version #}
<script id="mainScript" src="js/home.js{{ versions[1] }}"></script>
<script src="js/misc/utils.js{{ versions[1] }}"></script>