1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 01:39:24 +02:00
Daniel Neto 2023-02-26 10:25:50 -03:00
parent d0988b5a8c
commit 9b56290692
6 changed files with 110 additions and 13 deletions

View file

@ -0,0 +1,62 @@
<?php
if(php_sapi_name() !== 'cli'){
die('command line only');
}
/**
* Detects if an SSL certificate is valid for the given hostname and port.
*
* @param string $hostname The hostname to connect to.
* @param int $port The port number to connect to.
* @param int $timeout The timeout value in seconds (default: 30).
* @return bool Returns true if the SSL certificate is valid, false otherwise.
*/
function is_ssl_certificate_valid($hostname, $port = 8443, $timeout = 30) {
$errno = '';
$errstr = '';
$context = stream_context_create(array("ssl" =>
array(
"capture_peer_cert" => true,
'verify_peer'=>false,
'verify_peer_name'=>false,
'allow_self_signed'=>true
)
));
$stream = @stream_socket_client("ssl://{$hostname}:{$port}", $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $context);
if(!empty($stream)){
$cert_data = openssl_x509_parse(stream_context_get_params($stream)["options"]["ssl"]["peer_certificate"]);
$validFrom = DateTime::createFromFormat('ymdHisT', $cert_data["validFrom"]);
$validTo = DateTime::createFromFormat('ymdHisT', $cert_data["validTo"]);
$now = new DateTime();
if ($now >= $validFrom && $now <= $validTo) {
return true;
} else {
return false;
}
} else {
// Error connecting to the SSL endpoint
error_log("Failed to connect to SSL endpoint: {$errstr} ({$errno})");
return false;
}
}
function isDocker(){
return file_exists('/var/www/docker_vars.json');
}
$hostname = 'live';
if(!isDocker()){
$hostname = 'localhost';
}
if (!is_ssl_certificate_valid($hostname)) {
// Restart Nginx
echo 'Restart Nginx';
exec('/usr/local/nginx/sbin/nginx -s stop');
sleep(3);
exec('/usr/local/nginx/sbin/nginx');
}else{
echo 'No need to restart';
}

View file

