*
* 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) {
$query = $sql->prepare("INSERT INTO `easywi_version` (`version`,`de`,`en`) VALUES
('4.40','
10.05.2014
Änderungen:
- Generell:
- Wiki mit Handbuch Links ersetzt.
- Globale Belegungsstatistiken werden gelogt und dem Admin dargestellt.
- Easy-Wi Facebook Seite in den Headern verlinkt.
- Überflüssige Fallbacks auf user_language entfernt.
- Nur relevante Steam News werden im User Dashboard angezeigt.
- Liste verfügbarer Dateien für Custom Module wird angezeigt.
- Vertreter können ihre eigenen Daten verwalten.
- Neue PHP Ordnerstruktur.
- PNGs entfernt.
- Social Auth hinzugefügt.
- CMS:
- User Prefix auf Nein erlaubt die freie Nickname Wahl beim Registrieren.
- Der HTML Title wird je nach Seite angepasst.
- Gameserver:
- Mehrere Unterordner sind nun bei Images erlaubt.
- Restart Jobs, werden angelegt, wenn ein Steam Update für as Spiel erfolgt ist.
- Masterserver Ajax aus der settings.php entfernt.
- GameQ aktualisiert.
- Garrysmod Template hinzugefügt.
- Geringere Ram Verbrauch bei der Darstellung von Server Logs.
- Workaround in der statuscheck.php für Spiele mit unterschiedlichen Query Port.
- Nach dem Editieren Redirect zurück zum Restartplaner.
- Workaround für Servercolor/Branding.
- SQL Support für EAC.
- hldsupdatetool entfernt.
- MySQL:
- Hosttabellen Verwaltung kann beim User deaktiviert werden.
- Reinstall Funktion hinzugefügt.
- Datenbankgröße wird erhiben und dem User dargestellt.
- Layout Struktur im Userpanel den anderen Übersichten angeglichen.
- Root:
- Subnet Verwaltung verbessert.
- Rootserver IP system überarbeitet.
- Vlan Support hinzugefügt.
- Voiceserver:
- Bannlisten Funktion im Userpanel.
- Slot- und Traffikverbrauch bei TS3 Servern wird im Userbereich angezeigt.
- Zusätzlich zu Slots, wird auch der Traffik gelogt.
- Webspace:
- Webspace/FastDL Modul hinzugefügt.
Bugfixes:
- API: Beim Anlegen von Usersn wird kein Passwort gespeichert.
- API: Legacy Verhalten wieder herstellen.
- CMS: Canurl war bei statischen Seiten nicht gesetzt.
- CMS: EasyWi CMS Verlinkung teilweise fehlerhaft.
- Gameserver: Popup beim Anlegen einer neuen Datei im WebFTP.
- Gameserver: Eigener Gameserver Startbefehl.
- Gameserver: Minecraft Migration funktioniert nicht.
- Gameserver: Gameserver Settings Mapgroup Selektion.
- Gameserver: Updates starten nicht bei Minute 0.
- Gameserver: Der Restart Kalender funktioniert nur für Montag.
- Gameserver: downloadPath nicht mit dem Gmeserver Image exportieren.
- Gameserver: Protection Mode kopiert keine Datein vom ungeschützten Server.
- Gameserver: Online Servers ohne Namen werden als Offline angezeigt.
- Gameserver: Gameserver wird nicht von der job.php gestoppt.
- Generell: Workaround für Admins ohne eingestellte Zeitzone.
- Generell: Nach frischer Installation werden E-Mails ohne Text gesendet.
- Generell: Redirect enthält doppelte Slashes.
- Voice: TS3 Slots können nach einem Reset bearbeitet werden.
- Voice: Fehlender Include beim Voice Server löschen.
','05.10.2014
Changes:
- General:
- Replaced Wiki with manual links
- Log global usage statistics and display at admin dashboard.
- Easy-wi Facebook page added to headers.
- Additional fallbacks for user_language removed.
- Display only relevant Steam news at user dashboard.
- Display list of available custom modules.
- Substitutes can maintain their own data.
- New PHP folderstructure.
- PNG usage entfernt.
- Social Auth added.
- CMS:
- user prefix is NO allows nickname pick at register.
- Display html title depending on the page.
- Gameserver:
- Allow multiple subfolders for game images.
- Add restart jobs, when steamgame update.
- Moved masterserver ajax out of settings.php
- GameQ updated.
- Add garrysmod template.
- Reduce memory usage with serverlogs.
- Workaround at statuscheck.php for games with different query port.
- Redirect back to restartplaner after edit.
- Workaround for servercolor/branding
- SQL support for EAC.
- Removed hldsupdatetool.
- MySQL:
- Hosttable management can be deactivated for users.
- Added reinstall feature.
- Collect and display DB size at MySQL Module.
- Align layout for MySQL to GS at userpanel.
- Rootserver:
- Enhanced subnet management.
- Reworked rootserver IP system.
- Added Vlan Support.
- User:
- Voiceserver:
- Add banlist for users to TS3.
- Display slot and traffic usage for TS3 at userpanel.
- Log traffic in addition to slots for TS3 server.
- Webspace:
- Webspace/FastDL Modul added.
Bugfixes:
- API: Creating users no password will be saved in the database.
- API: Restore legacy API behaviour.
- CMS: Canurl not set for static pages.
- Gameserver: Fix Popup for create NEW FILE WebFTP.
- Gameserver: Own gameserver start command.
- Gameserver: Minecraft migration does not work.
- Gameserver: Gameserver Settings Mapgroup selection.
- Gameserver: Updates not starting at minute 0.
- Gameserver: Restart calendar works for monday only.
- Gameserver: Do not export downloadPath with gameserver image.
- Gameserver: Protection mode not copying over files from non-protected server.
- Gameserver: Online servers with empty server names show up as offline in Webinterface.
- Gameserver: Gameserver not stopped by job.php on delete.
- General: Workaround for admins without timezone set.
- General: After fresh install mails send without text.
- General: Redirect to URIs with double slashes.
- General: EasyWi CMS links partially incorrect.
- Voice: Missing include while voice server delete.
- Voice: TS3 slots can be edited after reset.
')");
$query->execute();
$response->add('Action: insert_easywi_version done: ');
$query->closecursor();
if (!isset($displayToUser)) {
$displayToUser = '';
}
$insert = $sql->prepare("INSERT INTO `easywi_statistics_current` (`userID`) VALUES (?) ON DUPLICATE KEY UPDATE `userID`=`userID`");
$insert->execute(array(0));
$query = $sql->prepare("SELECT `id` FROM `userdata` WHERE `accounttype`!='a'");
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$insert->execute(array($row['id']));
}
$query = $sql->prepare("DROP TABLE IF EXISTS `rootsSubnets`");
$query = $sql->prepare("DROP TABLE IF EXISTS `rootsIP4`");
$query = $sql->prepare("CREATE TABLE IF NOT EXISTS `rootsSubnets` (
`subnetID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`dhcpServer` int(10) unsigned NOT NULL,
`active` enum('Y','N') DEFAULT 'Y',
`subnet` varchar(15) DEFAULT NULL,
`netmask` varchar(15) DEFAULT NULL,
`subnetOptions` text,
`vlan` enum('Y','N') DEFAULT 'N',
`vlanName` varchar(255),
PRIMARY KEY (`subnetID`)
) ENGINE=InnoDB");
$query->execute();
$query = $sql->prepare("CREATE TABLE IF NOT EXISTS `rootsIP4` (
`subnetID` int(10) unsigned,
`ip` varchar(15) DEFAULT NULL,
`ownerID` int(10) unsigned DEFAULT 0,
`resellerID` int(10) unsigned DEFAULT 0,
PRIMARY KEY (`subnetID`,`ip`),KEY(`ownerID`),KEY(`resellerID`)
) ENGINE=InnoDB");
$query->execute();
$query = $sql->prepare("SELECT * FROM `rootsDHCP`");
$query2 = $sql->prepare("SELECT 1 FROM `rootsSubnets` WHERE `subnet`=? LIMIT 1");
$query3 = $sql->prepare("INSERT INTO `rootsSubnets` (`active`,`subnet`,`subnetOptions`,`netmask`,`vlan`,`vlanName`) VALUES (?,?,?,?,'N','')");
$query4 = $sql->prepare("INSERT INTO `rootsIP4` (`subnetID`,`ip`) VALUES (?,?) ON DUPLICATE KEY UPDATE `ip`=VALUES(`ip`)");
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
if (isset($row['subnetOptions'])) {
foreach (explode("\r\n", $row['ips']) as $exip) {
$ex = explode('.', $exip);
if (isset($ex[2])) {
$query2->execute(array($ex[0] . '.' . $ex[1] . '.' . $ex[2] . '.0'));
if ($query2->rowCount() == 0) {
$query3->execute(array($row['active'], $ex[0] . '.' . $ex[1] . '.' . $ex[2] . '.0', str_replace("option subnet-mask %subnet-mask%;\r\n", '', $row['subnetOptions']), $row['netmask']));
$lastID = $sql->lastInsertId();
for ($lastTriple = 2; $lastTriple < 255; $lastTriple++) {
$query4->execute(array($lastID, $ex[0] . '.' . $ex[1] . '.' . $ex[2] . '.' . $lastTriple));
}
}
}
}
}
}
$query = $sql->prepare("SELECT `ips`,`resellerid`,`resellersid` FROM `resellerdata`");
$query2 = $sql->prepare("UPDATE `rootsIP4` SET `ownerID`=?,`resellerID`=? WHERE `ip`=? LIMIT 1");
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
foreach (ipstoarray($row['ips']) as $usedip) {
$query2->execute(array($row['resellerid'], $row['resellersid'], $usedip));
}
}
$dirSource = EASYWIDIR . '/stuff/';
$dirTarget = EASYWIDIR . '/stuff/custom_modules/';
if (!is_dir($dirTarget)) {
@mkdir($dirTarget);
}
if (is_dir($dirTarget)) {
$query = $sql->prepare("SELECT `file` FROM `modules`");
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
if (is_file($dirSource . $row['file'])) {
rename($dirSource . $row['file'], $dirTarget . $row['file']);
}
}
}
foreach (array('admin', 'api', 'cms', 'custom_modules', 'jobs', 'methods', 'user') as $dir) {
if (is_dir(EASYWIDIR . '/stuff/' . $dir . '/')) {
foreach (scandir(EASYWIDIR . '/stuff/' . $dir . '/') as $row) {
if (substr($row, -4) == '.php') {
@unlink($dirSource . $row);
}
}
}
}
$customDirs = array();
foreach (scandir(EASYWIDIR . '/template/') as $row) {
if (strpos($row, '.') === false) {
$customDirs[] = $row;
foreach (array('admin', 'ajax', 'cms', 'custom_modules', 'user') as $dir) {
@mkdir(EASYWIDIR . '/template/' . $row);
}
}
}
foreach (array('admin', 'ajax', 'cms', 'custom_modules', 'user') as $dir) {
if (is_dir(EASYWIDIR . '/template/default/' . $dir . '/')) {
foreach (scandir(EASYWIDIR . '/template/default/' . $dir . '/') as $row) {
if (substr($row, -4) == '.tpl') {
if (is_file(EASYWIDIR . '/template/default/' . $row)) {
@unlink(EASYWIDIR . '/template/default/' . $row);
}
foreach ($customDirs as $custom) {
if (is_dir(EASYWIDIR . '/template/' . $custom) and is_file(EASYWIDIR . '/template/' . $custom . '/' . $row)) {
@rename(EASYWIDIR . '/template/' . $custom . '/' . $row, EASYWIDIR . '/template/' . $custom . '/' . $dir . '/' . $row);
}
}
}
}
}
}
$query = $sql->prepare("UPDATE `servertypes` SET `steamgame`='S' WHERE `steamgame`='Y'");
$query->execute();
$query = $sql->prepare("ALTER TABLE `servertypes` ADD COLUMN `gamebinaryWin` varchar(255) NOT NULL AFTER `gamebinary`");
$query->execute();
$query = $sql->prepare("UPDATE `servertypes` SET `gamebinaryWin`='hlds.exe',`os`='B' WHERE `gamebinary`='hlds_run'");
$query->execute();
$query = $sql->prepare("UPDATE `servertypes` SET `gamebinaryWin`='srcds.exe',`os`='B' WHERE `gamebinary`='srcds_run'");
$query->execute();
$query = $sql->prepare("UPDATE `servertypes` SET `gameq`='mta' WHERE `gameq`='Mta'");
$query->execute();
$query = $sql->prepare("DROP TABLE IF EXISTS `voice_server_stats_hours`");
$query->execute();
$response->add('Repairing tables if needed.');
$tables->correctExistingTables();
} else {
echo "Error: this file needs to be included by the updater!
";
}