Mercurial > prosody-modules
annotate mod_migrate_lastlog2/mod_migrate_lastlog2.lua @ 6237:9d88c3d9eea5
mod_http_oauth2: Enforce the registered grant types
Thus a client can limit itself to certain grant types.
Not sure if this prevents any attacks, but what was the point of
including this in the registration if it was not going to be enforced?
This became easier to do with client_id being available earlier.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 02 Jun 2025 20:55:20 +0200 |
| parents | a4d7fefa4a8b |
| children |
| rev | line source |
|---|---|
|
6231
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 -- This module is based on the shell command code from mod_account_activity |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 local autoremove = module:get_option_boolean("migrate_lastlog2_auto_remove", true); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 local function do_migration() |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 local store = module:open_store("account_activity", "keyval+"); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 local lastlog2 = module:open_store("lastlog2", "keyval+"); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 local n_updated, n_errors, n_skipped = 0, 0, 0; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 local async = require "prosody.util.async"; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 local p = require "prosody.util.promise".new(function (resolve) |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 local async_runner = async.runner(function () |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 local n = 0; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 for username in lastlog2:items() do |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 local was_error = nil; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 n = n + 1; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 if n % 100 == 0 then |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 module:log("debug", "Processed %d...", n); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 async.sleep(0); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 local lastlog2_data = lastlog2:get(username); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 if lastlog2_data then |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 local current_data, err = store:get(username); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 if not current_data then |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 if not err then |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 current_data = {}; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 else |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 n_errors = n_errors + 1; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 if current_data then |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 local imported_timestamp = current_data.timestamp; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 local latest; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 for k, v in pairs(lastlog2_data) do |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 if k ~= "registered" and (not latest or v.timestamp > latest) then |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 latest = v.timestamp; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 if latest and (not imported_timestamp or imported_timestamp < latest) then |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 local ok, err = store:set_key(username, "timestamp", latest); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 if ok then |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 n_updated = n_updated + 1; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 else |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 module:log("error", "Failed to import %q: %s", username, err); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 was_error = true; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 n_errors = n_errors + 1; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 else |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
50 n_skipped = n_skipped + 1; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 if autoremove and not was_error then |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 lastlog2:set(username, nil); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
57 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 return resolve(("%d accounts imported, %d errors, %d skipped"):format(n_updated, n_errors, n_skipped)); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
59 end); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 async_runner:run(true); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 end); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 return p; |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 end |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 function module.ready() |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 do_migration(); |
|
a4d7fefa4a8b
mod_migrate_lastlog2: New module to automatically migrate data to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 end |
