diff options
| author | 2024-01-11 00:39:56 -0600 | |
|---|---|---|
| committer | 2024-01-11 00:39:56 -0600 | |
| commit | b837ef02aff4c0974161ff2e077551a9710fdac5 (patch) | |
| tree | 3ae0af26264f2ec62af5ebf4391ef6399f67354f /src/cmd-version.c | |
| parent | actually use runtime (diff) | |
add auth
Diffstat (limited to 'src/cmd-version.c')
| -rw-r--r-- | src/cmd-version.c | 71 |
1 files changed, 60 insertions, 11 deletions
diff --git a/src/cmd-version.c b/src/cmd-version.c index 5796a72..b39daec 100644 --- a/src/cmd-version.c +++ b/src/cmd-version.c @@ -9,6 +9,7 @@ #include "assets.h" #include "launch.h" #include "instance.h" +#include "user.h" #include <jansson.h> #include <stdio.h> @@ -37,24 +38,56 @@ unsigned cmd_version_list_remote(struct l2_context_node *ctx, char **args) unsigned cmd_version_list_local(struct l2_context_node *ctx, char **args) { - json_t *manifest; - if (l2_runtime_load_manifest(&manifest) < 0) { - CMD_FATAL0("Failed to load manifest"); + int res; + if ((res = l2_user_load()) < 0) { + CMD_FATAL0("Failed to load users."); } - json_dumpf(manifest, stdout, JSON_INDENT(4)); - putchar('\n'); + struct l2_user *user = NULL; + for (struct l2_user *cur = l2_state.users_head; cur; cur = cur->next) { + if (!strcmp(cur->profile.name, *args)) { + user = cur; + break; + } + } + + struct l2_user luser; + memset(&luser, 0, sizeof(luser)); + + if (!user) { + CMD_DEBUG("User %s not found", *args); + user = &luser; + } - char *jrepath = NULL; + l2_user_session_t *session = user->session; + if (!session) { + session = l2_user_session_new(); - if (l2_runtime_install_component(manifest, "jre-legacy", &jrepath) < 0) { - CMD_FATAL0("Failed to install component"); + if (!session) { + CMD_FATAL0("Failed to create session"); + } + user->session = session; } - CMD_DEBUG("JRE path: %s", jrepath); + if ((res = l2_user_session_refresh(session)) < 0) { + CMD_FATAL0("Failed to refresh session"); + } else if (res == 0) { + if ((res = l2_user_session_login(session)) <= 0) { + CMD_FATAL0("Failed to login"); + } + } + + if (l2_user_update_profile(user) < 0) { + CMD_FATAL0("Failed to uhh stuff"); + } - free(jrepath); - json_decref(manifest); + if (user == &luser) { + l2_user_add(user); + } + + if (l2_user_save() < 0) { + CMD_FATAL0("Failed to save user"); + } return CMD_RESULT_SUCCESS; } @@ -69,6 +102,7 @@ bool feat_match_cb(const char *name, json_t *js, void *unused) { unsigned cmd_version_install(struct l2_context_node *ctx, char **args) { unsigned res = l2_version_load_remote(); + int ures; if (res != VERSION_SUCCESS) { CMD_FATAL("Failed to load versions: %s", l2_version_strerror(res)); } @@ -77,11 +111,26 @@ unsigned cmd_version_install(struct l2_context_node *ctx, char **args) CMD_FATAL("Failed to load instances: %s", l2_instance_errormsg[res]); } + if ((ures = l2_user_load()) < 0) { + CMD_FATAL0("Failed to load users"); + } + struct l2_launch launch = { 0 }; if (l2_launch_init(&launch, *args, l2_state.instance_head) < 0) { CMD_FATAL0("Failed to launch the game"); } + struct l2_user *user = NULL; + for (struct l2_user *cur = l2_state.users_head; cur; cur = cur->next) { + if (!strcmp(cur->profile.name, "figboot")) { + user = cur; + break; + } + } + + if (!user) CMD_FATAL0("figboot not found"); + launch.user = user; + if (l2_launch_init_substitutor(&launch) < 0) { CMD_FATAL0("Failed to initialize argument substitutor"); } |
