Init Repo

This commit is contained in:
Gregor Schulte
2021-06-15 11:08:34 +02:00
parent d0b72a118d
commit b303dd00d6
330 changed files with 93268 additions and 0 deletions

View 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');
?>

View 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&uuml;r das Feedback m&uuml;ssen noch einige Daten gesammelt werden.';
$jsTranslations[] = 'Diagnosedaten wurden gesammelt. Beim Klick auf den folgenden Button wird ein neues Fenster ge&ouml;ffnet.';
$jsTranslations[] = 'Feedback &ouml;ffnen';
$tpl->assign('jsTranslations', getTranslatedArrayForJs($jsTranslations));
$tpl->assign('updatePicontrol', isset($picontrolUpdate) ? $picontrolUpdate : '');
$tpl->assign('referer', $referer);
$tpl->assign('langUrl', (isset($_GET['lang']) && $_GET['lang'] != '') ? '&amp;lang='.$_GET['lang'] : '');
$tpl->draw('html_header');
?>

View File

@@ -0,0 +1,9 @@
<?php
if (!defined('PICONTROL')) exit();
$tpl->setHeaderTitle(_t('Vorwort'));
$tpl->assign('langUrl', (isset($_GET['lang']) && $_GET['lang'] != '') ? '&amp;lang='.$_GET['lang'] : '');
$tpl->draw('install');
?>

View 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 &uuml;berpr&uuml;fe die eingegebenen Daten. Schl&auml;gt ein erneuter Versuch mit korrekten Daten fehl, wende dich bitte unten unter "Feedback" an mich, ich werde dir so schnell wie m&ouml;glich weiterhelfen.'));
}
else
$tpl->msg('error', _t('Fehler'), _t('Ung&uuml;ltiger Port. Der Port muss zwischen 0 und 65535 liegen.'));
}
else
$tpl->msg('error', _t('Fehler'), _t('Bitte alle Felder ausf&uuml;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 &uuml;berpr&uuml;fe die eingegebenen Daten. Schl&auml;gt ein erneuter Versuch mit korrekten Daten fehl, wende dich bitte unten unter "Feedback" an mich, ich werde dir so schnell wie m&ouml;glich weiterhelfen.'));
}
else
$tpl->msg('error', _t('Fehler'), _t('Ung&uuml;ltiger Port. Der Port muss zwischen 0 und 65535 liegen.'));
}
else
$tpl->msg('error', _t('Fehler'), _t('Bitte alle Felder ausf&uuml;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');
}
?>

View 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&ouml;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');
?>

View 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&auml;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&auml;hle nachfolgend aus den vorhandenen Sprachen, deine bevorzugte Sprache aus. Die Sprache kann nachtr&auml;glich ge&auml;ndert werden.', $languages),
_t2('Sprachauswahl', $languages),
_t2('N&auml;chster Schritt', $languages),
_t2('Konnte die gew&auml;hlte Sprache nicht finden! Bitte versuche es noch einmal.', $languages),
_t2('&Uuml;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');
?>

View File

@@ -0,0 +1,93 @@
<?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' => false);
$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, '5.5.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 php5-cli | grep Status: ')) != '' || trim(exec('dpkg -s php7.0-cli | grep Status: ')) || trim(exec('dpkg -s php7.3-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 7' || $otherDistribution['version'] == 'Raspbian GNU/Linux 8' || $otherDistribution['version'] == 'Raspbian GNU/Linux 9' || $otherDistribution['version'] == 'Raspbian GNU/Linux 10')
$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)
$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'] != '') ? '&amp;lang='.$_GET['lang'] : '');
$tpl->assign('configHelp', $config['url']['help']);
$tpl->draw('install_requirement');
?>

View File

@@ -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&amp;i=1'.getURLLangParam());
$tpl->draw('install_troubleshooting');
?>

View 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&auml;hrend der Dateioperation! Fehlercode: %s', $return));
}
else
$tpl->msg('error', _t('Fehler'), _t('Die angegebenen Passw&ouml;rter stimmen nicht &uuml;berein!'));
}
else
$tpl->msg('error', _t('Fehler'), _t('Leider ist das Passwort ung&uuml;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&uuml;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&uuml;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&uuml;r das Pi Control erstellt. Du kannst diesen <a href="%s">Schritt &uuml;berspringen</a> oder einfach den aktuellen Benutzer &uuml;berschreiben, indem du hier einen neuen Benutzer erstellst.', '?s=install_cron'), false);
$tpl->draw('install_user');
}
?>