@ -393,25 +393,36 @@ function cleanString($text) {
return preg_replace(array_keys($utf8), array_values($utf8), $text); return preg_replace(array_keys($utf8), array_values($utf8), $text);
} }
/**
* Sanitizes a string by removing HTML tags and special characters.
*
* @param string $text The text to sanitize.
* @param bool $strict (optional) Whether to apply strict sanitization. Defaults to false.
* @return string The sanitized string.
*/
function safeString($text, $strict = false, $try = 0) { function safeString($text, $strict = false, $try = 0) {
if (empty($text)) { if (empty($text)) {
return ''; return '';
} }
$originalText = $text; $originalText = $text;
$text = strip_tags($text); $text = strip_tags($text);
$text = str_replace(['&amp;', '&lt;', '&gt;'], ['', '', ''], $text); $text = str_replace(['&amp;', '&lt;', '&gt;'], ['', '', ''], $text);
$text = preg_replace('/(&#*\w+)[\x00-\x20]+;/u', '', $text); $text = preg_replace('/(&#*\w+)[\x00-\x20]+;/u', '', $text);
$text = preg_replace('/(&#x*[0-9A-F]+);*/iu', '', $text); $text = preg_replace('/(&#x*[0-9A-F]+);*/iu', '', $text);
$text = html_entity_decode($text, ENT_COMPAT, 'UTF-8'); $text = html_entity_decode($text, ENT_COMPAT, 'UTF-8');
if ($strict) { if ($strict) {
$text = filter_var($text, FILTER_SANITIZE_STRING); $text = filter_var($text, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_ENCODE_LOW | FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_AMP);
//$text = cleanURLName($text); //$text = cleanURLName($text);
} }
$text = trim($text); $text = trim($text);
if(empty($try) && empty($text)){ if(empty($try) && empty($text)){
return safeString(utf8_encode($originalText), $strict, 1); return safeString(utf8_encode($originalText), $strict, 1);
} }
return $text; return $text;
} }
@ -490,21 +501,35 @@ function getMinutesTotalVideosLength() {
return floor($seconds / 60); return floor($seconds / 60);
} }
/**
* Converts a duration in seconds to a formatted time string (hh:mm:ss).
*
* @param int|float|string $seconds The duration in seconds to convert.
* @return string The formatted time string.
*/
function secondsToVideoTime($seconds) { function secondsToVideoTime($seconds) {
if (!is_numeric($seconds)) { if (!is_numeric($seconds)) {
return $seconds; return (string) $seconds;
} }
$seconds = round($seconds); $seconds = round($seconds);
$hours = floor($seconds / 3600); $hours = floor($seconds / 3600);
$mins = floor(intval($seconds / 60) % 60); $minutes = floor(($seconds % 3600) / 60);
$secs = floor($seconds % 60); $seconds = $seconds % 60;
return sprintf('%02d:%02d:%02d', $hours, $mins, $secs);
return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
} }
function parseSecondsToDuration($seconds) { function parseSecondsToDuration($seconds) {
return secondsToVideoTime($seconds); return secondsToVideoTime($seconds);
} }
/**
* Converts a duration string to the corresponding number of seconds.
*
* @param int|string $str The duration string to parse, in the format "HH:MM:SS".
* @return int The duration in seconds.
*/
function parseDurationToSeconds($str) { function parseDurationToSeconds($str) {
if ($str == "00:00:00") { if ($str == "00:00:00") {
return 0; return 0;
@ -582,10 +607,17 @@ function setSiteSendMessage(\PHPMailer\PHPMailer\PHPMailer &$mail) {
session_write_close(); session_write_close();
} }
function array_iunique($array) { /**
return array_intersect_key($array, array_unique(array_map("mb_strtolower", $array))); * Returns an array with the unique values from the input array, ignoring case differences.
*
* @param array $array The input array.
* @return array The array with unique values.
*/
function array_iunique(array $array): array {
return array_intersect_key($array, array_unique(array_map('mb_strtolower', $array)));
} }
function partition(array $list, $totalItens) { function partition(array $list, $totalItens) {
$listlen = count($list); $listlen = count($list);
_error_log("partition: listlen={$listlen} totalItens={$totalItens}"); _error_log("partition: listlen={$listlen} totalItens={$totalItens}");

View file

@ -24,7 +24,9 @@ set_time_limit(0);
ini_set('max_execution_time', 0); ini_set('max_execution_time', 0);
error_reporting(E_ALL); error_reporting(E_ALL);
ini_set('display_errors', '1'); ini_set('display_errors', '1');
/**
* @var mixed[] $global
*/
$global['rowCount'] = $global['limitForUnlimitedVideos'] = 999999; $global['rowCount'] = $global['limitForUnlimitedVideos'] = 999999;
$path = getVideosDir(); $path = getVideosDir();
$total = Video::getTotalVideos("", false, true, true, false, false); $total = Video::getTotalVideos("", false, true, true, false, false);

View file

@ -317,7 +317,9 @@ class CustomizeAdvanced extends PluginAbstract {
$obj->doNotDisplayPluginsTags = false; $obj->doNotDisplayPluginsTags = false;
$obj->showNotRatedLabel = false; $obj->showNotRatedLabel = false;
$obj->showShareMenuOpenByDefault = false; $obj->showShareMenuOpenByDefault = false;
/**
* @var mixed[] $global
*/
foreach ($global['social_medias'] as $key => $value) { foreach ($global['social_medias'] as $key => $value) {
eval("\$obj->showShareButton_{$key} = true;"); eval("\$obj->showShareButton_{$key} = true;");
} }

View file

@ -86,7 +86,7 @@ if ((!empty($videos)) || (!empty($obj) && $obj->SubCategorys)) {
$backURL = $_REQUEST['getBackURL']; $backURL = $_REQUEST['getBackURL'];
} }
?> ?>
<div class="col-lg-2 col-md-4 col-sm-4 col-xs-6 galleryVideo galleryVideo<?php echo $value['id']; ?> fixPadding"> <div class="col-lg-2 col-md-4 col-sm-4 col-xs-6 galleryVideo galleryVideo<?php echo $cat['id']; ?> fixPadding">
<a href="<?php echo $global['webSiteRootURL']; ?>cat/<?php echo $cat['clean_name']; ?>?getBackURL=<?php echo urlencode($backURL);?>" title="<?php $cat['name']; ?>"> <a href="<?php echo $global['webSiteRootURL']; ?>cat/<?php echo $cat['clean_name']; ?>?getBackURL=<?php echo urlencode($backURL);?>" title="<?php $cat['name']; ?>">
<div class="aspectRatio16_9"> <div class="aspectRatio16_9">
<?php <?php

View file

@ -7,8 +7,7 @@ $percent = 90;
background: -webkit-linear-gradient(bottom, rgba(<?php echo $obj->backgroundRGB; ?>,1) <?php echo $percent; ?>%, rgba(<?php echo $obj->backgroundRGB; ?>,0) 100%); background: -webkit-linear-gradient(bottom, rgba(<?php echo $obj->backgroundRGB; ?>,1) <?php echo $percent; ?>%, rgba(<?php echo $obj->backgroundRGB; ?>,0) 100%);
background: -o-linear-gradient(top, rgba(<?php echo $obj->backgroundRGB; ?>,1) <?php echo $percent; ?>%, rgba(<?php echo $obj->backgroundRGB; ?>,0) 100%); background: -o-linear-gradient(top, rgba(<?php echo $obj->backgroundRGB; ?>,1) <?php echo $percent; ?>%, rgba(<?php echo $obj->backgroundRGB; ?>,0) 100%);
background: linear-gradient(top, rgba(<?php echo $obj->backgroundRGB; ?>,1) <?php echo $percent; ?>%, rgba(<?php echo $obj->backgroundRGB; ?>,0) 100%); background: linear-gradient(top, rgba(<?php echo $obj->backgroundRGB; ?>,1) <?php echo $percent; ?>%, rgba(<?php echo $obj->backgroundRGB; ?>,0) 100%);
background: -moz-linear-gradient(to top, rgba(<?php echo $obj->backgroundRGB; ?>,1) <?php echo $percent; ?>%, rgba(<?php echo $obj->backgroundRGB; ?>,0) 100%); background: -moz-linear-gradient(to top, rgba(<?php echo $obj->backgroundRGB; ?>,1) <?php echo $percent; ?>%, rgba(<?php echo $obj->backgroundRGB; ?>,0) 100%);">
">
<?php <?php
$_REQUEST['current'] = 1; $_REQUEST['current'] = 1;
$_REQUEST['rowCount'] = $obj->maxVideos; $_REQUEST['rowCount'] = $obj->maxVideos;