mirror of
https://github.com/ManfredAabye/oswebinterface.git
synced 2026-08-14 09:02:02 +00:00
12032025Refresh
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
<?php
|
||||
$title = "About";
|
||||
include_once 'include/header.php';
|
||||
// About Version 1.2
|
||||
|
||||
// Sprachauswahl (Standard: Deutsch)
|
||||
$lang = isset($_GET['lang']) ? $_GET['lang'] : 'de';
|
||||
?>
|
||||
|
||||
<style>
|
||||
.container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
color: rgb(31, 31, 31);
|
||||
background-color: rgb(238, 241, 241);
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.language-switcher {
|
||||
text-align: right;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.language-switcher a {
|
||||
text-decoration: none;
|
||||
color: #007BFF;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.language-switcher a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
|
||||
<main class="container">
|
||||
<!-- Sprachauswahl -->
|
||||
<div class="language-switcher">
|
||||
<a href="?lang=de">Deutsch</a> | <a href="?lang=en">English</a>
|
||||
</div>
|
||||
|
||||
<?php if ($lang == 'de'): ?>
|
||||
<!-- Deutsche Version -->
|
||||
<section>
|
||||
<h1>Über Uns</h1>
|
||||
<p>Willkommen auf unserer <?php echo SITE_NAME; ?> Webseite! Hier finden Sie Informationen über unser Unternehmen und unsere Dienstleistungen.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Haftungsausschluss</h2>
|
||||
<p>Die Nutzung dieser Webseite erfolgt auf eigene Gefahr. Wir übernehmen keine Gewähr für die Richtigkeit, Vollständigkeit oder Aktualität der bereitgestellten Informationen.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Internationaler Haftungsausschluss</h3>
|
||||
<p>
|
||||
Die Informationen auf dieser Webseite werden ohne jegliche Gewährleistung, ausdrücklich oder implizit, bereitgestellt. Wir schließen jegliche Haftung für Schäden aus, die direkt oder indirekt aus der Nutzung dieser Webseite entstehen.
|
||||
</p>
|
||||
<p>
|
||||
Dies umfasst, ohne Einschränkung, Schäden durch verlorene Daten, entgangenen Gewinn oder Betriebsunterbrechungen, unabhängig davon, ob wir auf die Möglichkeit solcher Schäden hingewiesen wurden.
|
||||
</p>
|
||||
<p>
|
||||
Diese Webseite kann Links zu externen Webseiten Dritter enthalten, auf deren Inhalte wir keinen Einfluss haben. Für die Inhalte und die Richtigkeit der Informationen auf diesen externen Webseiten übernehmen wir keine Haftung. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Virtuelle Welten mit OpenSimulator</h3>
|
||||
<p>
|
||||
OpenSimulator ist eine Open-Source-Software, die es ermöglicht, virtuelle 3D-Welten zu erstellen und zu betreiben. Diese Welten können für verschiedene Zwecke genutzt werden, einschließlich Bildung, soziale Interaktion und Geschäftstätigkeiten.
|
||||
</p>
|
||||
<p>
|
||||
OpenSimulator ist kompatibel mit dem Second Life-Protokoll, was bedeutet, dass Benutzer mit Second Life-kompatiblen Clients auf diese Welten zugreifen können.
|
||||
</p>
|
||||
<p>
|
||||
OpenSimulator bietet eine flexible Plattform, die es Benutzern ermöglicht, ihre eigenen virtuellen Umgebungen zu gestalten. Dies umfasst die Erstellung von Landschaften, Gebäuden, Objekten und sogar komplexen Simulationen. Die Software unterstützt auch Skripting, sodass Benutzer interaktive Elemente und Funktionen in ihren Welten implementieren können.
|
||||
</p>
|
||||
<p>
|
||||
Die in OpenSimulator erstellten virtuellen Welten sind nutzergeneriert, und die Inhalte werden von den Benutzern selbst erstellt und verwaltet. Dies bedeutet, dass die Verantwortung für die Inhalte, die in diesen Welten geteilt werden, bei den jeweiligen Nutzern liegt. Wir übernehmen keine Verantwortung für die Inhalte, die in diesen virtuellen Welten erstellt oder geteilt werden.
|
||||
</p>
|
||||
<p>
|
||||
Die Nutzung von OpenSimulator und den damit verbundenen virtuellen Welten erfolgt auf eigene Gefahr. Wir empfehlen den Benutzern, die Nutzungsbedingungen und Datenschutzrichtlinien der jeweiligen virtuellen Welten sorgfältig zu lesen und zu befolgen. Zudem sollten Benutzer sich bewusst sein, dass virtuelle Welten möglicherweise nicht für alle Altersgruppen geeignet sind und dass sie ihre Privatsphäre und Sicherheit in solchen Umgebungen schützen sollten.
|
||||
</p>
|
||||
<p>
|
||||
Weitere Informationen zu OpenSimulator finden Sie auf der offiziellen Wiki-Seite: <a href="http://opensimulator.org/wiki/Main_Page/de" target="_blank">OpenSimulator Wiki</a>.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<?php else: ?>
|
||||
<!-- Englische Version -->
|
||||
<section>
|
||||
<h1>About Us</h1>
|
||||
<p>Welcome to our <?php echo SITE_NAME; ?> website! Here you will find information about our company and our services.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Disclaimer</h2>
|
||||
<p>Use of this website is at your own risk. We do not guarantee the accuracy, completeness, or timeliness of the information provided.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>International Disclaimer</h3>
|
||||
<p>
|
||||
The information on this website is provided without any warranties, express or implied. We disclaim all liability for damages arising directly or indirectly from the use of this website.
|
||||
</p>
|
||||
<p>
|
||||
This includes, without limitation, damages due to lost data, lost profits, or business interruption, regardless of whether we have been advised of the possibility of such damages.
|
||||
</p>
|
||||
<p>
|
||||
This website may contain links to external websites of third parties, over whose content we have no control. We assume no responsibility for the content and accuracy of the information on these external websites. The respective provider or operator of the linked pages is always responsible for their content.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Virtual Worlds with OpenSimulator</h3>
|
||||
<p>
|
||||
OpenSimulator is an open-source software that allows the creation and operation of virtual 3D worlds. These worlds can be used for various purposes, including education, social interaction, and business activities.
|
||||
</p>
|
||||
<p>
|
||||
OpenSimulator is compatible with the Second Life protocol, which means that users can access these worlds using Second Life-compatible clients.
|
||||
</p>
|
||||
<p>
|
||||
OpenSimulator provides a flexible platform that enables users to design their own virtual environments. This includes the creation of landscapes, buildings, objects, and even complex simulations. The software also supports scripting, allowing users to implement interactive elements and functions in their worlds.
|
||||
</p>
|
||||
<p>
|
||||
The virtual worlds created in OpenSimulator are user-generated, and the content is created and managed by the users themselves. This means that the responsibility for the content shared in these worlds lies with the respective users. We are not responsible for the content created or shared in these virtual worlds.
|
||||
</p>
|
||||
<p>
|
||||
The use of OpenSimulator and the associated virtual worlds is at your own risk. We recommend that users carefully read and follow the terms of use and privacy policies of the respective virtual worlds. Additionally, users should be aware that virtual worlds may not be suitable for all age groups and that they should protect their privacy and safety in such environments.
|
||||
</p>
|
||||
<p>
|
||||
For more information about OpenSimulator, please visit the official wiki page: <a href="http://opensimulator.org/wiki/Main_Page/de" target="_blank">OpenSimulator Wiki</a>.
|
||||
</p>
|
||||
</section>
|
||||
<?php endif; ?>
|
||||
</main>
|
||||
|
||||
<?php include_once 'include/footer.php'; ?>
|
||||
@@ -0,0 +1,142 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
$title = "AvatarPicker Service";
|
||||
include_once 'include/header.php';
|
||||
|
||||
|
||||
// Fehlerberichterstattung aktivieren
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', 1);
|
||||
|
||||
// Verbindung zur Datenbank herstellen
|
||||
$conn = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
|
||||
|
||||
// Überprüfen, ob die Verbindung erfolgreich war
|
||||
if ($conn->connect_error) {
|
||||
die("Verbindung fehlgeschlagen: " . $conn->connect_error);
|
||||
}
|
||||
|
||||
$vorname = $nachname = '';
|
||||
$inventory = [];
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||
$input_password = $_POST['input_password'] ?? '';
|
||||
$vorname = $_POST['vorname'] ?? '';
|
||||
$nachname = $_POST['nachname'] ?? '';
|
||||
|
||||
// Überprüfen des Passworts
|
||||
if (in_array($input_password, $registration_passwords_avatarpicker)) {
|
||||
$_SESSION['authenticated'] = true;
|
||||
|
||||
if (!empty($vorname) && !empty($nachname)) {
|
||||
$inventory = listinventar($conn, $vorname, $nachname);
|
||||
}
|
||||
} else {
|
||||
$error_message = "Falsches Passwort. Bitte versuchen Sie es erneut.";
|
||||
}
|
||||
} else {
|
||||
// Benutzer ist nicht authentifiziert
|
||||
$show_login_form = true;
|
||||
}
|
||||
|
||||
// Funktion zum Abrufen des Inventars
|
||||
function listinventar($conn, $vorname, $nachname) {
|
||||
$vorname = $conn->real_escape_string(strip_tags($vorname));
|
||||
$nachname = $conn->real_escape_string(strip_tags($nachname));
|
||||
$query = "SELECT PrincipalID FROM UserAccounts WHERE FirstName='$vorname' AND LastName='$nachname'";
|
||||
$result = $conn->query($query);
|
||||
|
||||
if ($result->num_rows == 0) {
|
||||
echo "Benutzer nicht gefunden.\n";
|
||||
return [];
|
||||
}
|
||||
|
||||
$row = $result->fetch_assoc();
|
||||
$user_uuid = $row['PrincipalID'];
|
||||
|
||||
// Abfrage der "Outfits"-Ordner
|
||||
$query = "SELECT folderID, folderName FROM inventoryfolders WHERE agentID='$user_uuid' AND type=47 ORDER BY folderName ASC, agentID ASC";
|
||||
$result = $conn->query($query);
|
||||
$inventory = [];
|
||||
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$inventory[] = [
|
||||
'folderID' => $row['folderID'],
|
||||
'folderName' => $row['folderName']
|
||||
];
|
||||
}
|
||||
|
||||
if (empty($inventory)) {
|
||||
echo "Keine Outfits gefunden.\n";
|
||||
}
|
||||
|
||||
return $inventory;
|
||||
}
|
||||
|
||||
// Funktion zum Abrufen des Bildes nach Namen
|
||||
function getImageByName($dir, $name) {
|
||||
foreach (glob($dir."*.jpg") as $filename) {
|
||||
$file = pathinfo($filename, PATHINFO_FILENAME);
|
||||
if ($file === $name) {
|
||||
return $dir.$file.".jpg";
|
||||
}
|
||||
}
|
||||
return $dir."default.jpg";
|
||||
}
|
||||
?>
|
||||
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; color: black; margin: 0; padding: 0; display: flex; flex-direction: column; height: 100vh; }
|
||||
.containerlist { display: flex; flex-direction: column; flex: 1; }
|
||||
header, footer { flex-shrink: 0; }
|
||||
main { flex-grow: 1; display: flex; justify-content: center; align-items: center; }
|
||||
.form-containerlist { background-color: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); max-width: 600px; width: 100%; }
|
||||
h1 { font-size: 24px; margin-bottom: 20px; text-align: center; }
|
||||
label { display: block; margin-bottom: 8px; font-weight: bold; }
|
||||
input[type="text"], input[type="password"] { width: calc(100% - 20px); padding: 8px; margin-bottom: 15px; border: 1px solid #ccc; border-radius: 4px; }
|
||||
input[type="submit"] { width: 100%; padding: 10px; border: none; border-radius: 4px; background-color: #007bff; color: #fff; font-size: 16px; cursor: pointer; margin-bottom: 10px; }
|
||||
input[type="submit"]:hover { background-color: #0056b3; }
|
||||
.inventory-list { list-style-type: none; padding: 0; }
|
||||
.inventory-list li { padding: 8px; background-color: #f9f9f9; margin-bottom: 5px; border: 1px solid #ccc; border-radius: 4px; }
|
||||
.outfit-container { margin: 10px; }
|
||||
.img-thumbnail { max-width: 100px; }
|
||||
</style>
|
||||
|
||||
<div class="containerlist">
|
||||
<main>
|
||||
<div class="form-containerlist">
|
||||
<h1>AvatarPicker</h1>
|
||||
<form method="POST" action="">
|
||||
<label for="vorname">Vorname:</label>
|
||||
<input type="text" id="vorname" name="vorname" required><br>
|
||||
|
||||
<label for="nachname">Nachname:</label>
|
||||
<input type="text" id="nachname" name="nachname" required><br>
|
||||
|
||||
<label for="input_password">Passwort:</label>
|
||||
<input type="password" id="input_password" name="input_password" required><br>
|
||||
|
||||
<input type="submit" value="Outfits anzeigen">
|
||||
</form>
|
||||
|
||||
<?php if (isset($error_message)): ?>
|
||||
<p style="color: red;"><?= htmlspecialchars($error_message) ?></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($_SESSION['authenticated'] ?? false && !empty($inventory)): ?>
|
||||
<h2>Outfits von <?= htmlspecialchars($vorname) ?> <?= htmlspecialchars($nachname) ?></h2>
|
||||
<div class="inventory-list">
|
||||
<?php foreach ($inventory as $item): ?>
|
||||
<div class="outfit-container">
|
||||
<a href="secondlife:///app/wear_folder/?folder_id=<?= htmlspecialchars($item['folderID']) ?>" target="_self">
|
||||
<img class="img-thumbnail" src="<?= htmlspecialchars(getImageByName("pics/", $item['folderName'])) ?>" alt="<?= htmlspecialchars($item['folderName']) ?>">
|
||||
<p><?= htmlspecialchars($item['folderName']) ?></p>
|
||||
</a>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
@@ -0,0 +1,232 @@
|
||||
<?php
|
||||
//! Private Konfiguration
|
||||
// MySQL Verbindungsdaten
|
||||
define('DB_SERVER', 'localhost');
|
||||
define('DB_USERNAME', 'your_username');
|
||||
define('DB_PASSWORD', 'your_password');
|
||||
define('DB_NAME', 'your_database');
|
||||
define('DB_ASSET_NAME', 'your_database');
|
||||
|
||||
// RemoteAdmin
|
||||
define('REMOTEADMIN_URL', 'localhost');
|
||||
define('REMOTEADMIN_PORT', 8002);
|
||||
define('REMOTEADMIN_HTTPAUTHUSERNAME', 'opensim');
|
||||
define('REMOTEADMIN_HTTPAUTHPASSWORD', 'opensim123');
|
||||
|
||||
// Seitenadressen
|
||||
define('BASE_URL', 'http://yourdomain.com');
|
||||
define('SITE_NAME', 'Dein Grid Name');
|
||||
|
||||
// Konfigurieren sie ihre Robust.ini wie folgt:
|
||||
//
|
||||
// MapTileURL = "${Const|BaseURL}:${Const|PublicPort}/oswebinterface/maptile.php";
|
||||
// SearchURL = "${Const|BaseURL}:${Const|PublicPort}/oswebinterface/searchservice.php";
|
||||
// DestinationGuide = "${Const|BaseURL}/oswebinterface/guide.php"
|
||||
// AvatarPicker = "${Const|BaseURL}/oswebinterface/avatarpicker.php"
|
||||
// GridSearch = "${Const|BaseURL}/oswebinterface/gridsearch.php";
|
||||
// MessageURI = "${Const|BaseURL}/oswebinterface/messages.php";
|
||||
// welcome = ${Const|BaseURL}/oswebinterface/welcomesplashpage.php
|
||||
// economy = ${Const|BaseURL}:8008/
|
||||
// about = ${Const|BaseURL}/oswebinterface/aboutinformation.php
|
||||
// register = ${Const|BaseURL}/oswebinterface/createavatar.php
|
||||
// help = ${Const|BaseURL}/oswebinterface/help.php
|
||||
// password = ${Const|BaseURL}/oswebinterface/passwordreset.php
|
||||
// partner = ${Const|BaseURL}/oswebinterface/partner.php
|
||||
// GridStatus = ${Const|BaseURL}:${Const|PublicPort}/oswebinterface/gridstatus.php
|
||||
// GridStatusRSS = ${Const|BaseURL}:${Const|PublicPort}/oswebinterface/gridstatusrss.php
|
||||
|
||||
//! Allgemeine Konfiguration
|
||||
|
||||
// Konfigurationsoptionen Standart Template:
|
||||
// "headerBlanc.php", "headerST.php", "headerW3.php", "headerBT5.php", "headerFoundation.php", "headerMaterialize.php", "headerTailwind.php", "headerPrimer.php", "headerTachyons.php", "headerSpectre.php", "headerTent.php"
|
||||
define('HEADER_FILE', 'headerBlanc.php'); // Ändere diesen Wert, um die verschienen Template Header Datei zu laden.
|
||||
|
||||
// Konfigurationsoption für den Banker
|
||||
define('BANKER_UUID', '00000000-0000-0000-0000-000000000000');
|
||||
|
||||
// Verifizierungsfunktionen
|
||||
define('VERIFICATION_METHOD', 'email'); // 'email' oder 'uuid'
|
||||
|
||||
// Asset Bilder
|
||||
define('ASSETPFAD', 'cache/');
|
||||
define('ASSET_FEHLT', ASSETPFAD . '00000000-0000-0000-0000-000000000002');
|
||||
define('GRID_PORT', ':8002');
|
||||
define('GRID_ASSETS', ':8003/assets/');
|
||||
define('GRID_ASSETS_SERVER', 'BASE_URL' . 'GRID_ASSETS');
|
||||
|
||||
// Guide
|
||||
define('GRIDLIST_FILE', 'include/gridlist.csv');
|
||||
define('GRIDLIST_VIEW', 'json'); // 'json', 'database' oder 'grid'
|
||||
|
||||
// Tagesmeldungen
|
||||
define('SHOW_DAILY_UPDATE', true); // Ein- oder ausschalten
|
||||
define('DAILY_UPDATE_TYPE', 'rss'); // 'text' oder 'rss'
|
||||
define('DAILYTEXT', 'Dies ist eine aus der config.php konfigurierte tagesaktuelle Einblendung.'); // Tagesaktueller Text
|
||||
define('RSS_FEED_URL', 'https://www.hypergridbusiness.com/feed'); // URL des RSS-Feeds Beispiel:Hypergrid Business.
|
||||
//define('RSS_FEED_URL', 'http://opensimulator.org/viewgit/?a=rss-log&p=opensim'); // URL des RSS-Feeds Beispiel:OpenSimulator.org.
|
||||
define('FEED_CACHE_PATH', __DIR__.'/feed_cache.html'); // Cache-Dateipfad
|
||||
define('FEED_CACHE_MAX_AGE', 3600); // Cache max. 60 Minuten alt
|
||||
|
||||
// Media
|
||||
//define('MEDIA_SERVER', 'http://localhost:8500/stream');
|
||||
define('MEDIA_SERVER', 'http://schwarze-welle.de:7500/stream');
|
||||
//define('MEDIA_SERVER_STATUS', 'http://localhost:8500/status-json.xsl');
|
||||
define('MEDIA_SERVER_STATUS', 'http://schwarze-welle.de:7500/');
|
||||
|
||||
// Passwörter (unbedingt austauschen!)
|
||||
// Für das austauschen der Passwöter könnt ihr den paswd_generator.php benutzen den ihr im Verszeichnis /include findet.
|
||||
$registration_passwords_register = ["63RKh0y4O1vVZvIy", "QfgOsSjv7eXsGrm9", "y6RDvvr7yBXIti1Z", "RdzMASYV4Z4yAufN", "RYNo3wsO2n3EJJu2"];
|
||||
$registration_passwords_reset = ["1wEmRxyeK88EwrYT", "HoQPwWpyMnCr8Vdk", "1hBkOWCu1lSYj8fQ", "dU9gTvmzdrpy0lo0", "TQU4iUnkc3TbhKkM"];
|
||||
$registration_passwords_partner = ["Mu9rGlgT03sOiaXf", "rrptmaXB4cojZUYt", "v2YIa0lY4qUnUK67", "ikeAJXrtviCFlcg0", "2zNONij8lyXfYxnm"];
|
||||
$registration_passwords_inventory = ["XIDkRs2I2oUiELM2", "MV6wjiuJGwq2Z66o", "k6ATTjmlfEvUyJac", "Fsw76zBg3B8U7GaQ", "4kFBhnAt1olB4MjZ"];
|
||||
$registration_passwords_datatable = ["Ki4R3wzrPQyjcaUf", "tQmeWGOB8CnIZ9lR", "FoJO8gkHKzgRuhBe", "D8ISCU30tqppXCSo", "iOcp63eE9DMlFWL2"];
|
||||
$registration_passwords_listinventar = ["1LwKJSFv4nDonISZ", "bsuDqHa2b7IjTS1j", "NHQPcsVPM054qPQy", "mY3yGk4FOxRbWF6u", "RncBBHbqfUfP5dFO"];
|
||||
$registration_passwords_picreader = ["44PjElCRe1ptxB5Z", "DVEAOvYm3jbnT90C", "0EODGtu100Hc05VO", "Nnfw5Pdf683BhvBf", "BP8l7yIziX2xxmPI"];
|
||||
$registration_passwords_mutelist = ["f7QHGUHiWv5YKMbX", "xev7HckvtNwn6qrN", "johvUPwLNuV8e7Vp", "1WMJcyoaXMspQ3pT", "PtI4gAZHEF4B3iDw"];
|
||||
$registration_passwords_avatarpicker = ["eLDlqKAzvhkM76GY", "LWGV8as8FXx9trS9", "QviZZNHYa2NBttEr", "zATL5jKBqvValDRt", "Ry4pky6RIpoULmLR"];
|
||||
$registration_passwords_economy = ["bgFavOtCgC8lfACZ", "NKEKUJeXGaGZvs8g", "rPY1ctDmCXWCFwpK", "Fm0bhEhBFJH8Cckr", "rNZobVNUZMmzjXqG"];
|
||||
|
||||
// Farben der Webseite
|
||||
$colorSchemes = array(
|
||||
'oceanBreeze' => array('header' => '#2E8BC0', 'footer' => '#2E8BC0', 'secondary' => '#B1D4E0', 'primary' => '#3B3B98'),
|
||||
'sunsetGlow' => array('header' => '#FF6F61', 'footer' => '#FF6F61', 'secondary' => '#FFD54F', 'primary' => '#2C3E50'),
|
||||
'forestHaven' => array('header' => '#2F5233', 'footer' => '#2F5233', 'secondary' => '#A4DE02', 'primary' => '#FFAE03'),
|
||||
'lavenderBliss' => array('header' => '#6A0572', 'footer' => '#6A0572', 'secondary' => '#D2B4DE', 'primary' => '#F5B7B1'),
|
||||
'fierySunset' => array('header' => '#D32F2F', 'footer' => '#D32F2F', 'secondary' => '#FFCDD2', 'primary' => '#B71C1C'),
|
||||
'coolMint' => array('header' => '#009688', 'footer' => '#009688', 'secondary' => '#B2DFDB', 'primary' => '#004D40'),
|
||||
'royalBlue' => array('header' => '#3F51B5', 'footer' => '#3F51B5', 'secondary' => '#C5CAE9', 'primary' => '#1A237E'),
|
||||
'autumnHarvest' => array('header' => '#8D6E63', 'footer' => '#8D6E63', 'secondary' => '#FFCCBC', 'primary' => '#3E2723'),
|
||||
'goldenHour' => array('header' => '#FFEB3B', 'footer' => '#FFEB3B', 'secondary' => '#FFF9C4', 'primary' => '#FBC02D'),
|
||||
'mintChocolate' => array('header' => '#4CAF50', 'footer' => '#4CAF50', 'secondary' => '#CDDC39', 'primary' => '#795548'),
|
||||
'berryBurst' => array('header' => '#E91E63', 'footer' => '#E91E63', 'secondary' => '#F8BBD0', 'primary' => '#880E4F'),
|
||||
'midnightBlue' => array('header' => '#0D47A1', 'footer' => '#0D47A1', 'secondary' => '#BBDEFB', 'primary' => '#1E88E5'),
|
||||
'grayscale1' => array('header' => '#333333', 'footer' => '#333333', 'secondary' => '#666666', 'primary' => '#E0E0E0'),
|
||||
'grayscale2' => array('header' => '#4F4F4F', 'footer' => '#4F4F4F', 'secondary' => '#A0A0A0', 'primary' => '#FFFFFF'),
|
||||
'grayscale3' => array('header' => '#2B2B2B', 'footer' => '#2B2B2B', 'secondary' => '#858585', 'primary' => '#D9D9D9'),
|
||||
'emeraldDream' => array('header' => '#50C878', 'footer' => '#50C878', 'secondary' => '#98FB98', 'primary' => '#006400'),
|
||||
'coralReef' => array('header' => '#FF7F50', 'footer' => '#FF7F50', 'secondary' => '#FFD700', 'primary' => '#8B0000'),
|
||||
'purpleHaze' => array('header' => '#8A2BE2', 'footer' => '#8A2BE2', 'secondary' => '#DA70D6', 'primary' => '#4B0082'),
|
||||
'sunshineMeadow' => array('header' => '#FFD700', 'footer' => '#FFD700', 'secondary' => '#F0E68C', 'primary' => '#556B2F'),
|
||||
'autumnLeaves' => array('header' => '#FF4500', 'footer' => '#FF4500', 'secondary' => '#FFD700', 'primary' => '#8B4513'),
|
||||
'crimsonTide' => array('header' => '#DC143C', 'footer' => '#DC143C', 'secondary' => '#FFDAB9', 'primary' => '#8B0000'),
|
||||
'skylineView' => array('header' => '#87CEEB', 'footer' => '#87CEEB', 'secondary' => '#4682B4', 'primary' => '#1E90FF'),
|
||||
'blazingSunset' => array('header' => '#FF4500', 'footer' => '#FF4500', 'secondary' => '#FFD700', 'primary' => '#FF8C00'),
|
||||
'morningMist' => array('header' => '#87CEEB', 'footer' => '#87CEEB', 'secondary' => '#B0E0E6', 'primary' => '#4682B4'),
|
||||
'twilightSparkle' => array('header' => '#4B0082', 'footer' => '#4B0082', 'secondary' => '#9370DB', 'primary' => '#8A2BE2'),
|
||||
'sereneGreen' => array('header' => '#2E8B57', 'footer' => '#2E8B57', 'secondary' => '#98FB98', 'primary' => '#006400'),
|
||||
'coralBlush' => array('header' => '#FF6F61', 'footer' => '#FF6F61', 'secondary' => '#FFA07A', 'primary' => '#FA8072'),
|
||||
'earthyBrown' => array('header' => '#8B4513', 'footer' => '#8B4513', 'secondary' => '#D2B48C', 'primary' => '#A0522D'),
|
||||
'crimsonWave' => array('header' => '#B22222', 'footer' => '#B22222', 'secondary' => '#FF6347', 'primary' => '#DC143C'),
|
||||
'coolCyan' => array('header' => '#00CED1', 'footer' => '#00CED1', 'secondary' => '#E0FFFF', 'primary' => '#20B2AA'),
|
||||
'deepPurple' => array('header' => '#9400D3', 'footer' => '#9400D3', 'secondary' => '#9932CC', 'primary' => '#8B008B'),
|
||||
'warmAmber' => array('header' => '#FFBF00', 'footer' => '#FFBF00', 'secondary' => '#FFD700', 'primary' => '#FF8C00'),
|
||||
'gentlePink' => array('header' => '#FF69B4', 'footer' => '#FF69B4', 'secondary' => '#FFB6C1', 'primary' => '#FF1493'),
|
||||
'midnightTeal' => array('header' => '#008080', 'footer' => '#008080', 'secondary' => '#40E0D0', 'primary' => '#20B2AA'),
|
||||
'sunsetOrange' => array('header' => '#FF4500', 'footer' => '#FF4500', 'secondary' => '#FF6347', 'primary' => '#FF7F50'),
|
||||
'forestGreen' => array('header' => '#228B22', 'footer' => '#228B22', 'secondary' => '#32CD32', 'primary' => '#006400'),
|
||||
'icyBlue' => array('header' => '#00BFFF', 'footer' => '#00BFFF', 'secondary' => '#ADD8E6', 'primary' => '#1E90FF'),
|
||||
'rosyRed' => array('header' => '#FF6347', 'footer' => '#FF6347', 'secondary' => '#FF7F7F', 'primary' => '#FF4500'),
|
||||
'plumPurple' => array('header' => '#8B008B', 'footer' => '#8B008B', 'secondary' => '#DA70D6', 'primary' => '#9932CC'),
|
||||
'vibrantYellow' => array('header' => '#FFD700', 'footer' => '#FFD700', 'secondary' => '#FFFF00', 'primary' => '#FFA500'),
|
||||
'aquaMarine' => array('header' => '#7FFFD4', 'footer' => '#7FFFD4', 'secondary' => '#E0FFFF', 'primary' => '#40E0D0'),
|
||||
'burntSienna' => array('header' => '#E97451', 'footer' => '#E97451', 'secondary' => '#D2691E', 'primary' => '#CD5C5C'),
|
||||
'mintGreen' => array('header' => '#98FF98', 'footer' => '#98FF98', 'secondary' => '#ADFF2F', 'primary' => '#32CD32'),
|
||||
'sapphireBlue' => array('header' => '#0F52BA', 'footer' => '#0F52BA', 'secondary' => '#4682B4', 'primary' => '#1E90FF'),
|
||||
'coralPink' => array('header' => '#F88379', 'footer' => '#F88379', 'secondary' => '#FF7F50', 'primary' => '#FF6347'),
|
||||
'jadeGreen' => array('header' => '#00A36C', 'footer' => '#00A36C', 'secondary' => '#50C878', 'primary' => '#2E8B57'),
|
||||
'peachOrange' => array('header' => '#FFDAB9', 'footer' => '#FFDAB9', 'secondary' => '#FFE4B5', 'primary' => '#FFA07A'),
|
||||
'rubyRed' => array('header' => '#9B111E', 'footer' => '#9B111E', 'secondary' => '#FF6347', 'primary' => '#B22222'),
|
||||
'skyBlue' => array('header' => '#87CEEB', 'footer' => '#87CEEB', 'secondary' => '#B0E0E6', 'primary' => '#00BFFF'),
|
||||
'burntOrange' => array('header' => '#FF7F50', 'footer' => '#FF7F50', 'secondary' => '#FFA07A', 'primary' => '#FF4500'),
|
||||
'standardcolor' => array('header' => '#cdb38b', 'footer' => '#eecfa1', 'secondary' => '#f5f5dc', 'primary' => '#4F4F4F')
|
||||
);
|
||||
// Die Farbschaltflächen habe ich eingefügt damit man sich ein gesamtbild der Farbschemas machen kann.
|
||||
// Bitte last eure kereativität durch nichts stoppen ändert die colorSchemes wie es euch gefällt.
|
||||
define('SHOW_COLOR_BUTTONS', false); // Farbschaltflächen anzeigen (true/false)
|
||||
define('INITIAL_COLOR_SCHEME', 'standardcolor'); // Farbschema auswählen
|
||||
|
||||
// Farben und Schriftart
|
||||
// Setze aktuelle Farbschema basierend auf der Konstanten INITIAL_COLOR_SCHEME
|
||||
$currentColorScheme = $colorSchemes[INITIAL_COLOR_SCHEME];
|
||||
|
||||
// definiere die Farben für Header, Footer und andere
|
||||
define('HEADER_COLOR', $currentColorScheme['header']); // Header-Farbe
|
||||
define('FOOTER_COLOR', $currentColorScheme['footer']); // Footer-Farbe
|
||||
define('SECONDARY_COLOR', $currentColorScheme['secondary']); // Sekundärfarbe
|
||||
define('PRIMARY_COLOR', $currentColorScheme['primary']); // Primäre Schriftfarbe
|
||||
|
||||
define('FONT_FAMILY_STATS', 'Arial, Verdana, sans-serif');
|
||||
define('FONT_FAMILY', 'Pacifico, normal, serif');
|
||||
|
||||
// Schriftgrößen
|
||||
define('BASE_FONT_SIZE', '26px'); // Standardgröße für Text
|
||||
define('TITLE_FONT_SIZE', '48px'); // Größe für Überschriften
|
||||
define('STATS_FONT_SIZE', '14px'); // Größe für Statistik-Text
|
||||
|
||||
// Links
|
||||
define('LINK_COLOR', '#3A3A3A'); // Standard Link-Farbe
|
||||
define('LINK_HOVER_COLOR', 'red'); // Link-Farbe beim Hover
|
||||
|
||||
// Hintergrund- und Vordergrundbilder
|
||||
define('BACKGROUND_IMAGE', 'pics/transparent.png'); // Hintergrundbild
|
||||
define('FOREGROUND_IMAGE', 'pics/transparent.png'); // Logo oder Vordergrundbild
|
||||
define('BACKGROUND_OPACITY', 1.0); // Transparenz des Hintergrunds
|
||||
define('FOREGROUND_OPACITY', 1.0); // Transparenz des Logos
|
||||
|
||||
// Anzeigeoptionen
|
||||
define('LOGO_ON', 'OFF'); // Logo anzeigen: ON / OFF
|
||||
define('TEXT_ON', 'ON'); // Begrüßungstext anzeigen: ON / OFF
|
||||
define('LOGO_PATH', 'include/Metavers150.png'); // Pfad zum Logo
|
||||
define('LOGO_WIDTH', '50%'); // Logo-Breite
|
||||
define('LOGO_HEIGHT', '25%'); // Logo-Höhe
|
||||
define('GUIDE_DATA', 'DATA'); // DATA/JSON guide anzeigen.
|
||||
|
||||
// Begrüßungstext
|
||||
// Schriftarten gibt es hier: https://fonts.google.com/
|
||||
// LOGO_FONT Beispiele: 'Pacifico', 'Barriecito','Playfair Display','Comic Neue','Roboto','Lobster','Montserrat','Oswald','Raleway','Merriweather','Lora','Open Sans','Dancing Script','Nunito'
|
||||
define('LOGO_FONT', 'Lobster'); // Schriftart des Logos
|
||||
define('PRIMARY_COLOR_LOGO', '#00FFFF'); // Allgemeine Schriftfarbe Schwarz 000000, Weiss FFFFFF
|
||||
define('WELCOME_TEXT', '<p> Willkommen im ' . SITE_NAME . '</p>');
|
||||
define('WELCOME_TEXT_WIDTH', '50%'); // Standardbreite (z. B. 50%)
|
||||
define('WELCOME_TEXT_HEIGHT', 'auto'); // Standardhöhe (auto für flexible Höhe)
|
||||
define('WELCOME_TEXT_COLOR', PRIMARY_COLOR_LOGO); // Farbe des Textes
|
||||
define('WELCOME_TEXT_ALIGN', 'left'); // Zentriert, links oder rechts
|
||||
define('WELCOME_TEXT_FONT_SIZE', '24px'); // Schriftgröße des Textes
|
||||
|
||||
// Bildanzeige-Einstellungen
|
||||
define('SLIDESHOW_FOLDER', './images'); // Verzeichnis für die Bilder
|
||||
define('IMAGE_SIZE', 'width:100%;height:100%'); // Größe der Bilder (100% für Vollbild)
|
||||
define('SLIDESHOW_DELAY', 9000); // Zeit zwischen Bildern (in ms, 9000 = 9 Sekunden)
|
||||
|
||||
// Einstellungen für Maptiles
|
||||
define('FREI_COLOR', '#0088FF'); // Farbe für freie Koordinaten
|
||||
define('BESCHLAGT_COLOR', '#55C155'); // Farbe für SingleRegion
|
||||
define('VARREGION_COLOR', '#006400'); // Farbe für VarRegion
|
||||
define('CENTER_COLOR', '#FF0000'); // Farbe für Zentrum
|
||||
define('TILE_SIZE', '25px'); // Größe der Farbfelder
|
||||
|
||||
// Zentrum des Grids
|
||||
define('CONF_CENTER_COORD_X', 5500); // X-KOORDINATE DES ZENTRUMS
|
||||
define('CONF_CENTER_COORD_Y', 5500); // Y-KOORDINATE DES ZENTRUMS
|
||||
|
||||
define('MAPS_X', 32);
|
||||
define('MAPS_Y', 32);
|
||||
|
||||
// MOTD-Einstellung: 'Dyn' für dynamisch, 'Static' für statisch
|
||||
define('MOTD', 'Dyn'); // Oder 'Static'
|
||||
|
||||
// Statische MOTD (nur relevant, wenn MOTD auf 'Static' gesetzt ist)
|
||||
define('MOTD_STATIC_MESSAGE', 'Willkommen auf im Grid! Bitte beachte unsere Regeln.');
|
||||
define('MOTD_STATIC_TYPE', 'system');
|
||||
define('MOTD_STATIC_URL_TOS', BASE_URL . '/include/tos.php');
|
||||
define('MOTD_STATIC_URL_DMCA', BASE_URL . '/include/dmca.php');
|
||||
|
||||
// Definiere verschiedene RSS-Feed-URLs getrennt durch Komma.
|
||||
$feed_urls = [
|
||||
'http://opensimulator.org/viewgit/?a=rss-log&p=opensim', // Standard-Feed
|
||||
'https://www.hypergridbusiness.com/feed'
|
||||
];
|
||||
|
||||
// Maximale Anzahl der Einträge pro Feed
|
||||
$max_entries = 50;
|
||||
?>
|
||||
@@ -0,0 +1,248 @@
|
||||
<?php
|
||||
session_start(); // PHP-Session starten
|
||||
|
||||
$title = "Register";
|
||||
include_once 'include/header.php';
|
||||
|
||||
// Liste bekannter Wegwerf-Domains
|
||||
$disposable_domains = [
|
||||
'maildrop.cc',
|
||||
'discard.email',
|
||||
'fakeinbox.org',
|
||||
'disposableemailaddresses:email.co.uk',
|
||||
'temp-mail.ru',
|
||||
'mytrashmail.com',
|
||||
'getairmail.net',
|
||||
'trash-mail.de',
|
||||
'trashmail.me',
|
||||
'mail-temporaire.fr',
|
||||
'nada.email',
|
||||
'tempinbox.xyz',
|
||||
'spambog.com',
|
||||
'spambox.us',
|
||||
'anonbox.net',
|
||||
'mail.kz',
|
||||
'temp-mail.org',
|
||||
'luxusmail.ru',
|
||||
// Weitere Domains hinzufügen
|
||||
];
|
||||
|
||||
// Liste unerwünschter TLDs
|
||||
$blocked_tlds = ['com', 'cn', 'ru', 'pl'];
|
||||
|
||||
// Funktion zur Überprüfung, ob eine E-Mail-Adresse von einer Wegwerf-Domain oder unerwünschten TLD stammt
|
||||
function is_disposable_email($email, $disposable_domains, $blocked_tlds) {
|
||||
$domain = substr(strrchr($email, "@"), 1);
|
||||
$tld = substr(strrchr($domain, "."), 1);
|
||||
return in_array($domain, $disposable_domains) || in_array($tld, $blocked_tlds);
|
||||
}
|
||||
|
||||
// Funktionen direkt in der Datei definieren
|
||||
function generateActivationCode() {
|
||||
return bin2hex(random_bytes(16));
|
||||
}
|
||||
|
||||
function sendVerificationEmail($email, $vorname, $nachname, $activationCode) {
|
||||
$subject = "Ihr Freischaltcode für " . SITE_NAME;
|
||||
$message = "Hallo $vorname $nachname,\n\n";
|
||||
$message .= "Ihr Freischaltcode lautet: $activationCode\n\n";
|
||||
$message .= "Bitte verwenden Sie diesen Code, um Ihre Registrierung abzuschließen.\n\n";
|
||||
$message .= "Mit freundlichen Grüßen,\n";
|
||||
$message .= SITE_NAME;
|
||||
|
||||
$headers = "From: noreply@" . parse_url(BASE_URL, PHP_URL_HOST) . "\r\n";
|
||||
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
|
||||
|
||||
return mail($email, $subject, $message, $headers);
|
||||
}
|
||||
|
||||
function generateUUID() {
|
||||
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0x0fff) | 0x4000,
|
||||
mt_rand(0, 0x3fff) | 0x8000,
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
|
||||
);
|
||||
}
|
||||
|
||||
// Salt erstellen
|
||||
function ospswdsalt() {
|
||||
global $benutzeruuid;
|
||||
$randomuuid = $benutzeruuid;
|
||||
$strrep = str_replace("-", "", $randomuuid);
|
||||
return md5($strrep);
|
||||
}
|
||||
|
||||
// Md5Hash(password) + ":" + passwordSalt
|
||||
function ospswdhash($osPasswd, $osSalt) {
|
||||
return md5(md5($osPasswd) . ":" . $osSalt);
|
||||
}
|
||||
|
||||
// Überprüfen, ob das Formular abgesendet wurde
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
if (isset($_POST['submit_card1'])) {
|
||||
// Daten aus Card1 speichern
|
||||
$_SESSION['osVorname'] = trim($_POST['osVorname']);
|
||||
$_SESSION['osNachname'] = trim($_POST['osNachname']);
|
||||
$_SESSION['osEMail'] = trim($_POST['osEMail']);
|
||||
$_SESSION['osPasswd'] = trim($_POST['osPasswd']);
|
||||
$_SESSION['osPasswd1'] = trim($_POST['osPasswd1']);
|
||||
|
||||
// Validierungen für Card1
|
||||
if (empty($_SESSION['osVorname']) || empty($_SESSION['osNachname']) || empty($_SESSION['osEMail']) || empty($_SESSION['osPasswd']) || empty($_SESSION['osPasswd1'])) {
|
||||
echo "Bitte füllen Sie alle Felder aus.";
|
||||
exit;
|
||||
}
|
||||
if ($_SESSION['osPasswd'] != $_SESSION['osPasswd1']) {
|
||||
echo "Die Passwörter müssen übereinstimmen.";
|
||||
exit;
|
||||
}
|
||||
if (is_disposable_email($_SESSION['osEMail'], $disposable_domains, $blocked_tlds)) {
|
||||
echo "Bitte verwenden Sie keine Wegwerf-E-Mail-Adresse oder eine E-Mail-Adresse mit einer gesperrten Domain.";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Freischaltcode generieren und per E-Mail senden
|
||||
$activationCode = generateActivationCode();
|
||||
$_SESSION['activationCode'] = $activationCode; // Freischaltcode in der Session speichern
|
||||
|
||||
if (!sendVerificationEmail($_SESSION['osEMail'], $_SESSION['osVorname'], $_SESSION['osNachname'], $activationCode)) {
|
||||
echo "Fehler beim Senden der E-Mail.";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Card1 ausblenden und Card2 anzeigen
|
||||
$showCard1 = false;
|
||||
$showCard2 = true;
|
||||
} elseif (isset($_POST['submit_card2'])) {
|
||||
// Überprüfen des Freischaltcodes
|
||||
$enteredCode = trim($_POST['activationCode']);
|
||||
|
||||
if ($enteredCode === $_SESSION['activationCode']) {
|
||||
// Freischaltcode ist korrekt, fahre mit der Registrierung fort
|
||||
|
||||
// Variablen aus der Session holen
|
||||
$osVorname = $_SESSION['osVorname'];
|
||||
$osNachname = $_SESSION['osNachname'];
|
||||
$osEMail = $_SESSION['osEMail'];
|
||||
$osPasswd = $_SESSION['osPasswd'];
|
||||
|
||||
// UUIDs generieren
|
||||
$benutzeruuid = generateUUID();
|
||||
$inventoryuuid = generateUUID();
|
||||
$neuparentFolderID = generateUUID();
|
||||
$neuHauptFolderID = generateUUID();
|
||||
|
||||
// Salt und Hash generieren
|
||||
$osSalt = ospswdsalt();
|
||||
$osHash = ospswdhash($osPasswd, $osSalt);
|
||||
|
||||
// Zeitstempel erstellen
|
||||
$osDatum = time();
|
||||
|
||||
// Datenbankverbindung herstellen
|
||||
$pdo = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD);
|
||||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
// Datenbankzugriffe in createavatarfunc.php durchführen
|
||||
include_once("include/createavatarfunc.php");
|
||||
|
||||
// Erfolgsmeldung anzeigen
|
||||
echo "Registrierung erfolgreich abgeschlossen!";
|
||||
} else {
|
||||
echo "Ungültiger Freischaltcode. Bitte versuchen Sie es erneut.";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Standardmäßig Card1 anzeigen
|
||||
$showCard1 = true;
|
||||
$showCard2 = false;
|
||||
}
|
||||
?>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Register</title>
|
||||
<style>
|
||||
htmlBody {font-family: Arial, sans-serif; background-color: #f4f4f4; margin: 0; padding: 0;}
|
||||
.card1, .card2 {
|
||||
width: 50%;
|
||||
margin: 2em auto;
|
||||
padding: 2em;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
h2 {color: #333;}
|
||||
form label {display: block; margin-bottom: 0.5em; color: #333;}
|
||||
form input[type="text"], form input[type="password"], form input[type="email"] {
|
||||
width: 100%;
|
||||
padding: 0.5em;
|
||||
margin-bottom: 1em;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
}
|
||||
form input[type="submit"] {
|
||||
padding: 0.7em 2em;
|
||||
background-color: #007BFF;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
form input[type="submit"]:hover {background-color: #0056b3;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<main>
|
||||
<!-- Card1: Eingabe von Vorname, Nachname, E-Mail, Passwort und Passwortwiederholung -->
|
||||
<div class="card1" style="display: <?php echo $showCard1 ? 'block' : 'none'; ?>;">
|
||||
<h2>Registrierung - Schritt 1</h2>
|
||||
<form action="" method="post">
|
||||
<div class="form-group">
|
||||
<label for="osVorname">Vorname:</label>
|
||||
<input type="text" name="osVorname" placeholder="John" maxlength="40" required />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="osNachname">Nachname:</label>
|
||||
<input type="text" name="osNachname" placeholder="Doe" maxlength="40" required />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="osEMail">E-Mail:</label>
|
||||
<input type="email" name="osEMail" placeholder="john@doe.com" maxlength="40" required />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="osPasswd">Passwort:</label>
|
||||
<input type="password" name="osPasswd" placeholder="*********" maxlength="40" required />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="osPasswd1">Passwort wiederholen:</label>
|
||||
<input type="password" name="osPasswd1" placeholder="*********" maxlength="40" required />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="submit" name="submit_card1" value="Senden">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Card2: Eingabe des Freischaltcodes -->
|
||||
<div class="card2" style="display: <?php echo $showCard2 ? 'block' : 'none'; ?>;">
|
||||
<h2>Registrierung - Schritt 2</h2>
|
||||
<form action="" method="post">
|
||||
<div class="form-group">
|
||||
<label for="activationCode">Freischaltcode aus der E-Mail:</label>
|
||||
<input type="text" name="activationCode" placeholder="Freischaltcode eingeben" maxlength="36" required />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="submit" name="submit_card2" value="Registrieren">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,128 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Evants Calendar</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; display: flex; justify-content: center; padding: 20px; }
|
||||
.calendar { width: 100%; max-width: 1150px; border: 1px solid #ccc; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); }
|
||||
.header { display: flex; justify-content: space-between; align-items: center; background: #007bff; color: #fff; padding: 10px; }
|
||||
.days { display: grid; grid-template-columns: repeat(7, 1fr); background: #f0f0f0; }
|
||||
.day { text-align: center; padding: 8px 0; font-weight: bold; }
|
||||
.dates { display: grid; grid-template-columns: repeat(7, 1fr); }
|
||||
.date { text-align: left; padding: 10px; border: 1px solid #ccc; position: relative; aspect-ratio: 1 / 1; background-size: cover; background-position: center; display: flex; flex-direction: column; font-size: 0.7em; }
|
||||
.date-number { align-self: flex-start; font-size: 1.4em; z-index: 1; }
|
||||
.event { font-size: 0.8em; background-color: rgba(255, 255, 255, 0.7); padding: 2px 4px; border-radius: 3px; margin-top: auto; text-align: center; z-index: 1; }
|
||||
.event-text { margin: 2px 0; z-index: 1; }
|
||||
.event-text-bold { font-weight: bold; }
|
||||
.image-container { position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; }
|
||||
.image-container img { width: 100%; height: 100%; object-fit: cover; }
|
||||
.event-link { font-weight: bold; text-align: center; display: block; margin-top: auto; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="calendar">
|
||||
<div class="header">
|
||||
<button onclick="changeMonth(-1)"><</button>
|
||||
<h2 id="month-year"></h2>
|
||||
<button onclick="changeMonth(1)">></button>
|
||||
</div>
|
||||
<div class="days">
|
||||
<div class="day">Mo</div>
|
||||
<div class="day">Di</div>
|
||||
<div class="day">Mi</div>
|
||||
<div class="day">Do</div>
|
||||
<div class="day">Fr</div>
|
||||
<div class="day">Sa</div>
|
||||
<div class="day">So</div>
|
||||
</div>
|
||||
<div id="dates" class="dates"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const monthYear = document.getElementById('month-year');
|
||||
const dates = document.getElementById('dates');
|
||||
let currentDate = new Date();
|
||||
|
||||
async function fetchEvents() {
|
||||
const response = await fetch('calendar/events.json');
|
||||
const events = await response.json();
|
||||
return events;
|
||||
}
|
||||
|
||||
async function renderCalendar() {
|
||||
const year = currentDate.getFullYear();
|
||||
const month = currentDate.getMonth();
|
||||
const firstDay = new Date(year, month, 1).getDay();
|
||||
const daysInMonth = new Date(year, month + 1, 0).getDate();
|
||||
const startDay = (firstDay === 0) ? 6 : firstDay - 1; // Montag als erster Tag
|
||||
|
||||
monthYear.textContent = currentDate.toLocaleDateString('de-DE', { month: 'long', year: 'numeric' });
|
||||
dates.innerHTML = '';
|
||||
|
||||
const events = await fetchEvents();
|
||||
|
||||
for (let i = 0; i < startDay; i++) {
|
||||
const emptyCell = document.createElement('div');
|
||||
dates.appendChild(emptyCell);
|
||||
}
|
||||
|
||||
for (let day = 1; day <= daysInMonth; day++) {
|
||||
const dateCell = document.createElement('div');
|
||||
dateCell.classList.add('date');
|
||||
|
||||
const dateNumber = document.createElement('div');
|
||||
dateNumber.classList.add('date-number');
|
||||
dateNumber.textContent = day;
|
||||
dateCell.appendChild(dateNumber);
|
||||
|
||||
const event = events.find(e => new Date(e.date).toDateString() === new Date(year, month, day).toDateString());
|
||||
if (event) {
|
||||
if (event.image) {
|
||||
const imageContainer = document.createElement('div');
|
||||
imageContainer.classList.add('image-container');
|
||||
const img = document.createElement('img');
|
||||
img.src = event.image;
|
||||
imageContainer.appendChild(img);
|
||||
dateCell.appendChild(imageContainer);
|
||||
}
|
||||
|
||||
if (event.color) {
|
||||
dateCell.style.backgroundColor = event.color;
|
||||
}
|
||||
|
||||
if (event.txtcolor) {
|
||||
dateCell.style.color = event.txtcolor;
|
||||
}
|
||||
|
||||
event.texts.forEach((text, index) => {
|
||||
const eventTextElement = document.createElement('div');
|
||||
eventTextElement.classList.add('event-text');
|
||||
if (index === 0) {
|
||||
eventTextElement.classList.add('event-text-bold');
|
||||
}
|
||||
eventTextElement.textContent = text;
|
||||
dateCell.appendChild(eventTextElement);
|
||||
});
|
||||
|
||||
const eventElement = document.createElement('div');
|
||||
eventElement.classList.add('event');
|
||||
const lastWord = event.link.split('/').pop();
|
||||
eventElement.innerHTML = `<a href="${event.link}" target="_blank" class="event-link">${lastWord}</a>`;
|
||||
dateCell.appendChild(eventElement);
|
||||
}
|
||||
|
||||
dates.appendChild(dateCell);
|
||||
}
|
||||
}
|
||||
|
||||
function changeMonth(offset) {
|
||||
currentDate.setMonth(currentDate.getMonth() + offset);
|
||||
renderCalendar();
|
||||
}
|
||||
|
||||
renderCalendar();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+201
@@ -0,0 +1,201 @@
|
||||
<?php
|
||||
// Passwortschutz
|
||||
session_start();
|
||||
$password = 'dein_passwort'; // Ändere dieses Passwort
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['password'])) {
|
||||
if ($_POST['password'] === $password) {
|
||||
$_SESSION['authenticated'] = true;
|
||||
} else {
|
||||
echo "<script>alert('Falsches Passwort.');</script>";
|
||||
}
|
||||
}
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['logout'])) {
|
||||
session_destroy();
|
||||
header("Location: eventedit.php"); // Wo ist dieser Editor.
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!isset($_SESSION['authenticated'])) {
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Events Calendar Editor</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; padding: 20px; max-width: 800px; margin: auto; }
|
||||
h2 { text-align: center; }
|
||||
.input-group { margin-bottom: 15px; }
|
||||
input[type="password"] { width: 100%; padding: 8px; box-sizing: border-box; }
|
||||
button { padding: 10px 20px; background: #007bff; color: #fff; border: none; border-radius: 5px; cursor: pointer; }
|
||||
button:hover { background: #0056b3; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Events Calendar Editor</h2>
|
||||
<form method="POST">
|
||||
<div class="input-group">
|
||||
<input type="password" name="password" placeholder="Passwort eingeben" required />
|
||||
</div>
|
||||
<button type="submit">Login</button>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
exit;
|
||||
}
|
||||
|
||||
// Funktion zum Speichern der Events in einer JSON-Datei
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['events'])) {
|
||||
$events = json_decode($_POST['events'], true);
|
||||
$backupFilename = 'events_' . date('Y-m-d_H-i-s') . '.bak.json';
|
||||
copy('calendar/events.json', $backupFilename);
|
||||
file_put_contents('calendar/events.json', json_encode($events, JSON_PRETTY_PRINT));
|
||||
echo "<script>alert('Events erfolgreich gespeichert!');</script>";
|
||||
}
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Events Editor</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; padding: 20px; max-width: 800px; margin: auto; }
|
||||
h1 { text-align: center; }
|
||||
.input-group { margin-bottom: 15px; }
|
||||
label { display: block; margin-bottom: 5px; }
|
||||
input[type="text"], input[type="date"], input[type="color"], textarea { width: 100%; padding: 8px; box-sizing: border-box; }
|
||||
button { padding: 10px 20px; background: #007bff; color: #fff; border: none; border-radius: 5px; cursor: pointer; }
|
||||
button:hover { background: #0056b3; }
|
||||
.event-list { margin-top: 20px; }
|
||||
.event-item { border: 1px solid #ccc; padding: 10px; border-radius: 5px; margin-bottom: 10px; }
|
||||
.event-item h3 { margin: 0 0 10px; }
|
||||
form.logout { display: flex; justify-content: center; margin-top: 20px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Events Editor</h1>
|
||||
|
||||
<div id="editor">
|
||||
<div class="input-group">
|
||||
<label for="event-date">Datum:</label>
|
||||
<input type="date" id="event-date" />
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<label for="event-image">Bild URL:</label>
|
||||
<input type="text" id="event-image" />
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<label for="event-texts">Texte (kommagetrennt):</label>
|
||||
<textarea id="event-texts"></textarea>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<label for="event-link">Link:</label>
|
||||
<input type="text" id="event-link" />
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<label for="event-color">Hintergrundfarbe:</label>
|
||||
<input type="color" id="event-color" />
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<label for="event-txtcolor">Schriftfarbe:</label>
|
||||
<input type="color" id="event-txtcolor" />
|
||||
</div>
|
||||
<button onclick="addEvent()">Event hinzufügen</button>
|
||||
<button onclick="downloadEvents()">Download</button>
|
||||
|
||||
<div class="event-list" id="event-list"></div>
|
||||
|
||||
<form method="POST" class="logout">
|
||||
<button type="submit" name="logout">Session beenden</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
let events = [];
|
||||
|
||||
async function fetchEvents() {
|
||||
const response = await fetch('calendar/events.json');
|
||||
events = await response.json();
|
||||
displayEvents();
|
||||
}
|
||||
|
||||
function displayEvents() {
|
||||
const eventList = document.getElementById('event-list');
|
||||
eventList.innerHTML = '';
|
||||
events.forEach((event, index) => {
|
||||
const eventItem = document.createElement('div');
|
||||
eventItem.classList.add('event-item');
|
||||
eventItem.innerHTML = `
|
||||
<h3>${event.date}</h3>
|
||||
<p><strong>Bild URL:</strong> ${event.image}</p>
|
||||
<p><strong>Texte:</strong> ${event.texts.join(', ')}</p>
|
||||
<p><strong>Link:</strong> <a href="${event.link}" target="_blank">${event.link}</a></p>
|
||||
<p><strong>Hintergrundfarbe:</strong> <span style="background-color:${event.color}; padding: 2px 5px;">${event.color}</span></p>
|
||||
<p><strong>Schriftfarbe:</strong> <span style="background-color:${event.txtcolor}; padding: 2px 5px;">${event.txtcolor}</span></p>
|
||||
<button onclick="deleteEvent(${index})">Löschen</button>
|
||||
`;
|
||||
eventList.appendChild(eventItem);
|
||||
});
|
||||
}
|
||||
|
||||
function addEvent() {
|
||||
const date = document.getElementById('event-date').value;
|
||||
const image = document.getElementById('event-image').value;
|
||||
const texts = document.getElementById('event-texts').value.split(',');
|
||||
const link = document.getElementById('event-link').value;
|
||||
const color = document.getElementById('event-color').value;
|
||||
const txtcolor = document.getElementById('event-txtcolor').value;
|
||||
|
||||
if (date && texts.length > 0 && link) {
|
||||
events.push({ date, image, texts, link, color, txtcolor });
|
||||
displayEvents();
|
||||
} else {
|
||||
alert('Bitte alle Felder ausfüllen.');
|
||||
}
|
||||
}
|
||||
|
||||
function deleteEvent(index) {
|
||||
events.splice(index, 1);
|
||||
displayEvents();
|
||||
}
|
||||
|
||||
function formatJSON(json) {
|
||||
return JSON.stringify(json, null, 2);
|
||||
}
|
||||
|
||||
function downloadEvents() {
|
||||
const formattedEvents = formatJSON(events);
|
||||
const blob = new Blob([formattedEvents], { type: 'application/json' });
|
||||
const link = document.createElement('a');
|
||||
link.href = URL.createObjectURL(blob);
|
||||
link.download = 'calendar/events.json';
|
||||
link.click();
|
||||
}
|
||||
|
||||
async function saveEvents() {
|
||||
const formattedEvents = formatJSON(events);
|
||||
const formData = new FormData();
|
||||
formData.append('events', formattedEvents);
|
||||
|
||||
const response = await fetch('editor.php', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
});
|
||||
|
||||
if (response.ok) {
|
||||
alert('Events erfolgreich gespeichert!');
|
||||
} else {
|
||||
alert('Fehler beim Speichern.');
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', fetchEvents);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
$title = "Grid List";
|
||||
include 'include/header.php';
|
||||
?>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Grid List</title>
|
||||
<style>
|
||||
.listbody { font-family: Arial, sans-serif; }
|
||||
.grid-list {
|
||||
list-style-type: none;
|
||||
padding: 10px;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
.grid-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
border: 1px solid #ccc;
|
||||
padding: 10px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.grid-link {
|
||||
margin-left: 10px;
|
||||
background-color: #007bff;
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 5px 10px;
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.search-bar {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
async function loadGrids() {
|
||||
const response = await fetch('include/gridlist.csv'); // include/gridlist.csv
|
||||
const data = await response.text();
|
||||
const lines = data.split('\n').slice(1); // Erste Zeile ignorieren (Header)
|
||||
const gridList = document.getElementById('gridList');
|
||||
|
||||
lines.forEach(line => {
|
||||
const [gridName, loginURI] = line.split(',');
|
||||
if (!gridName || !loginURI) return; // Leere Zeilen ignorieren
|
||||
|
||||
const li = document.createElement('li');
|
||||
li.className = 'grid-item';
|
||||
|
||||
const btn = document.createElement('button');
|
||||
btn.className = 'grid-link';
|
||||
btn.textContent = 'Grid Link';
|
||||
btn.onclick = () => window.location.href = `secondlife:///app/gridmanager/addgrid/${loginURI.trim()}`;
|
||||
|
||||
// Lücke erzeugen
|
||||
const spacer = document.createElement('div');
|
||||
spacer.style.width = "20px"; // Breite der Lücke anpassen
|
||||
|
||||
const span = document.createElement('span');
|
||||
span.textContent = gridName.trim();
|
||||
|
||||
li.appendChild(btn);
|
||||
li.appendChild(spacer); // Füge den Abstandshalter ein
|
||||
li.appendChild(span);
|
||||
gridList.appendChild(li);
|
||||
});
|
||||
}
|
||||
|
||||
function filterGrids() {
|
||||
const input = document.getElementById('searchInput').value.toUpperCase();
|
||||
document.querySelectorAll('.grid-item').forEach(item => {
|
||||
item.style.display = item.textContent.toUpperCase().includes(input) ? "" : "none";
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', loadGrids);
|
||||
</script>
|
||||
</head>
|
||||
<listbody>
|
||||
|
||||
<h1>Grid List</h1>
|
||||
<div class="search-bar">
|
||||
<input type="text" id="searchInput" onkeyup="filterGrids()" placeholder="Search for grids...">
|
||||
</div>
|
||||
<ul id="gridList" class="grid-list"></ul>
|
||||
|
||||
</listbody>
|
||||
</html>
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
$title = "GridStatus";
|
||||
include_once 'include/header.php';
|
||||
// define('BASE_URL', 'http://yourdomain.com');
|
||||
/*
|
||||
; Simulator Stats URI
|
||||
; Aktivieren Sie JSON-Simulatordaten, indem Sie einen URI-Namen festlegen (Grosschreibung-/Kleinschreibung beachten)
|
||||
Stats_URI = "jsonSimStats"
|
||||
*/
|
||||
?>
|
||||
|
||||
<main>
|
||||
|
||||
<style>
|
||||
h2 {font-family: <?php echo FONT_FAMILY; ?>;font-size: <?php echo TITLE_FONT_SIZE; ?>;}
|
||||
/* #statitstics {font-family: <?php echo FONT_FAMILY; ?>;font-size: <?php echo TITLE_FONT_SIZE; ?>;} */
|
||||
.pacifico-regular {font-family: "Pacifico", serif; font-weight: 400; font-style: normal;}
|
||||
.material-symbols-outlined {font-variation-settings:'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24 }
|
||||
</style>
|
||||
|
||||
<h2><?php echo SITE_NAME; ?> GridStatus Overview</h2>
|
||||
<p>All information related to the GridStatus can be found here.</p>
|
||||
|
||||
</main>
|
||||
|
||||
<?php
|
||||
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
|
||||
|
||||
$result1 = mysqli_query($con, "SELECT COUNT(*) FROM Presence");
|
||||
list($totalUsers) = mysqli_fetch_row($result1);
|
||||
|
||||
$result2 = mysqli_query($con, "SELECT COUNT(*) FROM regions");
|
||||
list($totalRegions) = mysqli_fetch_row($result2);
|
||||
|
||||
$result3 = mysqli_query($con, "SELECT COUNT(*) FROM UserAccounts");
|
||||
list($totalAccounts) = mysqli_fetch_row($result3);
|
||||
|
||||
$result4 = mysqli_query($con, "SELECT COUNT(*) FROM GridUser WHERE Login > (UNIX_TIMESTAMP() - (30*86400))");
|
||||
list($activeUsers) = mysqli_fetch_row($result4);
|
||||
|
||||
$result5 = mysqli_query($con, "SELECT COUNT(*) FROM GridUser");
|
||||
list($totalGridAccounts) = mysqli_fetch_row($result5);
|
||||
|
||||
echo "<div id='statitstics'>";
|
||||
echo "<b>Nutzer im Grid</font>: " . $totalUsers . "<br>";
|
||||
echo "Regionen</font>: " . $totalRegions . "<br>";
|
||||
echo "Aktiv in den letzten 30 Tagen</font>: " . $activeUsers . "<br>";
|
||||
echo "Inworld Nutzer</font>: " . $totalAccounts . "<br>";
|
||||
echo "HG Grid Nutzer</font>: " . $totalGridAccounts . "<br>";
|
||||
?>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
|
||||
<script src="http://www.google.com/jsapi"></script>
|
||||
<script>
|
||||
SimFPS = 0;
|
||||
PhyFPS = 0;
|
||||
Memory = 0;
|
||||
RootAg = 0;
|
||||
ChldAg = 0;
|
||||
Uptime = "";
|
||||
Version = "";
|
||||
var url = BASE_URL + ":9010/jsonSimStats/?callback=?";
|
||||
|
||||
setInterval(function() {$.getJSON(url, function(data) {
|
||||
SimFPS = Math.round(data.SimFPS);
|
||||
PhyFPS = Math.round(data.PhyFPS);
|
||||
Memory = Math.round(data.Memory);
|
||||
ChldAg = data.ChldAg;
|
||||
RootAg = data.RootAg;
|
||||
Uptime = data.Uptime;
|
||||
Version = data.Version;
|
||||
drawChart();
|
||||
setTags();
|
||||
})}, 3000);
|
||||
|
||||
google.load("visualization", "1.0", {packages:["gauge"]});
|
||||
google.setOnLoadCallback(drawChart);
|
||||
|
||||
function drawChart() {
|
||||
var cdata = new google.visualization.DataTable();
|
||||
cdata.addColumn('string', 'Label');
|
||||
cdata.addColumn('number', 'Value');
|
||||
cdata.addRows(3);
|
||||
cdata.setValue(0, 0, 'SimFPS');
|
||||
cdata.setValue(0, 1, SimFPS);
|
||||
cdata.setValue(1, 0, 'PhyFPS');
|
||||
cdata.setValue(1, 1, PhyFPS);
|
||||
cdata.setValue(2, 0, 'Memory');
|
||||
cdata.setValue(2, 1, Memory);
|
||||
var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
|
||||
var options = {width: 400, height: 120, redFrom: 90, redTo: 100, yellowFrom:75, yellowTo: 90, minorTicks: 5};
|
||||
chart.draw(cdata, options);
|
||||
}
|
||||
|
||||
function setTags() {
|
||||
$("#par-uptime").text("Uptime: " + Uptime);
|
||||
$("#par-ragent").text("Root Agent: " + RootAg);
|
||||
$("#par-version").text("Version: " + Version);
|
||||
$("#par-cagent").text("Child Agent: " + ChldAg);
|
||||
}
|
||||
</script>
|
||||
|
||||
<body>
|
||||
<br>
|
||||
= <?php echo SITE_NAME; ?> Development Region =
|
||||
<table>
|
||||
<tr>
|
||||
<td><div id="par-version">Version:</div></td>
|
||||
<td><div id="par-ragent">Root Agent:</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div id="par-uptime">Uptime:</div></td>
|
||||
<td><div id="par-cagent">Child Agent:</div></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="chart_div"></div>
|
||||
</body>
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
$title = "GridStatusRSS";
|
||||
include_once 'include/header.php';
|
||||
|
||||
// Cache-Dateipfad
|
||||
$feedcache_path = __DIR__.'/feed_cache.html';
|
||||
$feedcache_max_age = 1800; // Cache max. 30 Minuten alt
|
||||
|
||||
// Prüfen, ob Cache neu geladen werden muss
|
||||
if (!file_exists($feedcache_path) or filemtime($feedcache_path) < (time() - $feedcache_max_age)) {
|
||||
$output = '';
|
||||
|
||||
foreach ($feed_urls as $feed_url) {
|
||||
// Feed abrufen
|
||||
$xml = @simplexml_load_string(file_get_contents($feed_url));
|
||||
|
||||
if (!$xml) {
|
||||
$output .= "<p>Fehler beim Laden des Feeds: <strong>" . htmlspecialchars($feed_url) . "</strong></p>";
|
||||
continue;
|
||||
}
|
||||
|
||||
$output .= '<h2>' . htmlspecialchars($xml->channel->title) . '</h2>';
|
||||
$output .= '<p><a href="' . htmlspecialchars($xml->channel->link) . '">Feed öffnen</a></p>';
|
||||
$output .= '<ul>';
|
||||
|
||||
$counter = 0;
|
||||
foreach ($xml->channel->item as $entry) {
|
||||
if (++$counter > $max_entries) break;
|
||||
|
||||
$date = date('d.m.Y', strtotime($entry->pubDate));
|
||||
$output .= '<li><a href="'.htmlspecialchars($entry->link).'" title="'.$date.'">'.htmlspecialchars($entry->title).'</a> <small>('.$date.')</small></li>';
|
||||
}
|
||||
|
||||
$output .= '</ul>';
|
||||
}
|
||||
|
||||
echo $output;
|
||||
//file_put_contents($feedcache_path, $output);
|
||||
} else {
|
||||
echo file_get_contents($feedcache_path);
|
||||
}
|
||||
?>
|
||||
<br><br><br><br>
|
||||
@@ -0,0 +1,183 @@
|
||||
<?php
|
||||
$title = "Guide";
|
||||
include_once "include/config.php";
|
||||
|
||||
// Fehlerbehandlung für die JSON-Datei
|
||||
$json = file_get_contents('include/destinations.json');
|
||||
if ($json === false) {
|
||||
die('Fehler beim Laden der JSON-Datei.');
|
||||
}
|
||||
$data = json_decode($json, true);
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
die('Fehler beim Dekodieren der JSON-Datei.');
|
||||
}
|
||||
|
||||
// Datenbankverbindung mit Fehlerbehandlung
|
||||
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
|
||||
if (mysqli_connect_errno()) {
|
||||
die('Fehler bei der Verbindung zur Datenbank: ' . mysqli_connect_error());
|
||||
}
|
||||
?>
|
||||
|
||||
<html>
|
||||
<title>Destination Guide</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; background-color: <?= SECONDARY_COLOR ?>; padding: 10px; color: <?= PRIMARY_COLOR ?>; }
|
||||
|
||||
h1 { font-size: 16px; text-align: center; color: <?= PRIMARY_COLOR ?>; }
|
||||
|
||||
.button-container { text-align: center; margin-bottom: 15px; }
|
||||
button { padding: 10px; margin: 5px; cursor: pointer; background-color: <?= PRIMARY_COLOR ?>; color: white; border: none; border-radius: 5px; }
|
||||
|
||||
.list-container { display: none; justify-content: flex-start; flex-wrap: nowrap; overflow-x: auto; gap: 10px; border-radius: 5px;}
|
||||
.grid-container { display: none; flex-wrap: wrap; gap: 10px; justify-content: center; border-radius: 5px;}
|
||||
|
||||
.region-box { background: <?= HEADER_COLOR ?>; padding: 10px; border-radius: 5px; display: flex; align-items: center; color: <?= PRIMARY_COLOR ?>; }
|
||||
.region-icon { margin-right: 5px; font-size: 16px; color: <?= PRIMARY_COLOR ?>; }
|
||||
|
||||
.grid-item { width: 23%; padding: 10px; border: 1px solid #aaa; background: <?= HEADER_COLOR ?>; text-align: center; border-radius: 5px; color: <?= PRIMARY_COLOR ?>; }
|
||||
/* .grid-link { display: block; margin-top: 5px; padding: 5px; background: <?= FOOTER_COLOR ?>; color: white; border-radius: 3px; text-decoration: none; } */
|
||||
.grid-link { display: block; margin-top: 5px; padding: 5px; background: #0066cc; color: white; border-radius: 3px; text-decoration: none; }
|
||||
|
||||
.search-bar { width: 23%; padding: 10px; border: 1px solid #aaa; background: #0066cc; color: white; text-align: center; border-radius: 5px; }
|
||||
|
||||
.hop-buttons { display: flex; gap: 5px; margin-top: 5px; }
|
||||
/* .hop-button { padding: 5px; background: <?= FOOTER_COLOR ?>; color: white; border-radius: 3px; text-decoration: none; } */
|
||||
.hop-button { padding: 5px; background: #004080; color: white; border-radius: 5px; text-decoration: none; }
|
||||
</style>
|
||||
|
||||
<body>
|
||||
|
||||
<h1><?php echo SITE_NAME; ?> Destination Guide</h1>
|
||||
|
||||
<!-- Auswahl Buttons -->
|
||||
<div class="button-container">
|
||||
<button onclick="showJSON()">Regionsliste JSON</button>
|
||||
<button onclick="showDatabase()">Regionsliste Database</button>
|
||||
<button onclick="showGridList()">Gridliste CSV</button>
|
||||
</div>
|
||||
|
||||
<!-- ########################## JSON-Regionsliste ######################################## -->
|
||||
<div id="jsonList" class="guidebody" style="display: <?= (GRIDLIST_VIEW == 'json') ? 'flex' : 'none' ?>; flex-wrap: wrap; gap: 10px; justify-content: flex-start; border-radius: 5px; padding: 10px;">
|
||||
<?php foreach ($data as $category => $destinations): ?>
|
||||
<fieldset style='flex: 1; min-width: 250px; max-width: 350px;'>
|
||||
<legend><?= htmlspecialchars(ucfirst($category)) ?></legend>
|
||||
<div class='region-container' style='display: flex; flex-wrap: wrap; gap: 10px; border-radius: 5px; padding: 10px;'>
|
||||
<?php foreach ($destinations as $destination): ?>
|
||||
<div class="region-box">
|
||||
<a href="<?= htmlspecialchars($destination['url']) ?>" target="_blank">
|
||||
<img src="<?= htmlspecialchars($destination['image']) ?>" alt="<?= htmlspecialchars($destination['name']) ?>" width="50" height="50" style="border-radius:5px; margin-right:10px; padding: 10px;">
|
||||
</a>
|
||||
<span><?= htmlspecialchars($destination['name']) ?></span>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</fieldset>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- ######################################## Datenbank-Regionsliste ######################################## -->
|
||||
<!-- todo: Abstand hinzufügen. -->
|
||||
<div id="databaseList" class="list-container" style="padding: 10px; display: <?= (GRIDLIST_VIEW == 'database') ? 'flex' : 'none' ?>;">
|
||||
<?php
|
||||
$sql = "SELECT regionName, serverIP, serverPort FROM regions ORDER BY last_seen DESC LIMIT 10";
|
||||
$resultregions = mysqli_query($con, $sql);
|
||||
|
||||
while ($dsatz = mysqli_fetch_assoc($resultregions)) {
|
||||
$region = htmlspecialchars($dsatz["regionName"]);
|
||||
$ip = htmlspecialchars($dsatz["serverIP"]);
|
||||
$port = htmlspecialchars($dsatz["serverPort"]);
|
||||
|
||||
// Link für den "Hop"-Button
|
||||
$regionslink = "hop://$ip:$port/$region/128/128/23";
|
||||
|
||||
echo '<div class="region-box" style="display: flex; flex-direction: column; align-items: flex-start; margin-bottom: 10px; border-radius: 5px; padding: 10px;">';
|
||||
// Button mit Regionsname
|
||||
echo "<button style='margin-bottom: 5px;'>$region</button>";
|
||||
// Button mit "Hop"
|
||||
echo "<a href='$regionslink' class='hop-button' target='_blank' style='text-align: center;'>Hop $region</a>";
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
mysqli_close($con);
|
||||
?>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- ##################### Grid Teleport Liste ######################################## -->
|
||||
<div id="gridList" class="grid-container" style="display: <?= (GRIDLIST_VIEW == 'grid') ? 'flex' : 'none' ?>;">
|
||||
<div class="search-bar">
|
||||
<p>Search</p>
|
||||
<input type="text" id="searchInput" onkeyup="filterGrids()" placeholder="Suche nach Grids...">
|
||||
</div>
|
||||
<?php
|
||||
if (($handle = fopen(GRIDLIST_FILE, "r")) !== false) {
|
||||
fgetcsv($handle); // Überspringe die Header-Zeile
|
||||
while (($data = fgetcsv($handle)) !== false) {
|
||||
$gridName = htmlspecialchars($data[0]);
|
||||
$loginURI = htmlspecialchars($data[1]);
|
||||
|
||||
// Erster Link: Direkter Link zum Grid
|
||||
$gridlink1 = "secondlife:///app/gridmanager/addgrid/$loginURI";
|
||||
|
||||
// Zweiter Link: Link ohne spezifische Aktion
|
||||
// todo: Fehler bei hop: http:// kann auch https:// sein
|
||||
$gridlink2 = "hop://http://$loginURI/ ";
|
||||
|
||||
|
||||
echo '<div class="grid-item">';
|
||||
echo "<span>$gridName</span>";
|
||||
echo '<div class="hop-buttons">';
|
||||
echo "<a href='$gridlink1' class='grid-link' target='_blank' style='width: 60%; text-align: center;'>Viewer Grid Eintrag</a>";
|
||||
echo "<a href='$gridlink2' class='grid-link' target='_blank' style='width: 100%; text-align: center;'>Hop $gridName</a>";
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
fclose($handle);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function filterGrids() {
|
||||
const input = document.getElementById('searchInput').value.toUpperCase();
|
||||
document.querySelectorAll('.grid-item').forEach(item => {
|
||||
item.style.display = item.textContent.toUpperCase().includes(input) ? "" : "none";
|
||||
});
|
||||
}
|
||||
|
||||
function showJSON() {
|
||||
document.getElementById('jsonList').style.display = 'flex';
|
||||
document.getElementById('databaseList').style.display = 'none';
|
||||
document.getElementById('gridList').style.display = 'none';
|
||||
}
|
||||
|
||||
function showDatabase() {
|
||||
document.getElementById('jsonList').style.display = 'none';
|
||||
document.getElementById('databaseList').style.display = 'flex';
|
||||
document.getElementById('gridList').style.display = 'none';
|
||||
}
|
||||
|
||||
function showGridList() {
|
||||
document.getElementById('jsonList').style.display = 'none';
|
||||
document.getElementById('databaseList').style.display = 'none';
|
||||
document.getElementById('gridList').style.display = 'flex';
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
<?php if (GRIDLIST_VIEW == 'json'): ?>
|
||||
showJSON();
|
||||
<?php elseif (GRIDLIST_VIEW == 'database'): ?>
|
||||
showDatabase();
|
||||
<?php elseif (GRIDLIST_VIEW == 'grid'): ?>
|
||||
showGridList();
|
||||
<?php endif; ?>
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
$title = "Help";
|
||||
include_once 'include/header.php';
|
||||
|
||||
// Sprachauswahl (Standard: Deutsch)
|
||||
$lang = isset($_GET['lang']) ? $_GET['lang'] : 'de';
|
||||
|
||||
// Variablen für die Grid-URL
|
||||
$txt1 = BASE_URL;
|
||||
$txt2 = GRID_PORT;
|
||||
?>
|
||||
|
||||
<style>
|
||||
.container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
color: rgb(31, 31, 31); /* Korrektur: 'color' statt 'Color' */
|
||||
background-color: rgb(238, 241, 241);
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.language-switcher {
|
||||
text-align: right;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.language-switcher a {
|
||||
text-decoration: none;
|
||||
color: #007BFF;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.language-switcher a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: #f4f4f4;
|
||||
padding: 2px 5px;
|
||||
border-radius: 3px;
|
||||
font-family: monospace;
|
||||
}
|
||||
</style>
|
||||
|
||||
<main class="container">
|
||||
<!-- Sprachauswahl -->
|
||||
<div class="language-switcher">
|
||||
<a href="?lang=de">Deutsch</a> | <a href="?lang=en">English</a>
|
||||
</div>
|
||||
|
||||
<?php if ($lang == 'de'): ?>
|
||||
<!-- Deutsche Version -->
|
||||
<section>
|
||||
<h1>OpenSim Viewer mit einem Grid verbinden</h1>
|
||||
<h2>Schritt-für-Schritt Anleitung</h2>
|
||||
<ol>
|
||||
<li>Lade einen kompatiblen OpenSim-Viewer herunter (z. B. Firestorm).</li>
|
||||
<li>Installiere den Viewer auf deinem Computer.</li>
|
||||
<li>Starte den Viewer und öffne die Einstellungen.</li>
|
||||
<li>Suche den Bereich <strong>"Grids"</strong> oder <strong>"Grid-Manager"</strong>.</li>
|
||||
<li>Klicke auf <strong>"Neues Grid hinzufügen"</strong> oder eine ähnliche Option.</li>
|
||||
<li>Gib die <strong>Login-URL</strong> deines Grids ein (z. B. <code><?php echo $txt1, $txt2; ?>/</code>).</li>
|
||||
<li>Klicke auf <strong>"Hinzufügen" oder "Speichern"</strong>.</li>
|
||||
<li>Wähle das Grid aus der Liste und gib deine Anmeldedaten ein.</li>
|
||||
<li>Klicke auf <strong>"Anmelden"</strong>, um das Grid zu betreten.</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Tipps</h2>
|
||||
<ul>
|
||||
<li>Stelle sicher, dass du die richtige Grid-URL hast.</li>
|
||||
<li>Falls der Viewer das Grid nicht erkennt, prüfe die Serververbindung.</li>
|
||||
<li>Nutze die neueste Version deines Viewers für beste Kompatibilität.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<?php else: ?>
|
||||
<!-- Englische Version -->
|
||||
<section>
|
||||
<h1>Connecting an OpenSim Viewer to a Grid</h1>
|
||||
<h2>Step-by-Step Guide</h2>
|
||||
<ol>
|
||||
<li>Download a compatible OpenSim viewer (e.g., Firestorm).</li>
|
||||
<li>Install the viewer on your computer.</li>
|
||||
<li>Start the viewer and open the settings.</li>
|
||||
<li>Look for the <strong>"Grids"</strong> or <strong>"Grid Manager"</strong> section.</li>
|
||||
<li>Click on <strong>"Add New Grid"</strong> or a similar option.</li>
|
||||
<li>Enter the <strong>login URL</strong> of your grid (e.g., <code><?php echo $txt1, $txt2; ?>/</code>).</li>
|
||||
<li>Click <strong>"Add" or "Save"</strong>.</li>
|
||||
<li>Select the grid from the list and enter your login credentials.</li>
|
||||
<li>Click <strong>"Login"</strong> to enter the grid.</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Tips</h2>
|
||||
<ul>
|
||||
<li>Make sure you have the correct grid URL.</li>
|
||||
<li>If the viewer does not recognize the grid, check the server connection.</li>
|
||||
<li>Use the latest version of your viewer for best compatibility.</li>
|
||||
</ul>
|
||||
</section>
|
||||
<?php endif; ?>
|
||||
</main>
|
||||
|
||||
<?php include_once 'include/footer.php'; ?>
|
||||
@@ -0,0 +1,258 @@
|
||||
'mailexpire.com', 'spamtrail.com', 'wwwnew.eu', '007addict.com', '012.net.il', '0451.com', '0815.ru', '10minutemail.com',
|
||||
'123greetings.com', '12wqqwmeds.com', '143.red-83-49-70.dynamicip.rima-tde.net', '163.com', '163data.com.cn', '168.com',
|
||||
'168city.com', '169.cc', '188mail.com', '1funplace.com', '1net.gr', '2-mail.com',
|
||||
'208.red-88-7-51.staticip.rima-tde.net', '212-127-152-19.cable.quicknet.nl', '212.com', '21cn.com',
|
||||
'238-133-231-201.fibertel.com.ar', '263.net.cn', '2XS.net', '2bsure.com', '2cute4u.co.uk', '2d.com', '2die4.com',
|
||||
'2friend.com', '2hotforyou.net', '2ndmail.com', '2rd.net', '33edmeds.com', '37.com', '3d-painting.com', '444.net',
|
||||
'45pharmes.com', '4g546ufgfrh5.org', '4g54asd5.org', '4hismail.com', '4worldmail.com', '50mail.com', '53.com',
|
||||
'53533b3b.cable.casema.nl', '6210.hu', '70.44.150.107.res-cmts.val.ptd.net', '702mail.co.za',
|
||||
'73.181.192.61.tokyo.flets.alpha-net.ne.jp', '775rgt.com', '84-232-149-95.rdsnet.ro', '86-122-52-191.rdsnet.ro',
|
||||
'88cresa.com', '97rock.com', 'ABEDRABBO.COM.NETSOLMAIL.NET', 'ADSL-140-41.myt.mu', 'ADSL-TPLUS-80-55.telecomplus.net',
|
||||
'COM.NETSOLMAIL.NET', 'COMCAST.NET', 'INBOUND.ABEDRABBO.COM.NETSOLMAIL.NET', 'Inktel.com', 'KX100.NET',
|
||||
'LearnLink.Emory.Edu', 'MAILCONTROL.com', 'MX01.KONTENT.De', 'Math.Princeton.EDU', 'MyPersonalEmail.com',
|
||||
'NETSOLMAIL.NET', 'OFSfa-03p5-110.ppp11.odn.ad.jp', 'OFSfa-04p3-188.ppp11.odn.ad.jp', 'SAUSGW01.amd.com', 'SPRIGGS.com',
|
||||
'Safe-mail.net', 'ShowFans.com', 'SpamMotel.com', 'Supergewinne.de', 'TMP.com', 'VideoMailStudio.com',
|
||||
'W2a14.w.pppool.de', 'Wappi.com', 'WaveCom.CA', 'a-mx.apm-internet.net', 'a-z-o.ch', 'a2000.nl', 'aaahmail.com',
|
||||
'aacgroup.co.uk', 'aaronsen.com', 'aaronsw.com', 'ab.cyberhome.ne.jp', 'abacus.ba', 'aball.de', 'abc123.ru', 'abcom.se',
|
||||
'abedofroses.com', 'abeille-web.com', 'abeisv.specialnotice.info', 'abelcine.com', 'aberton.ru', 'abess.com',
|
||||
'abestco.com', 'abirnet.co.il', 'abk.dk', 'abkawa.de', 'abm.com.pl', 'abmemory.com', 'abo.ch', 'abodetao.com',
|
||||
'abody.freeserve.co.uk', 'abramsart.com', 'abril.com.br', 'absolutecomfort.ru', 'absoluttrade.ru', 'absound.ca',
|
||||
'abu.org.my', 'abysse.net', 'ac-service.com', 'academyhr.com', 'accessdata.com', 'accmail.com', 'accomline.com',
|
||||
'accopmu.ru', 'acds.es', 'acihouston.com', 'acm.org', 'acmecity.com', 'acornonline.com', 'actasap.com',
|
||||
'activatormail.com', 'ad.jp', 'adaap.com', 'adamshall.com', 'adexec.com', 'adhost.com', 'adpepper.em.falkag.de',
|
||||
'adresse.de', 'adsl-598411e4.monradsl.monornet.hu', 'adsl.datanet.hu', 'adsl.proxad.net', 'adsl.tpnet.pl',
|
||||
'adsl196-28-98-217-196.adsl196-12.iam.net.ma', 'adultmail.tv', 'afpa.fr', 'afreeinternet.com', 'afrobacon.com',
|
||||
'agency.osha.eu.int', 'ai.net', 'airmail.net', 'airtelbroadband.in', 'al-islam.com', 'alacarta.com', 'alcplan.com',
|
||||
'alex4all.com', 'alexandria.cc', 'aley.com', 'alfc.com', 'aliancarep.com.br', 'allasianuk.com', 'allesklar.de',
|
||||
'allin1.com', 'alloymail.com', 'allstarz.org', 'alltel.net', 'almajal-omulibya.com', 'alpha-net.ne.jp',
|
||||
'alshamil.net.ae', 'altavista.fr', 'altavista.nl', 'altern.org', 'ameritech.net', 'amnestymail.com', 'amuro.net',
|
||||
'andylau.net', 'another.com', 'ansluten.com', 'antichef.net', 'antronomia.com', 'appriver.com',
|
||||
'area.city.shiroishi.miyagi.jp', 'ariadne-t.gr', 'aristotle.algonet.se', 'arizona.co.jp', 'armymail.com', 'arrakis.es',
|
||||
'artesmarciales.com', 'arti.vub.ac.be', 'artlover.com', 'artnet.com.br', 'as9105.com', 'asgard.net.au', 'asheville.com',
|
||||
'asia.com', 'asianhome.net', 'asianwired.com', 'asics.fr', 'asistencia.org', 'asta-net.com.pl', 'astra.qui.ub.es',
|
||||
'at1.atns.de', 'atlantech.net', 'atlas.cz', 'atlaswebmail.com', 'atnchile.com', 'att.biz', 'att.net', 'attbi.com',
|
||||
'audioseek.com', 'auna.net', 'aussiemail.com.au', 'australiamail.com', 'autofever-online.com', 'backstreetboysclub.com',
|
||||
'badtzmail.com', 'balcke-duerr.de', 'barracuda.callawaygardens.com', 'beaufortweb.org.uk', 'behringer.de',
|
||||
'bellsouth.net', 'bergelmir.ai.net', 'best-pagerank.de', 'bettahits.biz', 'bezeqint.net', 'bhnet.com.br', 'biering.de',
|
||||
'bigfoot.com', 'biglabels.de', 'bigping.com', 'bigping.de', 'bikerider.com', 'bilkent.edu.tr', 'billfan.com',
|
||||
'bio-muesli.info', 'bio-muesli.net', 'bionic.zerberus.de', 'biz.rr.com', 'biz4hits.biz', 'bk.ru', 'bkkmail.com',
|
||||
'bl7-106-81.dsl.telepac.pt', 'bla-bla.com', 'blackbox.at', 'blackburnmail.com', 'blarg.net', 'blazeblow.net',
|
||||
'blazemail.com', 'blogopt.com', 'blowsearch.com', 'blue-tomato.at', 'bluetone.cz', 'blueyonder.co.uk', 'bmpd.com',
|
||||
'bmypc.com', 'boardermail.com', 'boarderzone.com', 'bochnia.pl', 'bodhi.lawlita.com', 'boerse-extra.de', 'bogota.com',
|
||||
'boh.com', 'boitolet.com', 'bol.net.in', 'bombdiggity.com', 'bonbon.net', 'bonnag.com', 'boom.ru', 'bootbox.net',
|
||||
'bosnianmail.com', 'brasilia.net', 'brasiltelecom.net.br', 'bravanese.com', 'bredband.com', 'brightideatoys.info',
|
||||
'britneyclub.com', 'broadcastemail.com', 'brunet.bn', 'bta.net.cn', 'btc-net.bg', 'btcc.org', 'btcentralplus.com',
|
||||
'btmx1.sun.com', 'btopenworld.com', 'buck.ncia.net', 'buffymail.com', 'bumpymail.com', 'bumpymail.com', 'burgerking.de',
|
||||
'business.telecomitalia.it', 'buy-cheap-cigarette.info', 'buy-discount-cigarettes.info', 'buzzlemail.com',
|
||||
'bxemail.com', 'cable.casema.nl', 'cable.ntl.com', 'cable.quicknet.nl', 'caiway.nl', 'cams-wg.com', 'cape.com',
|
||||
'captain.net', 'car.co.id', 'caramail.com', 'cared45.com', 'caribsurf.com', 'carleton.ca', 'carlstedt.se',
|
||||
'carnival.com', 'cartsys.com', 'casema.net', 'casema.nl', 'cashette.com', 'cat-22.info', 'cataloniamail.com',
|
||||
'catholic.org', 'cc.fc.ul.pt', 'cc.hut.fi', 'cc.jyu.fi', 'ccc.gr', 'ccj.ufsc.br', 'ccsg.tau.ac.il', 'ccsi.com',
|
||||
'cdkomm.central-druck.intra', 'cdsnet.com', 'cel.com', 'celineclub.com', 'centermail*', 'centermail.com',
|
||||
'centermail.net', 'central-druck.de', 'centurytel.net', 'cern.ch', 'cgey.com', 'cghost.s-a-d.de', 'cgocable.net',
|
||||
'chalky.com', 'chalo.net', 'charter.com', 'check-inn.com', 'chello.at', 'chello.nl', 'chello.pl', 'china.com',
|
||||
'china139.com', 'chinabyte.com', 'christian.net', 'ciateq.mx', 'cibertribe.pt', 'cibis.de', 'cic.klte.hu',
|
||||
'cicely5.cicely.de', 'cif.fr', 'cigma.asso.fr', 'ciklo-centar.hr', 'cimaglobal.com', 'cime.nl', 'cin.nihon-u.ac.jp',
|
||||
'cinci.rr.com', 'city-of-nottingham.com', 'city2city.com', 'cityline.ru', 'clara.net',
|
||||
'client-200.121.222.241.speedy.net.pe', 'cliffhanger.com', 'club-internet.fr', 'clubvdo.net', 'clustermail.de',
|
||||
'cm.vtr.net', 'cmail01.tradeeasyhk.net', 'cnchost.com', 'cnn.com', 'co.kr', 'co.uk', 'cobra-tech.de', 'com.ar',
|
||||
'com.br', 'com.cn', 'com.ph', 'com.pl', 'com.tr', 'com.ve', 'comcast.net', 'comcastbusiness.net', 'comed45a.com',
|
||||
'computerbizop.com', 'conk.com', 'connectfree.co.uk', 'cool.ne.jp', 'coolhousing.net', 'coolquality.info',
|
||||
'cooperate.niftyserve.com', 'copetel.com.ar', 'correo1.com', 'cotas.com.bo', 'cotton-cottage.com', 'cottypediment.com',
|
||||
'couponpilot.de', 'covad.net', 'cox-internet.com', 'cox.net', 'cpe.netcabo.pt', 'craydon.com', 'craydon.de',
|
||||
'crewstart.com', 'crm1.numail.co.uk', 'cryohost.net', 'csi.com.do', 'ct-shop.com', 'ctk-gmbh.de', 'ctmiller.net',
|
||||
'cumbriamail.com', 'cust.in', 'cwaitrew.com', 'cwazy.co.uk', 'cx.airnet.ne.jp', 'cyber.net.pk', 'cyberemailings.com',
|
||||
'cyberhome.ne.jp', 'cyberservices.nl', 'cynetcity.com', 'd-rex.net', 'damhost.com', 'dannemann.de', 'darkcorner.com',
|
||||
'darkplace.com', 'dartmail.net', 'datacast.prserv.net', 'datacds.net', 'datanet.hu', 'davidcharles.co.uk',
|
||||
'dcemail.com', 'dejanews.com', 'delfi.lv', 'deliriumctouch.com', 'destin.com', 'dglnet.com.br', 'dic.blogopt.com',
|
||||
'dicoll.co.uk', 'didamail.com', 'digiro.net', 'dillard.edu', 'discardmail*', 'discardmail.com', 'discardmail.de',
|
||||
'disenthroner.com', 'dmailman.com', 'dnat.migtel.ru', 'dnbhq.com', 'dodgeit.com', 'dodgit.com', 'doh75.com',
|
||||
'dolally.com', 'dolfijn.nl', 'domaindisc.net', 'domatic.net', 'domvista.net', 'donau.de', 'dontsendmespam.de',
|
||||
'doramail.com', 'dowse.com', 'dr.com', 'dragonballz.net', 'dragonet.es', 'dream-dimensions.de', 'drizzle.com',
|
||||
'dsabaus.com', 'dsl-w.verizon.net', 'dsl.brasiltelecom.net.br', 'dsl.telepac.pt', 'dsl54025d43.pool.t-online.hu',
|
||||
'dsl85-98-27413.ttnet.net.tr', 'dsl88-246-479.ttnet.net.tr', 'dtl.co.nz', 'dublin.com', 'dumpmail.de', 'duse.net',
|
||||
'dyn.centurytel.net', 'dynamic.caiway.nl', 'dynamic.hinet.net', 'dynamic.orange.es', 'dynamic.sbb.co.yu',
|
||||
'dynamicip.rima-tde.net', 'e178227164.adsl.alicedsl.de', 'earthling.net', 'east.net.cn', 'east.verizon.net',
|
||||
'eastlink.ca', 'eastside.com', 'easynet.net', 'easypeasy.com', 'ebs.ulead.com', 'ec-messenger.com', 'echostation.com',
|
||||
'ecocity.com', 'ecua.net.ec', 'edu.tr', 'educationdirect.com', 'egn.de', 'ehmail.com', 'ei.tum.de', 'eintagsmail.de',
|
||||
'el-nacional.com', 'elbowraffle.net', 'email.accmail.com', 'emaildienst.de', 'emailias.com', 'emails.ru',
|
||||
'emailstar.net', 'emailstuff.com', 'emailsystems.com', 'emailto.de', 'emanator.demon.co.uk', 'emancipacion.org',
|
||||
'emar.de', 'ematic.com', 'embassysil.com', 'emocion.net.ar', 'emv9.com', 'enter.valdemarsvik.se', 'epicinnovations.com',
|
||||
'eppl.us', 'estnet.bg', 'etb.net.co', 'eudoramail.com', 'euireland.ie', 'eule-idt.de', 'euro.net', 'europe.adobe.com',
|
||||
'ev24.net', 'ewmd41.com', 'exclusive.pl', 'exo.com', 'ezrs.com', 'f6.dion.ne.jp', 'facilitynetwork.net', 'facom.fr',
|
||||
'fadmail.com', 'fastacura.com', 'fastchevy.com', 'fastchrysler.com', 'fastemail.us', 'fastermail.com',
|
||||
'fastkawasaki.com', 'fastmail.ca', 'fastmail.fm', 'fastmail.gr', 'fastmazda.com', 'fastmitsubishi.com',
|
||||
'fastnissan.com', 'fastres.net', 'fastsubaru.com', 'fastsuzuki.com', 'fasttoyota.com', 'fastwebnet.it',
|
||||
'fastyamaha.com', 'fatal.ru', 'fatty.boom.ru', 'fbx.proxad.net', 'female.ru', 'femenino.com', 'fenwick.com', 'fepg.net',
|
||||
'ff8.zzn.com', 'ffc.co.jp', 'fffpharems.com', 'fiberia.com', 'fibertel.com.ar', 'fiestabrava.com', 'finklfan.com',
|
||||
'firemail.de', 'firewall.biconcaveautomate.com', 'firstgate-newsletter.de', 'fishhoo.com', 'flashmail.com',
|
||||
'flets.alpha-net.ne.jp', 'flix.de', 'fon.bg.ac.yu', 'forenhoster.com', 'foryou74.com', 'foxinternet.com',
|
||||
'fr.clara.net', 'fr.logansvideos.com', 'free-online.net', 'free-spy.net', 'free.fr.logansvideos.com', 'freecontent.cc',
|
||||
'freemail.besoft.org', 'freemail.gr', 'freemail.it', 'freemail.ne.jp', 'freemail.nl', 'freenation.net',
|
||||
'freeproblem.com', 'freeserve.co.uk', 'freeserve.com', 'freetweak.com', 'front14.org', 'futurequest.net', 'gala.net',
|
||||
'gamewood.net', 'gamopi.pleonaste.com', 'gamport.com', 'gaoland.net', 'garbagemail.com', 'gate.net',
|
||||
'gateway.abedofroses.com', 'gateway.insightbb.com', 'gatewaybank.com', 'gawab.com', 'gaweb.com', 'gc.edu', 'gedris.org',
|
||||
'gee-wiz.com', 'geekmail.com', 'germanfriendfinder.com', 'gerts.net', 'gestorialallana.com', 'gestur.atnchile.com',
|
||||
'getscrews.com', 'gewhiz1.com', 'gewinnspiele.com', 'gfk.se', 'gfllp.com', 'ghosttexter.de',
|
||||
'gifts-of-distinction.co.uk', 'ginko.de', 'giorgioimages.com.au', 'gjr.paknet.com.pk',
|
||||
'glaswegian.sprinklecomponentry.com', 'glay.org', 'glencoeschools.org', 'glenmanning.com', 'globalobligations.com',
|
||||
'globalsources.com', 'globetrotter.net', 'globoxchange.com', 'gms.net', 'go-west.com', 'go4bowling.com', 'goaachen.de',
|
||||
'gogogolf.net', 'gohip.com', 'golfilla.info', 'goodsolitaire.com', 'gorillaswithdirtyarmpits.com', 'gothnation.com',
|
||||
'gouv-exil.org', 'graffiti.net', 'grafxhousenetwork.net', 'graphtablet.com', 'grat-host.in', 'gravity.net.au',
|
||||
'grechys.com', 'greenie.muc.de', 'gruis.hk', 'gt2004.org', 'gulfislands.com', 'gunmen.lestercur.com', 'gunsnet.net',
|
||||
'gurlmail.com', 'gymlaufen.ch', 'haburi.com', 'halfmortgage.com', 'halftomorrow.com', 'hantz.com', 'happyhangover.com',
|
||||
'hardcorexxxmag.com', 'hawaii.res.rr.com', 'hci.net', 'hediard.fr', 'heinrich-it-service.de', 'helicon.net',
|
||||
'hellokitty.com', 'helpdesk.nl', 'hepaticae.com', 'hermes.eolas-services.com', 'hiit.fi', 'hinet.net', 'hismail.cc',
|
||||
'hispeed.ch', 'hkem.com', 'hkepost.com', 'hkid.com', 'hobnaildas.com', 'hoffman.cc.sophia.ac.jp', 'holzach.biz',
|
||||
'home.nl', 'home.ro', 'homer.cyberwebhosting.net', 'host233-249-dynamic.9-87-r.retail.telecomitalia.it', 'hot.ee',
|
||||
'hotpop.com', 'houston.res.rr.com', 'huhmail.com', 'hurra.de', 'hurting.com', 'hush.com', 'hushmail.com',
|
||||
'hutchcity.com', 'hvm.macromedia.com', 'i-box-letter.de', 'i-love-cats.com', 'iam.net.ma', 'icdc.com',
|
||||
'idealyze.com.br', 'ifg.com', 'igd.fhg.de', 'iinet.com', 'ikp.atm.com.pl', 'il.comcast.net', 'illusionmovies.com',
|
||||
'imagelink.com.br', 'imails.info', 'iname.com', 'inbox.com', 'india.com', 'ineltec.ch', 'inet-shops.ru', 'inetekk.com',
|
||||
'infoapex.com', 'infomail.papierunion.de', 'infowest.com', 'injection.dk', 'inmail.sk', 'innercite.com',
|
||||
'inonesearch.com', 'insidebaltimore.net', 'insightbb.com', 'instuttgart.de', 'intelnett.com', 'inter.net.il',
|
||||
'interia.pl', 'internal.morris.com', 'iobox.de', 'iof.fhg.de', 'iol.cz', 'iop.org', 'ip.fastwebnet.it', 'ipeg.com',
|
||||
'iron2.cyberhome.ne.jp', 'isleuthmail.com', 'ispd.de', 'ist.co.za', 'itee.uq.edu.au', 'itn.is', 'itronic.cc',
|
||||
'itwol.bhp.com.au', 'iux01.insel.ch', 'ivillage.com', 'izbb.com', 'jaeggi.ch', 'japan.co.jp', 'javascript.org',
|
||||
'jaydemail.com', 'jazztel.es', 'jccomp.com', 'jesi.nettuno.it', 'jetable.com', 'jetable.net', 'jetable.org',
|
||||
'jippii.co.uk', 'johnsmith.co.uk', 'joinme.com', 'journalismfan.com', 'joymail.com', 'jpopmail.com', 'juchu.de',
|
||||
'jumpy.it', 'jungbecker.de', 'juno.com', 'justopt.info', 'kabachan.com', 'kabel1-vip.de', 'kajima.com', 'kali.com.cn',
|
||||
'kansascity.com', 'karachioye.com', 'kasmail.com', 'kavitha.com', 'kcdata.com', 'kefir.000buy.com', 'kellychen.com',
|
||||
'keromail.com', 'ket.de', 'kichimail.com', 'kittymail.com', 'kki.net.pl', 'klassmaster.com', 'klinik-rkz.de',
|
||||
'korea-dpr.com', 'koreamail.co.kr', 'kponet.fi', 'kschoice.net', 'kulturbetrieb.info', 'landings.com', 'lanetro.com',
|
||||
'laposte.net', 'larochelle-innovation.com', 'latinmail.com', 'lawyer.com', 'learnmoreonline.net', 'leere-drohungen.de',
|
||||
'legoland.de', 'lei3.cable.ntl.com', 'leo.org', 'leonlai.net', 'lestercur.com', 'lexpress.net', 'libero.iol.it',
|
||||
'liebe.de', 'linex.com', 'linuxmail.org', 'list.ru', 'literaturelover.com', 'livedoor.com', 'liwest.at', 'ln.edu.hk',
|
||||
'lnwhij.woulditbe.com', 'logansvideos.com', 'lookingtostayoutoflovetrouble.com', 'looksmart.co.uk', 'loveable.com',
|
||||
'loversearching.com', 'lsc.net.tw', 'lukoil.ru', 'lycos.co.uk', 'lycos.com', 'lycosmail.com', 'm-kg241p.ocn.ne.jp',
|
||||
'm-s-n.net', 'ma.kcom.ne.jp', 'mac-email.com', 'madcrazy.com', 'madeincanada.com', 'mail-in.freeserve.com',
|
||||
'mail-relay.handy.de', 'mail.4fts.com', 'mail.aacgroup.co.uk', 'mail.aas.com.kw', 'mail.abacus.ba', 'mail.abgrp.ru',
|
||||
'mail.adition.net', 'mail.adulthosting.com', 'mail.airbridge.net', 'mail.alfc.com', 'mail.bulgaria.com', 'mail.com',
|
||||
'mail.com.fr', 'mail.csuchico.edu', 'mail.cwverlag.de', 'mail.dangerzone.org', 'mail.fishhoo.com', 'mail.gr',
|
||||
'mail.htl22.at', 'mail.interq.or.jp', 'mail.kitty.cc', 'mail.kolej.mff.cuni.cz', 'mail.ru', 'mail.saabnet.com',
|
||||
'mail.usa.com', 'mail.zp.ua', 'mail15.com', 'mail2.pvt.net', 'mail2Alicia.com', 'mail2Amanda.com', 'mail2Bernard.com',
|
||||
'mail2Clark.com', 'mail2Dale.com', 'mail2Darlene.com', 'mail2Erin.com', 'mail2Eva.com', 'mail2Fred.com',
|
||||
'mail2Howard.com', 'mail2Josh.com', 'mail2Judy.com', 'mail2Julian.com', 'mail2Kristin.com', 'mail2Lance.com',
|
||||
'mail2Laurie.com', 'mail2Marries.com', 'mail2Rachel.com', 'mail2Ricky.com', 'mail2Riley.com', 'mail2Stephanie.com',
|
||||
'mail2Tim.com', 'mail2Tony.com', 'mail2go.com', 'mail2world.com', 'mail4u.nl', 'mailandnews.com', 'mailasia.com',
|
||||
'mailcity.com', 'mailenvelopes.com', 'mailer-service.de', 'mailexchanger.universia.es', 'mailexcite.com',
|
||||
'mailexpire.com', 'mailin8r.com', 'mailinator.com', 'mailinator.net', 'mailinator2.com', 'mailout.inetekk.com',
|
||||
'mailout1.inetekk.com', 'mailout2.inetekk.com', 'mailout3.inetekk.com', 'mailout4.inetekk.com', 'mailout5.inetekk.com',
|
||||
'mailoye.com', 'mailstart.com', 'maktoob.com', 'mandic.com.br', 'manfinancial.com', 'manus-manum-lavat.info',
|
||||
'marchmail.com', 'marijuana.com', 'marsmail.de', 'marsmail.eu', 'masterhost.ru', 'mauimail.com', 'maxonline.com.sg',
|
||||
'maxthon.com', 'mbx.cc', 'mchsi.com', 'mci.com', 'mcmac.com', 'mdnet.com.br', 'mecha.ne.jp', 'medic.net.au',
|
||||
'medicalmbn.com', 'medicinemail.com', 'medienkultur-stuttgart.de', 'medsxs4.com', 'megaboymail.com', 'meishi.co.jp',
|
||||
'melin.nu', 'mercaturejoy.com', 'meri.uwasa.fi', 'merlin.net.au', 'messagebeamer.de', 'messagizer.de',
|
||||
'messe-crossmedia.de', 'metaling.si', 'metorex.fi', 'mexxxico.com', 'mhd.de', 'microce.de', 'micromail.com',
|
||||
'micromail.com.au', 'micromail.ie', 'mid-heidelberg.de', 'midgard.ai.net', 'mighty.co.za', 'migtel.ru',
|
||||
'millennianet.com', 'millenniumbuggered.com', 'millionengewinn.net', 'mindspring.com', 'minedu.fi', 'mira.altern.org',
|
||||
'miranda.zianet.com', 'misco.fagms.de', 'misery.net', 'mitgliedersupport.de', 'ml1.net', 'mm.pl', 'mma.com.br',
|
||||
'modernart.ie', 'modesta.pl', 'modic.cz', 'modomail.com', 'modusconsult.de', 'moini.de', 'moj.go.kr', 'moncourrier.com',
|
||||
'monornet.hu', 'monradsl.monornet.hu', 'moo321.com', 'moonwalk.se', 'moose-mail.com', 'morefdumplings.com',
|
||||
'movemail.com', 'movilnet.com.ve', 'mrde45r.com', 'mt2009.com', 'mtu-net.ru', 'multimania.fr', 'mummys-boy.com',
|
||||
'musclemail.com', 'mwb.biglobe.ne.jp', 'mx.futurequest.net', 'mx.lukoil.ru', 'mx0.wwwnew.eu', 'mx1.fr.clara.net',
|
||||
'mx1.masterhost.ru', 'mx1.rdsnet.ro', 'mx2.fr.clara.net', 'mx4.mts.net', 'mx5.aball.de', 'mx5.fl.megamailservers.com',
|
||||
'mxfep01.bredband.com', 'mxzilla6.xs4all.nl', 'my-yep.com', 'myfastmail.com', 'myownemail.com', 'myriadrecords.com',
|
||||
'mysg.8m.com', 'myt.mu', 'mytoys-mail.de', 'mytrashmail.com', 'myx.net', 'nana.co.il', 'nastyservice.info',
|
||||
'naukanet.ru', 'ncfcomm.com', 'ne.jp', 'nebenjob.de', 'nervmich.net', 'nervtmich.net', 'net-search.org', 'net.ae',
|
||||
'net.au', 'net.co', 'net.il', 'net.in', 'net.ma', 'net.my', 'net.pe', 'net.pl', 'net.tr', 'net.tw', 'net24.it',
|
||||
'netbank.com.br', 'netcabo.pt', 'netcityhk.com', 'netlane.com', 'netscape.net', 'nettv4u.de', 'netvision.net.il',
|
||||
'netvista.net', 'netzidiot.de', 'nevada.co.jp', 'newhorizons.ac.cr', 'newmail.net', 'newprosdirect.com', 'news.com',
|
||||
'news.dannemann.de', 'news247.de', 'newsflash.de', 'newsletter.conrad.de', 'newsletter.otto.de', 'newsletter.penton.de',
|
||||
'newsubdomain.com', 'nicholastse.net', 'nicole.org', 'niftyserve.com', 'nockmedia.de', 'nomail2me.com',
|
||||
'nonstopconsulting.de', 'nospammail.net', 'nostra.by', 'ns1.on2web.dk', 'ntep.nec.co.jp', 'ntl.com', 'nts.ru',
|
||||
'nttc.org', 'numail.co.uk', 'numericable.fr', 'nurfuerspam.de', 'nv.charter.com', 'nyc.rr.com',
|
||||
'nycmny.east.verizon.net', 'nycny.net', 'o2.pl', 'odn.ad.jp', 'oico.com', 'oldmx1.init7.net', 'oleane.net',
|
||||
'ols.aaronsen.com', 'olympus.net', 'omni-host.com', 'on-luebeck.de', 'onebox.com', 'onetwomax.de', 'oni.pt',
|
||||
'online.ee', 'online.fr', 'online.no', 'online.sh.cn', 'ono.com', 'ono.es', 'onocable.ono.com', 'onthenet.com.au',
|
||||
'openface.ca', 'operamail.com', 'optician.com', 'optinet.de', 'oracle-consultant.co.uk', 'orange.es', 'orcon.net.nz',
|
||||
'org.my', 'oricom.ca', 'osi.pl', 'osn.de', 'otagochamber.co.nz', 'otakumail.com', 'otava.fi',
|
||||
'ottawakiosk.webminders.com', 'out.returnpath.net', 'outblaze.com', 'outgun.com', 'ozbytes.net.au', 'pacbell.net',
|
||||
'pajek.net', 'pamho.net', 'paris.com', 'parlex.com', 'passiongas.com', 'pathlengths.info', 'patra.net',
|
||||
'paycenter.com.cn', 'pbadmail.com', 'pearl-online.de', 'peoplemail.com.cn', 'perenter.com', 'perlen.dk',
|
||||
'perthmail.com', 'phantom.org', 'phentermine-site.5u.com', 'phentermineorder.boom.ru', 'phreaker.net', 'pi.se',
|
||||
'pinoymail.com', 'planet49.com', 'plastico.ro', 'playingcupid.com', 'pldt.net', 'plenio.de', 'pleonaste.com',
|
||||
'pmktg-online.com', 'pnb.com.ph', 'poker777.boom.ru', 'policeds.com', 'polyonomy.com', 'pookmail.com',
|
||||
'pool.t-online.hu', 'pool8249.interbusiness.it', 'pop06.odn.ne.jp', 'porno.wildrhino.com', 'portal2.com',
|
||||
'portcharles.net', 'post.com', 'power.net', 'ppp11.odn.ad.jp', 'pppoe.mtu-net.ru', 'priest.com',
|
||||
'printec-distribution.de', 'privacy.net', 'proconnect-mail.com', 'prod-infinitum.com.mx', 'prodigy.net.mx',
|
||||
'progressmail.net', 'pronet.be', 'propagation.net', 'prout.de', 'proxad.net', 'prtc.net', 'psicorps.com', 'psinet.be',
|
||||
'psmtp.com', 'ptd.net', 'public1.ptt.js.cn', 'punkass.com', 'purinmail.com', 'put2.net', 'qldsugar.com',
|
||||
'qseuzfv55a.adsl.datanet.hu', 'quality-only.info', 'qualityandsweet.info', 'quicknet.nl', 'quickslick.com',
|
||||
'quisalot.biz', 'qwas34d5.com', 'qwest.net', 'r-a-v-e.com', 'rad-dresden.de', 'rainbow.cc',
|
||||
'range81-158.btcentralplus.com', 'rb21ex.com', 'rbnet.com', 'rdominicana.com', 'rdsnet.ro', 'recode.me',
|
||||
'recovermyfiles.com', 'recycler.com', 'red-83-49-70.dynamicip.rima-tde.net', 'red-88-7-51.staticip.rima-tde.net',
|
||||
'red.bezeqint.net', 'rediffmail.com', 'refusalabsentminded.com', 'registeredsite.com', 'relay.intercom.es',
|
||||
'relay1.esined.net', 'res-cmts.val.ptd.net', 'res.rr.com', 'rescue-europe.com', 'retail.telecomitalia.it',
|
||||
'retsat1.com.pl', 'rezrez.rsc03.com', 'rfaust.de', 'rich.east.verizon.net', 'rima-tde.net', 'risquemail.com',
|
||||
'rock.com', 'rocketmail.com', 'rome.com', 'rootsrock.biz', 'rotario.com', 'rotld.ro', 'rr.com', 'russiangirlwant.com',
|
||||
'rzs02.init.de', 's-web.de', 'sacbeemail.com', 'safersurf.*', 'sandelf.de', 'sanfranmail.com', 'sapo.pt',
|
||||
'saturnperformance.com', 'sbcmail1.prodigy.net', 'sbcmail2.prodigy.net', 'sbcmail3.prodigy.net', 'sbcmail4.prodigy.net',
|
||||
'sbcmail5.prodigy.net', 'sbcmail6.prodigy.net', 'sbcmail7.prodigy.net', 'sbcmail8.prodigy.net', 'sbcmail9.prodigy.net',
|
||||
'schnaeppchenjagd.de', 'schwabe-braun.de', 'scotiacapital.com', 'secretmotive.com', 'secure-mail.cn',
|
||||
'secure.dot-names.com', 'secureserver.net', 'sedo.de', 'seed.net.tw', 'senseless-entertainment.com', 'sent.at',
|
||||
'server.intermediary.com', 'server420.dnslive.net', 'server73.appriver.com', 'sesmail.com', 'sewon-teletech.co.kr',
|
||||
'sgn3.sgn.com', 'shawcable.net', 'shopbeachcity.com', 'sicup.de', 'sierranet.net', 'sinewave.com', 'single-match.info',
|
||||
'sitefoundry.net', 'sitek.net', 'sitespider.co.uk', 'siutao.com', 'skating.net', 'skrzynka.pl', 'slappajack.com',
|
||||
'slb.de', 'sleekhost.com', 'sloncentral.info', 'smartmedia.co.uk', 'smithhanley.com', 'smtp.oleane.net',
|
||||
'smtp.prodigy.net.mx', 'smtp.secureserver.net', 'smtp1.lix.aon.at', 'smtp1.rslcom.fi', 'snail-mail.net',
|
||||
'sneakemail.com', 'snet.net', 'sofort-mail.de', 'sofortmail.de', 'softhome.net', 'sogetthis.com', 'solcon.nl',
|
||||
'solicit.cottypediment.com', 'sonet.sp.ru', 'soon.com', 'soyou.com', 'spacetolet.com', 'spam.la', 'spambob.com',
|
||||
'spambob.net', 'spambob.org', 'spambog.com', 'spambog.de', 'spambog.ru', 'spambot.com', 'spambox.info', 'spambox.us',
|
||||
'spamcorptastic.com', 'spamex.com', 'spamgourmet.com', 'spamherelots.com', 'spamhole.com', 'spaminator.de',
|
||||
'spammotel.com', 'spamtrail.com', 'spankthedonkey.com', 'sparfieber.de', 'spb.ru', 'spbnit.ru', 'speedy.com.ar',
|
||||
'speedy.net.pe', 'spire.com', 'spl.at', 'sprachzentrum.de', 'spray.it', 'spray.net', 'sprinklecomponentry.com',
|
||||
'ssl.fujitsu.com', 'ssole1.com', 'ssole3.com', 'stagcreek.ca', 'stage-n-light.de', 'stait.freeserve.co.uk',
|
||||
'stalco.co.ae', 'stams.strath.ac.uk', 'standesbeamte.de', 'stangroome.freeserve.co.uk', 'staple-online.co.uk',
|
||||
'star.teuto.de', 'starcoffee.de', 'stardust-lyrics.de', 'starfury77.club24.co.uk', 'stargard.mm.pl', 'starline.ee',
|
||||
'starmedia.com', 'start.com.au', 'start.no', 'staticip.rima-tde.net', 'stilap.hepaticae.com', 'stonemultimedia.com',
|
||||
'sun.com', 'sunsgame.com', 'superdating.biz', 'surfer.at', 'surfy.net', 'swu.dk', 'swva.net', 'sysob.de', 't-online.hu',
|
||||
'takas.lt', 'talkcity.com', 'tampabay.rr.com', 'tampascene.com', 'teaminform.com', 'techie.com', 'technikdirekt.de',
|
||||
'tedata.net', 'teewars.org', 'tele.dk', 'telecomitalia.it', 'telecomplus.net', 'telenor.co.uk', 'telepac.pt',
|
||||
'telesp.net.br', 'telkom.net', 'telkomadsl.co.za', 'telstra.com', 'telus.net', 'temet-nosce.info', 'templetae.com',
|
||||
'temporarily.de', 'temporaryinbox.com', 'tempus-fugit.info', 'termquotes.prserv.net', 'terra.com', 'terra.com.gt',
|
||||
'terra.com.sv', 'terra.es', 'terra.net.lb', 'test.com', 'test.de', 'thatsthegame.com', 'the-lair.com',
|
||||
'the-village.co.uk', 'thebrewer.com', 'thecigarettes.info', 'thedepot.com', 'thedoghousemail.com', 'thefishfinder.com',
|
||||
'themail.co.uk', 'thewannadies.co.uk', 'thewildmild.de', 'thisdomainl.com', 'thisisnotmyrealemail.com', 'thy.com',
|
||||
'ties.itu.ch', 'tiscali.co.uk', 'tiscali.fr', 'tiscali.it', 'tm.net.my', 'tnp.pl', 'tokorea.com.cn',
|
||||
'tokyo.flets.alpha-net.ne.jp', 'tom.com', 'toosexyforyou.com', 'topaz.kiev.ua', 'toursdesport.com', 'toys4bigboys.net',
|
||||
'tpnet.pl', 'trademailer.de', 'trash-mail.com', 'trash-mail.de', 'trash-mail.net', 'trashdevil.com', 'trashdevil.de',
|
||||
'trashmail.com', 'trashmail.de', 'trashmail.net', 'trashmail.org', 'trashymail.com', 'trinion1.datenloch.de',
|
||||
'trionline.de', 'truthmail.com', 'ttnet.net.tr', 'tv1.de', 'tv8.se', 'tvalliance.co.uk', 'tvcheck.se', 'tvnet.hu',
|
||||
'tvnet.lt', 'tvpress.channel4.ru', 'tvs.no', 'tvscheessel.de', 'tvtel.pt', 'twtelecom.net', 'tx.res.rr.com',
|
||||
'u-net.com', 'uark.edu', 'ublaze.com', 'uk111.com', 'uk2.net', 'uk420.com', 'ulb.ac.be', 'ultrapostman.com',
|
||||
'unete.com', 'unicum.de', 'uniserve.ca', 'universia.es', 'upc-d.chello.nl', 'usa.com', 'usa.net', 'usarabia.com',
|
||||
'usclargo.com', 'user.auna.net', 'user.veloxzone.com.br', 'usertools.net', 'uswestmail.net', 'uunet.uu.net',
|
||||
'uyi78h.com', 'uytgrt.com', 'uzpi.cz', 'val.ptd.net', 'valuehost.ru', 'veloxzone.com.br', 'veretekk.com', 'verizon.com',
|
||||
'verizon.net', 'vested99.com', 'veyr4zw.com', 'vfemail.net', 'videotron.ca', 'vilaweb.com', 'virtua.com.br',
|
||||
'virtual.finland.fi', 'virus112.com', 'vistaprint.rsc01.com', 'visto.com', 'vivax.com.br', 'vmx40.multikabel.net',
|
||||
'vntc.ru', 'vrflow.oulu.fi', 'vsnl.net.in', 'vtr.net', 'vtt.fi', 'wakwak.ne.jp', 'wanaboo.com', 'wanadoo.co.uk',
|
||||
'wanadoo.fr', 'wanadoo.nl', 'waw.pl', 'wazup.com', 'wcenviro.com', 'we4z3.com', 'web-mail-service.de', 'webfun.tv',
|
||||
'webmail.co.za', 'webmail.net.nz', 'webpool.de', 'wegwerfadresse.de', 'wels.net', 'wemedsc.com', 'westham-fan.com',
|
||||
'wewonthewar.com', 'whatever.com', 'wideopenwest.com', 'wildmail.com', 'willhackforfood.biz', 'wisconsin.cern.ch',
|
||||
'woerth.de', 'world4fun.ch', 'worldonline.de', 'wowzers.net', 'wp.pl', 'wprost.pl', 'wuerzburg.de', 'www.bundestag.de',
|
||||
'www.freewebs.com', 'www.hot.ee', 'www1.bonusoptinlist.com', 'www1.cornbreadparty.com', 'www1.dirtydawgmailer.com',
|
||||
'www1.getpornmailer.com', 'www1.qutetown.com', 'www1.readoptinmail.com', 'www1.superoptinmail.com',
|
||||
'www1.wistlework.com', 'www1.xxxoptinmail.com', 'www2.cornbreadparty.com', 'www2.doubleoptinxxx.com',
|
||||
'www2.funnymondays.com', 'www2.goodxxxmail.com', 'www2.optinpimps.com', 'www2.overyounow.com', 'www2.perfectoptin.com',
|
||||
'www2.pimpoptinmailer.com', 'www2.solidemailservers.com', 'www2.topleveloptin.com', 'www2.youoptedin.com',
|
||||
'www3.bobblebuster.com', 'www3.confirmedoptin.com', 'www3.crazycrowns.com', 'www3.freshmailers.com',
|
||||
'www3.goldenoptin.com', 'www3.goodxxxmail.com', 'www3.optedinmailer.com', 'www3.pornoptin.com',
|
||||
'www3.primetimemailer.com', 'www3.sandwichmonkey.com', 'www3.stationarybands.com', 'www3.topleveloptin.com',
|
||||
'www3.wildjuicer.com', 'www3.youoptedin.com', 'www4.bobblebuster.com', 'www4.dearestkindly.com',
|
||||
'www4.dirtydawgmailer.com', 'www4.freshoptinmail.com', 'www4.hornymailers.com', 'www4.platinumpornmailer.com',
|
||||
'www4.primetimemailer.com', 'www4.youoptedin.com', 'www5.adultmarketinggroup.com', 'www5.dearestkindly.com',
|
||||
'www5.dirtydawgmailer.com', 'www5.freshoptinmails.com', 'www5.marketingoptin.com', 'www5.theonlyoptinlist.com',
|
||||
'www5.xxxoptinmailer.com', 'www6.freshoptinmail.com', 'www6.jerkydrive.com', 'www6.perfectoptin.com',
|
||||
'www6.pimpoptinmailer.com', 'www6.truepimpmarketing.com', 'www7.bargainoptin.com', 'www7.freshoptinmails.com',
|
||||
'www7.getoptedin.com', 'www7.marketingoptin.com', 'www7.pickuppieces.com', 'www7.premiummailsystems.com',
|
||||
'www7.qutetown.com', 'www7.truepimpmarketing.com', 'www7.xxxmailers.com', 'www8.bargainoptin.com',
|
||||
'www8.confirmedoptin.com', 'www8.cornbreadparty.com', 'www8.foolspleasure.com', 'www8.freshoptinmail.com',
|
||||
'www8.optedinmailer.com', 'www8.readoptinmail.com', 'www8.xxxmailers.com', 'www8.xxxoptinmailer.com',
|
||||
'www9.awesomexxxmailer.com', 'www9.doubleoptinxxx.com', 'www9.friendlycluster.com', 'www9.pickuppieces.com',
|
||||
'www9.pureoptins.com', 'www9.sandwichmonkey.com', 'www9.sexoptedin.com', 'www9.stationarybands.com',
|
||||
'www9.yourmailservices.com', 'wwwplanet.net', 'wx88.net', 'x4u2.desy.de', 'xcelco.on.ca', 'xmr3.com', 'xoom.com',
|
||||
'xp-hosting.com', 'xpost.net', 'yandex.ru', 'yapost.com', 'yebox.com', 'yehey.com', 'yemenmail.com', 'yes.com',
|
||||
'ymail.ru', 'yourfrontdoor.com', 'yourmail.com.au', 'yyhmail.com', 'zeebede.com', 'zhongkang.com.cn', 'zipmail.com.br',
|
||||
'zipolite.com', 'zipzaps.de', 'zmail.ru', 'zooloose.ch', 'zoznam.sk', 'zrekjc.icangonow.com', 'zworg.com',
|
||||
'zybermail.com', 'zzn.com',
|
||||
@@ -0,0 +1,235 @@
|
||||
<?php
|
||||
//! Private Konfiguration
|
||||
// MySQL Verbindungsdaten
|
||||
define('DB_SERVER', 'localhost');
|
||||
define('DB_USERNAME', 'your_username');
|
||||
define('DB_PASSWORD', 'your_password');
|
||||
define('DB_NAME', 'your_database');
|
||||
define('DB_ASSET_NAME', 'your_database');
|
||||
|
||||
// RemoteAdmin
|
||||
define('REMOTEADMIN_URL', 'localhost');
|
||||
define('REMOTEADMIN_PORT', 8002);
|
||||
define('REMOTEADMIN_HTTPAUTHUSERNAME', 'opensim');
|
||||
define('REMOTEADMIN_HTTPAUTHPASSWORD', 'opensim123');
|
||||
|
||||
// Seitenadressen
|
||||
define('BASE_URL', 'http://yourdomain.com');
|
||||
define('SITE_NAME', 'Dein Grid Name');
|
||||
|
||||
// Konfigurieren sie ihre Robust.ini wie folgt:
|
||||
//
|
||||
// MapTileURL = "${Const|BaseURL}:${Const|PublicPort}/oswebinterface/maptile.php";
|
||||
// SearchURL = "${Const|BaseURL}:${Const|PublicPort}/oswebinterface/searchservice.php";
|
||||
// DestinationGuide = "${Const|BaseURL}/oswebinterface/guide.php"
|
||||
// AvatarPicker = "${Const|BaseURL}/oswebinterface/avatarpicker.php"
|
||||
// GridSearch = "${Const|BaseURL}/oswebinterface/gridsearch.php";
|
||||
// MessageURI = "${Const|BaseURL}/oswebinterface/messages.php";
|
||||
// welcome = ${Const|BaseURL}/oswebinterface/welcomesplashpage.php
|
||||
// economy = ${Const|BaseURL}:8008/
|
||||
// about = ${Const|BaseURL}/oswebinterface/aboutinformation.php
|
||||
// register = ${Const|BaseURL}/oswebinterface/createavatar.php
|
||||
// help = ${Const|BaseURL}/oswebinterface/help.php
|
||||
// password = ${Const|BaseURL}/oswebinterface/passwordreset.php
|
||||
// partner = ${Const|BaseURL}/oswebinterface/partner.php
|
||||
// GridStatus = ${Const|BaseURL}:${Const|PublicPort}/oswebinterface/gridstatus.php
|
||||
// GridStatusRSS = ${Const|BaseURL}:${Const|PublicPort}/oswebinterface/gridstatusrss.php
|
||||
|
||||
//! Allgemeine Konfiguration
|
||||
|
||||
// Konfigurationsoptionen Standart Template:
|
||||
// "headerBlanc.php", "headerST.php", "headerW3.php", "headerBT5.php", "headerFoundation.php", "headerMaterialize.php", "headerTailwind.php", "headerPrimer.php", "headerTachyons.php", "headerSpectre.php", "headerTent.php"
|
||||
define('HEADER_FILE', 'headerBlanc.php'); // Ändere diesen Wert, um die verschienen Template Header Datei zu laden.
|
||||
|
||||
// Konfigurationsoption für den Banker
|
||||
define('BANKER_UUID', '00000000-0000-0000-0000-000000000000');
|
||||
|
||||
// Verifizierungsfunktionen
|
||||
define('VERIFICATION_METHOD', 'email'); // 'email' oder 'uuid'
|
||||
|
||||
// Asset Bilder
|
||||
define('ASSETPFAD', 'cache/');
|
||||
define('ASSET_FEHLT', ASSETPFAD . '00000000-0000-0000-0000-000000000002');
|
||||
define('GRID_PORT', ':8002');
|
||||
define('GRID_ASSETS', ':8003/assets/');
|
||||
define('GRID_ASSETS_SERVER', BASE_URL . 'GRID_ASSETS');
|
||||
|
||||
// Guide
|
||||
define('GRIDLIST_FILE', 'include/gridlist.csv');
|
||||
define('GRIDLIST_VIEW', 'json'); // 'json', 'database' oder 'grid'
|
||||
|
||||
// Tagesmeldungen
|
||||
define('SHOW_DAILY_UPDATE', true); // Ein- oder ausschalten
|
||||
define('DAILY_UPDATE_TYPE', 'rss'); // 'text' oder 'rss'
|
||||
define('DAILYTEXT', 'Dies ist eine aus der config.php konfigurierte tagesaktuelle Einblendung.'); // Tagesaktueller Text
|
||||
//define('RSS_FEED_URL', 'https://www.hypergridbusiness.com/feed'); // URL des RSS-Feeds Beispiel:Hypergrid Business.
|
||||
//define('RSS_FEED_URL', 'http://opensimulator.org/viewgit/?a=rss-log&p=opensim'); // URL des RSS-Feeds Beispiel:OpenSimulator.org.
|
||||
define('RSS_FEED_URL', BASE_URL . '/oswebinterface/include/rss-feed.php');
|
||||
define('FEED_CACHE_PATH', __DIR__.'/feed_cache.html'); // Cache-Dateipfad
|
||||
define('FEED_CACHE_MAX_AGE', 3600); // Cache max. 60 Minuten alt
|
||||
define('CALENDAR_TITLE', 'Event Calendar');
|
||||
|
||||
// Media
|
||||
//define('MEDIA_SERVER', 'http://localhost:8500/stream');
|
||||
define('MEDIA_SERVER', 'http://schwarze-welle.de:7500/stream');
|
||||
//define('MEDIA_SERVER_STATUS', 'http://localhost:8500/status-json.xsl');
|
||||
define('MEDIA_SERVER_STATUS', 'http://schwarze-welle.de:7500/');
|
||||
|
||||
// Passwörter (unbedingt austauschen!)
|
||||
// Für das austauschen der Passwöter könnt ihr den paswd_generator.php benutzen den ihr im Verszeichnis /include findet.
|
||||
$registration_passwords_register = ["wTPcHHeJtWdq7TgO", "gSIYKo2GwJdbG8OF", "2BhmSCM4hoFrOvxF", "3cy4JmMzvlSU1A9U", "xee1dobnAQw68l2h"];
|
||||
$registration_passwords_reset = ["2p1hyc7SB66jfKQ1", "LxCqG48wwnay5MfO", "1CbEcKTifZ6h9OlK", "SoS5POHZOWHxtm4u", "v8hHP9NH3aOfv3gl"];
|
||||
$registration_passwords_partner = ["5RnzSCEsPMDxaQR2", "9HvbzusabKTIxaz8", "Y4VlOWRr58Hi8Ws2", "u3nnDDmTJllseMFa", "NclxMDWwvWU6vw9T"];
|
||||
$registration_passwords_inventory = ["KCyLnXcYbzlHHGxJ", "s0FpOl2WK0z2XFom", "HCauWX3iWnWer618", "bhfYKNN9KCyKVR02", "6ClHiehJajeGVq0f"];
|
||||
$registration_passwords_datatable = ["YQ48zwTDqnnAb6Xu", "BkM5xOL3BFLwTkUm", "CPP86GIPdelqbH4u", "96cbwc7AgRNYYAbn", "tZ9fsOhFVo93uN5s"];
|
||||
$registration_passwords_listinventar = ["irAd4LBMwYRgb5TU", "YYqz1eM6R9TsepKI", "TkuB4bpjaeE8tD5G", "WYYuKeYeyqfimLYR", "yqmTqvHbcYZDOVrP"];
|
||||
$registration_passwords_picreader = ["uAXaqeNx2gZPmVkb", "xrc7PfHMf0llM8le", "dSPpMbeHxbkJ4aSA", "ST0vyvHS0pstdcQe", "zD81V0R21gMUUHps"];
|
||||
$registration_passwords_mutelist = ["MB8Kc1cRrOvq8mzc", "Qn7zmYL9horDjupk", "wwhM3EURkNSKE1aE", "GStRnBjRUgxl5EbE", "LLk9JFcuwfQRF3qR"];
|
||||
$registration_passwords_avatarpicker = ["QAotMKYpuYRPQpf0", "c3PT4r5Y2CgMNDmz", "0Eo97SU7swmBpNsR", "cDwE3Lw356K8KoeW", "hzZSxckUQI6Bbdma"];
|
||||
$registration_passwords_economy = ["kkkQwdLjalFE6Zd5", "RFoDmJbAneTYAKpP", "SXiAUpusQsEG95q1", "rIHjlus3RNkDNNPU", "ujfObXDU74HZ4Gh4"];
|
||||
$registration_passwords_events = ["H8JYYA7B5xU1LFNp", "agGln8DgmGknH3Zm", "45eBxkwpfqhFWl8F", "Q6IAMHuiUFEfiRrz", "mbXQiPqlwNq2N4le"];
|
||||
|
||||
// Farben der Webseite
|
||||
$colorSchemes = array(
|
||||
'oceanBreeze' => array('header' => '#2E8BC0', 'footer' => '#2E8BC0', 'secondary' => '#B1D4E0', 'primary' => '#3B3B98'),
|
||||
'sunsetGlow' => array('header' => '#FF6F61', 'footer' => '#FF6F61', 'secondary' => '#FFD54F', 'primary' => '#2C3E50'),
|
||||
'forestHaven' => array('header' => '#2F5233', 'footer' => '#2F5233', 'secondary' => '#A4DE02', 'primary' => '#FFAE03'),
|
||||
'lavenderBliss' => array('header' => '#6A0572', 'footer' => '#6A0572', 'secondary' => '#D2B4DE', 'primary' => '#F5B7B1'),
|
||||
'fierySunset' => array('header' => '#D32F2F', 'footer' => '#D32F2F', 'secondary' => '#FFCDD2', 'primary' => '#B71C1C'),
|
||||
'coolMint' => array('header' => '#009688', 'footer' => '#009688', 'secondary' => '#B2DFDB', 'primary' => '#004D40'),
|
||||
'royalBlue' => array('header' => '#3F51B5', 'footer' => '#3F51B5', 'secondary' => '#C5CAE9', 'primary' => '#1A237E'),
|
||||
'autumnHarvest' => array('header' => '#8D6E63', 'footer' => '#8D6E63', 'secondary' => '#FFCCBC', 'primary' => '#3E2723'),
|
||||
'goldenHour' => array('header' => '#FFEB3B', 'footer' => '#FFEB3B', 'secondary' => '#FFF9C4', 'primary' => '#FBC02D'),
|
||||
'mintChocolate' => array('header' => '#4CAF50', 'footer' => '#4CAF50', 'secondary' => '#CDDC39', 'primary' => '#795548'),
|
||||
'berryBurst' => array('header' => '#E91E63', 'footer' => '#E91E63', 'secondary' => '#F8BBD0', 'primary' => '#880E4F'),
|
||||
'midnightBlue' => array('header' => '#0D47A1', 'footer' => '#0D47A1', 'secondary' => '#BBDEFB', 'primary' => '#1E88E5'),
|
||||
'grayscale1' => array('header' => '#333333', 'footer' => '#333333', 'secondary' => '#666666', 'primary' => '#E0E0E0'),
|
||||
'grayscale2' => array('header' => '#4F4F4F', 'footer' => '#4F4F4F', 'secondary' => '#A0A0A0', 'primary' => '#FFFFFF'),
|
||||
'grayscale3' => array('header' => '#2B2B2B', 'footer' => '#2B2B2B', 'secondary' => '#858585', 'primary' => '#D9D9D9'),
|
||||
'emeraldDream' => array('header' => '#50C878', 'footer' => '#50C878', 'secondary' => '#98FB98', 'primary' => '#006400'),
|
||||
'coralReef' => array('header' => '#FF7F50', 'footer' => '#FF7F50', 'secondary' => '#FFD700', 'primary' => '#8B0000'),
|
||||
'purpleHaze' => array('header' => '#8A2BE2', 'footer' => '#8A2BE2', 'secondary' => '#DA70D6', 'primary' => '#4B0082'),
|
||||
'sunshineMeadow' => array('header' => '#FFD700', 'footer' => '#FFD700', 'secondary' => '#F0E68C', 'primary' => '#556B2F'),
|
||||
'autumnLeaves' => array('header' => '#FF4500', 'footer' => '#FF4500', 'secondary' => '#FFD700', 'primary' => '#8B4513'),
|
||||
'crimsonTide' => array('header' => '#DC143C', 'footer' => '#DC143C', 'secondary' => '#FFDAB9', 'primary' => '#8B0000'),
|
||||
'skylineView' => array('header' => '#87CEEB', 'footer' => '#87CEEB', 'secondary' => '#4682B4', 'primary' => '#1E90FF'),
|
||||
'blazingSunset' => array('header' => '#FF4500', 'footer' => '#FF4500', 'secondary' => '#FFD700', 'primary' => '#FF8C00'),
|
||||
'morningMist' => array('header' => '#87CEEB', 'footer' => '#87CEEB', 'secondary' => '#B0E0E6', 'primary' => '#4682B4'),
|
||||
'twilightSparkle' => array('header' => '#4B0082', 'footer' => '#4B0082', 'secondary' => '#9370DB', 'primary' => '#8A2BE2'),
|
||||
'sereneGreen' => array('header' => '#2E8B57', 'footer' => '#2E8B57', 'secondary' => '#98FB98', 'primary' => '#006400'),
|
||||
'coralBlush' => array('header' => '#FF6F61', 'footer' => '#FF6F61', 'secondary' => '#FFA07A', 'primary' => '#FA8072'),
|
||||
'earthyBrown' => array('header' => '#8B4513', 'footer' => '#8B4513', 'secondary' => '#D2B48C', 'primary' => '#A0522D'),
|
||||
'crimsonWave' => array('header' => '#B22222', 'footer' => '#B22222', 'secondary' => '#FF6347', 'primary' => '#DC143C'),
|
||||
'coolCyan' => array('header' => '#00CED1', 'footer' => '#00CED1', 'secondary' => '#E0FFFF', 'primary' => '#20B2AA'),
|
||||
'deepPurple' => array('header' => '#9400D3', 'footer' => '#9400D3', 'secondary' => '#9932CC', 'primary' => '#8B008B'),
|
||||
'warmAmber' => array('header' => '#FFBF00', 'footer' => '#FFBF00', 'secondary' => '#FFD700', 'primary' => '#FF8C00'),
|
||||
'gentlePink' => array('header' => '#FF69B4', 'footer' => '#FF69B4', 'secondary' => '#FFB6C1', 'primary' => '#FF1493'),
|
||||
'midnightTeal' => array('header' => '#008080', 'footer' => '#008080', 'secondary' => '#40E0D0', 'primary' => '#20B2AA'),
|
||||
'sunsetOrange' => array('header' => '#FF4500', 'footer' => '#FF4500', 'secondary' => '#FF6347', 'primary' => '#FF7F50'),
|
||||
'forestGreen' => array('header' => '#228B22', 'footer' => '#228B22', 'secondary' => '#32CD32', 'primary' => '#006400'),
|
||||
'icyBlue' => array('header' => '#00BFFF', 'footer' => '#00BFFF', 'secondary' => '#ADD8E6', 'primary' => '#1E90FF'),
|
||||
'rosyRed' => array('header' => '#FF6347', 'footer' => '#FF6347', 'secondary' => '#FF7F7F', 'primary' => '#FF4500'),
|
||||
'plumPurple' => array('header' => '#8B008B', 'footer' => '#8B008B', 'secondary' => '#DA70D6', 'primary' => '#9932CC'),
|
||||
'vibrantYellow' => array('header' => '#FFD700', 'footer' => '#FFD700', 'secondary' => '#FFFF00', 'primary' => '#FFA500'),
|
||||
'aquaMarine' => array('header' => '#7FFFD4', 'footer' => '#7FFFD4', 'secondary' => '#E0FFFF', 'primary' => '#40E0D0'),
|
||||
'burntSienna' => array('header' => '#E97451', 'footer' => '#E97451', 'secondary' => '#D2691E', 'primary' => '#CD5C5C'),
|
||||
'mintGreen' => array('header' => '#98FF98', 'footer' => '#98FF98', 'secondary' => '#ADFF2F', 'primary' => '#32CD32'),
|
||||
'sapphireBlue' => array('header' => '#0F52BA', 'footer' => '#0F52BA', 'secondary' => '#4682B4', 'primary' => '#1E90FF'),
|
||||
'coralPink' => array('header' => '#F88379', 'footer' => '#F88379', 'secondary' => '#FF7F50', 'primary' => '#FF6347'),
|
||||
'jadeGreen' => array('header' => '#00A36C', 'footer' => '#00A36C', 'secondary' => '#50C878', 'primary' => '#2E8B57'),
|
||||
'peachOrange' => array('header' => '#FFDAB9', 'footer' => '#FFDAB9', 'secondary' => '#FFE4B5', 'primary' => '#FFA07A'),
|
||||
'rubyRed' => array('header' => '#9B111E', 'footer' => '#9B111E', 'secondary' => '#FF6347', 'primary' => '#B22222'),
|
||||
'skyBlue' => array('header' => '#87CEEB', 'footer' => '#87CEEB', 'secondary' => '#B0E0E6', 'primary' => '#00BFFF'),
|
||||
'burntOrange' => array('header' => '#FF7F50', 'footer' => '#FF7F50', 'secondary' => '#FFA07A', 'primary' => '#FF4500'),
|
||||
'standardcolor' => array('header' => '#cdb38b', 'footer' => '#eecfa1', 'secondary' => '#f5f5dc', 'primary' => '#4F4F4F')
|
||||
);
|
||||
// Die Farbschaltflächen habe ich eingefügt damit man sich ein gesamtbild der Farbschemas machen kann.
|
||||
// Bitte last eure kereativität durch nichts stoppen ändert die colorSchemes wie es euch gefällt.
|
||||
define('SHOW_COLOR_BUTTONS', false); // Farbschaltflächen anzeigen (true/false)
|
||||
define('INITIAL_COLOR_SCHEME', 'standardcolor'); // Farbschema auswählen
|
||||
|
||||
// Farben und Schriftart
|
||||
// Setze aktuelle Farbschema basierend auf der Konstanten INITIAL_COLOR_SCHEME
|
||||
$currentColorScheme = $colorSchemes[INITIAL_COLOR_SCHEME];
|
||||
|
||||
// definiere die Farben für Header, Footer und andere
|
||||
define('HEADER_COLOR', $currentColorScheme['header']); // Header-Farbe
|
||||
define('FOOTER_COLOR', $currentColorScheme['footer']); // Footer-Farbe
|
||||
define('SECONDARY_COLOR', $currentColorScheme['secondary']); // Sekundärfarbe
|
||||
define('PRIMARY_COLOR', $currentColorScheme['primary']); // Primäre Schriftfarbe
|
||||
|
||||
define('FONT_FAMILY_STATS', 'Arial, Verdana, sans-serif');
|
||||
define('FONT_FAMILY', 'Pacifico, normal, serif');
|
||||
|
||||
// Schriftgrößen
|
||||
define('BASE_FONT_SIZE', '26px'); // Standardgröße für Text
|
||||
define('TITLE_FONT_SIZE', '48px'); // Größe für Überschriften
|
||||
define('STATS_FONT_SIZE', '14px'); // Größe für Statistik-Text
|
||||
|
||||
// Links
|
||||
define('LINK_COLOR', '#3A3A3A'); // Standard Link-Farbe
|
||||
define('LINK_HOVER_COLOR', 'red'); // Link-Farbe beim Hover
|
||||
|
||||
// Hintergrund- und Vordergrundbilder
|
||||
define('BACKGROUND_IMAGE', 'pics/transparent.png'); // Hintergrundbild
|
||||
define('FOREGROUND_IMAGE', 'pics/transparent.png'); // Logo oder Vordergrundbild
|
||||
define('BACKGROUND_OPACITY', 1.0); // Transparenz des Hintergrunds
|
||||
define('FOREGROUND_OPACITY', 1.0); // Transparenz des Logos
|
||||
|
||||
// Anzeigeoptionen
|
||||
define('LOGO_ON', 'OFF'); // Logo anzeigen: ON / OFF
|
||||
define('TEXT_ON', 'ON'); // Begrüßungstext anzeigen: ON / OFF
|
||||
define('LOGO_PATH', 'include/Metavers150.png'); // Pfad zum Logo
|
||||
define('LOGO_WIDTH', '50%'); // Logo-Breite
|
||||
define('LOGO_HEIGHT', '25%'); // Logo-Höhe
|
||||
define('GUIDE_DATA', 'DATA'); // DATA/JSON guide anzeigen.
|
||||
|
||||
// Begrüßungstext
|
||||
// Schriftarten gibt es hier: https://fonts.google.com/
|
||||
// LOGO_FONT Beispiele: 'Pacifico', 'Barriecito','Playfair Display','Comic Neue','Roboto','Lobster','Montserrat','Oswald','Raleway','Merriweather','Lora','Open Sans','Dancing Script','Nunito'
|
||||
define('LOGO_FONT', 'Lobster'); // Schriftart des Logos
|
||||
define('PRIMARY_COLOR_LOGO', '#00FFFF'); // Allgemeine Schriftfarbe Schwarz 000000, Weiss FFFFFF
|
||||
define('WELCOME_TEXT', '<p> Willkommen im ' . SITE_NAME . '</p>');
|
||||
define('WELCOME_TEXT_WIDTH', '50%'); // Standardbreite (z. B. 50%)
|
||||
define('WELCOME_TEXT_HEIGHT', 'auto'); // Standardhöhe (auto für flexible Höhe)
|
||||
define('WELCOME_TEXT_COLOR', PRIMARY_COLOR_LOGO); // Farbe des Textes
|
||||
define('WELCOME_TEXT_ALIGN', 'left'); // Zentriert, links oder rechts
|
||||
define('WELCOME_TEXT_FONT_SIZE', '24px'); // Schriftgröße des Textes
|
||||
|
||||
// Bildanzeige-Einstellungen
|
||||
define('SLIDESHOW_FOLDER', './images'); // Verzeichnis für die Bilder
|
||||
define('IMAGE_SIZE', 'width:100%;height:100%'); // Größe der Bilder (100% für Vollbild)
|
||||
define('SLIDESHOW_DELAY', 9000); // Zeit zwischen Bildern (in ms, 9000 = 9 Sekunden)
|
||||
|
||||
// Einstellungen für Maptiles
|
||||
define('FREI_COLOR', '#0088FF'); // Farbe für freie Koordinaten
|
||||
define('BESCHLAGT_COLOR', '#55C155'); // Farbe für SingleRegion
|
||||
define('VARREGION_COLOR', '#006400'); // Farbe für VarRegion
|
||||
define('CENTER_COLOR', '#FF0000'); // Farbe für Zentrum
|
||||
define('TILE_SIZE', '25px'); // Größe der Farbfelder
|
||||
|
||||
// Zentrum des Grids
|
||||
define('CONF_CENTER_COORD_X', 5500); // X-KOORDINATE DES ZENTRUMS
|
||||
define('CONF_CENTER_COORD_Y', 5500); // Y-KOORDINATE DES ZENTRUMS
|
||||
|
||||
define('MAPS_X', 32);
|
||||
define('MAPS_Y', 32);
|
||||
|
||||
// MOTD-Einstellung: 'Dyn' für dynamisch, 'Static' für statisch
|
||||
define('MOTD', 'Dyn'); // Oder 'Static'
|
||||
|
||||
// Statische MOTD (nur relevant, wenn MOTD auf 'Static' gesetzt ist)
|
||||
define('MOTD_STATIC_MESSAGE', 'Willkommen auf im Grid! Bitte beachte unsere Regeln.');
|
||||
define('MOTD_STATIC_TYPE', 'system');
|
||||
define('MOTD_STATIC_URL_TOS', BASE_URL . '/include/tos.php');
|
||||
define('MOTD_STATIC_URL_DMCA', BASE_URL . '/include/dmca.php');
|
||||
|
||||
// Definiere verschiedene RSS-Feed-URLs getrennt durch Komma.
|
||||
$feed_urls = [
|
||||
'http://opensimulator.org/viewgit/?a=rss-log&p=opensim', // Standard-Feed
|
||||
'https://www.hypergridbusiness.com/feed'
|
||||
];
|
||||
|
||||
// Maximale Anzahl der Einträge pro Feed
|
||||
$max_entries = 50;
|
||||
?>
|
||||
@@ -0,0 +1,322 @@
|
||||
<?php
|
||||
|
||||
// Globale Variablen verwenden
|
||||
global $osVorname, $osNachname, $osEMail, $osHash, $osSalt, $benutzeruuid, $inventoryuuid, $neuparentFolderID, $neuHauptFolderID, $osDatum, $pdo;
|
||||
|
||||
//$pdo = new PDO("mysql:host=$CONF_db_server;dbname=$CONF_db_database", $CONF_db_user, $CONF_db_pass);
|
||||
$pdo = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD);
|
||||
|
||||
|
||||
// Avatar eintragen
|
||||
$neuer_user = array();
|
||||
$neuer_user['PrincipalID'] = $benutzeruuid;
|
||||
$neuer_user['ScopeID'] = '00000000-0000-0000-0000-000000000000';
|
||||
$neuer_user['FirstName'] = $osVorname;
|
||||
$neuer_user['LastName'] = $osNachname;
|
||||
$neuer_user['Email'] = $osEMail;
|
||||
$neuer_user['ServiceURLs'] = 'HomeURI= InventoryServerURI= AssetServerURI=';
|
||||
$neuer_user['Created'] = $osDatum;
|
||||
$neuer_user['UserLevel'] = '0';
|
||||
$neuer_user['UserFlags'] = '0';
|
||||
$neuer_user['UserTitle'] = '';
|
||||
$neuer_user['active'] = '1';
|
||||
|
||||
|
||||
// $statement = $pdo->prepare("INSERT INTO UserAccounts (email, vorname, nachname) VALUES (:email, :vorname, :nachname)");
|
||||
$statement = $pdo->prepare("INSERT INTO UserAccounts (PrincipalID, ScopeID, FirstName, LastName, Email, ServiceURLs, Created, UserLevel, UserFlags, UserTitle, active) VALUES (:PrincipalID, :ScopeID, :FirstName, :LastName, :Email, :ServiceURLs, :Created, :UserLevel, :UserFlags, :UserTitle, :active)");
|
||||
$statement->execute($neuer_user);
|
||||
|
||||
|
||||
// UUID, passwordHash, passwordSalt, webLoginKey, accountType
|
||||
$neues_passwd = array();
|
||||
$neues_passwd['UUID'] = $benutzeruuid;
|
||||
$neues_passwd['passwordHash'] = $osHash;
|
||||
$neues_passwd['passwordSalt'] = $osSalt;
|
||||
$neues_passwd['webLoginKey'] = '00000000-0000-0000-0000-000000000000';
|
||||
$neues_passwd['accountType'] = 'UserAccount';
|
||||
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO auth (UUID, passwordHash, passwordSalt, webLoginKey, accountType) VALUES (:UUID, :passwordHash, :passwordSalt, :webLoginKey, :accountType)");
|
||||
$statement->execute($neues_passwd);
|
||||
|
||||
// Das nachfolgende eintragen in der GridUser Spalte
|
||||
$neuer_GridUser = array();
|
||||
$neuer_GridUser['UserID'] = $benutzeruuid;
|
||||
$neuer_GridUser['HomeRegionID'] = '00000000-0000-0000-0000-000000000000';
|
||||
$neuer_GridUser['HomePosition'] = '<0,0,0>';
|
||||
$neuer_GridUser['LastRegionID'] = '00000000-0000-0000-0000-000000000000';
|
||||
$neuer_GridUser['LastPosition'] = '<0,0,0>';
|
||||
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO GridUser (UserID, HomeRegionID, HomePosition, LastRegionID, LastPosition) VALUES (:UserID, :HomeRegionID, :HomePosition, :LastRegionID, :LastPosition)");
|
||||
$statement->execute($neuer_GridUser);
|
||||
|
||||
// Inventarverzeichnisse erstellen
|
||||
|
||||
// Ordner Textures
|
||||
$Texturesuuid = generateUUID();
|
||||
|
||||
$verzeichnistextur = array();
|
||||
$verzeichnistextur['folderName'] = 'Textures';
|
||||
$verzeichnistextur['type'] = '0';
|
||||
$verzeichnistextur['version'] = '1';
|
||||
$verzeichnistextur['folderID'] = $Texturesuuid;
|
||||
$verzeichnistextur['agentID'] = $benutzeruuid;
|
||||
$verzeichnistextur['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnistextur);
|
||||
|
||||
// Ordner Sounds
|
||||
$Soundsuuid = generateUUID();
|
||||
|
||||
$verzeichnisSounds = array();
|
||||
$verzeichnisSounds['folderName'] = 'Sounds';
|
||||
$verzeichnisSounds['type'] = '1';
|
||||
$verzeichnisSounds['version'] = '1';
|
||||
$verzeichnisSounds['folderID'] = $Soundsuuid;
|
||||
$verzeichnisSounds['agentID'] = $benutzeruuid;
|
||||
$verzeichnisSounds['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisSounds);
|
||||
|
||||
// Ordner Calling Cards
|
||||
$CallingCardsuuid = generateUUID();
|
||||
|
||||
$verzeichnisCallingCards = array();
|
||||
$verzeichnisCallingCards['folderName'] = 'Calling Cards';
|
||||
$verzeichnisCallingCards['type'] = '2';
|
||||
$verzeichnisCallingCards['version'] = '2';
|
||||
$verzeichnisCallingCards['folderID'] = $CallingCardsuuid;
|
||||
$verzeichnisCallingCards['agentID'] = $benutzeruuid;
|
||||
$verzeichnisCallingCards['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisCallingCards);
|
||||
|
||||
// Ordner Landmarks
|
||||
$Landmarksuuid = generateUUID();
|
||||
|
||||
$verzeichnisLandmarks = array();
|
||||
$verzeichnisLandmarks['folderName'] = 'Landmarks';
|
||||
$verzeichnisLandmarks['type'] = '3';
|
||||
$verzeichnisLandmarks['version'] = '1';
|
||||
$verzeichnisLandmarks['folderID'] = $Landmarksuuid;
|
||||
$verzeichnisLandmarks['agentID'] = $benutzeruuid;
|
||||
$verzeichnisLandmarks['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisLandmarks);
|
||||
|
||||
// Ordner My Inventory
|
||||
$MyInventoryuuid = generateUUID();
|
||||
|
||||
$verzeichnisMyInventory = array();
|
||||
$verzeichnisMyInventory['folderName'] = 'My Inventory';
|
||||
$verzeichnisMyInventory['type'] = '8';
|
||||
$verzeichnisMyInventory['version'] = '17';
|
||||
$verzeichnisMyInventory['folderID'] = $neuHauptFolderID;
|
||||
$verzeichnisMyInventory['agentID'] = $benutzeruuid;
|
||||
$verzeichnisMyInventory['parentFolderID'] = '00000000-0000-0000-0000-000000000000';
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisMyInventory);
|
||||
|
||||
// Ordner Photo Album
|
||||
$PhotoAlbumuuid = generateUUID();
|
||||
|
||||
$verzeichnisPhotoAlbum = array();
|
||||
$verzeichnisPhotoAlbum['folderName'] = 'Photo Album';
|
||||
$verzeichnisPhotoAlbum['type'] = '15';
|
||||
$verzeichnisPhotoAlbum['version'] = '1';
|
||||
$verzeichnisPhotoAlbum['folderID'] = $PhotoAlbumuuid;
|
||||
$verzeichnisPhotoAlbum['agentID'] = $benutzeruuid;
|
||||
$verzeichnisPhotoAlbum['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisPhotoAlbum);
|
||||
|
||||
// Ordner Clothing
|
||||
$Clothinguuid = generateUUID();
|
||||
|
||||
$verzeichnisClothing = array();
|
||||
$verzeichnisClothing['folderName'] = 'Clothing';
|
||||
$verzeichnisClothing['type'] = '5';
|
||||
$verzeichnisClothing['version'] = '3';
|
||||
$verzeichnisClothing['folderID'] = $Clothinguuid;
|
||||
$verzeichnisClothing['agentID'] = $benutzeruuid;
|
||||
$verzeichnisClothing['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisClothing);
|
||||
|
||||
// Ordner Objects
|
||||
$Objectsuuid = generateUUID();
|
||||
|
||||
$verzeichnisObjects = array();
|
||||
$verzeichnisObjects['folderName'] = 'Objects';
|
||||
$verzeichnisObjects['type'] = '6';
|
||||
$verzeichnisObjects['version'] = '1';
|
||||
$verzeichnisObjects['folderID'] = $Objectsuuid;
|
||||
$verzeichnisObjects['agentID'] = $benutzeruuid;
|
||||
$verzeichnisObjects['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisObjects);
|
||||
|
||||
// Ordner Notecards
|
||||
$Notecardsuuid = generateUUID();
|
||||
|
||||
$verzeichnisNotecards = array();
|
||||
$verzeichnisNotecards['folderName'] = 'Notecards';
|
||||
$verzeichnisNotecards['type'] = '7';
|
||||
$verzeichnisNotecards['version'] = '1';
|
||||
$verzeichnisNotecards['folderID'] = $Notecardsuuid;
|
||||
$verzeichnisNotecards['agentID'] = $benutzeruuid;
|
||||
$verzeichnisNotecards['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisNotecards);
|
||||
|
||||
// Ordner Scripts
|
||||
$Scriptsuuid = generateUUID();
|
||||
|
||||
$verzeichnisScripts = array();
|
||||
$verzeichnisScripts['folderName'] = 'Scripts';
|
||||
$verzeichnisScripts['type'] = '10';
|
||||
$verzeichnisScripts['version'] = '1';
|
||||
$verzeichnisScripts['folderID'] = $Scriptsuuid;
|
||||
$verzeichnisScripts['agentID'] = $benutzeruuid;
|
||||
$verzeichnisScripts['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisScripts);
|
||||
|
||||
// Ordner Body Parts
|
||||
$BodyPartsuuid = generateUUID();
|
||||
|
||||
$verzeichnisBodyParts = array();
|
||||
$verzeichnisBodyParts['folderName'] = 'Body Parts';
|
||||
$verzeichnisBodyParts['type'] = '13';
|
||||
$verzeichnisBodyParts['version'] = '5';
|
||||
$verzeichnisBodyParts['folderID'] = $BodyPartsuuid;
|
||||
$verzeichnisBodyParts['agentID'] = $benutzeruuid;
|
||||
$verzeichnisBodyParts['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisBodyParts);
|
||||
|
||||
// Ordner Trash
|
||||
$Trashuuid = generateUUID();
|
||||
|
||||
$verzeichnisTrash = array();
|
||||
$verzeichnisTrash['folderName'] = 'Trash';
|
||||
$verzeichnisTrash['type'] = '14';
|
||||
$verzeichnisTrash['version'] = '1';
|
||||
$verzeichnisTrash['folderID'] = $Trashuuid;
|
||||
$verzeichnisTrash['agentID'] = $benutzeruuid;
|
||||
$verzeichnisTrash['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisTrash);
|
||||
|
||||
// Ordner Lost And Found
|
||||
$LostAndFounduuid = generateUUID();
|
||||
|
||||
$verzeichnisLostAndFound = array();
|
||||
$verzeichnisLostAndFound['folderName'] = 'Lost And Found';
|
||||
$verzeichnisLostAndFound['type'] = '16';
|
||||
$verzeichnisLostAndFound['version'] = '1';
|
||||
$verzeichnisLostAndFound['folderID'] = $LostAndFounduuid;
|
||||
$verzeichnisLostAndFound['agentID'] = $benutzeruuid;
|
||||
$verzeichnisLostAndFound['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisLostAndFound);
|
||||
|
||||
// Ordner Animations
|
||||
$Animationsuuid = generateUUID();
|
||||
|
||||
$verzeichnisAnimations = array();
|
||||
$verzeichnisAnimations['folderName'] = 'Animations';
|
||||
$verzeichnisAnimations['type'] = '20';
|
||||
$verzeichnisAnimations['version'] = '1';
|
||||
$verzeichnisAnimations['folderID'] = $Animationsuuid;
|
||||
$verzeichnisAnimations['agentID'] = $benutzeruuid;
|
||||
$verzeichnisAnimations['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisAnimations);
|
||||
|
||||
// Ordner Gestures
|
||||
$Gesturesuuid = generateUUID();
|
||||
|
||||
$verzeichnisGestures = array();
|
||||
$verzeichnisGestures['folderName'] = 'Gestures';
|
||||
$verzeichnisGestures['type'] = '21';
|
||||
$verzeichnisGestures['version'] = '1';
|
||||
$verzeichnisGestures['folderID'] = $Gesturesuuid;
|
||||
$verzeichnisGestures['agentID'] = $benutzeruuid;
|
||||
$verzeichnisGestures['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisGestures);
|
||||
|
||||
|
||||
// Friends
|
||||
$Friendsuuid = generateUUID();
|
||||
|
||||
$verzeichnisFriends = array();
|
||||
$verzeichnisFriends['folderName'] = 'Friends';
|
||||
$verzeichnisFriends['type'] = '2';
|
||||
$verzeichnisFriends['version'] = '2';
|
||||
$verzeichnisFriends['folderID'] = $Friendsuuid;
|
||||
$verzeichnisFriends['agentID'] = $benutzeruuid;
|
||||
$verzeichnisFriends['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisFriends);
|
||||
|
||||
// Favorites
|
||||
$Favoritesuuid = generateUUID();
|
||||
|
||||
$verzeichnisFavorites = array();
|
||||
$verzeichnisFavorites['folderName'] = 'Favorites';
|
||||
$verzeichnisFavorites['type'] = '23';
|
||||
$verzeichnisFavorites['version'] = '1';
|
||||
$verzeichnisFavorites['folderID'] = $Favoritesuuid;
|
||||
$verzeichnisFavorites['agentID'] = $benutzeruuid;
|
||||
$verzeichnisFavorites['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisFavorites);
|
||||
|
||||
// Current Outfit
|
||||
$CurrentOutfituuid = generateUUID();
|
||||
|
||||
$verzeichnisCurrentOutfit = array();
|
||||
$verzeichnisCurrentOutfit['folderName'] = 'Current Outfit';
|
||||
$verzeichnisCurrentOutfit['type'] = '46';
|
||||
$verzeichnisCurrentOutfit['version'] = '1';
|
||||
$verzeichnisCurrentOutfit['folderID'] = $CurrentOutfituuid;
|
||||
$verzeichnisCurrentOutfit['agentID'] = $benutzeruuid;
|
||||
$verzeichnisCurrentOutfit['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisCurrentOutfit);
|
||||
|
||||
// All
|
||||
$Alluuid = generateUUID();
|
||||
|
||||
$verzeichnisAll = array();
|
||||
$verzeichnisAll['folderName'] = 'All';
|
||||
$verzeichnisAll['type'] = '2';
|
||||
$verzeichnisAll['version'] = '1';
|
||||
$verzeichnisAll['folderID'] = $Alluuid;
|
||||
$verzeichnisAll['agentID'] = $benutzeruuid;
|
||||
$verzeichnisAll['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisAll);
|
||||
?>
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"shopping": [
|
||||
{
|
||||
"name": "Brogals Style & Fashion",
|
||||
"url": "hop://brogals-paradies.de:8002/Brogals%20Style%20%26%20Fashion/49/96/22",
|
||||
"image": "destinations/BrogalsStyleFashion.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Zoes Mall",
|
||||
"url": "hop://2.nymphgrid.com:8002/Zoes%20Mall%20Welcome/118/128/23",
|
||||
"image": "destinations/ZoesMall.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Lani Shopping Mall",
|
||||
"url": "hop://hg.osgrid.org:80/Lani/213/144/35",
|
||||
"image": "destinations/Lani.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Moonrose Shopping",
|
||||
"url": "hop://moonrose-grid.de:8002/Moonrose%20Shopping/10/147/29",
|
||||
"image": "destinations/MoonroseShopping.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Klamotto",
|
||||
"url": "hop://otterland.de:8002/Klamotto/71/101/23",
|
||||
"image": "destinations/Klamotto.jpg"
|
||||
},
|
||||
{
|
||||
"name": "FLORA",
|
||||
"url": "hop://alternatemetaverse.com:8002/FLORA/100/137/24",
|
||||
"image": "destinations/FLORA.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Agora",
|
||||
"url": "hop://hg.osgrid.org:80/Agora/429/389/24",
|
||||
"image": "destinations/Agora.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Sciatti Shop Clothes",
|
||||
"url": "secondlifesciattisigrid.it8002SciattiShopClothes10512023",
|
||||
"image": "destinations/SciattiShopClothes.jpg"
|
||||
}
|
||||
],
|
||||
"education": [
|
||||
{
|
||||
"name": "Lbsa Plaza",
|
||||
"url": "hop://hg.osgrid.org:80/Lbsa%20Plaza/170/132/41",
|
||||
"image": "destinations/LbsaPlaza.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Outworldz Virunga",
|
||||
"url": "hop://www.outworldz.com:9000/Outworldz%20Virunga/128/128/23",
|
||||
"image": "destinations/OutworldzVirunga.jpg"
|
||||
}
|
||||
],
|
||||
"art": [
|
||||
{
|
||||
"name": "ArtDestiny",
|
||||
"url": "hop://artdestiny.de:8002/ArtDestinyWelcome/147/153/25",
|
||||
"image": "destinations/ArtDestiny.jpg"
|
||||
}
|
||||
],
|
||||
"event": [
|
||||
{
|
||||
"name": "Tomis-World",
|
||||
"url": "hop://tomis-world.de:8002/Tomis-World/113/106/23",
|
||||
"image": "destinations/Tomis-World.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Event Plaza",
|
||||
"url": "hop://hg.osgrid.org:80/Event%20Plaza/373/381/25",
|
||||
"image": "destinations/EventPlaza.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Alternate Metaverse",
|
||||
"url": "hop://alternatemetaverse.com:8002/Alternate%20Metaverse/304/329/64",
|
||||
"image": "destinations/AlternateMetaverse.jpg"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,333 @@
|
||||
<?php
|
||||
$title = "DMCA";
|
||||
include 'header.php';
|
||||
|
||||
// Sprachauswahl (Standard: Deutsch)
|
||||
$lang = isset($_GET['lang']) ? $_GET['lang'] : 'de';
|
||||
|
||||
// Platzhalter-Werte setzen
|
||||
$variables = [
|
||||
"DEIN GRID-NAME" => "Virtual " . SITE_NAME . " Grid",
|
||||
"DATUM" => date("d.m.Y"),
|
||||
"DEINE EMAIL" => "support@" . SITE_NAME . ".com",
|
||||
"DEINE POSTADRESSE" => "Musterstraße 123, 12345 Musterstadt",
|
||||
"OPTIONAL" => "Discord: GridSupport" . BASE_URL,
|
||||
"DEINE KONTAKT-EMAIL" => "kontakt@" . SITE_NAME . ".com"
|
||||
];
|
||||
?>
|
||||
|
||||
<div class="language-switcher">
|
||||
<a href="?lang=de">Deutsch</a> | <a href="?lang=en">English</a>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.markdown-content {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
color: rgb(31, 31, 31); /* Korrektur: 'color' statt 'Color' */
|
||||
background-color: rgb(238, 241, 241);
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.language-switcher {
|
||||
text-align: right;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.language-switcher a {
|
||||
text-decoration: none;
|
||||
color: #007BFF;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.language-switcher a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: #f4f4f4;
|
||||
padding: 2px 5px;
|
||||
border-radius: 3px;
|
||||
font-family: monospace;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php
|
||||
function replacePlaceholders($text, $variables = []) {
|
||||
foreach ($variables as $key => $value) {
|
||||
$text = str_replace("[$key]", $value, $text);
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
||||
function simpleMarkdownToHTML($text) {
|
||||
// Zeilenumbrüche umwandeln
|
||||
$text = nl2br($text);
|
||||
|
||||
// Fettdruck **text** -> <strong>text</strong>
|
||||
$text = preg_replace('/\*\*(.*?)\*\*/', '<strong>$1</strong>', $text);
|
||||
|
||||
// Kursiv *text* -> <em>text</em>
|
||||
$text = preg_replace('/\*(.*?)\*/', '<em>$1</em>', $text);
|
||||
|
||||
// Überschriften # -> <h1>, ## -> <h2> usw.
|
||||
for ($i = 6; $i >= 1; $i--) {
|
||||
$text = preg_replace('/^' . str_repeat('#', $i) . '\s*(.*?)$/m', "<h$i>$1</h$i>", $text);
|
||||
}
|
||||
|
||||
// Links [Text](URL) -> <a href="URL">Text</a>
|
||||
$text = preg_replace('/\[(.*?)\]\((.*?)\)/', '<a href="$2">$1</a>', $text);
|
||||
|
||||
// Inline-Code `text` -> <code>text</code>
|
||||
$text = preg_replace('/`(.*?)`/', '<code>$1</code>', $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
// Deutsche DMCA-Richtlinie
|
||||
$dmcaTextDE = "
|
||||
# **DMCA-Richtlinie für [DEIN GRID-NAME]**
|
||||
**Letzte Aktualisierung:** [DATUM]
|
||||
|
||||
Diese DMCA-Richtlinie beschreibt, wie **[DEIN GRID-NAME]** (nachfolgend „wir“, „uns“, „unser Grid“)
|
||||
auf Beschwerden bezüglich Urheberrechtsverletzungen gemäß dem **Digital Millennium Copyright Act (DMCA)** reagiert.
|
||||
|
||||
Falls du glaubst, dass Inhalte innerhalb unseres OpenSimulator-Grids gegen dein Urheberrecht verstoßen,
|
||||
kannst du eine **DMCA-Beschwerde** einreichen, indem du die unten beschriebenen Schritte befolgst.
|
||||
|
||||
---
|
||||
|
||||
## **1. Einreichen einer DMCA-Beschwerde (Takedown-Anfrage)**
|
||||
Falls du der Meinung bist, dass deine urheberrechtlich geschützten Inhalte ohne Erlaubnis in **[DEIN GRID-NAME]** verwendet wurden,
|
||||
sende bitte eine schriftliche Beschwerde an unseren **DMCA-Agenten** unter:
|
||||
|
||||
📩 **E-Mail:** [DEINE EMAIL]
|
||||
📬 **Postadresse:** [DEINE POSTADRESSE]
|
||||
📞 **Telefon:** [OPTIONAL]
|
||||
|
||||
**Deine DMCA-Beschwerde muss folgende Informationen enthalten:**
|
||||
|
||||
1. **Identifikation des geschützten Werkes:**
|
||||
- Eine detaillierte Beschreibung des urheberrechtlich geschützten Werkes (z. B. ein Screenshot, Link oder Dokumentation).
|
||||
|
||||
2. **Standort des rechtsverletzenden Inhalts:**
|
||||
- Genaue Position des Inhalts in unserem Grid, inklusive:
|
||||
- Name der Region
|
||||
- Koordinaten (falls möglich)
|
||||
- UUID oder Asset-ID des betroffenen Objekts
|
||||
- Screenshot oder Beschreibung
|
||||
|
||||
3. **Kontaktdaten:**
|
||||
- Dein Name, Adresse, E-Mail-Adresse und Telefonnummer.
|
||||
|
||||
4. **Erklärung zur Rechtsverletzung:**
|
||||
- Eine Erklärung, dass du in **gutem Glauben** davon ausgehst, dass die Nutzung nicht vom Urheberrechtsinhaber,
|
||||
seinem Vertreter oder dem Gesetz (z. B. Fair Use) erlaubt ist.
|
||||
|
||||
5. **Eidesstattliche Versicherung:**
|
||||
- Eine Erklärung, dass die Angaben in deiner Beschwerde korrekt sind und du der rechtmäßige Inhaber des Urheberrechts oder ein autorisierter Vertreter bist.
|
||||
|
||||
6. **Digitale oder physische Unterschrift:**
|
||||
- Eine elektronische oder handschriftliche Unterschrift des Urheberrechtsinhabers oder dessen bevollmächtigten Vertreters.
|
||||
|
||||
---
|
||||
|
||||
## **2. Unsere Reaktion auf eine DMCA-Beschwerde**
|
||||
Nach Erhalt einer gültigen DMCA-Anfrage werden wir:
|
||||
|
||||
- Den mutmaßlich rechtsverletzenden Inhalt **vorläufig entfernen oder den Zugriff darauf sperren**.
|
||||
- Den Nutzer, der den Inhalt bereitgestellt hat, über die Beschwerde informieren.
|
||||
- Falls der betroffene Nutzer eine **Gegendarstellung** einreicht (siehe Abschnitt 3), den Urheberrechtsinhaber darüber informieren.
|
||||
|
||||
Falls der Urheberrechtsinhaber innerhalb von **10 Werktagen** nach unserer Benachrichtigung keine rechtlichen Schritte einleitet,
|
||||
können wir den entfernten Inhalt wiederherstellen.
|
||||
|
||||
---
|
||||
|
||||
## **3. Einreichen einer Gegendarstellung (Counter-Notice)**
|
||||
Falls du der Meinung bist, dass der entfernte Inhalt nicht gegen Urheberrechte verstößt oder du eine Erlaubnis zur Nutzung hattest,
|
||||
kannst du eine **Gegendarstellung** einreichen.
|
||||
|
||||
Bitte sende deine Gegendarstellung an **[DEINE EMAIL]** mit folgenden Angaben:
|
||||
|
||||
1. **Identifikation des entfernten Inhalts:**
|
||||
- Die ursprüngliche Position des Inhalts (Region, Koordinaten, UUID, Screenshots).
|
||||
|
||||
2. **Erklärung zur Unrechtmäßigkeit der Beschwerde:**
|
||||
- Eine Erklärung, dass du **in gutem Glauben** der Meinung bist, dass die Entfernung aufgrund eines Fehlers oder falscher Identifizierung erfolgte.
|
||||
|
||||
3. **Zustimmung zur Gerichtsbarkeit:**
|
||||
- Falls du außerhalb der USA lebst, eine Erklärung, dass du die Gerichtsbarkeit der US-amerikanischen Bundesgerichte akzeptierst.
|
||||
|
||||
4. **Eidesstattliche Versicherung:**
|
||||
- Eine Versicherung, dass deine Angaben korrekt sind und du für eventuelle rechtliche Konsequenzen verantwortlich bist.
|
||||
|
||||
5. **Digitale oder physische Unterschrift:**
|
||||
- Deine Unterschrift oder die deines bevollmächtigten Vertreters.
|
||||
|
||||
Nach Erhalt einer gültigen Gegendarstellung kann der entfernte Inhalt innerhalb von **10–14 Tagen** wiederhergestellt werden,
|
||||
sofern der ursprüngliche Beschwerdeführer keine Klage einreicht.
|
||||
|
||||
---
|
||||
|
||||
## **4. Konsequenzen für wiederholte Verstöße**
|
||||
Nutzer, die wiederholt Urheberrechte verletzen, können:
|
||||
- **Verwarnt**,
|
||||
- **Vorübergehend gesperrt**,
|
||||
- Oder **dauerhaft aus dem Grid ausgeschlossen** werden.
|
||||
|
||||
Wir behalten uns das Recht vor, Nutzerkonten ohne vorherige Warnung zu sperren, falls schwere Verstöße vorliegen.
|
||||
|
||||
---
|
||||
|
||||
## **5. Keine Haftung für Nutzerinhalte**
|
||||
Unser Grid stellt eine Plattform für virtuelle Interaktionen bereit und hostet nutzergenerierte Inhalte.
|
||||
Wir übernehmen keine Haftung für urheberrechtlich geschützte Materialien, die von Nutzern hochgeladen wurden.
|
||||
Alle Nutzer sind für ihre hochgeladenen Inhalte selbst verantwortlich.
|
||||
|
||||
Wir arbeiten jedoch aktiv daran, **rechtsverletzende Inhalte zu entfernen**, sobald wir eine **gültige DMCA-Beschwerde** erhalten.
|
||||
|
||||
---
|
||||
|
||||
## **6. Kontakt für weitere Fragen**
|
||||
Falls du Fragen zur DMCA-Richtlinie hast, kannst du uns unter **[DEINE KONTAKT-EMAIL]** erreichen.
|
||||
|
||||
---
|
||||
|
||||
### **Rechtlicher Hinweis:**
|
||||
Diese Vorlage dient nur zu **Informationszwecken** und stellt **keine Rechtsberatung** dar.
|
||||
Falls du eine rechtlich geprüfte DMCA-Richtlinie benötigst, konsultiere bitte einen Anwalt.
|
||||
";
|
||||
|
||||
// Englische DMCA-Richtlinie
|
||||
$dmcaTextEN = "
|
||||
# **DMCA Policy for [DEIN GRID-NAME]**
|
||||
**Last Updated:** [DATUM]
|
||||
|
||||
This DMCA policy describes how **[DEIN GRID-NAME]** (hereinafter „we“, „us“, „our grid“)
|
||||
responds to complaints regarding copyright infringement under the **Digital Millennium Copyright Act (DMCA)**.
|
||||
|
||||
If you believe that content within our OpenSimulator grid violates your copyright,
|
||||
you can file a **DMCA complaint** by following the steps below.
|
||||
|
||||
---
|
||||
|
||||
## **1. Submitting a DMCA Complaint (Takedown Request)**
|
||||
If you believe that your copyrighted material has been used without permission in **[DEIN GRID-NAME]**,
|
||||
please send a written complaint to our **DMCA Agent** at:
|
||||
|
||||
📩 **Email:** [DEINE EMAIL]
|
||||
📬 **Postal Address:** [DEINE POSTADRESSE]
|
||||
📞 **Phone:** [OPTIONAL]
|
||||
|
||||
**Your DMCA complaint must include the following information:**
|
||||
|
||||
1. **Identification of the copyrighted work:**
|
||||
- A detailed description of the copyrighted work (e.g., a screenshot, link, or documentation).
|
||||
|
||||
2. **Location of the infringing content:**
|
||||
- The exact location of the content in our grid, including:
|
||||
- Region name
|
||||
- Coordinates (if possible)
|
||||
- UUID or asset ID of the affected object
|
||||
- Screenshot or description
|
||||
|
||||
3. **Contact information:**
|
||||
- Your name, address, email address, and phone number.
|
||||
|
||||
4. **Statement of infringement:**
|
||||
- A statement that you have a **good faith belief** that the use is not authorized by the copyright owner,
|
||||
their agent, or the law (e.g., fair use).
|
||||
|
||||
5. **Sworn statement:**
|
||||
- A statement that the information in your complaint is accurate and that you are the copyright owner or authorized to act on their behalf.
|
||||
|
||||
6. **Digital or physical signature:**
|
||||
- An electronic or handwritten signature of the copyright owner or their authorized representative.
|
||||
|
||||
---
|
||||
|
||||
## **2. Our Response to a DMCA Complaint**
|
||||
Upon receiving a valid DMCA complaint, we will:
|
||||
|
||||
- **Temporarily remove or disable access** to the allegedly infringing content.
|
||||
- Notify the user who provided the content about the complaint.
|
||||
- If the affected user submits a **counter-notice** (see Section 3), inform the copyright owner.
|
||||
|
||||
If the copyright owner does not take legal action within **10 business days** of our notification,
|
||||
we may restore the removed content.
|
||||
|
||||
---
|
||||
|
||||
## **3. Submitting a Counter-Notice**
|
||||
If you believe that the removed content does not infringe copyright or you had permission to use it,
|
||||
you can submit a **counter-notice**.
|
||||
|
||||
Please send your counter-notice to **[DEINE EMAIL]** with the following information:
|
||||
|
||||
1. **Identification of the removed content:**
|
||||
- The original location of the content (region, coordinates, UUID, screenshots).
|
||||
|
||||
2. **Statement of good faith:**
|
||||
- A statement that you have a **good faith belief** that the removal was due to a mistake or misidentification.
|
||||
|
||||
3. **Consent to jurisdiction:**
|
||||
- If you are outside the USA, a statement that you consent to the jurisdiction of US federal courts.
|
||||
|
||||
4. **Sworn statement:**
|
||||
- A statement that the information in your counter-notice is accurate and that you are responsible for any legal consequences.
|
||||
|
||||
5. **Digital or physical signature:**
|
||||
- Your signature or that of your authorized representative.
|
||||
|
||||
Upon receiving a valid counter-notice, the removed content may be restored within **10–14 days**,
|
||||
unless the original complainant files a lawsuit.
|
||||
|
||||
---
|
||||
|
||||
## **4. Consequences for Repeated Violations**
|
||||
Users who repeatedly infringe copyright may:
|
||||
- Be **warned**,
|
||||
- **Temporarily suspended**,
|
||||
- Or **permanently banned** from the grid.
|
||||
|
||||
We reserve the right to suspend accounts without prior warning in cases of severe violations.
|
||||
|
||||
---
|
||||
|
||||
## **5. No Liability for User-Generated Content**
|
||||
Our grid provides a platform for virtual interactions and hosts user-generated content.
|
||||
We are not liable for copyrighted materials uploaded by users.
|
||||
All users are responsible for the content they upload.
|
||||
|
||||
However, we actively work to **remove infringing content** upon receiving a **valid DMCA complaint**.
|
||||
|
||||
---
|
||||
|
||||
## **6. Contact for Further Questions**
|
||||
If you have questions about this DMCA policy, you can reach us at **[DEINE KONTAKT-EMAIL]**.
|
||||
|
||||
---
|
||||
|
||||
### **Legal Notice:**
|
||||
This template is for **informational purposes only** and does **not constitute legal advice**.
|
||||
If you need a legally reviewed DMCA policy, please consult an attorney.
|
||||
";
|
||||
|
||||
// Wähle den Text basierend auf der Sprache
|
||||
$dmcaText = ($lang == 'de') ? $dmcaTextDE : $dmcaTextEN;
|
||||
|
||||
// 1️⃣ Platzhalter ersetzen
|
||||
$dmcaText = replacePlaceholders($dmcaText, $variables);
|
||||
|
||||
// 2️⃣ Markdown in HTML umwandeln
|
||||
$finalHTML = simpleMarkdownToHTML($dmcaText);
|
||||
|
||||
// 3️⃣ HTML ausgeben
|
||||
echo "<div class='markdown-content'>$finalHTML</div>";
|
||||
?>
|
||||
|
||||
<?php include_once 'include/footer.php'; ?>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 116 KiB |
@@ -0,0 +1,293 @@
|
||||
Gridname,Gridlink.com:8002
|
||||
3D Worldz,www.3dWorldz.com:8002
|
||||
3DLES,edugrid.3dles.com:8002
|
||||
4Creative,pangea.myftp.org:8002
|
||||
A Dimension Beyond,grid.adimensionbeyond.net:8002
|
||||
A Virtual World,avirtualworld.org:8002
|
||||
Accueil Dracsoom,dracsoom.ddns.net:8002
|
||||
Admeja,admeja.bounceme.net:8002
|
||||
Adreans-World,adreans-world.from-fl.com:8000
|
||||
Adult Life,adult-life.de:8002
|
||||
Aedynar,aedynar.com:8002
|
||||
AI Grid,ai.let-us.cyou:8002
|
||||
AIRE Mille Flux,grid.aire-mille-flux.org:8002
|
||||
Alecia Grid,alecianagrid.com:8002
|
||||
Alexa World,alexaworld.de:8002
|
||||
Alife Virtual,alifevirtual.com:8002
|
||||
Alternate Metaverse,alternatemetaverse.com:8002
|
||||
Alterworld Grid,hg.alterworld.us:7002
|
||||
AmaziWorld,login.amaziworld.com:8002
|
||||
Angel Souls,angel-souls.de:8002
|
||||
Ankabi,ankabi.de:8002
|
||||
Ansjela Grid,hg.ansjelagrid.com:28002
|
||||
AnSky,login.anskygrid.ca:8002
|
||||
Arcadia Asylum,arcadiaasylum.org:8002
|
||||
Ardalia,ardiva.ddns.net:8002
|
||||
Ardiva,ardiva.ddns.net:8002
|
||||
Ares World,aresworld.outworldz.net:8002
|
||||
Argentoratum,cogito.no-ip.info:8002
|
||||
Argofantasy,argofantasy.com:8002
|
||||
Arielle’s Grid,bound2.ddns.net:8002
|
||||
ArtDestiny,artdestiny.de:8002
|
||||
Assassin Guard,assassinguard.opensim.fun:38002
|
||||
Astralia,astralia.eu:8002
|
||||
Atlantide,real-3d.zapto.org:8002
|
||||
Atlantis,209.126.208.163:9023
|
||||
Atlas Grid,atlasgrid.fr:8002
|
||||
Ausgrid,login.ausgridds.biz:8002
|
||||
Avacon,grid.avacon.org:8002
|
||||
AvatarLand,mikeland.ddns.net:8002
|
||||
AvatarLife,grid.avatarlife.com:8002
|
||||
Avie Realm,logon.avierealm.com:8002
|
||||
AviVerse AlterEgo,aviverse.it:8002
|
||||
AviWorlds,login.aviworlds.com:8002
|
||||
Baller Nation,login.ballernation.us:8002
|
||||
Barefoot Dreamers,login.barefoot-dreamers.com:8002
|
||||
Beta Technologies,opensim.betatechnologies.info:8002
|
||||
Blendioptera Grid,blendioptera2.outworldz.net:8002
|
||||
BloodMoon,bloodmoonpack.com:8002
|
||||
Bridgemere,bridgemere.outworldz.net:8002
|
||||
Bridger,bridger.outworldz.net:8002
|
||||
Caelum Alpha,caelumalpha.outworldz.net:8002
|
||||
Canadian Grid,canadiangrid.ca:8002
|
||||
CandM World,grid.candmworld.com:8002
|
||||
CandorsRPWorld,candorsrpworld.ch:8002
|
||||
Carima Welt,carima-welt.de:8002
|
||||
Casperia Prime,casperia.ddns.net:8002
|
||||
Cat Woman Rose,catwomanrose.de:8002
|
||||
CLC grid,clcgrid.com:8002
|
||||
Clone Fantasy,clonefantasy.ovh:8002
|
||||
Coffee Grid,coffeegrid.net:8002
|
||||
Concadia,gridconcadia.com:8002
|
||||
Conectados Grid,conectados.opensim.fun:8802
|
||||
Cooperation Creative,hg.cc-group.cc:8002
|
||||
Counter Earth,jand.dyndns.biz:7002
|
||||
Cozy Comforts Grid,grid.cozycomforts.net:8002
|
||||
Craft World,craft-world.org:8002
|
||||
CreaNovale Grid,login.creanovale.ca:8052
|
||||
Creo Mundos,grid.CreoMundos.com:8002
|
||||
Czech Welcome Centre,opensim.cz:9000
|
||||
Dajas Grid,Grid.Daja.at:8002
|
||||
Dark Heaven,Dark-Heaven.eu:8002
|
||||
Darkheart’s Playground,playground.darkheartsos.com:8002
|
||||
Decadence,decadence.ddns.net:8002
|
||||
Deep Playa,rajal.org:9000
|
||||
DigiWorldz,login.digiworldz.com:8002
|
||||
Discovery Grid,discoverygrid.net:8002
|
||||
Doghouse,doghouse.outworldz.net:8002
|
||||
Dorena’s World,dorenas-world.de:8002
|
||||
DowGrid,dowgridworld.com.br:8002
|
||||
Dragonz Kin Territories,grid.dragonzkinterritory.org:18002
|
||||
Dynamic Worldz,grid.dynamicworldz2.com:8822
|
||||
Dyvall,dyvall.de:8002
|
||||
E-LIVE Virtual World,world.eliveproject.eu:8002
|
||||
Edge of Reality Grid,theedgeofreality.ddns.net:8882
|
||||
EdMondo,slw.indire.it:8002
|
||||
EducaSim,grid.educasim.es:8002
|
||||
Endivatomic World,endivatomic.eu:8002
|
||||
Equinox Grid,equinoxgrid.com:8002
|
||||
Escape 2 Reality Grid,grid.escape2reality.org:8002
|
||||
EscapeLands,world.escapelands.com:8002
|
||||
Esfera Split,split.esferavirtual.com.br:8002
|
||||
Esfera Virtual,esferavirtual.com.br:8002
|
||||
Eureka World,grid1.eurekaworld.co.il:8002
|
||||
EVA Park,evapark.co.uk:8002
|
||||
Expanse,expanse.outworldz.net:8002
|
||||
Fae Farms,alanna.outworldz.net:8002
|
||||
Fearless Mysteries,www.fearlessmysteries.eu:8002
|
||||
Forgotten Worlds,213.200.254.17:18002
|
||||
France RP,francerpgrid.fr:8002
|
||||
Free Life,freelife.outworldz.net:8002
|
||||
Freedom Grid,freedomgrid.world:8002
|
||||
Fresh MetaVers,abc.outworldz.net:8002
|
||||
Freya’s Shadow World,213.200.254.17:12002
|
||||
Friends Grid,login.friends-grid.com:8002
|
||||
FuoriGrid,fuorigrid.opensim.online:8002
|
||||
Furry World,Furry-World.de:8002
|
||||
Gaming Friends,45.138.48.36:8002
|
||||
GBG World,gbg-world.com:8002
|
||||
Genesis Roleplay Grid,grid.genesis-roleplay.org:8002
|
||||
Gentle Fire Grid,gentlefire.opensim.fun:8002
|
||||
GerGrid,gergrid.de:8002
|
||||
Ghost Area,ghostarea.com:8002
|
||||
Goldor Grid,goldor.outworldz.net:8002
|
||||
Grid Nirvana,grid.gridnirvana.net:4002
|
||||
Grid Racers,GridRacers.com:8002
|
||||
GridExperience,hg.gridexperience.com:8002
|
||||
GridMania,gridmania.outworldz.net:8002
|
||||
Gridworld,gridworld.de:8002
|
||||
Groovy Verse,groovyverse.com:8002
|
||||
Hartland,hartland.ddns.net:8002
|
||||
Here Grid,here-grid.de:8002
|
||||
Herederos Grid,herederos.inworldz.net:8002
|
||||
HG Safari Grid,grid.hgsafari.org:58002
|
||||
Humble Grid,humble1.outworldz.net:9002
|
||||
Hypergrid City,login.hypergridcity.com:8002
|
||||
I Love You Grid,iloveyougrid.net:8002
|
||||
Icelady Grid,iceladygrid.de:8002
|
||||
Ignis Fatuus,ignis-fatuus.no-ip.biz:8002
|
||||
Immersion Tools,grid.suboceana.fr:8002
|
||||
Imperiya Grid,imperiya.sytes.net:8002
|
||||
Infinite Grid,grid.infinitegrid.org:8002
|
||||
Ipsofacto,ipsofacto.ddns.net:8002
|
||||
JamGrid,jamgrid.de:8002
|
||||
Japan Open Grid,jogrid.net:8002
|
||||
Jaytopia,jaytopia.outworldz.net:8002
|
||||
Joe’s Place,joesplace.outworldz.net:8002
|
||||
jOpenSimWorld,grid.jopensim.com:8002
|
||||
Jungle Friends Grid,junglefriends.opensim.fun:8002
|
||||
Kater and Friends,kater-and-friends.ddnss.de:8002
|
||||
Kinky Haven,kinkyhaven.com:8002
|
||||
Kishaki,kishaki.de:8002
|
||||
Kitely,grid.kitely.com:8002
|
||||
Kokomo World,grid.kokomoworld.de:8002
|
||||
KoolPheller Estates,koolpheller.ddns.net:8002
|
||||
Kurtopia,Kurtopia.ddns.net:8002
|
||||
Kyle Archipelago,kylearchipelago.com:8002
|
||||
La Grilla de Don Javi,donjavi.minigrid.xyz:8002
|
||||
Lady’s Dreamworld,ladysdreamworld.opensim.fun:8002
|
||||
Lagniappe Grid,hg.lagniappegrid.com:8402
|
||||
Lanf Of Bree,carlyspencer.ddns.net:9002
|
||||
Langalf’s Demesne,langalfs-demesne.ddns.net:8002
|
||||
LeBourg,lebourg.lcofrance.org:9000
|
||||
Life Grid,lifebr.ddns.net:8002
|
||||
Littlefield,lfgrid.com:8002
|
||||
LoboWorld,vharmonyarts.com:8016
|
||||
Logicamp,logicamp.org:8002
|
||||
Lonetree,centoria.ddns.net:9002
|
||||
Lost World,lostworld-os.com:8002
|
||||
MAGA Grid,magagrid.us:8002
|
||||
Magic Grid,magic-grid.de:8002
|
||||
Majickal Life,majickallife.com:8002
|
||||
Mare Grid,mare-grid.de:8002
|
||||
Maze of The Mind,maze.outworldz.net:8002
|
||||
Medieval Fantasy,medieval-fantasy.de:8002
|
||||
Metaverse Concept,login.metaverseconcept.com:8002
|
||||
Metaverse Dimensions,login.metaversedimensions.com:8002
|
||||
Midway,midway.outworldz.net:8002
|
||||
Migrating Coconuts,migratingcoconuts.net:8002
|
||||
MisFitz Grid,login.misfitzgrid.com:8002
|
||||
Mobius Grid,main.mobiusgrid.us
|
||||
Monarch Gardens,monarchgardens.sanctuarygrid.net:8882
|
||||
Moonlighting Grid,moonlighting.ddns.net:8002
|
||||
Moonrose,moonrose-grid.de:8002
|
||||
Morada Grid,moradagrid.com:8002
|
||||
My Virtual Beach,grid.myvirtualbeach.com:8002
|
||||
My Virtual Community,my-virtualcommunity.com:8002
|
||||
Mysterious Grid 2,js-3d.dyndns-server.com:8100
|
||||
Nabila Grid,nabila-world.de:8002
|
||||
NakedWorldz,login.nakedworldz.com:8002
|
||||
Naras Nook,world.narasnook.com:8900
|
||||
Nemesis 3D,badsworld.com:8002
|
||||
Neverworld,hg.neverworldgrid.com:8002
|
||||
New Genres Grid,hg.ngrid.org:8002
|
||||
New Horizon,newhorizonworld.net:8002
|
||||
New Life Italy,newlifeitaly.com:8002
|
||||
NewWorld,newworld.no-ip.org:8002
|
||||
Next Reality,login.nextreality.uk:8002
|
||||
Nymphgrid 2 Shopping,2.nymphgrid.com:8002
|
||||
Oczko,grid.oczko.eu:9000
|
||||
Offworld,offworld.eu:8002
|
||||
Omnopolis,omnopolis.com:8002
|
||||
Open Mind Grid,open-mind-grid.de:8002
|
||||
Open Virtual Worlds,apollo.cs.st-andrews.ac.uk:8002
|
||||
OpenManniLand,openmanniland.de:8002
|
||||
OpenSim Fest,grid.opensimfest.com:8022
|
||||
OpenSim OCC,cc.opensimulator.org:8002
|
||||
OSgrid,login.osgrid.org
|
||||
Otterland,otterland.de:8002
|
||||
Outworldz,www.outworldz.com:9000
|
||||
Pangea Grid,pangeagrid.de:8002
|
||||
Party Destination Grid,partydestinationgrid.com:8002
|
||||
Perfect Life,grid.perfect-life.ca:8002
|
||||
Phaandoria Grid,phaandoria.de:8002
|
||||
Phillip’s Grid,phillipsworld.outworldz.net:8002
|
||||
Planet 3L,planet3l.com:9100
|
||||
Planet Jikan,planetjikan.com:9000
|
||||
Port Anna,galwendor.ddns.net:8002
|
||||
Power Angels,power-angels.info:8002
|
||||
Rennoc World,rennocworld.outworldz.net:8002
|
||||
Reserected Worlds,reserectedworlds.ddns.net:9000
|
||||
Rocket World Grid,grid.rocketworld.top:8022
|
||||
Sciattisi Grid,sciattisigrid.it:8002
|
||||
Servex Grid,servex-grid.lffl.de:8002
|
||||
SFgrid,sfgrid.ddnss.org:8002
|
||||
Sharing Is Caring Family,sharingiscaring.family:8002
|
||||
Shasiyadynasty,shasiyadynasty.outworldz.net:8002
|
||||
Sheikah,sheikah.org:8002
|
||||
Shoalwater Bay,shoalwaterbay.com:8002
|
||||
SiLi,jadeseas.net:9000
|
||||
Simation Grid,grid.simation.net:8002
|
||||
Six Sides,grid.sixsides.net:8002
|
||||
Solaria,solaria.hopto.org:7002
|
||||
Soul Grid,soul-grid.de:8002
|
||||
South Grid,southgrid.ru:8002
|
||||
Sovaria Estates,connect.sovariaestates.world:8002
|
||||
SpaceGrid,spacegrid.online:6002
|
||||
Sparta II,traregan.outworldz.net:8002
|
||||
SpartaGrid,sparta.outworldz.net:8002
|
||||
Speculoos,speculoos.world:8002
|
||||
Stefanies World,stefaniesworld.de:8002
|
||||
Steg,steg.outworldz.net:9002
|
||||
SV3D,sv3d.fr:8002
|
||||
Sweet Life,sweetlife.myftp.org:8002
|
||||
Swiss Grid,swissgrid.opensim.ch:8002
|
||||
T-Grid,hg.viewtwo.net:8600
|
||||
Tag Grid,login.taggrid.online:8002
|
||||
Tanduria ,hg.tanduria.de:8002
|
||||
Technic World,technic-world.ddnss.de:8002
|
||||
TeCoLa,tecola.eu:8002
|
||||
Tedesco Sim’s,hajos-welt.de:8002
|
||||
Tenth Dimension,grid.tenthdimension.org:26002
|
||||
Terra Nova,terranova.outworldz.net:8002
|
||||
The Devil’s Grid,devilsgrid.jessithecat.eu:9000
|
||||
The E Grid,theegrid.outworldz.net:8002
|
||||
The Haven Grid,thehavengrid.outworldz.net:9002
|
||||
The Hub Grid,hg.thehubgrid.com:28002
|
||||
The Shirls Hypergrid,181.214.240.20:8002
|
||||
The Verse,theverse.ddns.net:8002
|
||||
Three Hills Grid,three.hills.grid.outworldz.net:8002
|
||||
Tlön,albinoni.nexus.it:8002
|
||||
Tomi’s World,tomis-world.de:8002
|
||||
Trianon World,hg.trianon-world.com:18002
|
||||
Tropical Isle,sailonbye.com:9000
|
||||
Twilight,twlght.com:8002
|
||||
Twiztid Timez Grid,hg.twiztidtimezgrid.com:8602
|
||||
UCI Mondego vLab,nile.ics.uci.edu:9000
|
||||
Utopia Skye,utopiaskyegrid.com:8002
|
||||
V.B. Creations,vbcreations.outworldz.net:8002
|
||||
Vela Dreams,vela-dream.ddnss.de:8002
|
||||
Vibel,grid.vibel.eu:8002
|
||||
Vida Dupla,vidadupla.com.br:8002
|
||||
Virlands,virlands.net:8002
|
||||
Virtual Business Grid,login.virtualbusinessgrid.com:8002
|
||||
Virtual Harmony,vharmonyarts.com:9000
|
||||
Virtual Islands,Virtual-Islands.de:8002
|
||||
Virtual Learning Village,virtuallearningvillage.org:8002
|
||||
Virtual Life Brasil,login.virtuallifebrasil.com.br:8002
|
||||
Virtual Marin,grid.virtualmarin.com:8002
|
||||
Virtual Vista Metaverse,virtualvistametaverse.com:8002
|
||||
Virtual World Solutions,vbcreations.outworldz.net:8002/wifi/user/account/
|
||||
Virtual Worlds Grid,vwc.selfip.net:8002
|
||||
Virtual Worlds Zone,grid.virtual-worlds.zone:8002
|
||||
Virtualife,grid.virtualife-grid.it:4577
|
||||
Virtualife,grid.virtualife-grid.it:4577
|
||||
Vivec,opensim.vivec.com:9000
|
||||
Vivo Sim,hg.vivosim.net:8002
|
||||
VR-ESC,vr-esc.com:8002
|
||||
WaterSplash,watersplash.inworldz.net:8002
|
||||
WestWorld Grid,westworldgrid.net:8002
|
||||
Whispering Willows,hg.whisperingwillows.net:8002
|
||||
WKD Bucket Grid,wkdbucket.minigrid.xyz:8822
|
||||
WKDVR,grid.wkdvr.com:8802
|
||||
Wolf Territories Grid,grid.wolfterritories.org:8002
|
||||
Wonder,wonder.outworldz.net:8002
|
||||
Wyldwood Bayou,wyldwoodbayou.com:8002
|
||||
Xenolandia,xenolandia.de:8002
|
||||
Xmir,grid.xmir.org:8002
|
||||
XTalent,209.126.208.161:9023
|
||||
Yippee Ki-Ay Blues Grid,yippee-ki-ay.com:9003
|
||||
ZetaWorlds,login.zetaworlds.com
|
||||
Zirconia,zirconia.ddns.net:8002
|
||||
Zodiack,zodiack.net:8002
|
||||
Zone Nations,login.zonenations.com:8002
|
||||
|
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
include HEADER_FILE;
|
||||
?>
|
||||
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<link href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0/css/bootstrap.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0/js/bootstrap.bundle.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="bg-primary text-white p-3">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="index.php"><?php echo SITE_NAME; ?></a>
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav">
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<li class="nav-item">
|
||||
<button class="btn btn-sm btn-secondary color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="container mt-5">
|
||||
<!-- Inhalt der Seite -->
|
||||
</div>
|
||||
<footer class="bg-dark text-white text-center py-3">
|
||||
© <?php echo date('Y'); ?> <?php echo SITE_NAME; ?>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<div>
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</body>
|
||||
</html>
|
||||
<footer>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Foundation CSS-Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/foundation-sites@6.6.3/dist/css/foundation.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 60vw;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="grid-container">
|
||||
<header class="grid-x grid-padding-x align-center">
|
||||
<div class="cell small-12 text-center">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</div>
|
||||
</header>
|
||||
<nav class="grid-x grid-padding-x align-center">
|
||||
<div class="cell small-12 text-center">
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<footer class="grid-x grid-padding-x align-center">
|
||||
<div class="cell small-12 text-center">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</div>
|
||||
</footer>
|
||||
<script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.6.3/dist/js/foundation.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Materialize CSS-Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 38%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 75%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="container">
|
||||
<header class="center-align">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="center-align">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button btn" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="center-align">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Primer CSS Design System Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://unpkg.com/@primer/css/dist/primer.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-secondary-color color-primary">
|
||||
<header class="text-center p-3">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="text-center p-3">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button btn m-1" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="text-center p-3">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<div>
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="container">
|
||||
<!-- Inhalt der Seite -->
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<footer>
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Spectre CSS-Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://unpkg.com/spectre.css/dist/spectre.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="navbar">
|
||||
<section class="navbar-section">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</section>
|
||||
</header>
|
||||
<nav class="nav">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="btn btn-primary color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="footer">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Tachyons CSS Toolkit Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://unpkg.com/tachyons@4.12.0/css/tachyons.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-secondary-color primary-color">
|
||||
<header class="pa3 tc">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="pa3 tc">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button pa2" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="pa3 tc">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Tailwind CSS Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-secondary-color text-primary-color">
|
||||
<header class="bg-header-color p-4 text-center text-white">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="bg-header-color p-4 text-center">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button bg-primary-color text-white m-2 p-2 rounded" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="bg-footer-color p-4 text-center text-white">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
//Tent CSS-Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://unpkg.com/tent-css@0.5.8/dist/tent.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="header">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="nav">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="footer">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<link href="https://www.w3schools.com/w3css/4/w3.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="w3-container w3-blue w3-center w3-padding-16">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="w3-bar w3-dark-grey">
|
||||
<a class="w3-bar-item w3-button w3-left" href="index.php"><?php echo SITE_NAME; ?></a>
|
||||
<div class="w3-right">
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="w3-button w3-small w3-margin color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="w3-container w3-card-4 w3-light-grey w3-padding-16">
|
||||
<!-- Inhalt der Seite -->
|
||||
</div>
|
||||
<footer class="w3-container w3-dark-grey w3-center w3-padding-16">
|
||||
© <?php echo date('Y'); ?> <?php echo SITE_NAME; ?>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
// Konfiguration einbinden
|
||||
include_once "include/config.php";
|
||||
|
||||
// Überprüfen, ob der Parameter 'image_url' übergeben wurde
|
||||
$image_url = isset($_GET['image_url']) ? $_GET['image_url'] : '';
|
||||
|
||||
// Sicherstellen, dass eine URL vorhanden ist
|
||||
if (empty($image_url)) {
|
||||
die('Kein Bild-URL angegeben!');
|
||||
}
|
||||
|
||||
// Bild aus der URL holen
|
||||
$image_data = file_get_contents($image_url);
|
||||
|
||||
// Wenn das Bild nicht geladen werden konnte
|
||||
if ($image_data === false) {
|
||||
die('Fehler beim Laden des Bildes!');
|
||||
}
|
||||
|
||||
// Mit Imagick das Bild in das gewünschte Format konvertieren
|
||||
try {
|
||||
$imagick = new Imagick();
|
||||
$imagick->readImageBlob($image_data);
|
||||
|
||||
// Prüfen, ob es ein JP2-Bild ist und konvertiere es zu JPG
|
||||
if ($imagick->getImageFormat() == 'JPEG2000') {
|
||||
$imagick->setImageFormat('jpg'); // Konvertierung zu JPG
|
||||
}
|
||||
|
||||
// Bild an den Browser ausgeben
|
||||
header('Content-Type: image/jpeg'); // JPG-MIME-Typ für JPG-Bilder
|
||||
echo $imagick->getImageBlob();
|
||||
} catch (Exception $e) {
|
||||
die('Fehler beim Konvertieren des Bildes: ' . $e->getMessage());
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,50 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>403 - Forbidden</title>
|
||||
<style>
|
||||
body {
|
||||
background-color: #f8f9fa;
|
||||
color: #343a40;
|
||||
font-family: Arial, sans-serif;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
.center h1 {
|
||||
font-size: 5rem;
|
||||
color: #dc3545;
|
||||
}
|
||||
.center p {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
.center a {
|
||||
display: inline-block;
|
||||
margin-top: 20px;
|
||||
padding: 10px 20px;
|
||||
background-color: #007bff;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-radius: 5px;
|
||||
transition: background-color 0.3s;
|
||||
}
|
||||
.center a:hover {
|
||||
background-color: #0056b3;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="center">
|
||||
<h1>403</h1>
|
||||
<p>Nicht öffentlicher Bereich.</p>
|
||||
<a href="/">Zurück zur Startseite</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
$title = "Password Service";
|
||||
include_once 'header.php';
|
||||
// Passwortgenerator-Funktion
|
||||
function generatePassword($length = 16) {
|
||||
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||||
$charactersLength = strlen($characters);
|
||||
$password = '';
|
||||
for ($i = 0; $i < $length; $i++) {
|
||||
$password .= $characters[random_int(0, $charactersLength - 1)];
|
||||
}
|
||||
return $password;
|
||||
}
|
||||
|
||||
// Generiere Passwörter für das Register-Array
|
||||
$registration_passwords_register = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_reset = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_partner = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_inventory = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_datatable = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_listinventar = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_picreader = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_mutelist = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_avatarpicker = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_economy = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_events = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
?>
|
||||
|
||||
|
||||
<html>
|
||||
<style>
|
||||
.container {
|
||||
max-width: 1000px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
Color:rgb(31, 31, 31);
|
||||
background-color:rgb(238, 241, 241);
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
</style>
|
||||
|
||||
<main class="container">
|
||||
<h1>Generierte Passwörter</h1>
|
||||
<pre>
|
||||
<?php
|
||||
echo '$registration_passwords_register = ["' . implode('", "', $registration_passwords_register) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_reset = ["' . implode('", "', $registration_passwords_reset) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_partner = ["' . implode('", "', $registration_passwords_partner) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_inventory = ["' . implode('", "', $registration_passwords_inventory) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_datatable = ["' . implode('", "', $registration_passwords_datatable) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_listinventar = ["' . implode('", "', $registration_passwords_listinventar) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_picreader = ["' . implode('", "', $registration_passwords_picreader) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_mutelist = ["' . implode('", "', $registration_passwords_mutelist) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_avatarpicker = ["' . implode('", "', $registration_passwords_avatarpicker) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_economy = ["' . implode('", "', $registration_passwords_economy) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_events = ["' . implode('", "', $registration_passwords_events) . '"];' . PHP_EOL;
|
||||
?>
|
||||
</pre>
|
||||
</main>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
include_once "config.php";
|
||||
|
||||
// JSON-Datei einlesen
|
||||
$events = json_decode(file_get_contents('../calendar/events.json'), true);
|
||||
|
||||
// Header setzen, um den Content-Type auf XML zu setzen
|
||||
header("Content-Type: application/rss+xml; charset=UTF-8");
|
||||
|
||||
// Nächsten Termin auswählen
|
||||
$currentDate = date('Y-m-d');
|
||||
$nextEvent = null;
|
||||
|
||||
foreach ($events as $event) {
|
||||
if ($event['date'] >= $currentDate) {
|
||||
$nextEvent = $event;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// RSS-Feed beginnen
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>';
|
||||
?>
|
||||
<rss version="2.0">
|
||||
<channel>
|
||||
<title><?php echo CALENDAR_TITLE; ?></title>
|
||||
<link><?php echo BASE_URL; ?></link>
|
||||
<description>RSS-Feed mit Kalenderereignissen</description>
|
||||
<language>de-de</language>
|
||||
|
||||
<?php if ($nextEvent): ?>
|
||||
<item>
|
||||
<title>
|
||||
<?php
|
||||
// Überprüfen, ob das 'title'-Feld existiert
|
||||
if (isset($nextEvent['title'])) {
|
||||
echo htmlspecialchars($nextEvent['title']);
|
||||
} else {
|
||||
echo htmlspecialchars($nextEvent['texts'][0]);
|
||||
}
|
||||
?>
|
||||
</title>
|
||||
<link><?php echo htmlspecialchars($nextEvent['link']); ?></link>
|
||||
<description>
|
||||
<?php
|
||||
// Überprüfen, ob das 'description'-Feld existiert
|
||||
if (isset($nextEvent['description'])) {
|
||||
echo htmlspecialchars($nextEvent['description']);
|
||||
} else {
|
||||
echo htmlspecialchars(join(', ', array_slice($nextEvent['texts'], 1)));
|
||||
}
|
||||
?>
|
||||
</description>
|
||||
<pubDate><?php echo date('r', strtotime($nextEvent['date'])); ?></pubDate>
|
||||
<?php if (isset($nextEvent['image'])): ?>
|
||||
<image><?php echo htmlspecialchars(BASE_URL . $nextEvent['image']); ?></image>
|
||||
<?php endif; ?>
|
||||
</item>
|
||||
<?php endif; ?>
|
||||
</channel>
|
||||
</rss>
|
||||
+324
@@ -0,0 +1,324 @@
|
||||
<?php
|
||||
$title = "TOS";
|
||||
include 'header.php';
|
||||
|
||||
// Sprachauswahl (Standard: Deutsch)
|
||||
$lang = isset($_GET['lang']) ? $_GET['lang'] : 'de';
|
||||
|
||||
// Platzhalter-Werte setzen
|
||||
$variables = [
|
||||
"DEIN GRID-NAME" => "Virtual " . SITE_NAME . " Grid",
|
||||
"DATUM" => date("d.m.Y"),
|
||||
"DEINE EMAIL" => "support@" . SITE_NAME . ".com",
|
||||
"DEINE POSTADRESSE" => "Musterstraße 123, 12345 Musterstadt",
|
||||
"OPTIONAL" => "Discord: GridSupport" . BASE_URL,
|
||||
"DEINE KONTAKT-EMAIL" => "kontakt@" . SITE_NAME . ".com"
|
||||
];
|
||||
?>
|
||||
|
||||
<style>
|
||||
.markdown-content {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
color: rgb(31, 31, 31); /* Korrektur: 'color' statt 'Color' */
|
||||
background-color: rgb(238, 241, 241);
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.language-switcher {
|
||||
text-align: right;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.language-switcher a {
|
||||
text-decoration: none;
|
||||
color: #007BFF;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.language-switcher a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: #f4f4f4;
|
||||
padding: 2px 5px;
|
||||
border-radius: 3px;
|
||||
font-family: monospace;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="language-switcher">
|
||||
<a href="?lang=de">Deutsch</a> | <a href="?lang=en">English</a>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
function replacePlaceholders($text, $variables = []) {
|
||||
foreach ($variables as $key => $value) {
|
||||
$text = str_replace("[$key]", $value, $text);
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
||||
function simpleMarkdownToHTML($text) {
|
||||
// Zeilenumbrüche umwandeln
|
||||
$text = nl2br($text);
|
||||
|
||||
// Fettdruck **text** -> <strong>text</strong>
|
||||
$text = preg_replace('/\*\*(.*?)\*\*/', '<strong>$1</strong>', $text);
|
||||
|
||||
// Kursiv *text* -> <em>text</em>
|
||||
$text = preg_replace('/\*(.*?)\*/', '<em>$1</em>', $text);
|
||||
|
||||
// Überschriften # -> <h1>, ## -> <h2> usw.
|
||||
for ($i = 6; $i >= 1; $i--) {
|
||||
$text = preg_replace('/^' . str_repeat('#', $i) . '\s*(.*?)$/m', "<h$i>$1</h$i>", $text);
|
||||
}
|
||||
|
||||
// Links [Text](URL) -> <a href="URL">Text</a>
|
||||
$text = preg_replace('/\[(.*?)\]\((.*?)\)/', '<a href="$2">$1</a>', $text);
|
||||
|
||||
// Inline-Code `text` -> <code>text</code>
|
||||
$text = preg_replace('/`(.*?)`/', '<code>$1</code>', $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
// Deutsche TOS
|
||||
$tosTextDE = "
|
||||
# **Terms of Service für [DEIN GRID-NAME]**
|
||||
**(Nutzungsbedingungen)**
|
||||
|
||||
**Letzte Aktualisierung:** [DATUM]
|
||||
|
||||
Willkommen bei **[DEIN GRID-NAME]**! Diese Nutzungsbedingungen regeln deine Nutzung unserer virtuellen Welt,
|
||||
die auf OpenSimulator basiert. Durch die Registrierung und Nutzung unseres Dienstes stimmst du diesen Bedingungen zu.
|
||||
Falls du nicht einverstanden bist, darfst du unser Grid nicht nutzen.
|
||||
|
||||
---
|
||||
|
||||
## **1. Allgemeine Bestimmungen**
|
||||
1.1 **Geltungsbereich:** Diese Bedingungen gelten für alle Nutzer unseres OpenSimulator-Grids, einschließlich Gäste und registrierte Benutzer.
|
||||
1.2 **Änderungen:** Wir behalten uns das Recht vor, diese Bedingungen jederzeit zu ändern. Änderungen treten mit ihrer Veröffentlichung auf unserer Webseite in Kraft.
|
||||
1.3 **Zustimmung:** Mit der Nutzung unseres Grids erklärst du dich mit den aktuellen Nutzungsbedingungen einverstanden.
|
||||
|
||||
---
|
||||
|
||||
## **2. Benutzerkonten und Zugang**
|
||||
2.1 **Registrierung:**
|
||||
- Du musst mindestens **[ALTER, z. B. 16]** Jahre alt sein, um ein Konto zu erstellen.
|
||||
- Die Angabe korrekter und vollständiger Informationen ist erforderlich.
|
||||
- Pro Person ist nur ein Benutzerkonto erlaubt, es sei denn, wir gestatten ausdrücklich mehrere Konten.
|
||||
|
||||
2.2 **Sicherheit deines Kontos:**
|
||||
- Du bist für die Sicherheit deines Kontos und Passworts verantwortlich.
|
||||
- Falls du einen unbefugten Zugriff auf dein Konto vermutest, informiere uns umgehend.
|
||||
|
||||
2.3 **Konto-Sperrung & Löschung:**
|
||||
- Wir behalten uns das Recht vor, dein Konto zu sperren oder zu löschen, wenn du gegen diese TOS verstößt.
|
||||
- Inaktive Konten können nach **[z. B. 6 Monaten]** ohne Vorwarnung gelöscht werden.
|
||||
|
||||
---
|
||||
|
||||
## **3. Virtuelle Inhalte und Wirtschaftssystem**
|
||||
3.1 **Eigentum an Inhalten:**
|
||||
- Inhalte, die du erstellst oder hochlädst, bleiben dein geistiges Eigentum.
|
||||
- Du gewährst uns jedoch das Recht, deine Inhalte innerhalb des Grids zu nutzen, zu hosten und zu verwalten.
|
||||
|
||||
3.2 **Urheberrechte und Lizenzierung:**
|
||||
- Es ist verboten, urheberrechtlich geschützte Inhalte ohne Erlaubnis hochzuladen.
|
||||
- Falls ein Nutzer Urheberrechte verletzt, behalten wir uns vor, den Inhalt zu entfernen und das Konto zu sperren.
|
||||
|
||||
3.3 **Virtuelle Währung & Transaktionen:**
|
||||
- Falls unser Grid eine virtuelle Währung verwendet (**z. B. Gloebits, Podex, OMC**), erkennst du an, dass diese keinen echten Geldwert hat.
|
||||
- Wir übernehmen keine Verantwortung für Verluste oder technische Fehler im Zusammenhang mit virtuellen Währungen oder Transaktionen.
|
||||
|
||||
---
|
||||
|
||||
## **4. Verhaltensregeln**
|
||||
4.1 **Erlaubte und verbotene Inhalte:**
|
||||
- Keine **Belästigung, Hassrede, rassistischen oder sexuell expliziten Inhalte**, die gegen geltendes Recht verstoßen.
|
||||
- Kein **Spam, Betrug oder das Nachahmen anderer Nutzer/Admins**.
|
||||
- Kein **Hacking, Griefing oder das Stören anderer Nutzer** durch Skripte, Exploits oder Angriffe.
|
||||
|
||||
4.2 **Regionale und Parzellenregeln:**
|
||||
- Eigentümer von Regionen/Parzellen dürfen eigene Regeln festlegen, solange sie nicht gegen diese TOS verstoßen.
|
||||
- Admins behalten sich das Recht vor, störende Inhalte oder Regionen zu entfernen.
|
||||
|
||||
---
|
||||
|
||||
## **5. Datenschutz und Datenspeicherung**
|
||||
5.1 **Gespeicherte Daten:**
|
||||
- Wir speichern deine Account-Informationen, IP-Adresse, Avatar-Daten und In-World-Interaktionen für administrative Zwecke.
|
||||
- Persönliche Daten werden nicht an Dritte weitergegeben, es sei denn, es besteht eine gesetzliche Verpflichtung.
|
||||
|
||||
5.2 **Nutzung von Drittanbietern:**
|
||||
- Falls unser Grid externe Dienste wie **Hypergrid-Teleports, Gloebits oder PayPal** verwendet, gelten deren Datenschutzrichtlinien zusätzlich.
|
||||
- Beim Verlassen unseres Grids über Hypergrid-Teleports können deine Daten von anderen Grids verarbeitet werden.
|
||||
|
||||
---
|
||||
|
||||
## **6. DMCA-Richtlinie (Urheberrechtsschutz)**
|
||||
Falls du glaubst, dass Inhalte in unserem Grid gegen dein Urheberrecht verstoßen, kannst du eine **DMCA-Beschwerde** einreichen:
|
||||
|
||||
### **6.1 Wie du eine DMCA-Meldung einreichst:**
|
||||
Sende eine schriftliche Beschwerde an **[DEINE KONTAKT-EMAIL]** mit folgenden Angaben:
|
||||
1. Eine Beschreibung des geschützten Werkes, das verletzt wurde.
|
||||
2. Die genaue Position des beanstandeten Inhalts (Region, Koordinaten, UUID, Screenshots).
|
||||
3. Deine Kontaktdaten (Name, E-Mail, Adresse, Telefonnummer).
|
||||
4. Eine Erklärung, dass du in gutem Glauben handelst und der Inhalt unrechtmäßig verwendet wird.
|
||||
5. Eine eidesstattliche Versicherung, dass deine Angaben korrekt sind.
|
||||
|
||||
### **6.2 Reaktion auf DMCA-Meldungen:**
|
||||
- Wir werden überprüfte Verstöße entfernen.
|
||||
- Falls du fälschlicherweise als Urheberrechtsverletzer gemeldet wurdest, kannst du eine Gegendarstellung einreichen.
|
||||
|
||||
---
|
||||
|
||||
## **7. Haftungsausschluss und Beendigung des Dienstes**
|
||||
7.1 **Haftungsausschluss:**
|
||||
- Unser Grid wird wie besehen zur Verfügung gestellt. Wir garantieren keine **störungsfreie, fehlerfreie oder ununterbrochene Nutzung**.
|
||||
- Wir haften nicht für **Datenverluste, Hacks oder technische Probleme**.
|
||||
|
||||
7.2 **Beendigung des Dienstes:**
|
||||
- Wir behalten uns das Recht vor, das Grid oder Teile davon jederzeit einzustellen.
|
||||
- Bei einer Schließung gibt es keinen Anspruch auf Erstattung virtueller Guthaben oder Inhalte.
|
||||
|
||||
---
|
||||
|
||||
## **8. Kontakt**
|
||||
Falls du Fragen zu diesen Nutzungsbedingungen hast, kannst du uns unter **[DEINE KONTAKT-EMAIL]** erreichen.
|
||||
|
||||
---
|
||||
|
||||
### **Akzeptanz der Nutzungsbedingungen**
|
||||
Mit der Nutzung von **[DEIN GRID-NAME]** erklärst du dich mit diesen Nutzungsbedingungen einverstanden. Falls du nicht einverstanden bist, verlasse das Grid und lösche dein Konto.
|
||||
";
|
||||
|
||||
// Englische TOS (kann später hinzugefügt werden)
|
||||
$tosTextEN = "
|
||||
# **Terms of Service for [DEIN GRID-NAME]**
|
||||
|
||||
**Last Updated:** [DATUM]
|
||||
|
||||
Welcome to **[DEIN GRID-NAME]**! These Terms of Service govern your use of our virtual world,
|
||||
which is based on OpenSimulator. By registering and using our service, you agree to these terms.
|
||||
If you do not agree, you may not use our grid.
|
||||
|
||||
---
|
||||
|
||||
## **1. General Provisions**
|
||||
1.1 **Scope:** These terms apply to all users of our OpenSimulator grid, including guests and registered users.
|
||||
1.2 **Changes:** We reserve the right to change these terms at any time. Changes take effect upon publication on our website.
|
||||
1.3 **Consent:** By using our grid, you agree to the current terms of service.
|
||||
|
||||
---
|
||||
|
||||
## **2. User Accounts and Access**
|
||||
2.1 **Registration:**
|
||||
- You must be at least **[AGE, e.g., 16]** years old to create an account.
|
||||
- Providing accurate and complete information is required.
|
||||
- Only one account per person is allowed unless we explicitly permit multiple accounts.
|
||||
|
||||
2.2 **Account Security:**
|
||||
- You are responsible for the security of your account and password.
|
||||
- If you suspect unauthorized access to your account, notify us immediately.
|
||||
|
||||
2.3 **Account Suspension & Deletion:**
|
||||
- We reserve the right to suspend or delete your account if you violate these TOS.
|
||||
- Inactive accounts may be deleted after **[e.g., 6 months]** without prior notice.
|
||||
|
||||
---
|
||||
|
||||
## **3. Virtual Content and Economy**
|
||||
3.1 **Ownership of Content:**
|
||||
- Content you create or upload remains your intellectual property.
|
||||
- However, you grant us the right to use, host, and manage your content within the grid.
|
||||
|
||||
3.2 **Copyright and Licensing:**
|
||||
- Uploading copyrighted content without permission is prohibited.
|
||||
- If a user violates copyright, we reserve the right to remove the content and suspend the account.
|
||||
|
||||
3.3 **Virtual Currency & Transactions:**
|
||||
- If our grid uses a virtual currency (**e.g., Gloebits, Podex, OMC**), you acknowledge that it has no real monetary value.
|
||||
- We are not responsible for losses or technical issues related to virtual currencies or transactions.
|
||||
|
||||
---
|
||||
|
||||
## **4. Code of Conduct**
|
||||
4.1 **Allowed and Prohibited Content:**
|
||||
- No **harassment, hate speech, racist, or sexually explicit content** that violates applicable law.
|
||||
- No **spam, fraud, or impersonation of other users/admins**.
|
||||
- No **hacking, griefing, or disrupting other users** through scripts, exploits, or attacks.
|
||||
|
||||
4.2 **Regional and Parcel Rules:**
|
||||
- Region/parcel owners may set their own rules as long as they do not violate these TOS.
|
||||
- Admins reserve the right to remove disruptive content or regions.
|
||||
|
||||
---
|
||||
|
||||
## **5. Privacy and Data Storage**
|
||||
5.1 **Stored Data:**
|
||||
- We store your account information, IP address, avatar data, and in-world interactions for administrative purposes.
|
||||
- Personal data will not be shared with third parties unless required by law.
|
||||
|
||||
5.2 **Use of Third Parties:**
|
||||
- If our grid uses external services like **Hypergrid teleports, Gloebits, or PayPal**, their privacy policies apply additionally.
|
||||
- When leaving our grid via Hypergrid teleports, your data may be processed by other grids.
|
||||
|
||||
---
|
||||
|
||||
## **6. DMCA Policy (Copyright Protection)**
|
||||
If you believe that content on our grid violates your copyright, you can file a **DMCA complaint**:
|
||||
|
||||
### **6.1 How to Submit a DMCA Notice:**
|
||||
Send a written complaint to **[DEINE KONTAKT-EMAIL]** with the following information:
|
||||
1. A description of the copyrighted work that has been infringed.
|
||||
2. The exact location of the infringing content (region, coordinates, UUID, screenshots).
|
||||
3. Your contact details (name, email, address, phone number).
|
||||
4. A statement that you are acting in good faith and that the content is being used unlawfully.
|
||||
5. A sworn statement that your information is accurate.
|
||||
|
||||
### **6.2 Response to DMCA Notices:**
|
||||
- We will remove verified violations.
|
||||
- If you have been falsely accused of copyright infringement, you can submit a counter-notice.
|
||||
|
||||
---
|
||||
|
||||
## **7. Disclaimer and Termination of Service**
|
||||
7.1 **Disclaimer:**
|
||||
- Our grid is provided as-is. We do not guarantee **uninterrupted, error-free, or continuous use**.
|
||||
- We are not liable for **data loss, hacks, or technical issues**.
|
||||
|
||||
7.2 **Termination of Service:**
|
||||
- We reserve the right to terminate the grid or parts of it at any time.
|
||||
- In the event of closure, there is no entitlement to refunds of virtual balances or content.
|
||||
|
||||
---
|
||||
|
||||
## **8. Contact**
|
||||
If you have questions about these terms of service, you can reach us at **[DEINE KONTAKT-EMAIL]**.
|
||||
|
||||
---
|
||||
|
||||
### **Acceptance of Terms**
|
||||
By using **[DEIN GRID-NAME]**, you agree to these terms of service. If you do not agree, leave the grid and delete your account.
|
||||
";
|
||||
|
||||
// Wähle den Text basierend auf der Sprache
|
||||
$tosText = ($lang == 'de') ? $tosTextDE : $tosTextEN;
|
||||
|
||||
// 1️⃣ Platzhalter ersetzen
|
||||
$tosText = replacePlaceholders($tosText, $variables);
|
||||
|
||||
// 2️⃣ Markdown in HTML umwandeln
|
||||
$finalHTML = simpleMarkdownToHTML($tosText);
|
||||
|
||||
// 3️⃣ HTML ausgeben
|
||||
echo "<div class='markdown-content'>$finalHTML</div>";
|
||||
?>
|
||||
|
||||
<?php include_once 'include/footer.php'; ?>
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
// include/verification_functions.php
|
||||
|
||||
function generateActivationCode() {
|
||||
return bin2hex(random_bytes(16));
|
||||
}
|
||||
|
||||
function sendVerificationEmail($email, $vorname, $nachname, $activationCode) {
|
||||
$subject = "Ihr Freischaltcode für " . SITE_NAME;
|
||||
$message = "Hallo $vorname $nachname,\n\n";
|
||||
$message .= "Ihr Freischaltcode lautet: $activationCode\n\n";
|
||||
$message .= "Bitte verwenden Sie diesen Code, um Ihre Registrierung abzuschließen.\n\n";
|
||||
$message .= "Mit freundlichen Grüßen,\n";
|
||||
$message .= SITE_NAME;
|
||||
|
||||
$headers = "From: noreply@" . parse_url(BASE_URL, PHP_URL_HOST) . "\r\n";
|
||||
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
|
||||
|
||||
return mail($email, $subject, $message, $headers);
|
||||
}
|
||||
|
||||
function generateUUID() {
|
||||
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0x0fff) | 0x4000,
|
||||
mt_rand(0, 0x3fff) | 0x8000,
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
|
||||
);
|
||||
}
|
||||
?>
|
||||
+167
@@ -0,0 +1,167 @@
|
||||
<?php
|
||||
$title = "MapTile";
|
||||
include_once 'include/header.php';
|
||||
|
||||
// Verbindung zur Datenbank herstellen
|
||||
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
|
||||
if (!$con) {
|
||||
die("Verbindung zur Datenbank fehlgeschlagen: " . mysqli_connect_error());
|
||||
}
|
||||
|
||||
// Koordinaten des Mittelpunkts anpassen
|
||||
$centerX = CONF_CENTER_COORD_X;
|
||||
$centerY = CONF_CENTER_COORD_Y;
|
||||
|
||||
if ($centerY <= 30) {$centerY = 100;}
|
||||
if ($centerX <= 30) {$centerX = 100;}
|
||||
if ($centerX >= 99999) {$centerX = CONF_CENTER_COORD_X;}
|
||||
if ($centerY >= 99999) {$centerY = CONF_CENTER_COORD_Y;}
|
||||
|
||||
$startX = $centerX - floor(MAPS_X / 2);
|
||||
$startY = $centerY - floor(MAPS_Y / 2);
|
||||
|
||||
$endX = $centerX + floor(MAPS_X / 2);
|
||||
$endY = $centerY + floor(MAPS_Y / 2);
|
||||
|
||||
function uuid4($data = null) {
|
||||
// Generate 16 bytes (128 bits) of random data or use the data passed into the function.
|
||||
$data = $data ?? random_bytes(16);
|
||||
assert(strlen($data) == 16);
|
||||
|
||||
// Set version to 0100
|
||||
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
|
||||
// Set bits 6-7 to 10
|
||||
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
|
||||
|
||||
// Output the 36 character UUID.
|
||||
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
|
||||
}
|
||||
|
||||
// Datenbankabfrage, um alle Regionen zu erhalten
|
||||
$regions = mysqli_query($con, "SELECT uuid, regionName, locX, locY, serverURI, sizeX, sizeY, owner_uuid FROM regions") or die("Error: " . mysqli_error($con));
|
||||
|
||||
$grid = [];
|
||||
while ($row = mysqli_fetch_assoc($regions)) {
|
||||
$locX = $row['locX'] / 256;
|
||||
$locY = $row['locY'] / 256;
|
||||
$sizeX = $row['sizeX'];
|
||||
$sizeY = $row['sizeY'];
|
||||
|
||||
if ($locX >= $startX && $locX <= $endX && $locY >= $startY && $locY <= $endY) {
|
||||
// Bestimme die Farbe basierend auf der Regionengröße
|
||||
if ($locX == $centerX && $locY == $centerY) {
|
||||
$color = CENTER_COLOR; // Rot markiert für das Zentrum
|
||||
} elseif ($sizeX == 256 && $sizeY == 256) {
|
||||
$color = BESCHLAGT_COLOR;
|
||||
} elseif ($sizeX > 256 || $sizeY > 256) {
|
||||
$color = VARREGION_COLOR;
|
||||
} else {
|
||||
$color = FREI_COLOR;
|
||||
}
|
||||
|
||||
$grid[$locX][$locY] = [
|
||||
'color' => $color,
|
||||
'regionName' => $row['regionName'],
|
||||
'sizeX' => $sizeX,
|
||||
'sizeY' => $sizeY,
|
||||
'uuid' => $row['uuid'],
|
||||
'serverURI' => $row['serverURI'],
|
||||
'owner_uuid' => $row['owner_uuid']
|
||||
];
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<style>
|
||||
.card {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
padding: 20px;
|
||||
background-color: white;
|
||||
border: 1px solid #ccc;
|
||||
z-index: 10;
|
||||
color: black; /* Schriftfarbe auf Schwarz setzen */
|
||||
}
|
||||
.card.active {
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
|
||||
<main>
|
||||
<h2><?php echo SITE_NAME; ?> MapTile Overview</h2>
|
||||
<div class="map-container" style="display: grid; grid-template-columns: repeat(<?php echo MAPS_X; ?>, <?php echo TILE_SIZE; ?>); gap: 1px;">
|
||||
<?php
|
||||
for ($x = $startX; $x < $startX + MAPS_X; $x++) {
|
||||
for ($y = $startY; $y < $startY + MAPS_Y; $y++) {
|
||||
$tile = isset($grid[$x][$y]) ? $grid[$x][$y] : ['color' => FREI_COLOR, 'regionName' => 'Free', 'sizeX' => '', 'sizeY' => ''];
|
||||
$tooltip = ($tile['regionName'] !== 'Free') ? "Koordinaten: ($x, $y), Region: {$tile['regionName']}, Größe: {$tile['sizeX']}x{$tile['sizeY']}" : "Koordinaten: ($x, $y), Region: Free";
|
||||
$clickAction = ($tile['regionName'] === 'Free') ? "showFreeRegionCard(event, $x, $y)" : "showOccupiedRegionCard(event, '{$tile['regionName']}', '{$tile['uuid']}', '{$tile['sizeX']}', '{$tile['sizeY']}', '{$tile['serverURI']}', '{$tile['owner_uuid']}')";
|
||||
echo "<div class='map-tile' title='$tooltip' style='width: " . TILE_SIZE . "; height: " . TILE_SIZE . "; background-color: {$tile['color']};' onclick=\"$clickAction\"></div>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<div id="freeRegionCard" class="card">
|
||||
<p>Diese Region ist frei und Sie können die Konfigurationen vornehmen.</p>
|
||||
<p id="free-region-coordinates"></p>
|
||||
<p>____________Beispiel_____________</p>
|
||||
<p>[Region_<span id="free-region-x"></span>_<span id="free-region-y"></span>]</p>
|
||||
<p>Location: <span id="free-region-x-location"></span>,<span id="free-region-y-location"></span></p>
|
||||
<p>RegionUUID: <?php echo uuid4(); ?></p>
|
||||
<p>SizeX: 256</p>
|
||||
<p>SizeY: 256</p>
|
||||
<p>SizeZ: 256</p>
|
||||
<p>InternalAddress: 0.0.0.0</p>
|
||||
<p>InternalPort: <?php echo rand(9000, 9250); ?></p>
|
||||
<p>ResolveAddress: False</p>
|
||||
<p>ExternalHostName: SYSTEMIP</p>
|
||||
<p>MaptileStaticUUID: <?php echo uuid4(); ?></p>
|
||||
<button onclick="hideCard()">Schließen</button>
|
||||
</div>
|
||||
|
||||
<div id="occupiedRegionCard" class="card">
|
||||
<p>Region Name: <span id="region-name"></span></p>
|
||||
<p>Region UUID: <span id="region-uuid"></span></p>
|
||||
<p>Size: <span id="region-size"></span></p>
|
||||
<p>Server URI: <span id="server-uri"></span></p>
|
||||
<p>Owner UUID: <span id="owner-uuid"></span></p>
|
||||
<button onclick="hideCard()">Schließen</button>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script>
|
||||
function showFreeRegionCard(event, x, y) {
|
||||
var card = document.getElementById('freeRegionCard');
|
||||
card.querySelector('#free-region-coordinates').innerText = "Koordinaten: (" + x + ", " + y + ")";
|
||||
card.querySelector('#free-region-x').innerText = x;
|
||||
card.querySelector('#free-region-y').innerText = y;
|
||||
card.querySelector('#free-region-x-location').innerText = x;
|
||||
card.querySelector('#free-region-y-location').innerText = y;
|
||||
card.style.top = event.clientY + 'px';
|
||||
card.style.left = event.clientX + 'px';
|
||||
card.classList.add('active');
|
||||
}
|
||||
|
||||
function showOccupiedRegionCard(event, regionName, uuid, sizeX, sizeY, serverURI, ownerUUID) {
|
||||
var card = document.getElementById('occupiedRegionCard');
|
||||
card.querySelector('#region-name').innerText = regionName;
|
||||
card.querySelector('#region-uuid').innerText = uuid;
|
||||
card.querySelector('#region-size').innerText = sizeX + "x" + sizeY;
|
||||
card.querySelector('#server-uri').innerText = serverURI;
|
||||
card.querySelector('#owner-uuid').innerText = ownerUUID;
|
||||
card.style.top = event.clientY + 'px';
|
||||
card.style.left = event.clientX + 'px';
|
||||
card.classList.add('active');
|
||||
}
|
||||
|
||||
function hideCard() {
|
||||
var cards = document.querySelectorAll('.card');
|
||||
cards.forEach(card => {
|
||||
card.classList.remove('active');
|
||||
});
|
||||
}
|
||||
</script>
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
// Einbinden der Konfigurationsdatei
|
||||
require_once __DIR__ . '/include/config.php';
|
||||
|
||||
// Header setzen, um den Inhaltstyp auf JSON festzulegen
|
||||
header('Content-Type: application/json');
|
||||
|
||||
// Nachrichtendaten basierend auf der MOTD-Einstellung erstellen
|
||||
if (MOTD === 'Dyn') {
|
||||
// Dynamische MOTD
|
||||
$hour = date('H');
|
||||
if ($hour < 12) {
|
||||
$greeting = "Guten Morgen";
|
||||
} else {
|
||||
$greeting = "Guten Tag";
|
||||
}
|
||||
$message = [
|
||||
"message" => "$greeting auf " . SITE_NAME . "! Bitte beachte unsere Regeln und Richtlinien.",
|
||||
"type" => "system",
|
||||
"url_tos" => BASE_URL . "/include/tos.php",
|
||||
"url_dmca" => BASE_URL . "/include/dmca.php"
|
||||
];
|
||||
} else {
|
||||
// Statische MOTD
|
||||
$message = [
|
||||
"message" => MOTD_STATIC_MESSAGE,
|
||||
"type" => MOTD_STATIC_TYPE,
|
||||
"url_tos" => MOTD_STATIC_URL_TOS,
|
||||
"url_dmca" => MOTD_STATIC_URL_DMCA
|
||||
];
|
||||
}
|
||||
|
||||
// JSON-Ausgabe
|
||||
echo json_encode($message, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
|
||||
?>
|
||||
+724
@@ -0,0 +1,724 @@
|
||||
<?php
|
||||
$title = "Search Service";
|
||||
include_once 'include/header.php';
|
||||
|
||||
error_reporting(0);
|
||||
// change these to work with your databases
|
||||
$osmod = DB_NAME; // Datenbank des OpenSim addon
|
||||
$osmain = DB_NAME; // Robust Datenbank
|
||||
|
||||
$dbaddress = DB_SERVER;
|
||||
$dbuser = DB_USERNAME;
|
||||
$dbpass = DB_PASSWORD;
|
||||
|
||||
// Asset URI. This is so HGPort can fetch textures from your grid.
|
||||
$asseturi = GRID_ASSETS_SERVER;
|
||||
|
||||
// grid address and name
|
||||
$address = BASE_URL;
|
||||
$grid_name = SITE_NAME;
|
||||
|
||||
$now = time();
|
||||
|
||||
global $mysqli;
|
||||
|
||||
// your welcome to cut and paste these functions into your own system and modify them.
|
||||
|
||||
function getosuser($FirstName, $LastName) {
|
||||
global $mysqli;
|
||||
global $osmain;
|
||||
$q = $mysqli->query("SELECT * FROM $osmain.useraccounts WHERE FirstName = '$FirstName' AND LastName = '$LastName'");
|
||||
$r = $q->fetch_array(MYSQLI_BOTH);
|
||||
$q->free();
|
||||
return $r;
|
||||
}
|
||||
|
||||
function uuid2name($uuid) {
|
||||
global $mysqli;
|
||||
global $osmain;
|
||||
$q2 = $mysqli->query("SELECT * FROM $osmain.useraccounts WHERE PrincipalID = '$uuid'");
|
||||
$r2 = $q2->fetch_array(MYSQLI_BOTH);
|
||||
$q2->free();
|
||||
return $r2;
|
||||
}
|
||||
|
||||
function regionname($ruuid) {
|
||||
global $mysqli;
|
||||
global $osmain;
|
||||
$getregionq = $mysqli->query("SELECT * FROM $osmain.regions WHERE uuid = '$ruuid'");
|
||||
$regionrow = $getregionq->fetch_array(MYSQLI_BOTH);
|
||||
$r3 = $regionrow['regionName'];
|
||||
$getregionq->free();
|
||||
return $r3;
|
||||
}
|
||||
|
||||
function regionip($UUID) {
|
||||
global $mysqli;
|
||||
global $osmain;
|
||||
$getregionq2 = $mysqli->query("SELECT * FROM $osmain.regions WHERE uuid = '$UUID'");
|
||||
$regionrow2 = $getregionq2->fetch_array(MYSQLI_BOTH);
|
||||
$r4 = $regionrow2['serverIP'];
|
||||
$getregionq2->free();
|
||||
return $r4;
|
||||
}
|
||||
|
||||
function online($uuid) {
|
||||
global $mysqli;
|
||||
global $osmain;
|
||||
$oq = $mysqli->query("SELECT * FROM $osmain.griduser WHERE UserID = '$uuid'");
|
||||
$or = $oq->fetch_array(MYSQLI_BOTH);
|
||||
$online = $or['Online'];
|
||||
$oq->free();
|
||||
return $online;
|
||||
}
|
||||
|
||||
function userspersim($sim) {
|
||||
global $mysqli;
|
||||
global $osmain;
|
||||
$simq = $mysqli->query("SELECT * FROM $osmain.presence WHERE RegionID = '$sim'");
|
||||
$count = $simq->num_rows;
|
||||
$simq->close();
|
||||
return $count;
|
||||
}
|
||||
|
||||
function time2date($time) {
|
||||
$dt = new DateTime("@$time");
|
||||
$r = $dt->format('M d Y g:ia T');
|
||||
return $r;
|
||||
}
|
||||
|
||||
function oscat($catid) {
|
||||
switch ($catid) {
|
||||
case "0":
|
||||
$r = "Any";
|
||||
break;
|
||||
case "18":
|
||||
$r = "Discussion";
|
||||
break;
|
||||
case "19":
|
||||
$r = "Sports";
|
||||
break;
|
||||
case "20":
|
||||
$r = "Live Music";
|
||||
break;
|
||||
case "22":
|
||||
$r = "Commercial";
|
||||
break;
|
||||
case "23":
|
||||
$r = "Nightlife/Entertainment";
|
||||
break;
|
||||
case "24":
|
||||
$r = "Games/Contests";
|
||||
break;
|
||||
case "25":
|
||||
$r = "Pageants";
|
||||
break;
|
||||
case "26":
|
||||
$r = "Education";
|
||||
break;
|
||||
case "27":
|
||||
$r = "Arts and Culture";
|
||||
break;
|
||||
case "28":
|
||||
$r = "Charity/Support Groups";
|
||||
break;
|
||||
case "29":
|
||||
$r = "Miscellaneous";
|
||||
break;
|
||||
}
|
||||
return $r;
|
||||
}
|
||||
|
||||
// only mess with this function if you know wtf your doing.
|
||||
// screwing this up could (WILL) result in a hackable websearch page.
|
||||
function sqlprotection ($s) {
|
||||
global $mysqli;
|
||||
$s = htmlspecialchars(stripslashes($s));
|
||||
$s = rawurlencode($s);
|
||||
$s = str_replace(array("1=1", ";", "-", "script", "SELECT", "INSERT", "UPDATE", "DELETE", "UNION", "OR"), array("", "", "", "", "", "", "", "", "", ""), $s);
|
||||
return $s;
|
||||
}
|
||||
|
||||
if (isset($_GET['search'])) {
|
||||
$search = sqlprotection($_GET['search']);
|
||||
$search = strtoupper($search);
|
||||
$search = strip_tags($search);
|
||||
$search = trim ($search);
|
||||
$searchlink = $search;
|
||||
}else{
|
||||
$search = "";
|
||||
$searchlink = "everything";
|
||||
}
|
||||
if (isset($_GET['type'])) {
|
||||
$type = $_GET['type'];
|
||||
}else{
|
||||
$type = "";
|
||||
}
|
||||
if (isset($_GET['m'])) {
|
||||
$m = $_GET['m'];
|
||||
}else{
|
||||
$m = "";
|
||||
}
|
||||
|
||||
if ($search) {
|
||||
$placeholder = "Searching for $search";
|
||||
}else if (!$search) {
|
||||
$placeholder = "Search";
|
||||
}
|
||||
|
||||
$select = "selected";
|
||||
|
||||
if (!$m) {
|
||||
$m = "1";
|
||||
}
|
||||
|
||||
$eventcat = "<select name='eventcat'>
|
||||
<option value=''></option>
|
||||
<option value=''></option>
|
||||
<option value=''></option>
|
||||
<option value=''></option>
|
||||
<option value=''></option>
|
||||
<option value=''></option>
|
||||
<option value=''></option>
|
||||
<option value=''></option>
|
||||
</select>";
|
||||
|
||||
$searchtitle = strtolower($search);
|
||||
$ptitle = "Searching for $searchtitle";
|
||||
|
||||
$PG = "<span class='label label-success'>PG</span>";
|
||||
$MATURE = "<span class='label label-default'>M</span>";
|
||||
$ADULT = "<span class='label label-danger'>A</span>";
|
||||
?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
|
||||
<head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
|
||||
<title id='titlebar'><?php echo "$grid_name $ptitle"; ?></title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<!-- Latest compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<form class="form-inline" method="get" action="" role="form">
|
||||
<div class="form-group">
|
||||
<input type="text" name="search" class="form-control" id="appendedInputButtons" placeholder="<?php echo $placeholder; ?>">
|
||||
<select name="type" class="form-control">
|
||||
<option value="" <?php if (!$type) { echo ""; } ?>>Everything</option>
|
||||
<option value="classifieds" <?php if ($type == "classifieds") { echo "$select"; } ?>>Classifieds</option>
|
||||
<option value="destinations" <?php if ($type == "destinations") { echo "$select"; } ?>>Destinations</option>
|
||||
<option value="events" <?php if ($type == "events") { echo "$select"; } ?>>Events</option>
|
||||
<option value="groups" <?php if ($type == "groups") { echo "$select"; } ?>>Groups</option>
|
||||
<option value="4sale" <?php if ($type == "4sale") { echo "$select"; } ?>>Land & Rentals</option>
|
||||
<option value="people" <?php if ($type == "people") { echo "$select"; } ?>>People</option>
|
||||
<option value="places" <?php if ($type == "places") { echo "$select"; } ?>>Places</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="radio inline">
|
||||
<input type="radio" id="inlineCheckbox1" name="m" value="1" <?php if ($m == "1") { echo "CHECKED"; } ?>><?php echo $PG; ?>
|
||||
</label>
|
||||
<label class="radio inline">
|
||||
<input type="radio" id="inlineCheckbox2" name="m" value="2" <?php if ($m == "2") { echo "CHECKED"; } ?>><?php echo $MATURE; ?>
|
||||
</label>
|
||||
<label class="radio inline">
|
||||
<input type="radio" id="inlineCheckbox3" name="m" value="3" <?php if ($m == "3") { echo "CHECKED"; } ?>><?php echo $ADULT; ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success">Search</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<TABLE>
|
||||
<TR VALIGN="top" style="valign: top;">
|
||||
<TD ALIGN="left" STYLE="width:150px;">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li <?php if (!$type) { echo "class='active'"; } ?>><a href="<?php echo "ossearch.php?search=$searchlink&type=&m=$m"; ?>">Everything</a></li>
|
||||
|
||||
|
||||
<li <?php if ($type == "classifieds") { echo "class='active'"; } ?>><a href="<?php echo "ossearch.php?search=$searchlink&type=classifieds&m=$m"; ?>">Classifieds</a></li>
|
||||
|
||||
|
||||
<li <?php if ($type == "destinations") { echo "class='active'"; } ?>><a href="<?php echo "ossearch.php?search=$searchlink&type=destinations&m=$m"; ?>">Destinations</a></li>
|
||||
|
||||
|
||||
<li <?php if ($type == "events") { echo "class='active'"; } ?>><a href="<?php echo "ossearch.php?search=$searchlink&type=events&m=$m"; ?>">Events</a></li>
|
||||
<?php if ($type == "events") { echo $eventcat; } ?>
|
||||
|
||||
<li <?php if ($type == "groups") { echo "class='active'"; } ?>><a href="<?php echo "ossearch.php?search=$searchlink&type=groups&m=$m"; ?>">Groups</a></li>
|
||||
<?php
|
||||
if ($type == "groups") {
|
||||
echo "Group Test";
|
||||
}
|
||||
?>
|
||||
|
||||
<li <?php if ($type == "4sale") { echo "class='active'"; } ?>><a href="<?php echo "ossearch.php?search=$searchlink&type=4sale&m=$m"; ?>">Land & Rentals</a></li>
|
||||
|
||||
|
||||
<li <?php if ($type == "people") { echo "class='active'"; } ?>><a href="<?php echo "ossearch.php?search=$searchlink&type=people&m=$m"; ?>">People</a></li>
|
||||
|
||||
|
||||
<li <?php if ($type == "places") { echo "class='active'"; } ?>><a href="<?php echo "ossearch.php?search=$searchlink&type=places&m=$m"; ?>">Places</a></li>
|
||||
<?php
|
||||
if ($type == "places") {
|
||||
echo "Test";
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</TD>
|
||||
<TD ALIGN="left" STYLE='max-width:600px'>
|
||||
<div class="panel-group" id="accordion" style="width:600px; height: auto;">
|
||||
<?php
|
||||
if ($type == "classifieds" || !$type) {
|
||||
$cq = $mysqli->query("SELECT * FROM $osmod.classifieds WHERE name LIKE '%$search%' OR description LIKE '%$search%' AND creationdate < '$now' AND expirationdate > '$now' AND classifiedflags < '$m' ORDER BY 'creationdate' DESC LIMIT 0,100");
|
||||
while ($cn = $cq->fetch_array(MYSQLI_BOTH)) {
|
||||
$creatoruuid = $cn['creatoruuid'];
|
||||
$creationdate = $cn['creationdate'];
|
||||
$expirationdate = $cn['expirationdate'];
|
||||
$category = $cn['category'];
|
||||
$name = $cn['name'];
|
||||
$parceluuid = $cn['parceluuid'];
|
||||
$description = $cn['description'];
|
||||
$snapshotuuid = $cn['snapshotuuid'];
|
||||
$simname = $cn['simname'];
|
||||
$classifiedflags = $cn['classifiedflags'];
|
||||
|
||||
$creationdate = date("M d Y h:i a T",$creationdate);
|
||||
$expirationdate = date("M d Y h:i a T",$expirationdate);
|
||||
|
||||
$parq = $mysqli->query("SELECT * FROM $osmod.allparcels WHERE parcelUUID = '$parceluuid'");
|
||||
$parrow = $parq->fetch_array(MYSQLI_BOTH);
|
||||
$regionid = $parrow['regionUUID'];
|
||||
$parcelname = $parrow['parcelname'];
|
||||
$loc = $parrow['landingpoint'];
|
||||
$parq->free();
|
||||
|
||||
$simq = $mysqli->query("SELECT * FROM $osmain.regions WHERE uuid = '$regionid'");
|
||||
$simr = $simq->fetch_array(MYSQLI_BOTH);
|
||||
$sim = $simr['regionName'];
|
||||
$simq->free();
|
||||
|
||||
if (!$loc) {
|
||||
$locr = "128,128,25";
|
||||
}else{
|
||||
$locr = str_replace("/", ",", $loc);
|
||||
}
|
||||
|
||||
$FL = uuid2name($creatoruuid);
|
||||
$FName = $FL['FirstName'];
|
||||
$LName = $FL['LastName'];
|
||||
|
||||
if ($classifiedflags == 0) {
|
||||
$classifiedflags = "$PG";
|
||||
}else if ($classifiedflags == 1) {
|
||||
$classifiedflags = "$MATURE";
|
||||
}else if ($classifiedflags == 2) {
|
||||
$classifiedflags = "$ADULT";
|
||||
}
|
||||
|
||||
if (!$snapshotuuid || $snapshotuuid == "00000000-0000-0000-0000-000000000000") {
|
||||
$pic = "<img src='http://hgport.me/webasset?asset_uri=".$asseturi."&asset=243e3d7b-66ac-47f0-aca9-74bb932c2404&format=img' class='pull-right' width='75' height='75'>";
|
||||
}else{
|
||||
$pic = "<img src='http://hgport.me/webasset?asset_uri=".$asseturi."&asset=".$snapshotuuid."&format=img' class='pull-right' width='75' height='75'>";
|
||||
}
|
||||
|
||||
echo " <div class='panel panel-default'>
|
||||
<div class='panel-heading'>
|
||||
<h4 class='panel-title'>
|
||||
<a class='accordion-toggle' data-toggle='collapse' data-parent='#accordion' href='#$parceluuid'>
|
||||
<B>$name</B>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id='$parceluuid' class='panel-collapse collapse'>
|
||||
<div class='panel-body'>
|
||||
$pic
|
||||
<p>
|
||||
<a href='secondlife://$sim/$loc/'>$parcelname, $sim ($locr)</a><br>
|
||||
$description
|
||||
<br>
|
||||
<small>Created: $creationdate by $FName $LName</small>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
";
|
||||
}
|
||||
$cq->free();
|
||||
}
|
||||
if ($type == "destinations" || !$type) {
|
||||
$popq = $mysqli->query("SELECT * FROM $osmod.popularplaces WHERE name LIKE '%$search%' AND mature < '$m' ORDER BY `dwell` DESC LIMIT 0,100");
|
||||
while ($popn = $popq->fetch_array(MYSQLI_BOTH)) {
|
||||
$parcelUUID = $popn['parcelUUID'];
|
||||
$name = $popn['name'];
|
||||
$mature = $popn['mature'];
|
||||
|
||||
if ($mature == 0) {
|
||||
$mature = "$PG";
|
||||
}else if ($mature == 1) {
|
||||
$mature = "$MATURE";
|
||||
}else if ($mature == 2) {
|
||||
$mature = "$ADULT";
|
||||
}
|
||||
|
||||
$parq = $mysqli->query("SELECT * FROM $osmod.parcels WHERE parcelUUID = '$parcelUUID'");
|
||||
$parrow = $parq->fetch_array(MYSQLI_BOTH);
|
||||
$reguuid = $parrow['regionUUID'];
|
||||
$landing = $parrow['landingpoint'];
|
||||
$desc = $parrow['description'];
|
||||
$parq->free();
|
||||
$simname = regionname($reguuid);
|
||||
$usersonregion = userspersim($reguuid);
|
||||
|
||||
echo " <div class='panel panel-default'>
|
||||
<div class='panel-heading'>
|
||||
<h4 class='panel-title'>
|
||||
<a class='accordion-toggle' data-toggle='collapse' data-parent='#accordion' href='#Dest$parcelUUID'>
|
||||
<B>$name</B>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id='Dest$parcelUUID' class='panel-collapse collapse'>
|
||||
<div class='panel-body'>
|
||||
$desc<br>
|
||||
<B>Mature Rating:</B> $mature<br>
|
||||
<B>Avatars on region:</B> $usersonregion
|
||||
<br><a href='secondlife://$simname/$landing/'>Teleport</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>";
|
||||
|
||||
}
|
||||
$popq->free();
|
||||
}
|
||||
if ($type == "events" || !$type) {
|
||||
$evq = $mysqli->query("SELECT * FROM $osmod.events WHERE name LIKE '%$search%' OR description LIKE '%$search%' AND dateUTC > $now AND eventflags < '$m' ORDER BY `dateUTC` LIMIT 0,100");
|
||||
while ($evnum = $evq->fetch_array(MYSQLI_BOTH)) {
|
||||
|
||||
$creator = $evnum['creatoruuid'];
|
||||
$time = $evnum['dateUTC'];
|
||||
$eventid = $evnum['eventid'];
|
||||
$eventname = $evnum['name'];
|
||||
$eventinfo = $evnum['description'];
|
||||
$event_type = $evnum['eventflags'];
|
||||
|
||||
$event_time = date("M d Y h:i a T",$time);
|
||||
|
||||
$getname = uuid2name($creator);
|
||||
$first = $getname['FirstName'];
|
||||
$last = $getname['LastName'];
|
||||
$event_host = "$first $last";
|
||||
|
||||
if ($event_type == 0) {
|
||||
$event_type = "$PG";
|
||||
}else if ($event_type == 1) {
|
||||
$event_type = "$MATURE";
|
||||
}else if ($event_type == 2) {
|
||||
$event_type = "$ADULT";
|
||||
}
|
||||
|
||||
if ($time >= $now) {
|
||||
echo " <div class='panel panel-default'>
|
||||
<div class='panel-heading'>
|
||||
<h4 class='panel-title'>
|
||||
<a class='accordion-toggle' data-toggle='collapse' data-parent='#accordion' href='#$eventid'>
|
||||
<B>$eventname - $event_time</B>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id='$eventid' class='panel-collapse collapse'>
|
||||
<div class='panel-body'>
|
||||
$eventinfo<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
";
|
||||
}else if ($time <= $now) {
|
||||
// dont display anything
|
||||
}
|
||||
|
||||
}
|
||||
$evq->free();
|
||||
}
|
||||
if ($type == "groups" || !$type) {
|
||||
$grpq = $mysqli->query("SELECT * FROM $osmain.os_groups_groups WHERE Name LIKE '%$search%' AND ShowInList = '1' ORDER BY `Name` ASC LIMIT 0,100");
|
||||
while ($grpn = $grpq->fetch_array(MYSQLI_BOTH)) {
|
||||
|
||||
$GroupID = $grpn['GroupID'];
|
||||
$Name = $grpn['Name'];
|
||||
$Charter = $grpn['Charter'];
|
||||
$InsigniaID = $grpn['InsigniaID'];
|
||||
$FounderID = $grpn['FounderID'];
|
||||
$OpenEnrollment = $grpn['OpenEnrollment'];
|
||||
$MembershipFee = $grpn['MembershipFee'];
|
||||
$MaturePublish = $grpn['MaturePublish'];
|
||||
|
||||
$FL = uuid2name($FounderID);
|
||||
$FName = $FL['FirstName'];
|
||||
$LName = $FL['LastName'];
|
||||
|
||||
$gmq = $mysqli->query("SELECT * FROM $osmain.os_groups_membership WHERE GroupID = '$GroupID'");
|
||||
$gmcount = $gmq->num_rows;
|
||||
$gmq->close();
|
||||
|
||||
if ($InsigniaID == "00000000-0000-0000-0000-000000000000" || !$InsigniaID) {
|
||||
$pic = "<img src='http://hgport.me/webasset?asset_uri=".$asseturi."&asset=243e3d7b-66ac-47f0-aca9-74bb932c2404&format=img' class='pull-right' width='75' height='75'>";
|
||||
}else{
|
||||
$pic = "<img src='http://hgport.me/webasset?asset_uri=".$asseturi."&asset=".$InsigniaID."&format=img' class='pull-right' width='75' height='75'>";
|
||||
}
|
||||
|
||||
if ($OpenEnrollment == "1") {
|
||||
$join = "<a href='' class='btn btn-success'>JOIN</a>";
|
||||
}else if ($OpenEnrollment == "0") {
|
||||
$join = "Closed to invites only.";
|
||||
}
|
||||
|
||||
if ($MaturePublish == 0) {
|
||||
$MaturePublish = "$PG";
|
||||
}else if ($MaturePublish == 1) {
|
||||
$MaturePublish = "$MATURE";
|
||||
}else if ($MaturePublish == 2) {
|
||||
$MaturePublish = "$ADULT";
|
||||
}
|
||||
|
||||
echo " <div class='panel panel-default'>
|
||||
<div class='panel-heading'>
|
||||
<h4 class='panel-title'>
|
||||
<a class='accordion-toggle' data-toggle='collapse' data-parent='#accordion' href='#$GroupID'>
|
||||
<B>$Name</B>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id='$GroupID' class='panel-collapse collapse'>
|
||||
<div class='panel-body'>
|
||||
$pic
|
||||
$MaturePublish
|
||||
$Charter
|
||||
<br>
|
||||
Total Members: $gmcount
|
||||
<br>
|
||||
Enrollment: $join
|
||||
<br>
|
||||
<small>Created by $FName $LName</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
";
|
||||
}
|
||||
$grpq->free();
|
||||
}
|
||||
if ($type == "4sale" || !$type) {
|
||||
$forsaleq = $mysqli->query("SELECT * FROM $osmod.parcelsales WHERE parcelname LIKE '%$search%' AND mature < '$m' ORDER BY `saleprice` ASC LIMIT 0,100");
|
||||
while ($forsnum = $forsaleq->fetch_array(MYSQLI_BOTH)) {
|
||||
|
||||
$regionUUID = $forsnum['regionUUID'];
|
||||
$parcelname = $forsnum['parcelname'];
|
||||
$parcelUUID = $forsnum['parcelUUID'];
|
||||
$area = $forsnum['area'];
|
||||
$saleprice = $forsnum['saleprice'];
|
||||
$landingpoint = $forsnum['landingpoint'];
|
||||
|
||||
$regionname = regionname($regionUUID);
|
||||
|
||||
echo " <div class='panel panel-default'>
|
||||
<div class='panel-heading'>
|
||||
<h4 class='panel-title'>
|
||||
<a class='accordion-toggle' data-toggle='collapse' data-parent='#accordion' href='#forsale$parcelUUID'>
|
||||
<B>$parcelname</B>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id='forsale$parcelUUID' class='accordion-body collapse'>
|
||||
<div class='panel-body'>
|
||||
<p>
|
||||
<B>Area:</B> $area<br>
|
||||
<B>Price:</B> V$ $saleprice<br>
|
||||
<B>Region:</B> $regionname<br>
|
||||
<a href=''>Teleport</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
";
|
||||
}
|
||||
$forsaleq->free();
|
||||
}
|
||||
if ($type == "people" || !$type) {
|
||||
$pplq = $mysqli->query("SELECT * FROM $osmain.useraccounts WHERE FirstName LIKE '%$search%' OR LastName LIKE '%$search%' ORDER BY `Created` ASC LIMIT 0,100");
|
||||
while ($pplnum = $pplq->fetch_array(MYSQLI_BOTH)) {
|
||||
|
||||
$uuid = $pplnum['PrincipalID'];
|
||||
$sFirst = $pplnum['FirstName'];
|
||||
$sLast = $pplnum['LastName'];
|
||||
|
||||
if ($sLast == "Resident") {
|
||||
$profname = $sFirst;
|
||||
}else{
|
||||
$profname = $sFirst.".".$sLast;
|
||||
}
|
||||
|
||||
$online = online($uuid);
|
||||
if ($online == "False") {
|
||||
$onoff = "offlinedot.png";
|
||||
}else if ($online == "True") {
|
||||
$onoff = "onlinedot.png";
|
||||
}
|
||||
|
||||
$profq = $mysqli->query("SELECT * FROM $osmod.userprofile WHERE useruuid = '$uuid' AND profileMaturePublish < '$m'");
|
||||
$prow = $profq->fetch_array(MYSQLI_BOTH);
|
||||
|
||||
$show = $prow['profileAllowPublish'];
|
||||
if ($show == "0") {
|
||||
|
||||
$MaturePublish = $prow['profileMaturePublish'];
|
||||
$abouttext = $prow['profileAboutText'];
|
||||
$fakepic = $prow['profileImage'];
|
||||
|
||||
$profq->free();
|
||||
|
||||
if ($abouttext) {
|
||||
$abouttext = htmlspecialchars_decode($abouttext, ENT_QUOTES);
|
||||
$abouttext = html_entity_decode($abouttext);
|
||||
$abouttext = substr($abouttext, 0, 125);
|
||||
$fakelife = "<p>
|
||||
$abouttext
|
||||
</p>";
|
||||
}else if (!$abouttext) {
|
||||
$fakelife = "";
|
||||
}
|
||||
|
||||
if ($MaturePublish == 0) {
|
||||
$MaturePublish = "$PG";
|
||||
}else if ($MaturePublish == 1) {
|
||||
$MaturePublish = "$MATURE";
|
||||
}else if ($MaturePublish == 2) {
|
||||
$MaturePublish = "$ADULT";
|
||||
}
|
||||
|
||||
if ($fakepic == "00000000-0000-0000-0000-000000000000" || !$fakepic) {
|
||||
$pic = "<img src='http://hgport.me/webasset?asset_uri=".$asseturi."&asset=243e3d7b-66ac-47f0-aca9-74bb932c2404&format=img' class='pull-right' width='75' height='75'>";
|
||||
}else{
|
||||
$pic = "<img src='http://hgport.me/webasset?asset_uri=".$asseturi."&asset=".$fakepic."&format=img' class='pull-right' width='75' height='75'>";
|
||||
}
|
||||
|
||||
echo " <div class='panel panel-default'>
|
||||
<div class='panel-heading'>
|
||||
<h4 class='panel-title'>
|
||||
<a class='accordion-toggle' data-toggle='collapse' data-parent='#accordion' href='#people$uuid'>
|
||||
<B>$sFirst $sLast</B> <img src='$address/img/$onoff' border='0'>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id='people$uuid' class='panel-collapse collapse'>
|
||||
<div class='panel-body'>
|
||||
$pic
|
||||
$fakelife
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
";
|
||||
|
||||
}else if ($show == "1" || !$show){
|
||||
}
|
||||
|
||||
}
|
||||
$pplq->free();
|
||||
}
|
||||
if ($type == "places" || !$type) {
|
||||
$placeq = $mysqli->query("SELECT * FROM $osmod.parcels WHERE parcelname LIKE '%$search%' OR description LIKE '%$search%' AND public = 'true' ORDER BY `parcelUUID` ASC LIMIT 0,100");
|
||||
while ($placenum = $placeq->fetch_array(MYSQLI_BOTH)) {
|
||||
|
||||
$regionUUID = $placenum['regionUUID'];
|
||||
$parcelname = $placenum['parcelname'];
|
||||
$parcelUUID = $placenum['parcelUUID'];
|
||||
$landingpoint = $placenum['landingpoint'];
|
||||
$description = $placenum['description'];
|
||||
$searchcategory = $placenum['searchcategory'];
|
||||
$mature = $placenum['mature'];
|
||||
|
||||
$regionname = regionname($regionUUID);
|
||||
$usersonregion = userspersim($regionUUID);
|
||||
|
||||
if ($mature == "PG") {
|
||||
$mr = "1";
|
||||
$mat = "$PG";
|
||||
}
|
||||
if ($mature == "Mature") {
|
||||
$mr = "2";
|
||||
$mat = "$MATURE";
|
||||
}
|
||||
if ($mature == "Adult") {
|
||||
$mr = "3";
|
||||
$mat = "$ADULT";
|
||||
}
|
||||
|
||||
if ($mr <= $m) {
|
||||
echo " <div class='panel panel-default'>
|
||||
<div class='panel-heading'>
|
||||
<h4 class='panel-title'>
|
||||
<a class='accordion-toggle' data-toggle='collapse' data-parent='#accordion' href='#places$parcelUUID'>
|
||||
<B>$parcelname</B>
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id='places$parcelUUID' class='panel-collapse collapse'>
|
||||
<div class='panel-body'>
|
||||
<p>
|
||||
$pic
|
||||
$description<br>
|
||||
<B>Mature Rating:</B> $mat<br>
|
||||
<B>Avatars on region:</B> $usersonregion
|
||||
<br>
|
||||
<a href='secondlife://$regionname/$landingpoint/'>Teleport</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
";
|
||||
}else{
|
||||
}
|
||||
|
||||
}
|
||||
$placeq->free();
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<script type="text/JavaScript">
|
||||
$(document).ready(function(){
|
||||
$('.dropdown-toggle').dropdown();
|
||||
$('#tooltip').tooltip('show');
|
||||
$(".accordion").collapse('hide');
|
||||
$('.collapse').collapse('hide');
|
||||
$('#modal').modal('hide');
|
||||
$('.carousel').carousel({interval: 10000});
|
||||
$('#tabs a:first').tab('show');
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
|
||||
<!-- Latest compiled and minified JavaScript -->
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
$mysqli->close();
|
||||
?>
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
$title = "Partner";
|
||||
include_once 'include/header.php';
|
||||
?>
|
||||
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; background-color: <?= SECONDARY_COLOR ?>; padding: 10px; color: <?= PRIMARY_COLOR ?>; }
|
||||
|
||||
main {width: 50%; margin: 2em auto; padding: 2em; background-color: #ffffff; border: 1px solid #ccc; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); border-radius: 5px;}
|
||||
h2 {color: #333;}
|
||||
form label {display: block; margin-bottom: 0.5em; color: #333;}
|
||||
form input[type="text"], form input[type="password"] {width: 100%; padding: 5px; margin-bottom: 10px; border: 1px solid #ccc; border-radius: 4px;}
|
||||
form input[type="submit"] {padding: 5px 20px; background-color: #007BFF; color: #ffffff; border: none; border-radius: 4px; cursor: pointer;}
|
||||
form input[type="submit"]:hover {background-color: #0056b3;}
|
||||
</style>
|
||||
<body>
|
||||
<main>
|
||||
<h2><?php echo SITE_NAME; ?> Partner Overview</h2>
|
||||
<p>All information related to the Partner can be found here.</p>
|
||||
|
||||
<?php
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
// Validate and sanitize user input
|
||||
$vorname1 = filter_input(INPUT_POST, 'vorname1', FILTER_SANITIZE_STRING);
|
||||
$nachname1 = filter_input(INPUT_POST, 'nachname1', FILTER_SANITIZE_STRING);
|
||||
$vorname2 = filter_input(INPUT_POST, 'vorname2', FILTER_SANITIZE_STRING);
|
||||
$nachname2 = filter_input(INPUT_POST, 'nachname2', FILTER_SANITIZE_STRING);
|
||||
$reg_pass = filter_input(INPUT_POST, 'reg_pass', FILTER_SANITIZE_STRING);
|
||||
|
||||
if ($vorname1 && $nachname1 && $vorname2 && $nachname2 && $reg_pass) {
|
||||
if (in_array($reg_pass, $registration_passwords_partner)) {
|
||||
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
|
||||
|
||||
// Get PrincipalID of person 1
|
||||
$stmt1 = $con->prepare("SELECT PrincipalID FROM UserAccounts WHERE FirstName = ? AND LastName = ?");
|
||||
$stmt1->bind_param("ss", $vorname1, $nachname1);
|
||||
$stmt1->execute();
|
||||
$stmt1->bind_result($principalID1);
|
||||
$stmt1->fetch();
|
||||
$stmt1->close();
|
||||
|
||||
// Get PrincipalID of person 2
|
||||
$stmt2 = $con->prepare("SELECT PrincipalID FROM UserAccounts WHERE FirstName = ? AND LastName = ?");
|
||||
$stmt2->bind_param("ss", $vorname2, $nachname2);
|
||||
$stmt2->execute();
|
||||
$stmt2->bind_result($principalID2);
|
||||
$stmt2->fetch();
|
||||
$stmt2->close();
|
||||
|
||||
// Check if both PrincipalIDs were found
|
||||
if ($principalID1 && $principalID2) {
|
||||
// Update userprofile for person 1
|
||||
$stmt3 = $con->prepare("UPDATE userprofile SET profilePartner = ? WHERE useruuid = ?");
|
||||
$stmt3->bind_param("ss", $principalID2, $principalID1);
|
||||
$stmt3->execute();
|
||||
$stmt3->close();
|
||||
|
||||
// Update userprofile for person 2
|
||||
$stmt4 = $con->prepare("UPDATE userprofile SET profilePartner = ? WHERE useruuid = ?");
|
||||
$stmt4->bind_param("ss", $principalID1, $principalID2);
|
||||
$stmt4->execute();
|
||||
$stmt4->close();
|
||||
|
||||
echo "<p>Partner information updated successfully!</p>";
|
||||
} else {
|
||||
echo "<p>Could not find both users in the database.</p>";
|
||||
}
|
||||
|
||||
mysqli_close($con);
|
||||
} else {
|
||||
echo "<p>Invalid registration password.</p>";
|
||||
}
|
||||
} else {
|
||||
echo "<p>Please fill in all fields correctly.</p>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<form method="post" action="">
|
||||
<label for="vorname1">Vorname Person 1:</label>
|
||||
<input type="text" id="vorname1" name="vorname1" required><br>
|
||||
<label for="nachname1">Nachname Person 1:</label>
|
||||
<input type="text" id="nachname1" name="nachname1" required><br>
|
||||
<label for="vorname2">Vorname Person 2:</label>
|
||||
<input type="text" id="vorname2" name="vorname2" required><br>
|
||||
<label for="nachname2">Nachname Person 2:</label>
|
||||
<input type="text" id="nachname2" name="nachname2" required><br>
|
||||
<label for="reg_pass">Registrierungspasswort: (Dies muss beim Admin beantragt werden.)</label>
|
||||
<input type="password" id="reg_pass" name="reg_pass" required><br>
|
||||
<input type="submit" value="Update Partner">
|
||||
</form>
|
||||
</main>
|
||||
</body>
|
||||
@@ -0,0 +1,219 @@
|
||||
<?php
|
||||
session_start(); // PHP-Session starten
|
||||
|
||||
$title = "New Password";
|
||||
include_once 'include/header.php';
|
||||
|
||||
// Funktion zur Erstellung eines Salts
|
||||
function ospswdsalt() {
|
||||
return md5(uniqid(mt_rand(), true));
|
||||
}
|
||||
|
||||
// Funktion zur Erstellung des Passwort-Hashes
|
||||
function ospswdhash($osPasswd, $osSalt) {
|
||||
return md5(md5($osPasswd) . ":" . $osSalt);
|
||||
}
|
||||
|
||||
// include/verification_functions.php
|
||||
|
||||
function generateActivationCode() {
|
||||
return bin2hex(random_bytes(16));
|
||||
}
|
||||
|
||||
function sendVerificationEmail($email, $vorname, $nachname, $activationCode) {
|
||||
$subject = "Ihr Freischaltcode für " . SITE_NAME;
|
||||
$message = "Hallo $vorname $nachname,\n\n";
|
||||
$message .= "Ihr Freischaltcode lautet: $activationCode\n\n";
|
||||
$message .= "Bitte verwenden Sie diesen Code, um Ihre Registrierung abzuschließen.\n\n";
|
||||
$message .= "Mit freundlichen Grüßen,\n";
|
||||
$message .= SITE_NAME;
|
||||
|
||||
$headers = "From: noreply@" . parse_url(BASE_URL, PHP_URL_HOST) . "\r\n";
|
||||
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
|
||||
|
||||
return mail($email, $subject, $message, $headers);
|
||||
}
|
||||
|
||||
function generateUUID() {
|
||||
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0x0fff) | 0x4000,
|
||||
mt_rand(0, 0x3fff) | 0x8000,
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
|
||||
);
|
||||
}
|
||||
|
||||
$showCard1 = true; // Standardmäßig Card1 anzeigen
|
||||
$showCard2 = false; // Card2 standardmäßig ausblenden
|
||||
|
||||
// Überprüfen, ob das Formular abgesendet wurde
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
if (isset($_POST["generateCode"])) {
|
||||
// Verifizierungscode generieren und per E-Mail senden
|
||||
$osVorname = trim($_POST["osVorname"]);
|
||||
$osNachname = trim($_POST["osNachname"]);
|
||||
|
||||
// Werte in der Session speichern
|
||||
$_SESSION['osVorname'] = $osVorname;
|
||||
$_SESSION['osNachname'] = $osNachname;
|
||||
|
||||
try {
|
||||
// Datenbankverbindung herstellen
|
||||
$pdo = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD);
|
||||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
// Benutzer anhand von Vorname und Nachname abrufen
|
||||
$statement = $pdo->prepare("SELECT PrincipalID, Email FROM UserAccounts WHERE FirstName = :FirstName AND LastName = :LastName");
|
||||
$statement->execute(['FirstName' => $osVorname, 'LastName' => $osNachname]);
|
||||
$user = $statement->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if (!$user) {
|
||||
echo "Benutzer nicht gefunden.";
|
||||
exit;
|
||||
}
|
||||
|
||||
$email = $user['Email'];
|
||||
$principalID = $user['PrincipalID'];
|
||||
|
||||
// Verifizierungscode generieren (als Variable, nicht in der Datenbank speichern)
|
||||
$activationCode = generateActivationCode();
|
||||
|
||||
// E-Mail an den Benutzer senden
|
||||
$subject = "Ihr Freischaltcode für " . SITE_NAME;
|
||||
$message = "Hallo $osVorname $osNachname,\n\n";
|
||||
$message .= "Ihr Freischaltcode lautet: $activationCode\n\n";
|
||||
$message .= "Bitte verwenden Sie diesen Code, um Ihr Passwort auf " . BASE_URL . " zu ändern.\n\n";
|
||||
$message .= "Mit freundlichen Grüßen,\n";
|
||||
$message .= SITE_NAME;
|
||||
|
||||
$headers = "From: noreply@" . parse_url(BASE_URL, PHP_URL_HOST) . "\r\n";
|
||||
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
|
||||
|
||||
if (mail($email, $subject, $message, $headers)) {
|
||||
echo "Die E-Mail wurde an $email gesendet. Bitte schauen Sie in Ihren E-Mail-Account.";
|
||||
$showCard1 = false; // Card1 ausblenden
|
||||
$showCard2 = true; // Card2 anzeigen
|
||||
} else {
|
||||
echo "Fehler beim Senden der E-Mail.";
|
||||
}
|
||||
|
||||
} catch (PDOException $e) {
|
||||
echo "Fehler: " . $e->getMessage();
|
||||
}
|
||||
} else {
|
||||
// Passwort ändern
|
||||
$osVorname = $_SESSION['osVorname']; // Werte aus der Session abrufen
|
||||
$osNachname = $_SESSION['osNachname'];
|
||||
$activationCode = trim($_POST["activationCode"]);
|
||||
$newPassword = trim($_POST["newPassword"]);
|
||||
|
||||
if (empty($osVorname) || empty($osNachname) || empty($activationCode) || empty($newPassword)) {
|
||||
echo "Bitte füllen Sie alle Felder aus.";
|
||||
exit;
|
||||
}
|
||||
|
||||
try {
|
||||
// Datenbankverbindung herstellen
|
||||
$pdo = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD);
|
||||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
// Benutzer anhand des Vor- und Nachnamens suchen
|
||||
$statement = $pdo->prepare("SELECT PrincipalID FROM UserAccounts WHERE FirstName = :FirstName AND LastName = :LastName");
|
||||
$statement->execute(['FirstName' => $osVorname, 'LastName' => $osNachname]);
|
||||
$user = $statement->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if (!$user) {
|
||||
echo "Benutzer nicht gefunden.";
|
||||
exit;
|
||||
}
|
||||
|
||||
$principalID = $user['PrincipalID'];
|
||||
|
||||
// Generiere ein neues Salt und Hash für das neue Passwort
|
||||
$newSalt = ospswdsalt(); // Funktion aufrufen
|
||||
$newHash = ospswdhash($newPassword, $newSalt); // Funktion aufrufen
|
||||
|
||||
// Passwort in der Tabelle `auth` aktualisieren
|
||||
$updateStatement = $pdo->prepare("UPDATE auth SET passwordHash = :passwordHash, passwordSalt = :passwordSalt WHERE UUID = :UUID");
|
||||
$updateStatement->execute([
|
||||
'passwordHash' => $newHash,
|
||||
'passwordSalt' => $newSalt,
|
||||
'UUID' => $principalID
|
||||
]);
|
||||
|
||||
echo "Passwort erfolgreich geändert.";
|
||||
|
||||
} catch (PDOException $e) {
|
||||
echo "Fehler: " . $e->getMessage();
|
||||
}
|
||||
|
||||
// Datenbankverbindung schließen
|
||||
$pdo = null;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Passwort ändern</title>
|
||||
<style>
|
||||
htmlBody {font-family: Arial, sans-serif; background-color: #f4f4f4; margin: 0; padding: 0;}
|
||||
.card1, .card2 {
|
||||
width: 50%;
|
||||
margin: 2em auto;
|
||||
padding: 2em;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
h2 {color: #333;}
|
||||
form label {display: block; margin-bottom: 0.5em; color: #333;}
|
||||
form input[type="text"], form input[type="password"], form input[type="email"] {
|
||||
width: 100%;
|
||||
padding: 0.5em;
|
||||
margin-bottom: 1em;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
}
|
||||
form input[type="submit"] {
|
||||
padding: 0.7em 2em;
|
||||
background-color: #007BFF;
|
||||
color: #ffffff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
form input[type="submit"]:hover {background-color: #0056b3;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<!-- Card1 zuerst anzeigen -->
|
||||
<div class="card1" style="display: <?php echo $showCard1 ? 'block' : 'none'; ?>;">
|
||||
<h2>New Password verify</h2>
|
||||
<form action="" method="post">
|
||||
<label for="osVorname">Vorname:</label>
|
||||
<input type="text" name="osVorname" required><br>
|
||||
<label for="osNachname">Nachname:</label>
|
||||
<input type="text" name="osNachname" required><br>
|
||||
<input type="submit" name="generateCode" value="Freischaltcode senden"><br><br>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Card2 nach dem Senden des Freischaltcodes anzeigen -->
|
||||
<div class="card2" style="display: <?php echo $showCard2 ? 'block' : 'none'; ?>;">
|
||||
<h2>New Password now</h2>
|
||||
<form action="" method="post">
|
||||
<label for="activationCode">Freischaltcode aus der gesendeten E-Mail:</label>
|
||||
<input type="text" name="activationCode" required><br>
|
||||
<label for="newPassword">Neues Passwort:</label>
|
||||
<input type="password" name="newPassword" required><br>
|
||||
<input type="submit" value="Passwort ändern">
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,89 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>RSS-Feed Anzeige</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; display: flex; justify-content: center; padding: 20px; }
|
||||
#rss-feed-container { width: 100%; max-width: 800px; }
|
||||
.rss-entry { border: 1px solid #ccc; border-radius: 8px; padding: 10px; margin-bottom: 10px; display: flex; align-items: center; }
|
||||
.rss-entry img { width: 100px; height: 100px; object-fit: cover; border-radius: 8px; margin-right: 10px; }
|
||||
.rss-entry h3 { margin: 0; font-size: 1.2em; }
|
||||
.rss-entry a { display: block; margin-top: 5px; color: #007bff; text-decoration: none; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="rss-feed-container"></div>
|
||||
|
||||
<script>
|
||||
// Definiere die Variablen direkt im JavaScript
|
||||
const RSS_BASE_URL = 'http://openmanniland.de';
|
||||
const RSS_MAIN_FOLDER = '/webinterface';
|
||||
const RSS_FEED_FOLDER = '/include';
|
||||
const RSS_IMAGE_FOLDER = '/calendar';
|
||||
|
||||
const feedUrl = `${RSS_BASE_URL}${RSS_MAIN_FOLDER}${RSS_FEED_FOLDER}/rss-feed.php`;
|
||||
|
||||
async function fetchRSSFeed(url) {
|
||||
const response = await fetch(url);
|
||||
const text = await response.text();
|
||||
const parser = new DOMParser();
|
||||
const xml = parser.parseFromString(text, 'application/xml');
|
||||
return xml;
|
||||
}
|
||||
|
||||
function renderRSSFeed(xml) {
|
||||
const items = xml.querySelectorAll('item');
|
||||
const container = document.getElementById('rss-feed-container');
|
||||
|
||||
items.forEach(item => {
|
||||
const title = item.querySelector('title').textContent;
|
||||
const link = item.querySelector('link').textContent;
|
||||
const description = item.querySelector('description').textContent;
|
||||
const imageUrl = item.querySelector('image') ? item.querySelector('image').textContent : '';
|
||||
|
||||
console.log(`Image URL: ${imageUrl}`);
|
||||
|
||||
const entry = document.createElement('div');
|
||||
entry.classList.add('rss-entry');
|
||||
|
||||
if (imageUrl) {
|
||||
const img = document.createElement('img');
|
||||
img.src = imageUrl;
|
||||
img.onload = () => console.log(`Image loaded: ${img.src}`);
|
||||
img.onerror = () => console.error(`Failed to load image: ${img.src}`);
|
||||
entry.appendChild(img);
|
||||
}
|
||||
|
||||
const entryContent = document.createElement('div');
|
||||
entryContent.classList.add('entry-content');
|
||||
|
||||
const entryTitle = document.createElement('h3');
|
||||
entryTitle.textContent = title;
|
||||
|
||||
const entryLink = document.createElement('a');
|
||||
entryLink.href = link;
|
||||
entryLink.textContent = 'Read more';
|
||||
|
||||
const entryDescription = document.createElement('p');
|
||||
entryDescription.innerHTML = description;
|
||||
|
||||
entryContent.appendChild(entryTitle);
|
||||
entryContent.appendChild(entryDescription);
|
||||
entryContent.appendChild(entryLink);
|
||||
|
||||
entry.appendChild(entryContent);
|
||||
container.appendChild(entry);
|
||||
});
|
||||
}
|
||||
|
||||
async function loadRSSFeed() {
|
||||
const xml = await fetchRSSFeed(feedUrl);
|
||||
renderRSSFeed(xml);
|
||||
}
|
||||
|
||||
loadRSSFeed();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,165 @@
|
||||
<?php
|
||||
// Titel und Header einbinden
|
||||
$title = "SearchService";
|
||||
include_once 'include/header.php';
|
||||
|
||||
define('DB_SERVER', 'your_db_server');
|
||||
define('DB_USERNAME', 'your_db_username');
|
||||
define('DB_PASSWORD', 'your_db_password');
|
||||
define('DB_NAME', 'your_db_name');
|
||||
|
||||
ierror_reporting(E_ALL);
|
||||
ini_set('display_errors', '1');
|
||||
ini_set('display_startup_errors', '1');
|
||||
|
||||
// Datenbankverbindung
|
||||
$mysqli = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
|
||||
if ($mysqli->connect_errno) {
|
||||
die("Database connection failed: " . $mysqli->connect_error);
|
||||
}
|
||||
|
||||
// Sicherer Eingabeschutz
|
||||
function sanitize_input($input) {
|
||||
return htmlspecialchars(trim($input), ENT_QUOTES, 'UTF-8');
|
||||
}
|
||||
|
||||
// Funktionen
|
||||
function oscat($catid) {
|
||||
switch ($catid) {
|
||||
case "0": return "Any";
|
||||
case "18": return "Discussion";
|
||||
case "19": return "Sports";
|
||||
case "20": return "Live Music";
|
||||
case "22": return "Commercial";
|
||||
case "23": return "Nightlife/Entertainment";
|
||||
case "24": return "Games/Contests";
|
||||
case "25": return "Pageants";
|
||||
case "26": return "Education";
|
||||
case "27": return "Arts and Culture";
|
||||
case "28": return "Charity/Support Groups";
|
||||
case "29": return "Miscellaneous";
|
||||
default: return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
function getosuser($FirstName, $LastName, $mysqli) {
|
||||
$query = "SELECT * FROM userinfo WHERE FirstName = ? AND LastName = ?";
|
||||
$stmt = $mysqli->prepare($query);
|
||||
$stmt->bind_param("ss", $FirstName, $LastName);
|
||||
$stmt->execute();
|
||||
$result = $stmt->get_result();
|
||||
return $result->fetch_assoc();
|
||||
}
|
||||
|
||||
function uuid2name($uuid, $mysqli) {
|
||||
$query = "SELECT * FROM userinfo WHERE PrincipalID = ?";
|
||||
$stmt = $mysqli->prepare($query);
|
||||
$stmt->bind_param("s", $uuid);
|
||||
$stmt->execute();
|
||||
$result = $stmt->get_result();
|
||||
return $result->fetch_assoc();
|
||||
}
|
||||
|
||||
function regionname($ruuid, $mysqli) {
|
||||
$query = "SELECT regionName FROM regions WHERE uuid = ?";
|
||||
$stmt = $mysqli->prepare($query);
|
||||
$stmt->bind_param("s", $ruuid);
|
||||
$stmt->execute();
|
||||
$result = $stmt->get_result();
|
||||
$row = $result->fetch_assoc();
|
||||
return $row['regionName'] ?? null;
|
||||
}
|
||||
|
||||
// Suche ausführen
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$search_type = sanitize_input($_POST['search_type'] ?? '');
|
||||
$search_query = sanitize_input($_POST['search_query'] ?? '');
|
||||
|
||||
if ($search_query !== '') {
|
||||
switch ($search_type) {
|
||||
case 'userinfo':
|
||||
$query = "SELECT * FROM userinfo WHERE user LIKE ? OR avatar LIKE ?";
|
||||
break;
|
||||
case 'os_groups_groups':
|
||||
$query = "SELECT * FROM os_groups_groups WHERE Name LIKE ? OR Location LIKE ?";
|
||||
break;
|
||||
case 'regions':
|
||||
$query = "SELECT * FROM regions WHERE regionName LIKE ? OR serverIP LIKE ?";
|
||||
break;
|
||||
default:
|
||||
$query = '';
|
||||
}
|
||||
|
||||
if ($query) {
|
||||
$stmt = $mysqli->prepare($query);
|
||||
$search_param = "%$search_query%";
|
||||
$stmt->bind_param("ss", $search_param, $search_param);
|
||||
$stmt->execute();
|
||||
$result = $stmt->get_result();
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?= htmlspecialchars(SITE_NAME . ' ' . $title, ENT_QUOTES, 'UTF-8') ?></title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; background-color: #f4f4f4; color: black; margin: 0; padding: 0; }
|
||||
main { width: 75%; margin: 2em auto; padding: 2em; background-color: #ffffff; color: black; border: 1px solid #ccc; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); }
|
||||
h2 { color: #333; }
|
||||
form label { display: block; margin-bottom: 0.5em; color: #333; }
|
||||
form input[type="text"], form select { width: 100%; padding: 5px; margin-bottom: 10px; border: 1px solid #ccc; border-radius: 4px; }
|
||||
form input[type="submit"] { padding: 5px 20px; background-color: #007BFF; color: #ffffff; border: none; border-radius: 4px; cursor: pointer; }
|
||||
form input[type="submit"]:hover { background-color: #0056b3; }
|
||||
table { width: 100%; border-collapse: collapse; font-size: 0.85em; }
|
||||
table, th, td { border: 1px solid #ccc; }
|
||||
th, td { padding: 8px; text-align: left; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<h2>Search Service</h2>
|
||||
<form method="post" action="">
|
||||
<label for="search_type">Search Type:</label>
|
||||
<select id="search_type" name="search_type">
|
||||
<option value="userinfo">People</option>
|
||||
<option value="os_groups_groups">Groups</option>
|
||||
<option value="regions">Regions</option>
|
||||
</select>
|
||||
<label for="search_query">Search Query:</label>
|
||||
<input type="text" id="search_query" name="search_query" required>
|
||||
<input type="submit" value="Search">
|
||||
</form>
|
||||
|
||||
<?php if (!empty($result) && $result->num_rows > 0): ?>
|
||||
<h3>Search Results:</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<?php foreach ($result->fetch_fields() as $field): ?>
|
||||
<th><?= htmlspecialchars($field->name) ?></th>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php while ($row = $result->fetch_assoc()): ?>
|
||||
<tr>
|
||||
<?php foreach ($row as $value): ?>
|
||||
<td><?= htmlspecialchars($value) ?></td>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
<?php endwhile; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php elseif ($_SERVER['REQUEST_METHOD'] === 'POST'): ?>
|
||||
<p>No results found.</p>
|
||||
<?php endif; ?>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
$mysqli->close();
|
||||
?>
|
||||
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
$title = "SearchService";
|
||||
include_once 'include/header.php';
|
||||
// todo: places, land for sale, classifieds, events fehlen.
|
||||
|
||||
// Grid info: [grid-info]
|
||||
// Grid status: [grid-status]
|
||||
// Grid status: [popular-places]
|
||||
// Profile page: [avatar-profile]
|
||||
|
||||
?>
|
||||
|
||||
<style>
|
||||
htmlBody {font-family: Arial, sans-serif; background-color: #f4f4f4; color: black; margin: 0; padding: 0;}
|
||||
main {width: 75%; margin: 2em auto; padding: 2em; background-color: #ffffff; color: black; border: 1px solid #ccc; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);}
|
||||
h2 {color: #333;}
|
||||
form label {display: block; margin-bottom: 0.5em; color: #333;}
|
||||
form input[type="text"], form select {width: 100%; padding: 5px; margin-bottom: 10px; border: 1px solid #ccc; border-radius: 4px;}
|
||||
form input[type="submit"] {padding: 5px 20px; background-color: #007BFF; color: #ffffff; border: none; border-radius: 4px; cursor: pointer;}
|
||||
form input[type="submit"]:hover {background-color: #0056b3;}
|
||||
table {width: 100%; border-collapse: collapse; font-size: 0.72em;} /* Schriftgröße um 10% reduziert */
|
||||
table, th, td {border: 1px solid #ccc;}
|
||||
th, td {padding: 8px; text-align: left;}
|
||||
</style>
|
||||
|
||||
<main>
|
||||
<h2><?php echo SITE_NAME; ?> SearchService Overview</h2>
|
||||
<p>All information related to the SearchService can be found here.</p>
|
||||
|
||||
<form method="post" action="">
|
||||
<label for="search_type">Search Type:</label>
|
||||
<select id="search_type" name="search_type">
|
||||
<option value="userinfo">People (User Info)</option>
|
||||
<option value="os_groups_groups">Groups</option>
|
||||
<option value="regions">Regions</option>
|
||||
</select>
|
||||
<label for="search_query">Search Query:</label>
|
||||
<input type="text" id="search_query" name="search_query" required>
|
||||
<input type="submit" value="Search">
|
||||
</form>
|
||||
|
||||
<?php
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$search_type = filter_input(INPUT_POST, 'search_type', FILTER_SANITIZE_STRING);
|
||||
$search_query = filter_input(INPUT_POST, 'search_query', FILTER_SANITIZE_STRING);
|
||||
|
||||
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
|
||||
|
||||
if ($search_type === 'userinfo') {
|
||||
// Suchen nach Userinfo
|
||||
$query = "SELECT * FROM `userinfo` WHERE `user` LIKE '%$search_query%' OR `avatar` LIKE '%$search_query%' OR `serverurl` LIKE '%$search_query%' ORDER BY `avatar` ASC, `serverurl` ASC";
|
||||
} elseif ($search_type === 'os_groups_groups') {
|
||||
// Suchen nach Gruppen
|
||||
$query = "SELECT * FROM `os_groups_groups` WHERE `Name` LIKE '%$search_query%' OR `Location` LIKE '%$search_query%' ORDER BY `Name` ASC";
|
||||
} elseif ($search_type === 'regions') {
|
||||
// Suchen nach Regionen
|
||||
$query = "SELECT * FROM `regions` WHERE `regionName` LIKE '%$search_query%' OR `serverIP` LIKE '%$search_query%' ORDER BY `regionName` DESC";
|
||||
} else {
|
||||
$query = "";
|
||||
}
|
||||
|
||||
if ($query) {
|
||||
$result = mysqli_query($con, $query);
|
||||
if (mysqli_num_rows($result) > 0) {
|
||||
echo "<h3>Search Results:</h3>";
|
||||
echo "<table>";
|
||||
echo "<tr>";
|
||||
// Tabellenkopf anzeigen
|
||||
foreach (mysqli_fetch_fields($result) as $field) {
|
||||
echo "<th>" . htmlspecialchars($field->name) . "</th>";
|
||||
}
|
||||
echo "</tr>";
|
||||
// Ergebnisse ausgeben
|
||||
while ($row = mysqli_fetch_assoc($result)) {
|
||||
echo "<tr>";
|
||||
foreach ($row as $value) {
|
||||
echo "<td>" . htmlspecialchars($value) . "</td>";
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
echo "</table>";
|
||||
} else {
|
||||
echo "<p>No results found.</p>";
|
||||
}
|
||||
}
|
||||
mysqli_close($con);
|
||||
}
|
||||
?>
|
||||
</main>
|
||||
|
||||
@@ -0,0 +1,202 @@
|
||||
<?php
|
||||
$title = "Welcome";
|
||||
include_once "include/config.php";
|
||||
// Version: 1.7.0
|
||||
?>
|
||||
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=<?php echo LOGO_FONT; ?>&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
.logofont { font-family: '<?php echo LOGO_FONT; ?>', sans-serif; }
|
||||
#welcome-text { font-family: '<?php echo LOGO_FONT; ?>', sans-serif; }
|
||||
.bodysplash, html { margin: 0; padding: 0; overflow: hidden; width: 100%; height: 100%; font-family: <?php echo FONT_FAMILY; ?>; background: <?php echo SECONDARY_COLOR; ?>; }
|
||||
#background1 { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; object-fit: cover; }
|
||||
.info-box { position: absolute; right: 10px; width: 220px; background: rgba(44, 42, 42, 0.4); padding: 10px; border-radius: 8px; border: 1px solid <?php echo LINK_COLOR; ?>; font-size: 14px; color: white; }
|
||||
#stats1 { top: 20px; }
|
||||
#regionslist { top: 250px; }
|
||||
fieldset { border: 1px solid <?php echo LINK_COLOR; ?>; border-radius: 6px; padding: 6px; }
|
||||
legend { font-size: 14px; font-weight: bold; color: <?php echo PRIMARY_COLOR_LOGO; ?>; }
|
||||
.region-link { font-size: 13px; color: rgb(255, 255, 255); text-decoration: none; display: block; padding: 2px 0; }
|
||||
.region-link:hover { text-decoration: underline; color: <?php echo LINK_HOVER_COLOR; ?>; }
|
||||
.PictureSlider { position: absolute; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 2s ease-in-out; }
|
||||
.PictureSlider.active { opacity: 1; }
|
||||
#mainsplash { word-wrap: break-word; width: 60%; position: relative; z-index: 1; top: 20px; left: 20px; text-align: left; color: <?php echo WELCOME_TEXT_COLOR; ?>; font-size: calc(<?php echo WELCOME_TEXT_FONT_SIZE; ?> * 2); font-family: <?php echo FONT_FAMILY; ?>; font-weight: bold; text-shadow: 2px 2px black;}
|
||||
.daily-box { position: absolute; left: 15%; top: 33%; width: 420px; background: rgba(44, 42, 42, 0.4); padding: 10px; border-radius: 8px; border: 1px solid <?php echo LINK_COLOR; ?>; font-size: 18px; color: white; }
|
||||
.dailyupdatelist { position: relative; z-index: 1; top: 20px; left: 20px; text-align: left; background-color: rgba(128, 128, 128, 0.5); border-radius: 8px; padding: 20px; margin: 20px; max-width: 400px; color: white; font-family: Arial, sans-serif; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<bodysplash>
|
||||
|
||||
<?php
|
||||
$allebilder = scandir(SLIDESHOW_FOLDER);
|
||||
$allowed_extensions = ['jpg', 'jpeg', 'png', 'gif']; // Erlaubte Bildformate
|
||||
?>
|
||||
<div id="background1">
|
||||
<?php
|
||||
foreach ($allebilder as $bild) {
|
||||
$bildinfo = pathinfo(SLIDESHOW_FOLDER . "/" . $bild);
|
||||
// Überprüfe, ob die Datei keine Ordner ist und ob sie ein erlaubtes Bildformat hat
|
||||
if (!in_array($bild, [".", "..", "_notes"]) && $bildinfo['basename'] !== "Thumbs.db" && in_array(strtolower($bildinfo['extension']), $allowed_extensions)) {
|
||||
?>
|
||||
<img class="PictureSlider" src="<?php echo SLIDESHOW_FOLDER . "/" . $bild; ?>" alt="slide">
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<!-- Logo oder Begrüßungstext -->
|
||||
<div id="mainsplash">
|
||||
<?php if (LOGO_ON === 'ON') { ?>
|
||||
<img src="<?php echo LOGO_PATH; ?>" width="<?php echo LOGO_WIDTH; ?>" height="<?php echo LOGO_HEIGHT; ?>" alt="Logo">
|
||||
<?php } ?>
|
||||
|
||||
<?php if (TEXT_ON === 'ON') { ?>
|
||||
<div id="welcome-text">
|
||||
<?php echo WELCOME_TEXT; ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
<!-- Statistik -->
|
||||
<div id='stats1' class="info-box">
|
||||
<fieldset>
|
||||
<legend>📊 Statistik</legend>
|
||||
<?php
|
||||
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
|
||||
|
||||
if (!$con) {
|
||||
echo "<b style='color: red;'>❌ Grid ist OFFLINE</b>";
|
||||
} else {
|
||||
$totalUsers = mysqli_fetch_row(mysqli_query($con, "SELECT COUNT(*) FROM Presence"))[0];
|
||||
$totalRegions = mysqli_fetch_row(mysqli_query($con, "SELECT COUNT(*) FROM regions"))[0];
|
||||
$totalAccounts = mysqli_fetch_row(mysqli_query($con, "SELECT COUNT(*) FROM UserAccounts"))[0];
|
||||
$activeUsers = mysqli_fetch_row(mysqli_query($con, "SELECT COUNT(*) FROM GridUser WHERE Login > (UNIX_TIMESTAMP() - (30*86400))"))[0];
|
||||
$totalGridAccounts = mysqli_fetch_row(mysqli_query($con, "SELECT COUNT(*) FROM GridUser"))[0];
|
||||
|
||||
echo "<b>Nutzer im Grid:</b> $totalUsers<br>";
|
||||
echo "<b>Regionen:</b> $totalRegions<br>";
|
||||
echo "<b>Aktiv (30 Tage):</b> $activeUsers<br>";
|
||||
echo "<b>Inworld Nutzer:</b> $totalAccounts<br>";
|
||||
echo "<b>HG Grid Nutzer:</b> $totalGridAccounts<br>";
|
||||
echo "<b style='color: green;'>✔ Grid ist ONLINE</b>";
|
||||
|
||||
mysqli_close($con);
|
||||
}
|
||||
?>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<!-- Regionsliste -->
|
||||
<div id='regionslist' class="info-box">
|
||||
<fieldset>
|
||||
<legend>🌍 Regionen</legend>
|
||||
<?php
|
||||
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
|
||||
$sql = "SELECT regionName, serverIP, serverPort FROM regions ORDER BY last_seen DESC LIMIT 10";
|
||||
$resultregions = mysqli_query($con, $sql);
|
||||
|
||||
while ($dsatz = mysqli_fetch_assoc($resultregions)) {
|
||||
$region = htmlspecialchars($dsatz["regionName"]);
|
||||
$ip = htmlspecialchars($dsatz["serverIP"]);
|
||||
$port = htmlspecialchars($dsatz["serverPort"]);
|
||||
|
||||
// Standard-Koordinaten für den Teleport-Link (X=103, Y=113, Z=23)
|
||||
$regionslink = "hop://$ip:$port/$region/103/113/23";
|
||||
|
||||
echo "<a class='region-link' href='$regionslink' target='_blank'>$region</a>";
|
||||
}
|
||||
|
||||
mysqli_close($con);
|
||||
?>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<!-- Tagesaktuelle Einblendungen -->
|
||||
<?php if (SHOW_DAILY_UPDATE) { ?>
|
||||
<div id='dailyupdatelist' class="daily-box">
|
||||
<fieldset>
|
||||
<legend>🌟 <?php echo SITE_NAME; ?> Aktuell</legend>
|
||||
<div class="card" id="daily-update">
|
||||
<?php if (DAILY_UPDATE_TYPE === 'text') { ?>
|
||||
<p><?php echo DAILYTEXT; ?></p>
|
||||
<?php } else if (DAILY_UPDATE_TYPE === 'rss') { ?>
|
||||
<?php
|
||||
$feedcache_path = FEED_CACHE_PATH;
|
||||
$feedcache_max_age = FEED_CACHE_MAX_AGE;
|
||||
$feed_urls = [RSS_FEED_URL];
|
||||
|
||||
// Prüfen, ob Cache neu geladen werden muss
|
||||
if (!file_exists($feedcache_path) or filemtime($feedcache_path) < (time() - $feedcache_max_age)) {
|
||||
$output = '';
|
||||
|
||||
foreach ($feed_urls as $feed_url) {
|
||||
// Feed abrufen
|
||||
$xml = @simplexml_load_string(file_get_contents($feed_url));
|
||||
|
||||
if (!$xml) {
|
||||
$output .= "<p>Fehler beim Laden des Feeds: <strong>" . htmlspecialchars($feed_url) . "</strong></p>";
|
||||
continue;
|
||||
}
|
||||
|
||||
$output .= '<h2>' . htmlspecialchars($xml->channel->title) . '</h2>';
|
||||
//$output .= '<p><a href="' . htmlspecialchars($xml->channel->link) . '">Feed öffnen</a></p>';
|
||||
|
||||
// Nur den neuesten Eintrag anzeigen
|
||||
$entry = $xml->channel->item[0];
|
||||
$date = date('d.m.Y', strtotime($entry->pubDate));
|
||||
$title = htmlspecialchars($entry->title);
|
||||
$description = html_entity_decode($entry->description);
|
||||
if (isset($entry->encoded)) {
|
||||
$description .= '<br>' . html_entity_decode($entry->encoded);
|
||||
} else if (isset($entry->content)) {
|
||||
$description .= '<br>' . html_entity_decode($entry->content);
|
||||
}
|
||||
$output .= '<p><a href="'.htmlspecialchars($entry->link).'" title="'.$date.'">'. $title .'</a> <small>('.$date.')</small></p>';
|
||||
$output .= '<div>'. $description .'</div>';
|
||||
}
|
||||
|
||||
echo $output;
|
||||
//file_put_contents($feedcache_path, $output);
|
||||
} else {
|
||||
echo file_get_contents($feedcache_path);
|
||||
}
|
||||
?>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<!-- Skript für Slideshow -->
|
||||
<script>
|
||||
var slideIndex = 0;
|
||||
var slides = document.getElementsByClassName("PictureSlider");
|
||||
|
||||
function carousel() {
|
||||
for (var i = 0; i < slides.length; i++) {
|
||||
slides[i].classList.remove("active");
|
||||
}
|
||||
slideIndex++;
|
||||
if (slideIndex > slides.length) { slideIndex = 1; }
|
||||
slides[slideIndex - 1].classList.add("active");
|
||||
setTimeout(carousel, <?php echo SLIDESHOW_DELAY; ?>);
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
if (slides.length > 0) {
|
||||
slides[0].classList.add("active");
|
||||
}
|
||||
setTimeout(carousel, <?php echo SLIDESHOW_DELAY; ?>);
|
||||
});
|
||||
</script>
|
||||
|
||||
</bodysplash>
|
||||
</html>
|
||||
Reference in New Issue
Block a user