diff --git a/Slon/Http/AdminServer.HC b/Slon/Http/AdminServer.HC index 6589d28..3c8acb5 100644 --- a/Slon/Http/AdminServer.HC +++ b/Slon/Http/AdminServer.HC @@ -328,6 +328,10 @@ U0 @slon_admin_server_get(SlonHttpSession* session) session->send(db->o("instance")); return; } + if (!StrICmp("/manage/settings", session->path())) { + session->send(db->o("settings")); + return; + } if (!StrICmp("/", session->path())) { @slon_http_send_html_file(session, "M:/Slon/Static/html/admin/main.html"); @@ -355,6 +359,17 @@ U0 @slon_admin_setup_instance(SlonHttpSession* session) session->send(SLON_EMPTY_JSON_OBJECT); } +U0 @slon_admin_save_settings(SlonHttpSession* session) +{ + SLON_SCRATCH_BUFFER_AND_REQUEST_JSON + no_warn scratch_buffer; + + db->set("settings", request_json, JSON_OBJECT); + @slon_db_save_settings_to_disk; + + session->send(SLON_EMPTY_JSON_OBJECT); +} + U0 @slon_admin_server_post(SlonHttpSession* session) { if (StrFind("json", session->header("content-type")) > 0) { @@ -366,6 +381,11 @@ U0 @slon_admin_server_post(SlonHttpSession* session) return; } + if (!StrICmp("/save/settings", session->path())) { + @slon_admin_save_settings(session); + return; + } + if (!StrICmp("/new/account", session->path())) { @slon_admin_new_account(session); return; diff --git a/Slon/Modules/Db.HC b/Slon/Modules/Db.HC index bde07e2..8c2f692 100644 --- a/Slon/Modules/Db.HC +++ b/Slon/Modules/Db.HC @@ -107,6 +107,13 @@ U0 @slon_db_load_markers_from_disk() db->set("markers", markers, JSON_OBJECT); } +U0 @slon_db_load_settings_from_disk() +{ + U8 scratch_buffer[256]; + StrPrint(scratch_buffer, "%s/settings.json", SLON_DB_PATH); + db->set("settings", Json.ParseFile(scratch_buffer), JSON_OBJECT); +} + U0 @slon_db_load_statuses_from_disk() { JsonObject* statuses = Json.CreateObject(); @@ -228,6 +235,13 @@ U0 @slon_db_save_markers_to_disk() } } +U0 @slon_db_save_settings_to_disk() +{ + U8 scratch_buffer[256]; + StrPrint(scratch_buffer, "%s/settings.json", SLON_DB_PATH); + Json.DumpToFile(scratch_buffer, db->o("settings")); +} + U0 @slon_db_save_statuses_to_disk() { U8 scratch_buffer[256]; @@ -263,6 +277,7 @@ U0 @slon_db_save_to_disk() @slon_db_save_markers_to_disk(); @slon_db_save_oauth_to_disk(); @slon_db_save_private_keys_to_disk(); + @slon_db_save_settings_to_disk(); @slon_db_save_statuses_to_disk(); @slon_db_save_timelines_to_disk(); } @@ -281,6 +296,7 @@ U0 @slon_db_load_from_defaults() db->set("instance", Json.ParseFile("M:/Slon/Static/defaults/instance.json"), JSON_OBJECT); db->set("markers", Json.CreateObject(), JSON_OBJECT); db->set("media", Json.CreateObject(), JSON_OBJECT); + db->set("settings", Json.CreateObject(), JSON_OBJECT); db->set("statuses", Json.CreateObject(), JSON_OBJECT); db->set("timelines", Json.CreateObject(), JSON_OBJECT); db->o("timelines")->set("home", Json.CreateObject(), JSON_OBJECT); @@ -309,6 +325,7 @@ U0 @slon_db_load_from_disk() @slon_db_load_markers_from_disk(); db->set("media", Json.CreateObject(), JSON_OBJECT); @slon_db_load_oauth_from_disk(); + @slon_db_load_settings_from_disk(); @slon_db_load_statuses_from_disk(); @slon_db_load_timelines_from_disk(); db->set("setup", TRUE, JSON_BOOLEAN); diff --git a/Slon/Static/html/admin/main.html b/Slon/Static/html/admin/main.html index cb4eef0..941cb67 100644 --- a/Slon/Static/html/admin/main.html +++ b/Slon/Static/html/admin/main.html @@ -36,6 +36,7 @@
  • Accounts
  • Instance
  • +
  • Settings

Diagnostics

    @@ -45,6 +46,7 @@