From cffa31496376a30fc8bc51f8bae6e0c301453897 Mon Sep 17 00:00:00 2001 From: Jecket <35532868+Jecket22@users.noreply.github.com> Date: Sat, 3 Feb 2024 17:06:02 +0100 Subject: [PATCH 1/5] fix toml version --- shard.lock | 2 +- shard.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/shard.lock b/shard.lock index 0e4f42f..b1fe099 100644 --- a/shard.lock +++ b/shard.lock @@ -30,5 +30,5 @@ shards: toml: git: https://github.com/crystal-community/toml.cr.git - version: 0.7.0+git.commit.4b6325e2a378bac4abc98ee4d5734d57a6a55554 + version: 0.7.0+git.commit.299f81a890bc01f3edca4fe3b29f9d08e86e538f diff --git a/shard.yml b/shard.yml index 39167f7..36605cd 100644 --- a/shard.yml +++ b/shard.yml @@ -21,6 +21,7 @@ dependencies: toml: github: crystal-community/toml.cr branch: master + commit: 299f81a http-session: github: straight-shoota/http-session athena-routing: From 5f923822fe881c42c054b730a2a5ee34c10045c8 Mon Sep 17 00:00:00 2001 From: Jecket <35532868+Jecket22@users.noreply.github.com> Date: Sat, 3 Feb 2024 17:07:31 +0100 Subject: [PATCH 2/5] expunge slashes the other way around --- src/server.cr | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/server.cr b/src/server.cr index 1ecf8c9..dc8c068 100644 --- a/src/server.cr +++ b/src/server.cr @@ -7,6 +7,8 @@ module CrystalGauntlet::Server def call(context : HTTP::Server::Context) # expunge trailing slashes path = context.request.path.chomp("/") + # remove slashes at the beginning of the path, if there are more than one + path = path.sub(/^\/*(?!\/)/, "/") path = path.sub(config_get("general.append_path").as(String | Nil) || "", "") @@ -29,7 +31,7 @@ module CrystalGauntlet::Server end end context.response.content_type = "text/plain" - context.response.respond_with_status(500, "-1") + context.response.respond_with_status(500, "uh oh!!! server did a fucky wucky") else max_size = 2048 From 49d8c9d1a509dedf1de6fdf26d456d4811dff747 Mon Sep 17 00:00:00 2001 From: Jecket <35532868+Jecket22@users.noreply.github.com> Date: Sat, 3 Feb 2024 17:07:55 +0100 Subject: [PATCH 3/5] fix* unregistered user -1 response --- src/endpoints/users/updateUser.cr | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/endpoints/users/updateUser.cr b/src/endpoints/users/updateUser.cr index 53ba211..f177207 100644 --- a/src/endpoints/users/updateUser.cr +++ b/src/endpoints/users/updateUser.cr @@ -8,7 +8,9 @@ CrystalGauntlet.endpoints["/updateGJUserScore22.php"] = ->(context : HTTP::Serve user_id, account_id = Accounts.auth(params) if !(user_id && account_id) - return "-1" + # we assume this is an unregistered user + # since the client expects the returned value to be ...its own user id? we just return 0 + return "0" end # todo: keep track of stat changes to look out for leaderboard cheating & whatnot From 5087d70bff4d7f5e98de09c7c0e08e57bdc72fc9 Mon Sep 17 00:00:00 2001 From: Jecket <35532868+Jecket22@users.noreply.github.com> Date: Sat, 3 Feb 2024 17:08:21 +0100 Subject: [PATCH 4/5] properly return "No comments" when there are no comments --- src/endpoints/comments/getCommentHistory.cr | 4 ++++ src/endpoints/comments/getLevelComments.cr | 4 ++++ src/endpoints/comments/getProfileComments.cr | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/src/endpoints/comments/getCommentHistory.cr b/src/endpoints/comments/getCommentHistory.cr index d7ffeaf..7f44c86 100644 --- a/src/endpoints/comments/getCommentHistory.cr +++ b/src/endpoints/comments/getCommentHistory.cr @@ -38,6 +38,10 @@ CrystalGauntlet.endpoints["/getGJCommentHistory.php"] = ->(context : HTTP::Serve amount = DATABASE.scalar("select count(*) from comments where user_id = ?", params["userID"].to_i).as(Int64) + if amount == 0 + return "-2" + end + comments_str = [] of String DATABASE.query("select comments.id, comment, comments.created_at, likes, level_id, users.username, users.icon_type, users.color1, users.color2, users.cube, users.ship, users.ball, users.ufo, users.wave, users.robot, users.spider, users.special from comments join users on users.id = user_id where user_id = ? order by comments.created_at desc limit #{comments_per_page} offset #{comment_offset}", params["userID"]) do |rs| diff --git a/src/endpoints/comments/getLevelComments.cr b/src/endpoints/comments/getLevelComments.cr index a75ca75..16896ef 100644 --- a/src/endpoints/comments/getLevelComments.cr +++ b/src/endpoints/comments/getLevelComments.cr @@ -14,6 +14,10 @@ CrystalGauntlet.endpoints["/getGJComments21.php"] = ->(context : HTTP::Server::C amount = DATABASE.scalar("select count(*) from comments where level_id = ?", level_id) + if amount == 0 + return "-2" + end + comments_str = [] of String users_str = [] of String has_users_str = false diff --git a/src/endpoints/comments/getProfileComments.cr b/src/endpoints/comments/getProfileComments.cr index c060463..cb808b1 100644 --- a/src/endpoints/comments/getProfileComments.cr +++ b/src/endpoints/comments/getProfileComments.cr @@ -14,6 +14,10 @@ CrystalGauntlet.endpoints["/getGJAccountComments20.php"] = ->(context : HTTP::Se amount = DATABASE.scalar("select count(*) from account_comments where account_id = ?", account_id) + if amount == 0 + return "-2" + end + users_str = [] of String DATABASE.query("select id, comment, created_at, likes from account_comments where account_id = ? order by created_at desc limit #{comments_per_page} offset #{comment_offset}", account_id) do |rs| From f4243057476307a397c960b85b7c67427e73f84e Mon Sep 17 00:00:00 2001 From: Jecket <35532868+Jecket22@users.noreply.github.com> Date: Sat, 3 Feb 2024 17:22:59 +0100 Subject: [PATCH 5/5] change default db location, again --- src/crystal-gauntlet.cr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crystal-gauntlet.cr b/src/crystal-gauntlet.cr index dbc69a7..255a446 100644 --- a/src/crystal-gauntlet.cr +++ b/src/crystal-gauntlet.cr @@ -59,7 +59,7 @@ module CrystalGauntlet config_get(key).as?(typeof(default)) || default end - DATABASE = DB.open(ENV["DATABASE_URL"]? || "sqlite3://./crystal-gauntlet.db") + DATABASE = DB.open(ENV["DATABASE_URL"]? || "sqlite3://./data/crystal-gauntlet.db") # todo: unhardcore DATA_FOLDER = Path.new("data")