Compare commits

...
23 Commits
Author SHA1 Message Date
Lncvrt 8efad9cf1b Update CDN link 2026-09-24 10:08:36 -07:00
Lncvrt f2fc143c03 fix 3 2026-04-18 12:57:12 -07:00
Lncvrt cc1174f9c7 fix 2 2026-03-24 12:48:13 -07:00
Lncvrt 3088dc63ac fix 2026-03-24 12:44:42 -07:00
Lncvrt 4e02f110cd Revert "yep"
This reverts commit 2e392bdf87.
2026-03-24 12:43:41 -07:00
Lncvrt 2e392bdf87 yep 2026-03-13 12:59:54 -07:00
Lncvrt 9553bb9c61 fix leaderboards 2026-03-03 09:18:00 -07:00
Lncvrt 5ee2dcf2db Update to v2 manifest 2026-02-27 19:21:39 -07:00
Lncvrt d6ad9a01a0 Fix 2026-02-27 18:51:35 -07:00
Lncvrt e259567c62 Oops 2026-02-16 22:45:11 -07:00
Lncvrt 94051c6b55 Make berry dash launcher leaderboards work 2026-02-16 22:43:58 -07:00
Lncvrt 876b1bce08 Make Berry Dash Launcher work again (not supported still) 2026-02-16 22:07:45 -07:00
Lncvrt 65d860e6cb Fix readme 2026-02-16 13:21:47 -07:00
Lncvrt 6bd3adc8f8 26.1 beta 1 is out 2026-02-10 13:29:11 -07:00
Lncvrt 3cf62a6896 Add support for loading 26.1 or higher savefile 2026-01-31 15:27:34 -07:00
Lncvrt 739eadae51 Only allow state 1 2026-01-31 00:50:39 -07:00
Lncvrt 9f9a65a6be Fixes 2026-01-29 21:33:15 -07:00
Lncvrt baca4c55e0 Update readme 2026-01-29 21:24:54 -07:00
Lncvrt 9b06f966f1 Use new token location 2026-01-29 21:07:19 -07:00
Lncvrt e6c045e1e1 Fixes 2026-01-25 21:32:13 -07:00
Lncvrt 594e924ad4 Fix leaderboards 2026-01-19 17:47:17 -07:00
Lncvrt 8e6a9ef156 A lot of changes (that shouldn't, hopefully be breaking) 2026-01-02 20:56:24 -07:00
Lncvrt b2c28e229d Make deleteChatroomMessage.php work with new db method - Finished 2026-01-02 20:26:01 -07:00
34 changed files with 428 additions and 424 deletions

No files matched your search

+3 -9
View File
@@ -1,14 +1,8 @@
# Berry Dash Server # Berry Dash Server
> [!CAUTION] > [!CAUTION]
> This project has moved to the Lncvrt Games originization. > This project has been discarded and a new API is under the Lncvrt Games organization.
> >
> You can find the new server API [here](https://github.com/Lncvrt-Games/api). > You can find the new server API [here](https://git.lncvrt.xyz/Lncvrt-Games/api).
>
> NOTE: This is also the branch that is being modified so it can continue to work for 1.8.2 and lower.
>
> Find old branch [here](https://github.com/BerryDash/server/tree/main)
--- Legacy Server Source Code
This is the source code for Berry Dash.
+40 -47
View File
@@ -5,68 +5,61 @@ $conn1 = newConnection(1);
$request_username = $_POST['username']; $request_username = $_POST['username'];
$request_password = $_POST['password']; $request_password = $_POST['password'];
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT id, username, password, token FROM users WHERE username = ?");
$stmt->bind_param("s", $request_username); $stmt->bind_param("s", $request_username);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows > 0) { if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) { $row = $result->fetch_assoc();
if (password_verify($request_password, $row["password"])) { if (password_verify($request_password, $row['password'])) {
$login_ip = getIPAddress(); $login_ip = getIPAddress();
$login_time = time(); $login_time = time();
$uid = $row['id']; $uid = $row['id'];
$stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE id = ?"); $stmt = $conn1->prepare("SELECT legacy_high_score, save_data FROM userdata WHERE id = ? LIMIT 1");
$stmt2->bind_param("i", $uid); $stmt->bind_param("i", $uid);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) exitWithMessage("-1", false);
$row2 = $result2->fetch_assoc();
if ($result2->num_rows != 1) { $username = $row['username'];
echo '-1'; $highscore = $row2['legacy_high_score'];
exit; $token = $row['token'];
} $savedata = json_decode($row2['save_data'], true);
$icon = $savedata['bird']['icon'] ?? 1;
$overlay = $savedata['bird']['overlay'] ?? 0;
$user2 = $result2->fetch_assoc(); $stmt = $conn0->prepare("UPDATE users SET latest_ip = ? WHERE id = ?");
$stmt->bind_param("si", $login_ip, $uid);
$stmt->execute();
$stmt->close();
$username = $row['username']; if (
$highscore = $user2['legacy_high_score']; getClientVersion() == "1.2-beta2" ||
$token = $user2['token']; getClientVersion() == "1.2" ||
$savedata = json_decode($user2['save_data'], true); getClientVersion() == "1.21" ||
$icon = $savedata['bird']['icon'] ?? 1; getClientVersion() == "1.3-beta1"
$overlay = $savedata['bird']['overlay'] ?? 0; ) {
echo "$token:$uid:$highscore";
$stmt = $conn0->prepare("UPDATE users SET latest_ip = ? WHERE id = ?"); } else if (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") {
$stmt->bind_param("si", $login_ip, $uid); echo "$token:$uid:$highscore:$icon:$overlay";
$stmt->execute(); } else if (getClientVersion() == "1.4.0-beta1" || getClientVersion() == "1.4.0" || getClientVersion() == "1.4.1") {
echo "1:$token:$username:$uid:$highscore:$icon:$overlay";
if (
getClientVersion() == "1.2-beta2" ||
getClientVersion() == "1.2" ||
getClientVersion() == "1.21" ||
getClientVersion() == "1.3-beta1"
) {
echo "$token:$uid:$highscore";
} else if (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") {
echo "$token:$uid:$highscore:$icon:$overlay";
} else if (getClientVersion() == "1.4.0-beta1" || getClientVersion() == "1.4.0" || getClientVersion() == "1.4.1") {
echo "1:$token:$username:$uid:$highscore:$icon:$overlay";
}
} else {
$stmt->close();
$conn0->close();
$conn1->close();
exit("-2");
} }
} else {
$conn0->close();
$conn1->close();
exitWithMessage("-2", false);
} }
} else { } else {
$stmt->close();
$conn0->close(); $conn0->close();
$conn1->close(); $conn1->close();
exit("-2"); exitWithMessage("-2", false);
} }
$stmt->close();
$conn0->close(); $conn0->close();
$conn1->close(); $conn1->close();
+14 -15
View File
@@ -2,29 +2,28 @@
$conn0 = newConnection(0); $conn0 = newConnection(0);
$conn1 = newConnection(1); $conn1 = newConnection(1);
$request_uid = $_POST['userID'] ?? 0; $user_id = $_POST['userID'] ?? 0;
$request_session = $_POST['gameSession'] ?? ''; $token = $_POST['gameSession'] ?? '';
$request_score = $_POST['highScore'] ?? 0; $high_score = $_POST['highScore'] ?? 0;
$stmt = $conn0->prepare("SELECT * FROM users WHERE id = ?"); $stmt = $conn0->prepare("SELECT * FROM users WHERE id = ? AND token = ?");
$stmt->bind_param("s", $request_uid); $stmt->bind_param("ss", $user_id, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
if ($result->num_rows != 1) { if ($result->num_rows != 1) {
echo (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") ? "-2" : "-3"; echo (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") ? "-2" : "-3";
$conn0->close(); $conn0->close();
$conn1->close(); $conn1->close();
exit; exit;
} }
$stmt->close();
$user_id = $result->fetch_assoc()["id"];
$request_uid = $result->fetch_assoc()["id"]; $stmt = $conn1->prepare("SELECT * FROM userdata WHERE id = ?");
$stmt->bind_param("i", $user_id);
$stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE token = ? AND id = ?"); $stmt->execute();
$stmt2->bind_param("si", $request_session, $request_uid); $result2 = $stmt->get_result();
$stmt2->execute(); $stmt->close();
$result2 = $stmt2->get_result();
if ($result2->num_rows != 1) { if ($result2->num_rows != 1) {
echo (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") ? "-2" : "-3"; echo (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") ? "-2" : "-3";
$conn0->close(); $conn0->close();
@@ -32,8 +31,8 @@ if ($result2->num_rows != 1) {
exit; exit;
} }
$updateStmt = $conn1->prepare("UPDATE userdata SET legacy_high_score = ? WHERE token = ? AND id = ?"); $updateStmt = $conn1->prepare("UPDATE userdata SET legacy_high_score = ? WHERE id = ?");
$updateStmt->bind_param("isi", $request_score, $request_session, $request_uid); $updateStmt->bind_param("ii", $high_score, $user_id);
$updateStmt->execute(); $updateStmt->execute();
$updateStmt->close(); $updateStmt->close();
+17 -15
View File
@@ -4,39 +4,41 @@ $conn1 = newConnection(1);
$stmt = $conn0->prepare("SELECT username, id FROM users WHERE leaderboards_banned = 0"); $stmt = $conn0->prepare("SELECT username, id FROM users WHERE leaderboards_banned = 0");
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows > 0) { if ($result->num_rows > 0) {
$topPlayers = []; $topPlayers = [];
while ($row = $result->fetch_assoc()) { while ($row = $result->fetch_assoc()) {
$id = $row["id"]; $id = $row["id"];
$stmt2 = $conn1->prepare("SELECT legacy_high_score, save_data FROM userdata WHERE id = ? AND legacy_high_score > 0 ORDER BY legacy_high_score DESC LIMIT 1"); $stmt = $conn1->prepare("SELECT legacy_high_score, save_data FROM userdata WHERE id = ? AND legacy_high_score > 0 LIMIT 1");
$stmt2->bind_param("i", $id); $stmt->bind_param("i", $id);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) continue;
$row2 = $result2->fetch_assoc();
if ($result2->num_rows != 1) { $savedata = json_decode($row2['save_data'], true);
continue;
}
$user2 = $result2->fetch_assoc();
$savedata = json_decode($user2['save_data'], true);
$icon = $savedata['bird']['icon'] ?? 1; $icon = $savedata['bird']['icon'] ?? 1;
$overlay = $savedata['bird']['overlay'] ?? 0; $overlay = $savedata['bird']['overlay'] ?? 0;
if (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") { if (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") {
$topPlayers[] = $row["username"] . ":" . $user2["legacy_high_score"] . ":" . $icon . ":" . $overlay . ":" . $id; $topPlayers[] = $row["username"] . ":" . $row2["legacy_high_score"] . ":" . $icon . ":" . $overlay . ":" . $id;
} else if (getClientVersion() == "0") { } else if (getClientVersion() == "0") {
$topPlayers[] = base64_encode($row["username"]) . ":" . $user2["legacy_high_score"] . ":" . $icon . ":" . $overlay . ":" . $id; $topPlayers[] = base64_encode($row["username"]) . ":" . $row2["legacy_high_score"] . ":" . $icon . ":" . $overlay . ":" . $id;
} else if (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") { } else if (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") {
$birdColor = $savedata['settings']['colors']['icon'] ?? [255,255,255]; $birdColor = $savedata['settings']['colors']['icon'] ?? [255,255,255];
$overlayColor = $savedata['settings']['colors']['overlay'] ?? [255,255,255]; $overlayColor = $savedata['settings']['colors']['overlay'] ?? [255,255,255];
$topPlayers[] = base64_encode($row["username"]) . ":" . $user2["legacy_high_score"] . ":" . $icon . ":" . $overlay . ":" . $id . ":" . $birdColor[0] . ":" . $birdColor[1] . ":" . $birdColor[2] . ":" . $overlayColor[0] . ":" . $overlayColor[1] . ":" . $overlayColor[2]; $topPlayers[] = base64_encode($row["username"]) . ":" . $row2["legacy_high_score"] . ":" . $icon . ":" . $overlay . ":" . $id . ":" . $birdColor[0] . ":" . $birdColor[1] . ":" . $birdColor[2] . ":" . $overlayColor[0] . ":" . $overlayColor[1] . ":" . $overlayColor[2];
} }
} }
usort($topPlayers, function ($a, $b) {
$aScore = (int)explode(":", $a)[1];
$bScore = (int)explode(":", $b)[1];
return $bScore <=> $aScore;
});
if (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") { if (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") {
echo implode("::", $topPlayers); echo implode("::", $topPlayers);
} else if (getClientVersion() == "0") { } else if (getClientVersion() == "0") {
@@ -11,10 +11,11 @@ if (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientV
$conn0 = newConnection(0); $conn0 = newConnection(0);
$conn1 = newConnection(1); $conn1 = newConnection(1);
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT * FROM users WHERE username = ? AND token = ?");
$stmt->bind_param("s", $username); $stmt->bind_param("ss", $username, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows != 1) { if ($result->num_rows != 1) {
echo (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") ? encrypt("-1") : "-1"; echo (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") ? encrypt("-1") : "-1";
@@ -26,10 +27,11 @@ if ($result->num_rows != 1) {
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
$id = $row["id"]; $id = $row["id"];
$stmt2 = $conn1->prepare("SELECT save_data, legacy_high_score FROM userdata WHERE id = ? AND token = ? LIMIT 1"); $stmt = $conn1->prepare("SELECT save_data, legacy_high_score FROM userdata WHERE id = ? LIMIT 1");
$stmt2->bind_param("is", $id, $token); $stmt->bind_param("i", $id);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) { if ($result2->num_rows != 1) {
echo (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") ? encrypt("-1") : "-1"; echo (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") ? encrypt("-1") : "-1";
@@ -45,7 +47,7 @@ $icon = $savedata['bird']['icon'] ?? 1;
$overlay = $savedata['bird']['overlay'] ?? 0; $overlay = $savedata['bird']['overlay'] ?? 0;
if (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") { if (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") {
$birdColor = $savedata['settings']['colors']['icon'] ?? [255,255,255]; $birdColor = $savedata['settings']['colors']['icon'] ?? [255,255,255];
$msg = "1:" . $user2['legacy_high_score'] . ":" . $icon . ":" . $overlay . ":0:0:0:0:0:0:" . ":" . $birdColor[0] . ":" . $birdColor[1] . ":" . $birdColor[2]; $msg = "1:" . $user2['legacy_high_score'] . ":" . $icon . ":" . $overlay . ":0:0:0:0:0:0::" . $birdColor[0] . ":" . $birdColor[1] . ":" . $birdColor[2];
if (getClientVersion() == "1.5.2") { if (getClientVersion() == "1.5.2") {
$overlayColor = $savedata['settings']['colors']['overlay'] ?? [255,255,255]; $overlayColor = $savedata['settings']['colors']['overlay'] ?? [255,255,255];
$msg .= ":" . $overlayColor[0] . ":" . $overlayColor[1] . ":" . $overlayColor[2]; $msg .= ":" . $overlayColor[0] . ":" . $overlayColor[1] . ":" . $overlayColor[2];
+12 -10
View File
@@ -8,10 +8,11 @@ $request_highScore = $_POST['highScore'] ?? 0;
$request_icon = $_POST['icon'] ?? 0; $request_icon = $_POST['icon'] ?? 0;
$request_overlay = $_POST['overlay'] ?? 0; $request_overlay = $_POST['overlay'] ?? 0;
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT id FROM users WHERE username = ? AND token = ?");
$stmt->bind_param("s", $request_userName); $stmt->bind_param("ss", $request_userName, $request_gameSession);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows != 1) { if ($result->num_rows != 1) {
echo "-2"; echo "-2";
@@ -22,10 +23,11 @@ if ($result->num_rows != 1) {
$request_uid = $result->fetch_assoc()["id"]; $request_uid = $result->fetch_assoc()["id"];
$stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE token = ? AND id = ?"); $stmt = $conn1->prepare("SELECT save_data FROM userdata WHERE id = ?");
$stmt2->bind_param("si", $request_gameSession, $request_uid); $stmt->bind_param("i", $request_uid);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) { if ($result2->num_rows != 1) {
echo (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") ? "-2" : "-3"; echo (getClientVersion() == "1.3-beta2" || getClientVersion() == "1.3" || getClientVersion() == "1.33") ? "-2" : "-3";
@@ -41,9 +43,9 @@ $savedata['bird']['icon'] = $request_icon;
$savedata['bird']['overlay'] = $request_overlay; $savedata['bird']['overlay'] = $request_overlay;
$savedata = json_encode($savedata); $savedata = json_encode($savedata);
$updateStmt = $conn1->prepare("UPDATE userdata SET legacy_high_score = ?, save_data = ? WHERE token = ? AND id = ?"); $stmt = $conn1->prepare("UPDATE userdata SET legacy_high_score = ?, save_data = ? WHERE id = ?");
$updateStmt->bind_param("issi", $request_highScore, $savedata, $request_gameSession, $request_uid); $stmt->bind_param("isi", $request_highScore, $savedata, $request_uid);
$updateStmt->execute(); $stmt->execute();
$updateStmt->close(); $stmt->close();
echo "1"; echo "1";
@@ -6,7 +6,7 @@ $stmt = $conn1 ->prepare("
SELECT id, content, userId SELECT id, content, userId
FROM chats FROM chats
WHERE deleted_at = 0 WHERE deleted_at = 0
ORDER BY id DESC LIMIT 50 ORDER BY id DESC LIMIT 49
"); ");
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
@@ -14,18 +14,20 @@ $result = $stmt->get_result();
$rows = []; $rows = [];
while ($row = $result->fetch_assoc()) { while ($row = $result->fetch_assoc()) {
$userId = $row["userId"]; $userId = $row["userId"];
$stmt2 = $conn1->prepare("SELECT save_data FROM userdata WHERE id = ? LIMIT 1"); $stmt = $conn1->prepare("SELECT save_data FROM userdata WHERE id = ? LIMIT 1");
$stmt2->bind_param("i", $userId); $stmt->bind_param("i", $userId);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) continue; if ($result2->num_rows != 1) continue;
$row2 = $result2->fetch_assoc(); $row2 = $result2->fetch_assoc();
$stmt3 = $conn0->prepare("SELECT username FROM users WHERE id = ? LIMIT 1"); $stmt = $conn0->prepare("SELECT username FROM users WHERE id = ? LIMIT 1");
$stmt3->bind_param("i", $userId); $stmt->bind_param("i", $userId);
$stmt3->execute(); $stmt->execute();
$result3 = $stmt3->get_result(); $result3 = $stmt->get_result();
if ($result3->num_rows != 1) continue; if ($result3->num_rows != 1) continue;
$stmt->close();
$row3 = $result3->fetch_assoc(); $row3 = $result3->fetch_assoc();
$savedata = json_decode($row2['save_data'], true); $savedata = json_decode($row2['save_data'], true);
@@ -50,7 +52,7 @@ while ($row = $result->fetch_assoc()) {
]); ]);
} }
echo encrypt("1" . ":" . implode("|", array_reverse($rows))); echo encrypt("1:" . implode("|", array_reverse($rows)));
$conn0->close(); $conn0->close();
$conn1->close(); $conn1->close();
@@ -7,25 +7,27 @@ if (!preg_match('/^[ a-zA-Z0-9!@#\$%\^&\*\(\)_\+\-=\[\]\{\};\':",\.<>\/\?\\\\|`~
exitWithMessage("-1"); exitWithMessage("-1");
} }
$conn = newConnection(1); $conn0 = newConnection(0);
$conn1 = newConnection(1);
$stmt = $conn->prepare("SELECT id FROM userdata WHERE token = ?"); $stmt = $conn0->prepare("SELECT id FROM users WHERE token = ?");
$stmt->bind_param("s", $token); $stmt->bind_param("s", $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
if (!$row) exitWithMessage("-1"); if (!$row) exitWithMessage("-1");
$stmt->close();
$id = $row["id"]; $id = $row["id"];
$content = base64_encode($request_content); $content = base64_encode($request_content);
$time = time(); $time = time();
$stmt = $conn->prepare("INSERT INTO chats (userId, content, timestamp) VALUES (?, ?, ?)"); $stmt = $conn1->prepare("INSERT INTO chats (userId, content, timestamp) VALUES (?, ?, ?)");
$stmt->bind_param("isi", $id, $content, $time); $stmt->bind_param("isi", $id, $content, $time);
$stmt->execute(); $stmt->execute();
$stmt->close(); $stmt->close();
echo encrypt("1"); echo encrypt("1");
$conn->close(); $conn0->close();
$conn1->close();
+23 -33
View File
@@ -8,59 +8,49 @@ $password = $post['password'];
$currentHighScore = $post['currentHighScore'] ?? 0; $currentHighScore = $post['currentHighScore'] ?? 0;
$loginType = $post['loginType'] ?? '0'; $loginType = $post['loginType'] ?? '0';
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT id, username, password, token FROM users WHERE username = ?");
$stmt->bind_param("s", $username); $stmt->bind_param("s", $username);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows != 1) exitWithMessage("-1");
$row = $result->fetch_assoc();
if ($result->num_rows != 1) { if (!password_verify($password, $row["password"])) exitWithMessage("-1");
exitWithMessage("-1");
}
$user = $result->fetch_assoc(); $id = $row['id'];
$stmt = $conn1->prepare("SELECT legacy_high_score FROM userdata WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) exitWithMessage("-1");
$row2 = $result2->fetch_assoc();
if (!password_verify($password, $user["password"])) { $token = $row['token'];
exitWithMessage("-1");
}
$id = $user['id'];
$stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE id = ?");
$stmt2->bind_param("i", $id);
$stmt2->execute();
$result2 = $stmt2->get_result();
if ($result2->num_rows != 1) {
exitWithMessage("-1");
}
$user2 = $result2->fetch_assoc();
$token = $user2['token'];
$ip = getIPAddress(); $ip = getIPAddress();
$stmt = $conn0->prepare("UPDATE users SET latest_ip = ? WHERE id = ?"); $stmt = $conn0->prepare("UPDATE users SET latest_ip = ?, token = ? WHERE id = ?");
$stmt->bind_param("si", $ip, $id); $stmt->bind_param("ssi", $ip, $token, $id);
$stmt->execute(); $stmt->execute();
$stmt2 = $conn1->prepare("UPDATE userdata SET token = ? WHERE id = ?"); $stmt->close();
$stmt2->bind_param("si", $token, $id);
$stmt2->execute();
if ($currentHighScore > $user['legacy_high_score']) { if ($currentHighScore > $row2['legacy_high_score']) {
$stmt = $conn1->prepare("UPDATE userdata SET legacy_high_score = ? WHERE id = ?"); $stmt = $conn1->prepare("UPDATE userdata SET legacy_high_score = ? WHERE id = ?");
$stmt->bind_param("ii", $currentHighScore, $id); $stmt->bind_param("ii", $currentHighScore, $id);
$stmt->execute(); $stmt->execute();
$user['legacy_high_score'] = $currentHighScore; $stmt->close();
$row2['legacy_high_score'] = $currentHighScore;
} }
$savedata = json_decode($user['save_data'], true); $savedata = json_decode($row['save_data'], true);
$birdColor = $savedata['settings']['colors']['icon'] ?? [255,255,255]; $birdColor = $savedata['settings']['colors']['icon'] ?? [255,255,255];
$overlayColor = $savedata['settings']['colors']['overlay'] ?? [255,255,255]; $overlayColor = $savedata['settings']['colors']['overlay'] ?? [255,255,255];
if ($loginType === "0") { if ($loginType === "0") {
echo encrypt("1" . ":" . $token . ":" . $user['username'] . ":" . $id . ":" . $user['legacy_high_score'] . ":" . ($savedata['bird']['icon'] ?? 1) . ":" . ($savedata['bird']['overlay'] ?? 0) . ":0:0:0:0:0:" . ":" . $birdColor[0] . ":" . $birdColor[1] . ":" . $birdColor[2] . ":" . $overlayColor[0] . ":" . $overlayColor[1] . ":" . $overlayColor[2]); echo encrypt("1:" . $token . ":" . $row['username'] . ":" . $id . ":" . $row2['legacy_high_score'] . ":" . ($savedata['bird']['icon'] ?? 1) . ":" . ($savedata['bird']['overlay'] ?? 0) . ":0:0:0:0:0::" . $birdColor[0] . ":" . $birdColor[1] . ":" . $birdColor[2] . ":" . $overlayColor[0] . ":" . $overlayColor[1] . ":" . $overlayColor[2]);
} elseif ($loginType === "1") { } elseif ($loginType === "1") {
echo encrypt("1" . ":" . $token . ":" . $user['username'] . ":" . $id); echo encrypt("1:" . $token . ":" . $row['username'] . ":" . $id);
} }
$stmt->close();
$conn0->close(); $conn0->close();
$conn1->close(); $conn1->close();
+21 -19
View File
@@ -5,24 +5,26 @@ $username = $post['userName'] ?? '';
$highScore = (int)$post['highScore'] ?? 0; $highScore = (int)$post['highScore'] ?? 0;
$icon = (int)$post['icon'] ?? 1; $icon = (int)$post['icon'] ?? 1;
$overlay = (int)$post['overlay'] ?? 0; $overlay = (int)$post['overlay'] ?? 0;
$birdR = (int)$post['birdR'] ?? 255; if (getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") {
$birdG = (int)$post['birdG'] ?? 255; $birdR = (int)$post['birdR'] ?? 255;
$birdB = (int)$post['birdB'] ?? 255; $birdG = (int)$post['birdG'] ?? 255;
$birdB = (int)$post['birdB'] ?? 255;
$birdColor = [$birdR, $birdG, $birdB];
}
if (getClientVersion() == "1.5.2") { if (getClientVersion() == "1.5.2") {
$overlayR = (int)$post['overlayR'] ?? 255; $overlayR = (int)$post['overlayR'] ?? 255;
$overlayG = (int)$post['overlayG'] ?? 255; $overlayG = (int)$post['overlayG'] ?? 255;
$overlayB = (int)$post['overlayB'] ?? 255; $overlayB = (int)$post['overlayB'] ?? 255;
$overlayColor = [$overlayR, $overlayG, $overlayB];
} }
$birdColor = [$birdR, $birdG, $birdB];
$overlayColor = [$overlayR, $overlayG, $overlayB];
$conn0 = newConnection(0); $conn0 = newConnection(0);
$conn1 = newConnection(1); $conn1 = newConnection(1);
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT id FROM users WHERE username = ? AND token = ?");
$stmt->bind_param("s", $username); $stmt->bind_param("ss", $username, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows != 1) { if ($result->num_rows != 1) {
echo encrypt("-1"); echo encrypt("-1");
@@ -34,10 +36,11 @@ if ($result->num_rows != 1) {
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
$id = $row["id"]; $id = $row["id"];
$stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE id = ? AND token = ?"); $stmt = $conn1->prepare("SELECT save_data FROM userdata WHERE id = ?");
$stmt2->bind_param("is", $id, $token); $stmt->bind_param("i", $id);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) { if ($result2->num_rows != 1) {
echo encrypt("-1"); echo encrypt("-1");
@@ -50,18 +53,17 @@ $row2 = $result2->fetch_assoc();
$savedata = json_decode($row2['save_data'], true); $savedata = json_decode($row2['save_data'], true);
$savedata['bird']['icon'] = $icon; $savedata['bird']['icon'] = $icon;
$savedata['bird']['overlay'] = $overlay; $savedata['bird']['overlay'] = $overlay;
$savedata['settings']['colors']['icon'] = $birdColor; if (getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") $savedata['settings']['colors']['icon'] = $birdColor;
if (getClientVersion() == "1.5.2") $savedata['settings']['colors']['overlay'] = $overlayColor; if (getClientVersion() == "1.5.2") $savedata['settings']['colors']['overlay'] = $overlayColor;
$savedata = json_encode($savedata); $savedata = json_encode($savedata);
$updateStmt = $conn1->prepare("UPDATE userdata SET legacy_high_score = ?, save_data = ? WHERE id = ? AND token = ?"); $stmt = $conn1->prepare("UPDATE userdata SET legacy_high_score = ?, save_data = ? WHERE id = ?");
$updateStmt->bind_param("isis", $stmt->bind_param("isi",
$highScore, $highScore,
$savedata, $savedata,
$id, $id
$token
); );
$updateStmt->execute(); $stmt->execute();
$updateStmt->close(); $stmt->close();
echo encrypt("1"); echo encrypt("1");
$conn0->close(); $conn0->close();
+1 -1
View File
@@ -1,4 +1,4 @@
<?php <?php
require __DIR__ . '/../incl/util.php'; require __DIR__ . '/../incl/util.php';
setPlainHeader(); setPlainHeader();
echo '1'; echo getClientVersion() == "1.4.0-beta1" ? "1" : "2";
+6 -8
View File
@@ -11,14 +11,12 @@ if (
getClientVersion() == "1.33" || getClientVersion() == "1.33" ||
getClientVersion() == "1.4.0-beta1" || getClientVersion() == "1.4.0-beta1" ||
getClientVersion() == "1.4.0" || getClientVersion() == "1.4.0" ||
getClientVersion() == "1.4.1" getClientVersion() == "1.4.1" ||
getClientVersion() == "1.5.0" ||
getClientVersion() == "1.5.1" ||
getClientVersion() == "1.5.2"
) { ) {
echo "-1"; exitWithMessage("-1", getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2");
exit;
}
if (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") {
exitWithMessage("-1");
exit;
} }
exitWithMessage(json_encode(["success" => false, "message" => "You must use client version 26.1 or higher to register an account in game"])); exitWithMessage(json_encode(["success" => false, "message" => "You must use client version 26.1 or higher to change your password in game"]));
+6 -8
View File
@@ -11,14 +11,12 @@ if (
getClientVersion() == "1.33" || getClientVersion() == "1.33" ||
getClientVersion() == "1.4.0-beta1" || getClientVersion() == "1.4.0-beta1" ||
getClientVersion() == "1.4.0" || getClientVersion() == "1.4.0" ||
getClientVersion() == "1.4.1" getClientVersion() == "1.4.1" ||
getClientVersion() == "1.5.0" ||
getClientVersion() == "1.5.1" ||
getClientVersion() == "1.5.2"
) { ) {
echo "-1"; exitWithMessage("-1", getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2");
exit;
}
if (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") {
exitWithMessage("-1");
exit;
} }
exitWithMessage(json_encode(["success" => false, "message" => "You must use client version 26.1 or higher to register an account in game"])); exitWithMessage(json_encode(["success" => false, "message" => "You must use client version 26.1 or higher to change your username in game"]));
+10 -9
View File
@@ -9,26 +9,27 @@ $targetId = (int)$post['targetId'] ?? 0;
$token = $post['token'] ?? ''; $token = $post['token'] ?? '';
$username = $post['username'] ?? ''; $username = $post['username'] ?? '';
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT id FROM users WHERE username = ? AND token = ?");
$stmt->bind_param("s", $username); $stmt->bind_param("ss", $username, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows != 1) exitWithMessage(json_encode(["success" => false, "message" => 'User info not found'])); if ($result->num_rows != 1) exitWithMessage(json_encode(["success" => false, "message" => 'User info not found']));
$row = $result->fetch_assoc(); $user_id = $result->fetch_assoc()["id"];
$user_id = $row["id"];
$stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE token = ? AND id = ?"); $stmt = $conn1->prepare("SELECT 1 FROM userdata WHERE id = ?");
$stmt2->bind_param("si", $token, $user_id); $stmt->bind_param("i", $user_id);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) exitWithMessage(json_encode(["success" => false, "message" => 'User info not found'])); if ($result2->num_rows != 1) exitWithMessage(json_encode(["success" => false, "message" => 'User info not found']));
$row2 = $result2->fetch_assoc();
$time = time(); $time = time();
$stmt = $conn1->prepare("UPDATE userposts SET deleted_at = ? WHERE id = ? AND userId = ? AND deleted_at = 0"); $stmt = $conn1->prepare("UPDATE userposts SET deleted_at = ? WHERE id = ? AND userId = ? AND deleted_at = 0");
$stmt->bind_param("iii", $time, $targetId, $user_id); $stmt->bind_param("iii", $time, $targetId, $user_id);
$stmt->execute(); $stmt->execute();
$stmt->close();
echo encrypt(json_encode(["success" => $stmt->affected_rows > 0])); echo encrypt(json_encode(["success" => $stmt->affected_rows > 0]));
+17 -7
View File
@@ -7,22 +7,32 @@ $id = $post['id'] ?? '';
$token = $post['token'] ?? ''; $token = $post['token'] ?? '';
$username = $post['username'] ?? ''; $username = $post['username'] ?? '';
$conn = newConnection(); $conn0 = newConnection(0);
$conn1 = newConnection(1);
$stmt = $conn->prepare("SELECT * FROM users WHERE token = ? AND username = ?"); $stmt = $conn0->prepare("SELECT id FROM users WHERE username = ? AND token = ? LIMIT 1");
$stmt->bind_param("ss", $token, $username); $stmt->bind_param("ss", $username, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$row = $result->fetch_assoc();
if (!$row) exit;
$stmt->close(); $stmt->close();
$row = $result->fetch_assoc();
if ($result->num_rows != 1) exit;
$user_id = $row["id"]; $user_id = $row["id"];
$stmt = $conn1->prepare("SELECT 1 FROM userdata WHERE id = ? LIMIT 1");
$stmt->bind_param("i", $user_id);
$stmt->execute();
$result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) exit;
$time = time(); $time = time();
$stmt = $conn->prepare("UPDATE chats SET deleted_at = ? WHERE userId = ? AND id = ?"); $stmt = $conn1->prepare("UPDATE chats SET deleted_at = ? WHERE userId = ? AND id = ?");
$stmt->bind_param("iii", $time, $user_id, $id); $stmt->bind_param("iii", $time, $user_id, $id);
$stmt->execute(); $stmt->execute();
$stmt->close(); $stmt->close();
$conn->close(); $conn0->close();
$conn1->close();
+6 -6
View File
@@ -13,23 +13,23 @@ if (!preg_match('/^[ a-zA-Z0-9!@#\$%\^&\*\(\)_\+\-=\[\]\{\};\':",\.<>\/\?\\\\|`~
$conn0 = newConnection(0); $conn0 = newConnection(0);
$conn1 = newConnection(1); $conn1 = newConnection(1);
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT id FROM users WHERE username = ? AND token = ?");
$stmt->bind_param("s", $username); $stmt->bind_param("ss", $username, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
if (!$row) exit; if (!$row) exit;
$stmt->close();
$user_id = $row["id"]; $user_id = $row["id"];
$stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE token = ? AND id = ?"); $stmt2 = $conn1->prepare("SELECT 1 FROM userdata WHERE id = ?");
$stmt2->bind_param("si", $token, $user_id); $stmt2->bind_param("i", $user_id);
$stmt2->execute(); $stmt2->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt2->get_result();
$stmt->close();
$row2 = $result2->fetch_assoc(); $row2 = $result2->fetch_assoc();
if (!$row2) exit; if (!$row2) exit;
$stmt2->close();
$content = base64_encode($content); $content = base64_encode($content);
+22 -14
View File
@@ -12,27 +12,36 @@ $stmt = $conn0->prepare("SELECT username, id FROM users WHERE id = ?");
$stmt->bind_param("i", $uesrId); $stmt->bind_param("i", $uesrId);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows > 0) { if ($result->num_rows > 0) {
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
$stmt2 = $conn1->prepare("SELECT save_data FROM userdata WHERE id = ?"); $stmt = $conn1->prepare("SELECT save_data FROM userdata WHERE id = ?");
$stmt2->bind_param("i", $row['id']); $stmt->bind_param("i", $row['id']);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
$row2 = $result2->fetch_assoc(); $row2 = $result2->fetch_assoc();
$savedata = json_decode($row2['save_data'], true); $savedata = json_decode($row2['save_data'], true);
$custom = null; $custom = isset($savedata['bird']['customIcon']['selected']) ?? null;
if (isset($savedata['bird']['customIcon']['selected'])) {
$selected = $savedata['bird']['customIcon']['selected']; $customIcon = $savedata['bird']['customIcon']['selected'] ?? null;
foreach ($savedata['bird']['customIcon']['data'] as $entry) { $icon = null;
if (isset($entry['uuid']) && $entry['uuid'] === $selected) {
$custom = $entry['data']; if ($customIcon != null && strlen($customIcon) == 36) {
break; $stmt = $conn1->prepare("SELECT data FROM marketplaceicons WHERE id = ?");
} $stmt->bind_param("s", $customIcon);
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
$rowData = $result->fetch_assoc();
if ($rowData) {
$icon = $rowData["data"];
} }
} }
echo encrypt(json_encode([ echo encrypt(json_encode([
"success" => true, "success" => true,
"totalNormalBerries" => $savedata['gameStore']['totalNormalBerries'] ?? 0, "totalNormalBerries" => $savedata['gameStore']['totalNormalBerries'] ?? 0,
@@ -47,7 +56,7 @@ if ($result->num_rows > 0) {
"name" => $row['username'], "name" => $row['username'],
"icon" => $savedata['bird']['icon'] ?? 1, "icon" => $savedata['bird']['icon'] ?? 1,
"overlay" => $savedata['bird']['overlay'] ?? 0, "overlay" => $savedata['bird']['overlay'] ?? 0,
"customIcon" => $custom, "customIcon" => $icon,
"playerIconColor" => $savedata['settings']['colors']['icon'] ?? [255,255,255], "playerIconColor" => $savedata['settings']['colors']['icon'] ?? [255,255,255],
"playerOverlayColor" => $savedata['settings']['colors']['overlay'] ?? [255,255,255] "playerOverlayColor" => $savedata['settings']['colors']['overlay'] ?? [255,255,255]
])); ]));
@@ -55,6 +64,5 @@ if ($result->num_rows > 0) {
echo encrypt(json_encode(["success" => false])); echo encrypt(json_encode(["success" => false]));
} }
$stmt->close();
$conn0->close(); $conn0->close();
$conn1->close(); $conn1->close();
+1
View File
@@ -15,6 +15,7 @@ $stmt = $conn->prepare("
$stmt->bind_param("i", $targetId); $stmt->bind_param("i", $targetId);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
echo encrypt(json_encode(array_map( echo encrypt(json_encode(array_map(
function ($row) { function ($row) {
+15 -18
View File
@@ -16,25 +16,26 @@ $stmt = $conn1->prepare("
LIMIT 50 LIMIT 50
"); ");
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$rows = $result->fetch_all(MYSQLI_ASSOC); $stmt->close();
$mapped = []; $mapped = [];
$icons = []; $icons = [];
foreach ($rows as $row) { foreach ($result->fetch_all(mode: MYSQLI_ASSOC) as $row) {
$userId = $row["userId"]; $userId = $row["userId"];
$stmt2 = $conn1->prepare("SELECT legacy_high_score, save_data FROM userdata WHERE id = ? LIMIT 1"); $stmt = $conn1->prepare("SELECT legacy_high_score, save_data FROM userdata WHERE id = ? LIMIT 1");
$stmt2->bind_param("i", $userId); $stmt->bind_param("i", $userId);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) continue; if ($result2->num_rows != 1) continue;
$row2 = $result2->fetch_assoc(); $row2 = $result2->fetch_assoc();
$stmt3 = $conn0->prepare("SELECT username FROM users WHERE id = ? LIMIT 1"); $stmt = $conn0->prepare("SELECT username FROM users WHERE id = ? LIMIT 1");
$stmt3->bind_param("i", $userId); $stmt->bind_param("i", $userId);
$stmt3->execute(); $stmt->execute();
$result3 = $stmt3->get_result(); $result3 = $stmt->get_result();
$stmt->close();
if ($result3->num_rows != 1) continue; if ($result3->num_rows != 1) continue;
$row3 = $result3->fetch_assoc(); $row3 = $result3->fetch_assoc();
@@ -43,13 +44,13 @@ foreach ($rows as $row) {
$customIcon = $savedata['bird']['customIcon']['selected'] ?? null; $customIcon = $savedata['bird']['customIcon']['selected'] ?? null;
if ($customIcon != null && strlen($customIcon) == 36 && $icons[$customIcon] == null) { if ($customIcon != null && strlen($customIcon) == 36 && $icons[$customIcon] == null) {
$stmt = $conn1->prepare("SELECT data FROM marketplaceicons WHERE uuid = ?"); $stmt = $conn1->prepare("SELECT data FROM marketplaceicons WHERE id = ?");
$stmt->bind_param("s", $customIcon); $stmt->bind_param("s", $customIcon);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
$rowData = $result->fetch_assoc(); $rowData = $result->fetch_assoc();
if ($rowData) { if ($rowData) {
$stmt->close();
$icons[$customIcon] = $rowData["data"]; $icons[$customIcon] = $rowData["data"];
} }
} }
@@ -69,11 +70,7 @@ foreach ($rows as $row) {
} }
if (getClientVersion() == "1.6") { echo encrypt(json_encode(getClientVersion() == "1.6" ? $mapped : ["messages" => array_reverse($mapped), "customIcons" => $icons == [] ? new stdClass() : $icons]));
echo encrypt(json_encode($mapped));
} else {
echo encrypt(json_encode(["messages" => array_reverse($mapped), "customIcons" => $icons == [] ? new stdClass() : $icons]));
}
$conn0->close(); $conn0->close();
$conn1->close(); $conn1->close();
+11 -1
View File
@@ -1,4 +1,14 @@
<?php <?php
require __DIR__ . '/../incl/util.php'; require __DIR__ . '/../incl/util.php';
setPlainHeader(); setPlainHeader();
echo "1.8.2";
$conn0 = newConnection(0);
$stmt = $conn0->prepare("SELECT versionName FROM launcherversionmanifest WHERE HIDDEN = 0 AND game = 1 ORDER BY place DESC LIMIT 1");
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
$row = $result->fetch_assoc();
$conn0->close();
echo $row["versionName"] ?? 'N/A';
+10 -12
View File
@@ -16,7 +16,7 @@ $onlyShowEnabled = isset($post['onlyShowEnabled']) ? (string) $post['onlyShowEna
$onlyShowValue = (string) $post['onlyShowValue'] ?? ''; $onlyShowValue = (string) $post['onlyShowValue'] ?? '';
$currentIcons = json_decode(base64_decode((string) ($post['currentIcons'] ?? 'W10K'))); $currentIcons = json_decode(base64_decode((string) ($post['currentIcons'] ?? 'W10K')));
$where = ["(state = 1 OR state = 2)"]; $where = ["state = 1"];
$params = []; $params = [];
$types = ""; $types = "";
$order = match ($sortBy) { $order = match ($sortBy) {
@@ -62,36 +62,34 @@ if ($onlyShowEnabled) {
} }
$sql = " $sql = "
SELECT data, price, name, uuid, state, userId SELECT data, price, name, id, state, userId
FROM marketplaceicons FROM marketplaceicons
WHERE " . implode(" AND ", $where) . " WHERE " . implode(" AND ", $where) . "
$order $order
"; ";
$stmt = $conn1->prepare($sql); $stmt = $conn1->prepare($sql);
if (!empty($params)) $stmt->bind_param($types, ...$params);
if (!empty($params)) {
$stmt->bind_param($types, ...$params);
}
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
echo encrypt(json_encode(array_map( echo encrypt(json_encode(array_map(
function ($row) { function ($row) {
global $conn0; global $conn0;
$stmt2 = $conn0->prepare("SELECT username FROM users WHERE id = ?"); $stmt = $conn0->prepare("SELECT username FROM users WHERE id = ?");
$stmt2->bind_param("i", $row['userId']); $stmt->bind_param("i", $row['userId']);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
$row2 = $result2->fetch_assoc(); $row2 = $result2->fetch_assoc();
return [ return [
'username' => $row2['username'] ?? 'Unknown', 'username' => $row2['username'] ?? 'Unknown',
'userid' => $row['userId'], 'userid' => $row['userId'],
'data' => $row['data'], 'data' => $row['data'],
'uuid' => $row['uuid'], 'uuid' => $row['id'],
'price' => (int) $row['state'] == 2 ? 100000000 : $row['price'], 'price' => (int) $row['state'] == 2 ? 100000000 : $row['price'],
'name' => base64_decode($row['name']) 'name' => base64_decode($row['name'])
]; ];
+18 -22
View File
@@ -14,14 +14,14 @@ if (
exit; exit;
} }
$post = getPostData(); $post = getPostData();
$request_type = $post['type'] ?? ''; $request_type = $post['type'] ?? (isLauncher() ? '0' : '');
$conn0 = newConnection(0); $conn0 = newConnection(0);
$conn1 = newConnection(1); $conn1 = newConnection(1);
$request_value = ""; $request_value = "";
if ($request_type === "0") { if ($request_type == "0") {
$request_value = "highScore"; $request_value = "highScore";
} else if ($request_type === "1") { } else if ($request_type == "1") {
$request_value = match((int)$post['showType'] ?? 0) { $request_value = match((int)$post['showType'] ?? 0) {
1 => "totalPoisonBerries", 1 => "totalPoisonBerries",
2 => "totalSlowBerries", 2 => "totalSlowBerries",
@@ -32,32 +32,28 @@ if ($request_type === "0") {
7 => "totalAntiBerries", 7 => "totalAntiBerries",
default => "totalNormalBerries" default => "totalNormalBerries"
}; };
} else if ($request_type !== "2" && $request_type !== "3" && $request_type !== "4") { } else if ($request_type != "2" && $request_type != "3" && $request_type != "4") {
exitWithMessage(json_encode([])); exitWithMessage(json_encode([]));
} }
$stmt = $conn0->prepare("SELECT username, id FROM users WHERE leaderboards_banned = 0"); $stmt = $conn0->prepare("SELECT username, id FROM users WHERE leaderboards_banned = 0");
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$rows = $result->fetch_all(MYSQLI_ASSOC); $stmt->close();
$mapped = []; $mapped = [];
$icons = []; $icons = [];
foreach ($rows as $row) { foreach ($result->fetch_all(mode: MYSQLI_ASSOC) as $row) {
$id = $row["id"]; $id = $row["id"];
$stmt2 = $conn1->prepare("SELECT legacy_high_score, save_data FROM userdata WHERE id = ? LIMIT 1"); $stmt = $conn1->prepare("SELECT legacy_high_score, save_data FROM userdata WHERE id = ? LIMIT 1");
$stmt2->bind_param("i", $id); $stmt->bind_param("i", $id);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) continue;
$row2 = $result2->fetch_assoc();
if ($result2->num_rows != 1) { $savedata = json_decode($row2['save_data'], true);
continue;
}
$user2 = $result2->fetch_assoc();
$savedata = json_decode($user2['save_data'], true);
if (!$savedata) continue; if (!$savedata) continue;
if ($request_type == "4") { if ($request_type == "4") {
@@ -65,20 +61,20 @@ foreach ($rows as $row) {
$value = 0; $value = 0;
foreach ($berries as $b) $value += (int)($savedata['gameStore'][$b] ?? 0); foreach ($berries as $b) $value += (int)($savedata['gameStore'][$b] ?? 0);
} else { } else {
$value = $request_type != 2 ? $request_type != 3 ? ($savedata['gameStore'][$request_value] ?? 0) : ($user2['legacy_high_score'] ?? 0) : ($savedata['bird']['customIcon']['balance'] ?? 0); $value = $request_type != 2 ? $request_type != 3 ? ($savedata['gameStore'][$request_value] ?? 0) : ($row2['legacy_high_score'] ?? 0) : ($savedata['bird']['customIcon']['balance'] ?? 0);
} }
if ($value <= 0) continue; if ($value <= 0) continue;
$customIcon = $savedata['bird']['customIcon']['selected'] ?? null; $customIcon = $savedata['bird']['customIcon']['selected'] ?? null;
if ($customIcon != null && strlen($customIcon) == 36 && $icons[$customIcon] == null) { if ($customIcon && strlen($customIcon) == 36 && empty($icons[$customIcon])) {
$stmt = $conn1->prepare("SELECT data FROM marketplaceicons WHERE uuid = ?"); $stmt = $conn1->prepare("SELECT data FROM marketplaceicons WHERE id = ?");
$stmt->bind_param("s", $customIcon); $stmt->bind_param("s", $customIcon);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
$rowData = $result->fetch_assoc(); $rowData = $result->fetch_assoc();
if ($rowData) { if ($rowData) {
$stmt->close();
$icons[$customIcon] = $rowData["data"]; $icons[$customIcon] = $rowData["data"];
} }
} }
+1 -1
View File
@@ -1,4 +1,4 @@
<?php <?php
require __DIR__ . '/../../incl/util.php'; require __DIR__ . '/../../incl/util.php';
setPlainHeader(); setPlainHeader();
echo "-1"; echo "1.1.0";
+46 -4
View File
@@ -1,13 +1,55 @@
<?php <?php
require __DIR__ . '/../../incl/util.php'; require __DIR__ . '/../../incl/util.php';
setJsonHeader(); header("Content-Type: application/json");
$conn = newConnection(); $conn = newConnection(0);
$stmt = $conn->prepare("SELECT * FROM launcherversions WHERE hidden = 0 ORDER BY id DESC"); $stmt = $conn->prepare("SELECT versionName, downloads, place FROM launcherversionmanifest WHERE hidden = 0 AND game = 1 ORDER BY id DESC");
$stmt->execute(); $stmt->execute();
$result_versions = $stmt->get_result(); $result_versions = $stmt->get_result();
$versions = array_map(fn($row) => ['id' => $row['id'], 'version' => $row['version'], 'releaseDate' => $row['releaseDate'], 'displayName' => empty($row['displayName']) ? $row['version'] : $row['displayName'], 'platforms' => json_decode($row['platforms']), 'downloadUrls' => json_decode($row['downloadUrls']), 'executables' => json_decode($row['executables']), 'category' => $row['category']], $result_versions->fetch_all(MYSQLI_ASSOC)); $versions = array_map(function($row) use ($conn) {
$downloads = json_decode($row['downloads'], true);
$downloads = array_combine(
array_map(fn($k) => match($k) {
'windows-x86' => 'windows',
'windows-x64' => 'windows',
'linux-x64' => 'linux',
'macos-universal' => 'macos',
default => $k
}, array_keys($downloads)),
array_values($downloads)
);
$platforms = array_keys($downloads);
$downloadUrls = [];
foreach ($downloads as $platform => $fileId) {
$cdnStmt = $conn->prepare("SELECT path FROM files WHERE id = ?");
$cdnStmt->bind_param("i", $fileId);
$cdnStmt->execute();
$cdnResult = $cdnStmt->get_result()->fetch_assoc();
$downloadUrls[] = $cdnResult ? "https://archive.org/download/lncvrt-games-archive/" . $cdnResult['path'] : null;
$cdnStmt->close();
}
return [
'id' => $row['place'],
'version' => $row['versionName'],
'displayName' => $row['versionName'],
'platforms' => $platforms,
'downloadUrls' => $downloadUrls,
'executables' => array_map(function($platform) use ($row) {
return match(true) {
in_array($platform, ['windows', 'windows-arm64']) => $row['place'] >= 16 ? 'Berry Dash.exe' : 'Foodie Dash.exe',
$platform === 'macos' => $row['place'] >= 16 ? 'Berry Dash.app' : 'Foodie Dash.app',
$platform === 'linux' => $row['place'] >= 16 ? 'Berry Dash.x86_64' : 'Foodie Dash.x86_64',
in_array($platform, ['android', 'ios']) => null,
default => null
};
}, $platforms)
];
}, $result_versions->fetch_all(MYSQLI_ASSOC));
echo json_encode($versions); echo json_encode($versions);
+46 -7
View File
@@ -20,10 +20,11 @@ $username = $post['username'] ?? '';
$conn0 = newConnection(0); $conn0 = newConnection(0);
$conn1 = newConnection(1); $conn1 = newConnection(1);
$stmt = $conn0->prepare("SELECT id, username FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT id, username FROM users WHERE username = ? AND token = ?");
$stmt->bind_param("s", $username); $stmt->bind_param("ss", $username, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows != 1) { if ($result->num_rows != 1) {
echo encrypt(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"])); echo encrypt(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"]));
@@ -35,10 +36,11 @@ if ($result->num_rows != 1) {
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
$id = $row["id"]; $id = $row["id"];
$stmt2 = $conn1->prepare("SELECT save_data, token FROM userdata WHERE id = ? AND token = ?"); $stmt = $conn1->prepare("SELECT save_data FROM userdata WHERE id = ?");
$stmt2->bind_param("is", $id, $token); $stmt->bind_param("i", $id);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) { if ($result2->num_rows != 1) {
echo encrypt(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"])); echo encrypt(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"]));
@@ -52,7 +54,44 @@ $row2 = $result2->fetch_assoc();
$savedata = json_decode($row2['save_data'], true); $savedata = json_decode($row2['save_data'], true);
$savedata['account']['id'] = $id; $savedata['account']['id'] = $id;
$savedata['account']['name'] = $row['username']; $savedata['account']['name'] = $row['username'];
$savedata['account']['session'] = $row2['token']; $savedata['account']['session'] = $token;
if ($savedata['version'] !== '0') {
$savedata['version'] = '0';
if (isset($savedata["bird"]["customIcon"]["purchased"]))
{
$purchased = $savedata["bird"]["customIcon"]["purchased"];
unset($savedata["bird"]["customIcon"]["purchased"]);
$data = [];
foreach ($purchased as $icon) {
$stmt2 = $conn1->prepare("SELECT userId, data, price, name FROM marketplaceicons WHERE id = ?");
$stmt2->bind_param("s", $icon);
$stmt2->execute();
$result3 = $stmt2->get_result();
$stmt2->close();
if ($result3->num_rows != 1) continue;
$row3 = $result3->fetch_assoc();
$uid = $row3['userId'];
$stmt3 = $conn0->prepare("SELECT username FROM users WHERE id = ?");
$stmt3->bind_param("i", $uid);
$stmt3->execute();
$result4 = $stmt3->get_result();
$stmt3->close();
if ($result4->num_rows != 1) continue;
$row4 = $result4->fetch_assoc();
$data[] = [
"username" => $row4["username"],
"userid" => $row3["userId"],
"data" => $row3["data"],
"uuid" => $icon,
"price" => $row3["price"],
"name" => base64_decode($row3["name"])
];
}
$savedata["bird"]["customIcon"]["data"] = $data;
}
}
echo encrypt(json_encode([ echo encrypt(json_encode([
"success" => true, "success" => true,
"data" => $savedata "data" => $savedata
+9 -29
View File
@@ -27,48 +27,28 @@ $post = getPostData();
$username = $post['username']; $username = $post['username'];
$password = $post['password']; $password = $post['password'];
$stmt = $conn0->prepare("SELECT id, username, password FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT id, username, password, token FROM users WHERE username = ?");
$stmt->bind_param("s", $username); $stmt->bind_param("s", $username);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows != 1) { if ($result->num_rows != 1) exitWithMessage(json_encode(["success" => false, "message" => "Invalid username or password"]));
exitWithMessage(json_encode(["success" => false, "message" => "Invalid username or password"])); $row = $result->fetch_assoc();
} if (!password_verify($password, $row["password"])) exitWithMessage(json_encode(["success" => false, "message" => "Invalid username or password"]));
$user = $result->fetch_assoc(); $id = $row['id'];
$token = $row['token'];
if (!password_verify($password, $user["password"])) {
exitWithMessage(json_encode(["success" => false, "message" => "Invalid username or password"]));
}
$id = $user['id'];
$stmt2 = $conn1->prepare("SELECT token FROM userdata WHERE id = ?");
$stmt2->bind_param("i", $id);
$stmt2->execute();
$result2 = $stmt2->get_result();
if ($result2->num_rows != 1) {
exitWithMessage(json_encode(["success" => false, "message" => "Invalid username or password"]));
}
$user2 = $result2->fetch_assoc();
$token = $user2['token'];
$ip = getIPAddress(); $ip = getIPAddress();
$stmt = $conn0->prepare("UPDATE users SET latest_ip = ? WHERE id = ?"); $stmt = $conn0->prepare("UPDATE users SET latest_ip = ? WHERE id = ?");
$stmt->bind_param("si", $ip, $id); $stmt->bind_param("si", $ip, $id);
$stmt->execute(); $stmt->execute();
$stmt2 = $conn1->prepare("UPDATE userdata SET token = ? WHERE id = ?"); $stmt->close();
$stmt2->bind_param("si", $token, $id);
$stmt2->execute();
$data = ["session" => $token, "username" => $user['username'], "userid" => $id]; $data = ["session" => $token, "username" => $row['username'], "userid" => $id];
echo encrypt(json_encode(["success" => true, "data" => $data])); echo encrypt(json_encode(["success" => true, "data" => $data]));
$stmt->close();
$conn0->close(); $conn0->close();
$conn1->close(); $conn1->close();
+5 -7
View File
@@ -11,14 +11,12 @@ if (
getClientVersion() == "1.33" || getClientVersion() == "1.33" ||
getClientVersion() == "1.4.0-beta1" || getClientVersion() == "1.4.0-beta1" ||
getClientVersion() == "1.4.0" || getClientVersion() == "1.4.0" ||
getClientVersion() == "1.4.1" getClientVersion() == "1.4.1" ||
getClientVersion() == "1.5.0" ||
getClientVersion() == "1.5.1" ||
getClientVersion() == "1.5.2"
) { ) {
echo "-1"; exitWithMessage("-1", getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2");
exit;
}
if (getClientVersion() == "1.5.0" || getClientVersion() == "1.5.1" || getClientVersion() == "1.5.2") {
exitWithMessage("-1");
exit;
} }
exitWithMessage(json_encode(["success" => false, "message" => "You must use client version 26.1 or higher to register an account in game"])); exitWithMessage(json_encode(["success" => false, "message" => "You must use client version 26.1 or higher to register an account in game"]));
+5 -4
View File
@@ -13,8 +13,8 @@ if (!preg_match('/^[ a-zA-Z0-9!@#\$%\^&\*\(\)_\+\-=\[\]\{\};\':",\.<>\/\?\\\\|`~
$conn0 = newConnection(0); $conn0 = newConnection(0);
$conn1 = newConnection(1); $conn1 = newConnection(1);
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ? LIMIT 1"); $stmt = $conn0->prepare("SELECT * FROM users WHERE username = ? AND token = ? LIMIT 1");
$stmt->bind_param("s", $username); $stmt->bind_param("ss", $username, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
@@ -23,8 +23,8 @@ $stmt->close();
$user_id = $row["id"]; $user_id = $row["id"];
$stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE id = ? AND token = ? LIMIT 1"); $stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE id = ? LIMIT 1");
$stmt2->bind_param("is", $user_id, $token); $stmt2->bind_param("i", $user_id);
$stmt2->execute(); $stmt2->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt2->get_result();
$row2 = $result2->fetch_assoc(); $row2 = $result2->fetch_assoc();
@@ -53,6 +53,7 @@ $reason = base64_encode($reason);
$stmt = $conn1->prepare("INSERT INTO chatroom_reports (chatid, userId, reason, timestamp) VALUES (?, ?, ?, ?)"); $stmt = $conn1->prepare("INSERT INTO chatroom_reports (chatid, userId, reason, timestamp) VALUES (?, ?, ?, ?)");
$stmt->bind_param("iisi", $id, $user_id, $reason, $time); $stmt->bind_param("iisi", $id, $user_id, $reason, $time);
$stmt->execute(); $stmt->execute();
$stmt->close();
$conn0->close(); $conn0->close();
$conn1->close(); $conn1->close();
+10 -8
View File
@@ -40,10 +40,11 @@ try {
$conn0 = newConnection(0); $conn0 = newConnection(0);
$conn1 = newConnection(1); $conn1 = newConnection(1);
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT * FROM users WHERE username = ? AND token = ?");
$stmt->bind_param("s", $username); $stmt->bind_param("ss", $username, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows != 1) { if ($result->num_rows != 1) {
echo encrypt(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"])); echo encrypt(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"]));
@@ -55,10 +56,11 @@ if ($result->num_rows != 1) {
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
$id = $row["id"]; $id = $row["id"];
$stmt = $conn1->prepare("SELECT id FROM userdata WHERE token = ? AND id = ?"); $stmt = $conn1->prepare("SELECT id FROM userdata WHERE id = ?");
$stmt->bind_param("si", $token, $id); $stmt->bind_param("i", $id);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows != 1) { if ($result->num_rows != 1) {
echo encrypt(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"])); echo encrypt(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"]));
@@ -67,10 +69,10 @@ if ($result->num_rows != 1) {
exit; exit;
} }
$updateStmt = $conn1->prepare("UPDATE userdata SET save_data = ? WHERE token = ? AND id = ?"); $stmt = $conn1->prepare("UPDATE userdata SET save_data = ? WHERE id = ?");
$updateStmt->bind_param("ssi", $savedata, $token, $id); $stmt->bind_param("si", $savedata, $id);
$updateStmt->execute(); $stmt->execute();
$updateStmt->close(); $stmt->close();
echo encrypt(json_encode(["success" => true])); echo encrypt(json_encode(["success" => true]));
$conn0->close(); $conn0->close();
+8 -8
View File
@@ -18,23 +18,23 @@ if (!preg_match('/^[ a-zA-Z0-9!@#\$%\^&\*\(\)_\+\-=\[\]\{\};\':",\.<>\/\?\\\\|`~
$conn0 = newConnection(0); $conn0 = newConnection(0);
$conn1 = newConnection(1); $conn1 = newConnection(1);
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT * FROM users WHERE username = ? AND token = ?");
$stmt->bind_param("s", $username); $stmt->bind_param("ss", $username, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
if (!$row) exitWithMessage(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"])); if (!$row) exitWithMessage(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"]));
$stmt->close();
$id = $row["id"]; $id = $row["id"];
$stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE id = ? AND token = ?"); $stmt = $conn1->prepare("SELECT * FROM userdata WHERE id = ?");
$stmt2->bind_param("is", $id, $token); $stmt->bind_param("i", $id);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
$row2 = $result2->fetch_assoc(); $row2 = $result2->fetch_assoc();
if (!$row2) exitWithMessage(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"])); if (!$row2) exitWithMessage(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"]));
$stmt2->close();
$content = base64_encode($request_content); $content = base64_encode($request_content);
$time = time(); $time = time();
+8 -6
View File
@@ -14,18 +14,20 @@ if (!preg_match('/^[ a-zA-Z0-9!@#\$%\^&\*\(\)_\+\-=\[\]\{\};\':",\.<>\/\?\\\\|`~
$conn0 = newConnection(0); $conn0 = newConnection(0);
$conn1 = newConnection(1); $conn1 = newConnection(1);
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT * FROM users WHERE username = ? AND token = ?");
$stmt->bind_param("s", $username); $stmt->bind_param("ss", $username, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$stmt->close();
if ($result->num_rows != 1) exitWithMessage(json_encode(["success" => false])); if ($result->num_rows != 1) exitWithMessage(json_encode(["success" => false]));
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
$id = $row["id"]; $id = $row["id"];
$stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE token = ? AND id = ?"); $stmt = $conn1->prepare("SELECT * FROM userdata WHERE id = ?");
$stmt2->bind_param("si", $token, $id); $stmt->bind_param("i", $id);
$stmt2->execute(); $stmt->execute();
$result2 = $stmt2->get_result(); $result2 = $stmt->get_result();
$stmt->close();
if ($result2->num_rows != 1) exitWithMessage(json_encode(["success" => false])); if ($result2->num_rows != 1) exitWithMessage(json_encode(["success" => false]));
$row2 = $result2->fetch_assoc(); $row2 = $result2->fetch_assoc();
+1 -65
View File
@@ -1,68 +1,4 @@
<?php <?php
require __DIR__ . '/../incl/util.php'; require __DIR__ . '/../incl/util.php';
setPlainHeader(); setPlainHeader();
exitWithMessage(json_encode(["success" => false, "message" => "You must use client version 26.1 or higher to upload a marketplace icon"]));
$post = getPostData();
$token = $post['token'] ?? '';
$username = $post['username'] ?? '';
$price = (int)$post['price'] ?? 0;
$name = $post['name'] ?? '';
$name = base64_encode($name);
$filecontent = $post['filecontent'] ?? '';
if ($price < 10) exitWithMessage(json_encode(["success" => false, "message" => "Price cannot be be under 10 coins"]));
if (!preg_match('/^[a-zA-Z0-9 ]+$/', base64_decode($name))) exitWithMessage(json_encode(["success" => false, "message" => "Name is invalid"]));
if (!$filecontent) exitWithMessage(json_encode(["success" => false, "message" => "Invalid image uploaded"]));
$decoded = base64_decode($filecontent, true);
if (!$decoded) exitWithMessage(json_encode(["success" => false, "message" => "Invalid image uploaded"]));
if (strlen($decoded) > 1024 * 1024) exitWithMessage(json_encode(["success" => false, "message" => "File size exceeds 1 MB limit"]));
$info = getimagesizefromstring($decoded);
if (!$info) exitWithMessage(json_encode(["success" => false, "message" => "Invalid image uploaded"]));
if ($info[2] !== IMAGETYPE_PNG) exitWithMessage(json_encode(["success" => false, "message" => "Image must be a PNG"]));
if ($info[0] !== 128 || $info[1] !== 128) exitWithMessage(json_encode(["success" => false, "message" => "Image has to be 128x128"]));
$conn0 = newConnection(0);
$conn1 = newConnection(1);
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
if (!$row) exitWithMessage(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"]));
$stmt->close();
$id = $row["id"];
$stmt2 = $conn1->prepare("SELECT * FROM userdata WHERE token = ? AND id = ?");
$stmt2->bind_param("si", $token, $id);
$stmt2->execute();
$result2 = $stmt2->get_result();
$row2 = $result2->fetch_assoc();
if (!$row2) exitWithMessage(json_encode(["success" => false, "message" => "Invalid session token or username, please refresh login"]));
$stmt2->close();
$time = time();
$hash = hash('sha512', base64_decode($filecontent));
$stmt = $conn1->prepare("SELECT id FROM marketplaceicons WHERE hash = ?");
$stmt->bind_param("s", $hash);
$stmt->execute();
$result = $stmt->get_result();
if ($result->fetch_assoc()) {
$stmt->close();
exitWithMessage(json_encode(["success" => false, "message" => "This icon already exists in the marketplace"]));
}
$stmt->close();
$uuid = uuidv4();
$stmt = $conn1->prepare("INSERT INTO marketplaceicons (uuid, userId, data, hash, price, name, timestamp) VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sissisi", $uuid, $id, $filecontent, $hash, $price, $name, $time);
$stmt->execute();
$insertId = $conn1->insert_id;
$stmt->close();
echo encrypt(json_encode(["success" => true, "message" => "Icon uploaded successfully! It will be reviewed and accepted or denied soon"]));
$conn0->close();
$conn1->close();
+3 -4
View File
@@ -14,8 +14,8 @@ if ($liked !== 0 && $liked !== 1) {
exit; exit;
} }
$stmt = $conn0->prepare("SELECT * FROM users WHERE username = ?"); $stmt = $conn0->prepare("SELECT * FROM users WHERE username = ? AND token = ?");
$stmt->bind_param("s", $username); $stmt->bind_param("ss", $username, $token);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
$row = $result->fetch_assoc(); $row = $result->fetch_assoc();
@@ -27,7 +27,7 @@ $stmt->close();
$user_id = $row["id"]; $user_id = $row["id"];
$stmt = $conn1->prepare("SELECT votes, likes FROM userposts WHERE id = ?"); $stmt = $conn1->prepare("SELECT votes FROM userposts WHERE id = ?");
$stmt->bind_param("i", $targetId); $stmt->bind_param("i", $targetId);
$stmt->execute(); $stmt->execute();
$result = $stmt->get_result(); $result = $stmt->get_result();
@@ -39,7 +39,6 @@ if (!$row) {
$stmt->close(); $stmt->close();
$votes = json_decode($row["votes"], true) ?? []; $votes = json_decode($row["votes"], true) ?? [];
$likes = (int)$row["likes"];
if (isset($votes[$user_id])) { if (isset($votes[$user_id])) {
echo encrypt(json_encode(["success" => false, "message" => 'You have already voted'])); echo encrypt(json_encode(["success" => false, "message" => 'You have already voted']));
exit; exit;
+5 -5
View File
@@ -3,10 +3,6 @@ function setPlainHeader() {
header("Content-Type: text/plain"); header("Content-Type: text/plain");
} }
function setJsonHeader() {
header("Content-Type: application/json");
}
function getIPAddress() { function getIPAddress() {
return $_SERVER['REMOTE_ADDR']; return $_SERVER['REMOTE_ADDR'];
} }
@@ -31,9 +27,13 @@ function getClientVersion() {
return $_SERVER['HTTP_CLIENTVERSION']; return $_SERVER['HTTP_CLIENTVERSION'];
} }
function isLauncher() {
return ($_SERVER['HTTP_REQUESTER'] == "BerryDashLauncher" && $_SERVER['HTTP_LAUNCHERVERSION'] == "1.1.0");
}
function encrypt($plainText) { function encrypt($plainText) {
include __DIR__.'/../config/encryption.php'; include __DIR__.'/../config/encryption.php';
$key = $SERVER_SEND_TRANSFER_KEY_SPECIFIC[getClientVersion()]; $key = isLauncher() ? $SERVER_SEND_TRANSFER_KEY_SPECIFIC["1.6"] : $SERVER_SEND_TRANSFER_KEY_SPECIFIC[getClientVersion()];
if ($key == null) return; if ($key == null) return;
$iv = random_bytes(16); $iv = random_bytes(16);
$cipher = openssl_encrypt($plainText, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv); $cipher = openssl_encrypt($plainText, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);