2013-08-28 22:47:04 +02:00
< ? php
2014-01-26 13:54:12 +01:00
2013-08-28 22:47:04 +02:00
/**
* File : 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 ( $page_include )) {
2013-09-28 13:12:29 +02:00
$default_language = $user_language ;
$reseller_id = 0 ;
2014-01-26 13:54:12 +01:00
$protection_link = ( $page_data -> seo == 'N' ) ? 'protectioncheck.php' : $page_data -> pageurl . '/' . $user_language . '/' . $page_category . '/' ;
2013-08-28 22:47:04 +02:00
} else {
2014-01-26 13:54:12 +01:00
2013-09-24 21:20:27 +02:00
define ( 'EASYWIDIR' , dirname ( __FILE__ ));
2014-01-26 13:54:12 +01:00
2013-10-10 08:06:37 +02:00
if ( is_dir ( EASYWIDIR . '/install' )) {
2013-09-28 13:12:29 +02:00
die ( 'Please remove the "install" folder' );
}
2014-01-26 13:54:12 +01:00
2013-09-28 13:12:29 +02:00
$logininclude = true ;
2014-01-26 13:54:12 +01:00
2013-09-24 21:20:27 +02:00
include ( EASYWIDIR . '/stuff/vorlage.php' );
include ( EASYWIDIR . '/stuff/class_validator.php' );
include ( EASYWIDIR . '/stuff/functions.php' );
include ( EASYWIDIR . '/stuff/settings.php' );
2014-01-26 13:54:12 +01:00
2013-09-28 13:12:29 +02:00
if ( ! isset ( $user_language )) {
$user_language = $rSA [ 'language' ];
2013-08-28 22:47:04 +02:00
}
}
2014-01-26 13:54:12 +01:00
2013-10-03 12:49:13 +02:00
if ( $ui -> escaped ( 'email' , 'post' ) != '' ) {
2013-08-28 22:47:04 +02:00
$fullday = date ( 'Y-m-d H:i:s' , strtotime ( " +1 day " ));
2013-09-28 13:12:29 +02:00
$query = $sql -> prepare ( " SELECT `id` FROM `badips` WHERE `badip`=? LIMIT 1 " );
2013-08-28 22:47:04 +02:00
$query -> execute ( array ( $loguserip ));
if ( $query -> rowCount () == 0 ) {
2013-09-28 13:12:29 +02:00
$query = $sql -> prepare ( " INSERT INTO `badips` (`bantime`,`failcount`,`reason`,`badip`) VALUES (?,'1','bot',?) " );
2013-08-28 22:47:04 +02:00
} else {
2013-09-28 13:12:29 +02:00
$query = $sql -> prepare ( " UPDATE `badips` SET `bantime`=?,`failcount`=`failcount`+1,`reason`='bot' WHERE `badip`=? LIMIT 1 " );
2013-08-28 22:47:04 +02:00
}
2013-09-28 13:12:29 +02:00
$query -> execute ( array ( $fullday , $loguserip ));
2013-08-28 22:47:04 +02:00
die ( 'IP banned' );
}
2014-01-26 13:54:12 +01:00
2013-09-28 13:12:29 +02:00
$sprache = getlanguagefile ( 'gserver' , $user_language , 0 );
$ipvalue = '111.111.111.111:27015' ;
2014-01-26 13:54:12 +01:00
2013-09-28 13:12:29 +02:00
if ( $ui -> ipport ( 'serveraddress' , 'post' ) or ( $ui -> ip ( 'ip' , 'get' ) and $ui -> port ( 'po' , 'get' ))) {
if ( $ui -> ipport ( 'serveraddress' , 'post' )) {
$serveraddress = $ui -> ipport ( 'serveraddress' , 'post' );
$adresse_awk = explode ( ':' , $serveraddress );
$ip = $adresse_awk [ 0 ];
$port = $adresse_awk [ 1 ];
} else if ( $ui -> ip ( 'ip' , 'get' ) and $ui -> port ( 'po' , 'get' )) {
$ip = $ui -> ip ( 'ip' , 'get' );
$port = $ui -> port ( 'po' , 'get' );
$serveraddress = $ip . ':' . $port ;
2013-08-28 22:47:04 +02:00
}
2013-09-28 13:12:29 +02:00
if ( isset ( $serveraddress )) {
$ipvalue = $serveraddress ;
}
2013-10-13 13:11:38 +02:00
if ( isset ( $ip ) and isset ( $port )) {
2013-09-28 13:12:29 +02:00
$query = $sql -> prepare ( " SELECT g.`protected`,g.`psince`,g.`queryName`,g.`queryNumplayers`,g.`queryMaxplayers`,g.`queryMap`,u.`cname`,t.`description` FROM `gsswitch` g INNER JOIN `userdata` u ON g.`userid`=u.`id` INNER JOIN `serverlist` s ON g.`serverid`=s.`id` INNER JOIN `servertypes` t ON s.`servertype`=t.`id` WHERE g.`serverip`=? AND g.`port`=? LIMIT 1 " );
$query -> execute ( array ( $ip , $port ));
$logs = array ();
$xmllogs = array ();
2013-08-28 22:47:04 +02:00
foreach ( $query -> fetchAll ( PDO :: FETCH_ASSOC ) as $row ) {
2013-09-28 13:12:29 +02:00
$protected = $row [ 'protected' ];
$customer = $row [ 'cname' ];
$psince = $row [ 'psince' ];
$name = $row [ 'queryName' ];
$numplayers = $row [ 'queryNumplayers' ];
$maxplayers = $row [ 'queryMaxplayers' ];
$map = $row [ 'queryMap' ];
$type = $row [ 'description' ];
$query = $sql -> prepare ( " SELECT `useraction`,`logdate` FROM `userlog` WHERE `logdate`>? AND `username`=? AND `useraction` LIKE ? " );
$query -> execute ( array ( $psince , $customer , '%' . $serveraddress . '%' ));
2013-08-28 22:47:04 +02:00
foreach ( $query -> fetchAll ( PDO :: FETCH_ASSOC ) as $row ) {
2013-09-28 13:12:29 +02:00
$logentry = explode ( " " , $row [ 'useraction' ]);
2013-10-03 12:49:13 +02:00
if (( $logentry [ 1 ] == '%gserver%' or $logentry [ 1 ] == '%addon%' ) and ( $logentry [ 0 ] != '%resync%' and $logentry [ 0 ] != '%mod%' )) {
2013-09-28 13:12:29 +02:00
if ( $default_language == 'de' ) {
2013-08-28 22:47:04 +02:00
$time = explode ( ' ' , $row [ 'logdate' ]);
2013-09-08 17:21:34 +02:00
$time2 = explode ( '-' , $time [ 0 ]);
2013-10-13 11:42:31 +02:00
$time3 = $time2 [ 2 ] . '.' . $time2 [ 1 ] . '.' . $time2 [ 0 ] . ' ' . $time [ 1 ];
2013-08-28 22:47:04 +02:00
} else {
2013-10-13 11:42:31 +02:00
$time3 = $row [ 'logdate' ];
2013-08-28 22:47:04 +02:00
}
2013-09-28 13:12:29 +02:00
$placeholders1 = array ( '%start%' , '%stop%' , ' ' . $serveraddress , ' %gserver%' );
$placeholders2 = array ( '%start%' , '%stop%' , '%addon%' , '%del%' , '%add%' , ' %ok%' , ' ' . $serveraddress , ' %gserver%' );
$replace1 = array ( '<img src="' . $page_url . '/images/16_restart.png" alt="start" />' , '<img src="' . $page_url . '/images/16_stop.png" alt="stop" />' , '' , '' );
$replace2 = array ( '(Re)Start' , 'Stop' , 'Addon' , 'Delete' , 'Add' , '' , '' , '' );
$replacedpics = str_replace ( $placeholders1 , $replace1 , $row [ 'useraction' ]);
$replacedwords = str_replace ( $placeholders2 , $replace2 , $row [ 'useraction' ]);
2013-08-28 22:47:04 +02:00
if ( ! empty ( $replacedpics )) {
2013-09-28 13:12:29 +02:00
if ( $logentry [ 1 ] == '%gserver%' ) {
$logs [] = $replacedpics . ': ' . $time3 ;
2013-08-28 22:47:04 +02:00
}
2013-09-28 13:12:29 +02:00
$xmllogs [ $time3 ] = $replacedwords ;
2013-08-28 22:47:04 +02:00
}
}
}
2013-09-28 13:12:29 +02:00
$since = ( $default_language == 'de' ) ? date ( 'd.m.Y H:i:s' , strtotime ( $psince )) : $psince ;
2013-08-28 22:47:04 +02:00
}
}
}
if ( ! isset ( $protected )) {
2013-09-28 13:12:29 +02:00
$imgName = '64_protected_unknown' ;
$imgAlt = 'unknown' ;
} else if ( $protected == 'N' ) {
$imgName = '64_unprotected' ;
$imgAlt = 'unprotected' ;
} else if ( $protected == 'Y' ) {
$imgName = '64_protected' ;
$imgAlt = 'protected' ;
2013-08-28 22:47:04 +02:00
}
2013-09-28 13:12:29 +02:00
if ( $ui -> ipport ( 'serveraddress' , 'post' )) {
2013-08-28 22:47:04 +02:00
if ( isset ( $page_include )) {
2013-09-28 13:12:29 +02:00
$template_file = 'page_protectioncheck.tpl' ;
2013-08-28 22:47:04 +02:00
} else {
2013-09-28 13:12:29 +02:00
if ( file_exists ( EASYWIDIR . '/template/' . $template_to_use . '/protectioncheck.tpl' )) {
include ( EASYWIDIR . '/template/' . $template_to_use . '/protectioncheck.tpl' );
2013-09-24 21:20:27 +02:00
} else if ( file_exists ( EASYWIDIR . '/template/default/protectioncheck.tpl' )) {
include ( EASYWIDIR . '/template/default/protectioncheck.tpl' );
2013-08-28 22:47:04 +02:00
} else {
2013-09-24 21:20:27 +02:00
include ( EASYWIDIR . '/template/protectioncheck.tpl' );
2013-08-28 22:47:04 +02:00
}
}
2013-09-28 13:12:29 +02:00
} else if ( ! isset ( $page_include ) and $ui -> ip ( 'ip' , 'get' ) and $ui -> port ( 'po' , 'get' )) {
if ( $ui -> username ( 'gamestring' , 50 , 'get' ) == 'xml' ) {
2013-08-28 22:47:04 +02:00
if ( ! isset ( $protected )) {
2013-09-28 13:12:29 +02:00
echo 'unknown' ;
} else if ( $protected == 'N' ) {
$pstatus = 'no' ;
2013-08-28 22:47:04 +02:00
$xml =<<< XML
< ? xml version = " 1.0 " encoding = " UTF-8 " ?>
<! DOCTYPE status >
< status >
< hostname > $name </ hostname >
< gametype > $type </ gametype >
< map > $map </ map >
< numplayers > $numplayers </ numplayers >
< maxplayers > $maxplayers </ maxplayers >
< protection > $pstatus </ protection >
< psince > 0000 : 00 : 00 </ psince >
</ status >
XML ;
header ( " Content-type: text/xml; charset=UTF-8 " );
echo $xml ;
2013-09-28 13:12:29 +02:00
} else if ( $protected == 'Y' ) {
2013-08-28 22:47:04 +02:00
$pstatus = " yes " ;
$xml = ' < ? xml version = " 1.0 " encoding = " UTF-8 " standalone = " yes " ?>
<! DOCTYPE status >
< status >
< hostname > '.$name.' </ hostname >
< gametype > '.$type.' </ gametype >
< map > '.$map.' </ map >
< numplayers > '.$numplayers.' </ numplayers >
< maxplayers > '.$maxplayers.' </ maxplayers >
< protection > '.$pstatus.' </ protection >
< psince > '.$since.' </ psince >
< actions > ' ;
foreach ( $xmllogs as $time => $logentry ) {
2013-10-13 11:42:31 +02:00
$xml .= '
2013-08-28 22:47:04 +02:00
< action >
< time > '.$time.' </ time >
< log > '.$logentry.' </ log >
</ action > ' ;
}
2013-10-13 11:42:31 +02:00
$xml .= '
2013-08-28 22:47:04 +02:00
</ actions >
</ status > ' ;
header ( " Content-type: text/xml; charset=UTF-8 " );
echo $xml ;
}
} else {
if ( ! isset ( $protected )) {
2013-09-28 13:12:29 +02:00
echo 'unknown' ;
} else if ( $protected == 'N' ) {
echo 'no' ;
} else if ( $protected == 'Y' ) {
echo 'yes' ;
2013-08-28 22:47:04 +02:00
}
}
} else if ( isset ( $page_include )) {
2013-09-07 11:31:00 +02:00
// https://github.com/easy-wi/developer/issues/62
2013-09-28 13:12:29 +02:00
$langLinks = array ();
2013-09-07 11:31:00 +02:00
foreach ( $languages as $l ) {
2013-09-28 13:12:29 +02:00
$tempLanguage = getlanguagefile ( 'page' , $l , 0 );
2013-10-03 12:49:13 +02:00
$langLinks [ $l ] = ( $page_data -> seo == 'Y' ) ? szrp ( $tempLanguage -> $s ) : '?s=' . $s ;
2013-09-07 11:31:00 +02:00
}
$page_data -> langLinks ( $langLinks );
2013-09-28 13:12:29 +02:00
$template_file = 'page_protectioncheck.tpl' ;
2013-08-28 22:47:04 +02:00
} else {
2013-09-28 13:12:29 +02:00
if ( file_exists ( EASYWIDIR . '/template/' . $template_to_use . '/protectioncheck.tpl' )) {
include ( EASYWIDIR . '/template/' . $template_to_use . '/protectioncheck.tpl' );
2013-09-24 21:20:27 +02:00
} else if ( file_exists ( EASYWIDIR . '/template/default/protectioncheck.tpl' )) {
include ( EASYWIDIR . '/template/default/protectioncheck.tpl' );
2013-08-28 22:47:04 +02:00
} else {
2013-09-24 21:20:27 +02:00
include ( EASYWIDIR . '/template/protectioncheck.tpl' );
2013-08-28 22:47:04 +02:00
}
}
if ( ! isset ( $page_include )) {
2013-10-13 11:42:31 +02:00
$sql = null ;
2013-08-28 22:47:04 +02:00
}