A slightly dynamic administration page. As always, uncertain if this is a good direction.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4062 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
Cory McWilliams 2022-12-01 00:26:51 +00:00
parent b1ff215ad7
commit d8fb956c14
3 changed files with 43 additions and 12 deletions

View File

@ -6,6 +6,19 @@ var gProcessIndex = 0;
var gProcesses = {}; var gProcesses = {};
var gStatsTimer = false; var gStatsTimer = false;
const k_global_settings = {
index: {
type: 'string',
default_value: '/~core/apps/',
description: 'Default path.',
},
room: {
type: 'boolean',
default_value: true,
description: 'Whether this instance should behave as a room.',
},
};
var gGlobalSettings = { var gGlobalSettings = {
index: "/~core/apps/", index: "/~core/apps/",
}; };
@ -240,6 +253,15 @@ async function getProcessBlob(blobId, key, options) {
} }
}; };
if (process.credentials?.permissions?.administration) { if (process.credentials?.permissions?.administration) {
imports.core.globalSettingsDescriptions = function() {
let settings = Object.assign({}, k_global_settings);
for (let [key, value] of Object.entries(gGlobalSettings)) {
if (settings[key]) {
settings[key].value = value;
}
}
return settings;
};
imports.core.globalSettingsGet = function(key) { imports.core.globalSettingsGet = function(key) {
return gGlobalSettings[key]; return gGlobalSettings[key];
}; };

View File

@ -4,6 +4,7 @@ var g_database = new Database('core');
let g_attendants = {}; let g_attendants = {};
const k_use_create_history_stream = false; const k_use_create_history_stream = false;
const k_blobs_concurrent_target = 8; const k_blobs_concurrent_target = 8;
const k_settings = JSON.parse(g_database.get('settings') ?? '{}');
function following(db, id) { function following(db, id) {
var o = db.get(id + ":following"); var o = db.get(id + ":following");
@ -195,7 +196,11 @@ ssb.addRpc(['blobs', 'createWants'], function(request) {
}); });
ssb.addRpc(['tunnel', 'isRoom'], function(request) { ssb.addRpc(['tunnel', 'isRoom'], function(request) {
request.send_json({"name": "tilde friends tunnel", "membership": false, "features": ["tunnel", "room1"]}); if (k_settings.room) {
request.send_json({"name": "tilde friends tunnel", "membership": false, "features": ["tunnel", "room1"]});
} else {
request.send_json(false);
}
}); });
function notify_attendant_changed(id, type) { function notify_attendant_changed(id, type) {

View File

@ -250,17 +250,19 @@ xopt_help:
static int _tf_command_export(const char* file, int argc, char* argv[]) static int _tf_command_export(const char* file, int argc, char* argv[])
{ {
typedef struct args_t { typedef struct args_t {
const char* user;
const char* db_path; const char* db_path;
bool help; bool help;
} args_t; } args_t;
xoptOption options[] = { xoptOption options[] = {
{ "db-path", 'd', offsetof(args_t, db_path), NULL, XOPT_TYPE_STRING, NULL, "Sqlite database path (default: db.sqlite)." }, { "db-path", 'd', offsetof(args_t, db_path), NULL, XOPT_TYPE_STRING, NULL, "Sqlite database path (default: db.sqlite)." },
{ "user", 'u', offsetof(args_t, user), NULL, XOPT_TYPE_STRING, NULL, "User into whose apps will be exported (default: \"cory\")." },
{ "help", 'h', offsetof(args_t, help), NULL, XOPT_TYPE_BOOL, NULL, "Shows this help message." }, { "help", 'h', offsetof(args_t, help), NULL, XOPT_TYPE_BOOL, NULL, "Shows this help message." },
XOPT_NULLOPTION, XOPT_NULLOPTION,
}; };
args_t args = { 0 }; args_t args = { .user = "cory" };
const char** extras = NULL; const char** extras = NULL;
int extra_count = 0; int extra_count = 0;
const char *err = NULL; const char *err = NULL;
@ -292,19 +294,21 @@ static int _tf_command_export(const char* file, int argc, char* argv[])
else else
{ {
const char* k_export[] = { const char* k_export[] = {
"/~cory/admin", "admin",
"/~cory/api", "api",
"/~cory/apps", "apps",
"/~cory/db", "db",
"/~cory/docs", "docs",
"/~cory/follow", "follow",
"/~cory/ssblit", "ssblit",
"/~cory/todo", "todo",
}; };
for (int i = 0; i < (int)_countof(k_export); i++) for (int i = 0; i < (int)_countof(k_export); i++)
{ {
printf("Exporting %s...\n", k_export[i]); char buffer[256];
tf_ssb_export(ssb, k_export[i]); snprintf(buffer, sizeof(buffer), "/~%s/%s", args.user, k_export[i]);
printf("Exporting %s...\n", buffer);
tf_ssb_export(ssb, buffer);
} }
} }
tf_ssb_destroy(ssb); tf_ssb_destroy(ssb);