social_stream 0.21.4 → 0.22.0
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/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])
|