Remove all non web files as they have been moved

This commit is contained in:
Ulrich Block 2016-06-05 11:11:56 +02:00
parent f6c99f123d
commit 967a826eeb
18 changed files with 6 additions and 7553 deletions

View File

@ -18,6 +18,12 @@ Who is the target group for Easy-WI?
------------------------
No matter if you are a commercial entity that is providing hosting solutions, are sponsoring (game)server daemons, organize a LAN party, need to manage clan server, or are a private individual, Easy-WI is meant for everybody.
Where can I find the installer and other scripts?
------------------------
* [Installer](https://github.com/easy-wi/installer/)
* [Optional Server Side Scripts](https://github.com/easy-wi/server/)
* [External PHP Scripst](https://github.com/easy-wi/external/)
Which functions and modules are available?
------------------------

View File

@ -1,53 +0,0 @@
<?php
/**
* File: api_config.php.
* Author: Ulrich Block
* Contact: <ulrich.block@easy-wi.com>
*
* This file is part of Easy-WI.
*
* Easy-WI is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Easy-WI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Easy-WI. If not, see <http://www.gnu.org/licenses/>.
*
* Diese Datei ist Teil von Easy-WI.
*
* Easy-WI ist Freie Software: Sie koennen es unter den Bedingungen
* der GNU General Public License, wie von der Free Software Foundation,
* Version 3 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren
* veroeffentlichten Version, weiterverbreiten und/oder modifizieren.
*
* Easy-WI wird in der Hoffnung, dass es nuetzlich sein wird, aber
* OHNE JEDE GEWAEHELEISTUNG, bereitgestellt; sogar ohne die implizite
* Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK.
* Siehe die GNU General Public License fuer weitere Details.
*
* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
* Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
*/
// The database access
$config['dbHost']='localhost';
$config['dbName']='database';
$config['tblPrefix']='teklab';
$config['dbUser']='databaseUser';
$config['dbPwd']='securePassword';
$config['sourceSystem']='securePassword';
// Access to the file
$config['passwordToken']='myPasswordToken';
$config['allowedIPs']=array('1.1.1.1','1.1.1.2');
// Type of System allowed are:
// webspell,teklab,whmcs
$config['sourceType']='webspell';

493
external/api_users.php vendored
View File

@ -1,493 +0,0 @@
<?php
/**
* File: api_users.php.
* Author: Ulrich Block
* Contact: <ulrich.block@easy-wi.com>
*
* This file is part of Easy-WI.
*
* Easy-WI is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Easy-WI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Easy-WI. If not, see <http://www.gnu.org/licenses/>.
*
* Diese Datei ist Teil von Easy-WI.
*
* Easy-WI ist Freie Software: Sie koennen es unter den Bedingungen
* der GNU General Public License, wie von der Free Software Foundation,
* Version 3 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren
* veroeffentlichten Version, weiterverbreiten und/oder modifizieren.
*
* Easy-WI wird in der Hoffnung, dass es nuetzlich sein wird, aber
* OHNE JEDE GEWAEHELEISTUNG, bereitgestellt; sogar ohne die implizite
* Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK.
* Siehe die GNU General Public License fuer weitere Details.
*
* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
* Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
*/
require_once 'api_config.php';
// Initial parameters
$error=array();
// There is no need to check every user every time
// Start looking only for new IDs
$lastID=(isset($_GET['lastID']) and is_numeric($_GET['lastID'])) ? (int)$_GET['lastID'] : 0;
// this requires that a column exists which is updated every time the account gets an update:
// ALTER TABLE `yourUserTable` ADD COLUMN `updatetime` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
// This might lead to false positives if data like the login time is stored in that table.
// The more accurate way would be to fill/update the column only in wanted cases
// convert to string and back to date so proper format is ensured
$updateTime=date('Y-m-d H:i:s',strtotime((isset($_GET['updateTime']) and @strtotime($_GET['updateTime'])) ? $_GET['updateTime'] : '0000-00-00 00:00:00'));
// Processing all users at once can lead to memory issues if system has small recources or large database large.
$chunkSize=(isset($_GET['chunkSize']) and is_numeric($_GET['chunkSize'])) ? (int)$_GET['chunkSize'] : 10;
// To be able to properly get data in chunks the starting point needs to be defined.
$start=(isset($_GET['start']) and is_numeric($_GET['start'])) ? (int)$_GET['start'] : 0;
// Check if the IP is white listed
if(isset($_SERVER['REMOTE_ADDR']) and in_array($_SERVER['REMOTE_ADDR'],$config['allowedIPs'])) {
$config['externalIP']=(string)$_SERVER['REMOTE_ADDR'];
} else {
$error[]='Script called locally or IP is not white listed.';
}
// Check if access token was send and is correct
if (!isset($_GET['passwordToken'])) {
$error[]='No password token has been send.';
} else if ($_GET['passwordToken']!=$config['passwordToken']) {
$error[]='Bad password token has been send.';
}
$list = (in_array($_GET['list'], array('user','substitutes','gameserver','voiceserver','voicemaster','rootserver'))) ? (string)$_GET['list'] : 'user';
// Send header data
header("Content-type: application/json; charset=UTF-8");
// If there was an error send error and stop script
if (count($error)>0) {
echo json_encode(array('error' => $error));
// Else check for new users
} else {
// Establish database connection
try {
$pdo=new PDO("mysql:host=".$config['dbHost'].";dbname=".$config['dbName'],$config['dbUser'],$config['dbPwd'],array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8"));
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
// Define default values so we always have a proper return
$total = 0;
$json = array();
// User export
if ($list == 'user') {
// This query fetches the actual data.
// The Query needs to be altered to your database. This is just an example!
// specify the needed columns to reduce database load.
// webspell
if ($config['sourceType'] == 'webspell') {
$lastID = str_replace($config['sourceType'] . ':', '', $lastID);
// Get amount of users that are new or received an update
// The Query needs to be altered to your database. This is just an example!
$sql="SELECT COUNT(`userID`) AS `amount` FROM `{$config['tblPrefix']}_user`
WHERE (`userID`>? OR `updatetime`>?) AND `activated`=1 AND `banned` IS NULL";
$query=$pdo->prepare($sql);
$query->execute(array($lastID, $updateTime));
$total=$query->fetchColumn();
$sql = "SELECT * FROM `{$config['tblPrefix']}_usertable`
WHERE (`userID`>? OR `updatetime`>?) AND `activated`=1 AND (`banned` IS NULL OR `banned`='')
LIMIT $start,$chunkSize";
$query=$pdo->prepare($sql);
$query->execute(array($lastID, $updateTime));
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
// Easy-Wi stores the salutation with numbers
if (isset($row['salutation']) and $row['salutation'] == 'mr') {
$salutation = 1;
} else if (isset($row['salutation']) and $row['salutation'] == 'ms') {
$salutation = 2;
} else {
$salutation = null;
}
// the keys needs to be adjusted to your table layout and query!
$json[]=array(
'externalID' => $config['sourceType'] . ':' . $row['userID'],
'salutation' => $salutation,
'email' => $row['email'],
'loginName' => $row['username'],
'firstName' => $row['firstname'],
'lastName' => $row['lastname'],
'birthday' => $row['birthday'],
'country' => $row['country'],
'phone' => $row['tel'],
'fax' => $row['fax'],
'handy' => $row['mobile'],
'city' => $row['town'],
'cityn' => $row['postcode'],
'street' => $row['street'],
'streetn' => $row['streetnr'],
'updatetime' => $row['updatetime'],
'usertype'=>'u',
'password' => $row['password']
);
}
} else if ($config['sourceType'] == 'whmcs') {
$sql = "SELECT COUNT(`id`) AS `amount` FROM `tblclients`
WHERE `status`='Active'";
$query = $pdo->prepare($sql);
$query->execute();
$total = $query->fetchColumn();
$sql = "SELECT * FROM `tblclients`
WHERE `status`='Active'
LIMIT $start,$chunkSize";
$query = $pdo->prepare($sql);
$query->execute();
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
// WHMCS stores street + number so we need to split and rebuild strings
$exploded = preg_split('/\s/', $row["address1"], -1, PREG_SPLIT_NO_EMPTY);
$lastKey = count($exploded) - 1;
if ($lastKey > -1 and isset($exploded[$lastKey])) {
$streetn = $exploded[$lastKey]);
unset($exploded[$lastKey]);
} else {
$streetn = null;
}
// the keys needs to be adjusted to your table layout and query!
$json[]=array(
'externalID' => $config['sourceType'] . ':' . $row['id'],
'salutation' => null,
'email' => $row['email'],
'loginName' => $row['username'],
'firstName' => $row['firstname'],
'lastName' => $row['lastname'],
'birthday' => null,
'country' => strtolower($row['country']),
'phone' => $row['phonenumber'],
'fax' => null,
'handy' => null,
'city' => implode(" ", $exploded),
'cityn' => $streetn,
'street' => $row['street'],
'streetn' => $row['streetnr'],
'updatetime' => $row['updatetime'],
'usertype'=>'u',
);
}
} else if ($config['sourceType'] == 'teklab') {
$lastID = str_replace($config['sourceType'] . ':', '', $lastID);
// Get amount of users that are new or received an update
$sql="SELECT COUNT(`id`) AS `amount` FROM `{$config['tblPrefix']}_members`
WHERE `rank`=1";
$query=$pdo->prepare($sql);
$query->execute();
$total=$query->fetchColumn();
// users
$sql = "SELECT * FROM `{$config['tblPrefix']}_members`
WHERE `rank`=1
LIMIT $start,$chunkSize";
$query=$pdo->prepare($sql);
$query->execute();
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
// Teklab has also 3 for company which Easy-WI currently does not maintain
if ($row['title'] == 0) {
$salutation = 1;
} else if ($row['title']==1) {
$salutation = 2;
} else {
$salutation = null;
}
// Easy-WI uses ISO code for storing countries
if ($row['country'] == 1) {
$country = 'de';
} else if ($row['country'] == 2) {
$country = 'uk';
} else if ($row['country'] == 3) {
$country = 'at';
} else if ($row['country'] == 4) {
$country = 'ch';
} else {
$country = null;
}
// Street and streetnumber are stored in the same column Easy-WI has individual columns
$exploded = explode(" ", $row['street']);
if (count($exploded) > 1) {
$streetNumber = $exploded[count($exploded) - 1];
unset($exploded[count($exploded) - 1]);
$streetName = implode(' ', $exploded);
} else {
$streetName = null;
$streetNumber = null;
}
$json[]=array(
'externalID' => $config['sourceType'] . ':' . $row['id'],
'salutation' => $salutation,
'email' => $row['email'],
'loginName' => $row['member'],
'firstName' => $row['surname'],
'lastName' => $row['name'],
'birthday'=> date('Y-m-d H:m:s', strtotime($row['birthday'])),
'country' => $country,
'phone' => $row['phone'],
'fax' => $row['fax'],
'handy' => null,
'city' => $row['city'],
'cityn' => $row['zipcode'],
'street' => $streetName,
'streetn' => $streetNumber,
'updatetime' => null,
'usertype'=>'u',
'password' => $row['password']
);
}
}
} else if ($list == 'rootserver') {
if ($config['sourceType'] == 'teklab') {
// Get amount of gameservers that are new or received an update
$sql = "SELECT COUNT(`id`) AS `amount` FROM `{$config['tblPrefix']}_rootserver`
WHERE `active`=1
AND `games`=1";
$query = $pdo->prepare($sql);
$query->execute();
$total=$query->fetchColumn();
// gameservers
$sql = "SELECT * FROM `{$config['tblPrefix']}_rootserver`
WHERE `active`=1
AND `games`=1
LIMIT $start,$chunkSize";
$query=$pdo->prepare($sql);
$query->execute();
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
$ips = explode("\n", str_replace("\r",'',$row['serverip']));
$ram = (substr($row['ram'], -2) == 'GB') ? trim(substr($row['ram'], 0, (strlen($row['ram']) - 2))) : round((trim(substr($row['ram'], 0, (strlen($row['ram']) - 2))) / 1024), 2);
$json[]=array(
'externalID' => $row['id'],
'belongsToID' => $row['memberid'],
'ips' => $ips,
'sshPort' => $row['sshport'],
'ftpPort' => $row['ftpport'],
'cores' => $row['cpucores'],
'ram' => $ram
);
}
}
} else if ($list == 'gameserver') {
if ($config['sourceType'] == 'teklab') {
// Get amount of gameservers that are new or received an update
$sql = "SELECT COUNT(`id`) AS `amount` FROM `{$config['tblPrefix']}_gameserver`";
$query = $pdo->prepare($sql);
$query->execute();
$total=$query->fetchColumn();
// gameservers
$sql = "SELECT u.`member`,u.`ftppasswd`,i.`scriptfolder`,g.* FROM `{$config['tblPrefix']}_gameserver` AS g
INNER JOIN `{$config['tblPrefix']}_members` AS u
ON g.`memberid`=u.`id`
INNER JOIN `{$config['tblPrefix']}_games` AS i
ON i.`sname`=g.`game`
LIMIT $start,$chunkSize";
$query=$pdo->prepare($sql);
$query->execute();
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
$extraPath = (strlen($row['scriptfolder']) > 0) ? $row['scriptfolder'] . '/' : '';
$json[]=array(
'externalID' => $row['id'],
'belongsToID' => $row['memberid'],
'rootID' => $row['rserverid'],
'ip' => $row['serverip'],
'port' => $row['serverport'],
'port2' => $row['queryport'],
'slots' => $row['player'],
'assignedCore' => ($row['cpucore'] - 1),
'protectionMode' => ($row['protect'] == 1) ? 'Y' : 'N',
'tickrate' => $row['gtick'],
'startMap' => $row['gmap'],
'shorten' => $row['game'],
'player' => $row['player'],
'ftpUser' => $row['member'],
'ftpPass' => $row['ftppasswd'],
'path' => 'server/' . $row['path'] . '/' .$extraPath
);
}
}
} else if ($list == 'voiceserver') {
if ($config['sourceType'] == 'teklab') {
// Get amount of voiceservers that are new or received an update
$sql = "SELECT COUNT(`id`) AS `amount` FROM `{$config['tblPrefix']}_voiceserver`
WHERE `typ`='Teamspeak3'";
$query = $pdo->prepare($sql);
$query->execute();
$total=$query->fetchColumn();
// voiceservers
$sql = "SELECT * FROM `{$config['tblPrefix']}_voiceserver`
WHERE `typ`='Teamspeak3'
LIMIT $start,$chunkSize";
$query=$pdo->prepare($sql);
$query->execute();
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
if (filter_var($row['serverip'], FILTER_VALIDATE_IP)) {
$ip = $row['serverip'];
$dns = '';
} else {
$ip = gethostbyname($row['serverip']);
$dns = $row['serverip'];
}
$json[]=array(
'externalID' => $row['id'],
'belongsToID' => $row['memberid'],
'ip' => $ip,
'dns' => $dns,
'port' => $row['serverport'],
'slots' => $row['slots']
);
}
}
} else if ($list == 'voicemaster') {
if ($config['sourceType'] == 'teklab') {
// Get amount of voiceservers that are new or received an update
$sql = "SELECT COUNT(`id`) AS `amount` FROM `{$config['tblPrefix']}_teamspeak`
WHERE `typ`='Teamspeak3'";
$query = $pdo->prepare($sql);
$query->execute();
$total=$query->fetchColumn();
// voiceservers
$sql = "SELECT * FROM `{$config['tblPrefix']}_teamspeak`
WHERE `typ`='Teamspeak3'
LIMIT $start,$chunkSize";
$query=$pdo->prepare($sql);
$query->execute();
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
if (filter_var($row['serverip'], FILTER_VALIDATE_IP)) {
$ip = $row['serverip'];
$dns = '';
} else {
$ip = gethostbyname($row['serverip']);
$dns = $row['serverip'];
}
$json[]=array(
'externalID' => $row['id'],
'belongsToID' => $row['memberid'],
'ip' => $ip,
'dns' => $dns,
'port' => $row['queryport'],
'queryAdmin' => $row['admin'],
'queryPassword' => $row['passwd'],
'sshUser' => 'user-webi',
'path' => '/home/user-webi/' . $row['path'] . '/'
);
}
}
// Substitutes at last so we can get access permissions as well
} else if ($list == 'substitutes') {
if ($config['sourceType'] == 'teklab') {
// Get amount of substitutes that are new or received an update
$sql = "SELECT COUNT(`id`) AS `amount` FROM `{$config['tblPrefix']}_subusers`";
$query = $pdo->prepare($sql);
$query->execute();
$total=$query->fetchColumn();
// substitutes
$sql = "SELECT * FROM `{$config['tblPrefix']}_subusers`
LIMIT $start,$chunkSize";
$query=$pdo->prepare($sql);
$sql = "SELECT * FROM `{$config['tblPrefix']}_subusers_servers` WHERE `subuserid`=? AND `active`=1";
$query2 = $pdo->prepare($sql);
$query->execute();
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
$serverAccess = array(
'de' => array(),
'gs' => array(),
'vo' => array(),
'vs' => array(),
);
$query2->execute(array($row['id']));
foreach ($query2->fetchAll(PDO::FETCH_ASSOC) as $row2) {
if ($row2['typ'] == 'games') {
$what = 'gs';
} else if ($row2['typ'] == 'voice') {
$what = 'vo';
} else if ($row2['typ'] == 'mvserver') {
$what = 'vs';
} else if ($row2['typ'] == 'mrserver') {
$what = 'de';
} else {
$what = $row2['typ'];
}
$serverAccess[$what][] = $row2['typid'];
}
$json[] = array(
'externalID' => $row['id'],
'belongsToID' => $row['memberid'],
'loginName' => $row['user'],
'firstName' => null,
'lastName' => null,
'serverAccess' => $serverAccess,
'password' => $row['password']
);
}
}
}
// Echo the JSON reply with
echo json_encode(array('total' => $total,'entries' => $json));
// Catch database error and display
} catch(PDOException $error) {
echo json_encode(array('error' => $error->getMessage()));
}
}

