From dbd1e7e6ac90a45cdcee63d8ec717c51dc9d2977 Mon Sep 17 00:00:00 2001 From: Face <69168154+face-hh@users.noreply.github.com> Date: Sat, 9 Aug 2025 20:39:04 +0300 Subject: [PATCH] user agent --- flumi/Scripts/FontManager.gd | 5 +++- flumi/Scripts/Network.gd | 5 +++- flumi/Scripts/Tags/img.gd | 2 +- flumi/Scripts/Utils/Lua/Network.gd | 7 ++++++ flumi/Scripts/Utils/UserAgent.gd | 36 ++++++++++++++++++++++++++++ flumi/Scripts/Utils/UserAgent.gd.uid | 1 + flumi/project.godot | 1 + 7 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 flumi/Scripts/Utils/UserAgent.gd create mode 100644 flumi/Scripts/Utils/UserAgent.gd.uid diff --git a/flumi/Scripts/FontManager.gd b/flumi/Scripts/FontManager.gd index 6c8cc8e..8120cd0 100644 --- a/flumi/Scripts/FontManager.gd +++ b/flumi/Scripts/FontManager.gd @@ -60,7 +60,10 @@ static func load_web_font(font_info: Dictionary) -> void: temp_parent.queue_free() ) - http_request.request(src) + var headers = PackedStringArray() + headers.append("User-Agent: " + UserAgent.get_user_agent()) + + http_request.request(src, headers) static func get_font(family_name: String) -> Font: if family_name == "sans-serif": diff --git a/flumi/Scripts/Network.gd b/flumi/Scripts/Network.gd index 1f04040..deecf10 100644 --- a/flumi/Scripts/Network.gd +++ b/flumi/Scripts/Network.gd @@ -7,7 +7,10 @@ func fetch_image(url: String) -> ImageTexture: if url.is_empty(): return null - var error = http_request.request(url) + var request_headers = PackedStringArray() + request_headers.append("User-Agent: " + UserAgent.get_user_agent()) + + var error = http_request.request(url, request_headers) if error != OK: print("Error making HTTP request: ", error) http_request.queue_free() diff --git a/flumi/Scripts/Tags/img.gd b/flumi/Scripts/Tags/img.gd index 87226ca..bb18566 100644 --- a/flumi/Scripts/Tags/img.gd +++ b/flumi/Scripts/Tags/img.gd @@ -35,4 +35,4 @@ func load_image_async(src: String, element: HTMLParser.HTMLElement, parser: HTML custom_minimum_size = Vector2.ZERO else: custom_minimum_size = Vector2(1, 1) - size = Vector2(100, 100) # StyleManager will handle this \ No newline at end of file + size = Vector2(100, 100) # StyleManager will handle this diff --git a/flumi/Scripts/Utils/Lua/Network.gd b/flumi/Scripts/Utils/Lua/Network.gd index a5d866b..8da9dcb 100644 --- a/flumi/Scripts/Utils/Lua/Network.gd +++ b/flumi/Scripts/Utils/Lua/Network.gd @@ -19,9 +19,16 @@ static func _lua_fetch_handler(vm: LuauVM) -> int: # Set request options var headers_array: PackedStringArray = [] + + var has_user_agent = false for header_name in headers: + if str(header_name).to_lower() == "user-agent": + has_user_agent = true headers_array.append(str(header_name) + ": " + str(headers[header_name])) + if not has_user_agent: + headers_array.append("User-Agent: " + UserAgent.get_user_agent()) + var response_data = make_http_request(url, method, headers_array, body) # Create response object with actual data diff --git a/flumi/Scripts/Utils/UserAgent.gd b/flumi/Scripts/Utils/UserAgent.gd new file mode 100644 index 0000000..838053f --- /dev/null +++ b/flumi/Scripts/Utils/UserAgent.gd @@ -0,0 +1,36 @@ +class_name UserAgent +extends RefCounted + +# Generate Flumi browser user agent string +static func get_user_agent() -> String: + var app_version = ProjectSettings.get_setting("application/config/version", "1.0.0") + var godot_version = Engine.get_version_info() + var os_name = OS.get_name() + + var arch = "" + match os_name: + "Windows": + if OS.has_environment("PROCESSOR_ARCHITEW6432"): + arch = "x64" + elif OS.get_environment("PROCESSOR_ARCHITECTURE") == "AMD64": + arch = "x64" + else: + arch = "x86" + "Linux": + arch = "X11" + "macOS": + arch = "Intel" + _: + arch = "Unknown" + + var user_agent = "Mozilla/5.0 (%s; %s) Flumi/%s GurtKit/%s Godot/%s.%s.%s (gurted.com)" % [ + os_name, + arch, + app_version, + app_version, + godot_version.major, + godot_version.minor, + godot_version.patch + ] + print(user_agent) + return user_agent diff --git a/flumi/Scripts/Utils/UserAgent.gd.uid b/flumi/Scripts/Utils/UserAgent.gd.uid new file mode 100644 index 0000000..4fd054b --- /dev/null +++ b/flumi/Scripts/Utils/UserAgent.gd.uid @@ -0,0 +1 @@ +uid://v5m04vgylwbi diff --git a/flumi/project.godot b/flumi/project.godot index f7bf19f..b9bb6e8 100644 --- a/flumi/project.godot +++ b/flumi/project.godot @@ -11,6 +11,7 @@ config_version=5 [application] config/name="Flumi" +config/version="1.0.0" run/main_scene="uid://bytm7bt2s4ak8" config/features=PackedStringArray("4.4", "Forward Plus") config/icon="uid://ctpe0lbehepen"