*
* This file is part of Easy-WI.
*
* Easy-WI is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Easy-WI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Easy-WI. If not, see .
*
* Diese Datei ist Teil von Easy-WI.
*
* Easy-WI ist Freie Software: Sie koennen es unter den Bedingungen
* der GNU General Public License, wie von der Free Software Foundation,
* Version 3 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren
* veroeffentlichten Version, weiterverbreiten und/oder modifizieren.
*
* Easy-WI wird in der Hoffnung, dass es nuetzlich sein wird, aber
* OHNE JEDE GEWAEHELEISTUNG, bereitgestellt; sogar ohne die implizite
* Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK.
* Siehe die GNU General Public License fuer weitere Details.
*
* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
* Programm erhalten haben. Wenn nicht, siehe .
*/
if (isset($include) and $include == true) {
if (!isset($displayToUser)) {
$displayToUser = '';
}
include(EASYWIDIR . '/stuff/keyphrasefile.php');
$query = $sql->prepare("DROP TABLE IF EXISTS `voice_stats_settings`");
$query->execute();
$query = $sql->prepare("DELETE FROM `easywi_statistics`");
$query->execute();
// move email related stuff from global settings into own table
$query2 = $sql->prepare("INSERT INTO `settings_email` (`reseller_id`,`email_setting_name`,`email_setting_value`) VALUES (?,?,?) ON DUPLICATE KEY UPDATE `email_setting_value`=VALUES(`email_setting_value`)");
$query = $sql->prepare("SELECT *,AES_DECRYPT(`email_settings_password`,?) AS `decryptedpassword` FROM `settings`");
$query->execute(array($aeskey));
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$query2->execute(array($row['resellerid'], 'emailbackup', @gzuncompress($row['emailbackup'])));
$query2->execute(array($row['resellerid'], 'emailbackuprestore', @gzuncompress($row['emailbackuprestore'])));
$query2->execute(array($row['resellerid'], 'emaildown', @gzuncompress($row['emaildown'])));
$query2->execute(array($row['resellerid'], 'emaildownrestart', @gzuncompress($row['emaildownrestart'])));
$query2->execute(array($row['resellerid'], 'emailgserverupdate', @gzuncompress($row['emailgserverupdate'])));
$query2->execute(array($row['resellerid'], 'emailpwrecovery', @gzuncompress($row['emailpwrecovery'])));
$query2->execute(array($row['resellerid'], 'emailsecuritybreach', @gzuncompress($row['emailsecuritybreach'])));
$query2->execute(array($row['resellerid'], 'emailnewticket', @gzuncompress($row['emailnewticket'])));
$query2->execute(array($row['resellerid'], 'emailuseradd', @gzuncompress($row['emailuseradd'])));
$query2->execute(array($row['resellerid'], 'emailvinstall', @gzuncompress($row['emailvinstall'])));
$query2->execute(array($row['resellerid'], 'emailvrescue', @gzuncompress($row['emailvrescue'])));
$query2->execute(array($row['resellerid'], 'emailregister', @gzuncompress($row['emailregister'])));
$query2->execute(array($row['resellerid'], 'email', $row['email']));
$query2->execute(array($row['resellerid'], 'emailregards', $row['emailregards']));
$query2->execute(array($row['resellerid'], 'emailfooter', $row['emailfooter']));
$query2->execute(array($row['resellerid'], 'email_settings_host', $row['email_settings_host']));
$query2->execute(array($row['resellerid'], 'email_settings_password', $row['decryptedpassword']));
$query2->execute(array($row['resellerid'], 'email_settings_port', $row['email_settings_port']));
$query2->execute(array($row['resellerid'], 'email_settings_ssl', $row['email_settings_ssl']));
$query2->execute(array($row['resellerid'], 'email_settings_type', $row['email_settings_type']));
$query2->execute(array($row['resellerid'], 'email_settings_user', $row['email_settings_user']));
}
// Try catch as some admins upgrade vom DEV to stable
try {
$query = $sql->prepare("SELECT `webVhostID`,`userID`,`resellerID`,`dns`,`ownVhost`,`vhostTemplate` FROM `webVhost`");
$query->execute();
$query2 = $sql->prepare("INSERT INTO `webVhostDomain` (`webVhostID`,`userID`,`resellerID`,`domain`,`path`,`ownVhost`,`vhostTemplate`) VALUES (?,?,?,?,'',?,?)");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
// Try catch as some admins might have maintained domains not be so unique
try {
$query2->execute(array($row['webVhostID'], $row['userID'], $row['resellerID'], $row['dns'], $row['ownVhost'], $row['vhostTemplate']));
$response->add('Migrated ' . $row['dns'] . ' to new table.');
} catch(PDOException $error) {
$response->add($error->getMessage());
}
}
} catch (PDOException $error) {
$response->add($error->getMessage());
}
$query = $sql->prepare("SELECT `id` FROM `modules` WHERE `get`='ro' LIMIT 1");
$query->execute();
$rootModuleId = (int) $query->fetchColumn();
if ($rootModuleId > 0) {
$query = $sql->prepare("UPDATE `modules` SET `active`='N' WHERE `id`=? LIMIT 1");
$query->execute(array($rootModuleId));
} else {
$query = $sql->prepare("INSERT INTO `modules` (`get`,`sub`,`file`,`active`,`type`) VALUES ('ro','ro','','N','C')");
$query->execute();
}
$response->add('Repairing tables if needed.');
$tables->correctExistingTables();
$query = $sql->prepare("UPDATE `servertypes` SET `useQueryPort`=2 WHERE `gameq` IN ('armedassault2', 'armedassault2oa', 'armedassault3', 'bf2', 'cube2', 'mta', 'ut', 'ut2004', 'ut3')");
$query->execute();
$query = $sql->prepare("UPDATE `servertypes` SET `cmd`='./%binary% -n' WHERE `shorten`='mtasa' AND `cmd`='./%binary%'");
$query->execute();
// Add new games if not existing
include(EASYWIDIR . '/stuff/data/gameslist.php');
$addGames = array('nmrih', 'projectcars');
$query = $sql->prepare("SELECT COUNT(`id`) AS `amount` FROM `servertypes` WHERE `shorten`=? AND `resellerid`=0 LIMIT 1");
$query2 = $sql->prepare("INSERT INTO `servertypes` (`steamgame`,`appID`,`updates`,`shorten`,`description`,`gamebinary`,`gamebinaryWin`,`binarydir`,`modfolder`,`fps`,`slots`,`map`,`cmd`,`modcmds`,`tic`,`gameq`,`gamemod`,`gamemod2`,`configs`,`configedit`,`portStep`,`portMax`,`portOne`,`portTwo`,`portThree`,`portFour`,`portFive`,`useQueryPort`,`mapGroup`,`protected`,`protectedSaveCFGs`,`ramLimited`,`os`,`resellerid`) VALUES (:steamgame,:appID,:updates,:shorten,:description,:gamebinary,:gamebinaryWin,:binarydir,:modfolder,:fps,:slots,:map,:cmd,:modcmds,:tic,:gameq,:gamemod,:gamemod2,:configs,:configedit,:portStep,:portMax,:portOne,:portTwo,:portThree,:portFour,:portFive,:useQueryPort,:mapGroup,:protected,:protectedSaveCFGs,:ramLimited,:os,:resellerid)");
foreach ($gameImages as $image) {
if (in_array($image[':shorten'], $addGames) and count($image) == 33) {
$image[':resellerid'] = 0;
$query->execute(array($image[':shorten']));
$imageExists = (int) $query->fetchColumn();
if ($imageExists == 0) {
$query2->execute($image);
if ($query2->rowCount() > 0) {
$response->add('Added : ' . $image[':description']);
}
}
}
}
$query = $sql->prepare("INSERT INTO `easywi_version` (`version`,`de`,`en`) VALUES
('5.00','
31.05.2015
Änderungen:
- API:
- TSNDS API hinzugefügt
- Aussagekräftigere Fehlermeldung bei Zugang verweigert
- Rückgabe der gesendeten Operation für besseres Debugging
- Daten werden bei der Edit Operation vollständig zurück gegeben
- IP wird beim Add/Edit von Game und Voiceservern zurück gegeben
- Gameswitch Spiele können bei Edit Operation hinzugefügt und gelöscht werden
- FTP User wird bei Gameservern zurück gegeben
- Das initiale Passwort kann bei Gameservern gesetzt werden
- Der Corecount wird bei Gameservern zurück gegeben
- Liste aller installierter Game Typen/Master Apps
- Liste aller Masterserver mit optionalen Limit
- Multiple Master IDs können in allen Add Operationen verwendet werden
- Beschreibung wird bei Master Listen zurück gegeben
- Webspace Master Liste kann angezeigt werden
- MySQL Master Liste kann angezeigt werden
- Generierter Benutzername wird zurück gegeben, wenn keiner gesendet wurde
- User Liste kann angezeigt werden
- Neue Methode clean User externalID
- CMS:
- hreflang Unterstützung
- index.php wird nach Home im Seo Mode geroutet
- WYSIWYG Editor Summernote beim Seiten und News Management
- Feeds:
- Externe News des Feeds werden ebenfalls eingelesen
- Bilder werden aus dem Feed entfernt
- Gameserver:
- Quota Support
- Multiple Festplatten werden unterstützt
- SteamCMD Login kann pro Template/Image gepflegt werden
- control.sh durch PHP Klasse ersetzt
- Konfiguration der control.sh durch App Server Konfiguration ersetzt
- Protected Linux System User wird nur angelegt, wenn der Modus generell für den Gameserver verfügbar ist
- SteamCMD Updates werden nacheinander ausgeführt
- Option [no_padding] für optionale Startbefehle bei Addons
- Query Port kann im Template definiert werden
- Neues Template No More Room in Hell
- Neues Template Project Cars
- FTP Server ohne Chroot werden unterstützt
- Support des Verleihs von Minecraft, Samp und Teeworlds
- Statuscheck.php Timeout erhöht
- Restart durch einen Cronjob wird mit der IP 127.0.0.1 gelogt
- \"@\" und \".\" im FTP Usernamen beim FastDL zulässig
- Generell:
- Neues Admin/User Template in 6 Farben
- Große Teile des Codes refactored
- Angelegeprozesse nur noch in einem Schritt
- SSH IPs können ausschließlich für den Connect verwendet werden (DMZ)
- Icon und Text des Headers in den Einstellungen konfigurierbar
- Statusseite für Cronjobs und PHP Extensions
- Third party CSS, JS und Fonts werden mitgeliefert
- Query Resultate werden mit while an Stelle von foreach geloopt umd Ram Verbrauch zu senken
- Modul Konzept aktualisiert und robuster gestaltet
- Unterstützzung von CURRENT_TIMESTAMP bei der Tabellen Reparieren Funktion
- Benutzer kann Info Texte deaktivieren
- Charakter \"-\" kann bei Passwörtern benutzt werden
- Default externalID ist nun \"leer\"
- Job Einträge werden geschrieben um alles zu stoppen, wenn User deaktiviert oder gelöscht wird
- Verbesserte Fehler Meldungen bei External Auth
- MySQL:
- externalID für Datenbanken verwaltbar
- Tickets:
- HTML5 Validierung hinzugefügt um 404 Fehler zu vermeiden
- Voiceserver:
- externalID zu TSNDS hinzugefügt
- Maximale TSNDS Menge am Master einstellbar
- Beschreibung kann bei Voice Mastern gepflegt werden
- Webspace:
- Domains können Webspace zugeordnet werden
- Frei definierbare optionale php.ini Konfiguration
- Third Party:
- DataTables hinzugefügt
- Chosen hinzugefügt
- moment.js hinzugefügt
- Daterangepicker hinzugefügt
- Bootstrap aktualisiert
- Font Awesome aktualisiert
- HybridAuth aktualisiert
Bugfixes:
- Validator Klasse und multidimensionale Arrays
- Installer wirft einen Fehler bei falschen MySQL Daten
- Nur eine Zeitquelle bei der lend.php
- External Auth benutzt falschen SSL Port
- SSL/TLS Support beim PHPMailer
- Custom Colums
- Bcrypt Support wird in jedem Fall überprüft
- Prefix beim User Anlegen als Reseller ignoriert
- Voice Master mit externem TSDNS Master
- Ungültiger Wert für nextfree in der Verleih API
- PHP Notice Meldungen bei gestopptem Voice Server
- MySQL Übersicht benutzt falschen Index
- SQL Exception bei API MySQL DB Edit
- TSDNS Key Login funktioniert nicht
- Http Server startet nicht nach Edit
- E-Mail Template von Useradd und Registration nicht bearbeitbar
- DB Dump kann nicht gedownloaded werden
','05.31.2015
Changes:
- API:
- TSNDS API added
- More speaking access denied error message
- Send operation is returned for debugging
- Complete data set is returned at edit operations
- IP is returned at Game and voice server edit
- Game switch games can be added/removed at the edit operation
- FTP user is returned at game server operations
- Initial password can be set for game servers
- Core count is returned for game servers
- Added list of all installed game types/master apps
- Added list of all master server with optional limit
- Multiple master IDs can be send during all add operations
- Description is returned at master lists
- Added Web space master list
- Added MySQL master list
- Generated user name is returned in case none is send
- Added user list
- New operation clean users externalID
- CMS:
- hreflang support
- index.php is routed to home when seo mode is active
- WYSIWYG editor Summernote for page and news management
- Feeds:
- External news in steam feeds are read and added
- Pictures are removed from feeds
- Game server:
- Quota support
- Multiple hard disks are supported
- SteamCMD login can be maintained per template/image
- control.sh replaced by PHP Class
- Configuration previously done at the control.sh replaced by app server configuration
- Protected Linux system user will be only created when the game server has the mode enabled
- SteamCMD updates are executed after each other instead of combined
- Optional option [no_padding] at add ons and additional start commands
- Query port can be defined at the game server template
- New template No More Room in Hell
- New template Project Cars
- FTP server without chroot are supported
- Lending Minecraft, Samp and Teeworlds is supported
- statuscheck.php timeout increased
- Restart done by a cronjob is logged with ip 127.0.0.1
- \"@\" and \".\" allowed for FTP user at FastDL
- Generell:
- New admin/user template with 6 different colours
- Large parts of the code re factored
- Creation processes are 1 step only
- SSH ips can be used for ssh connect only to be able to set up a dmz
- Icon and text at the header can be configured at the settings
- Status page for cronjobs and PHP extensions
- Third party CSS, JS and Fonts are shipped with Easy-Wi
- Query results are processed with while instead of foreach loops to reduce ram usage
- Modul concept redone
- CURRENT_TIMESTAMP supported at table repair
- User can deactive info texts
- Char \"-\" can be used for passwords
- Default externalID is now \"empty\"
- Job entries for stopping all services are written when a user is deactivated or deleted
- Improved error response at external auth
- MySQL:
- externalID can be maintained for databases
- Tickets:
- HTML5 validation added to avoid 404 errors
- Voice server:
- externalID can be maintained for TSNDS
- Maximum amount of TSNDS per master can be defined
- Description for Voice Server can be maintained
- Web space:
- Multiple domains can be mapped to a web space
- Optional php.ini configurations can be defined
- Third Party:
- Added DataTables
- Added Chosen
- Added moment.js
- Added Daterangepicker
- Updated Bootstrap
- Updated Font Awesome
- Updated HybridAuth
Bugfixes:
- Validator class and multi dimensional arrays
- Installer without error message in case of incorrect MySQL access data
- Only one source of time at lend.php
- External auth is using wring port for SSL
- SSL/TLS support at PHPMailer
- Custom Colums
- Bcrypt support not checked in any case
- Prefix ignored at user adding as resller
- Voice master with external TSDNS master
- Incorrect value for nextfree at lend API
- PHP notice message with stopped voice server
- MySQL overview with incorrect index
- SQL exception at MySQL DB API edit
- TSDNS key login not working
- Http server not starting after edit
- E-Mail template for user add and registration cannot be edited
- DB dump cannot be downloaded
')");
$query->execute();
$response->add('Action: insert_easywi_version done: ');
$query->closecursor();
} else {
echo "Error: this file needs to be included by the updater!
";
}