jekyll build from Action 5223550529766a774491627662cbc6a2115bd2be
101
404.html
Normal file
@ -0,0 +1,101 @@
|
||||
<!doctype html>
|
||||
<html lang="en-US">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<!-- Begin Jekyll SEO tag v2.8.0 -->
|
||||
<title>Morlana - Pages | Free Subdomains provided by Morlana</title>
|
||||
<meta name="generator" content="Jekyll v4.3.4" />
|
||||
<meta property="og:title" content="Morlana - Pages" />
|
||||
<meta property="og:locale" content="en_US" />
|
||||
<meta name="description" content="Free Subdomains provided by Morlana" />
|
||||
<meta property="og:description" content="Free Subdomains provided by Morlana" />
|
||||
<link rel="canonical" href="https://morlana.page/404.html" />
|
||||
<meta property="og:url" content="https://morlana.page/404.html" />
|
||||
<meta property="og:site_name" content="Morlana - Pages" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta property="twitter:title" content="Morlana - Pages" />
|
||||
<script type="application/ld+json">
|
||||
{"@context":"https://schema.org","@type":"WebPage","description":"Free Subdomains provided by Morlana","headline":"Morlana - Pages","url":"https://morlana.page/404.html"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
<link rel="stylesheet" href="/assets/css/style.css?v=">
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
|
||||
<script src="/assets/js/respond.js"></script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<!--[if lt IE 8]>
|
||||
<link rel="stylesheet" href="/assets/css/ie.css">
|
||||
<![endif]-->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
||||
<!-- start custom head snippets, customize with your own _includes/head-custom.html file -->
|
||||
|
||||
<!-- Setup theme-color -->
|
||||
<!-- start theme color meta headers -->
|
||||
<meta name="theme-color" content="#353535">
|
||||
<meta name="msapplication-navbutton-color" content="#353535">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<!-- end theme color meta headers -->
|
||||
|
||||
|
||||
<!-- Setup Google Analytics -->
|
||||
|
||||
|
||||
|
||||
<!-- You can set your favicon here -->
|
||||
<!-- link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" -->
|
||||
|
||||
<!-- end custom head snippets -->
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="fork"><a href="">View On GitHub</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div><!-- end header -->
|
||||
|
||||
<div class="wrapper">
|
||||
|
||||
<section>
|
||||
<div id="title">
|
||||
<h1>Morlana - Pages</h1>
|
||||
<p>Free Subdomains provided by Morlana</p>
|
||||
<hr>
|
||||
<span class="credits left">Project maintained by <a href=""></a></span>
|
||||
<span class="credits right">Hosted on GitHub Pages — Theme by <a href="https://twitter.com/mattgraham">mattgraham</a></span>
|
||||
</div>
|
||||
|
||||
<style type="text/css" media="screen">
|
||||
.container {
|
||||
margin: 10px auto;
|
||||
max-width: 600px;
|
||||
text-align: center;
|
||||
}
|
||||
h1 {
|
||||
margin: 30px 0;
|
||||
font-size: 4em;
|
||||
line-height: 1;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container">
|
||||
<h1>404</h1>
|
||||
|
||||
<p><strong>Page not found :(</strong></p>
|
||||
<p>The requested page could not be found. <a href="/">Go back</a></p>
|
||||
</div>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
11
LICENSE
Normal file
@ -0,0 +1,11 @@
|
||||
Copyright (c) 2025 Morlana.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
3
assets/css/ie.scss
Normal file
@ -0,0 +1,3 @@
|
||||
nav {
|
||||
display: none;
|
||||
}
|
892
assets/css/style.css
Normal file
@ -0,0 +1,892 @@
|
||||
/*! normalize.css 2012-02-07T12:37 UTC - https://github.com/necolas/normalize.css */
|
||||
/* =============================================================================
|
||||
HTML5 display definitions
|
||||
========================================================================== */
|
||||
/*
|
||||
* Corrects block display not defined in IE6/7/8/9 & FF3
|
||||
*/
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*
|
||||
* Corrects inline-block display not defined in IE6/7/8/9 & FF3
|
||||
*/
|
||||
audio,
|
||||
canvas,
|
||||
video {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Prevents modern browsers from displaying 'audio' without controls
|
||||
*/
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses styling for 'hidden' attribute not present in IE7/8/9, FF3, S4
|
||||
* Known issue: no IE6 support
|
||||
*/
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
Base
|
||||
========================================================================== */
|
||||
/*
|
||||
* 1. Corrects text resizing oddly in IE6/7 when body font-size is set using em units
|
||||
* http://clagnut.com/blog/348/#c790
|
||||
* 2. Prevents iOS text size adjust after orientation change, without disabling user zoom
|
||||
* www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/
|
||||
*/
|
||||
html {
|
||||
font-size: 100%; /* 1 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
-ms-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses font-family inconsistency between 'textarea' and other form elements.
|
||||
*/
|
||||
html,
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses margins handled incorrectly in IE6/7
|
||||
*/
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
Links
|
||||
========================================================================== */
|
||||
/*
|
||||
* Addresses outline displayed oddly in Chrome
|
||||
*/
|
||||
a:focus {
|
||||
outline: thin dotted;
|
||||
}
|
||||
|
||||
/*
|
||||
* Improves readability when focused and also mouse hovered in all browsers
|
||||
* people.opera.com/patrickl/experiments/keyboard/test
|
||||
*/
|
||||
a:hover,
|
||||
a:active {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
Typography
|
||||
========================================================================== */
|
||||
/*
|
||||
* Addresses font sizes and margins set differently in IE6/7
|
||||
* Addresses font sizes within 'section' and 'article' in FF4+, Chrome, S5
|
||||
*/
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5em;
|
||||
margin: 0.83em 0;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.17em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1em;
|
||||
margin: 1.33em 0;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 0.83em;
|
||||
margin: 1.67em 0;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 0.75em;
|
||||
margin: 2.33em 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses styling not present in IE7/8/9, S5, Chrome
|
||||
*/
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses style set to 'bolder' in FF3+, S4/5, Chrome
|
||||
*/
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 1em 40px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses styling not present in S5, Chrome
|
||||
*/
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses styling not present in IE6/7/8/9
|
||||
*/
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses margins set differently in IE6/7
|
||||
*/
|
||||
p,
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Corrects font family set oddly in IE6, S4/5, Chrome
|
||||
* en.wikipedia.org/wiki/User:Davidgothberg/Test59
|
||||
*/
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace, serif;
|
||||
_font-family: "courier new", monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Addresses CSS quotes not supported in IE6/7
|
||||
* 2. Addresses quote property not supported in S4
|
||||
*/
|
||||
/* 1 */
|
||||
q {
|
||||
quotes: none;
|
||||
}
|
||||
|
||||
/* 2 */
|
||||
q:before,
|
||||
q:after {
|
||||
content: "";
|
||||
content: none;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 75%;
|
||||
}
|
||||
|
||||
/*
|
||||
* Prevents sub and sup affecting line-height in all browsers
|
||||
* gist.github.com/413930
|
||||
*/
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
Lists
|
||||
========================================================================== */
|
||||
/*
|
||||
* Addresses margins set differently in IE6/7
|
||||
*/
|
||||
dl,
|
||||
menu,
|
||||
ol,
|
||||
ul {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin: 0 0 0 40px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses paddings set differently in IE6/7
|
||||
*/
|
||||
menu,
|
||||
ol,
|
||||
ul {
|
||||
padding: 0 0 0 40px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Corrects list images handled incorrectly in IE7
|
||||
*/
|
||||
nav ul,
|
||||
nav ol {
|
||||
list-style: none;
|
||||
list-style-image: none;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
Embedded content
|
||||
========================================================================== */
|
||||
/*
|
||||
* 1. Removes border when inside 'a' element in IE6/7/8/9, FF3
|
||||
* 2. Improves image quality when scaled in IE7
|
||||
* code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/
|
||||
*/
|
||||
img {
|
||||
border: 0; /* 1 */
|
||||
-ms-interpolation-mode: bicubic; /* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
* Corrects overflow displayed oddly in IE9
|
||||
*/
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
Figures
|
||||
========================================================================== */
|
||||
/*
|
||||
* Addresses margin not present in IE6/7/8/9, S5, O11
|
||||
*/
|
||||
figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
Forms
|
||||
========================================================================== */
|
||||
/*
|
||||
* Corrects margin displayed oddly in IE6/7
|
||||
*/
|
||||
form {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Define consistent border, margin, and padding
|
||||
*/
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Corrects color not being inherited in IE6/7/8/9
|
||||
* 2. Corrects text not wrapping in FF3
|
||||
* 3. Corrects alignment displayed oddly in IE6/7
|
||||
*/
|
||||
legend {
|
||||
border: 0; /* 1 */
|
||||
padding: 0;
|
||||
white-space: normal; /* 2 */
|
||||
*margin-left: -7px; /* 3 */
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Corrects font size not being inherited in all browsers
|
||||
* 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome
|
||||
* 3. Improves appearance and consistency in all browsers
|
||||
*/
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
font-size: 100%; /* 1 */
|
||||
margin: 0; /* 2 */
|
||||
vertical-align: baseline; /* 3 */
|
||||
*vertical-align: middle; /* 3 */
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses FF3/4 setting line-height on 'input' using !important in the UA stylesheet
|
||||
*/
|
||||
button,
|
||||
input {
|
||||
line-height: normal; /* 1 */
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Improves usability and consistency of cursor style between image-type 'input' and others
|
||||
* 2. Corrects inability to style clickable 'input' types in iOS
|
||||
* 3. Removes inner spacing in IE7 without affecting normal text inputs
|
||||
* Known issue: inner spacing remains in IE6
|
||||
*/
|
||||
button,
|
||||
input[type=button],
|
||||
input[type=reset],
|
||||
input[type=submit] {
|
||||
cursor: pointer; /* 1 */
|
||||
-webkit-appearance: button; /* 2 */
|
||||
*overflow: visible; /* 3 */
|
||||
}
|
||||
|
||||
/*
|
||||
* Re-set default cursor for disabled elements
|
||||
*/
|
||||
button[disabled],
|
||||
input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Addresses box sizing set to content-box in IE8/9
|
||||
* 2. Removes excess padding in IE8/9
|
||||
* 3. Removes excess padding in IE7
|
||||
Known issue: excess padding remains in IE6
|
||||
*/
|
||||
input[type=checkbox],
|
||||
input[type=radio] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
*height: 13px; /* 3 */
|
||||
*width: 13px; /* 3 */
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Addresses appearance set to searchfield in S5, Chrome
|
||||
* 2. Addresses box-sizing set to border-box in S5, 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;
|
||||
}
|
||||
|
||||
/*
|
||||
* Removes inner padding and search cancel button in S5, Chrome on OS X
|
||||
*/
|
||||
input[type=search]::-webkit-search-decoration,
|
||||
input[type=search]::-webkit-search-cancel-button {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/*
|
||||
* Removes inner padding and border in FF3+
|
||||
* www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/
|
||||
*/
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Removes default vertical scrollbar in IE6/7/8/9
|
||||
* 2. Improves readability and alignment in all browsers
|
||||
*/
|
||||
textarea {
|
||||
overflow: auto; /* 1 */
|
||||
vertical-align: top; /* 2 */
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
Tables
|
||||
========================================================================== */
|
||||
/*
|
||||
* Remove most spacing between table cells
|
||||
*/
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "OpenSansLight";
|
||||
src: url("../fonts/OpenSans-Light-webfont.eot");
|
||||
src: url("../fonts/OpenSans-Light-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Light-webfont.woff") format("woff"), url("../fonts/OpenSans-Light-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Light-webfont.svg#OpenSansLight") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "OpenSansLightItalic";
|
||||
src: url("../fonts/OpenSans-LightItalic-webfont.eot");
|
||||
src: url("../fonts/OpenSans-LightItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-LightItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-LightItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "OpenSansRegular";
|
||||
src: url("../fonts/OpenSans-Regular-webfont.eot");
|
||||
src: url("../fonts/OpenSans-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Regular-webfont.woff") format("woff"), url("../fonts/OpenSans-Regular-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "OpenSansItalic";
|
||||
src: url("../fonts/OpenSans-Italic-webfont.eot");
|
||||
src: url("../fonts/OpenSans-Italic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Italic-webfont.woff") format("woff"), url("../fonts/OpenSans-Italic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Italic-webfont.svg#OpenSansItalic") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "OpenSansSemibold";
|
||||
src: url("../fonts/OpenSans-Semibold-webfont.eot");
|
||||
src: url("../fonts/OpenSans-Semibold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Semibold-webfont.woff") format("woff"), url("../fonts/OpenSans-Semibold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "OpenSansSemiboldItalic";
|
||||
src: url("../fonts/OpenSans-SemiboldItalic-webfont.eot");
|
||||
src: url("../fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-SemiboldItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-SemiboldItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "OpenSansBold";
|
||||
src: url("../fonts/OpenSans-Bold-webfont.eot");
|
||||
src: url("../fonts/OpenSans-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Bold-webfont.woff") format("woff"), url("../fonts/OpenSans-Bold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Bold-webfont.svg#OpenSansBold") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "OpenSansBoldItalic";
|
||||
src: url("../fonts/OpenSans-BoldItalic-webfont.eot");
|
||||
src: url("../fonts/OpenSans-BoldItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-BoldItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-BoldItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
/*
|
||||
generated by rouge http://rouge.jneen.net/
|
||||
original base16 by Chris Kempson (https://github.com/chriskempson/base16)
|
||||
*/
|
||||
.highlight table td {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.highlight table pre {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.highlight, .highlight .w {
|
||||
color: #d0d0d0;
|
||||
}
|
||||
|
||||
.highlight .err {
|
||||
color: #151515;
|
||||
background-color: #ac4142;
|
||||
}
|
||||
|
||||
.highlight .c, .highlight .cd, .highlight .cm, .highlight .c1, .highlight .cs {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.highlight .cp {
|
||||
color: #f4bf75;
|
||||
}
|
||||
|
||||
.highlight .nt {
|
||||
color: #f4bf75;
|
||||
}
|
||||
|
||||
.highlight .o, .highlight .ow {
|
||||
color: #d0d0d0;
|
||||
}
|
||||
|
||||
.highlight .p, .highlight .pi {
|
||||
color: #d0d0d0;
|
||||
}
|
||||
|
||||
.highlight .gi {
|
||||
color: #90a959;
|
||||
}
|
||||
|
||||
.highlight .gd {
|
||||
color: #ac4142;
|
||||
}
|
||||
|
||||
.highlight .gh {
|
||||
color: #6a9fb5;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv {
|
||||
color: #aa759f;
|
||||
}
|
||||
|
||||
.highlight .kc {
|
||||
color: #d28445;
|
||||
}
|
||||
|
||||
.highlight .kt {
|
||||
color: #d28445;
|
||||
}
|
||||
|
||||
.highlight .kd {
|
||||
color: #d28445;
|
||||
}
|
||||
|
||||
.highlight .s, .highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 {
|
||||
color: #90a959;
|
||||
}
|
||||
|
||||
.highlight .sr {
|
||||
color: #75b5aa;
|
||||
}
|
||||
|
||||
.highlight .si {
|
||||
color: #8f5536;
|
||||
}
|
||||
|
||||
.highlight .se {
|
||||
color: #8f5536;
|
||||
}
|
||||
|
||||
.highlight .nn {
|
||||
color: #f4bf75;
|
||||
}
|
||||
|
||||
.highlight .nc {
|
||||
color: #f4bf75;
|
||||
}
|
||||
|
||||
.highlight .no {
|
||||
color: #f4bf75;
|
||||
}
|
||||
|
||||
.highlight .na {
|
||||
color: #6a9fb5;
|
||||
}
|
||||
|
||||
.highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx {
|
||||
color: #90a959;
|
||||
}
|
||||
|
||||
.highlight .ss {
|
||||
color: #90a959;
|
||||
}
|
||||
|
||||
body {
|
||||
padding: 0px 0 20px 0px;
|
||||
margin: 0px;
|
||||
font: 14px/1.5 "OpenSansRegular", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
color: #f0e7d5;
|
||||
font-weight: normal;
|
||||
background: #252525;
|
||||
background-attachment: fixed !important;
|
||||
background: linear-gradient(#2a2a29, #1c1c1c);
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color: #e8e8e8;
|
||||
margin: 0 0 10px;
|
||||
font-family: "OpenSansRegular", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
p, ul, ol, table, pre, dl {
|
||||
margin: 0 0 20px;
|
||||
}
|
||||
|
||||
h1, h2, h3 {
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
h4, h5, h6 {
|
||||
color: #e8e8e8;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
line-height: 24px;
|
||||
font-family: "OpenSansRegular", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
|
||||
font-weight: normal;
|
||||
color: #b6b6b6;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #ffcc00;
|
||||
font-weight: 400;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
color: #ffeb9b;
|
||||
}
|
||||
|
||||
a small {
|
||||
font-size: 11px;
|
||||
color: #666;
|
||||
margin-top: -0.6em;
|
||||
display: block;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-image: url("../images/bullet.png");
|
||||
}
|
||||
|
||||
strong {
|
||||
font-family: "OpenSansBold", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
max-width: 650px;
|
||||
margin: 0 auto;
|
||||
position: relative;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
section img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 3px solid #ffcc00;
|
||||
margin: 0;
|
||||
padding: 0 0 0 20px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal, monospace;
|
||||
color: #efefef;
|
||||
font-size: 13px;
|
||||
margin: 0 4px;
|
||||
padding: 4px 6px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 8px 15px;
|
||||
background: #191919;
|
||||
border-radius: 2px;
|
||||
border: 1px solid #121212;
|
||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
|
||||
overflow: auto;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
pre code {
|
||||
color: #efefef;
|
||||
text-shadow: 0px 1px 0px #000;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
padding: 5px 10px;
|
||||
border-bottom: 1px solid #434343;
|
||||
color: #b6b6b6;
|
||||
font-family: "OpenSansSemibold", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
td {
|
||||
text-align: left;
|
||||
padding: 5px 10px;
|
||||
border-bottom: 1px solid #434343;
|
||||
}
|
||||
|
||||
hr {
|
||||
border: 0;
|
||||
outline: none;
|
||||
height: 3px;
|
||||
background: transparent url("../images/hr.gif") center center repeat-x;
|
||||
margin: 0 0 20px;
|
||||
}
|
||||
|
||||
dt {
|
||||
color: #F0E7D5;
|
||||
font-family: "OpenSansSemibold", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
#header {
|
||||
z-index: 100;
|
||||
left: 0;
|
||||
top: 0px;
|
||||
height: 60px;
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
background: url(../images/nav-bg.gif) #353535;
|
||||
border-bottom: 4px solid #434343;
|
||||
box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
#header nav {
|
||||
max-width: 650px;
|
||||
margin: 0 auto;
|
||||
padding: 0 10px;
|
||||
background: blue;
|
||||
margin: 6px auto;
|
||||
}
|
||||
#header nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#header nav ul li {
|
||||
font-family: "OpenSansLight", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-weight: normal;
|
||||
list-style: none;
|
||||
display: inline;
|
||||
color: white;
|
||||
line-height: 50px;
|
||||
text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.2);
|
||||
font-size: 14px;
|
||||
}
|
||||
#header nav ul li a {
|
||||
color: white;
|
||||
border: 1px solid #5d910b;
|
||||
background: linear-gradient(#93bd20, #659e10);
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.3), 0px 3px 7px rgba(0, 0, 0, 0.7);
|
||||
background-color: #93bd20;
|
||||
padding: 10px 12px;
|
||||
margin-top: 6px;
|
||||
line-height: 14px;
|
||||
font-size: 14px;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
}
|
||||
#header nav ul li a:hover {
|
||||
background: linear-gradient(#749619, #527f0e);
|
||||
background-color: #659e10;
|
||||
border: 1px solid #527f0e;
|
||||
box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2), 0px 1px 0px rgba(0, 0, 0, 0);
|
||||
}
|
||||
#header nav ul li.fork {
|
||||
float: left;
|
||||
margin-left: 0px;
|
||||
}
|
||||
#header nav ul li.downloads {
|
||||
float: right;
|
||||
margin-left: 6px;
|
||||
}
|
||||
#header nav ul li.title {
|
||||
float: right;
|
||||
margin-right: 10px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
section {
|
||||
max-width: 650px;
|
||||
padding: 30px 0px 50px 0px;
|
||||
margin: 20px 0;
|
||||
margin-top: 70px;
|
||||
}
|
||||
section #title {
|
||||
border: 0;
|
||||
outline: none;
|
||||
margin: 0 0 50px 0;
|
||||
padding: 0 0 5px 0;
|
||||
}
|
||||
section #title h1 {
|
||||
font-family: "OpenSansLight", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-weight: normal;
|
||||
font-size: 40px;
|
||||
text-align: center;
|
||||
line-height: 36px;
|
||||
}
|
||||
section #title p {
|
||||
color: #d7cfbe;
|
||||
font-family: "OpenSansLight", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-weight: normal;
|
||||
font-size: 18px;
|
||||
text-align: center;
|
||||
}
|
||||
section #title .credits {
|
||||
font-size: 11px;
|
||||
font-family: "OpenSansRegular", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-weight: normal;
|
||||
color: #696969;
|
||||
margin-top: -10px;
|
||||
}
|
||||
section #title .credits.left {
|
||||
float: left;
|
||||
}
|
||||
section #title .credits.right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
@media print, screen and (max-width: 720px) {
|
||||
#title .credits {
|
||||
display: block;
|
||||
width: 100%;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
}
|
||||
#title .credits .left {
|
||||
float: none;
|
||||
display: block;
|
||||
}
|
||||
#title .credits .right {
|
||||
float: none;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@media print, screen and (max-width: 480px) {
|
||||
#header {
|
||||
margin-top: -20px;
|
||||
}
|
||||
section {
|
||||
margin-top: 40px;
|
||||
}
|
||||
nav {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=style.css.map */
|
1
assets/css/style.css.map
Normal file
BIN
assets/fonts/OpenSans-Bold-webfont.eot
Normal file
21062
assets/fonts/OpenSans-Bold-webfont.svg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
assets/fonts/OpenSans-Bold-webfont.ttf
Normal file
BIN
assets/fonts/OpenSans-Bold-webfont.woff
Normal file
BIN
assets/fonts/OpenSans-BoldItalic-webfont.eot
Normal file
21121
assets/fonts/OpenSans-BoldItalic-webfont.svg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
assets/fonts/OpenSans-BoldItalic-webfont.ttf
Normal file
BIN
assets/fonts/OpenSans-BoldItalic-webfont.woff
Normal file
BIN
assets/fonts/OpenSans-Italic-webfont.eot
Normal file
21164
assets/fonts/OpenSans-Italic-webfont.svg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
assets/fonts/OpenSans-Italic-webfont.ttf
Normal file
BIN
assets/fonts/OpenSans-Italic-webfont.woff
Normal file
BIN
assets/fonts/OpenSans-Light-webfont.eot
Normal file
21034
assets/fonts/OpenSans-Light-webfont.svg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
assets/fonts/OpenSans-Light-webfont.ttf
Normal file
BIN
assets/fonts/OpenSans-Light-webfont.woff
Normal file
BIN
assets/fonts/OpenSans-LightItalic-webfont.eot
Normal file
21161
assets/fonts/OpenSans-LightItalic-webfont.svg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
assets/fonts/OpenSans-LightItalic-webfont.ttf
Normal file
BIN
assets/fonts/OpenSans-LightItalic-webfont.woff
Normal file
BIN
assets/fonts/OpenSans-Regular-webfont.eot
Normal file
21064
assets/fonts/OpenSans-Regular-webfont.svg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
assets/fonts/OpenSans-Regular-webfont.ttf
Normal file
BIN
assets/fonts/OpenSans-Regular-webfont.woff
Normal file
BIN
assets/fonts/OpenSans-Semibold-webfont.eot
Normal file
21055
assets/fonts/OpenSans-Semibold-webfont.svg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
assets/fonts/OpenSans-Semibold-webfont.ttf
Normal file
BIN
assets/fonts/OpenSans-Semibold-webfont.woff
Normal file
BIN
assets/fonts/OpenSans-SemiboldItalic-webfont.eot
Normal file
21154
assets/fonts/OpenSans-SemiboldItalic-webfont.svg
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
assets/fonts/OpenSans-SemiboldItalic-webfont.ttf
Normal file
BIN
assets/fonts/OpenSans-SemiboldItalic-webfont.woff
Normal file
BIN
assets/images/bullet.png
Normal file
After Width: | Height: | Size: 139 B |
BIN
assets/images/hr.gif
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/images/nav-bg.gif
Normal file
After Width: | Height: | Size: 1.2 KiB |
779
assets/js/respond.js
Normal file
@ -0,0 +1,779 @@
|
||||
if(typeof Object.create!=="function"){
|
||||
Object.create=function(o){
|
||||
function F(){
|
||||
};
|
||||
F.prototype=o;
|
||||
return new F();
|
||||
};
|
||||
}
|
||||
var ua={toString:function(){
|
||||
return navigator.userAgent;
|
||||
},test:function(s){
|
||||
return this.toString().toLowerCase().indexOf(s.toLowerCase())>-1;
|
||||
}};
|
||||
ua.version=(ua.toString().toLowerCase().match(/[\s\S]+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1];
|
||||
ua.webkit=ua.test("webkit");
|
||||
ua.gecko=ua.test("gecko")&&!ua.webkit;
|
||||
ua.opera=ua.test("opera");
|
||||
ua.ie=ua.test("msie")&&!ua.opera;
|
||||
ua.ie6=ua.ie&&document.compatMode&&typeof document.documentElement.style.maxHeight==="undefined";
|
||||
ua.ie7=ua.ie&&document.documentElement&&typeof document.documentElement.style.maxHeight!=="undefined"&&typeof XDomainRequest==="undefined";
|
||||
ua.ie8=ua.ie&&typeof XDomainRequest!=="undefined";
|
||||
var domReady=function(){
|
||||
var _1=[];
|
||||
var _2=function(){
|
||||
if(!arguments.callee.done){
|
||||
arguments.callee.done=true;
|
||||
for(var i=0;i<_1.length;i++){
|
||||
_1[i]();
|
||||
}
|
||||
}
|
||||
};
|
||||
if(document.addEventListener){
|
||||
document.addEventListener("DOMContentLoaded",_2,false);
|
||||
}
|
||||
if(ua.ie){
|
||||
(function(){
|
||||
try{
|
||||
document.documentElement.doScroll("left");
|
||||
}
|
||||
catch(e){
|
||||
setTimeout(arguments.callee,50);
|
||||
return;
|
||||
}
|
||||
_2();
|
||||
})();
|
||||
document.onreadystatechange=function(){
|
||||
if(document.readyState==="complete"){
|
||||
document.onreadystatechange=null;
|
||||
_2();
|
||||
}
|
||||
};
|
||||
}
|
||||
if(ua.webkit&&document.readyState){
|
||||
(function(){
|
||||
if(document.readyState!=="loading"){
|
||||
_2();
|
||||
}else{
|
||||
setTimeout(arguments.callee,10);
|
||||
}
|
||||
})();
|
||||
}
|
||||
window.onload=_2;
|
||||
return function(fn){
|
||||
if(typeof fn==="function"){
|
||||
_1[_1.length]=fn;
|
||||
}
|
||||
return fn;
|
||||
};
|
||||
}();
|
||||
var cssHelper=function(){
|
||||
var _3={BLOCKS:/[^\s{][^{]*\{(?:[^{}]*\{[^{}]*\}[^{}]*|[^{}]*)*\}/g,BLOCKS_INSIDE:/[^\s{][^{]*\{[^{}]*\}/g,DECLARATIONS:/[a-zA-Z\-]+[^;]*:[^;]+;/g,RELATIVE_URLS:/url\(['"]?([^\/\)'"][^:\)'"]+)['"]?\)/g,REDUNDANT_COMPONENTS:/(?:\/\*([^*\\\\]|\*(?!\/))+\*\/|@import[^;]+;)/g,REDUNDANT_WHITESPACE:/\s*(,|:|;|\{|\})\s*/g,MORE_WHITESPACE:/\s{2,}/g,FINAL_SEMICOLONS:/;\}/g,NOT_WHITESPACE:/\S+/g};
|
||||
var _4,_5=false;
|
||||
var _6=[];
|
||||
var _7=function(fn){
|
||||
if(typeof fn==="function"){
|
||||
_6[_6.length]=fn;
|
||||
}
|
||||
};
|
||||
var _8=function(){
|
||||
for(var i=0;i<_6.length;i++){
|
||||
_6[i](_4);
|
||||
}
|
||||
};
|
||||
var _9={};
|
||||
var _a=function(n,v){
|
||||
if(_9[n]){
|
||||
var _b=_9[n].listeners;
|
||||
if(_b){
|
||||
for(var i=0;i<_b.length;i++){
|
||||
_b[i](v);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
var _c=function(_d,_e,_f){
|
||||
if(ua.ie&&!window.XMLHttpRequest){
|
||||
window.XMLHttpRequest=function(){
|
||||
return new ActiveXObject("Microsoft.XMLHTTP");
|
||||
};
|
||||
}
|
||||
if(!XMLHttpRequest){
|
||||
return "";
|
||||
}
|
||||
var r=new XMLHttpRequest();
|
||||
try{
|
||||
r.open("get",_d,true);
|
||||
r.setRequestHeader("X_REQUESTED_WITH","XMLHttpRequest");
|
||||
}
|
||||
catch(e){
|
||||
_f();
|
||||
return;
|
||||
}
|
||||
var _10=false;
|
||||
setTimeout(function(){
|
||||
_10=true;
|
||||
},5000);
|
||||
document.documentElement.style.cursor="progress";
|
||||
r.onreadystatechange=function(){
|
||||
if(r.readyState===4&&!_10){
|
||||
if(!r.status&&location.protocol==="file:"||(r.status>=200&&r.status<300)||r.status===304||navigator.userAgent.indexOf("Safari")>-1&&typeof r.status==="undefined"){
|
||||
_e(r.responseText);
|
||||
}else{
|
||||
_f();
|
||||
}
|
||||
document.documentElement.style.cursor="";
|
||||
r=null;
|
||||
}
|
||||
};
|
||||
r.send("");
|
||||
};
|
||||
var _11=function(_12){
|
||||
_12=_12.replace(_3.REDUNDANT_COMPONENTS,"");
|
||||
_12=_12.replace(_3.REDUNDANT_WHITESPACE,"$1");
|
||||
_12=_12.replace(_3.MORE_WHITESPACE," ");
|
||||
_12=_12.replace(_3.FINAL_SEMICOLONS,"}");
|
||||
return _12;
|
||||
};
|
||||
var _13={mediaQueryList:function(s){
|
||||
var o={};
|
||||
var idx=s.indexOf("{");
|
||||
var lt=s.substring(0,idx);
|
||||
s=s.substring(idx+1,s.length-1);
|
||||
var mqs=[],rs=[];
|
||||
var qts=lt.toLowerCase().substring(7).split(",");
|
||||
for(var i=0;i<qts.length;i++){
|
||||
mqs[mqs.length]=_13.mediaQuery(qts[i],o);
|
||||
}
|
||||
var rts=s.match(_3.BLOCKS_INSIDE);
|
||||
if(rts!==null){
|
||||
for(i=0;i<rts.length;i++){
|
||||
rs[rs.length]=_13.rule(rts[i],o);
|
||||
}
|
||||
}
|
||||
o.getMediaQueries=function(){
|
||||
return mqs;
|
||||
};
|
||||
o.getRules=function(){
|
||||
return rs;
|
||||
};
|
||||
o.getListText=function(){
|
||||
return lt;
|
||||
};
|
||||
o.getCssText=function(){
|
||||
return s;
|
||||
};
|
||||
return o;
|
||||
},mediaQuery:function(s,mql){
|
||||
s=s||"";
|
||||
var not=false,_14;
|
||||
var exp=[];
|
||||
var _15=true;
|
||||
var _16=s.match(_3.NOT_WHITESPACE);
|
||||
for(var i=0;i<_16.length;i++){
|
||||
var _17=_16[i];
|
||||
if(!_14&&(_17==="not"||_17==="only")){
|
||||
if(_17==="not"){
|
||||
not=true;
|
||||
}
|
||||
}else{
|
||||
if(!_14){
|
||||
_14=_17;
|
||||
}else{
|
||||
if(_17.charAt(0)==="("){
|
||||
var _18=_17.substring(1,_17.length-1).split(":");
|
||||
exp[exp.length]={mediaFeature:_18[0],value:_18[1]||null};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return {getList:function(){
|
||||
return mql||null;
|
||||
},getValid:function(){
|
||||
return _15;
|
||||
},getNot:function(){
|
||||
return not;
|
||||
},getMediaType:function(){
|
||||
return _14;
|
||||
},getExpressions:function(){
|
||||
return exp;
|
||||
}};
|
||||
},rule:function(s,mql){
|
||||
var o={};
|
||||
var idx=s.indexOf("{");
|
||||
var st=s.substring(0,idx);
|
||||
var ss=st.split(",");
|
||||
var ds=[];
|
||||
var dts=s.substring(idx+1,s.length-1).split(";");
|
||||
for(var i=0;i<dts.length;i++){
|
||||
ds[ds.length]=_13.declaration(dts[i],o);
|
||||
}
|
||||
o.getMediaQueryList=function(){
|
||||
return mql||null;
|
||||
};
|
||||
o.getSelectors=function(){
|
||||
return ss;
|
||||
};
|
||||
o.getSelectorText=function(){
|
||||
return st;
|
||||
};
|
||||
o.getDeclarations=function(){
|
||||
return ds;
|
||||
};
|
||||
o.getPropertyValue=function(n){
|
||||
for(var i=0;i<ds.length;i++){
|
||||
if(ds[i].getProperty()===n){
|
||||
return ds[i].getValue();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
return o;
|
||||
},declaration:function(s,r){
|
||||
var idx=s.indexOf(":");
|
||||
var p=s.substring(0,idx);
|
||||
var v=s.substring(idx+1);
|
||||
return {getRule:function(){
|
||||
return r||null;
|
||||
},getProperty:function(){
|
||||
return p;
|
||||
},getValue:function(){
|
||||
return v;
|
||||
}};
|
||||
}};
|
||||
var _19=function(el){
|
||||
if(typeof el.cssHelperText!=="string"){
|
||||
return;
|
||||
}
|
||||
var o={mediaQueryLists:[],rules:[],selectors:{},declarations:[],properties:{}};
|
||||
var _1a=o.mediaQueryLists;
|
||||
var ors=o.rules;
|
||||
var _1b=el.cssHelperText.match(_3.BLOCKS);
|
||||
if(_1b!==null){
|
||||
for(var i=0;i<_1b.length;i++){
|
||||
if(_1b[i].substring(0,7)==="@media "){
|
||||
_1a[_1a.length]=_13.mediaQueryList(_1b[i]);
|
||||
ors=o.rules=ors.concat(_1a[_1a.length-1].getRules());
|
||||
}else{
|
||||
ors[ors.length]=_13.rule(_1b[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
var oss=o.selectors;
|
||||
var _1c=function(r){
|
||||
var ss=r.getSelectors();
|
||||
for(var i=0;i<ss.length;i++){
|
||||
var n=ss[i];
|
||||
if(!oss[n]){
|
||||
oss[n]=[];
|
||||
}
|
||||
oss[n][oss[n].length]=r;
|
||||
}
|
||||
};
|
||||
for(i=0;i<ors.length;i++){
|
||||
_1c(ors[i]);
|
||||
}
|
||||
var ods=o.declarations;
|
||||
for(i=0;i<ors.length;i++){
|
||||
ods=o.declarations=ods.concat(ors[i].getDeclarations());
|
||||
}
|
||||
var ops=o.properties;
|
||||
for(i=0;i<ods.length;i++){
|
||||
var n=ods[i].getProperty();
|
||||
if(!ops[n]){
|
||||
ops[n]=[];
|
||||
}
|
||||
ops[n][ops[n].length]=ods[i];
|
||||
}
|
||||
el.cssHelperParsed=o;
|
||||
_4[_4.length]=el;
|
||||
return o;
|
||||
};
|
||||
var _1d=function(el,s){
|
||||
el.cssHelperText=_11(s||el.innerHTML);
|
||||
return _19(el);
|
||||
};
|
||||
var _1e=function(){
|
||||
_5=true;
|
||||
_4=[];
|
||||
var _1f=[];
|
||||
var _20=function(){
|
||||
for(var i=0;i<_1f.length;i++){
|
||||
_19(_1f[i]);
|
||||
}
|
||||
var _21=document.getElementsByTagName("style");
|
||||
for(i=0;i<_21.length;i++){
|
||||
_1d(_21[i]);
|
||||
}
|
||||
_5=false;
|
||||
_8();
|
||||
};
|
||||
var _22=document.getElementsByTagName("link");
|
||||
for(var i=0;i<_22.length;i++){
|
||||
var _23=_22[i];
|
||||
if(_23.getAttribute("rel").indexOf("style")>-1&&_23.href&&_23.href.length!==0&&!_23.disabled){
|
||||
_1f[_1f.length]=_23;
|
||||
}
|
||||
}
|
||||
if(_1f.length>0){
|
||||
var c=0;
|
||||
var _24=function(){
|
||||
c++;
|
||||
if(c===_1f.length){
|
||||
_20();
|
||||
}
|
||||
};
|
||||
var _25=function(_26){
|
||||
var _27=_26.href;
|
||||
_c(_27,function(_28){
|
||||
_28=_11(_28).replace(_3.RELATIVE_URLS,"url("+_27.substring(0,_27.lastIndexOf("/"))+"/$1)");
|
||||
_26.cssHelperText=_28;
|
||||
_24();
|
||||
},_24);
|
||||
};
|
||||
for(i=0;i<_1f.length;i++){
|
||||
_25(_1f[i]);
|
||||
}
|
||||
}else{
|
||||
_20();
|
||||
}
|
||||
};
|
||||
var _29={mediaQueryLists:"array",rules:"array",selectors:"object",declarations:"array",properties:"object"};
|
||||
var _2a={mediaQueryLists:null,rules:null,selectors:null,declarations:null,properties:null};
|
||||
var _2b=function(_2c,v){
|
||||
if(_2a[_2c]!==null){
|
||||
if(_29[_2c]==="array"){
|
||||
return (_2a[_2c]=_2a[_2c].concat(v));
|
||||
}else{
|
||||
var c=_2a[_2c];
|
||||
for(var n in v){
|
||||
if(v.hasOwnProperty(n)){
|
||||
if(!c[n]){
|
||||
c[n]=v[n];
|
||||
}else{
|
||||
c[n]=c[n].concat(v[n]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
}
|
||||
};
|
||||
var _2d=function(_2e){
|
||||
_2a[_2e]=(_29[_2e]==="array")?[]:{};
|
||||
for(var i=0;i<_4.length;i++){
|
||||
_2b(_2e,_4[i].cssHelperParsed[_2e]);
|
||||
}
|
||||
return _2a[_2e];
|
||||
};
|
||||
domReady(function(){
|
||||
var els=document.body.getElementsByTagName("*");
|
||||
for(var i=0;i<els.length;i++){
|
||||
els[i].checkedByCssHelper=true;
|
||||
}
|
||||
if(document.implementation.hasFeature("MutationEvents","2.0")||window.MutationEvent){
|
||||
document.body.addEventListener("DOMNodeInserted",function(e){
|
||||
var el=e.target;
|
||||
if(el.nodeType===1){
|
||||
_a("DOMElementInserted",el);
|
||||
el.checkedByCssHelper=true;
|
||||
}
|
||||
},false);
|
||||
}else{
|
||||
setInterval(function(){
|
||||
var els=document.body.getElementsByTagName("*");
|
||||
for(var i=0;i<els.length;i++){
|
||||
if(!els[i].checkedByCssHelper){
|
||||
_a("DOMElementInserted",els[i]);
|
||||
els[i].checkedByCssHelper=true;
|
||||
}
|
||||
}
|
||||
},1000);
|
||||
}
|
||||
});
|
||||
var _2f=function(d){
|
||||
if(typeof window.innerWidth!="undefined"){
|
||||
return window["inner"+d];
|
||||
}else{
|
||||
if(typeof document.documentElement!="undefined"&&typeof document.documentElement.clientWidth!="undefined"&&document.documentElement.clientWidth!=0){
|
||||
return document.documentElement["client"+d];
|
||||
}
|
||||
}
|
||||
};
|
||||
return {addStyle:function(s,_30){
|
||||
var el=document.createElement("style");
|
||||
el.setAttribute("type","text/css");
|
||||
document.getElementsByTagName("head")[0].appendChild(el);
|
||||
if(el.styleSheet){
|
||||
el.styleSheet.cssText=s;
|
||||
}else{
|
||||
el.appendChild(document.createTextNode(s));
|
||||
}
|
||||
el.addedWithCssHelper=true;
|
||||
if(typeof _30==="undefined"||_30===true){
|
||||
cssHelper.parsed(function(_31){
|
||||
var o=_1d(el,s);
|
||||
for(var n in o){
|
||||
if(o.hasOwnProperty(n)){
|
||||
_2b(n,o[n]);
|
||||
}
|
||||
}
|
||||
_a("newStyleParsed",el);
|
||||
});
|
||||
}else{
|
||||
el.parsingDisallowed=true;
|
||||
}
|
||||
return el;
|
||||
},removeStyle:function(el){
|
||||
return el.parentNode.removeChild(el);
|
||||
},parsed:function(fn){
|
||||
if(_5){
|
||||
_7(fn);
|
||||
}else{
|
||||
if(typeof _4!=="undefined"){
|
||||
if(typeof fn==="function"){
|
||||
fn(_4);
|
||||
}
|
||||
}else{
|
||||
_7(fn);
|
||||
_1e();
|
||||
}
|
||||
}
|
||||
},mediaQueryLists:function(fn){
|
||||
cssHelper.parsed(function(_32){
|
||||
fn(_2a.mediaQueryLists||_2d("mediaQueryLists"));
|
||||
});
|
||||
},rules:function(fn){
|
||||
cssHelper.parsed(function(_33){
|
||||
fn(_2a.rules||_2d("rules"));
|
||||
});
|
||||
},selectors:function(fn){
|
||||
cssHelper.parsed(function(_34){
|
||||
fn(_2a.selectors||_2d("selectors"));
|
||||
});
|
||||
},declarations:function(fn){
|
||||
cssHelper.parsed(function(_35){
|
||||
fn(_2a.declarations||_2d("declarations"));
|
||||
});
|
||||
},properties:function(fn){
|
||||
cssHelper.parsed(function(_36){
|
||||
fn(_2a.properties||_2d("properties"));
|
||||
});
|
||||
},broadcast:_a,addListener:function(n,fn){
|
||||
if(typeof fn==="function"){
|
||||
if(!_9[n]){
|
||||
_9[n]={listeners:[]};
|
||||
}
|
||||
_9[n].listeners[_9[n].listeners.length]=fn;
|
||||
}
|
||||
},removeListener:function(n,fn){
|
||||
if(typeof fn==="function"&&_9[n]){
|
||||
var ls=_9[n].listeners;
|
||||
for(var i=0;i<ls.length;i++){
|
||||
if(ls[i]===fn){
|
||||
ls.splice(i,1);
|
||||
i-=1;
|
||||
}
|
||||
}
|
||||
}
|
||||
},getViewportWidth:function(){
|
||||
return _2f("Width");
|
||||
},getViewportHeight:function(){
|
||||
return _2f("Height");
|
||||
}};
|
||||
}();
|
||||
domReady(function enableCssMediaQueries(){
|
||||
var _37;
|
||||
var _38={LENGTH_UNIT:/[0-9]+(em|ex|px|in|cm|mm|pt|pc)$/,RESOLUTION_UNIT:/[0-9]+(dpi|dpcm)$/,ASPECT_RATIO:/^[0-9]+\/[0-9]+$/,ABSOLUTE_VALUE:/^[0-9]*(\.[0-9]+)*$/};
|
||||
var _39=[];
|
||||
var _3a=function(){
|
||||
var id="css3-mediaqueries-test";
|
||||
var el=document.createElement("div");
|
||||
el.id=id;
|
||||
var _3b=cssHelper.addStyle("@media all and (width) { #"+id+" { width: 1px !important; } }",false);
|
||||
document.body.appendChild(el);
|
||||
var ret=el.offsetWidth===1;
|
||||
_3b.parentNode.removeChild(_3b);
|
||||
el.parentNode.removeChild(el);
|
||||
_3a=function(){
|
||||
return ret;
|
||||
};
|
||||
return ret;
|
||||
};
|
||||
var _3c=function(){
|
||||
_37=document.createElement("div");
|
||||
_37.style.cssText="position:absolute;top:-9999em;left:-9999em;"+"margin:0;border:none;padding:0;width:1em;font-size:1em;";
|
||||
document.body.appendChild(_37);
|
||||
if(_37.offsetWidth!==16){
|
||||
_37.style.fontSize=16/_37.offsetWidth+"em";
|
||||
}
|
||||
_37.style.width="";
|
||||
};
|
||||
var _3d=function(_3e){
|
||||
_37.style.width=_3e;
|
||||
var _3f=_37.offsetWidth;
|
||||
_37.style.width="";
|
||||
return _3f;
|
||||
};
|
||||
var _40=function(_41,_42){
|
||||
var l=_41.length;
|
||||
var min=(_41.substring(0,4)==="min-");
|
||||
var max=(!min&&_41.substring(0,4)==="max-");
|
||||
if(_42!==null){
|
||||
var _43;
|
||||
var _44;
|
||||
if(_38.LENGTH_UNIT.exec(_42)){
|
||||
_43="length";
|
||||
_44=_3d(_42);
|
||||
}else{
|
||||
if(_38.RESOLUTION_UNIT.exec(_42)){
|
||||
_43="resolution";
|
||||
_44=parseInt(_42,10);
|
||||
var _45=_42.substring((_44+"").length);
|
||||
}else{
|
||||
if(_38.ASPECT_RATIO.exec(_42)){
|
||||
_43="aspect-ratio";
|
||||
_44=_42.split("/");
|
||||
}else{
|
||||
if(_38.ABSOLUTE_VALUE){
|
||||
_43="absolute";
|
||||
_44=_42;
|
||||
}else{
|
||||
_43="unknown";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
var _46,_47;
|
||||
if("device-width"===_41.substring(l-12,l)){
|
||||
_46=screen.width;
|
||||
if(_42!==null){
|
||||
if(_43==="length"){
|
||||
return ((min&&_46>=_44)||(max&&_46<_44)||(!min&&!max&&_46===_44));
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return _46>0;
|
||||
}
|
||||
}else{
|
||||
if("device-height"===_41.substring(l-13,l)){
|
||||
_47=screen.height;
|
||||
if(_42!==null){
|
||||
if(_43==="length"){
|
||||
return ((min&&_47>=_44)||(max&&_47<_44)||(!min&&!max&&_47===_44));
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return _47>0;
|
||||
}
|
||||
}else{
|
||||
if("width"===_41.substring(l-5,l)){
|
||||
_46=document.documentElement.clientWidth||document.body.clientWidth;
|
||||
if(_42!==null){
|
||||
if(_43==="length"){
|
||||
return ((min&&_46>=_44)||(max&&_46<_44)||(!min&&!max&&_46===_44));
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return _46>0;
|
||||
}
|
||||
}else{
|
||||
if("height"===_41.substring(l-6,l)){
|
||||
_47=document.documentElement.clientHeight||document.body.clientHeight;
|
||||
if(_42!==null){
|
||||
if(_43==="length"){
|
||||
return ((min&&_47>=_44)||(max&&_47<_44)||(!min&&!max&&_47===_44));
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return _47>0;
|
||||
}
|
||||
}else{
|
||||
if("device-aspect-ratio"===_41.substring(l-19,l)){
|
||||
return _43==="aspect-ratio"&&screen.width*_44[1]===screen.height*_44[0];
|
||||
}else{
|
||||
if("color-index"===_41.substring(l-11,l)){
|
||||
var _48=Math.pow(2,screen.colorDepth);
|
||||
if(_42!==null){
|
||||
if(_43==="absolute"){
|
||||
return ((min&&_48>=_44)||(max&&_48<_44)||(!min&&!max&&_48===_44));
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return _48>0;
|
||||
}
|
||||
}else{
|
||||
if("color"===_41.substring(l-5,l)){
|
||||
var _49=screen.colorDepth;
|
||||
if(_42!==null){
|
||||
if(_43==="absolute"){
|
||||
return ((min&&_49>=_44)||(max&&_49<_44)||(!min&&!max&&_49===_44));
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return _49>0;
|
||||
}
|
||||
}else{
|
||||
if("resolution"===_41.substring(l-10,l)){
|
||||
var res;
|
||||
if(_45==="dpcm"){
|
||||
res=_3d("1cm");
|
||||
}else{
|
||||
res=_3d("1in");
|
||||
}
|
||||
if(_42!==null){
|
||||
if(_43==="resolution"){
|
||||
return ((min&&res>=_44)||(max&&res<_44)||(!min&&!max&&res===_44));
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return res>0;
|
||||
}
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
var _4a=function(mq){
|
||||
var _4b=mq.getValid();
|
||||
var _4c=mq.getExpressions();
|
||||
var l=_4c.length;
|
||||
if(l>0){
|
||||
for(var i=0;i<l&&_4b;i++){
|
||||
_4b=_40(_4c[i].mediaFeature,_4c[i].value);
|
||||
}
|
||||
var not=mq.getNot();
|
||||
return (_4b&&!not||not&&!_4b);
|
||||
}
|
||||
};
|
||||
var _4d=function(mql){
|
||||
var mqs=mql.getMediaQueries();
|
||||
var t={};
|
||||
for(var i=0;i<mqs.length;i++){
|
||||
if(_4a(mqs[i])){
|
||||
t[mqs[i].getMediaType()]=true;
|
||||
}
|
||||
}
|
||||
var s=[],c=0;
|
||||
for(var n in t){
|
||||
if(t.hasOwnProperty(n)){
|
||||
if(c>0){
|
||||
s[c++]=",";
|
||||
}
|
||||
s[c++]=n;
|
||||
}
|
||||
}
|
||||
if(s.length>0){
|
||||
_39[_39.length]=cssHelper.addStyle("@media "+s.join("")+"{"+mql.getCssText()+"}",false);
|
||||
}
|
||||
};
|
||||
var _4e=function(_4f){
|
||||
for(var i=0;i<_4f.length;i++){
|
||||
_4d(_4f[i]);
|
||||
}
|
||||
if(ua.ie){
|
||||
document.documentElement.style.display="block";
|
||||
setTimeout(function(){
|
||||
document.documentElement.style.display="";
|
||||
},0);
|
||||
setTimeout(function(){
|
||||
cssHelper.broadcast("cssMediaQueriesTested");
|
||||
},100);
|
||||
}else{
|
||||
cssHelper.broadcast("cssMediaQueriesTested");
|
||||
}
|
||||
};
|
||||
var _50=function(){
|
||||
for(var i=0;i<_39.length;i++){
|
||||
cssHelper.removeStyle(_39[i]);
|
||||
}
|
||||
_39=[];
|
||||
cssHelper.mediaQueryLists(_4e);
|
||||
};
|
||||
var _51=0;
|
||||
var _52=function(){
|
||||
var _53=cssHelper.getViewportWidth();
|
||||
var _54=cssHelper.getViewportHeight();
|
||||
if(ua.ie){
|
||||
var el=document.createElement("div");
|
||||
el.style.position="absolute";
|
||||
el.style.top="-9999em";
|
||||
el.style.overflow="scroll";
|
||||
document.body.appendChild(el);
|
||||
_51=el.offsetWidth-el.clientWidth;
|
||||
document.body.removeChild(el);
|
||||
}
|
||||
var _55;
|
||||
var _56=function(){
|
||||
var vpw=cssHelper.getViewportWidth();
|
||||
var vph=cssHelper.getViewportHeight();
|
||||
if(Math.abs(vpw-_53)>_51||Math.abs(vph-_54)>_51){
|
||||
_53=vpw;
|
||||
_54=vph;
|
||||
clearTimeout(_55);
|
||||
_55=setTimeout(function(){
|
||||
if(!_3a()){
|
||||
_50();
|
||||
}else{
|
||||
cssHelper.broadcast("cssMediaQueriesTested");
|
||||
}
|
||||
},500);
|
||||
}
|
||||
};
|
||||
window.onresize=function(){
|
||||
var x=window.onresize||function(){
|
||||
};
|
||||
return function(){
|
||||
x();
|
||||
_56();
|
||||
};
|
||||
}();
|
||||
};
|
||||
var _57=document.documentElement;
|
||||
_57.style.marginLeft="-32767px";
|
||||
setTimeout(function(){
|
||||
_57.style.marginTop="";
|
||||
},20000);
|
||||
return function(){
|
||||
if(!_3a()){
|
||||
cssHelper.addListener("newStyleParsed",function(el){
|
||||
_4e(el.cssHelperParsed.mediaQueryLists);
|
||||
});
|
||||
cssHelper.addListener("cssMediaQueriesTested",function(){
|
||||
if(ua.ie){
|
||||
_57.style.width="1px";
|
||||
}
|
||||
setTimeout(function(){
|
||||
_57.style.width="";
|
||||
_57.style.marginLeft="";
|
||||
},0);
|
||||
cssHelper.removeListener("cssMediaQueriesTested",arguments.callee);
|
||||
});
|
||||
_3c();
|
||||
_50();
|
||||
}else{
|
||||
_57.style.marginLeft="";
|
||||
}
|
||||
_52();
|
||||
};
|
||||
}());
|
||||
try{
|
||||
document.execCommand("BackgroundImageCache",false,true);
|
||||
}
|
||||
catch(e){
|
||||
}
|
||||
|
16
domains.yaml
Normal file
@ -0,0 +1,16 @@
|
||||
reserved_domains:
|
||||
- "^(www\\.|api\\.|mail\\.|status\\.)morlana\\.page$"
|
||||
- "^admin\\..*"
|
||||
- "^internal\\..*"
|
||||
|
||||
subdomains:
|
||||
- name: sitiriotv
|
||||
target: justin.morlana.space
|
||||
# - name: "example"
|
||||
# target: "example.com"
|
||||
# proxy: true
|
||||
# note: "Test Subdomain"
|
||||
# - name: "test"
|
||||
# target: "test.example.com"
|
||||
# proxy: false
|
||||
# note: "Proxy deaktiviert"
|
1
feed.xml
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="https://morlana.page/feed.xml" rel="self" type="application/atom+xml" /><link href="https://morlana.page/" rel="alternate" type="text/html" /><updated>2025-03-02T22:23:37+00:00</updated><id>https://morlana.page/feed.xml</id><title type="html">Morlana - Pages</title><subtitle>Free Subdomains provided by Morlana</subtitle></feed>
|
@ -1,5 +0,0 @@
|
||||
<html>
|
||||
<body>
|
||||
<h1>Hello, World!</h1>
|
||||
</body>
|
||||
</html>
|
62
update_cloudflare.py
Normal file
@ -0,0 +1,62 @@
|
||||
import yaml
|
||||
import requests
|
||||
import re
|
||||
import os
|
||||
|
||||
# Cloudflare API Konfiguration
|
||||
CLOUDFLARE_API_TOKEN = os.getenv("CLOUDFLARE_API_TOKEN")
|
||||
CLOUDFLARE_ZONE_ID = os.getenv("CLOUDFLARE_ZONE_ID")
|
||||
CLOUDFLARE_API_URL = f"https://api.cloudflare.com/client/v4/zones/{CLOUDFLARE_ZONE_ID}/dns_records"
|
||||
|
||||
HEADERS = {
|
||||
"Authorization": f"Bearer {CLOUDFLARE_API_TOKEN}",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
|
||||
def load_domains(file_path="domains.yaml"):
|
||||
with open(file_path, "r") as file:
|
||||
return yaml.safe_load(file)
|
||||
|
||||
def is_reserved(domain, reserved_patterns):
|
||||
return any(re.match(pattern, domain) for pattern in reserved_patterns)
|
||||
|
||||
def get_existing_records():
|
||||
response = requests.get(CLOUDFLARE_API_URL, headers=HEADERS)
|
||||
if response.status_code == 200:
|
||||
return {rec["name"]: rec for rec in response.json().get("result", [])}
|
||||
return {}
|
||||
|
||||
def update_cloudflare():
|
||||
data = load_domains()
|
||||
reserved_patterns = data.get("reserved_domains", [])
|
||||
subdomains = data.get("subdomains", [])
|
||||
|
||||
existing_records = get_existing_records()
|
||||
|
||||
for subdomain in subdomains:
|
||||
full_domain = f"{subdomain['name']}.morlana.page"
|
||||
|
||||
if is_reserved(full_domain, reserved_patterns):
|
||||
print(f"Skipping reserved domain: {full_domain}")
|
||||
continue
|
||||
|
||||
record_data = {
|
||||
"type": "CNAME",
|
||||
"name": full_domain,
|
||||
"content": subdomain["target"],
|
||||
"proxied": subdomain.get("proxy", True)
|
||||
}
|
||||
|
||||
if full_domain in existing_records:
|
||||
record_id = existing_records[full_domain]["id"]
|
||||
response = requests.put(f"{CLOUDFLARE_API_URL}/{record_id}", json=record_data, headers=HEADERS)
|
||||
else:
|
||||
response = requests.post(CLOUDFLARE_API_URL, json=record_data, headers=HEADERS)
|
||||
|
||||
if response.status_code in [200, 201]:
|
||||
print(f"Successfully updated {full_domain}")
|
||||
else:
|
||||
print(f"Failed to update {full_domain}: {response.text}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
update_cloudflare()
|