social_stream-presence 0.0.13 → 0.0.14

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.
@@ -125,6 +125,10 @@ class XmppController < ApplicationController
125
125
  return params[:password] == SocialStream::Presence.xmpp_server_password
126
126
  end
127
127
 
128
+ def chatAuthWithCookie
129
+ cookie = params[:cookie]
130
+ render :text => "Ok"
131
+ end
128
132
 
129
133
  def chatWindow
130
134
  if (current_user) and (current_user.status != 'disable') and (params[:userConnected]=="true")
@@ -9,8 +9,8 @@
9
9
  <%= javascript_include_tag 'xmpp_client'%>
10
10
  <%= javascript_include_tag 'store'%>
11
11
  <% end %>
12
-
13
12
 
13
+
14
14
  <script type="text/javascript">
15
15
 
16
16
  //Global variables
@@ -19,7 +19,13 @@
19
19
  var user_name = '<%=current_user.name%>';
20
20
  var user_slug = '<%=current_user.slug%>';
21
21
  var user_jid = '<%=current_user.slug%>'+"@"+domain;
22
- var sound_path = "/assets/audio/chat/onMessage"
22
+ var sound_path = "/assets/audio/chat/onMessage";
23
+ var cookie = "<%=cookies["_global_session"]%>";
24
+
25
+ function connectToServerWithCookie(){
26
+ connection = new Strophe.Connection(BOSH_SERVICE);
27
+ connection.connect(user_jid, cookie, onConnect);
28
+ }
23
29
 
