Mercurial > prosody-modules
annotate mod_migrate_lastlog2/mod_migrate_lastlog2.lua @ 6265:30adcea825c3
mod_conversejs: Fix hostname set as default username (thanks roughnecks)
In login mode, it seems jid is used as default value in the login field
but it was only needed in anonymous mode.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 18 Jun 2025 14:28:38 +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 |
