* Shaarli utilities
*/
+/**
+ * Logs a message to a text file
+ *
+ * The log format is compatible with fail2ban.
+ *
+ * @param string $logFile where to write the logs
+ * @param string $clientIp the client's remote IPv4/IPv6 address
+ * @param string $message the message to log
+ */
+function logm($logFile, $clientIp, $message)
+{
+ file_put_contents(
+ $logFile,
+ date('Y/m/d H:i:s').' - '.$clientIp.' - '.strval($message).PHP_EOL,
+ FILE_APPEND
+ );
+}
+
/**
* Returns the small hash of a string, using RFC 4648 base64url format
*
return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0);
}
- /**
- * Same as nl2br(), but escapes < and >
- */
- function nl2br_escaped($html)
- {
- return str_replace('>', '>', str_replace('<', '<', nl2br($html)));
- }
-
/**
* htmlspecialchars wrapper
*/
/**
* Checks if a string represents a valid date
+
+ * @param string $format The expected DateTime format of the string
+ * @param string $string A string-formatted date
+ *
+ * @return bool whether the string is a valid date
*
- * @param string a string-formatted date
- * @param format the expected DateTime format of the string
- * @return whether the string is a valid date
- * @see http://php.net/manual/en/class.datetime.php
- * @see http://php.net/manual/en/datetime.createfromformat.php
+ * @see http://php.net/manual/en/class.datetime.php
+ * @see http://php.net/manual/en/datetime.createfromformat.php
*/
function checkDateFormat($format, $string)
{
margin-top: 0;
margin-bottom: 12px;
font-weight: normal;
- max-height: 400px;
overflow: auto;
}
background: #ffffff;
}
-div#permalinkQrcode {
- padding: 20px;
- width: 220px;
- height: 220px;
- background-color: #ffffff;
- border: 1px solid black;
- position: absolute;
- top: -100px;
- left: -100px;
- text-align: center;
- font-size: 8pt;
- z-index: 50;
- -webkit-box-shadow: 2px 2px 20px 2px #333333;
- -moz-box-shadow: 2px 2px 20px 2px #333333;
- -o-box-shadow: 2px 2px 20px 2px #333333;
- -ms-box-shadow: 2px 2px 20px 2px #333333;
- box-shadow: 2px 2px 20px 2px #333333;
-}
-
div.daily {
font-family: Georgia, 'DejaVu Serif', Norasi, serif;
background-color: #E6D6BE;
ul.errors {
color: red;
float: left;
-}
+}
+
+/* 404 page */
+.error-container {
+
+ margin: 50px;
+ margin-top: 20px;
+}
+
+.error-container h1 {
+ text-decoration: none;
+ font-style: normal;
+ color: #80AD48;
+}