Skip to content

Commit

Permalink
merge branch 'main' of github.com:Froxlor/Froxlor
Browse files Browse the repository at this point in the history
  • Loading branch information
envoyr committed Jan 25, 2023
2 parents 3b753aa + 492cd28 commit b23d5cd
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 18 deletions.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -57,7 +57,7 @@ May be found in [COPYING](COPYING)
### Tarball
https://files.froxlor.org/releases/froxlor-latest.tar.gz [MD5](https://files.froxlor.org/releases/froxlor-latest.tar.gz.md5) [SHA1](https://files.froxlor.org/releases/froxlor-latest.tar.gz.sha1)

### Debian / Ubutnu repository
### Debian / Ubuntu repository

[HowTo](https://docs.froxlor.org/latest/general/installation/apt-package.html)

Expand Down
4 changes: 2 additions & 2 deletions lib/Froxlor/Ajax/Ajax.php
Expand Up @@ -162,7 +162,7 @@ private function getNewsfeed()
$content = preg_replace("/[\r\n]+/", " ", strip_tags($item->description));
$content = substr($content, 0, 150) . "...";

$items .= UI::twig()->render($this->theme . '/user/newsfeeditem.html.twig', [
$items .= UI::twig()->render(UI::validateThemeTemplate('/user/newsfeeditem.html.twig', $this->theme), [
'link' => $link,
'title' => $title,
'date' => $date,
Expand Down Expand Up @@ -201,7 +201,7 @@ private function getUpdateCheck()
$result['last_update_check'] = $uc_data['ts'];
$result['channel'] = Settings::Get('system.update_channel');

$result_rendered = UI::twig()->render($this->theme . '/misc/version_top.html.twig', $result);
$result_rendered = UI::twig()->render(UI::validateThemeTemplate('/misc/version_top.html.twig', $this->theme), $result);
return $this->jsonResponse($result_rendered);
} catch (Exception $e) {
// don't display anything if just not allowed due to permissions
Expand Down
2 changes: 1 addition & 1 deletion lib/Froxlor/Api/Api.php
Expand Up @@ -117,6 +117,6 @@ public static function phpErrHandler($errno, $errstr, $errfile, $errline)

private function stripcslashesDeep($value)
{
return is_array($value) ? array_map([$this, 'stripcslashesDeep'], $value) : stripcslashes($value);
return is_array($value) ? array_map([$this, 'stripcslashesDeep'], $value) : (!empty($value) ? stripcslashes($value) : null);
}
}
12 changes: 6 additions & 6 deletions lib/Froxlor/Config/ConfigDisplay.php
Expand Up @@ -148,7 +148,7 @@ public static function fromConfigArr(array $confarr, string $editor, string $the
if ($lasttype != '' && $lasttype != $_action['type']) {
$commands = trim($commands);
$numbrows = count(explode("\n", $commands));
$configpage .= UI::twig()->render(self::$theme . '/settings/conf/command.html.twig', [
$configpage .= UI::twig()->render(UI::validateThemeTemplate('/settings/conf/command.html.twig', self::$theme), [
'commands' => $commands,
'numbrows' => $numbrows
]);
Expand Down Expand Up @@ -182,20 +182,20 @@ public static function fromConfigArr(array $confarr, string $editor, string $the
$commands = trim($commands_pre);
if ($commands != "") {
$numbrows = count(explode("\n", $commands));
$commands_pre = UI::twig()->render(self::$theme . '/settings/conf/command.html.twig', [
$commands_pre = UI::twig()->render(UI::validateThemeTemplate('/settings/conf/command.html.twig', self::$theme), [
'commands' => $commands,
'numbrows' => $numbrows
]);
}
$commands = trim($commands_post);
if ($commands != "") {
$numbrows = count(explode("\n", $commands));
$commands_post = UI::twig()->render(self::$theme . '/settings/conf/command.html.twig', [
$commands_post = UI::twig()->render(UI::validateThemeTemplate('/settings/conf/command.html.twig', self::$theme), [
'commands' => $commands,
'numbrows' => $numbrows
]);
}
$configpage .= UI::twig()->render(self::$theme . '/settings/conf/fileblock.html.twig', [
$configpage .= UI::twig()->render(UI::validateThemeTemplate('/settings/conf/fileblock.html.twig', self::$theme), [
'realname' => $realname,
'commands_pre' => $commands_pre,
'commands_file' => $commands_file,
Expand All @@ -210,7 +210,7 @@ public static function fromConfigArr(array $confarr, string $editor, string $the
$commands = trim($commands);
if ($commands != '') {
$numbrows = count(explode("\n", $commands));
$configpage .= UI::twig()->render(self::$theme . '/settings/conf/command.html.twig', [
$configpage .= UI::twig()->render(UI::validateThemeTemplate('/settings/conf/command.html.twig', self::$theme), [
'commands' => $commands,
'numbrows' => $numbrows
]);
Expand All @@ -233,7 +233,7 @@ private static function getFileContentContainer(string $file_content, string $re
$file_content = htmlspecialchars($file_content);
$numbrows = count(explode("\n", $file_content));
//eval("\$files=\"" . \Froxlor\UI\Template::getTemplate("configfiles/configfiles_file") . "\";");
$files = UI::twig()->render(self::$theme . '/settings/conf/file.html.twig', [
$files = UI::twig()->render(UI::validateThemeTemplate('/settings/conf/file.html.twig', self::$theme), [
'distro_editor' => self::$editor,
'realname' => $realname,
'numbrows' => $numbrows,
Expand Down
8 changes: 6 additions & 2 deletions lib/Froxlor/PhpHelper.php
Expand Up @@ -263,7 +263,9 @@ public static function gethostbynamel6(string $host, bool $try_a = true, string
try {
$answer = $resolver->query($host, 'A')->answer;
foreach ($answer as $rr) {
$ips[] = inet_ntop(inet_pton($rr->address));
if ($rr instanceof Net_DNS2_RR_A) {
$ips[] = inet_ntop(inet_pton($rr->address));
}
}
} catch (Net_DNS2_Exception $e) {
// we can't do anything here, just continue
Expand All @@ -274,7 +276,9 @@ public static function gethostbynamel6(string $host, bool $try_a = true, string
try {
$answer = $resolver->query($host, 'AAAA')->answer;
foreach ($answer as $rr) {
$ips[] = inet_ntop(inet_pton($rr->address));
if ($rr instanceof Net_DNS2_RR_AAAA) {
$ips[] = inet_ntop(inet_pton($rr->address));
}
}
} catch (Net_DNS2_Exception $e) {
// we can't do anything here, just continue
Expand Down
2 changes: 1 addition & 1 deletion lib/Froxlor/UI/Callbacks/Text.php
Expand Up @@ -92,7 +92,7 @@ public static function apikeyDetailModal(array $attributes): array
$result = $attributes['fields'];
$apikey_data = include Froxlor::getInstallDir() . '/lib/formfields/formfield.api_key.php';

$body = UI::twig()->render(UI::getTheme() . '/user/inline-form.html.twig', [
$body = UI::twig()->render(UI::validateThemeTemplate('/user/inline-form.html.twig'), [
'formaction' => $linker->getLink(['section' => 'index', 'page' => 'apikeys']),
'formdata' => $apikey_data['apikey'],
'editid' => $attributes['fields']['id']
Expand Down
18 changes: 13 additions & 5 deletions lib/Froxlor/UI/Panel/UI.php
Expand Up @@ -260,18 +260,26 @@ public static function view($name, array $context = [])
*/
public static function twigBuffer($name, array $context = [])
{
$template_file = self::getTheme() . '/' . $name;
$template_file = self::validateThemeTemplate($name);

self::$twigbuf[] = [
$template_file => $context
];
}

public static function validateThemeTemplate(string $name, string $theme = "") {
if (empty(trim($theme))) {
$theme = self::getTheme();
}
$template_file = $theme . '/' . $name;
if (!file_exists(Froxlor::getInstallDir() . '/templates/' . $template_file)) {
PhpHelper::phpErrHandler(E_USER_WARNING, "Template '" . $template_file . "' could not be found, trying fallback theme", __FILE__, __LINE__);
$template_file = self::$default_theme . '/'. $name;
if (!file_exists(Froxlor::getInstallDir() . '/templates/' . $template_file)) {
PhpHelper::phpErrHandler(E_USER_ERROR, "Unknown template '" . $template_file . "'", __FILE__, __LINE__);
}
}

self::$twigbuf[] = [
$template_file => $context
];
return $template_file;
}

public static function getTheme()
Expand Down

0 comments on commit b23d5cd

Please sign in to comment.