1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-05-05 20:27:45 +00:00

Add setup page to download generated LauncherTweaks configs

This commit is contained in:
Joshua Goins 2025-05-03 18:49:39 -04:00
parent def9b4ab48
commit 7d7776f16e
5 changed files with 73 additions and 0 deletions

View file

@ -0,0 +1,7 @@
launcher_url = "http://{{ launcher_url }}/v700/"
disable_webview2_install = {{ enable_webview2 }}
disable_boot_version_check = true
force_http = true
game_patch_server = "{{ game_patch_server }}"
boot_patch_server = "{{ boot_patch_server }}"
extra_game_arguments = " /DEV.LobbyHost04 =127.0.0.1 /DEV.LobbyPort04 ={{ lobby_port }}"

View file

@ -0,0 +1,20 @@
{% extends "web_base.html" %}
{% block title %}Kawari - Setup{% endblock %}
{% block webbody %}
<section class="py-5 text-center container">
<h2>Official Launcher</h2>
<p>First, download <a href="https://github.com/redstrate/LauncherTweaks">LauncherTweaks</a> and place the <code>winmm.dll</code> next to <code>ffxivboot64.exe</code>. Download the config below, and place it in the same folder.</p>
<p><a href="/launcherconfig?type=webview2" download="launchertweaks.toml" class="btn btn-primary">Download Config (WebView2)</a></p>
<p><a href="/launcherconfig?type=ie11" download="launchertweaks.toml" class="btn btn-secondary">Download Config (IE)</a></p>
<p><small>If you're using Linux and have problems with WebView2, download the "IE" config. If you don't know what this means, then download the WebView2 config.</small></p>
<h2>Astra</h2>
<p>Instructions coming soon!</p>
</section>
{% endblock %}

View file

@ -15,6 +15,9 @@
<li class="nav-item">
<a class="nav-link" href="/worldstatus">World Status</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/setup">Setup</a>
</li>
</ul>
</div>
</div>

View file

@ -1,3 +1,4 @@
use axum::extract::Query;
use axum::response::Html;
use axum::{Router, routing::get};
use kawari::config::get_config;
@ -37,6 +38,18 @@ fn setup_default_environment() -> Environment<'static> {
.expect("Failed to find template!"),
)
.unwrap();
env.add_template_owned(
"setup.html",
std::fs::read_to_string("resources/templates/setup.html")
.expect("Failed to find template!"),
)
.unwrap();
env.add_template_owned(
"launchertweaks.toml",
std::fs::read_to_string("resources/templates/launchertweaks.toml")
.expect("Failed to find template!"),
)
.unwrap();
env
}
@ -70,6 +83,28 @@ async fn world_status() -> Html<String> {
)
}
async fn setup() -> Html<String> {
let environment = setup_default_environment();
let template = environment.get_template("setup.html").unwrap();
Html(template.render({}).unwrap())
}
#[derive(Deserialize)]
#[allow(dead_code)]
struct Params {
r#type: String,
}
async fn launcher_config(Query(params): Query<Params>) -> String {
let config = get_config();
let environment = setup_default_environment();
let template = environment.get_template("launchertweaks.toml").unwrap();
template
.render(context! { launcher_url => config.launcher.server_name, enable_webview2 => if params.r#type == "webview2" { false } else { true }, game_patch_server => config.patch.game_server_name, boot_patch_server => config.patch.boot_server_name, lobby_port => config.lobby.port })
.unwrap()
}
#[tokio::main]
async fn main() {
tracing_subscriber::fmt::init();
@ -77,6 +112,8 @@ async fn main() {
let app = Router::new()
.route("/", get(root))
.route("/worldstatus", get(world_status))
.route("/setup", get(setup))
.route("/launcherconfig", get(launcher_config))
.nest_service("/static", ServeDir::new("resources/static"));
let config = get_config();

View file

@ -132,6 +132,8 @@ pub struct PatchConfig {
/// ...
/// ```
pub patches_location: String,
pub game_server_name: String,
pub boot_server_name: String,
}
impl Default for PatchConfig {
@ -141,6 +143,8 @@ impl Default for PatchConfig {
listen_address: "127.0.0.1".to_string(),
patch_dl_url: "patch-dl.ffxiv.localhost".to_string(),
patches_location: String::new(),
boot_server_name: "patch-bootver.ffxiv.localhost".to_string(),
game_server_name: "patch-gamever.ffxiv.localhost".to_string(),
}
}
}
@ -284,6 +288,7 @@ impl WorldConfig {
pub struct LauncherConfig {
pub port: u16,
pub listen_address: String,
pub server_name: String,
}
impl Default for LauncherConfig {
@ -291,6 +296,7 @@ impl Default for LauncherConfig {
Self {
port: 5802,
listen_address: "127.0.0.1".to_string(),
server_name: "launcher.ffxiv.localhost".to_string(),
}
}
}