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.
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])