186
external/crud.php vendored
View File

@ -1,186 +0,0 @@
<?php
/**
* File: crud.php.
* Author: Ulrich Block
* Contact: <ulrich.block@easy-wi.com>
*
* This file is part of Easy-WI.
*
* Easy-WI is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Easy-WI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Easy-WI. If not, see <http://www.gnu.org/licenses/>.
*
* Diese Datei ist Teil von Easy-WI.
*
* Easy-WI ist Freie Software: Sie koennen es unter den Bedingungen
* der GNU General Public License, wie von der Free Software Foundation,
* Version 3 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren
* veroeffentlichten Version, weiterverbreiten und/oder modifizieren.
*
* Easy-WI wird in der Hoffnung, dass es nuetzlich sein wird, aber
* OHNE JEDE GEWAEHELEISTUNG, bereitgestellt; sogar ohne die implizite
* Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK.
* Siehe die GNU General Public License fuer weitere Details.
*
* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
* Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
*/
// Define the ID variable which will be used at the form and SQLs
$id = $ui->id('id', 10, 'get');
// Default variables. Mostly needed for the add operation
$defaultVar = ($ui->id('id', 10, 'get')) ? $ui->id('id', 10, 'get') : 10;
// At this point all variables are defined that can come from the user
$table = array();
// CSFR protection with hidden tokens. If token(true) returns false, we likely have an attack
if ($ui->w('action', 4, 'post') and !token(true)) {
unset($header, $text);
$errors = array('token' => $spracheResponse->token);
} else {
$errors = array();
}
if ($ui->st('d', 'get') == 'ad' or $ui->st('d', 'get') == 'md') {
// Add jQuery plugin chosen to the header
/*
$htmlExtraInformation['css'][] = '<link href="css/default/chosen/chosen.min.css" rel="stylesheet" type="text/css">';
$htmlExtraInformation['js'][] = '<script src="js/default/plugins/chosen/chosen.jquery.min.js" type="text/javascript"></script>';
*/
if ($id and $ui->st('d', 'get') == 'md') {
$query = $sql->prepare("SELECT `a`,b`,`c` FROM `table` WHERE `id`=? AND `reseller_id`=? LIMIT 1");
$query->execute(array($id, $resellerLockupID));
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
if (!$ui->st('action', 'post')) {
$a = $row['a'];
$b = $row['b'];
$c = $row['c'];
}
$oldA = $row['a'];
$oldB = $row['b'];
$oldC = $row['c'];
}
}
if (count($errors) == 0 and ($ui->st('action', 'post') == 'md' or $ui->st('action', 'post') == 'ad')) {
if (!$active) {
$errors['active'] = $sprache->active;
}
if (count($errors) == 0) {
if ($ui->st('action', 'post') == 'ad' and isset($rootServer)) {
$query = $sql->prepare("INSERT INTO `table` (`a`,`b`,`c`,`reseller_id`) VALUES (?,?,?,?)");
$query->execute(array($a, $b, $c, $resellerLockupID));
$rowCount = $query->rowCount();
$loguseraction = '%add% %yourmodule% ' . $a;
} else if ($ui->st('action', 'post') == 'md' and $id and isset($rootServer)) {
$query = $sql->prepare("UPDATE `table` SET `a`=?,`b`=?,`c`=? WHERE `id`=? AND `reseller_id`=? LIMIT 1");
$query->execute(array($a, $b, $c, $id, $resellerLockupID));
$rowCount = $query->rowCount();
$loguseraction = '%mod% %yourmodule% ' . $a;
}
if (isset($rowCount) and $rowCount > 0) {
$insertlog->execute();
$template_file = $spracheResponse->table_add;
// No update or insert failed
} else {
$template_file = $spracheResponse->error_table;
}
}
}
// An error occurred during validation
// unset the redirect information and display the form again
if (!$ui->smallletters('action', 2, 'post') or count($errors) != 0) {
unset($header, $text);
// Gather data for adding if needed and define add template
if ($ui->st('d', 'get') == 'ad') {
$table = getUserList($resellerLockupID);
$template_file = 'admin_your_module_add.tpl';
// Gather data for modding in case we have an ID and define mod template
} else if ($ui->st('d', 'get') == 'md' and $id) {
// Check if database entry exists and if not display 404 page
$template_file = (isset($oldActive)) ? 'admin_your_module_md.tpl' : 'admin_404.tpl';
// Show 404 if GET parameters did not add up or no ID was given with mod
} else {
$template_file = 'admin_404.tpl';
}
}
} else if ($ui->st('d', 'get') == 'dl' and $id) {
$query = $sql->prepare("SELECT `a`,`b`,`c` FROM `table` WHERE `id`=? AND `reseller_id`=? LIMIT 1");
$query->execute(array($id, $resellerLockupID));
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$a = $row['a'];
}
$serverFound = $query->rowCount();
if ($ui->st('action', 'post') == 'dl' and count($errors) == 0 and $serverFound > 0) {
$query = $sql->prepare("DELETE FROM `table` table `id`=? AND `reseller_id`=? LIMIT 1");
$query->execute(array($id, $resellerLockupID));
if ($query->rowCount() > 0) {
$loguseraction = '%del% %yourmodule% ' . $a;
$insertlog->execute();
$template_file = $spracheResponse->table_del;
} else {
$template_file = $spracheResponse->error_table;
}
}
// Nothing submitted yet or csfr error, display the delete form
if (!$ui->st('action', 'post') or count($errors) != 0) {
// Check if we could find an entry and if not display 404 page
$template_file = ($serverFound > 0) ? 'admin_your_module_dl.tpl' : 'admin_404.tpl';
}
} else {
configureDateTables('-1', '1, "asc"', 'ajax.php?w=datatable&d=yourmodule');
$template_file = 'admin_your_module_list.tpl';
}

