A fork of the Icarus Imeji Uploader Service tweaked for better compatibility on Caddy webserver.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
IcarusImeji-Caddy/public/index.php

373 lines
9.9 KiB

<?php
header("HTTP/2.0 404 Not Found");
?>
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<link rel="stylesheet" media="screen" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600" />
<link rel="stylesheet" media="screen" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" />
<meta name="theme-color" content="#8277c9">
<title>Image Not Found - Imeji Service</title>
<style>
* {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
}
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend, caption, article, aside, canvas, details, figcaption, figure, footer, header, hgroup,
menu, nav, section, summary, time, mark, audio, video {
margin:0;
padding:0;
border:0;
outline:0;
vertical-align:baseline;
background:transparent;
}
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section {
display: block;
}
html {
font-size: 16px;
line-height: 24px;
width:100%;
height:100%;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
overflow-y:scroll;
overflow-x:hidden;
}
img {
vertical-align:middle;
max-width: 100%;
height: auto;
border: 0;
-ms-interpolation-mode: bicubic;
}
body {
min-height:100%;
-webkit-font-smoothing: subpixel-antialiased;
}
.clearfix {
clear:both;
zoom: 1;
}
.clearfix:before, .clearfix:after {
content: "\0020";
display: block;
height: 0;
visibility: hidden;
}
.clearfix:after {
clear: both;
}
</style>
<style>
.plain.error-page-wrapper {
font-family: 'Source Sans Pro', sans-serif;
background-color:#6355bc;
padding:0 5%;
position:relative;
}
.plain.error-page-wrapper .content-container {
-webkit-transition: left .5s ease-out, opacity .5s ease-out;
-moz-transition: left .5s ease-out, opacity .5s ease-out;
-ms-transition: left .5s ease-out, opacity .5s ease-out;
-o-transition: left .5s ease-out, opacity .5s ease-out;
transition: left .5s ease-out, opacity .5s ease-out;
max-width:400px;
position:relative;
left:-30px;
opacity:0;
}
.plain.error-page-wrapper .content-container.in {
left: 0px;
opacity:1;
}
.plain.error-page-wrapper .head-line {
transition: color .2s linear;
font-size:48px;
line-height:60px;
color:rgba(255,255,255,.2);
letter-spacing: -1px;
margin-bottom: 5px;
}
.plain.error-page-wrapper .subheader {
transition: color .2s linear;
font-size:36px;
line-height:46px;
color:#fff;
}
.plain.error-page-wrapper hr {
height:1px;
background-color: rgba(255,255,255,.2);
border:none;
width:250px;
margin:35px 0;
}
.plain.error-page-wrapper .context {
transition: color .2s linear;
font-size:18px;
line-height:27px;
color:#fff;
}
.plain.error-page-wrapper .context p {
margin:0;
}
.plain.error-page-wrapper .context p:nth-child(n+2) {
margin-top:12px;
}
.plain.error-page-wrapper .buttons-container {
margin-top: 45px;
overflow: hidden;
}
.plain.error-page-wrapper .buttons-container a {
transition: color .2s linear, border-color .2s linear;
font-size:14px;
text-transform: uppercase;
text-decoration: none;
color:#fff;
border:2px solid white;
border-radius: 99px;
padding:8px 30px 9px;
display: inline-block;
float:left;
}
.plain.error-page-wrapper .buttons-container a:hover {
background-color:rgba(255,255,255,.05);
}
.plain.error-page-wrapper .buttons-container a:first-child {
margin-right:25px;
}
@media screen and (max-width: 485px) {
.plain.error-page-wrapper .header {
font-size:36px;
}
.plain.error-page-wrapper .subheader {
font-size:27px;
line-height:38px;
}
.plain.error-page-wrapper hr {
width:185px;
margin:25px 0;
}
.plain.error-page-wrapper .context {
font-size:16px;
line-height: 24px;
}
.plain.error-page-wrapper .buttons-container {
margin-top:35px;
}
.plain.error-page-wrapper .buttons-container a {
font-size:13px;
padding:8px 0 7px;
width:45%;
text-align: center;
}
.plain.error-page-wrapper .buttons-container a:first-child {
margin-right:10%;
}
}
</style>
<style>
.background-color {
background-color: rgba(33, 26, 74, 1) !important;
}
.primary-text-color {
color: rgba(240, 240, 240, 1) !important;
}
.secondary-text-color {
color: #8277c9 !important;
}
.sign-text-color {
color: #FFBA00 !important;
}
.sign-frame-color {
color: #343C3F;
}
.pane {
background-color: #FFFFFF !important;
}
.border-button {
color: rgba(130, 119, 201, 1) !important;
border-color: rgba(130, 119, 201, 1) !important;
}
.button {
background-color: rgba(130, 119, 201, 1) !important;
color: #FFFFFF !important;
}
.shadow {
box-shadow: 0 0 60px #000000;
}
</style>
</head>
<body class="plain error-page-wrapper background-color background-image">
<div class="content-container">
<div class="head-line secondary-text-color">
404
</div>
<div class="subheader primary-text-color">
The image you're looking<br>
for could not be found.
</div>
<hr>
<div class="clearfix"></div>
<div class="context primary-text-color">
<!-- doesn't use context_content because it's ALWAYS the same thing -->
<p>
Make sure you typed or copied the URL correctly.<br />
If you're looking to upload an image instead, head over to the homepage.
</p>
</div>
<div class="buttons-container">
<a class="border-button" href="http://imeji.yandols.xyz" target="_self">Go to uploader home</a>
</div>
</div>
<script>
function ErrorPage(container, pageType, templateName) {
this.$container = $(container);
this.$contentContainer = this.$container.find(templateName == 'sign' ? '.sign-container' : '.content-container');
this.pageType = pageType;
this.templateName = templateName;
}
ErrorPage.prototype.centerContent = function () {
var containerHeight = this.$container.outerHeight()
, contentContainerHeight = this.$contentContainer.outerHeight()
, top = (containerHeight - contentContainerHeight) / 2
, offset = this.templateName == 'sign' ? -100 : 0;
this.$contentContainer.css('top', top + offset);
};
ErrorPage.prototype.initialize = function () {
var self = this;
this.centerContent();
this.$container.on('resize', function (e) {
e.preventDefault();
e.stopPropagation();
self.centerContent();
});
// fades in content on the plain template
if (this.templateName == 'plain') {
window.setTimeout(function () {
self.$contentContainer.addClass('in');
}, 500);
}
// swings sign in on the sign template
if (this.templateName == 'sign') {
$('.sign-container').animate({textIndent : 0}, {
step : function (now) {
$(this).css({
transform : 'rotate(' + now + 'deg)',
'transform-origin' : 'top center'
});
},
duration : 1000,
easing : 'easeOutBounce'
});
}
};
ErrorPage.prototype.createTimeRangeTag = function(start, end) {
return (
'<time utime=' + start + ' simple_format="MMM DD, YYYY HH:mm">' + start + '</time> - <time utime=' + end + ' simple_format="MMM DD, YYYY HH:mm">' + end + '</time>.'
)
};
ErrorPage.prototype.handleStatusFetchSuccess = function (pageType, data) {
if (pageType == '503') {
$('#replace-with-fetched-data').html(data.status.description);
} else {
if (!!data.scheduled_maintenances.length) {
var maint = data.scheduled_maintenances[0];
$('#replace-with-fetched-data').html(this.createTimeRangeTag(maint.scheduled_for, maint.scheduled_until));
$.fn.localizeTime();
}
else {
$('#replace-with-fetched-data').html('<em>(there are no active scheduled maintenances)</em>');
}
}
};
ErrorPage.prototype.handleStatusFetchFail = function (pageType) {
$('#replace-with-fetched-data').html('<em>(enter a valid Statuspage url)</em>');
};
ErrorPage.prototype.fetchStatus = function (pageUrl, pageType) {
//console.log('in app.js fetch');
if (!pageUrl || !pageType || pageType == '404') return;
var url = ''
, self = this;
if (pageType == '503') {
url = pageUrl + '/api/v2/status.json';
}
else {
url = pageUrl + '/api/v2/scheduled-maintenances/active.json';
}
$.ajax({
type : "GET",
url : url,
}).success(function (data, status) {
//console.log('success');
self.handleStatusFetchSuccess(pageType, data);
}).fail(function (xhr, msg) {
//console.log('fail');
self.handleStatusFetchFail(pageType);
});
};
var ep = new ErrorPage('body', "404", "plain");
ep.initialize();
// hack to make sure content stays centered >_<
$(window).on('resize', function() {
$('body').trigger('resize')
});
</script>
</body>
</html>