-
Notifications
You must be signed in to change notification settings - Fork 14
/
login.php
143 lines (121 loc) · 4.05 KB
/
login.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?php
/**
* Created by Notepad++.
* User: Malucooo - Erick Nunes
* Remaked of login.php by JLCVP and parts of login.php by Monteiro. Thanks for both!
* Date: 18/09/17
* Time: 03:01
*/
require 'config/config.php';
// comment to show E_NOTICE [undefinied variable etc.], comment if you want make script and see all errors
error_reporting(E_ALL ^ E_STRICT ^ E_NOTICE);
// true = show sent queries and SQL queries status/status code/error message
define('DEBUG_DATABASE', false);
define('INITIALIZED', true);
if (!defined('ONLY_PAGE'))
define('ONLY_PAGE', true);
// check if site is disabled/requires installation
include_once('./system/load.loadCheck.php');
// fix user data, load config, enable class auto loader
include_once('./system/load.init.php');
// DATABASE
include_once('./system/load.database.php');
if (DEBUG_DATABASE)
Website::getDBHandle()->setPrintQueries(true);
// DATABASE END
/*error example:
{
"errorCode":3,
"errorMessage":"Account name or password is not correct."
}*/
# Declare variables with array structure
$characters = array();
$playerData = array();
$data = array();
$isCasting = false;
# error function
function sendError($msg){
$ret = array();
$ret["errorCode"] = 3;
$ret["errorMessage"] = $msg;
die(json_encode($ret));
}
# getting infos
$request = file_get_contents('php://input');
$result = json_decode($request, true);
# account infos
$accountName = $result["accountname"];
$password = $result["password"];
# game port
$port = 7172;
# check if player wanna see cast list
if (strtolower($accountName) == "cast")
$isCasting = true;
if ($isCasting) {
$casts = $SQL->query("SELECT `player_id` FROM `live_casts`")->fetchAll();
if (count($casts[0]) == 0)
sendError("There is no live casts right now!");
foreach($casts as $cast) {
$character = new Player();
$character->load($cast['player_id']);
if ($character->isLoaded()) {
$char = array("worldid" => 0, "name" => $character->getName(), "ismale" => (($character->getSex() == 1) ? true : false), "tutorial" => false);
$characters[] = $char;
}
}
$port = 7173;
$lastLogin = 0;
$premiumAccount = true;
$timePremium = 0;
} else {
$account = new Account();
$account->find($accountName);
if (!$account->isLoaded())
sendError("Failed to get account. Try again!");
if ($account->getPassword() != Website::encryptPassword($password))
sendError("The password for this account is wrong. Try again!");
foreach($account->getPlayersList() as $character) {
$char = array("worldid" => 0, "name" => $character->getName(), "ismale" => (($character->getSex() == 1) ? true : false), "tutorial" => false);
$characters[] = $char;
}
$lastLogin = $account->getLastLogin();
$premiumAccount = ($account->isPremium()) ? true : false;
$timePremium = time() + ($account->getPremDays() * 86400);
}
$session = array(
"fpstracking" => false,
"isreturner" => true,
"returnernotification" => false,
"showrewardnews" => false,
"sessionkey" => $accountName . "\n" . $password,
"lastlogintime" => $lastLogin,
"ispremium" => $premiumAccount,
"premiumuntil" => $timePremium,
"status" => "active"
);
$world = array(
"id" => 0,
"name" => $config['server']['serverName'],
"externaladdress" => $config['server']['ip'],
"externalport" => $port,
"previewstate" => 0,
"location" => "BRA",
"anticheatprotection" => false
);
//Survey by: Cjaker
$survey = array(
"id" => rand(0, 999999),
"invitationtext" => "Querido tibiano, obrigado por usar nosso servidor, a base mais atualizada do Tibia Global.",
"invitationtoken" => "1751f1beddf001e1d36dee78ace974",
"endtimestamp" => 1510614000
);
// https://limesurvey.cipsoft.com/index.php/survey/index/sid/527875/lang-en?token=1751f1beddf001e1d36dee78ace974
// token=invitationtoken
// o endtimestamp acima é o tempo convertido em unix timestamp, onde o mesmo é o prazo que irá acabar o survey!
$worlds = array($world);
$data["session"] = $session;
$playerData["worlds"] = $worlds;
$playerData["characters"] = $characters;
$data["playdata"] = $playerData;
$data["survey"] = $survey;
echo json_encode($data);