285
external/easywiapi.php vendored
View File

@ -1,285 +0,0 @@
<?php
class EasyWiRestAPI {
// define internal vars
private $method,$timeout,$connect=false,$user,$pwd,$handle=null,$ssl,$port,$url;
protected $response=array();
// Constructor that sets defaults which can be overwritten
__construct($url,$user,$pwd,$timeout=10,$ssl=false,$port=80,$method='xml',$connect='curl') {
$this->timeout=$timeout;
// check if curl is choosen and available and initiate cURL-Session
if ($connect=='curl' and function_exists('curl_init')) {
if ($this->startCurl($url,$ssl,$port)===true) {
$this->connect='curl';
}
// Use and or fallback to fsockopen if possible and create socket
} else if (($connect=='fsockopen' or !function_exists('curl_init')) and function_exists('fsockopen')) {
if ($this->startSocket($url,$ssl,$port)===true) {
$this->connect='fsockopen';
}
}
// If connection was successfull, go on and set values
if ($this->connect!==false) {
$this->user=$user;
$this->pwd=$pwd;
$this->ssl=$ssl;
$this->port=$port;
$this->url=$url;
// Use json, or xml to communicate
if ($method=='json') {
$this->method='json';
} else {
$this->method='xml';
}
} else {
$this->throwException(10);
}
}
// False usage of the object needs to be handled and execution stopped
private function throwException ($rawError,$extraText=false) {
// If an exception is caught from imbedded class use the raw error
if (is_object($rawError)) {
$errorcode=$rawError->getMessage();
// else use the custom messages
} else {
// default custom messages
$errorArray=array(
1=>'Bad data: Only Strings and Integers are allowed!',
2=>'Bad data: Only Strings are allowed!',
3=>'Bad data: Only Integers are allowed!',
4=>'Bad data: Only arrays are allowed!',
5=>'Bad data: Unknown Error!',
6=>'Bad data: Empty values!',
10=>'Connection Error: Could not connect to!'.$this->url
);
// if the message is not predifined use the raw input
if (array_key_exists($rawError,$errorArray)) {
$errorcode=$errorArray["${rawError}"];
} else {
$errorcode=$rawError;
}
}
// Add some extra info if given
if ($extraText!==false) {
$errorcode.=$extraText;
}
throw new Exception('<p>'.$errorcode.'</p>');
die;
}
//
private function startCurl ($url,$ssl,$port) {
// create the URL to call
if (substr($url,-1)=='/') {
$url=substr($url,0,-1);
}
$url=str_replace(array('http://','https://',':8080',':80',':443'),'',$url);
if ($ssl==true) {
$url='https://'.$url;
} else {
$url='http://'.$url;
}
$url=$url.'/api.php';
// create cURL-Handle
$this->handle=curl_init($url);
// check success
if ($this->handle===false) {
return false;
} else {
// Set options
$this->setbasicCurlOpts();
return true;
}
}
// in case of curl setopts
private function setbasicCurlOpts () {
curl_setopt($this->handle,CURLOPT_CONNECTTIMEOUT,$this->timeout);
curl_setopt($this->handle,CURLOPT_USERAGENT,"cURL (Easy-WI; 1.0; Linux)");
curl_setopt($this->handle,CURLOPT_RETURNTRANSFER,true);
curl_setopt($this->handle,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($this->handle,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($this->handle,CURLOPT_HEADER,1);
//curl_setopt($this->handle,CURLOPT_ENCODING,'deflate');
if (($this->ssl===true and $this->port!=443) or ($this->ssl===false and $this->port!=80)) {
curl_setopt($this->handle,CURLOPT_PORT,$this->port);
}
}
// method to execute a curl request
private function execCurl($type,$send) {
// Setting up POST data and add it to the opts
$postArray['user']=$this->user;
$postArray['pwd']=$this->pwd;
$postArray['type']=$type;
$postArray['xmlstring']=$send;
curl_setopt($this->handle,CURLOPT_POSTFIELDS,$postArray);
// Execute request, get the response and return it.
$this->response=curl_exec($this->handle);
$this->header=curl_getinfo($this->handle);
return $this->response;
}
// Ioncube obfuscated files add sometimes data to the REST responses.
// This will be picked up if fsockopen is used.
// So there is a need to strip this data.
private function convertRawData ($rawdata) {
if ($this->method=='json') {
$checkStart='{';
$checkStop='}';
} else {
$checkStart='<';
$checkStop='>';
}
$response=$rawdata;
while (substr($response,0,1)!=$checkStart and strlen($response)>0) {
$response=substr($response,1);
}
while (substr($response,-1)!=$checkStop and strlen($response)>0) {
$response=substr($response,0,-1);
}
// Decode the rest of the response string into an object.
if ($this->method=='json') {
$decoded=@json_decode($response);
} else {
$decoded=@simplexml_load_string($response);
}
// If decoding was not possible return the raw response, else return the object.
if ($decoded) {
unset($rawdata);
return $decoded;
} else if ($this->connect=='fsockopen') {
return substr($rawdata,4,-3);
} else {
return $rawdata;
}
unset($decoded);
}
// create the JSON that will be send to the API
private function JSONPostValue ($paramArray,$action,$params) {
$jsonArray=array();
foreach ($paramArray as $param) {
if (array_key_exists($param,$params)) {
if (is_array($params[$param])) {
$jsonArray[$param]=array();
foreach ($params[$param] as $val) {
$jsonArray[$param][]=$params[$param];
}
} else {
$jsonArray[$param]=$params[$param];
}
} else {
$jsonArray[$param]='';
}
}
$json=json_encode($jsonArray);
unset($type,$params,$paramArray,$jsonArray);
return $json;
}
// create the XML that will be send to the API
private function XMLPostValue ($paramArray,$action,$params) {
$xml=new SimpleXMLElement(<<<XML
<?xml version='1.0' standalone='yes'?>
<server></server>
XML
);
foreach ($paramArray as $param) {
if (array_key_exists($param,$params)) {
if (is_array($params[$param])) {
foreach ($params[$param] as $val) {
$xml->addChild($param,$val);
}
} else {
$xml->addChild($param,$params[$param]);
}
} else {
$jsonArray[$param]='';
}
}
unset($type,$params,$paramArray);
return $xml;
}
// Method the external script calls
public function makeRestCall($type,$action,$params) {
// some param validation. On fail throw an exception
if (!is_string($type)) {
$this->throwException(2,': $type');
}
if (!is_string($action)) {
$this->throwException(2,': $action');
}
if (!is_array($params)) {
$this->throwException(4,': $params');
}
if (!in_array($type,array('user','gserver','mysql','voice','restart'))) {
$this->throwException('Error: $type is not defined correctly. Allowed methods are (user, gserver, mysql, vserver, restart)');
}
if (!in_array($action,array('mod','add','del','ls','st','re'))) {
$this->throwException('Error: $action is not defined correctly. Allowed methods are (md, ad, dl, st, re, list)');
}
// Array keys that all methods have in common
$generalArray=array('username','user_localid','active');
// Array keys server have in common
$generalServerArray=array('identify_user_by','user_externalid','identify_server_by','server_external_id','server_local_id','master_server_id','master_server_external_id');
// Keys specfic to user
$paramArray['user']=array('identify_by','external_id','localid','email','password');
// Keys specfic to gserver
$paramArray['gserver']=array('private','shorten','slots','primary','taskset','cores','eacallowed','tvenable','pallowed','opt1','opt2','opt3','opt4','opt5','port2','port3','port4','port5','minram','maxram','brandname');
// Keys specfic to voice
$paramArray['voice']=array('private','shorten','slots','max_download_total_bandwidth','max_upload_total_bandwidth','maxtraffic','forcebanner','forcebutton','forceservertag','forcewelcome');
// Keys specfic to mysql
$paramArray['mysql']=array();
// create the post value
if ($this->method=='json') {
$post=$this->JSONPostValue(array_unique(array_merge($generalArray,$generalServerArray,$paramArray[$type])),$action,$params);
} else {
$post=$this->XMLPostValue(array_unique(array_merge($generalArray,$generalServerArray,$paramArray[$type])),$action,$params);
}
// Call method to send the data depending on the connection type
if ($this->connect=='curl' and is_recource($this->handle)) {
$this->execCurl($type,$post);
} else if ($this->connect=='fsockopen' and is_recource($this->handle)) {
fclose($this->handle);
} else {
$this->throwException(10);
}
}
// destructor
__destruct () {
if ($this->connect=='curl' and is_recource($this->handle)) {
curl_close($this->handle);
} else if ($this->connect=='fsockopen' and is_recource($this->handle)) {
fclose($this->handle);
}
unset($method,$timeout,$connect,$user,$pwd,$handle,$ssl,$port,$response);
}
}

View File

@ -1,177 +0,0 @@
<?php
$host = 'wi.domain.de';
$path = '/api.php';
$user = 'user';
$pwd = '123456';
if (isset($_GET['id'])) {
$localID=$_GET['id'];
} else {
$localID='';
}
if (isset($_GET['userID'])) {
$userID=$_GET['userID'];
} else {
$userID='';
}
if (isset($_GET['action'])) {
$action=$_GET['action'];
} else {
$action='add';
}
if ($_GET['test']=='user') {
$type = 'user';
$postxml = <<<XML
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE users>
<users>
<action>$action</action>
<identify_by>localid</identify_by>
<username></username>
<external_id>26</external_id>
<localid>$localID</localid>
<groupID>570</groupID>
<email>testing2@mail.de</email>
<password></password>
<active>Y</active>
</users>
XML;
} else if ($_GET['test']=='gserver') {
$type = 'gserver';
$postxml = <<<XML
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE server>
<server>
<action>$action</action>
<identify_user_by>user_localid</identify_user_by>
<identify_server_by>server_local_id</identify_server_by>
<username></username>
<user_externalid></user_externalid>
<user_localid>$userID</user_localid>
<shorten>css</shorten>
<shorten>cstrike</shorten>
<primary>cstrike</primary>
<slots>12</slots>
<restart>re</restart>
<private>N</private>
<server_external_id></server_external_id>
<server_local_id>$localID</server_local_id>
<active>N</active>
<master_server_id></master_server_id>
<master_server_external_id></master_server_external_id>
<taskset></taskset>
<cores></cores>
<eacallowed></eacallowed>
<brandname></brandname>
<tvenable></tvenable>
<pallowed></pallowed>
<opt1>123</opt1>
<opt2></opt2>
<opt3></opt3>
<opt4></opt4>
<opt5></opt5>
<port>2000</port>
<port2>2001</port2>
<port3>2003</port3>
<port4>2004</port4>
<port5></port5>
<minram></minram>
<maxram></maxram>
<initialpassword></initialpassword>
</server>
XML;
if(isset($_GET['restart']) and $_GET['restart']=='re' or $_GET['st']) {
$restart=$_GET['restart'];
$postxml = <<<XML
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE server>
<server>
<action>$action</action>
<identify_server_by>server_local_id</identify_server_by>
<restart>$restart</restart>
<server_external_id></server_external_id>
<server_local_id>$localID</server_local_id>
</server>
XML;
}
} else if ($_GET['test']=='voice') {
$type = 'voice';
$postxml = <<<XML
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE server>
<server>
<action>$action</action>
<identify_user_by>user_localid</identify_user_by>
<identify_server_by>server_local_id</identify_server_by>
<username></username>
<user_externalid></user_externalid>
<user_localid>$userID</user_localid>
<shorten>ts3</shorten>
<slots>12</slots>
<private>N</private>
<server_external_id></server_external_id>
<server_local_id>$localID</server_local_id>
<active>N</active>
<master_server_id>44</master_server_id>
<master_server_external_id></master_server_external_id>
<max_download_total_bandwidth></max_download_total_bandwidth>
<max_upload_total_bandwidth></max_upload_total_bandwidth>
<maxtraffic></maxtraffic>
<forcebanner></forcebanner>
<forcebutton></forcebutton>
<forceservertag></forceservertag>
<forcewelcome></forcewelcome>
</server>
XML;
} else {
echo '<pre>';
print_r();
echo '<pre>';
}
if (!isset($stop)) {
if (isset($postxml)) echo $postxml.'<br />';
$data = 'pwd='.urlencode($pwd).'&user='.$user.'&xml='.urlencode(base64_encode($postxml)).'&type='.$type;
$useragent=$_SERVER['HTTP_HOST'];
$fp = @fsockopen($host, 80, $errno, $errstr, 30);
$buffer="";
if ($fp) {
$send = "POST ".$path." HTTP/1.1\r\n";
$send .= "Host: ".$host."\r\n";
$send .="User-Agent: $useragent\r\n";
$send .= "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n";
$send .= "Content-Length: ".strlen($data)."\r\n";
$send .= "Connection: Close\r\n\r\n";
$send .= $data;
fwrite($fp, $send);
while (!feof($fp)) {
$buffer .= fgets($fp, 1024);
}
fclose($fp);
}
list($header,$response)=explode("\r\n\r\n",$buffer);
$raw=$response;
$header=str_replace(array("\r\n","\r"),"\n",$header);
$header=str_replace("\t",' ',$header);
$ex=explode("\n",$header);
list($type,$errocode,$errortext)=explode(' ',$ex[0]);
echo 'Here comes the response:<br /><pre>';
if ($errocode>400) {
print_r(substr($response,4,-3));
} else {
while(substr($response,0,1)!='<' and strlen($response)>0) {
$response=substr($response,1);
}
while(substr($response,-1)!='>' and strlen($response)>0) {
$response=substr($response,0,-1);
}
$object=@simplexml_load_string($response);
if ($object) {
echo '<pre>';
print_r($object);
echo '</pre>';
} else {
echo 'Could not decode response<br />';
echo $raw;
}
}
}

View File

@ -1,118 +0,0 @@
<?php
/**
* File: external_auth.php.
* Author: Ulrich Block
* Contact: <ulrich.block@easy-wi.com>
*
* This file is part of Easy-WI.
*
* Easy-WI is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Easy-WI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Easy-WI. If not, see <http://www.gnu.org/licenses/>.
*
* Diese Datei ist Teil von Easy-WI.
*
* Easy-WI ist Freie Software: Sie koennen es unter den Bedingungen
* der GNU General Public License, wie von der Free Software Foundation,
* Version 3 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren
* veroeffentlichten Version, weiterverbreiten und/oder modifizieren.
*
* Easy-WI wird in der Hoffnung, dass es nuetzlich sein wird, aber
* OHNE JEDE GEWAEHELEISTUNG, bereitgestellt; sogar ohne die implizite
* Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK.
* Siehe die GNU General Public License fuer weitere Details.
*
* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
* Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
*/
$dbName='name';
$dbUser='user';
$dbPwd='pwd';
$dbHost='localhost';
$configUser='meinUsername';
$configPass='meinPasswort';
if (!isset($_POST['postXML'])) {
$bad='No XML has been send';
}
if (!isset($bad) and isset($_POST['authPWD']) and isset($_POST['userAuth']) and $_POST['authPWD']==$configPass and $_POST['userAuth']==$configUser) {
// postXML into object
$xml= @simplexml_load_string(base64_decode($_POST['postXML']));
if($xml) {
$user=$xml->user;
$pwd=$xml->pwd;
$mail=$xml->mail;
$externalID=$xml->externalID;
// use whatever your system does to hash passwords. Only MD5 is common but bad practise
$hashedPWD=md5($pwd);
// DB Connection and search user
try {
$connection=new PDO("mysql:host=$dbHost;dbname=$dbName",$dbUser,$dbPwd);
$connection->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
// This is just an example! Needs to be fitted to your database structure!
$query=$connection->prepare("SELECT `pwd` FROM `tbl_userdata` WHERE `loginname`=? LIMIT 1");
$query->execute(array($user));
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
$storedHash=$row['pwd'];
}
/* WHMCS is look like:
$query=$connection->prepare("SELECT `password` FROM `tblclients` WHERE `email`=? LIMIT 1");
$query->execute(array($mail));
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
@list($storedHash, $salt) = explode(':', $row['password']);
if (isset($salt)) {
$hashedPWD = md5($pwd . $salt);
}
}
*/
}
catch(PDOException $error) {
$bad=$error->getMessage();
}
if (!isset($bad) and $hashedPWD==$storedHash) {
$responseXML = <<<XML
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE login>
<login>
<user>$user</user>
<success>1</success>
</login>
XML;
} else if (!isset($bad)) {
$bad='bad login data.';
}
} else {
$bad='No valid XML data has been send';
}
} else {
$bad='Bad API auth data.';
}
header("Content-type: text/xml");
if(isset($bad)) {
$responseXML = <<<XML
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE login>
<login>
<user></user>
<success>0</success>
<error>$bad</error>
</login>
XML;
}
echo $responseXML;

View File

@ -1,94 +0,0 @@
<?php
/**
* File: external_protectioncheck.php.
* Author: Ulrich Block
* Contact: <ulrich.block@easy-wi.com>
*
* This file is part of Easy-WI.
*
* Easy-WI is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Easy-WI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Easy-WI. If not, see <http://www.gnu.org/licenses/>.
*
* Diese Datei ist Teil von Easy-WI.
*
* Easy-WI ist Freie Software: Sie koennen es unter den Bedingungen
* der GNU General Public License, wie von der Free Software Foundation,
* Version 3 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren
* veroeffentlichten Version, weiterverbreiten und/oder modifizieren.
*
* Easy-WI wird in der Hoffnung, dass es nuetzlich sein wird, aber
* OHNE JEDE GEWAEHELEISTUNG, bereitgestellt; sogar ohne die implizite
* Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK.
* Siehe die GNU General Public License fuer weitere Details.
*
* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
* Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
*/
if (isset($_POST['adresse'])) {
$fail=0;
$adresse=explode(":", $_POST['adresse']);
if(isset($adresse['0']) and filter_var($adresse['0'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) and preg_match("/^(0|([1-9]\d{0,3}|[1-5]\d{4}|[6][0-5][0-5]([0-2]\d|[3][0-5])))$/", $adresse['1'])){
$ip=$adresse['0'];
$port=$adresse['1'];
} else {
$fail=1;
}
if ($fail == '0') {
// If you need a yes or no following is sufficient:
$status=file_get_contents("https://webinterface.domain.tld/protectioncheck.php?ip=$ip&po=$port");
} else {
echo "formular";
if ( $status == 'yes' ) {
echo "Server ist gesch&uuml;tzt";
} else if ( $status == 'no' ) {
echo "Server ist ungesch&uuml;tzt";
} else if ( $status == 'unknown' ) {
echo "Ein Server mit dieser IP wurde nicht gefunden bitte versuche es erneut:";
}
} else {
echo "hier das Formular ausgeben";
}
// In case you need status information and or the log:
libxml_set_streams_context(stream_context_create(array('http'=>array('user_agent'=>'PHP libxml agent',null))));
$xml = simplexml_load_file("https://webinterface.domain.tld/protectioncheck.php?ip=$ip&po=$port&gamestring=xml");
if ($xml != 'unknown') {
echo $xml->hostname.'</br>';
echo $xml->gametype.'</br>';
echo $xml->map.'</br>';
echo $xml->numplayers.'</br>';
echo $xml->maxplayers.'</br>';
echo $xml->protection.'</br>';
if ($xml->psince != '0000:00:00') {
echo $xml->psince.'</br>';
}
foreach ($xml->actions->action as $action) {
echo $action->time.' '.$action->log.'</br>';
}
}
} else {
?>
<form action="external_protectioncheck.php" method="post">
<table>
<tr>
<td><input type="text" name="serveraddress" value="11.111.11.111:27015" required="required" maxlength="22" /></td>
<td><input type="submit" value="Check"/></td>
</tr>
</table>
</form>
<?php
}
?>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,61 +0,0 @@
#!/bin/bash
# Author: Ulrich Block <ulrich.block@easy-wi.com>
#
# This file is part of Easy-WI.
#
# Easy-WI is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Easy-WI is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Easy-WI. If not, see <http://www.gnu.org/licenses/>.
#
# Diese Datei ist Teil von Easy-WI.
#
# Easy-WI ist Freie Software: Sie koennen es unter den Bedingungen
# der GNU General Public License, wie von der Free Software Foundation,
# Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren
# veroeffentlichten Version, weiterverbreiten und/oder modifizieren.
#
# Easy-WI wird in der Hoffnung, dass es nuetzlich sein wird, aber
# OHNE JEDE GEWAEHELEISTUNG, bereitgestellt; sogar ohne die implizite
# Gewährleistung der MARKTFAEHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
# Siehe die GNU General Public License fuer weitere Details.
#
# Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
# Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
#
# Zum installieren:
# chmod 755 /etc/init.d/password
# update-rc.d password defaults
#
# Zum enfernen:
# update-rc.d -f password remove
# rm /etc/init.d/password
# bei https --no-check-certificate als zusaetzlicher Paramter
if [[ "$1" == "start" ]]; then
#cd /home/easy-wi
#su easy-wi -c ./control
#rm control.*
sleep 60
STRING=`wget --no-check-certificate -q -O - https://wi.domain.de/get_password.php | sed 's/^\xef\xbb\xbf//g'`
PASSWORD=`echo $STRING | awk -F ':' '{print $1}'`
if ([[ "$PASSWORD" != "" ]] && [[ "$PASSWORD" != "old" ]]); then
/usr/sbin/usermod -p `perl -e 'print crypt("'$PASSWORD'","Sa")'` root
fi
#LICENCE=`echo $STRING | awk -F ':' '{print $2}'`
#if ([[ "$LICENCE" != "" ]] && [[ "$LICENCE" != "old" ]]); then
# echo "$LICENCE" > /path/to/licencefile
# chmod 000 /path/to/licencefile
# chown username:gruppe /path/to/licencefile
#fi
update-rc.d -f password remove
rm /etc/init.d/password
fi

View File

@ -1,92 +0,0 @@
#!/bin/bash
###########################################################
# #
# ========================================= #
# | DNW Despe Networks | #
# ========================================= #
# |>>>>>>>> MPaseco Startscript v2 >>>| #
# |>>>>>>>> http://www.despe.de >>>>>>>>>>| #
# |>>>>>>>> DO NOT EDIT, only if u know >>| #
# |>>>>>>>> what are you doing! >>>>>>>>>>| #
# ========================================= #
# more info: https://github.com/ManiaAseco/MPAseco #
###########################################################
#########################################################################
# DONT EDIT BELOW THIS LINE!!! Broken Server is the reason !!! #
#########################################################################
NAME="MPAseco"
PIDFILE="mpaseco.pid"
# Absolute path to this script, e.g. /home/user/bin/foo.sh
#SCRIPT=$(readlink -f $0)
# Absolute path this script is in, thus /home/user/bin
#SCRIPTPATH=$(dirname $SCRIPT)
#SCRIPTPATH=$(dirname "$(readlink -fn "$0")")
SCRIPTPATH=$PWD/servercontroller
cd $SCRIPTPATH
#########################################################################
# ONLY FOR DNW - SUPPORT !!! #
#########################################################################
function start {
echo "Starting $NAME ..."
if test -f $SCRIPTPATH/$PIDFILE;
then
echo "PID file exists, Restart?"
elif test $SCRIPTPATH/$PIDFILE;
then
echo "PID file not exists..."
#touch $PIDFILE
fi
php mpaseco.php SM </dev/null >mpaseco2.log 2>&1 & echo $! > $SCRIPTPATH/$PIDFILE
sleep 1
PID="`cat $SCRIPTPATH/$PIDFILE`"
echo "...$NAME started. ID $PID"
}
###################
function stop {
PID="`cat $SCRIPTPATH/$PIDFILE`"
kill $PID
echo "$NAME stopped. ID $PID"
rm -f $SCRIPTPATH/$PIDFILE
echo "$PIDFILE removed"
}
###################
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 2
start
;;
status)
if [ -f $SCRIPTPATH/$PIDFILE ]; then
PID="`cat $SCRIPTPATH/$PIDFILE`"
echo "$NAME is runing! ID $PID . Server offline? Restart?"
else
echo 'MPAseco has crashed or is stopped incorrect.'
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
;;
esac
exit 0

View File

@ -1,30 +0,0 @@
#!/bin/bash
###########################################################
# #
# ========================================= #
# | DNW Despe Networks | #
# ========================================= #
# |>>>>>>>> ManiaPlanet Startscript v3 >>>| #
# |>>>>>>>> http://www.despe.de >>>>>>>>>>| #
# |>>>>>>>> DO NOT EDIT, only if u know >>| #
# |>>>>>>>> what are you doing! >>>>>>>>>>| #
# ========================================= #
# #
###########################################################
#########################################################################
# DONT EDIT BELOW THIS LINE!!! Broken Server is the reason !!! #
#########################################################################
# Start ManiaPlanet-Server for TrackMania or ShootMania and start a ServerController
if [ "$5" = "/mpaseco" ]
then
./MPAseco.sh restart & ./ManiaPlanetServer $1 $2 $3 $4 $6 $7
elif [ "$5" != "/mpaseco" ]
then
./ManiaPlanetServer $1 $2 $3 $4 $5 $6
fi

View File

@ -1,8 +0,0 @@
#!/bin/sh
# Modified by: Ulrich Block <ulrich.block@easy-wi.com>
# We need the $@ to be able to send commands to the server binary
cd "$(dirname "$0")"
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:./ ./starbound_server $@

View File

@ -1,30 +0,0 @@
#!/bin/bash
###########################################################
# #
# ========================================= #
# | DNW Despe Networks | #
# ========================================= #
# |>>>>>>>> ManiaPlanet Startscript v3 >>>| #
# |>>>>>>>> http://www.despe.de >>>>>>>>>>| #
# |>>>>>>>> DO NOT EDIT, only if u know >>| #
# |>>>>>>>> what are you doing! >>>>>>>>>>| #
# ========================================= #
# #
###########################################################
#########################################################################
# DONT EDIT BELOW THIS LINE!!! Broken Server is the reason !!! #
#########################################################################
# Start ManiaPlanet-Server for TrackMania or ShootMania and start a ServerController
if [ "$5" = "/xaseco" ]
then
./XAseco2.sh restart & ./ManiaPlanetServer $1 $2 $3 $4 $6 $7
elif [ "$5" != "/xaseco" ]
then
./ManiaPlanetServer $1 $2 $3 $4 $5 $6
fi

View File

@ -1,92 +0,0 @@
#!/bin/bash
###########################################################
# #
# ========================================= #
# | DNW Despe Networks | #
# ========================================= #
# |>>>>>>>> XAseco Startscript v3 >>>| #
# |>>>>>>>> http://www.despe.de >>>>>>>>>>| #
# |>>>>>>>> DO NOT EDIT, only if u know >>| #
# |>>>>>>>> what are you doing! >>>>>>>>>>| #
# ========================================= #
# more info: http://www.xaseco.org/ #
###########################################################
#########################################################################
# DONT EDIT BELOW THIS LINE!!! Broken Server is the reason !!! #
#########################################################################
NAME="XAseco"
PIDFILE="xaseco2.pid"
# Absolute path to this script, e.g. /home/user/bin/foo.sh
#SCRIPT=$(readlink -f $0)
# Absolute path this script is in, thus /home/user/bin
#SCRIPTPATH=$(dirname $SCRIPT)
#SCRIPTPATH=$(dirname "$(readlink -fn "$0")")
SCRIPTPATH=$PWD/servercontroller
cd $SCRIPTPATH
#########################################################################
# ONLY FOR DNW - SUPPORT !!! #
#########################################################################
function start {
echo "Starting $NAME ..."
if test -f $SCRIPTPATH/$PIDFILE;
then
echo "PID file exists, Restart?"
elif test $SCRIPTPATH/$PIDFILE;
then
echo "PID file not exists..."
#touch $PIDFILE
fi
php $SCRIPTPATH/xaseco2.php TM2C </dev/null >xaseco2.log 2>&1 & echo $! > $SCRIPTPATH/$PIDFILE
sleep 1
PID="`cat $SCRIPTPATH/$PIDFILE`"
echo "...$NAME started. ID $PID"
}
###################
function stop {
PID="`cat $SCRIPTPATH/$PIDFILE`"
kill $PID
echo "$NAME stopped. ID $PID"
rm -f $SCRIPTPATH/$PIDFILE
echo "$PIDFILE removed"
}
###################
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 2
start
;;
status)
if [ -f $SCRIPTPATH/$PIDFILE ]; then
PID="`cat $SCRIPTPATH/$PIDFILE`"
echo "$NAME is runing! ID $PID . Server offline? Restart?"
else
echo 'MPAseco has crashed or is stopped incorrect.'
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
;;
esac
exit 0

