X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=prosodyctl;h=575948a1745833eb7ef6d9443bd37469efa486ca;hb=baed7e9f48230f3964d00bfd38e981b5158f4cfe;hp=522ebde9a3e62e73c006f6eb52ed9ac6a92f92d9;hpb=e4ed1ddf6ed07c5f9b245841c089e32fc5afa1d0;p=prosody.git diff --git a/prosodyctl b/prosodyctl index 522ebde9..575948a1 100755 --- a/prosodyctl +++ b/prosodyctl @@ -462,6 +462,32 @@ function commands.unregister(arg) return 1; end +local http_errors = { + [404] = "Plugin not found, did you type the address correctly?" + }; + +function commands.addplugin(arg) + local url = arg[1]; + if url:match("^http://") then + local http = require "socket.http"; + show_message("Fetching..."); + local code, err = http.request(url); + if not code or not tostring(err):match("^[23]") then + show_message("Failed: "..(http_errors[err] or ("HTTP error "..err))); + return 1; + end + if url:match("%.lua$") then + local ok, err = datamanager.store(url:match("/mod_([^/]+)$"), "*", "plugins", {code}); + if not ok then + show_message("Failed to save to data store: "..err); + return 1; + end + end + show_message("Saved. Don't forget to load the module using the config file or admin console!"); + else + show_message("Sorry, I don't understand how to fetch plugins from there."); + end +end ---------------------