Software / code / prosody
Comparison
tools/ejabberdsql2prosody.lua @ 1595:9551055b5344
ejabberdsql2prosody: Added support for rosters
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Sun, 26 Jul 2009 00:32:51 +0500 |
| parent | 1594:6e639a34e503 |
| child | 1596:4fcb2df97141 |
comparison
equal
deleted
inserted
replaced
| 1594:6e639a34e503 | 1595:9551055b5344 |
|---|---|
| 174 row[j] = nil; | 174 row[j] = nil; |
| 175 end | 175 end |
| 176 end | 176 end |
| 177 end | 177 end |
| 178 end | 178 end |
| 179 --print(serialize(t)); | |
| 179 | 180 |
| 180 for i, row in ipairs(t["users"] or NULL) do | 181 for i, row in ipairs(t["users"] or NULL) do |
| 181 local node, password = row.username, row.password; | 182 local node, password = row.username, row.password; |
| 182 local ret, err = dm.store(node, host, "accounts", {password = password}); | 183 local ret, err = dm.store(node, host, "accounts", {password = password}); |
| 183 print("["..(err or "success").."] accounts: "..node.."@"..host.." = "..password); | 184 print("["..(err or "success").."] accounts: "..node.."@"..host.." = "..password); |
| 184 end | 185 end |
| 185 for i, row in ipairs(t["private_storage"] or NULL) do | 186 |
| 186 --local node, password = row.username, row.password; | 187 function roster(node, host, jid, item) |
| 187 --local ret, err = dm.store(node, host, "accounts", {password = password}); | 188 local roster = dm.load(node, host, "roster") or {}; |
| 188 --print("["..(err or "success").."] accounts: "..node.."@"..host.." = "..password); | 189 roster[jid] = item; |
| 189 end | 190 local ret, err = dm.store(node, host, "roster", roster); |
| 191 print("["..(err or "success").."] roster: " ..node.."@"..host.." - "..jid); | |
| 192 end | |
| 193 function roster_pending(node, host, jid) | |
| 194 local roster = dm.load(node, host, "roster") or {}; | |
| 195 roster.pending = roster.pending or {}; | |
| 196 roster.pending[jid] = true; | |
| 197 local ret, err = dm.store(node, host, "roster", roster); | |
| 198 print("["..(err or "success").."] roster: " ..node.."@"..host.." - "..jid); | |
| 199 end | |
| 200 function roster_group(node, host, jid, group) | |
| 201 local roster = dm.load(node, host, "roster") or {}; | |
| 202 local item = roster[jid]; | |
| 203 if not item then print("Warning: No roster item "..jid.." for user "..user..", can't put in group "..group); return; end | |
| 204 item.groups[group] = true; | |
| 205 local ret, err = dm.store(node, host, "roster", roster); | |
| 206 print("["..(err or "success").."] roster: " ..node.."@"..host.." - "..jid); | |
| 207 end | |
| 208 for i, row in ipairs(t["rosterusers"] or NULL) do | |
| 209 local node, contact = row.username, row.jid; | |
| 210 local name = row.nick; | |
| 211 if name == "" then name = nil; end | |
| 212 local subscription = row.subscription; | |
| 213 if subscription == "N" then | |
| 214 subscription = "none" | |
| 215 elseif subscription == "B" then | |
| 216 subscription = "both" | |
| 217 elseif subscription == "F" then | |
| 218 subscription = "from" | |
| 219 elseif subscription == "T" then | |
| 220 subscription = "to" | |
| 221 else error("Unknown subscription type: "..subscription) end; | |
| 222 local ask = row.ask; | |
| 223 if ask == "N" then | |
| 224 ask = nil; | |
| 225 elseif ask == "O" then | |
| 226 ask = "subscribe"; | |
| 227 elseif ask == "I" then | |
| 228 roster_pending(node, host, contact); | |
| 229 return; | |
| 230 else error("Unknown ask type: "..ask); end | |
| 231 local item = {name = name, ask = ask, subscription = subscription, groups = {}}; | |
| 232 roster(node, host, contact, item); | |
| 233 end | |
| 234 for i, row in ipairs(t["rostergroups"] or NULL) do | |
| 235 roster_group(row.username, host, row.jid, row.grp); | |
| 236 end |