social_stream 0.21.4 → 0.22.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +11 -5
- data/base/app/assets/stylesheets/cheesecake.css.scss +1 -0
- data/base/app/views/cheesecake/_cheesecake.html.erb +3 -0
- data/base/app/views/cheesecake/_index.html.erb +88 -41
- data/base/app/views/cheesecake/_sector_form.html.erb +12 -12
- data/base/lib/social_stream/base/version.rb +1 -1
- data/base/lib/social_stream/test_helpers/controllers.rb +19 -2
- data/base/lib/tasks/db/populate.rake +190 -165
- data/base/social_stream-base.gemspec +1 -1
- data/base/spec/controllers/posts_controller_spec.rb +19 -1
- data/lib/social_stream/version.rb +1 -1
- data/presence/app/assets/images/status/chat.png +0 -0
- data/presence/app/assets/javascripts/chat_interface_manager.js.erb +42 -45
- data/presence/app/assets/javascripts/chat_parser.js +5 -5
- data/presence/app/assets/javascripts/chat_persistence.js +25 -26
- data/presence/app/assets/javascripts/chat_utilities.js +15 -11
- data/presence/app/assets/javascripts/chat_window_manager.js +129 -26
- data/presence/app/assets/javascripts/jquery.ui.chatbox.sstreampresence.js +22 -3
- data/presence/app/assets/javascripts/social_stream-presence.js +1 -0
- data/presence/app/assets/javascripts/videochat.js.erb +459 -0
- data/presence/app/assets/javascripts/xmpp_client_management.js.erb +303 -65
- data/presence/app/assets/stylesheets/chat.css.scss +42 -1
- data/presence/app/controllers/xmpp_controller.rb +20 -3
- data/presence/app/views/chat/_index.html.erb +7 -2
- data/presence/app/views/xmpp/getOpenTokSessionIDAndToken.xml.builder +6 -0
- data/presence/config/locales/en.yml +22 -1
- data/presence/config/locales/es.yml +23 -2
- data/presence/config/routes.rb +2 -0
- data/presence/ejabberd/conf/ssconfig_example.cfg +4 -3
- data/presence/ejabberd/ejabberd_files.zip +0 -0
- data/presence/ejabberd/ejabberd_scripts/authentication_script +22 -12
- data/presence/ejabberd/ejabberd_scripts/development_scripts/show_config.sh +9 -10
- data/presence/ejabberd/ejabberd_scripts/emanagement +275 -178
- data/presence/ejabberd/ejabberd_scripts/manageWebDomains +164 -0
- data/presence/ejabberd/ejabberd_scripts/rest_api_client_script +75 -32
- data/presence/ejabberd/ejabberd_scripts/synchronize_presence_script +81 -34
- data/presence/ejabberd/mod_sspresence/mod_sspresence.beam +0 -0
- data/presence/ejabberd/mod_sspresence/mod_sspresence.erl +27 -23
- data/presence/lib/OpenTok/Exceptions.rb +11 -0
- data/presence/lib/OpenTok/OpenTokSDK.rb +184 -0
- data/presence/lib/OpenTok/Session.rb +27 -0
- data/presence/lib/generators/social_stream/presence/templates/initializer.rb +8 -2
- data/presence/lib/open_tok.rb +31 -0
- data/presence/lib/opentok.rb +29 -0
- data/presence/lib/social_stream-presence.rb +4 -0
- data/presence/lib/social_stream/presence/models/buddy_manager.rb +1 -1
- data/presence/lib/social_stream/presence/version.rb +1 -1
- data/presence/lib/social_stream/presence/xmpp_server_order.rb +96 -76
- data/presence/lib/social_stream/presence/xmpp_ssclient.rb +54 -0
- data/presence/lib/tasks/presence/multidomain.rake +45 -0
- data/presence/lib/tasks/presence/synchronize.rake +18 -4
- data/presence/vendor/assets/javascripts/TB.min.js +4329 -0
- data/social_stream.gemspec +2 -2
- metadata +40 -30
- data/presence/ejabberd/ejabberd_scripts/reset_connection_script +0 -300
- data/presence/ejabberd/ejabberd_scripts/set_script_header.sh +0 -112
@@ -0,0 +1,164 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
####################################
|
4
|
+
#WebDomain script
|
5
|
+
#Add or remove web domains server by ejabberd
|
6
|
+
#@author Aldo Gordillo < agordillos@gmail.com >
|
7
|
+
#@version 1.0 - 27-2-2012
|
8
|
+
####################################
|
9
|
+
|
10
|
+
|
11
|
+
require 'logger'
|
12
|
+
|
13
|
+
path = "/var/log/ejabberd/scripts.log"
|
14
|
+
file = File.open(path, File::WRONLY | File::APPEND | File::CREAT)
|
15
|
+
file.sync = true
|
16
|
+
$logger = Logger.new(file)
|
17
|
+
$logger.level = Logger::DEBUG
|
18
|
+
def log(text)
|
19
|
+
$logger.info "SetWebDomain Script: " + text
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
#Config files
|
24
|
+
$ssconfig = '/etc/ejabberd/ssconfig.cfg'
|
25
|
+
$ejabberd = '/etc/ejabberd/ejabberd.cfg'
|
26
|
+
|
27
|
+
$domain_not_exists = "Domain don't exists"
|
28
|
+
$domain_exists = "Domain already exists"
|
29
|
+
$done = "Done"
|
30
|
+
|
31
|
+
def getOptionFromSSConfig(option)
|
32
|
+
File.open($ssconfig, 'r') do |f1|
|
33
|
+
while line = f1.gets
|
34
|
+
line = line.gsub(/\n/,'')
|
35
|
+
if line.match(/^#/)
|
36
|
+
#Comments
|
37
|
+
elsif line.match(/^#{option}/)
|
38
|
+
return line.gsub(/#{option}/,'')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
return "Undefined"
|
43
|
+
end
|
44
|
+
|
45
|
+
def getWebDomains()
|
46
|
+
begin
|
47
|
+
web_domains = getOptionFromSSConfig("web_domains=");
|
48
|
+
#web_domains=["domain1","domain2"]
|
49
|
+
return getElementsFromStringArray(web_domains);
|
50
|
+
rescue Exception=>e
|
51
|
+
return [""]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def getElementsFromStringArray(stringArray)
|
56
|
+
stringArray=stringArray[1,stringArray.length-2]
|
57
|
+
return stringArray.split(",")
|
58
|
+
end
|
59
|
+
|
60
|
+
def getSSConfigStringFromDomainsArray(domainsArray)
|
61
|
+
return "[" + domainsArray.join(",") + "]"
|
62
|
+
end
|
63
|
+
|
64
|
+
def getEjabberdStringFromDomainsArray(domainsArray)
|
65
|
+
newDomains=[]
|
66
|
+
domainsArray.each do |domain|
|
67
|
+
newDomains << "\"" + domain + "\""
|
68
|
+
end
|
69
|
+
return "{hosts, [" + newDomains.join(" , ") + "]}."
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
#Write the domains array content in the corresponding configuration files
|
74
|
+
def writeDomains(domains)
|
75
|
+
#SSconfig
|
76
|
+
ssconfigText = File.read($ssconfig)
|
77
|
+
newssconfig = ssconfigText.gsub(/web_domains=.*/, "web_domains=" + getSSConfigStringFromDomainsArray(domains))
|
78
|
+
File.open($ssconfig, "w") { |file| file.puts newssconfig }
|
79
|
+
|
80
|
+
#Ejabberd
|
81
|
+
ejabbberdText = File.read($ejabberd)
|
82
|
+
newEjabberdconfig = ejabbberdText.gsub(/^{hosts, .*/, getEjabberdStringFromDomainsArray(domains))
|
83
|
+
File.open($ejabberd, "w") { |file| file.puts newEjabberdconfig }
|
84
|
+
|
85
|
+
return $done
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
def addDomain(domain,url)
|
90
|
+
if(url)
|
91
|
+
log("Add domain:" + domain + " with url:" + url)
|
92
|
+
else
|
93
|
+
log("Add domain:" + domain)
|
94
|
+
end
|
95
|
+
domains = getWebDomains();
|
96
|
+
if !domains.include?(domain)
|
97
|
+
domains << domain;
|
98
|
+
if((url)&&(url!=domain))
|
99
|
+
addDomainUrl(domain,url)
|
100
|
+
end
|
101
|
+
return writeDomains(domains)
|
102
|
+
else
|
103
|
+
return $domain_exists
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def removeDomain(domain)
|
108
|
+
log("Remove domain:" + domain)
|
109
|
+
domains = getWebDomains();
|
110
|
+
if domains.include?(domain)
|
111
|
+
domains.delete(domain)
|
112
|
+
removeDomainUrl(domain)
|
113
|
+
return writeDomains(domains)
|
114
|
+
else
|
115
|
+
return $domain_not_exists
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def updateDomain(domain,url)
|
120
|
+
removeDomain(domain)
|
121
|
+
return addDomain(domain,url)
|
122
|
+
end
|
123
|
+
|
124
|
+
def addDomainUrl(domain,url)
|
125
|
+
if (getOptionFromSSConfig(domain+"=")=="Undefined")
|
126
|
+
ssconfigText = File.read($ssconfig)
|
127
|
+
newssconfig = ssconfigText + "\n" + domain + "=" + url + "\n"
|
128
|
+
File.open($ssconfig, "w") { |file| file.puts newssconfig }
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def removeDomainUrl(domain)
|
133
|
+
if (getOptionFromSSConfig(domain+"=")!="Undefined")
|
134
|
+
ssconfigText = File.read($ssconfig)
|
135
|
+
newssconfig = ssconfigText.gsub(/#{domain}=.*/, "")
|
136
|
+
File.open($ssconfig, "w") { |file| file.puts newssconfig }
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
|
141
|
+
#Main Thread
|
142
|
+
|
143
|
+
begin
|
144
|
+
if (ARGV[0])
|
145
|
+
if ((ARGV[0]=="add")&&(ARGV[1]))
|
146
|
+
puts addDomain(ARGV[1],ARGV[2])
|
147
|
+
exit 0
|
148
|
+
elsif ((ARGV[0]=="remove")&&(ARGV[1]))
|
149
|
+
puts removeDomain(ARGV[1])
|
150
|
+
exit 0
|
151
|
+
elsif ((ARGV[0]=="update")&&(ARGV[1]))
|
152
|
+
puts updateDomain(ARGV[1],ARGV[2])
|
153
|
+
exit 0
|
154
|
+
elsif (ARGV[0]=="view")
|
155
|
+
puts getWebDomains()
|
156
|
+
exit 0
|
157
|
+
end
|
158
|
+
end
|
159
|
+
puts("Syntax error: ./manageWebDomains add/remove/update/view domain [url]")
|
160
|
+
exit 1
|
161
|
+
rescue => e
|
162
|
+
puts("#{e.class.name}: #{e.message}")
|
163
|
+
exit 1
|
164
|
+
end
|
@@ -1,13 +1,15 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
#
|
4
|
-
|
2
|
+
####################################
|
3
|
+
# Rest Api Client Script
|
4
|
+
#Generate and send requests to Social Stream presence API
|
5
|
+
#@author Aldo Gordillo < agordillos@gmail.com >
|
6
|
+
#@version 2.0 - 24-2-2012
|
7
|
+
####################################
|
5
8
|
|
6
9
|
|
7
10
|
require 'logger'
|
8
11
|
require 'rest_client'
|
9
12
|
|
10
|
-
|
11
13
|
path = "/var/log/ejabberd/scripts.log"
|
12
14
|
file = File.open(path, File::WRONLY | File::APPEND | File::CREAT)
|
13
15
|
file.sync = true
|
@@ -50,7 +52,7 @@ end
|
|
50
52
|
#####################
|
51
53
|
#def myHook(param1,param2)
|
52
54
|
# log(getMethodName,"(My message: #{param1},#{param2})")
|
53
|
-
# url = "http://" +
|
55
|
+
# url = "http://" + getWebDomainUrlFromDomain(domain) + "/xmpp/hookRoute"
|
54
56
|
|
55
57
|
# params = {}
|
56
58
|
# encrypted_params = {}
|
@@ -62,58 +64,59 @@ end
|
|
62
64
|
# return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
63
65
|
#end
|
64
66
|
|
65
|
-
def setConnection(
|
66
|
-
log($script_title,"#{getMethodName}(#{
|
67
|
-
url = "http://" +
|
67
|
+
def setConnection(userJid)
|
68
|
+
log($script_title,"#{getMethodName}(#{userJid})")
|
69
|
+
url = "http://" + getWebDomainUrlFromDomain(getDomainFromJid(userJid)) + "/xmpp/setConnection"
|
68
70
|
|
69
71
|
params = {}
|
70
72
|
encrypted_params = {}
|
71
|
-
encrypted_params[:name]=
|
73
|
+
encrypted_params[:name]=getUsernameFromJid(userJid)
|
72
74
|
|
73
75
|
return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
74
76
|
end
|
75
77
|
|
76
78
|
|
77
|
-
def unsetConnection(
|
78
|
-
log($script_title,"#{getMethodName}(#{
|
79
|
-
url = "http://" +
|
79
|
+
def unsetConnection(userJid)
|
80
|
+
log($script_title,"#{getMethodName}(#{userJid})")
|
81
|
+
url = "http://" + getWebDomainUrlFromDomain(getDomainFromJid(userJid)) + "/xmpp/unsetConnection"
|
80
82
|
|
81
83
|
params = {}
|
82
84
|
encrypted_params = {}
|
83
|
-
encrypted_params[:name]=
|
85
|
+
encrypted_params[:name]=getUsernameFromJid(userJid)
|
84
86
|
|
85
87
|
return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
86
88
|
end
|
87
89
|
|
88
90
|
|
89
|
-
def setPresence(
|
90
|
-
log($script_title,"#{getMethodName}(#{
|
91
|
-
url = "http://" +
|
91
|
+
def setPresence(userJid,status)
|
92
|
+
log($script_title,"#{getMethodName}(#{userJid},#{status})")
|
93
|
+
url = "http://" + getWebDomainUrlFromDomain(getDomainFromJid(userJid)) + "/xmpp/setPresence"
|
92
94
|
|
93
95
|
params = {}
|
94
96
|
encrypted_params = {}
|
95
|
-
encrypted_params[:name]=
|
97
|
+
encrypted_params[:name]=getUsernameFromJid(userJid)
|
96
98
|
encrypted_params[:status]=status
|
97
99
|
|
98
100
|
return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
99
101
|
end
|
100
102
|
|
101
103
|
|
102
|
-
def unsetPresence(
|
103
|
-
log($script_title,"#{getMethodName}(#{
|
104
|
-
url = "http://" +
|
104
|
+
def unsetPresence(userJid)
|
105
|
+
log($script_title,"#{getMethodName}(#{userJid})")
|
106
|
+
url = "http://" + getWebDomainUrlFromDomain(getDomainFromJid(userJid)) + "/xmpp/unsetPresence"
|
105
107
|
|
106
108
|
params = {}
|
107
109
|
encrypted_params = {}
|
108
|
-
encrypted_params[:name]=
|
110
|
+
encrypted_params[:name]=getUsernameFromJid(userJid)
|
109
111
|
|
110
112
|
return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
111
113
|
end
|
112
114
|
|
113
115
|
|
116
|
+
#Reset all domains connections
|
114
117
|
def resetConnection()
|
115
118
|
log($script_title,"Call #{getMethodName}()")
|
116
|
-
url = "http://" +
|
119
|
+
url = "http://" + getWebDomainUrlFromDomain("all") + "/xmpp/resetConnection"
|
117
120
|
|
118
121
|
params = {}
|
119
122
|
encrypted_params = {}
|
@@ -122,29 +125,31 @@ def resetConnection()
|
|
122
125
|
end
|
123
126
|
|
124
127
|
|
125
|
-
def synchronize()
|
126
|
-
log($script_title,"Call #{getMethodName}()")
|
127
|
-
url = "http://" +
|
128
|
-
|
129
|
-
|
128
|
+
def synchronize(domain)
|
129
|
+
log($script_title,"Call #{getMethodName}(#{domain})")
|
130
|
+
url = "http://" + getWebDomainUrlFromDomain(domain) + "/xmpp/synchronizePresence"
|
131
|
+
|
130
132
|
#Get connected users using Emanagement
|
131
|
-
|
132
|
-
|
133
|
+
jids = []
|
134
|
+
if domain=="all"
|
135
|
+
command = $scripts_path + "/emanagement getConnectedJids"
|
136
|
+
else
|
137
|
+
command = $scripts_path + "/emanagement getConnectedJidsByDomain " + domain
|
138
|
+
end
|
133
139
|
output = %x[#{command}]
|
134
140
|
sessions = output.split("\n")
|
135
141
|
|
136
142
|
sessions.each do |session|
|
137
|
-
|
143
|
+
jids << session.split("/")[0]
|
138
144
|
end
|
139
145
|
#Finish
|
140
146
|
|
141
|
-
|
142
147
|
#In this cases users always will be sent in clear (not cipher)
|
143
148
|
#(Too much data to cipher)
|
144
149
|
#Anyway, we must to build the hash to pass the authentication
|
145
150
|
params = {}
|
146
151
|
encrypted_params = {}
|
147
|
-
params[:name]=
|
152
|
+
params[:name]=jids.join(",")
|
148
153
|
|
149
154
|
return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
150
155
|
end
|
@@ -277,6 +282,44 @@ def invokeApiCall(method,args)
|
|
277
282
|
end
|
278
283
|
|
279
284
|
|
285
|
+
def getUsernameFromJid(jid)
|
286
|
+
return jid.split("@")[0];
|
287
|
+
end
|
288
|
+
|
289
|
+
def getDomainFromJid(jid)
|
290
|
+
return jid.split("@")[1];
|
291
|
+
end
|
292
|
+
|
293
|
+
def getWebDomainUrlFromDomain(domain)
|
294
|
+
|
295
|
+
if domain=="all"
|
296
|
+
return getWebDomainUrlFromDomain(getWebDomains()[0])
|
297
|
+
end
|
298
|
+
|
299
|
+
web_domain = getOption(domain + "=");
|
300
|
+
if (web_domain != "Undefined")
|
301
|
+
return web_domain
|
302
|
+
else
|
303
|
+
return domain
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
def getWebDomains()
|
308
|
+
begin
|
309
|
+
web_domains = getOption("web_domains=");
|
310
|
+
#web_domains=["domain1","domain2"]
|
311
|
+
return getElementsFromStringArray(web_domains);
|
312
|
+
rescue Exception=>e
|
313
|
+
return [""]
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
def getElementsFromStringArray(stringArray)
|
318
|
+
stringArray=stringArray[1,stringArray.length-2]
|
319
|
+
return stringArray.split(",")
|
320
|
+
end
|
321
|
+
|
322
|
+
|
280
323
|
#Main Program
|
281
324
|
|
282
325
|
begin
|
@@ -1,13 +1,15 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
#
|
4
|
-
|
2
|
+
####################################
|
3
|
+
# Rest Api Client Script
|
4
|
+
#Generate and send requests to Social Stream presence API
|
5
|
+
#@author Aldo Gordillo < agordillos@gmail.com >
|
6
|
+
#@version 2.0 - 24-2-2012
|
7
|
+
####################################
|
5
8
|
|
6
9
|
|
7
10
|
require 'logger'
|
8
11
|
require 'rest_client'
|
9
12
|
|
10
|
-
|
11
13
|
path = "/var/log/ejabberd/scripts.log"
|
12
14
|
file = File.open(path, File::WRONLY | File::APPEND | File::CREAT)
|
13
15
|
file.sync = true
|
@@ -32,7 +34,7 @@ end
|
|
32
34
|
$secure_rest_api = getOption("secure_rest_api=")
|
33
35
|
$pass = getOption("ejabberd_password=")
|
34
36
|
$scripts_path = getOption("scripts_path=")
|
35
|
-
$script_title = "
|
37
|
+
$script_title = "Rest Api Client"
|
36
38
|
|
37
39
|
|
38
40
|
def log(title,text)
|
@@ -50,7 +52,7 @@ end
|
|
50
52
|
#####################
|
51
53
|
#def myHook(param1,param2)
|
52
54
|
# log(getMethodName,"(My message: #{param1},#{param2})")
|
53
|
-
# url = "http://" +
|
55
|
+
# url = "http://" + getWebDomainUrlFromDomain(domain) + "/xmpp/hookRoute"
|
54
56
|
|
55
57
|
# params = {}
|
56
58
|
# encrypted_params = {}
|
@@ -62,58 +64,59 @@ end
|
|
62
64
|
# return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
63
65
|
#end
|
64
66
|
|
65
|
-
def setConnection(
|
66
|
-
log($script_title,"#{getMethodName}(#{
|
67
|
-
url = "http://" +
|
67
|
+
def setConnection(userJid)
|
68
|
+
log($script_title,"#{getMethodName}(#{userJid})")
|
69
|
+
url = "http://" + getWebDomainUrlFromDomain(getDomainFromJid(userJid)) + "/xmpp/setConnection"
|
68
70
|
|
69
71
|
params = {}
|
70
72
|
encrypted_params = {}
|
71
|
-
encrypted_params[:name]=
|
73
|
+
encrypted_params[:name]=getUsernameFromJid(userJid)
|
72
74
|
|
73
75
|
return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
74
76
|
end
|
75
77
|
|
76
78
|
|
77
|
-
def unsetConnection(
|
78
|
-
log($script_title,"#{getMethodName}(#{
|
79
|
-
url = "http://" +
|
79
|
+
def unsetConnection(userJid)
|
80
|
+
log($script_title,"#{getMethodName}(#{userJid})")
|
81
|
+
url = "http://" + getWebDomainUrlFromDomain(getDomainFromJid(userJid)) + "/xmpp/unsetConnection"
|
80
82
|
|
81
83
|
params = {}
|
82
84
|
encrypted_params = {}
|
83
|
-
encrypted_params[:name]=
|
85
|
+
encrypted_params[:name]=getUsernameFromJid(userJid)
|
84
86
|
|
85
87
|
return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
86
88
|
end
|
87
89
|
|
88
90
|
|
89
|
-
def setPresence(
|
90
|
-
log($script_title,"#{getMethodName}(#{
|
91
|
-
url = "http://" +
|
91
|
+
def setPresence(userJid,status)
|
92
|
+
log($script_title,"#{getMethodName}(#{userJid},#{status})")
|
93
|
+
url = "http://" + getWebDomainUrlFromDomain(getDomainFromJid(userJid)) + "/xmpp/setPresence"
|
92
94
|
|
93
95
|
params = {}
|
94
96
|
encrypted_params = {}
|
95
|
-
encrypted_params[:name]=
|
97
|
+
encrypted_params[:name]=getUsernameFromJid(userJid)
|
96
98
|
encrypted_params[:status]=status
|
97
99
|
|
98
100
|
return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
99
101
|
end
|
100
102
|
|
101
103
|
|
102
|
-
def unsetPresence(
|
103
|
-
log($script_title,"#{getMethodName}(#{
|
104
|
-
url = "http://" +
|
104
|
+
def unsetPresence(userJid)
|
105
|
+
log($script_title,"#{getMethodName}(#{userJid})")
|
106
|
+
url = "http://" + getWebDomainUrlFromDomain(getDomainFromJid(userJid)) + "/xmpp/unsetPresence"
|
105
107
|
|
106
108
|
params = {}
|
107
109
|
encrypted_params = {}
|
108
|
-
encrypted_params[:name]=
|
110
|
+
encrypted_params[:name]=getUsernameFromJid(userJid)
|
109
111
|
|
110
112
|
return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
111
113
|
end
|
112
114
|
|
113
115
|
|
116
|
+
#Reset all domains connections
|
114
117
|
def resetConnection()
|
115
118
|
log($script_title,"Call #{getMethodName}()")
|
116
|
-
url = "http://" +
|
119
|
+
url = "http://" + getWebDomainUrlFromDomain("all") + "/xmpp/resetConnection"
|
117
120
|
|
118
121
|
params = {}
|
119
122
|
encrypted_params = {}
|
@@ -122,29 +125,31 @@ def resetConnection()
|
|
122
125
|
end
|
123
126
|
|
124
127
|
|
125
|
-
def synchronize()
|
126
|
-
log($script_title,"Call #{getMethodName}()")
|
127
|
-
url = "http://" +
|
128
|
-
|
129
|
-
|
128
|
+
def synchronize(domain)
|
129
|
+
log($script_title,"Call #{getMethodName}(#{domain})")
|
130
|
+
url = "http://" + getWebDomainUrlFromDomain(domain) + "/xmpp/synchronizePresence"
|
131
|
+
|
130
132
|
#Get connected users using Emanagement
|
131
|
-
|
132
|
-
|
133
|
+
jids = []
|
134
|
+
if domain=="all"
|
135
|
+
command = $scripts_path + "/emanagement getConnectedJids"
|
136
|
+
else
|
137
|
+
command = $scripts_path + "/emanagement getConnectedJidsByDomain " + domain
|
138
|
+
end
|
133
139
|
output = %x[#{command}]
|
134
140
|
sessions = output.split("\n")
|
135
141
|
|
136
142
|
sessions.each do |session|
|
137
|
-
|
143
|
+
jids << session.split("/")[0]
|
138
144
|
end
|
139
145
|
#Finish
|
140
146
|
|
141
|
-
|
142
147
|
#In this cases users always will be sent in clear (not cipher)
|
143
148
|
#(Too much data to cipher)
|
144
149
|
#Anyway, we must to build the hash to pass the authentication
|
145
150
|
params = {}
|
146
151
|
encrypted_params = {}
|
147
|
-
params[:name]=
|
152
|
+
params[:name]=jids.join(",")
|
148
153
|
|
149
154
|
return [getMethodName,generic_api_call(url,params,encrypted_params)]
|
150
155
|
end
|
@@ -277,11 +282,53 @@ def invokeApiCall(method,args)
|
|
277
282
|
end
|
278
283
|
|
279
284
|
|
285
|
+
def getUsernameFromJid(jid)
|
286
|
+
return jid.split("@")[0];
|
287
|
+
end
|
288
|
+
|
289
|
+
def getDomainFromJid(jid)
|
290
|
+
return jid.split("@")[1];
|
291
|
+
end
|
292
|
+
|
293
|
+
def getWebDomainUrlFromDomain(domain)
|
294
|
+
|
295
|
+
if domain=="all"
|
296
|
+
return getWebDomainUrlFromDomain(getWebDomains()[0])
|
297
|
+
end
|
298
|
+
|
299
|
+
web_domain = getOption(domain + "=");
|
300
|
+
if (web_domain != "Undefined")
|
301
|
+
return web_domain
|
302
|
+
else
|
303
|
+
return domain
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
def getWebDomains()
|
308
|
+
begin
|
309
|
+
web_domains = getOption("web_domains=");
|
310
|
+
#web_domains=["domain1","domain2"]
|
311
|
+
return getElementsFromStringArray(web_domains);
|
312
|
+
rescue Exception=>e
|
313
|
+
return [""]
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
def getElementsFromStringArray(stringArray)
|
318
|
+
stringArray=stringArray[1,stringArray.length-2]
|
319
|
+
return stringArray.split(",")
|
320
|
+
end
|
321
|
+
|
322
|
+
|
280
323
|
#Main Program
|
281
324
|
|
282
325
|
begin
|
326
|
+
if !ARGV[0]
|
327
|
+
puts("Syntax Error: ./synchronize_presence_script domain")
|
328
|
+
exit 1
|
329
|
+
end
|
283
330
|
|
284
|
-
args = []
|
331
|
+
args = ARGV[0]
|
285
332
|
method = "synchronize"
|
286
333
|
|
287
334
|
if (response = invokeApiCall(method, args) and response[1])
|