summaryrefslogtreecommitdiffstats
blob: a202e62b63dd18c0fa201dc4b5623fcfe63ee7e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
--[[
	Copyright (c) 2010-2013 Remko Tronçon
	Licensed under the GNU General Public License v3.
	See Documentation/Licenses/GPLv3.txt for more information.
--]]

--[[
	This script logs into an XMPP server, iterates over all roster items,
	and checks if their server is still alive. If not, the script asks you
	whether it should remove the contact from your contact list.

	The following environment variables are used:
	* SLUIFT_JID, SWIFT_PASS: JID and password to log in with
	* SLUIFT_DEBUG: Sets whether debugging should be turned on
--]]

require 'sluift'
sluift.debug = os.getenv('SLUIFT_DEBUG')

print 'Connecting ...'
c = sluift.new_client(os.getenv('SLUIFT_JID'), os.getenv('SLUIFT_PASS'))
c:connect(function (c)
	print 'Checking for unreachable contacts ...'
	for jid in pairs(c:get_contacts()) do
		_, err = c:get_software_version {to = sluift.jid.domain(jid), timeout = 10000}
		print(err)
		if err == 'Remote server not found' or err == 'Remote server timeout' then
			print('Delete ' .. jid .. ' (' .. err .. ') ? [y/n/q]')
			answer = io.read()
			if answer == 'y' then
				c:remove_contact(jid)
			elseif answer == 'q' then
				break
			end
		end
	end
	print 'Done. Exiting ...'
end)