From b503c0adfbae2f6c34bcd362f90a18c6bbd005a1 Mon Sep 17 00:00:00 2001 From: Leonmmcoset Date: Fri, 7 Nov 2025 20:47:41 +0800 Subject: [PATCH] upd --- SETUP_GUIDE.md | 283 +++++++++++ flumi/Scenes/BrowserMenus/settings.tscn | 4 +- flumi/Scripts/Browser/GurtProtocol.gd | 8 +- flumi/Scripts/Browser/SettingsManager.gd | 2 +- flumi/export_presets.cfg | 223 +++++++++ protocol/gurtca/Cargo.lock | 568 +++++++++++++++++++++-- protocol/gurtca/src/client.rs | 2 +- protocol/library/src/client.rs | 4 +- search-engine/frontend/search.lua | 4 +- search-engine/src/crawler.rs | 4 +- 10 files changed, 1062 insertions(+), 40 deletions(-) create mode 100644 SETUP_GUIDE.md diff --git a/SETUP_GUIDE.md b/SETUP_GUIDE.md new file mode 100644 index 0000000..f409713 --- /dev/null +++ b/SETUP_GUIDE.md @@ -0,0 +1,283 @@ +# Gurted生态系统搭建指南 + +本指南将帮助您完整搭建Gurted生态系统的所有组件,使其正常运行。 + +## 1. 环境准备 + +### 1.1 安装必要的工具和依赖 + +```bash +# 安装Rust (如果尚未安装) +choco install rustup +rustup default stable + +# 安装PostgreSQL (用于DNS和搜索引擎) +choco install postgresql + +# 安装mkcert (用于开发环境的TLS证书) +choco install mkcert + +# 安装Godot 4.x (用于运行和开发Flumi浏览器) +# 访问 https://godotengine.org/download 下载并安装 + +# 安装Node.js和npm (用于前端开发) +choco install nodejs +``` + +### 1.2 安装本地CA证书 (仅开发环境) + +```bash +mkcert -install +``` + +## 2. DNS系统搭建 + +### 2.1 配置PostgreSQL数据库 + +```bash +# 启动PostgreSQL服务 +pg_ctl -D "C:\Program Files\PostgreSQL\版本\data" start + +# 创建数据库和用户 +psql -U postgres +CREATE DATABASE gurt_dns; +CREATE USER gurt_user WITH PASSWORD 'your_password'; +GRANT ALL PRIVILEGES ON DATABASE gurt_dns TO gurt_user; +\q +``` + +### 2.2 配置DNS服务器 + +```bash +cd d:\Projects\Rust\leonwww\dns +cp config.template.toml config.toml +``` + +编辑`config.toml`文件,配置数据库连接等信息: + +```toml +[database] +url = "postgres://gurt_user:your_password@localhost/gurt_dns" + +[server] +address = "127.0.0.1" +port = 4877 +``` + +### 2.3 运行DNS服务器 + +```bash +cd d:\Projects\Rust\leonwww\dns +cargo run +``` + +DNS服务器现在应该运行在http://127.0.0.1:4877 + +## 3. GurtCA证书颁发机构搭建 + +### 3.1 编译GurtCA + +```bash +cd d:\Projects\Rust\leonwww\protocol\gurtca +cargo build --release +``` + +### 3.2 获取CA证书 + +要使用GurtCA,首先需要获取CA证书。注意:GurtCA工具需要使用lw://协议的URL: + +```bash +cd d:\Projects\Rust\leonwww\protocol\gurtca\target\release +# 使用默认的lw://dns.root CA URL +./gurtca get-ca --output ./ca.crt + +# 或者指定自定义的CA URL +./gurtca get-ca --ca-url lw://your-ca-server --output ./ca.crt +``` + +重要说明: +- GurtCA工具需要使用lw://协议的URL(不支持http://或https://) +- 默认CA URL是lw://dns.root +- 如果连接失败,工具会尝试通过HTTP引导服务器(默认是http://10.0.0.138:8876)获取CA证书 +- 您可能需要确保本地运行的DNS服务器可以解析这些地址 + +### 3.3 请求域名证书 + +要为您的域名请求证书: + +```bash +cd d:\Projects\Rust\leonwww\protocol\gurtca\target\release +./gurtca request yourdomain.web --output ./certs +``` + +按照提示完成DNS挑战验证。 + +## 4. GURT协议服务器设置 + +### 4.1 生成TLS证书 + +#### 开发环境: + +```bash +cd d:\Projects\Rust\leonwww\protocol\cli +mkcert localhost 127.0.0.1 ::1 +``` + +#### 生产环境: + +使用GurtCA获取证书: + +```bash +cd d:\Projects\Rust\leonwww\protocol\gurtca\target\release +./gurtca request yourdomain.web --output ./certs +``` + +按照提示完成DNS验证挑战。 + +### 4.2 配置Gurty CLI + +```bash +cd d:\Projects\Rust\leonwww\protocol\cli +cp gurty.template.toml gurty.toml +``` + +编辑`gurty.toml`文件以适应您的环境。 + +### 4.3 启动GURT服务器 + +```bash +cd d:\Projects\Rust\leonwww\protocol\cli +# 使用自签名证书(开发环境) +gurty serve --cert localhost+2.pem --key localhost+2-key.pem --config gurty.toml + +# 或使用CA颁发的证书(生产环境) +gurty serve --cert ./certs/yourdomain.web.crt --key ./certs/yourdomain.web.key --config gurty.toml +``` + +## 5. 搜索引擎搭建 + +### 5.1 配置搜索引擎数据库 + +```bash +psql -U postgres +CREATE DATABASE gurt_search; +GRANT ALL PRIVILEGES ON DATABASE gurt_search TO gurt_user; +\q +``` + +### 5.2 配置搜索引擎 + +```bash +cd d:\Projects\Rust\leonwww\search-engine +cp config.template.toml config.toml +``` + +编辑`config.toml`文件,配置数据库连接和其他参数: + +```toml +[database] +url = "postgres://gurt_user:your_password@localhost/gurt_search" + +[server] +address = "127.0.0.1" +port = 4879 +cert_path = "certs/t.crt" +key_path = "certs/t.key" +``` + +### 5.3 运行搜索引擎 + +```bash +cd d:\Projects\Rust\leonwww\search-engine +cargo run +``` + +搜索引擎现在应该运行在lw://127.0.0.1:4879 + +## 6. Flumi浏览器设置 + +### 6.1 编译和运行Flumi + +1. 启动Godot引擎 +2. 导入`d:\Projects\Rust\leonwww\flumi`项目 +3. 构建并运行项目 + +### 6.2 配置Flumi连接到本地服务器 + +在Flumi浏览器中,您可以访问以下地址测试各个组件: +- DNS服务器: http://127.0.0.1:4877 +- GURT服务器: lw://localhost:4878 +- 搜索引擎: lw://127.0.0.1:4879 + +## 7. 开发流程 + +如果您修改了协议库或GDExtension,需要重新构建GDExtension: + +```bash +cd d:\Projects\Rust\leonwww\protocol\gdextension +./build.sh +cp -r ./addon d:\Projects\Rust\leonwww\flumi\addons\gurt-protocol\ +``` + +## 8. 完整生态系统的组件关系 + +- **DNS系统**: 管理域名解析,允许用户注册自定义TLD域名 +- **GurtCA**: 颁发TLS证书,确保通信安全 +- **GURT协议库**: 提供协议实现,被CLI和浏览器使用 +- **Gurty CLI**: 用于设置和管理GURT服务器 +- **Flumi浏览器**: 访问GURT网络的客户端工具 +- **Ringle搜索引擎**: 索引和搜索GURT网络内容 + +## 9. 测试 + +使用`tests`目录中的示例文件来测试GURT协议的各种功能: + +```bash +# 在GURT服务器中提供测试文件 +cd d:\Projects\Rust\leonwww\protocol\cli +gurty serve --root ../tests --cert localhost+2.pem --key localhost+2-key.pem +``` + +然后在Flumi浏览器中访问:lw://localhost:4878/index.html + +## 10. 部署建议 + +对于生产环境部署,建议使用Docker容器: + +### DNS服务器部署 + +```bash +cd d:\Projects\Rust\leonwww\dns +docker-compose up -d +``` + +### 搜索引擎部署 + +```bash +cd d:\Projects\Rust\leonwww\search-engine +docker-compose up -d +``` + +## 11. 常见问题解答 + +### 11.1 TLS证书问题 + +- 确保正确安装了CA证书 +- 检查证书路径是否正确配置 +- 验证证书是否在有效期内 + +### 11.2 数据库连接问题 + +- 确认PostgreSQL服务正在运行 +- 检查数据库连接字符串是否正确 +- 验证用户权限设置是否正确 + +### 11.3 网络连接问题 + +- 检查防火墙设置 +- 验证端口是否已正确配置 +- 确保所有组件使用相同的协议版本 + +--- + +按照本指南,您应该能够成功搭建完整的Gurted生态系统。如果遇到任何问题,请参考各组件的README文件获取更详细的信息。 \ No newline at end of file diff --git a/flumi/Scenes/BrowserMenus/settings.tscn b/flumi/Scenes/BrowserMenus/settings.tscn index 4795186..a405d8b 100644 --- a/flumi/Scenes/BrowserMenus/settings.tscn +++ b/flumi/Scenes/BrowserMenus/settings.tscn @@ -567,8 +567,8 @@ text = "DNS服务器URL: " layout_mode = 2 size_flags_horizontal = 3 theme_override_styles/normal = SubResource("StyleBoxFlat_input") -text = "135.125.163.131:4878" -placeholder_text = "135.125.163.131:4878" +text = "10.0.0.138:4878" +placeholder_text = "10.0.0.138:4878" [node name="AboutPanel" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack"] layout_mode = 2 diff --git a/flumi/Scripts/Browser/GurtProtocol.gd b/flumi/Scripts/Browser/GurtProtocol.gd index 596031b..94daabb 100644 --- a/flumi/Scripts/Browser/GurtProtocol.gd +++ b/flumi/Scripts/Browser/GurtProtocol.gd @@ -1,7 +1,7 @@ extends RefCounted class_name GurtProtocol -static var DNS_SERVER_IP: String = "135.125.163.131" +static var DNS_SERVER_IP: String = "10.0.0.138" static var DNS_SERVER_PORT: int = 4878 static func set_dns_server(ip_port: String): @@ -67,11 +67,11 @@ static func resolve_gurt_domain(domain: String) -> String: static func get_error_type(error_message: String) -> Dictionary: if "DNS server is not responding" in error_message or "Domain not found" in error_message: - return {"code": "ERR_NAME_NOT_RESOLVED", "title": "无法连接到站点", "icon": "? :("} + return {"code": "ERR_NAME_NOT_RESOLVED", "title": "连接站点时失败", "icon": "? :("} elif "timeout" in error_message.to_lower() or "timed out" in error_message.to_lower(): - return {"code": "ERR_CONNECTION_TIMED_OUT", "title": "连接网站中超时", "icon": "...?"} + return {"code": "ERR_CONNECTION_TIMED_OUT", "title": "连接站点时失败", "icon": "...?"} elif "Failed to fetch" in error_message or "No response" in error_message: - return {"code": "ERR_CONNECTION_REFUSED", "title": "连接出现问题", "icon": ">:("} + return {"code": "ERR_CONNECTION_REFUSED", "title": "连接站点时失败", "icon": ">:("} elif "Invalid domain format" in error_message: return {"code": "ERR_INVALID_URL", "title": "页面没有在运作", "icon": ":|"} else: diff --git a/flumi/Scripts/Browser/SettingsManager.gd b/flumi/Scripts/Browser/SettingsManager.gd index 5fbb890..c8155cd 100644 --- a/flumi/Scripts/Browser/SettingsManager.gd +++ b/flumi/Scripts/Browser/SettingsManager.gd @@ -8,7 +8,7 @@ var settings_data = { "startup_url": "", "search_engine_url": "lw://search.web?q=", "download_confirmation": true, - "dns_url": "135.125.163.131:4878" + "dns_url": "10.0.0.138:4878" } var _loaded = false diff --git a/flumi/export_presets.cfg b/flumi/export_presets.cfg index ba817c9..0a12aed 100644 --- a/flumi/export_presets.cfg +++ b/flumi/export_presets.cfg @@ -26,6 +26,7 @@ debug/export_console_wrapper=1 binary_format/embed_pck=false texture_format/s3tc_bptc=true texture_format/etc2_astc=false +shader_baker/enabled=false binary_format/architecture="x86_64" ssh_remote_deploy/enabled=false ssh_remote_deploy/host="user@host_ip" @@ -68,6 +69,7 @@ debug/export_console_wrapper=0 binary_format/embed_pck=false texture_format/s3tc_bptc=true texture_format/etc2_astc=false +shader_baker/enabled=false binary_format/architecture="x86_64" codesign/enable=false codesign/timestamp=true @@ -106,3 +108,224 @@ Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorActi ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue Remove-Item -Recurse -Force '{temp_dir}'" + +[preset.2] + +name="Android" +platform="Android" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="./build.apk" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.2.options] + +custom_template/debug="" +custom_template/release="" +gradle_build/use_gradle_build=false +gradle_build/gradle_build_directory="" +gradle_build/android_source_template="" +gradle_build/compress_native_libraries=false +gradle_build/export_format=0 +gradle_build/min_sdk="" +gradle_build/target_sdk="" +gradle_build/custom_theme_attributes={} +architectures/armeabi-v7a=false +architectures/arm64-v8a=true +architectures/x86=false +architectures/x86_64=false +version/code=1 +version/name="" +package/unique_name="com.example.$genname" +package/name="" +package/signed=true +package/app_category=2 +package/retain_data_on_uninstall=false +package/exclude_from_recents=false +package/show_in_android_tv=false +package/show_in_app_library=true +package/show_as_launcher_app=false +launcher_icons/main_192x192="" +launcher_icons/adaptive_foreground_432x432="" +launcher_icons/adaptive_background_432x432="" +launcher_icons/adaptive_monochrome_432x432="" +graphics/opengl_debug=false +shader_baker/enabled=false +xr_features/xr_mode=0 +gesture/swipe_to_dismiss=false +screen/immersive_mode=true +screen/edge_to_edge=false +screen/support_small=true +screen/support_normal=true +screen/support_large=true +screen/support_xlarge=true +screen/background_color=Color(0, 0, 0, 1) +user_data_backup/allow=false +command_line/extra_args="" +apk_expansion/enable=false +apk_expansion/SALT="" +apk_expansion/public_key="" +permissions/custom_permissions=PackedStringArray() +permissions/access_checkin_properties=false +permissions/access_coarse_location=false +permissions/access_fine_location=false +permissions/access_location_extra_commands=false +permissions/access_media_location=false +permissions/access_mock_location=false +permissions/access_network_state=false +permissions/access_surface_flinger=false +permissions/access_wifi_state=false +permissions/account_manager=false +permissions/add_voicemail=false +permissions/authenticate_accounts=false +permissions/battery_stats=false +permissions/bind_accessibility_service=false +permissions/bind_appwidget=false +permissions/bind_device_admin=false +permissions/bind_input_method=false +permissions/bind_nfc_service=false +permissions/bind_notification_listener_service=false +permissions/bind_print_service=false +permissions/bind_remoteviews=false +permissions/bind_text_service=false +permissions/bind_vpn_service=false +permissions/bind_wallpaper=false +permissions/bluetooth=false +permissions/bluetooth_admin=false +permissions/bluetooth_privileged=false +permissions/brick=false +permissions/broadcast_package_removed=false +permissions/broadcast_sms=false +permissions/broadcast_sticky=false +permissions/broadcast_wap_push=false +permissions/call_phone=false +permissions/call_privileged=false +permissions/camera=false +permissions/capture_audio_output=false +permissions/capture_secure_video_output=false +permissions/capture_video_output=false +permissions/change_component_enabled_state=false +permissions/change_configuration=false +permissions/change_network_state=false +permissions/change_wifi_multicast_state=false +permissions/change_wifi_state=false +permissions/clear_app_cache=false +permissions/clear_app_user_data=false +permissions/control_location_updates=false +permissions/delete_cache_files=false +permissions/delete_packages=false +permissions/device_power=false +permissions/diagnostic=false +permissions/disable_keyguard=false +permissions/dump=false +permissions/expand_status_bar=false +permissions/factory_test=false +permissions/flashlight=false +permissions/force_back=false +permissions/get_accounts=false +permissions/get_package_size=false +permissions/get_tasks=false +permissions/get_top_activity_info=false +permissions/global_search=false +permissions/hardware_test=false +permissions/inject_events=false +permissions/install_location_provider=false +permissions/install_packages=false +permissions/install_shortcut=false +permissions/internal_system_window=false +permissions/internet=false +permissions/kill_background_processes=false +permissions/location_hardware=false +permissions/manage_accounts=false +permissions/manage_app_tokens=false +permissions/manage_documents=false +permissions/manage_external_storage=false +permissions/master_clear=false +permissions/media_content_control=false +permissions/modify_audio_settings=false +permissions/modify_phone_state=false +permissions/mount_format_filesystems=false +permissions/mount_unmount_filesystems=false +permissions/nfc=false +permissions/persistent_activity=false +permissions/post_notifications=false +permissions/process_outgoing_calls=false +permissions/read_calendar=false +permissions/read_call_log=false +permissions/read_contacts=false +permissions/read_external_storage=false +permissions/read_frame_buffer=false +permissions/read_history_bookmarks=false +permissions/read_input_state=false +permissions/read_logs=false +permissions/read_media_audio=false +permissions/read_media_images=false +permissions/read_media_video=false +permissions/read_media_visual_user_selected=false +permissions/read_phone_state=false +permissions/read_profile=false +permissions/read_sms=false +permissions/read_social_stream=false +permissions/read_sync_settings=false +permissions/read_sync_stats=false +permissions/read_user_dictionary=false +permissions/reboot=false +permissions/receive_boot_completed=false +permissions/receive_mms=false +permissions/receive_sms=false +permissions/receive_wap_push=false +permissions/record_audio=false +permissions/reorder_tasks=false +permissions/restart_packages=false +permissions/send_respond_via_message=false +permissions/send_sms=false +permissions/set_activity_watcher=false +permissions/set_alarm=false +permissions/set_always_finish=false +permissions/set_animation_scale=false +permissions/set_debug_app=false +permissions/set_orientation=false +permissions/set_pointer_speed=false +permissions/set_preferred_applications=false +permissions/set_process_limit=false +permissions/set_time=false +permissions/set_time_zone=false +permissions/set_wallpaper=false +permissions/set_wallpaper_hints=false +permissions/signal_persistent_processes=false +permissions/status_bar=false +permissions/subscribed_feeds_read=false +permissions/subscribed_feeds_write=false +permissions/system_alert_window=false +permissions/transmit_ir=false +permissions/uninstall_shortcut=false +permissions/update_device_stats=false +permissions/use_credentials=false +permissions/use_sip=false +permissions/vibrate=false +permissions/wake_lock=false +permissions/write_apn_settings=false +permissions/write_calendar=false +permissions/write_call_log=false +permissions/write_contacts=false +permissions/write_external_storage=false +permissions/write_gservices=false +permissions/write_history_bookmarks=false +permissions/write_profile=false +permissions/write_secure_settings=false +permissions/write_settings=false +permissions/write_sms=false +permissions/write_social_stream=false +permissions/write_sync_settings=false +permissions/write_user_dictionary=false diff --git a/protocol/gurtca/Cargo.lock b/protocol/gurtca/Cargo.lock index 59a2714..a10b5b4 100644 --- a/protocol/gurtca/Cargo.lock +++ b/protocol/gurtca/Cargo.lock @@ -141,6 +141,12 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + [[package]] name = "base64" version = "0.22.1" @@ -153,7 +159,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags", + "bitflags 2.9.2", "cexpr", "clang-sys", "itertools", @@ -170,6 +176,12 @@ dependencies = [ "which", ] +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.9.2" @@ -295,6 +307,16 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation" version = "0.10.1" @@ -334,6 +356,21 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "errno" version = "0.3.13" @@ -344,6 +381,18 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "foreign-types" version = "0.3.2" @@ -374,6 +423,45 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", +] + [[package]] name = "getrandom" version = "0.2.16" @@ -410,14 +498,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] -name = "gurt" +name = "gurtca" version = "0.1.0" dependencies = [ - "base64", + "anyhow", + "base64 0.22.1", + "chrono", + "clap", + "gurtlib", + "openssl", + "reqwest", + "serde", + "serde_json", + "tokio", + "uuid", +] + +[[package]] +name = "gurtlib" +version = "0.1.1" +dependencies = [ + "base64 0.22.1", "chrono", "rustls", "rustls-native-certs", - "rustls-pemfile", + "rustls-pemfile 2.2.0", "serde", "serde_json", "thiserror", @@ -428,21 +533,30 @@ dependencies = [ ] [[package]] -name = "gurtca" -version = "0.1.0" +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ - "anyhow", - "base64", - "chrono", - "clap", - "gurt", - "openssl", - "serde", - "serde_json", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", "tokio", - "uuid", + "tokio-util", + "tracing", ] +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + [[package]] name = "heck" version = "0.5.0" @@ -458,6 +572,77 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.10", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + [[package]] name = "iana-time-zone" version = "0.1.63" @@ -589,17 +774,33 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown", +] + [[package]] name = "io-uring" version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" dependencies = [ - "bitflags", + "bitflags 2.9.2", "cfg-if", "libc", ] +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -675,6 +876,12 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + [[package]] name = "litemap" version = "0.8.0" @@ -703,6 +910,12 @@ version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -729,6 +942,23 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + [[package]] name = "nom" version = "7.1.3" @@ -775,7 +1005,7 @@ version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags", + "bitflags 2.9.2", "cfg-if", "foreign-types", "libc", @@ -848,6 +1078,12 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "pkg-config" version = "0.3.32" @@ -903,7 +1139,7 @@ version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags", + "bitflags 2.9.2", ] [[package]] @@ -935,6 +1171,46 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 1.0.4", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + [[package]] name = "ring" version = "0.17.14" @@ -967,13 +1243,26 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags", + "bitflags 2.9.2", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", "windows-sys 0.59.0", ] +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags 2.9.2", + "errno", + "libc", + "linux-raw-sys 0.11.0", + "windows-sys 0.60.2", +] + [[package]] name = "rustls" version = "0.23.31" @@ -998,7 +1287,16 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework", + "security-framework 3.3.0", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", ] [[package]] @@ -1058,14 +1356,27 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.2", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + [[package]] name = "security-framework" version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" dependencies = [ - "bitflags", - "core-foundation", + "bitflags 2.9.2", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -1113,6 +1424,18 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + [[package]] name = "shlex" version = "1.3.0" @@ -1140,6 +1463,16 @@ version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "socket2" version = "0.6.0" @@ -1179,6 +1512,12 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "synstructure" version = "0.13.2" @@ -1190,6 +1529,40 @@ dependencies = [ "syn", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix 1.1.2", + "windows-sys 0.60.2", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -1235,7 +1608,7 @@ dependencies = [ "pin-project-lite", "signal-hook-registry", "slab", - "socket2", + "socket2 0.6.0", "tokio-macros", "windows-sys 0.59.0", ] @@ -1251,6 +1624,16 @@ dependencies = [ "syn", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.26.2" @@ -1261,6 +1644,25 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + [[package]] name = "tracing" version = "0.1.41" @@ -1292,6 +1694,12 @@ dependencies = [ "once_cell", ] +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + [[package]] name = "unicode-ident" version = "1.0.18" @@ -1344,6 +1752,15 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -1385,6 +1802,19 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.100" @@ -1417,6 +1847,16 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "which" version = "4.4.2" @@ -1426,7 +1866,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix", + "rustix 0.38.44", ] [[package]] @@ -1488,6 +1928,15 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -1515,6 +1964,21 @@ dependencies = [ "windows-targets 0.53.3", ] +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -1548,6 +2012,12 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -1560,6 +2030,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -1572,6 +2048,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -1596,6 +2078,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -1608,6 +2096,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -1620,6 +2114,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -1632,6 +2132,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -1644,13 +2150,23 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "wit-bindgen-rt" version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags", + "bitflags 2.9.2", ] [[package]] diff --git a/protocol/gurtca/src/client.rs b/protocol/gurtca/src/client.rs index 2ea757f..a1d0566 100644 --- a/protocol/gurtca/src/client.rs +++ b/protocol/gurtca/src/client.rs @@ -54,7 +54,7 @@ impl GurtCAClient { println!("🔄 System CA failed, attempting to fetch CA certificate..."); // Try to fetch CA certificate via HTTP bootstrap - let http_url = "http://135.125.163.131:8876"; + let http_url = "http://10.0.0.138:8876"; match reqwest::Client::new() .get(&format!("{}/ca/root", http_url)) diff --git a/protocol/library/src/client.rs b/protocol/library/src/client.rs index 213c11d..3f41ba5 100644 --- a/protocol/library/src/client.rs +++ b/protocol/library/src/client.rs @@ -51,7 +51,7 @@ impl Default for GurtClientConfig { enable_connection_pooling: true, max_connections_per_host: 4, custom_ca_certificates: Vec::new(), - dns_server_ip: "135.125.163.131".to_string(), + dns_server_ip: "10.0.0.138".to_string(), dns_server_port: 4878, read_timeout: Duration::from_secs(5), } @@ -517,7 +517,7 @@ impl GurtClient { fn parse_gurt_url(&self, url: &str) -> Result<(String, u16, String)> { let parsed_url = Url::parse(url).map_err(|e| GurtError::invalid_message(format!("Invalid URL: {}", e)))?; - if parsed_url.scheme() != "gurt" { + if parsed_url.scheme() != "lw" { return Err(GurtError::invalid_message("URL must use lw:// scheme")); } diff --git a/search-engine/frontend/search.lua b/search-engine/frontend/search.lua index f0fe150..5afe4e9 100644 --- a/search-engine/frontend/search.lua +++ b/search-engine/frontend/search.lua @@ -93,7 +93,7 @@ local function performSearch(query) showLoading() - local url = 'https://135.125.163.131:4880/api/search?q=' .. urlEncode(query) .. '&per_page=20' + local url = 'https://10.0.0.138:4880/api/search?q=' .. urlEncode(query) .. '&per_page=20' local response = fetch(url, { method = 'GET' }) @@ -120,7 +120,7 @@ local function performLuckySearch() local luckyTerms = {'test', 'demo', 'api', 'web', 'site', 'page', 'home', 'index'} local randomTerm = luckyTerms[math.random(#luckyTerms)] - local url = 'https://135.125.163.131:4880/api/search?q=' .. urlEncode(randomTerm) .. '&per_page=50' + local url = 'https://10.0.0.138:4880/api/search?q=' .. urlEncode(randomTerm) .. '&per_page=50' local response = fetch(url, { method = 'GET' }) diff --git a/search-engine/src/crawler.rs b/search-engine/src/crawler.rs index 44c930f..a8ffc0e 100644 --- a/search-engine/src/crawler.rs +++ b/search-engine/src/crawler.rs @@ -489,7 +489,7 @@ impl DomainCrawler { if let Some(link_element) = document.select(&link_selector).next() { if let Some(href) = link_element.value().attr("href") { // Convert relative URLs to absolute - if href.starts_with("http") || href.starts_with("gurt") { + if href.starts_with("http") || href.starts_with("lw") { return Some(href.to_string()); } else if let Ok(base) = Url::parse(base_url) { if let Ok(absolute_url) = base.join(href) { @@ -570,7 +570,7 @@ impl DomainCrawler { }; // Must be GURT protocol - if parsed_url.scheme() != "gurt" { + if parsed_url.scheme() != "lw" { return false; }