Jump to content
Froxlor Forum

tt33tt

Members
  • Content Count

    125
  • Joined

  • Last visited

  • Days Won

    1

tt33tt last won the day on October 19 2019

tt33tt had the most liked content!

Community Reputation

1 Neutral

About tt33tt

  • Rank
    Advanced Froxie

Recent Profile Visitors

3442 profile views
  1. Hallo alle zusammen, ich möchte in crontab Ergänzungen vornehmen: Einen Service in regelmäßigen Abstände starten, der ab und zu abstürzt. Dort steht, dass das mit Froxlor erstellt wird und ich nichts ergänzen sollte. Wie kann ich dort trotzdem etwas ergänzen? LG
  2. Davon gehe ich auch aus. Sicherlich habe ich dafür auch eine Verantwortung. Aufgetreten ist es allerdings erst seit dem letzten Update. Von daher habe ich Hoffnung 🙂
  3. Habe es testweise manuell aus table_panel_tasks gelöscht. Das hat nichts verändert. Mangels Auswirkungen werde ich das aber erstmal ignorieren. Vielleicht löst sich das mal durch ein Update.
  4. Habe in dem Thread nun geantwortet, dass es dort geholfen hat. Für diesen Thread war es leider nicht die Lösung. Die Meldung "Neuerstellung der Webserver-Konfiguration" scheint aber nicht schlimm zu sein. Obwohl die Meldung dauerhaft drin steht bis ich den Cronjob force, kann ich auf eine neu erstellte Subdomäne zugreifen über den Browser.
  5. Als ich das vor einigen Jahren übernommen habe, waren mehrere Admins eingerichtet gewesen. Vielleicht hatte das früher einmal nicht jeder eingerichtet bekommen Schöne Weihnachten 😀
  6. Gutes Stichwort! Ich kannte dieses Flag nicht. Nachdem ich das in der Datenbank auf 1 gestellt habe, klappt nun alles wieder. Danke! Die Datei habe ich an der entsprechenden Stelle manuell verändert. Der Github-Befehl ist bei mir nicht vorhanden und ich weiß ihn auch nicht richtig anzuwenden. Nach der manuellen Veränderung hat sich aber mein Fehler nicht gelöst. Lösung war bisher das mit dem Flag. <?php namespace Froxlor\Api\Commands; use Froxlor\Database\Database; /** * This file is part of the Froxlor project. * Copyright (c) 2010 the Froxlor Team (see authors). * * For the full copyright and license information, please view the COPYING * file that was distributed with this source code. You can also view the * COPYING file online at http://files.froxlor.org/misc/COPYING.txt * * @copyright (c) the authors * @author Froxlor team <team@froxlor.org> (2010-) * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt * @package API * @since 0.10.6 * */ class SysLog extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEntity { /** * list all log-entries * * @param array $sql_search * optional array with index = fieldname, and value = array with 'op' => operator (one of <, > or =), LIKE is used if left empty and 'value' => searchvalue * @param int $sql_limit * optional specify number of results to be returned * @param int $sql_offset * optional specify offset for resultset * @param array $sql_orderby * optional array with index = fieldname and value = ASC|DESC to order the resultset by one or more fields * * @access admin, customer * @throws \Exception * @return string json-encoded array count|list */ public function listing() { $result = array(); $query_fields = array(); if ($this->isAdmin() && $this->getUserDetail('customers_see_all') == '1') { $result_stmt = Database::prepare(" SELECT * FROM `" . TABLE_PANEL_LOG . "` " . $this->getSearchWhere($query_fields) . $this->getOrderBy() . $this->getLimit()); } elseif ($this->isAdmin()) { // get all admin customers $_custom_list_result = $this->apiCall('Customers.listing'); $custom_list_result = $_custom_list_result['list']; $customer_names = array(); foreach ($custom_list_result as $customer) { $customer_names[] = $customer['loginname']; } if (count($customer_names) > 0) { $result_stmt = Database::prepare(" SELECT * FROM `" . TABLE_PANEL_LOG . "` WHERE `user` = :loginname OR `user` IN (" . implode(', ', $customer_names) . ")" . $this->getSearchWhere($query_fields, true) . $this->getOrderBy() . $this->getLimit()); } else { $result_stmt = Database::prepare(" SELECT * FROM `" . TABLE_PANEL_LOG . "` WHERE `user` = :loginname" . $this->getSearchWhere($query_fields, true) . $this->getOrderBy() . $this->getLimit()); } $query_fields['loginname'] = $this->getUserDetail('loginname'); } else { // every one else just sees their logs $result_stmt = Database::prepare(" SELECT * FROM `" . TABLE_PANEL_LOG . "` WHERE `user` = :loginname AND `action` <> 99 " . $this->getSearchWhere($query_fields, true) . $this->getOrderBy() . $this->getLimit()); $query_fields['loginname'] = $this->getUserDetail('loginname'); } Database::pexecute($result_stmt, $query_fields, true, true); while ($row = $result_stmt->fetch(\PDO::FETCH_ASSOC)) { $result[] = $row; } $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_NOTICE, "[API] list log-entries"); return $this->response(200, "successfull", array( 'count' => count($result), 'list' => $result )); } /** * returns the total number of log-entries * * @access admin * @throws \Exception * @return string json-encoded array */ public function listingCount() { $params = null; if ($this->isAdmin() && $this->getUserDetail('customers_see_all') == '1') { $result_stmt = Database::prepare(" SELECT COUNT(*) as num_logs FROM `" . TABLE_PANEL_LOG . "` "); } elseif ($this->isAdmin()) { // get all admin customers $_custom_list_result = $this->apiCall('Customers.listing'); $custom_list_result = $_custom_list_result['list']; $customer_names = array(); foreach ($custom_list_result as $customer) { $customer_names[] = $customer['loginname']; } if (count($customer_names) > 0) { $result_stmt = Database::prepare(" SELECT COUNT(*) as num_logs FROM `" . TABLE_PANEL_LOG . "` WHERE `user` = :loginname OR `user` IN ('" . implode("', '", $customer_names) . "') "); } else { $result_stmt = Database::prepare(" SELECT COUNT(*) as num_logs FROM `" . TABLE_PANEL_LOG . "` WHERE `user` = :loginname "); } $params = [ 'loginname' => $this->getUserDetail('loginname') ]; } else { // every one else just sees their logs $result_stmt = Database::prepare(" SELECT COUNT(*) as num_logs FROM `" . TABLE_PANEL_LOG . "` WHERE `user` = :loginname AND `action` <> 99 "); $params = [ 'loginname' => $this->getUserDetail('loginname') ]; } $result = Database::pexecute_first($result_stmt, $params, true, true); if ($result) { return $this->response(200, "successfull", $result['num_logs']); } } /** * You cannot get log entries */ public function get() { throw new \Exception('You cannot get log entries', 303); } /** * You cannot add log entries */ public function add() { throw new \Exception('You cannot add log entries', 303); } /** * You cannot update log entries */ public function update() { throw new \Exception('You cannot update log entries', 303); } /** * delete log entries * * @param int $min_to_keep * optional minutes to keep, default is 10 * * @access admin * @throws \Exception * @return string json-encoded array */ public function delete() { if ($this->isAdmin()) { $min_to_keep = self::getParam('min_to_keep', true, 10); if ($min_to_keep < 0) { $min_to_keep = 0; } $truncatedate = time() - (60 * $min_to_keep); $params = array(); if ($this->getUserDetail('customers_see_all') == '1') { $result_stmt = Database::prepare(" DELETE FROM `" . TABLE_PANEL_LOG . "` WHERE `date` < :trunc "); } else { // get all admin customers $_custom_list_result = $this->apiCall('Customers.listing'); $custom_list_result = $_custom_list_result['list']; $customer_names = array(); foreach ($custom_list_result as $customer) { $customer_names[] = $customer['loginname']; } if (count($customer_names) > 0) { $result_stmt = Database::prepare(" DELETE FROM `" . TABLE_PANEL_LOG . "` WHERE `date` < :trunc AND `user` = :loginname OR `user` IN (" . implode(', ', $customer_names) . ") "); } else { $result_stmt = Database::prepare(" SELECT COUNT(*) as num_logs FROM `" . TABLE_PANEL_LOG . "` DELETE FROM `" . TABLE_PANEL_LOG . "` WHERE `date` < :trunc AND `user` = :loginname "); } $params = [ 'loginname' => $this->getUserDetail('loginname') ]; } $params['trunc'] = $truncatedate; Database::pexecute($result_stmt, $params, true, true); $this->logger()->logAction($this->isAdmin() ? \Froxlor\FroxlorLogger::ADM_ACTION : \Froxlor\FroxlorLogger::USR_ACTION, LOG_WARNING, "[API] truncated the froxlor syslog"); return $this->response(200, "successfull", true); } throw new \Exception("Not allowed to execute given command.", 403); } }
  7. Das sind zwei unabhängige Themen. Daher habe ich einen neuen Thread eröffnet 🙂 Zur Klärung: Mit alle anderen Meldungen gehen weg meine ich, dass die Erstellung der DNS-Einträge etc. als Cronjobs abgearbeitet werden. Nur die Webserver-Config bleibt als Cronjob hängen. Im Log (manuell nachgeschaut) habe ich noch Fehler gefunden zu Datenbanken, die noch leer sind. Sind die Fehler schlimm? Gibt es einen Zusammenhang? Warum tauchen leere Datenbanken als Fehler auf? (353444, 40, 4, 1577055671, 'system', 'Cannot get usage for database test1.'), (353445, 40, 4, 1577055672, 'system', 'Cannot get usage for database test2.'), (353446, 40, 4, 1577055672, 'system', 'Cannot get usage for database test3.'), (353447, 40, 4, 1577055679, 'system', 'Cannot get usage for database test4.'),
  8. Ich habe dir alles geschickt. Ich vermute, dass es um diese Tabelle geht: INSERT INTO `panel_syslog` (`logid`, `action`, `type`, `date`, `user`, `text`) VALUES Mich irritiert bei dem Fehler, dass er sagt, dass die Column als "rainer" benannt ist. Das klingt als ob das der Spaltenname wäre. Der Spaltenname ist aber "user". Vielleicht lese ich die Meldung ja falsch
  9. Alles ist wie vorher, meine ich damit 🙂 Vermutlich ist es auch ein anderes Szenario, weil "rainer" ist ein Kunde, aber nicht der Admin-Benutzer und der Admin-Benutzer darf alles, weil er der einzige Admin-Benutzer ist
  10. Ich habe auf die neueste Version upgedatet. Nachdem ich klicke auf "Configs neu schreiben" klicke, bleibt die Meldung "Neuerstellung der Webserver-Konfiguration" dauerhaft. Erst, wenn ich den Frolxor-Cronjob force, geht es weg. Alle anderen Meldungen gehen weg. SQLSTATE[42S22]: Column not found: 1054 Unknown column 'rainer' in 'where clause' Der Benutzer rainer ist als Kunde angelegt und auch im Server-Berechtigungssystem auf Dateisystemebene hinterlegt für die Ordner des Benutzers. Webserver: Apache/2.4.29 (Ubuntu) mod_fcgid/2.3.9 OpenSSL/1.1.1 PHP-Version: 7.2.24-0ubuntu0.18.04.1 MySQL-Server-Version: 5.7.28-0ubuntu0.18.04.4 Webserver-Interface: CGI-FCGI Speicherauslastung: MemTotal: 4039476 kB MemFree: 1436424 kB MemAvailable: 2697988 kB System-Auslastung: 1.10 / 1.02 / 0.61 Kernel: 4.15.0-72-generic (x86_64) Installierte Version: 0.10.10 (DB: 201912100)
  11. Danke! Ich habe nur einen Admin-Benutzer und er kann alles. Es hat noch nicht geklappt. Bei mir steht Entity statt Ent class SysLog extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEntity Und ich habe das hier ersetzt: WHERE `user` = :loginname OR `user` IN ('" . implode("', '", $customer_names) . "') Apache habe ich neugestartet.
  12. Danke dir! Soll ich irgendwo den Debug-Level erhöhen?
  13. Ich öffne: https://domain/froxlor/admin_logger.php?page=log im Log auf dem Server steht gleichzeitig: tail -f /var/log/apache2/error.log [Fri Dec 20 21:10:23.314251 2019] [mpm_prefork:notice] [pid 15241] AH00163: Apache/2.4.29 (Ubuntu) mod_fcgid/2.3.9 OpenSSL/1.1.1 configured -- resuming normal operations [Fri Dec 20 21:10:23.314279 2019] [core:notice] [pid 15241] AH00094: Command line: '/usr/sbin/apache2' froxlor[27137]: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'rainer' in 'where clause' froxlor[27137]: --- DEBUG: #0 /var/www/froxlor/lib/Froxlor/Database/Database.php(83): PDOStatement->execute(Array) #1 /var/www/froxlor/lib/Froxlor/Database/Database.php(104): Froxlor\Database\Database::pexecute(Object(PDOStatement), Array, true, true) #2 /var/www/froxlor/lib/Froxlor/Api/Commands/SysLog.php(130): Froxlor\Database\Database::pexecute_first(Object(PDOStatement), Array, true, true) #3 /var/www/froxlor/admin_logger.php(34): Froxlor\Api\Commands\SysLog->listingCount() #4 {main} froxlor[27137]: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'rainer' in 'where clause' froxlor[27137]: --- DEBUG: #0 /var/www/froxlor/lib/Froxlor/Database/Database.php(83): PDOStatement->execute(Array) #1 /var/www/froxlor/lib/Froxlor/Database/Database.php(104): Froxlor\Database\Database::pexecute(Object(PDOStatement), Array, true, true) #2 /var/www/froxlor/lib/Froxlor/Api/Commands/SysLog.php(130): Froxlor\Database\Database::pexecute_first(Object(PDOStatement), Array, true, true) #3 /var/www/froxlor/admin_logger.php(34): Froxlor\Api\Commands\SysLog->listingCount() #4 {main} froxlor[27137]: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'rainer' in 'where clause' froxlor[27137]: --- DEBUG: #0 /var/www/froxlor/lib/Froxlor/Database/Database.php(83): PDOStatement->execute(Array) #1 /var/www/froxlor/lib/Froxlor/Database/Database.php(104): Froxlor\Database\Database::pexecute(Object(PDOStatement), Array, true, true) #2 /var/www/froxlor/lib/Froxlor/Api/Commands/SysLog.php(130): Froxlor\Database\Database::pexecute_first(Object(PDOStatement), Array, true, true) #3 /var/www/froxlor/admin_logger.php(34): Froxlor\Api\Commands\SysLog->listingCount() #4 {main} froxlor[27137]: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'rainer' in 'where clause' froxlor[27137]: --- DEBUG: #0 /var/www/froxlor/lib/Froxlor/Database/Database.php(83): PDOStatement->execute(Array) #1 /var/www/froxlor/lib/Froxlor/Database/Database.php(104): Froxlor\Database\Database::pexecute(Object(PDOStatement), Array, true, true) #2 /var/www/froxlor/lib/Froxlor/Api/Commands/SysLog.php(130): Froxlor\Database\Database::pexecute_first(Object(PDOStatement), Array, true, true) #3 /var/www/froxlor/admin_logger.php(34): Froxlor\Api\Commands\SysLog->listingCount() #4 {main} parallel zeigt tail -f /var/kunden/logs/Froxlor/froxlor.log [2019-12-20 21:16:10] froxlor.NOTICE: [API] list customers {"source":"admin","action":"30","user":"admin"} [] Möglicher Grund: Normalerweise erhalten alle Kundenbenutzer im Datei-Berechtigungssystem von Ubuntu eine Nummer, die irgendwie von Froxlor kommt. Ich habe eingestellt, dass das Berechtigungssystem diese UID automatisch auflöst in den Benutzernamen, in dem es den Benutzernamen direkt aus der SQL-Datenbank erhält. Ich weiß leider nicht mehr wo ich das eingestellt habe. Kann das damit zusammenhängen?
  14. Ich habe auf die neueste Version upgedatet und erhalte beim öffnen des Logs im Webinterface einen Fehler: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'rainer' in 'where clause' Der Benutzer rainer ist als Kunde angelegt und auch im Server-Berechtigungssystem auf Dateisystemebene hinterlegt für die Ordner des Benutzers. Webserver: Apache/2.4.29 (Ubuntu) mod_fcgid/2.3.9 OpenSSL/1.1.1 PHP-Version: 7.2.24-0ubuntu0.18.04.1 MySQL-Server-Version: 5.7.28-0ubuntu0.18.04.4 Webserver-Interface: CGI-FCGI Speicherauslastung: MemTotal: 4039476 kB MemFree: 1436424 kB MemAvailable: 2697988 kB System-Auslastung: 1.10 / 1.02 / 0.61 Kernel: 4.15.0-72-generic (x86_64) Installierte Version: 0.10.10 (DB: 201912100)
×
×
  • Create New...