Init
This commit is contained in:
14
backend/install/resources/content/html_footer.php
Normal file
14
backend/install/resources/content/html_footer.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
if (!defined('PICONTROL')) exit();
|
||||
|
||||
$tpl = new PiTpl;
|
||||
|
||||
global $globalLanguage;
|
||||
|
||||
$tpl->assign('errorHandler', urlencode(base64_encode(json_encode($tplErrorHandler))));
|
||||
$tpl->assign('version', $tplConfig['version']['version']);
|
||||
$tpl->assign('helpLink', $tplConfig['url']['help'].getURLLangParam(false, true, true));
|
||||
$tpl->assign('language', $globalLanguage);
|
||||
|
||||
$tpl->draw('html_footer');
|
||||
?>
|
||||
32
backend/install/resources/content/html_header.php
Normal file
32
backend/install/resources/content/html_header.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
if (!defined('PICONTROL')) exit();
|
||||
|
||||
$tpl = new PiTpl;
|
||||
$tpl->assign('title', (isset($data['title']) && $data['title'] != '') ? $data['title'] : 'Pi Control');
|
||||
|
||||
if (isset($_GET['s']) && $_GET['s'] == 'install' || !isset($_GET['s']))
|
||||
{
|
||||
if (function_exists('curl_init') === true)
|
||||
$picontrolUpdate = checkUpdate();
|
||||
}
|
||||
|
||||
$referer = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
|
||||
|
||||
if ($referer != '')
|
||||
$referer = '&referer='.urlencode($referer);
|
||||
|
||||
// Uebersetzung
|
||||
$jsTranslations = $data['jsTranslations'];
|
||||
$jsTranslations[] = 'Leider ist ein unerwarteter Fehler aufgetreten. Bitte schließe das Feedback-Fenster und versuche es erneut. Andernfalls, schreibe mir unter <a href="%%s" target="_blank">Kontakt</a>.';
|
||||
$jsTranslations[] = 'Schließen';
|
||||
$jsTranslations[] = 'Für das Feedback müssen noch einige Daten gesammelt werden.';
|
||||
$jsTranslations[] = 'Diagnosedaten wurden gesammelt. Beim Klick auf den folgenden Button wird ein neues Fenster geöffnet.';
|
||||
$jsTranslations[] = 'Feedback öffnen';
|
||||
$tpl->assign('jsTranslations', getTranslatedArrayForJs($jsTranslations));
|
||||
|
||||
$tpl->assign('updatePicontrol', isset($picontrolUpdate) ? $picontrolUpdate : '');
|
||||
$tpl->assign('referer', $referer);
|
||||
$tpl->assign('langUrl', (isset($_GET['lang']) && $_GET['lang'] != '') ? '&lang='.$_GET['lang'] : '');
|
||||
|
||||
$tpl->draw('html_header');
|
||||
?>
|
||||
9
backend/install/resources/content/install.php
Normal file
9
backend/install/resources/content/install.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
if (!defined('PICONTROL')) exit();
|
||||
|
||||
$tpl->setHeaderTitle(_t('Vorwort'));
|
||||
|
||||
$tpl->assign('langUrl', (isset($_GET['lang']) && $_GET['lang'] != '') ? '&lang='.$_GET['lang'] : '');
|
||||
|
||||
$tpl->draw('install');
|
||||
?>
|
||||
63
backend/install/resources/content/install_cron.php
Normal file
63
backend/install/resources/content/install_cron.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
if (!defined('PICONTROL')) exit();
|
||||
|
||||
$tpl->setHeaderTitle(_t('Cron'));
|
||||
|
||||
$showInfo = false;
|
||||
|
||||
if (isset($_POST['submit'], $_POST['ssh-login']) && $_POST['submit'] != '' && in_array($_POST['ssh-login'], array('password', 'publickey')))
|
||||
{
|
||||
$pType = $_POST['ssh-login'];
|
||||
|
||||
if ($pType == 'password')
|
||||
{
|
||||
if (isset($_POST['port'], $_POST['username'], $_POST['password']) && ($pPort = intval(trim($_POST['port']))) != '' && ($pUsername = trim($_POST['username'])) != '' && ($pPassword = $_POST['password']) != '')
|
||||
{
|
||||
if (is_numeric($pPort) && $pPort >= 0 && $pPort <= 65535)
|
||||
{
|
||||
if (setCronToCrontab($pType, $pPort, $pUsername, $pPassword, NULL) === true)
|
||||
$showInfo = true;
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Verbindung zum Raspberry Pi war nicht erfolgreich!<br /><br />Bitte überprüfe die eingegebenen Daten. Schlägt ein erneuter Versuch mit korrekten Daten fehl, wende dich bitte unten unter "Feedback" an mich, ich werde dir so schnell wie möglich weiterhelfen.'));
|
||||
}
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Ungültiger Port. Der Port muss zwischen 0 und 65535 liegen.'));
|
||||
}
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Bitte alle Felder ausfüllen!'));
|
||||
}
|
||||
elseif ($pType == 'publickey')
|
||||
{
|
||||
if (isset($_POST['port_'], $_POST['username_'], $_POST['privatekey_']) && ($pPort = intval(trim($_POST['port_']))) != '' && ($pUsername = trim($_POST['username_'])) != '' && ($pPrivateKey = $_POST['privatekey_']) != '')
|
||||
{
|
||||
$pPassword = '';
|
||||
|
||||
if (isset($_POST['password_']) && ($pPassword = $_POST['password_']) != '')
|
||||
{
|
||||
}
|
||||
|
||||
if (is_numeric($pPort) && $pPort >= 0 && $pPort <= 65535)
|
||||
{
|
||||
if (setCronToCrontab($pType, $pPort, $pUsername, $pPassword, $pPrivateKey) === true)
|
||||
$showInfo = true;
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Verbindung zum Raspberry Pi war nicht erfolgreich!<br /><br />Bitte überprüfe die eingegebenen Daten. Schlägt ein erneuter Versuch mit korrekten Daten fehl, wende dich bitte unten unter "Feedback" an mich, ich werde dir so schnell wie möglich weiterhelfen.'));
|
||||
}
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Ungültiger Port. Der Port muss zwischen 0 und 65535 liegen.'));
|
||||
}
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Bitte alle Felder ausfüllen!'));
|
||||
}
|
||||
}
|
||||
|
||||
if ($showInfo === true)
|
||||
$tpl->draw('install_cron_info');
|
||||
else
|
||||
{
|
||||
$tpl->assign('port', (isset($_POST['port'])) ? $_POST['port'] : 22);
|
||||
$tpl->assign('username', (isset($_POST['username'])) ? $_POST['username'] : '');
|
||||
|
||||
$tpl->draw('install_cron');
|
||||
}
|
||||
?>
|
||||
42
backend/install/resources/content/install_finish.php
Normal file
42
backend/install/resources/content/install_finish.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
if (!defined('PICONTROL')) exit();
|
||||
|
||||
$tpl->setHeaderTitle(_t('Abschließen'));
|
||||
|
||||
if (isset($_POST['submit']) && $_POST['submit'] != '')
|
||||
{
|
||||
$dataLanguage = json_decode(readFromFile('language'), true);
|
||||
$dataUser = json_decode(readFromFile('user'), true);
|
||||
|
||||
if (isset($dataLanguage['language']) && $dataLanguage['language'] != '')
|
||||
setConfig('init:language', $dataLanguage['language'], PICONTROL_PATH.'resources/config/');
|
||||
else
|
||||
setConfig('init:language', $globalLanguage, PICONTROL_PATH.'resources/config/');
|
||||
|
||||
if (isset($dataUser['username'], $dataUser['password']) && $dataUser['username'] != '' && $dataUser['password'] != '')
|
||||
{
|
||||
if (getConfig('user:user_'.strtolower($dataUser['username']).'.username', '', PICONTROL_PATH.'resources/config/') == '')
|
||||
{
|
||||
setConfig('user:user_'.strtolower($dataUser['username']).'.username', $dataUser['username'], PICONTROL_PATH.'resources/config/');
|
||||
setConfig('user:user_'.strtolower($dataUser['username']).'.created', time(), PICONTROL_PATH.'resources/config/');
|
||||
setConfig('user:user_'.strtolower($dataUser['username']).'.password', $dataUser['password'], PICONTROL_PATH.'resources/config/');
|
||||
setConfig('user:user_'.strtolower($dataUser['username']).'.last_login', 0, PICONTROL_PATH.'resources/config/');
|
||||
|
||||
unlink(CACHE_PATH.'user.cache.php');
|
||||
|
||||
if (rename(PICONTROL_PATH.'install', PICONTROL_PATH.'install_'.generateUniqId(32, false)) !== false)
|
||||
$tpl->redirect('../');
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Leider konnte die Installation nicht erfolgreich abgeschlossen werden! Bitte lösche den Ordner "%s" oder benenne ihn um. Wenn das erledigt ist, kommst du <a href="%s">hier zum Pi Control</a>.', PICONTROL_PATH.'install', '../'));
|
||||
}
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Leider ist ein Fehler beim Auslesen des Pi Control Benutzers aufgetreten. Bitte wiederhole die Installation.'));
|
||||
}
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Leider ist ein Fehler beim Auslesen des Pi Control Benutzers aufgetreten! Bitte wiederhole die Installation.'));
|
||||
}
|
||||
|
||||
$tpl->assign('configUpdateNotification', $config['url']['updateNotification'].getURLLangParam());
|
||||
|
||||
$tpl->draw('install_finish');
|
||||
?>
|
||||
44
backend/install/resources/content/install_language.php
Normal file
44
backend/install/resources/content/install_language.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
if (!defined('PICONTROL')) exit();
|
||||
|
||||
$tpl->setHeaderTitle(_t('Sprachauswahl'));
|
||||
|
||||
$dataLanguage = json_decode(readFromFile('language'), true);
|
||||
|
||||
if (isset($_POST['submit']) && $_POST['submit'] != '')
|
||||
{
|
||||
if (isset($_POST['language']) && in_array($_POST['language'], array('de', 'en')))
|
||||
{
|
||||
$return = writeToFile('language', json_encode(array('language' => $_POST['language'])));
|
||||
setCookie('_pi-control_install_language', $_POST['language']);
|
||||
$tpl->redirect('?s=install_requirement&lang='.$_POST['language']);
|
||||
}
|
||||
|
||||
$tpl->msg('error', _t('Fehler'), _t('Konnte die gewählte Sprache nicht finden! Bitte versuche es noch einmal.'));
|
||||
}
|
||||
|
||||
$languages = array('de', 'en');
|
||||
$languageArray = array(
|
||||
_t2('1. Schritt', $languages),
|
||||
_t2('Fortschritt', $languages),
|
||||
_t2('Bitte wähle nachfolgend aus den vorhandenen Sprachen, deine bevorzugte Sprache aus. Die Sprache kann nachträglich geändert werden.', $languages),
|
||||
_t2('Sprachauswahl', $languages),
|
||||
_t2('Nächster Schritt', $languages),
|
||||
_t2('Konnte die gewählte Sprache nicht finden! Bitte versuche es noch einmal.', $languages),
|
||||
_t2('ÜBER MICH', $languages),
|
||||
_t2('VERSION', $languages),
|
||||
_t2('LIZENZ', $languages),
|
||||
_t2('Feedback', $languages),
|
||||
_t2('Hilfe', $languages),
|
||||
_t2('App im Play Store', $languages),
|
||||
_t2('Mein Blog', $languages),
|
||||
_t2('Spenden', $languages),
|
||||
_t2('Raspberry Pi ist ein Markenzeichen<br />der %s.', $languages),
|
||||
_t2('Mit %s entwickelt von %s.', $languages)
|
||||
);
|
||||
|
||||
$tpl->assign('languageArray', json_encode($languageArray));
|
||||
$tpl->assign('language', (isset($dataLanguage['language'])) ? $dataLanguage['language'] : $globalLanguage);
|
||||
|
||||
$tpl->draw('install_language');
|
||||
?>
|
||||
94
backend/install/resources/content/install_requirement.php
Normal file
94
backend/install/resources/content/install_requirement.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
if (!defined('PICONTROL')) exit();
|
||||
|
||||
(include_once LIBRARY_PATH.'main/rpi.function.php') or die('Error: 0x0010');
|
||||
(include_once LIBRARY_PATH.'install/install.function.php') or die('Error: 0x0011');
|
||||
$tpl->setHeaderTitle(_t('Anforderungen'));
|
||||
|
||||
// PHP
|
||||
$phpVersion = array('version' => PHP_VERSION, 'status' => false);
|
||||
$phpSSH = array('status' => true);
|
||||
$phpMcrypt = array('status' => false);
|
||||
$phpCLI = array('status' => false);
|
||||
$phpCURL = array('status' => false);
|
||||
$phpZipArchive = array('status' => false);
|
||||
$phpAllowUrlFopen = array('status' => false);
|
||||
$filesFoldersExist = array('count' => 0, 'status' => true);
|
||||
$filesFoldersPermission = array('count' => 0, 'status' => true);
|
||||
$otherDistribution = array('version' => rpi_getDistribution(), 'status' => false);
|
||||
$otherCookie = array('status' => false);
|
||||
$error = false;
|
||||
|
||||
if (version_compare(PHP_VERSION, '7.0.0') >= 0)
|
||||
$phpVersion['status'] = true;
|
||||
|
||||
if (extension_loaded('ssh2'))
|
||||
$phpSSH['status'] = true;
|
||||
|
||||
#if (function_exists('mcrypt_encrypt') !== false)
|
||||
# $phpMcrypt['status'] = true;
|
||||
|
||||
if (trim(exec('dpkg -s php7.3-cli | grep Status: ')) != '' || trim(exec('dpkg -s php7.4-cli | grep Status: ')) != '' || trim(exec('dpkg -s php8.0-cli | grep Status: ')) != '' || trim(exec('dpkg -s php8.1-cli | grep Status: ')) != '' || trim(exec('dpkg -s php8.2-cli | grep Status: ')) != '')
|
||||
$phpCLI['status'] = true;
|
||||
|
||||
if (function_exists('curl_init') !== false)
|
||||
$phpCURL['status'] = true;
|
||||
|
||||
if (class_exists('ZipArchive') !== false)
|
||||
$phpZipArchive['status'] = true;
|
||||
|
||||
if (ini_get('allow_url_fopen') !== false)
|
||||
$phpAllowUrlFopen['status'] = true;
|
||||
|
||||
// Dateien und Ordner
|
||||
$filesFolders = fileFolderPermission();
|
||||
|
||||
foreach ($filesFolders as $file => $info)
|
||||
{
|
||||
if ($info['error'] === true)
|
||||
{
|
||||
if ($info['existsBool'] === false || $info['filesizeBool'] === false)
|
||||
{
|
||||
$filesFoldersExist['count'] += 1;
|
||||
$filesFoldersExist['status'] = false;
|
||||
}
|
||||
|
||||
if ($info['permissionBool'] === false || $info['userGroupBool'] === false)
|
||||
{
|
||||
$filesFoldersPermission['count'] += 1;
|
||||
$filesFoldersPermission['status'] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sonstiges
|
||||
if ($otherDistribution['version'] == 'Raspbian GNU/Linux 10' || $otherDistribution['version'] == 'Raspbian GNU/Linux 11' || $otherDistribution['version'] == 'Debian GNU/Linux 11')
|
||||
$otherDistribution['status'] = true;
|
||||
|
||||
if (isset($_COOKIE['_pi-control_install_language']) && $_COOKIE['_pi-control_install_language'] != '')
|
||||
$otherCookie['status'] = true;
|
||||
else
|
||||
setCookie('_pi-control_install_language', $globalLanguage);
|
||||
|
||||
// Button
|
||||
//if ($phpVersion['status'] === false || $phpSSH['status'] === false || $phpMcrypt['status'] === false || $phpCLI['status'] === false || $phpCURL['status'] === false || $phpZipArchive['status'] === false || $phpAllowUrlFopen['status'] === false || $filesFoldersExist['status'] === false || $filesFoldersPermission['status'] === false || $otherDistribution['status'] === false || $otherCookie['status'] === false)
|
||||
if ($phpVersion['status'] === false || $phpSSH['status'] === false || $phpCLI['status'] === false || $phpCURL['status'] === false || $phpZipArchive['status'] === false || $phpAllowUrlFopen['status'] === false || $filesFoldersExist['status'] === false || $filesFoldersPermission['status'] === false || $otherDistribution['status'] === false || $otherCookie['status'] === false)
|
||||
$error = true;
|
||||
|
||||
$tpl->assign('phpVersion', $phpVersion);
|
||||
$tpl->assign('phpSSH', $phpSSH);
|
||||
$tpl->assign('phpMcrypt', $phpMcrypt);
|
||||
$tpl->assign('phpCLI', $phpCLI);
|
||||
$tpl->assign('phpCURL', $phpCURL);
|
||||
$tpl->assign('phpZipArchive', $phpZipArchive);
|
||||
$tpl->assign('phpAllowUrlFopen', $phpAllowUrlFopen);
|
||||
$tpl->assign('filesFoldersExist', $filesFoldersExist);
|
||||
$tpl->assign('filesFoldersPermission', $filesFoldersPermission);
|
||||
$tpl->assign('otherDistribution', $otherDistribution);
|
||||
$tpl->assign('otherCookie', $otherCookie);
|
||||
$tpl->assign('error', $error);
|
||||
$tpl->assign('langUrl', (isset($_GET['lang']) && $_GET['lang'] != '') ? '&lang='.$_GET['lang'] : '');
|
||||
$tpl->assign('configHelp', $config['url']['help']);
|
||||
|
||||
$tpl->draw('install_requirement');
|
||||
?>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
if (!defined('PICONTROL')) exit();
|
||||
|
||||
(include_once LIBRARY_PATH.'install/install.function.php') or die('Error: 0x0010');
|
||||
$tpl->setHeaderTitle(_t('Problembehandlung'));
|
||||
|
||||
$filesFolders = fileFolderPermission();
|
||||
$filesFoldersError = false;
|
||||
|
||||
foreach ($filesFolders as $file => $info)
|
||||
{
|
||||
if ($info['error'] === true)
|
||||
{
|
||||
$filesFoldersError = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$tpl->assign('filesFolders', $filesFolders);
|
||||
$tpl->assign('filesFoldersError', $filesFoldersError);
|
||||
$tpl->assign('configHelp', $config['url']['help'].'?s=view&i=1'.getURLLangParam());
|
||||
|
||||
$tpl->draw('install_troubleshooting');
|
||||
?>
|
||||
47
backend/install/resources/content/install_user.php
Normal file
47
backend/install/resources/content/install_user.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
if (!defined('PICONTROL')) exit();
|
||||
|
||||
$tpl->setHeaderTitle(_t('Benutzer'));
|
||||
|
||||
$showInfo = false;
|
||||
$dataUser = json_decode(readFromFile('user'), true);
|
||||
|
||||
if (isset($_POST['submit']) && $_POST['submit'] != '')
|
||||
{
|
||||
if (isset($_POST['username'], $_POST['password'], $_POST['password2']) && ($pUsername = trim($_POST['username'])) != '' && ($pPassword = $_POST['password']) != '' && ($pPassword2 = $_POST['password2']) != '')
|
||||
{
|
||||
if (preg_match('/^[a-z][a-z0-9\-_]{1,31}$/i', $pUsername) === 1)
|
||||
{
|
||||
$lowerUsername = strtolower($pUsername);
|
||||
if (preg_match('/^[a-z0-9_\-\+\*\/\#.\!\?@\(\)\[\]\{\}\<\>\=\$%&,\|\:~§;]{4,64}$/i', $pPassword) === 1)
|
||||
{
|
||||
if ($pPassword === $pPassword2)
|
||||
{
|
||||
if (($return = writeToFile('user', json_encode(array('username' => $pUsername, 'password' => password_hash($pPassword, PASSWORD_BCRYPT))))) === 0)
|
||||
$showInfo = true;
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Es gab ein Fehler während der Dateioperation! Fehlercode: %s', $return));
|
||||
}
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Die angegebenen Passwörter stimmen nicht überein!'));
|
||||
}
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Leider ist das Passwort ungültig! Das Passwort muss aus 4 bis 64 Zeichen bestehen und darf nur folgende Zeichen beinhalten: A-Z 0-9 - _ + * / # . ! ? @ ( ) [ ] { } < > = $ %% & , | : ~ § ;'));
|
||||
}
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Leider ist der Benutzername ungültig! Der Benutzername muss aus 2 bis 32 Zeichen bestehen. Das erste Zeichen muss ein Buchstabe sein und es sind nur folgende Zeichen erlaubt: A-Z 0-9 - _'));
|
||||
}
|
||||
else
|
||||
$tpl->msg('error', _t('Fehler'), _t('Bitte alle Felder ausfüllen!'));
|
||||
}
|
||||
|
||||
if ($showInfo === true)
|
||||
$tpl->draw('install_user_info');
|
||||
else
|
||||
{
|
||||
if (isset($dataUser['username'], $dataUser['password']) && $dataUser['username'] != '' && $dataUser['password'] != '' && !isset($_POST['submit']))
|
||||
$tpl->msg('info', _t('Benutzer bereits erstellt'), _t('Es wurde bereits ein Benutzer für das Pi Control erstellt. Du kannst diesen <a href="%s">Schritt überspringen</a> oder einfach den aktuellen Benutzer überschreiben, indem du hier einen neuen Benutzer erstellst.', '?s=install_cron'), false);
|
||||
|
||||
$tpl->draw('install_user');
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user