social_stream-presence 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +7 -0
- data/app/assets/audio/chat/onMessageAudio.mp3 +0 -0
- data/app/assets/audio/chat/onMessageAudio.wav +0 -0
- data/app/assets/images/black_arrow3.png +0 -0
- data/app/assets/images/status/available.png +0 -0
- data/app/assets/images/status/away.png +0 -0
- data/app/assets/images/status/dnd.png +0 -0
- data/app/assets/javascripts/jquery-ui-1.8.14.custom.min.js +789 -0
- data/app/assets/javascripts/jquery.tools.min.js +17 -0
- data/app/assets/javascripts/jquery.tools.tooltip.js +11 -0
- data/app/assets/javascripts/jquery.ui.chatbox.js +260 -0
- data/app/assets/javascripts/social_stream-presence.js +2 -0
- data/app/assets/javascripts/store.js +20 -0
- data/app/assets/javascripts/strophe.js +3612 -0
- data/app/assets/javascripts/xmpp_client.js +494 -0
- data/app/assets/stylesheets/chat.css +239 -0
- data/app/assets/stylesheets/jquery.ui.chatbox.css +54 -0
- data/app/assets/stylesheets/social_stream-presence.css +3 -0
- data/app/controllers/xmpp_controller.rb +223 -0
- data/app/helpers/xmpp_helper.rb +20 -0
- data/app/views/xmpp/_chat.html.erb +63 -0
- data/app/views/xmpp/_chat_connecting.html.erb +8 -0
- data/app/views/xmpp/_chat_contacts.html.erb +46 -0
- data/app/views/xmpp/_chat_off.html.erb +35 -0
- data/app/views/xmpp/active_users.html.erb +33 -0
- data/app/views/xmpp/chat.html.erb +13 -0
- data/app/views/xmpp/index.html +19 -0
- data/app/views/xmpp/test.html.erb +11 -0
- data/config/routes.rb +15 -0
- data/db/migrate/20110711111408_add_connected_column_to_user.rb +9 -0
- data/db/migrate/20110928135031_add_status_column_to_user.rb +9 -0
- data/ejabberd/conf/ejabberd.cfg +625 -0
- data/ejabberd/conf/ejabberdctl.cfg +154 -0
- data/ejabberd/conf/inetrc +3 -0
- data/ejabberd/conf/server.pem +37 -0
- data/ejabberd/conf/ssconfig.cfg +32 -0
- data/ejabberd/ejabberd_scripts/authentication_script +117 -0
- data/ejabberd/ejabberd_scripts/authentication_script_org +114 -0
- data/ejabberd/ejabberd_scripts/compile_module +34 -0
- data/ejabberd/ejabberd_scripts/emanagement +245 -0
- data/ejabberd/ejabberd_scripts/generate_random_password +18 -0
- data/ejabberd/ejabberd_scripts/kill_authentication_script.sh +13 -0
- data/ejabberd/ejabberd_scripts/reset_connection_script +55 -0
- data/ejabberd/ejabberd_scripts/reset_logs.sh +23 -0
- data/ejabberd/ejabberd_scripts/set_connection_script +48 -0
- data/ejabberd/ejabberd_scripts/set_presence_script +48 -0
- data/ejabberd/ejabberd_scripts/show_config.sh +30 -0
- data/ejabberd/ejabberd_scripts/start_ejabberd.sh +68 -0
- data/ejabberd/ejabberd_scripts/stop_ejabberd.sh +12 -0
- data/ejabberd/ejabberd_scripts/synchronize_presence_script +57 -0
- data/ejabberd/ejabberd_scripts/unset_connection_script +48 -0
- data/ejabberd/mod_admin_extra/mod_admin_extra.beam +0 -0
- data/ejabberd/mod_admin_extra/mod_admin_extra.erl +1560 -0
- data/ejabberd/mod_sspresence/mod_sspresence.beam +0 -0
- data/ejabberd/mod_sspresence/mod_sspresence.erl +257 -0
- data/lib/social_stream-presence.rb +19 -2
- data/lib/social_stream/migrations/presence.rb +9 -0
- data/lib/social_stream/presence/engine.rb +62 -0
- data/lib/social_stream/presence/models/buddy_manager.rb +76 -0
- data/lib/social_stream/presence/version.rb +5 -0
- data/lib/tasks/presence/synchronize.rake +63 -0
- data/social_stream-presence.gemspec +4 -4
- metadata +69 -11
- data/.project +0 -17
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
|
4
|
+
def getOption(option)
|
5
|
+
File.open('/etc/ejabberd/ssconfig.cfg', 'r') do |f1|
|
6
|
+
while line = f1.gets
|
7
|
+
line = line.gsub(/\n/,'')
|
8
|
+
if line.match(/^#/)
|
9
|
+
#Comments
|
10
|
+
elsif line.match(/^#{option}/)
|
11
|
+
return line.gsub(/#{option}/,'')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
return "Undefined"
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
source_path = getOption("source_path=")
|
22
|
+
|
23
|
+
if source_path == "Undefined"
|
24
|
+
#puts "mod_sspresence source_path in undefined: define source_path in /etc/ejabberd/ssconfig.cfg to compile mod_sspresence"
|
25
|
+
puts "mod_sspresence source_path in undefined: Exit compile"
|
26
|
+
else
|
27
|
+
puts "Compile mod_sspresence"
|
28
|
+
system("erlc #{source_path}/mod_sspresence.erl")
|
29
|
+
system 'sudo mv mod_sspresence.beam /lib/ejabberd/ebin/mod_sspresence.beam'
|
30
|
+
puts "Compile mod_sspresence OK"
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
|
@@ -0,0 +1,245 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
#Ejabberd Management script
|
4
|
+
#New features for management and maintenance ejabberd
|
5
|
+
#@author Aldo
|
6
|
+
|
7
|
+
require 'logger'
|
8
|
+
|
9
|
+
path = "/var/log/ejabberd/scripts.log"
|
10
|
+
file = File.open(path, File::WRONLY | File::APPEND | File::CREAT)
|
11
|
+
file.sync = true
|
12
|
+
$logger = Logger.new(file)
|
13
|
+
$logger.level = Logger::DEBUG
|
14
|
+
|
15
|
+
def getOption(option)
|
16
|
+
File.open('/etc/ejabberd/ssconfig.cfg', 'r') do |f1|
|
17
|
+
while line = f1.gets
|
18
|
+
line = line.gsub(/\n/,'')
|
19
|
+
if line.match(/^#/)
|
20
|
+
#Comments
|
21
|
+
elsif line.match(/^#{option}/)
|
22
|
+
return line.gsub(/#{option}/,'')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
return "Undefined"
|
27
|
+
end
|
28
|
+
|
29
|
+
def ejabberdLog(text)
|
30
|
+
$logger.info "Ejabberd Management Script: " + text
|
31
|
+
end
|
32
|
+
|
33
|
+
#Configuration variables
|
34
|
+
$domain = getOption("server_domain=")
|
35
|
+
|
36
|
+
PARAMS_FOR_COMMANDS = {
|
37
|
+
'getRoster' => 1,
|
38
|
+
'removeBuddyFromRoster' => 2,
|
39
|
+
'addBuddyToRoster' => 5,
|
40
|
+
'removeRoster' => 1,
|
41
|
+
'getBuddysFromRoster' => 1,
|
42
|
+
'setBidireccionalBuddys' => 4,
|
43
|
+
'help' => 0,
|
44
|
+
'getUserResource' => 1,
|
45
|
+
'sendMessageToUser' => 3,
|
46
|
+
'sendPresence' => 2,
|
47
|
+
'unsetPresence' => 1,
|
48
|
+
'setPresence' => 1,
|
49
|
+
'removeAllRosters' => 0,
|
50
|
+
}
|
51
|
+
|
52
|
+
SYNTAX_FOR_COMMANDS = {
|
53
|
+
'getRoster' => "getRoster username",
|
54
|
+
'removeBuddyFromRoster' => "removeBuddyFromRoster username buddy",
|
55
|
+
'addBuddyToRoster' => "addBuddyToRoster username buddy buddyNick buddyGroup subscription_type",
|
56
|
+
'removeRoster' => "removeRoster username",
|
57
|
+
'getBuddysFromRoster' => "getBuddysFromRoster roster",
|
58
|
+
'setBidireccionalBuddys' => "setBidireccionalBuddys usernameA usernameB nickA nickB",
|
59
|
+
'getUserResource' => "getUserResource username",
|
60
|
+
'sendMessageToUser' => "sendMessageToUser from_name to_name msg",
|
61
|
+
'sendPresence' => 'sendPresence username show',
|
62
|
+
'unsetPresence' => 'unsetPresence username',
|
63
|
+
'setPresence' => 'setPresence username',
|
64
|
+
'removeAllRosters' => 'removeAllRosters'
|
65
|
+
}
|
66
|
+
|
67
|
+
def log(msg)
|
68
|
+
logWithTitle(msg,nil)
|
69
|
+
end
|
70
|
+
|
71
|
+
def logWithTitle(msg,title)
|
72
|
+
puts "------------------------"
|
73
|
+
if title
|
74
|
+
puts ("<<<" + title + ">>>")
|
75
|
+
end
|
76
|
+
puts msg
|
77
|
+
puts "------------------------"
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
def getRoster(username)
|
82
|
+
command = "ejabberdctl get_roster " + username + " " + $domain
|
83
|
+
%x[#{command}];
|
84
|
+
end
|
85
|
+
|
86
|
+
def removeBuddyFromRoster(username,buddy)
|
87
|
+
command = "ejabberdctl delete_rosteritem " + username + " " + $domain + " " + buddy + " " + $domain
|
88
|
+
%x[#{command}];
|
89
|
+
end
|
90
|
+
|
91
|
+
def addBuddyToRoster(username,buddy,buddyNick,buddyGroup,subscription_type)
|
92
|
+
command = "ejabberdctl add-rosteritem " + username + " " + $domain + " " + buddy + " " + $domain + " \\'" + buddyNick + "\\' " + buddyGroup + " " + subscription_type
|
93
|
+
%x[#{command}];
|
94
|
+
end
|
95
|
+
|
96
|
+
def removeRoster(username)
|
97
|
+
user_roster = getRoster(username);
|
98
|
+
user_buddys = getBuddysFromRoster(user_roster);
|
99
|
+
user_buddys.each do |buddy|
|
100
|
+
removeBuddyFromRoster(username,buddy)
|
101
|
+
end
|
102
|
+
return "Done"
|
103
|
+
end
|
104
|
+
|
105
|
+
def removeAllRosters()
|
106
|
+
command = "ejabberdctl process_rosteritems delete any any any any"
|
107
|
+
%x[#{command}];
|
108
|
+
return "Done";
|
109
|
+
end
|
110
|
+
|
111
|
+
def getBuddysFromRoster(roster)
|
112
|
+
buddys = []
|
113
|
+
lines = roster.split("\n")
|
114
|
+
lines.each do |line|
|
115
|
+
buddys << line.split("@")[0]
|
116
|
+
end
|
117
|
+
buddys
|
118
|
+
end
|
119
|
+
|
120
|
+
def setBidireccionalBuddys(usernameA,usernameB,nickA,nickB)
|
121
|
+
#addBuddyToRoster(username,buddy,buddyNick,buddyGroup,subscription_type)
|
122
|
+
addBuddyToRoster(usernameA,usernameB,nickB,"SocialStream","both")
|
123
|
+
addBuddyToRoster(usernameB,usernameA,nickA,"SocialStream","both")
|
124
|
+
sendPresence(usernameA,"chat")
|
125
|
+
sendPresence(usernameB,"chat")
|
126
|
+
return "Done"
|
127
|
+
end
|
128
|
+
|
129
|
+
def sendStanzaUserMessage(username,msg)
|
130
|
+
resource = getUserResource(username);
|
131
|
+
stanza = "\\<\\'message\\'\\>\\<\\'body\\'\\>\\'" + msg + "\\'\\<\\'/body\\'\\>\\<\\'/message\\'\\>"
|
132
|
+
command = "ejabberdctl send_stanza_c2s " + username + " " + $domain + " " + resource + " " + stanza
|
133
|
+
puts "Executing: " + command
|
134
|
+
%x[#{command}];
|
135
|
+
return "Done"
|
136
|
+
end
|
137
|
+
|
138
|
+
|
139
|
+
def sendPresence(username,show)
|
140
|
+
sendPresenceWithShow(username,username,show)
|
141
|
+
end
|
142
|
+
|
143
|
+
def unsetPresence(username)
|
144
|
+
sendPresenceStanzaWithType(username,username,"unavailable")
|
145
|
+
end
|
146
|
+
|
147
|
+
def setPresence(username)
|
148
|
+
sendPresenceStanzaWithType(username,username,"available")
|
149
|
+
end
|
150
|
+
|
151
|
+
def sendPresenceWithShow(from_name,to_name,show)
|
152
|
+
puts from_name
|
153
|
+
resource = getUserResource(from_name);
|
154
|
+
puts resource
|
155
|
+
from_sid = from_name + "@" + $domain;
|
156
|
+
to_sid = to_name + "@" + $domain;
|
157
|
+
pres_stanza = "\\<\\'presence from=\\'\\\"\\'" + from_sid + "\\'\\\"\\' to=\\'\\\"\\'" + to_sid + "\\'\\\"\\>\\<\\'show\\'\\>\\'" + show + "\\'\\<\\'/show\\'\\>\\<\\'/presence\\'\\>"
|
158
|
+
command = "ejabberdctl send_stanza_c2s " + from_name + " " + $domain + " " + resource + " " + pres_stanza
|
159
|
+
puts "Executing: " + command
|
160
|
+
%x[#{command}];
|
161
|
+
return "Done"
|
162
|
+
end
|
163
|
+
|
164
|
+
def sendPresenceStanzaWithType(from_name,to_name,presence_type)
|
165
|
+
resource = getUserResource(from_name);
|
166
|
+
from_sid = from_name + "@" + $domain;
|
167
|
+
to_sid = to_name + "@" + $domain;
|
168
|
+
pres_stanza = "\\<\\'presence type=\\'\\\"\\'" + presence_type + "\\'\\\"\\' from=\\'\\\"\\'" + from_sid + "\\'\\\"\\' to=\\'\\\"\\'" + to_sid + "\\'\\\"\\>\\<\\'/presence\\'\\>"
|
169
|
+
command = "ejabberdctl send_stanza_c2s " + from_name + " " + $domain + " " + resource + " " + pres_stanza
|
170
|
+
puts "Executing: " + command
|
171
|
+
%x[#{command}];
|
172
|
+
return "Done"
|
173
|
+
end
|
174
|
+
|
175
|
+
def sendMessageToUser(from_name,to_name,msg)
|
176
|
+
from_sid = from_name + "@" + $domain;
|
177
|
+
to_sid = to_name + "@" + $domain;
|
178
|
+
command = "ejabberdctl send_message_chat " + from_sid + " " + to_sid + " " + "\\'" + msg + "\\'";
|
179
|
+
puts "Executing: " + command
|
180
|
+
%x[#{command}];
|
181
|
+
return "Done"
|
182
|
+
end
|
183
|
+
|
184
|
+
def getUserResource(username)
|
185
|
+
command = "ejabberdctl connected-users"
|
186
|
+
output = %x[#{command}];
|
187
|
+
lines = output.split("\n");
|
188
|
+
lines.each do |line|
|
189
|
+
if line.split("@")[0] == username
|
190
|
+
#puts "Find " + username
|
191
|
+
s = line.split("@")[1];
|
192
|
+
resource = s.split("/")[1];
|
193
|
+
return resource;
|
194
|
+
end
|
195
|
+
end
|
196
|
+
return username + " no have any active session"
|
197
|
+
end
|
198
|
+
|
199
|
+
def help
|
200
|
+
log("Command list")
|
201
|
+
SYNTAX_FOR_COMMANDS.values.each do |command|
|
202
|
+
puts command
|
203
|
+
end
|
204
|
+
puts ""
|
205
|
+
end
|
206
|
+
|
207
|
+
log("Init Ejabberd Maintenance script")
|
208
|
+
|
209
|
+
begin
|
210
|
+
if ARGV[0] and PARAMS_FOR_COMMANDS.keys.include?(ARGV[0])
|
211
|
+
if (ARGV.length == (PARAMS_FOR_COMMANDS[ARGV[0]]+1))
|
212
|
+
|
213
|
+
ejabberdLog("Executing (#{ARGV[0]})")
|
214
|
+
|
215
|
+
length = ARGV.length;
|
216
|
+
case length
|
217
|
+
when 1
|
218
|
+
puts send(ARGV[0])
|
219
|
+
when 2
|
220
|
+
puts send(ARGV[0],ARGV[1])
|
221
|
+
when 3
|
222
|
+
puts send(ARGV[0],ARGV[1],ARGV[2])
|
223
|
+
when 4
|
224
|
+
puts send(ARGV[0],ARGV[1],ARGV[2],ARGV[3])
|
225
|
+
when 5
|
226
|
+
puts send(ARGV[0],ARGV[1],ARGV[2],ARGV[3],ARGV[4])
|
227
|
+
when 6
|
228
|
+
puts send(ARGV[0],ARGV[1],ARGV[2],ARGV[3],ARGV[4],ARGV[5])
|
229
|
+
else
|
230
|
+
puts send(ARGV[0],ARGV)
|
231
|
+
end
|
232
|
+
puts ""
|
233
|
+
else
|
234
|
+
log("Error: Params required for command " + (ARGV[0]).to_s() + ": " + (PARAMS_FOR_COMMANDS[ARGV[0]]).to_s())
|
235
|
+
log("Use 'help' to get information about command syntax")
|
236
|
+
end
|
237
|
+
else
|
238
|
+
|
239
|
+
log("Error: Command not recognized")
|
240
|
+
log("Use 'help' to get information about command syntax")
|
241
|
+
end
|
242
|
+
rescue
|
243
|
+
puts "Parametros incorrectos"
|
244
|
+
end
|
245
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
def newpass(l)
|
4
|
+
chars = 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789!$%&()=?|@^*'
|
5
|
+
password = ''
|
6
|
+
l.downto(1) { |i| password << chars[rand(chars.length - 1)] }
|
7
|
+
return password
|
8
|
+
end
|
9
|
+
|
10
|
+
puts "Generate random password"
|
11
|
+
|
12
|
+
unless ARGV[0]
|
13
|
+
puts "Error: Password lenght argument missed"
|
14
|
+
exit
|
15
|
+
else
|
16
|
+
puts ARGV[0]
|
17
|
+
puts newpass(Integer(ARGV[0]))
|
18
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#Reset Connection Script
|
3
|
+
#@author Aldo
|
4
|
+
|
5
|
+
require 'logger'
|
6
|
+
require 'rest_client'
|
7
|
+
|
8
|
+
path = "/var/log/ejabberd/scripts.log"
|
9
|
+
file = File.open(path, File::WRONLY | File::APPEND | File::CREAT)
|
10
|
+
file.sync = true
|
11
|
+
$logger = Logger.new(file)
|
12
|
+
$logger.level = Logger::DEBUG
|
13
|
+
|
14
|
+
def getOption(option)
|
15
|
+
File.open('/etc/ejabberd/ssconfig.cfg', 'r') do |f1|
|
16
|
+
while line = f1.gets
|
17
|
+
line = line.gsub(/\n/,'')
|
18
|
+
if line.match(/^#/)
|
19
|
+
#Comments
|
20
|
+
elsif line.match(/^#{option}/)
|
21
|
+
return line.gsub(/#{option}/,'')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
return "Undefined"
|
26
|
+
end
|
27
|
+
|
28
|
+
$url = getOption("reset_connection_api=")
|
29
|
+
$pass = getOption("ejabberd_password=")
|
30
|
+
|
31
|
+
|
32
|
+
def log(text)
|
33
|
+
$logger.info "Reset Connection Script: " + text
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def resetConnection()
|
38
|
+
begin
|
39
|
+
RestClient.post($url, :password => $pass)
|
40
|
+
return true
|
41
|
+
rescue => e
|
42
|
+
log("#{e.class.name}: #{e.message}")
|
43
|
+
return false
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
if (resetConnection())
|
48
|
+
puts "Reset Connection [OK]"
|
49
|
+
log( "Reset Connection [OK]" )
|
50
|
+
else
|
51
|
+
puts "Reset Connection [FAIL]"
|
52
|
+
log( "Reset Connection [FAIL]" )
|
53
|
+
end
|
54
|
+
|
55
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
echo "Starting Reset logs"
|
4
|
+
|
5
|
+
rm /var/log/ejabberd/auth.log
|
6
|
+
rm /var/log/ejabberd/auth_error.log
|
7
|
+
rm /var/log/ejabberd/ejabberd.log
|
8
|
+
rm /var/log/ejabberd/erlang.log
|
9
|
+
rm /var/log/ejabberd/scripts.log
|
10
|
+
rm /var/log/ejabberd/erl_crash_*
|
11
|
+
|
12
|
+
touch /var/log/ejabberd/auth.log
|
13
|
+
touch /var/log/ejabberd/auth_error.log
|
14
|
+
touch /var/log/ejabberd/ejabberd.log
|
15
|
+
touch /var/log/ejabberd/erlang.log
|
16
|
+
touch /var/log/ejabberd/scripts.log
|
17
|
+
touch /var/log/ejabberd/erl_crash_dummy.log
|
18
|
+
|
19
|
+
echo "Reset logs OK"
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#Set Connection Script
|
3
|
+
#@author Aldo
|
4
|
+
|
5
|
+
require 'logger'
|
6
|
+
require 'rest_client'
|
7
|
+
|
8
|
+
path = "/var/log/ejabberd/scripts.log"
|
9
|
+
file = File.open(path, File::WRONLY | File::APPEND | File::CREAT)
|
10
|
+
file.sync = true
|
11
|
+
$logger = Logger.new(file)
|
12
|
+
$logger.level = Logger::DEBUG
|
13
|
+
|
14
|
+
def getOption(option)
|
15
|
+
File.open('/etc/ejabberd/ssconfig.cfg', 'r') do |f1|
|
16
|
+
while line = f1.gets
|
17
|
+
line = line.gsub(/\n/,'')
|
18
|
+
if line.match(/^#/)
|
19
|
+
#Comments
|
20
|
+
elsif line.match(/^#{option}/)
|
21
|
+
return line.gsub(/#{option}/,'')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
return "Undefined"
|
26
|
+
end
|
27
|
+
|
28
|
+
$url = getOption("set_connection_api=")
|
29
|
+
$pass = getOption("ejabberd_password=")
|
30
|
+
|
31
|
+
|
32
|
+
def log(text)
|
33
|
+
$logger.info "Set Connection Script: " + text
|
34
|
+
end
|
35
|
+
|
36
|
+
def setConnection(username)
|
37
|
+
log("setConnection(#{username})")
|
38
|
+
RestClient.post($url, :name => username, :password => $pass)
|
39
|
+
return true
|
40
|
+
|
41
|
+
rescue RestClient::Exception
|
42
|
+
log("RestClient::Exception with setConnection(#{username})")
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
setConnection(ARGV[0])
|
47
|
+
|
48
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#Set Presence Script
|
3
|
+
#@author Aldo
|
4
|
+
|
5
|
+
require 'logger'
|
6
|
+
require 'rest_client'
|
7
|
+
|
8
|
+
path = "/var/log/ejabberd/scripts.log"
|
9
|
+
file = File.open(path, File::WRONLY | File::APPEND | File::CREAT)
|
10
|
+
file.sync = true
|
11
|
+
$logger = Logger.new(file)
|
12
|
+
$logger.level = Logger::DEBUG
|
13
|
+
|
14
|
+
def getOption(option)
|
15
|
+
File.open('/etc/ejabberd/ssconfig.cfg', 'r') do |f1|
|
16
|
+
while line = f1.gets
|
17
|
+
line = line.gsub(/\n/,'')
|
18
|
+
if line.match(/^#/)
|
19
|
+
#Comments
|
20
|
+
elsif line.match(/^#{option}/)
|
21
|
+
return line.gsub(/#{option}/,'')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
return "Undefined"
|
26
|
+
end
|
27
|
+
|
28
|
+
$url = getOption("set_presence_api=")
|
29
|
+
$pass = getOption("ejabberd_password=")
|
30
|
+
|
31
|
+
|
32
|
+
def log(text)
|
33
|
+
$logger.info "Set Presence Script: " + text
|
34
|
+
end
|
35
|
+
|
36
|
+
def setPresence(username,status)
|
37
|
+
log("setPresence(#{username},#{status})")
|
38
|
+
RestClient.post($url, :name => username, :status => status, :password => $pass)
|
39
|
+
return true
|
40
|
+
|
41
|
+
rescue RestClient::Exception
|
42
|
+
log("RestClient::Exception with setPresence(#{username})")
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
setPresence(ARGV[0],ARGV[1])
|
47
|
+
|
48
|
+
|