View File

@ -1,242 +0,0 @@
#!/bin/bash
# Author: Ulrich Block <ulrich.block@easy-wi.com>
#
# This file is part of Easy-WI.
#
# Easy-WI is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Easy-WI is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Easy-WI. If not, see <http://www.gnu.org/licenses/>.
#
# Diese Datei ist Teil von Easy-WI.
#
# Easy-WI ist Freie Software: Sie koennen es unter den Bedingungen
# der GNU General Public License, wie von der Free Software Foundation,
# Version 3 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren
# veroeffentlichten Version, weiterverbreiten und/oder modifizieren.
#
# Easy-WI wird in der Hoffnung, dass es nuetzlich sein wird, aber
# OHNE JEDE GEWAEHELEISTUNG, bereitgestellt; sogar ohne die implizite
# Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK.
# Siehe die GNU General Public License fuer weitere Details.
#
# Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
# Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
#
############################################
# Moegliche Cronjob Konfiguration
# 25 1 * * * cd ~/ && ./updates.sh mta
# 25 1 * * * cd ~/ && ./updates.sh mms
# 25 1 * * * cd ~/ && ./updates.sh sm
# 15 */1 * * * cd ~/ && ./updates.sh mms_snapshot
# 15 */1 * * * cd ~/ && ./updates.sh mms_dev
# 15 */1 * * * cd ~/ && ./updates.sh sm_snapshot
# 15 */1 * * * cd ~/ && ./updates.sh sm_dev
function greenMessage {
echo -e "\\033[32;1m${@}\033[0m"
}
function cyanMessage {
echo -e "\\033[36;1m${@}\033[0m"
}
function checkCreateVersionFile {
if [ ! -f "$HOME/versions/$1" ]; then
touch "$HOME/versions/$1"
fi
}
function checkCreateFolder {
if [ ! -d "$1" -a "$1" != "" ]; then
mkdir -p "$1"
fi
}
function removeFile {
if [ -f "$1" ]; then
rm -f "$1"
fi
}
function downloadExtractFile {
checkCreateFolder "$HOME/$4/$1/"
cd "$HOME/$4/$1/"
removeFile "$2"
wget "$3"
if [ -f "$2" ]; then
if [[ `echo $2 | egrep -o 'samp[[:digit:]]{1,}svr.+'` ]]; then
tar xfv "$2" --strip-components=1
else
tar xfv "$2"
fi
rm -f "$2"
moveFilesFolders "$2" "$4" "$1"
find -type f ! -perm -750 -exec chmod 640 {} \;
find -type d -exec chmod 750 {} \;
fi
}
function moveFilesFolders {
FOLDER=`echo $1 | sed -r 's/.tar.gz//g'`
if [ "$FOLDER" != "" -a "" != "$2" -a "$3" != "" -a -d "$HOME/$2/$3/$FOLDER" ]; then
cd "$HOME/$2/$3/"
find "$FOLDER/" -mindepth 1 -type d | while read DIR; do
NEW_FODLER=${DIR/$FOLDER\//}
if [ ! -d "$HOME/$2/$3/$NEW_FODLER" ]; then
mkdir -p "$HOME/$2/$3/$NEW_FODLER"
fi
done
find "$FOLDER/" -type f | while read FILE; do
MOVE_TO=${FILE/$FOLDER\//.\/}
if [ "$MOVE_TO" != "" ]; then
mv "$FILE" "$MOVE_TO"
fi
done
rm -rf "$FOLDER"
fi
}
function update {
checkCreateVersionFile "$1"
FILE_NAME=`echo $2 | egrep -o '((sourcemod|mmsource|multitheftauto_linux|baseconfig)-[[:digit:]]|samp[[:digit:]]{1,}svr.+).*$' | tail -1`
LOCAL_VERSION=`cat $HOME/versions/$1 | tail -1`
CURRENT_VERSION=`echo $2 | egrep -o '((mmsource|sourcemod|multitheftauto_linux|baseconfig)-[0-9a-z.-]{1,}[0-9]|samp[[:digit:]]{1,}svr.+)' | tail -1`
if ([ "$CURRENT_VERSION" != "$LOCAL_VERSION" -o "$LOCAL_VERSION" == "" ] && [ "$CURRENT_VERSION" != "" ]); then
greenMessage "Updating $1 from $LOCAL_VERSION to $CURRENT_VERSION. Name of file is $FILE_NAME"
downloadExtractFile "$3" "$FILE_NAME" "$2" "$4"
echo "$CURRENT_VERSION" > "$HOME/versions/$1"
elif [ "$CURRENT_VERSION" == "" ]; then
cyanMessage "Could not detect current version for ${1}. Local version is $LOCAL_VERSION."
else
cyanMessage "${1} already up to date. Local version is $LOCAL_VERSION. Most recent version is $CURRENT_VERSION"
fi
}
function updatesAddonSnapshots {
if [ "$3" == "" ]; then
cyanMessage "Searching updates for $1 and revision $2"
else
cyanMessage "Searching snapshot updates for $1 ($3) and revision $2"
fi
if [ "$1" == "sourcemod" ]; then
DOWNLOAD_URL=`lynx -dump "http://www.sourcemod.net/smdrop/$2/" | egrep -o "http:.*sourcemod-.*-linux.*" | tail -2 | head -n 1`
else
DOWNLOAD_URL=`lynx -dump "http://www.metamodsource.net/mmsdrop/$2/" | egrep -o "http:.*mmsource-.*-git.*-linux.*" | tail -1`
fi
if [ "$3" == "" ]; then
update "${1}.txt" "$DOWNLOAD_URL" "${1}" "masteraddons"
else
update "${1}_snapshot_${3}.txt" "$DOWNLOAD_URL" "${1}-${3}" "masteraddons"
fi
}
function fileUpdate {
checkCreateVersionFile "$1"
checkCreateFolder "$HOME/$4/$2"
cd "$HOME/$4/$2"
wget "$2"
NO_HTTP=${2:6}
FILE_NAME=${NO_HTTP##/*/}
if [ "$FILE_NAME" != "" -a -f "$FILE_NAME" ]; then
LOCAL_VERSION=`cat $HOME/versions/$1 | tail -1`
CURRENT_VERSION=`stat -c "%Y" $FILE_NAME`
if ([ "$CURRENT_VERSION" != "$LOCAL_VERSION" -o "$LOCAL_VERSION" == "" ] && [ "$CURRENT_VERSION" != "" ]); then
greenMessage "Updating $3 from $LOCAL_VERSION to $CURRENT_VERSION. Name of file is $FILE_NAME"
unzip "$FILE_NAME"
echo "$CURRENT_VERSION" > "$HOME/versions/$1"
else
cyanMessage "$3 already up to date. Local version is $LOCAL_VERSION. Most recent version is $CURRENT_VERSION"
fi
rm -f "$FILE_NAME"
fi
}
function updateMTA {
cyanMessage "Searching update for MTA San Andreas"
DOWNLOAD_URL=`lynx -dump http://linux.mtasa.com/ | egrep -o "http:.*multitheftauto_linux-(.*).tar.gz" | tail -1`
update server_mta.txt "$DOWNLOAD_URL" "mtasa" "masterserver"
DOWNLOAD_URL=`lynx -dump http://linux.mtasa.com/ | egrep -o "http:.*baseconfig-(.*).tar.gz" | tail -1`
update server_mta_baseconfig.txt "$DOWNLOAD_URL" "mtasa" "masterserver"
if [ "`date +'%H'`" == "00" ]; then
fileUpdate server_mta_resources.txt "http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip" "mtasa" "masterserver"
fi
}
function updateSAMP {
cyanMessage "Searching update for San Andreas Multi Player"
DOWNLOAD_URL=`lynx -dump "http://files.sa-mp.com/" | egrep -o "http:.*samp.*tar\.gz" | tail -n 1`
update server_samp.txt "$DOWNLOAD_URL" "samp" "masterserver"
}
checkCreateFolder $HOME/versions
case $1 in
"mta") updateMTA;;
"samp") updateSAMP;;
"mms") updatesAddonSnapshots "metamod" "1.10" "";;
"mms_snapshot") updatesAddonSnapshots "metamod" "1.10" "dev";;
"mms_dev") updatesAddonSnapshots "metamod" "1.11" "dev";;
"sm") updatesAddonSnapshots "sourcemod" "1.7" "";;
"sm_snapshot") updatesAddonSnapshots "sourcemod" "1.7" "dev";;
"sm_dev") updatesAddonSnapshots "sourcemod" "1.8" "dev";;
*) cyanMessage "Usage: ${0} mta|mms|mms_snapshot|mms_dev|sm|sm_snapshot|sm_dev";;
esac
exit 0