aboutsummaryrefslogtreecommitdiffstats
path: root/src/cmd-version.c
diff options
context:
space:
mode:
authorLibravatar bigfoot547 <[email protected]>2024-01-11 00:39:56 -0600
committerLibravatar bigfoot547 <[email protected]>2024-01-11 00:39:56 -0600
commitb837ef02aff4c0974161ff2e077551a9710fdac5 (patch)
tree3ae0af26264f2ec62af5ebf4391ef6399f67354f /src/cmd-version.c
parentactually use runtime (diff)
add auth
Diffstat (limited to 'src/cmd-version.c')
-rw-r--r--src/cmd-version.c71
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");
}