24
30
  function connectToServer(chatPassword){
25
31
  <%unless current_user.nil? %>
data/config/routes.rb CHANGED
@@ -11,5 +11,6 @@ Rails.application.routes.draw do
11
11
  match '/xmpp/setPresence' => "Xmpp#setPresence"
12
12
  match '/xmpp/unsetPresence' => "Xmpp#unsetPresence"
13
13
  match '/chatWindow'=> "Xmpp#chatWindow"
14
+ match '/chatAuthWithCookie'=> "Xmpp#chatAuthWithCookie"
14
15
 
15
16
  end
@@ -30,3 +30,6 @@ ss_password=password
30
30
 
31
31
  #Ejabberd Server Password
32
32
  ejabberd_password=password
33
+
34
+ #Emanagement configuration
35
+ users_require_sudo=user1,user2,...
@@ -33,6 +33,7 @@ end
33
33
  #Configuration variables
34
34
  $domain = getOption("server_domain=")
35
35
 
36
+
36
37
  PARAMS_FOR_COMMANDS = {
37
38
  'addBuddyToRoster' => 5,
38
39
  'removeBuddyFromRoster' => 2,
@@ -54,6 +55,7 @@ PARAMS_FOR_COMMANDS = {
54
55
  'sendMessageToUser' => 3,
55
56
  'getUserResource' => 1,
56
57
  'isEjabberdNodeStarted' => 0,
58
+ 'checkEjabberdctlQuotedString' => 0,
57
59
  'help' => 0,
58
60
  }
59
61
 
@@ -78,6 +80,7 @@ SYNTAX_FOR_COMMANDS = {
78
80
  'sendMessageToUser' => 'sendMessageToUser from_name to_name msg',
79
81
  'getUserResource' => 'getUserResource username',
80
82
  'isEjabberdNodeStarted' => 'isEjabberdNodeStarted',
83
+ 'checkEjabberdctlQuotedString' => 'checkEjabberdctlQuotedString',
81
84
  'help' => 'help',
82
85
  }
83
86
 
@@ -123,7 +126,7 @@ def addBuddyToRoster(userSid,buddySid,buddyNick,buddyGroup,subscription_type)
123
126
  buddy = buddySid.split("@")[0]
124
127
  userDomain = userSid.split("@")[1]
125
128
  buddyDomain = buddySid.split("@")[1]
126
- command = "ejabberdctl add-rosteritem " + user + " " + userDomain + " " + buddy + " " + buddyDomain + " " + buddyNick + " " + buddyGroup + " " + subscription_type
129
+ command = buildCommand("ejabberdctl add-rosteritem " + user + " " + userDomain + " " + buddy + " " + buddyDomain + " " + buddyNick + " " + buddyGroup + " " + subscription_type)
127
130
  %x[#{command}];
128
131
  return "Done"
129
132
  end
@@ -134,7 +137,7 @@ def removeBuddyFromRoster(userSid,buddySid)
134
137
  userDomain = userSid.split("@")[1]
135
138
  buddyDomain = buddySid.split("@")[1]
136
139
  if checkUserInRoster(buddy,getRoster(user))
137
- command = "ejabberdctl delete_rosteritem " + user + " " + userDomain + " " + buddy + " " + buddyDomain
140
+ command = buildCommand("ejabberdctl delete_rosteritem " + user + " " + userDomain + " " + buddy + " " + buddyDomain)
138
141
  %x[#{command}];
139
142
  return "Done"
140
143
  else
@@ -147,7 +150,7 @@ end
147
150
 
148
151
  def getRoster(username)
149
152
  if checkUser(username)
150
- command = "ejabberdctl get_roster " + username + " " + $domain
153
+ command = buildCommand("ejabberdctl get_roster " + username + " " + $domain)
151
154
  %x[#{command}];
152
155
  else
153
156
  return "User " + username + " not found"
@@ -179,13 +182,13 @@ def removeRoster(username)
179
182
  end
180
183
 
181
184
  def removeAllRosters()
182
- command = "ejabberdctl process_rosteritems delete any any any any"
185
+ command = buildCommand("ejabberdctl process_rosteritems delete any any any any")
183
186
  %x[#{command}];
184
187
  return "Done";
185
188
  end
186
189
 
187
190
  def getAllUsersWithRoster()
188
- command = "ejabberdctl process_rosteritems list any any any any"
191
+ command = buildCommand("ejabberdctl process_rosteritems list any any any any")
189
192
  output = %x[#{command}];
190
193
 
191
194
  i = 0
@@ -286,7 +289,7 @@ end
286
289
  def sendStanzaUserMessage(username,msg)
287
290
  resource = getUserResource(username);
288
291
  stanza = "\\<\\'message\\'\\>\\<\\'body\\'\\>\\'" + msg + "\\'\\<\\'/body\\'\\>\\<\\'/message\\'\\>"
289
- command = "ejabberdctl send_stanza_c2s " + username + " " + $domain + " " + resource + " " + stanza
292
+ command = buildCommand("ejabberdctl send_stanza_c2s " + username + " " + $domain + " " + resource + " " + stanza)
290
293
  puts "Executing: " + command
291
294
  %x[#{command}];
292
295
  return "Done"
@@ -311,7 +314,7 @@ def sendPresenceWithShow(from_name,to_name,show)
311
314
  from_sid = from_name + "@" + $domain;
312
315
  to_sid = to_name + "@" + $domain;
313
316
  pres_stanza = "\\<\\'presence from=\\'\\\"\\'" + from_sid + "\\'\\\"\\' to=\\'\\\"\\'" + to_sid + "\\'\\\"\\>\\<\\'show\\'\\>\\'" + show + "\\'\\<\\'/show\\'\\>\\<\\'/presence\\'\\>"
314
- command = "ejabberdctl send_stanza_c2s " + from_name + " " + $domain + " " + resource + " " + pres_stanza
317
+ command = buildCommand("ejabberdctl send_stanza_c2s " + from_name + " " + $domain + " " + resource + " " + pres_stanza)
315
318
  puts "Executing: " + command
316
319
  %x[#{command}];
317
320
  return "Done"
@@ -322,7 +325,7 @@ def sendPresenceStanzaWithType(from_name,to_name,presence_type)
322
325
  from_sid = from_name + "@" + $domain;
323
326
  to_sid = to_name + "@" + $domain;
324
327
  pres_stanza = "\\<\\'presence type=\\'\\\"\\'" + presence_type + "\\'\\\"\\' from=\\'\\\"\\'" + from_sid + "\\'\\\"\\' to=\\'\\\"\\'" + to_sid + "\\'\\\"\\>\\<\\'/presence\\'\\>"
325
- command = "ejabberdctl send_stanza_c2s " + from_name + " " + $domain + " " + resource + " " + pres_stanza
328
+ command = buildCommand("ejabberdctl send_stanza_c2s " + from_name + " " + $domain + " " + resource + " " + pres_stanza)
326
329
  puts "Executing: " + command
327
330
  %x[#{command}];
328
331
  return "Done"
@@ -331,14 +334,14 @@ end
331
334
  def sendMessageToUser(from_name,to_name,msg)
332
335
  from_sid = from_name + "@" + $domain;
333
336
  to_sid = to_name + "@" + $domain;
334
- command = "ejabberdctl send_message_chat " + from_sid + " " + to_sid + " " + "\\'" + msg + "\\'";
337
+ command = buildCommand("ejabberdctl send_message_chat " + from_sid + " " + to_sid + " " + buildQuotedString(msg))
335
338
  puts "Executing: " + command
336
339
  %x[#{command}];
337
340
  return "Done"
338
341
  end
339
342
 
340
343
  def getUserResource(username)
341
- command = "ejabberdctl connected-users"
344
+ command = buildCommand("ejabberdctl connected-users")
342
345
  output = %x[#{command}];
343
346
  lines = output.split("\n");
344
347
  lines.each do |line|
@@ -356,7 +359,7 @@ end
356
359
  #More utilities
357
360
 
358
361
  def isEjabberdNodeStarted
359
- command = "ejabberdctl status"
362
+ command = buildCommand("ejabberdctl status")
360
363
  output = %x[#{command}]
361
364
  if firstLine = output.split("\n")[0]
362
365
  return ((firstLine.split(":")[1]).strip()=="started")
@@ -364,10 +367,92 @@ def isEjabberdNodeStarted
364
367
  return false
365
368
  end
366
369
 
370
+ def checkEjabberdctlQuotedString
371
+ puts "checkForSimpleSlash: " + checkForSimpleSlash.to_s()
372
+ puts "checkForDoubleSlash: " + checkForDoubleSlash.to_s()
373
+ end
374
+
375
+ def checkForDoubleSlash
376
+ command = "ejabberdctl send_message_chat example@localhost example@localhost \\'Hello quoted string\\'"
377
+ if execute_as_sudo
378
+ command = "sudo " + command
379
+ end
380
+ #puts "Executing " + command
381
+ output = %x[#{command}]
382
+ firstLine = ""
383
+ lines = output.split("\n")
384
+ lines.each do |line|
385
+ if line != ""
386
+ firstLine = line
387
+ break
388
+ end
389
+ end
390
+
391
+ if firstLine==""
392
+ return true
393
+ elsif firstLine.split(":")[0]=="Error"
394
+ return false
395
+ else
396
+ #Unknown error
397
+ return false
398
+ end
399
+ end
400
+
401
+ def checkForSimpleSlash
402
+ command = "ejabberdctl send_message_chat example@localhost example@localhost \'Hello quoted string\'"
403
+ if execute_as_sudo
404
+ command = "sudo " + command
405
+ end
406
+ #puts "Executing " + command
407
+ output = %x[#{command}]
408
+ firstLine = ""
409
+ lines = output.split("\n")
410
+ lines.each do |line|
411
+ if line != ""
412
+ firstLine = line
413
+ break
414
+ end
415
+ end
416
+
417
+ if firstLine==""
418
+ return true
419
+ elsif firstLine.split(":")[0]=="Error"
420
+ return false
421
+ else
422
+ #Unknown error
423
+ return false
424
+ end
425
+ end
426
+
427
+ def buildQuotedString(msg)
428
+ if checkForSimpleSlash
429
+ return "\'" + msg + "\'"
430
+ end
431
+ if checkForDoubleSlash
432
+ return "\\'" + msg + "\\'"
433
+ end
434
+ return msg
435
+ end
367
436
 
368
437
 
369
438
  #Help & Support methods
370
439
 
440
+ def buildCommand(command)
441
+ if execute_as_sudo
442
+ command = "sudo " + command
443
+ end
444
+ return command
445
+ end
446
+
447
+ def execute_as_sudo
448
+ current_user = %x["whoami"].split("\n")[0]
449
+ sudo_users = getOption("users_require_sudo=")
450
+ sudo_users_array = sudo_users.split(",")
451
+ if sudo_users_array.include?(current_user)
452
+ return true
453
+ end
454
+ end
455
+
371
456
  def help
372
457
  log("Command list")
373
458
  SYNTAX_FOR_COMMANDS.values.each do |command|
@@ -1,5 +1,5 @@
1
1
  module Socialstream
2
2
  module Presence
3
- VERSION = "0.0.13"
3
+ VERSION = "0.0.14"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,8 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: social_stream-presence
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.0.13
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 14
9
+ version: 0.0.14
6
10
  platform: ruby
7
11
  authors:
8
12
  - Aldo Gordillo
@@ -10,7 +14,7 @@ autorequire:
10
14
  bindir: bin
11
15
  cert_chain: []
12
16
 
13
- date: 2011-10-28 00:00:00 +02:00
17
+ date: 2011-10-31 00:00:00 +01:00
14
18
  default_executable:
15
19
  dependencies:
16
20
  - !ruby/object:Gem::Dependency
@@ -21,6 +25,10 @@ dependencies:
21
25
  requirements:
22
26
  - - ~>
23
27
  - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 9
31
+ - 18
24
32
  version: 0.9.18
25
33
  type: :runtime
26
34
  version_requirements: *id001
@@ -32,6 +40,8 @@ dependencies:
32
40
  requirements:
33
41
  - - ">="
34
42
  - !ruby/object:Gem::Version
43
+ segments:
44
+ - 0
35
45
  version: "0"
36
46
  type: :runtime
37
47
  version_requirements: *id002
@@ -43,6 +53,8 @@ dependencies:
43
53
  requirements:
44
54
  - - ">="
45
55
  - !ruby/object:Gem::Version
56
+ segments:
57
+ - 0
46
58
  version: "0"
47
59
  type: :development
48
60
  version_requirements: *id003
@@ -184,17 +196,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
196
  requirements:
185
197
  - - ">="
186
198
  - !ruby/object:Gem::Version
199
+ segments:
200
+ - 0
187
201
  version: "0"
188
202
  required_rubygems_version: !ruby/object:Gem::Requirement
189
203
  none: false
190
204
  requirements:
191
205
  - - ">="
192
206
  - !ruby/object:Gem::Version
207
+ segments:
208
+ - 0
193
209
  version: "0"
194
210
  requirements: []
195
211
 
196
212
  rubyforge_project: social_stream-presence
197
- rubygems_version: 1.6.1
213
+ rubygems_version: 1.3.7
198
214
  signing_key:
199
215
  specification_version: 3
200
216
  summary: Presence capabilities for Social Stream, the core for building social network websites