diff --git a/inc/lektor/commands.h b/inc/lektor/commands.h index 7cc63b06322b7af24744adae05506ff149e140ca..bae6beeb64f2f5dec74a45dedd77c348ae32e634 100644 --- a/inc/lektor/commands.h +++ b/inc/lektor/commands.h @@ -85,6 +85,7 @@ bool command_user_add(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_AR /* Program management control */ bool command_restart(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]); bool command_kill (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]); +bool command_import (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]); bool command_update (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]); bool command_rescan (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX], int forced); diff --git a/src/base/commands.c b/src/base/commands.c index 9b7b493395537113e001bb5f994df7a44778218f..d5b442ecfe015b99fefbcad4e5c9d1eabf6c0511 100644 --- a/src/base/commands.c +++ b/src/base/commands.c @@ -60,6 +60,15 @@ command_update(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_AR return ! MOD_PROC(srv->repo_mod, "update"); } +bool +command_import(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_ARGS_MAX]) +{ + RETURN_UNLESS(lkt_client_auth(srv, c, false), "Failed to authentificate user", false); + srv->mpd_idle_events |= MPD_IDLE_UPDATE; + srv->mpd_idle_events |= MPD_IDLE_DATABASE; + return ! MOD_PROC(srv->repo_mod, "import"); +} + bool command_rescan(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_ARGS_MAX], int UNUSED forced) diff --git a/src/main/lkt.c b/src/main/lkt.c index 5edcc32dfb5c191d7dd241627abb2ba340827105..af3f49ec4cf370188c146055716b7f4ebb452303 100644 --- a/src/main/lkt.c +++ b/src/main/lkt.c @@ -358,7 +358,7 @@ update__(struct cmd_args *args) noreturn void import__(struct cmd_args *args) { - rescan_or_update__(args, "import"); + rescan_or_update__(args, "__import"); } noreturn void diff --git a/src/net/listen.c b/src/net/listen.c index 00f7c7f8bec7eb5565a1c5d6b592c0555c56b207..908c026b2b4ff143b231745180af66da36273fad 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -162,6 +162,8 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd) err = ! command_update(srv, c, cmd.args); else if (STR_MATCH(cmd.name, "rescan")) err = ! command_rescan(srv, c, cmd.args, false); + else if (STR_MATCH(cmd.name, "__import")) + err = ! command_import(srv, c, cmd.args); else if (STR_MATCH(cmd.name, "__rescan")) err = ! command_rescan(srv, c, cmd.args, true);