rewrite for cleaner dev aber geht noch nicht
All checks were successful
Build and push / Pulling repo on server (push) Successful in 2s
All checks were successful
Build and push / Pulling repo on server (push) Successful in 2s
This commit is contained in:
170
web/inc/helpers.php
Normal file
170
web/inc/helpers.php
Normal file
@ -0,0 +1,170 @@
|
||||
<?php
|
||||
|
||||
function sendMail($rcpt,$subject,$markdown)
|
||||
{
|
||||
$mail = new PHPMailer();
|
||||
$pd = new Parsedown();
|
||||
|
||||
$html = $pd->text($markdown);
|
||||
|
||||
ob_start();
|
||||
|
||||
$mail->CharSet ="UTF-8";
|
||||
$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output
|
||||
$mail->isSMTP(); // Send using SMTP
|
||||
$mail->Host = SMTP_HOST; // Set the SMTP server to send through
|
||||
$mail->SMTPAuth = (defined('SMTP_AUTH')?SMTP_AUTH:true); // Enable SMTP authentication
|
||||
$mail->Username = SMTP_USER; // SMTP username
|
||||
$mail->Password = SMTP_PW; // SMTP password
|
||||
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted
|
||||
$mail->Port = (defined('SMTP_PORT')?SMTP_PORT:587); // TCP port to connect to
|
||||
if(defined('SMTP_EHLO_DOMAIN') && SMTP_EHLO_DOMAIN)
|
||||
$mail->Hostname = SMTP_EHLO_DOMAIN;
|
||||
|
||||
//make sure we use ipv4
|
||||
$mail->SMTPOptions = [
|
||||
'socket' => [
|
||||
'bindto' => "0:0",
|
||||
],
|
||||
];
|
||||
|
||||
//Recipients
|
||||
$mail->setFrom(EMAIL_FROM_EMAIL, EMAIL_FROM_NAME);
|
||||
$mail->addAddress($rcpt); // Add a recipient
|
||||
|
||||
// Content
|
||||
$mail->isHTML(true); // Set email format to HTML
|
||||
$mail->Subject = $subject;
|
||||
$mail->Body = $html;
|
||||
$mail->AltBody = $markdown;
|
||||
|
||||
$mail->send();
|
||||
|
||||
$output = ob_get_clean();
|
||||
|
||||
addToMailLog($rcpt,$subject,$output);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
// found on https://html-online.com/articles/php-get-ip-cloudflare-proxy/
|
||||
function getUserIP() {
|
||||
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
|
||||
$_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
|
||||
$_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
|
||||
}
|
||||
$client = @$_SERVER['HTTP_CLIENT_IP'];
|
||||
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
|
||||
$remote = $_SERVER['REMOTE_ADDR'];
|
||||
|
||||
if(filter_var($client, FILTER_VALIDATE_IP)) { $ip = $client; }
|
||||
elseif(filter_var($forward, FILTER_VALIDATE_IP)) { $ip = $forward; }
|
||||
else { $ip = $remote; }
|
||||
|
||||
return $ip;
|
||||
}
|
||||
|
||||
|
||||
// from https://stackoverflow.com/a/834355/1174516
|
||||
function startsWith( $haystack, $needle ) {
|
||||
$length = strlen( $needle );
|
||||
return substr( $haystack, 0, $length ) === $needle;
|
||||
}
|
||||
function endsWith( $haystack, $needle ) {
|
||||
$length = strlen( $needle );
|
||||
if( !$length ) {
|
||||
return true;
|
||||
}
|
||||
return substr( $haystack, -$length ) === $needle;
|
||||
}
|
||||
|
||||
function is_cli()
|
||||
{
|
||||
if ( defined('STDIN') )
|
||||
return true;
|
||||
if ( php_sapi_name() === 'cli' )
|
||||
return true;
|
||||
if ( array_key_exists('SHELL', $_ENV) )
|
||||
return true;
|
||||
if ( empty($_SERVER['REMOTE_ADDR']) and !isset($_SERVER['HTTP_USER_AGENT']) and count($_SERVER['argv']) > 0)
|
||||
return true;
|
||||
if ( !array_key_exists('REQUEST_METHOD', $_SERVER) )
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function addToLog($text,$module='general')
|
||||
{
|
||||
$fp = fopen(ROOT.DS.'..'.DS.'log'.DS.$module.'.log','a');
|
||||
fwrite($fp,'['.date("y.m.d H:i").']'.$text.PHP_EOL);
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
function addToMailLog($rcpt,$subject,$response)
|
||||
{
|
||||
$rcpt_esc = str_replace('@','_at_',$rcpt);
|
||||
$dir = ROOT.DS.'..'.DS.'log'.DS.'maillog';
|
||||
if(!is_dir($dir))
|
||||
mkdir($dir);
|
||||
$fp = fopen($dir.DS.$rcpt_esc.'.log','a');
|
||||
fwrite($fp,"========= NEW MAIL ========\n[".date("y.m.d H:i")."] To: $rcpt\nSubject: $subject\n\n$response\n\n");
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
function translate($what)
|
||||
{
|
||||
$what = trim($what);
|
||||
return ($GLOBALS['translations'][$what]?:$what);
|
||||
}
|
||||
|
||||
function getFilesOfFolder($dir)
|
||||
{
|
||||
return array_diff(scandir($dir), array('.', '..'));
|
||||
}
|
||||
|
||||
function dbNeedsToBeUpgraded()
|
||||
{
|
||||
if(DB_TYPE=='sqlite' && !file_exists(ROOT.DS.'..'.DS.'data'.DS.'db.sqlite3'))
|
||||
return true;
|
||||
else if(!file_exists(ROOT.DS.'..'.DS.'log'.DS.'db_version'))
|
||||
return true;
|
||||
else if($GLOBALS['db_version']<getHighestSQLVersion())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function getHighestSQLVersion()
|
||||
{
|
||||
$dir = ROOT.DS.'..'.DS.'sql'.DS;
|
||||
$files = array_diff(scandir($dir), array('..', '.'));
|
||||
$files = array_map(function($e){
|
||||
return pathinfo($e, PATHINFO_FILENAME);
|
||||
}, $files);
|
||||
|
||||
sort($files);
|
||||
|
||||
return end($files);
|
||||
}
|
||||
|
||||
function gen_uuid() {
|
||||
return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||
// 32 bits for "time_low"
|
||||
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
|
||||
|
||||
// 16 bits for "time_mid"
|
||||
mt_rand( 0, 0xffff ),
|
||||
|
||||
// 16 bits for "time_hi_and_version",
|
||||
// four most significant bits holds version number 4
|
||||
mt_rand( 0, 0x0fff ) | 0x4000,
|
||||
|
||||
// 16 bits, 8 bits for "clk_seq_hi_res",
|
||||
// 8 bits for "clk_seq_low",
|
||||
// two most significant bits holds zero and one for variant DCE1.1
|
||||
mt_rand( 0, 0x3fff ) | 0x8000,
|
||||
|
||||
// 48 bits for "node"
|
||||
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
|
||||
);
|
||||
}
|
Reference in New Issue
Block a user