Jump to content

script [ISL] - Isigar's Server logger


Albus Brambůrek

Recommended Posts

Úvod

Vítám vás u představení mého nového filterscriptu, tentokrát se jedná o server logger. Server logger je script, který odesílá data o serveru na web a ten to následně zpracuje. Vypadá to následovně, hráč se připojí na server, a script automaticky odešle jeho jméno s typem události na web a ten to zpracuje a odešle do mysql ze které se to potom vše bere a vytváří se log.

 

 

Návod

 

Stáhneme soubory - http://pawno.cz/files/file/199-isl-isigars-server-logger/

Rozbalíme a dáme na plochu

 

Otevřeme si "isl.pwn" v pawn editoru IMG - http://prntscr.com/2ead6h

  • Nastavíme cestu k webu a hash slovo
  • Vycompilujeme a dáme na web.

 

Otevřeme si "samp.php" - http://prntscr.com/2eadha

  • Nastavíme mysql databázy + hash slovo (stejné jako u sl.pwn)
  • Uložíme a nahrajeme na web do základní složky

 

V administraci mysql (phpmyadmin) si naimportujeme soubor "tabulka.sql" - http://prntscr.com/2eadpl

 

Pro vypsání vložíme <?php render_log(); ?> (Můžete najít v priklad.php)

UPOZORNĚNÍ: Pokud tento log není na stránce samp.php a chcete ho jinde nezapomeňte funkci vložit přímo na stránku, kde se má zobrazovat

 

Co potřebuje?

 

MYSQL databázy,

filterscript aktivovaný a nastavený na serveru,

Na webu nastaven "příjmač" dat.

 

 

Obrázky

http://prntscr.com/2ea6cx

Link to comment
Share on other sites

Nějak mi to nefakčí, taková podotázka, kde má sehnat ten HASH?


Může ten config vypadat tako?

/*
 [ISL] Isigar's Server logger
Vytvořil: Stanislav Isigar Opletal
Web: http://isigar.tk/
Skype: beaconcraft.cz
Email: [email protected]
*/
#include <a_samp>
#include <a_http>

#define SEND_TYPE_CONNECT 		1
#define SEND_TYPE_DISCONNECT 	2
#define SEND_TYPE_SPAWN 		3
#define SEND_TYPE_DEATH 		4
#define HASH 515165116

forward WebResponse(index, response_code, data[]);

stock GetName(playerid)
{
	new name[MAX_PLAYER_NAME];
	GetPlayerName(playerid,name,sizeof(name));
	return name;
}

stock SendMessage(playerid,type)
{
	new data[200];
	format(data,sizeof(data),"www.samp.teracraft.eu/samp.php?name=%s&type=%i",GetName(playerid),type,HASH);
	HTTP(playerid,HTTP_GET,data," ","WebResponse");
}

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" [ISL] Loaded.");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}


public OnPlayerConnect(playerid)
{
    SendMessage(playerid,1);
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    SendMessage(playerid,2);
	return 1;
}

public OnPlayerSpawn(playerid)
{
    SendMessage(playerid,3);
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    SendMessage(playerid,4);
	return 1;
}

public WebResponse(index, response_code, data[])
{
    if(response_code == 200)
    {
		//Povedlo se můžete si doplnit co checete
    }
    else
    {
        print("Nastala chyba!");
    }
}


A web takto ?

<?php
/* Mysql server setup */
$server = 'innodb.endora.cz';
$username = 'terasampsql';
$password = ' heslo';
$db = 'terasampsql';
/* Security code */
$hash = "515165116";

$connect = mysql_connect($server,$username,$password);
if (mysqli_connect_errno())
{
	echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else
{
	mysql_select_db($db);
}

if(isset($_GET["type"]) AND isset($_GET["name"]) AND isset($_GET["hash"]))
{
	if($_GET["hash"] == $hash)
	{
		$datum = StrFTime("%d.%m.%Y %H:%M", Time());
		$sql = "INSERT INTO server_log (username,type,date) VALUES (".$_GET["name"].",".$_GET["type"].",".$datum.")";
		$result = mysql_query($sql);
		mysql_close($connect);
	}
}

function render_serverlog()
{
	$res = "Začátek logu<br>";
	$server = 'localhost';
	$username = 'root';
	$password = '';
	$db = 'gamerules';

	$connect = mysql_connect($server,$username,$password);
	if (mysqli_connect_errno())
	{
		echo "Failed to connect to MySQL: " . mysqli_connect_error();
	}
	else
	{
		mysql_select_db($db);
	}
	$sql = "SELECT * FROM server_log";
	$result = mysql_query($sql);

	while($row = mysql_fetch_array($result))
	{
		if($row["type"] == 1)//Connect
		{
			$res .= "".$row["date"].": Hráč ".$row["username"]." se připojil na server!<br>";
		}
		if($row["type"] == 2)//Disconnect
		{
			$res .= "".$row["date"].": Hráč ".$row["username"]." se odpojil ze server!<br>";
		}
		if($row["type"] == 3)//Spawn
		{
			$res .= "".$row["date"].": Hráč ".$row["username"]." se spawnul!<br>";
		}
		if($row["type"] == 4)//Death
		{
			$res .= "".$row["date"].": Hráč ".$row["username"]." zemřel!<br>";
		}
	}
	echo($res);
	mysql_close($connect);
}
?>
Link to comment
Share on other sites

HASH není v pravém smyslu hash je to jen ochrana proti zavolání funkce, která ukládá do databáze z linku třeba takto www.tvujweb.eu/samp.php?type=1&name=bot kdybych na tuto adresu šel tak to uloží do databáze další log ale tím že tam máš unikatní hash tak to nic nezmůže

Link to comment
Share on other sites

Tak nic koukám nastala chybička počkej hned to upravím


Otázka 1: Ak by som použil nejaký port listener zistil by som heslo a adresu serveru?
Otázka 2: Kolko trvá zapísanie údajov jedného hráča?

 

1. K čemu ? XD Co to meleš ?

2. Míň jak 1 sekundu jelikož server má menší zátěž než web, server jen odešle jednorázově data a web si to zpracuje

Link to comment
Share on other sites

1. Prečítaj si prosím ešte raz moju prvú otázku.
2. Že menej než sekundu :lol:. Sprav debugger a spočítaj to na ms. Pol sekundy na hráča je stále vela x krát počas hrania.

Link to comment
Share on other sites

1. Prečítaj si prosím ešte raz moju prvú otázku.

2. Že menej než sekundu :lol:. Sprav debugger a spočítaj to na ms. Pol sekundy na hráča je stále vela x krát počas hrania.

Hele ok krom toho tím jsi si chtěl dokázat co ? že si velký kluk ? XD

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...