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.
Files changed (56) hide show
  1. data/README.rdoc +11 -5
  2. data/base/app/assets/stylesheets/cheesecake.css.scss +1 -0
  3. data/base/app/views/cheesecake/_cheesecake.html.erb +3 -0
  4. data/base/app/views/cheesecake/_index.html.erb +88 -41
  5. data/base/app/views/cheesecake/_sector_form.html.erb +12 -12
  6. data/base/lib/social_stream/base/version.rb +1 -1
  7. data/base/lib/social_stream/test_helpers/controllers.rb +19 -2
  8. data/base/lib/tasks/db/populate.rake +190 -165
  9. data/base/social_stream-base.gemspec +1 -1
  10. data/base/spec/controllers/posts_controller_spec.rb +19 -1
  11. data/lib/social_stream/version.rb +1 -1
  12. data/presence/app/assets/images/status/chat.png +0 -0
  13. data/presence/app/assets/javascripts/chat_interface_manager.js.erb +42 -45
  14. data/presence/app/assets/javascripts/chat_parser.js +5 -5
  15. data/presence/app/assets/javascripts/chat_persistence.js +25 -26
  16. data/presence/app/assets/javascripts/chat_utilities.js +15 -11
  17. data/presence/app/assets/javascripts/chat_window_manager.js +129 -26
  18. data/presence/app/assets/javascripts/jquery.ui.chatbox.sstreampresence.js +22 -3
  19. data/presence/app/assets/javascripts/social_stream-presence.js +1 -0
  20. data/presence/app/assets/javascripts/videochat.js.erb +459 -0
  21. data/presence/app/assets/javascripts/xmpp_client_management.js.erb +303 -65
  22. data/presence/app/assets/stylesheets/chat.css.scss +42 -1
  23. data/presence/app/controllers/xmpp_controller.rb +20 -3
  24. data/presence/app/views/chat/_index.html.erb +7 -2
  25. data/presence/app/views/xmpp/getOpenTokSessionIDAndToken.xml.builder +6 -0
  26. data/presence/config/locales/en.yml +22 -1
  27. data/presence/config/locales/es.yml +23 -2
  28. data/presence/config/routes.rb +2 -0
  29. data/presence/ejabberd/conf/ssconfig_example.cfg +4 -3
  30. data/presence/ejabberd/ejabberd_files.zip +0 -0
  31. data/presence/ejabberd/ejabberd_scripts/authentication_script +22 -12
  32. data/presence/ejabberd/ejabberd_scripts/development_scripts/show_config.sh +9 -10
  33. data/presence/ejabberd/ejabberd_scripts/emanagement +275 -178
  34. data/presence/ejabberd/ejabberd_scripts/manageWebDomains +164 -0
  35. data/presence/ejabberd/ejabberd_scripts/rest_api_client_script +75 -32
  36. data/presence/ejabberd/ejabberd_scripts/synchronize_presence_script +81 -34
  37. data/presence/ejabberd/mod_sspresence/mod_sspresence.beam +0 -0
  38. data/presence/ejabberd/mod_sspresence/mod_sspresence.erl +27 -23
  39. data/presence/lib/OpenTok/Exceptions.rb +11 -0
  40. data/presence/lib/OpenTok/OpenTokSDK.rb +184 -0
  41. data/presence/lib/OpenTok/Session.rb +27 -0
  42. data/presence/lib/generators/social_stream/presence/templates/initializer.rb +8 -2
  43. data/presence/lib/open_tok.rb +31 -0
  44. data/presence/lib/opentok.rb +29 -0
  45. data/presence/lib/social_stream-presence.rb +4 -0
  46. data/presence/lib/social_stream/presence/models/buddy_manager.rb +1 -1
  47. data/presence/lib/social_stream/presence/version.rb +1 -1
  48. data/presence/lib/social_stream/presence/xmpp_server_order.rb +96 -76
  49. data/presence/lib/social_stream/presence/xmpp_ssclient.rb +54 -0
  50. data/presence/lib/tasks/presence/multidomain.rake +45 -0
  51. data/presence/lib/tasks/presence/synchronize.rake +18 -4
  52. data/presence/vendor/assets/javascripts/TB.min.js +4329 -0
  53. data/social_stream.gemspec +2 -2
  54. metadata +40 -30
  55. data/presence/ejabberd/ejabberd_scripts/reset_connection_script +0 -300
  56. 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
- #Rest Api Client Script
3
- #Version: 13-12-2011
4
- #@author Aldo
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://" + getOption("web_domain=") + "/xmpp/hookRoute"
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(username)
66
- log($script_title,"#{getMethodName}(#{username})")
67
- url = "http://" + getOption("web_domain=") + "/xmpp/setConnection"
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]=username
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(username)
78
- log($script_title,"#{getMethodName}(#{username})")
79
- url = "http://" + getOption("web_domain=") + "/xmpp/unsetConnection"
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]=username
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(username,status)
90
- log($script_title,"#{getMethodName}(#{username},#{status})")
91
- url = "http://" + getOption("web_domain=") + "/xmpp/setPresence"
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]=username
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(username)
103
- log($script_title,"#{getMethodName}(#{username})")
104
- url = "http://" + getOption("web_domain=") + "/xmpp/unsetPresence"
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]=username
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://" + getOption("web_domain=") + "/xmpp/resetConnection"
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://" + getOption("web_domain=") + "/xmpp/synchronizePresence"
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
- users = []
132
- command = $scripts_path + "/emanagement getConnectedUsers"
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
- users << session.split("@")[0]
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]=users.join(",")
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
- #Rest Api Client Script
3
- #Version: 13-12-2011
4
- #@author Aldo
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 = "Synchronize Presence Script"
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://" + getOption("web_domain=") + "/xmpp/hookRoute"
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(username)
66
- log($script_title,"#{getMethodName}(#{username})")
67
- url = "http://" + getOption("web_domain=") + "/xmpp/setConnection"
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]=username
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(username)
78
- log($script_title,"#{getMethodName}(#{username})")
79
- url = "http://" + getOption("web_domain=") + "/xmpp/unsetConnection"
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]=username
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(username,status)
90
- log($script_title,"#{getMethodName}(#{username},#{status})")
91
- url = "http://" + getOption("web_domain=") + "/xmpp/setPresence"
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]=username
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(username)
103
- log($script_title,"#{getMethodName}(#{username})")
104
- url = "http://" + getOption("web_domain=") + "/xmpp/unsetPresence"
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]=username
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://" + getOption("web_domain=") + "/xmpp/resetConnection"
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://" + getOption("web_domain=") + "/xmpp/synchronizePresence"
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
- users = []
132
- command = $scripts_path + "/emanagement getConnectedUsers"
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
- users << session.split("@")[0]
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]=users.join(",")
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])