social_stream-presence 0.0.9 → 0.0.10
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/ejabberd/conf/{ejabberd.cfg → ejabberd_example.cfg} +3 -7
- data/ejabberd/conf/ssconfig_example.cfg +32 -0
- data/ejabberd/ejabberd_scripts/authentication_script +1 -1
- data/ejabberd/ejabberd_scripts/{compile_module → development_scripts/compile_module} +0 -0
- data/ejabberd/ejabberd_scripts/{generate_random_password → development_scripts/generate_random_password} +0 -0
- data/ejabberd/ejabberd_scripts/{kill_authentication_script.sh → development_scripts/kill_authentication_script.sh} +0 -0
- data/ejabberd/ejabberd_scripts/{reset_logs.sh → development_scripts/reset_logs.sh} +0 -2
- data/ejabberd/ejabberd_scripts/{show_config.sh → development_scripts/show_config.sh} +3 -0
- data/ejabberd/ejabberd_scripts/{start_ejabberd.sh → development_scripts/start_ejabberd.sh} +0 -0
- data/ejabberd/ejabberd_scripts/{stop_ejabberd.sh → development_scripts/stop_ejabberd.sh} +0 -0
- data/ejabberd/ejabberd_scripts/emanagement +2 -2
- data/ejabberd/mod_sspresence/mod_sspresence.beam +0 -0
- data/ejabberd/mod_sspresence/mod_sspresence.erl +11 -7
- data/lib/generators/social_stream/presence/templates/initializer.rb +7 -3
- data/lib/social_stream/presence/version.rb +1 -1
- data/lib/social_stream-presence.rb +5 -0
- data/lib/tasks/presence/synchronize.rake +68 -38
- metadata +13 -32
- data/ejabberd/conf/ejabberdctl.cfg +0 -154
- data/ejabberd/conf/inetrc +0 -3
- data/ejabberd/conf/ssconfig.cfg +0 -32
- data/ejabberd/ejabberd_scripts/authentication_script_org +0 -114
@@ -88,7 +88,7 @@
|
|
88
88
|
%% You can define one or several, for example:
|
89
89
|
%% {hosts, ["example.net", "example.com", "example.org"]}.
|
90
90
|
%%
|
91
|
-
{hosts, ["
|
91
|
+
{hosts, ["example.com"]}.
|
92
92
|
|
93
93
|
%%
|
94
94
|
%% route_subdomains: Delegate subdomains to other XMPP servers.
|
@@ -115,8 +115,7 @@
|
|
115
115
|
%% certificate, specify the full path to the
|
116
116
|
%% file and uncomment this line:
|
117
117
|
%%
|
118
|
-
%%{certfile, "/path/to/
|
119
|
-
{certfile, "/etc/ejabberd/server.pem"}, starttls,
|
118
|
+
%%{certfile, "/path/to/your_ssl_certificate.pem"}, starttls,
|
120
119
|
|
121
120
|
{access, c2s},
|
122
121
|
{shaper, c2s_shaper},
|
@@ -235,13 +234,10 @@
|
|
235
234
|
%% Exauth Response Timeout is a extauth module constant and its value is 60 seconds.
|
236
235
|
%%
|
237
236
|
{auth_method, external}.
|
238
|
-
{extauth_program, "/
|
237
|
+
{extauth_program, "/scripts_path/authentication_script"}.
|
239
238
|
{extauth_instances, 3}.
|
240
239
|
|
241
240
|
|
242
|
-
%%{auth_method, external}.
|
243
|
-
%%{extauth_program, "/home/aldo/ejabberd-2.1.8_scripts/authentication_script"}.
|
244
|
-
|
245
241
|
%%
|
246
242
|
%% Authentication using ODBC
|
247
243
|
%% Remember to setup a database in the next section.
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#Social Stream Presence: ejabberd config
|
2
|
+
|
3
|
+
#Ejabberd node server domain
|
4
|
+
server_domain=domain.example.com
|
5
|
+
|
6
|
+
#Scripts Path
|
7
|
+
scripts_path=/my_scripts_path
|
8
|
+
|
9
|
+
#Source path: uncomment to compile ejabberd social stream module
|
10
|
+
#source_path=/.../ejabberd_source/src
|
11
|
+
|
12
|
+
#It is also necessary to modify the file: /etc/ejabberd/ejabberd.cfg
|
13
|
+
#%%{auth_method, external}.
|
14
|
+
#%%{extauth_program, "scripts_path/authentication_script"}.
|
15
|
+
|
16
|
+
#API REST
|
17
|
+
auth_api=http://localhost/users/sign_in
|
18
|
+
set_connection_api=http://localhost/xmpp/setConnection
|
19
|
+
unset_connection_api=http://localhost/xmpp/unsetConnection
|
20
|
+
reset_connection_api=http://localhost/xmpp/resetConnection
|
21
|
+
synchronize_presence_api=http://localhost/xmpp/synchronizePresence
|
22
|
+
set_presence_api=http://localhost/xmpp/setPresence
|
23
|
+
unset_presence_api=http://localhost/xmpp/unsetPresence
|
24
|
+
|
25
|
+
#Social Stream Login
|
26
|
+
ss_login=social_stream-presence
|
27
|
+
|
28
|
+
#Social Stream PASSWORD
|
29
|
+
ss_password=password
|
30
|
+
|
31
|
+
#Ejabberd Server Password
|
32
|
+
ejabberd_password=password
|
@@ -87,7 +87,7 @@ loop do
|
|
87
87
|
|
88
88
|
when "auth"
|
89
89
|
$logger.info "#{Process.pid}: Authenticating #{data[0]}@#{data[1]}"
|
90
|
-
|
90
|
+
#$logger.info "#{Process.pid}: With password #{data[2]}"
|
91
91
|
#password = data[2]
|
92
92
|
|
93
93
|
#Authorization condition for LOGIN
|
File without changes
|
File without changes
|
File without changes
|
@@ -3,14 +3,12 @@
|
|
3
3
|
echo "Starting Reset logs"
|
4
4
|
|
5
5
|
rm /var/log/ejabberd/auth.log
|
6
|
-
rm /var/log/ejabberd/auth_error.log
|
7
6
|
rm /var/log/ejabberd/ejabberd.log
|
8
7
|
rm /var/log/ejabberd/erlang.log
|
9
8
|
rm /var/log/ejabberd/scripts.log
|
10
9
|
rm /var/log/ejabberd/erl_crash_*
|
11
10
|
|
12
11
|
touch /var/log/ejabberd/auth.log
|
13
|
-
touch /var/log/ejabberd/auth_error.log
|
14
12
|
touch /var/log/ejabberd/ejabberd.log
|
15
13
|
touch /var/log/ejabberd/erlang.log
|
16
14
|
touch /var/log/ejabberd/scripts.log
|
@@ -19,12 +19,15 @@ puts "############### Ejabberd Configuration ###############"
|
|
19
19
|
puts "Config file for Social Stream Presence: /etc/ejabberd/ssconfig.cfg"
|
20
20
|
puts "Scripts Path: #{getOption("scripts_path=")}"
|
21
21
|
puts "mod_sspresence Path: #{getOption("source_path=")}"
|
22
|
+
puts "Server domain: #{getOption("server_domain=")}"
|
22
23
|
puts "API REST URLs"
|
23
24
|
puts "Authentication: #{getOption("auth_api=")}"
|
24
25
|
puts "onRegisterConnection: #{getOption("set_connection_api=")}"
|
25
26
|
puts "onRemoveConnection: #{getOption("unset_connection_api=")}"
|
26
27
|
puts "onPresence: #{getOption("set_presence_api=")}"
|
27
28
|
puts "onUnsetPresence: #{getOption("unset_presence_api=")}"
|
29
|
+
puts "ResetConnection: #{getOption("reset_connection_api=")}"
|
30
|
+
puts "SynchronizePresence: #{getOption("synchronize_presence_api=")}"
|
28
31
|
puts "Social Stream Presence logs in var/log/ejabberd/"
|
29
32
|
puts "######################################################"
|
30
33
|
puts ""
|
File without changes
|
File without changes
|
@@ -121,8 +121,8 @@ def setBidireccionalBuddys(usernameA,usernameB,nickA,nickB)
|
|
121
121
|
#addBuddyToRoster(username,buddy,buddyNick,buddyGroup,subscription_type)
|
122
122
|
addBuddyToRoster(usernameA,usernameB,nickB,"SocialStream","both")
|
123
123
|
addBuddyToRoster(usernameB,usernameA,nickA,"SocialStream","both")
|
124
|
-
sendPresence(usernameA,"chat")
|
125
|
-
sendPresence(usernameB,"chat")
|
124
|
+
#sendPresence(usernameA,"chat")
|
125
|
+
#sendPresence(usernameB,"chat")
|
126
126
|
return "Done"
|
127
127
|
end
|
128
128
|
|
Binary file
|
@@ -13,8 +13,8 @@ start(Host, _Opts) ->
|
|
13
13
|
ejabberd_hooks:add(set_presence_hook, Host, ?MODULE, on_presence, 50),
|
14
14
|
ejabberd_hooks:add(unset_presence_hook, Host, ?MODULE, on_unset_presence, 50),
|
15
15
|
ejabberd_hooks:add(user_send_packet, Host, ?MODULE, on_packet_send, 50),
|
16
|
-
%
|
17
|
-
|
16
|
+
%Reset connected users when module sspresence starts.
|
17
|
+
reset_connections(),
|
18
18
|
ok.
|
19
19
|
|
20
20
|
stop(Host) ->
|
@@ -169,7 +169,11 @@ execute(Message) ->
|
|
169
169
|
%frank-williamson@trapo adds demo@trapo to its roster with subscription from, in the group SocialStream with the name Nickname
|
170
170
|
%%
|
171
171
|
addItemToRoster(UserSlug,UserDomain,BuddySlug,BuddyDomain,ContactName,Group,Subscription_type) ->
|
172
|
-
Command = lists:concat(["ejabberdctl add_rosteritem ", UserSlug , " ", UserDomain, " ", BuddySlug, " ", BuddyDomain , " \\'", ContactName , "\\' ", Group , " ", Subscription_type]),
|
172
|
+
%%Command = lists:concat(["ejabberdctl add_rosteritem ", UserSlug , " ", UserDomain, " ", BuddySlug, " ", BuddyDomain , " \\'", ContactName , "\\' ", Group , " ", Subscription_type]),
|
173
|
+
%%Command = lists:concat(["ejabberdctl add_rosteritem ", UserSlug , " ", UserDomain, " ", BuddySlug, " ", BuddyDomain , " \'", ContactName , "\' ", Group , " ", Subscription_type]),
|
174
|
+
|
175
|
+
[UserName|_R] = string:tokens(ContactName, " "),
|
176
|
+
Command = lists:concat(["ejabberdctl add_rosteritem ", UserSlug , " ", UserDomain, " ", BuddySlug, " ", BuddyDomain , " ", UserName , " ", Group , " ", Subscription_type]),
|
173
177
|
os:cmd(Command),
|
174
178
|
?INFO_MSG("Execute command: ~p", [Command]),
|
175
179
|
ok.
|
@@ -248,10 +252,10 @@ ok.
|
|
248
252
|
|
249
253
|
|
250
254
|
%Reset all connections
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
+
reset_connections() ->
|
256
|
+
Reset_path = string:concat(getOptionValue("scripts_path="), "/reset_connection_script "),
|
257
|
+
os:cmd(Reset_path),
|
258
|
+
ok.
|
255
259
|
|
256
260
|
|
257
261
|
|
@@ -4,11 +4,15 @@ SocialStream::Presence.setup do |config|
|
|
4
4
|
#Configures Bosh Service Path
|
5
5
|
#config.bosh_service = "http://xmpp-proxy/http-bind"
|
6
6
|
#Configures Social Stream Rails App Password
|
7
|
-
config.password = "
|
7
|
+
config.password = "password"
|
8
8
|
#Configures XMPP Server Password
|
9
|
-
config.xmpp_server_password = "
|
10
|
-
#Username of the
|
9
|
+
config.xmpp_server_password = "password"
|
10
|
+
#Username of the Social Stream Admin sid
|
11
11
|
config.social_stream_presence_username = "social_stream-presence"
|
12
|
+
#Scripts path, only to execute local ejabberd commands
|
13
|
+
config.scripts_path = "/scripts_path"
|
14
|
+
#Remote or local mode
|
15
|
+
config.remote_xmpp_server = false
|
12
16
|
#False to disable Social Stream Presence
|
13
17
|
#config.enable = false
|
14
18
|
end
|
@@ -3,6 +3,8 @@ require 'social_stream-base'
|
|
3
3
|
module SocialStream
|
4
4
|
module Presence
|
5
5
|
|
6
|
+
autoload :XmppServerComunication, 'social_stream/presence/xmpp_server_comunication'
|
7
|
+
|
6
8
|
module Models
|
7
9
|
autoload :BuddyManager, 'social_stream/presence/models/buddy_manager'
|
8
10
|
end
|
@@ -11,9 +13,12 @@ module SocialStream
|
|
11
13
|
mattr_accessor :bosh_service
|
12
14
|
mattr_accessor :password
|
13
15
|
mattr_accessor :xmpp_server_password
|
16
|
+
mattr_accessor :remote_xmpp_server
|
17
|
+
mattr_accessor :scripts_path
|
14
18
|
mattr_accessor :social_stream_presence_username
|
15
19
|
mattr_accessor :enable
|
16
20
|
@@enable = true
|
21
|
+
@@remote_xmpp_server = false
|
17
22
|
|
18
23
|
class << self
|
19
24
|
def setup
|
@@ -50,49 +50,79 @@ namespace :presence do
|
|
50
50
|
task :rosters => :environment do
|
51
51
|
puts "Starting presence:synchronize:rosters"
|
52
52
|
|
53
|
-
|
54
|
-
|
55
|
-
#PASSWORD
|
56
|
-
password= SocialStream::Presence.password
|
57
|
-
#SS Username
|
58
|
-
ss_name = SocialStream::Presence.social_stream_presence_username
|
59
|
-
ss_sid = ss_name + "@" + domain
|
53
|
+
|
54
|
+
if SocialStream::Presence.remote_xmpp_server
|
60
55
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
56
|
+
#XMPP DOMAIN
|
57
|
+
domain = SocialStream::Presence.domain
|
58
|
+
#PASSWORD
|
59
|
+
password= SocialStream::Presence.password
|
60
|
+
#SS Username
|
61
|
+
ss_name = SocialStream::Presence.social_stream_presence_username
|
62
|
+
ss_sid = ss_name + "@" + domain
|
63
|
+
|
64
|
+
puts "Connecting to Xmpp Server"
|
65
|
+
client = Jabber::Client.new(Jabber::JID.new(ss_sid))
|
66
|
+
client.connect
|
67
|
+
puts "Authentication..."
|
68
|
+
client.auth(password)
|
69
|
+
puts "Connected to Xmpp Server"
|
70
|
+
|
71
|
+
puts "Remove all rosters"
|
72
|
+
msg = Jabber::Message::new(ss_sid, "SynchronizeRosters")
|
73
|
+
msg.type=:chat
|
74
|
+
client.send(msg)
|
75
|
+
|
76
|
+
|
77
|
+
puts "Populate rosters"
|
78
|
+
users = User.all
|
79
|
+
checkedUsers = []
|
67
80
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
81
|
+
users.each do |user|
|
82
|
+
checkedUsers << user.slug
|
83
|
+
contacts = user.contact_actors(:type=>:user)
|
84
|
+
contacts.each do |contact|
|
85
|
+
unless checkedUsers.include?(contact.slug)
|
86
|
+
user_sid = user.slug + "@" + domain
|
87
|
+
buddy_sid = contact.slug + "@" + domain
|
88
|
+
msg = Jabber::Message::new(ss_sid, "SetRosterForBidirectionalTie&" + user_sid + "&" + buddy_sid + "&" + user.name + "&" + contact.name)
|
89
|
+
msg.type=:chat
|
90
|
+
client.send(msg)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
puts "Synchronization complete"
|
96
|
+
puts "Closing connection"
|
97
|
+
client.close()
|
98
|
+
puts "Connection closing"
|
72
99
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
100
|
+
else
|
101
|
+
#SocialStream::Presence.remote_xmpp_server=false
|
102
|
+
|
103
|
+
puts "Removing all rosters"
|
104
|
+
system SocialStream::Presence.scripts_path + "/emanagement removeAllRosters"
|
105
|
+
puts "Rosters removed"
|
106
|
+
|
107
|
+
puts "Populate rosters"
|
108
|
+
users = User.all
|
109
|
+
checkedUsers = []
|
110
|
+
|
111
|
+
users.each do |user|
|
112
|
+
checkedUsers << user.slug
|
113
|
+
contacts = user.contact_actors(:type=>:user)
|
114
|
+
contacts.each do |contact|
|
115
|
+
unless checkedUsers.include?(contact.slug)
|
116
|
+
user_nick = user.name.split(" ")[0]
|
117
|
+
buddy_nick = contact.name.split(" ")[0]
|
118
|
+
command = SocialStream::Presence.scripts_path + "/emanagement setBidireccionalBuddys " + user.slug + " " + contact.slug + " " + user_nick + " " + buddy_nick
|
119
|
+
puts command
|
120
|
+
system command
|
121
|
+
end
|
88
122
|
end
|
89
123
|
end
|
90
|
-
|
91
|
-
|
92
|
-
puts "Synchronization complete"
|
93
|
-
puts "Closing connection"
|
94
|
-
client.close()
|
95
|
-
puts "Connection closing"
|
124
|
+
|
125
|
+
end
|
96
126
|
|
97
127
|
end
|
98
128
|
end
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_stream-presence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 9
|
9
|
-
version: 0.0.9
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.10
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Aldo Gordillo
|
@@ -14,7 +10,7 @@ autorequire:
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date: 2011-10-
|
13
|
+
date: 2011-10-25 00:00:00 +02:00
|
18
14
|
default_executable:
|
19
15
|
dependencies:
|
20
16
|
- !ruby/object:Gem::Dependency
|
@@ -25,10 +21,6 @@ dependencies:
|
|
25
21
|
requirements:
|
26
22
|
- - ~>
|
27
23
|
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 9
|
31
|
-
- 18
|
32
24
|
version: 0.9.18
|
33
25
|
type: :runtime
|
34
26
|
version_requirements: *id001
|
@@ -40,8 +32,6 @@ dependencies:
|
|
40
32
|
requirements:
|
41
33
|
- - ">="
|
42
34
|
- !ruby/object:Gem::Version
|
43
|
-
segments:
|
44
|
-
- 0
|
45
35
|
version: "0"
|
46
36
|
type: :runtime
|
47
37
|
version_requirements: *id002
|
@@ -53,8 +43,6 @@ dependencies:
|
|
53
43
|
requirements:
|
54
44
|
- - ">="
|
55
45
|
- !ruby/object:Gem::Version
|
56
|
-
segments:
|
57
|
-
- 0
|
58
46
|
version: "0"
|
59
47
|
type: :development
|
60
48
|
version_requirements: *id003
|
@@ -101,23 +89,20 @@ files:
|
|
101
89
|
- config/routes.rb
|
102
90
|
- db/migrate/20110711111408_add_connected_column_to_user.rb
|
103
91
|
- db/migrate/20110928135031_add_status_column_to_user.rb
|
104
|
-
- ejabberd/conf/
|
105
|
-
- ejabberd/conf/
|
106
|
-
- ejabberd/conf/inetrc
|
107
|
-
- ejabberd/conf/ssconfig.cfg
|
92
|
+
- ejabberd/conf/ejabberd_example.cfg
|
93
|
+
- ejabberd/conf/ssconfig_example.cfg
|
108
94
|
- ejabberd/ejabberd_scripts/authentication_script
|
109
|
-
- ejabberd/ejabberd_scripts/
|
110
|
-
- ejabberd/ejabberd_scripts/
|
95
|
+
- ejabberd/ejabberd_scripts/development_scripts/compile_module
|
96
|
+
- ejabberd/ejabberd_scripts/development_scripts/generate_random_password
|
97
|
+
- ejabberd/ejabberd_scripts/development_scripts/kill_authentication_script.sh
|
98
|
+
- ejabberd/ejabberd_scripts/development_scripts/reset_logs.sh
|
99
|
+
- ejabberd/ejabberd_scripts/development_scripts/show_config.sh
|
100
|
+
- ejabberd/ejabberd_scripts/development_scripts/start_ejabberd.sh
|
101
|
+
- ejabberd/ejabberd_scripts/development_scripts/stop_ejabberd.sh
|
111
102
|
- ejabberd/ejabberd_scripts/emanagement
|
112
|
-
- ejabberd/ejabberd_scripts/generate_random_password
|
113
|
-
- ejabberd/ejabberd_scripts/kill_authentication_script.sh
|
114
103
|
- ejabberd/ejabberd_scripts/reset_connection_script
|
115
|
-
- ejabberd/ejabberd_scripts/reset_logs.sh
|
116
104
|
- ejabberd/ejabberd_scripts/set_connection_script
|
117
105
|
- ejabberd/ejabberd_scripts/set_presence_script
|
118
|
-
- ejabberd/ejabberd_scripts/show_config.sh
|
119
|
-
- ejabberd/ejabberd_scripts/start_ejabberd.sh
|
120
|
-
- ejabberd/ejabberd_scripts/stop_ejabberd.sh
|
121
106
|
- ejabberd/ejabberd_scripts/synchronize_presence_script
|
122
107
|
- ejabberd/ejabberd_scripts/unset_connection_script
|
123
108
|
- ejabberd/mod_admin_extra/mod_admin_extra.beam
|
@@ -198,21 +183,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
198
183
|
requirements:
|
199
184
|
- - ">="
|
200
185
|
- !ruby/object:Gem::Version
|
201
|
-
segments:
|
202
|
-
- 0
|
203
186
|
version: "0"
|
204
187
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
188
|
none: false
|
206
189
|
requirements:
|
207
190
|
- - ">="
|
208
191
|
- !ruby/object:Gem::Version
|
209
|
-
segments:
|
210
|
-
- 0
|
211
192
|
version: "0"
|
212
193
|
requirements: []
|
213
194
|
|
214
195
|
rubyforge_project: social_stream-presence
|
215
|
-
rubygems_version: 1.
|
196
|
+
rubygems_version: 1.6.1
|
216
197
|
signing_key:
|
217
198
|
specification_version: 3
|
218
199
|
summary: Presence capabilities for Social Stream, the core for building social network websites
|
@@ -1,154 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# In this file you can configure options that are passed by ejabberdctl
|
3
|
-
# to the erlang runtime system when starting ejabberd
|
4
|
-
#
|
5
|
-
|
6
|
-
#' POLL: Kernel polling ([true|false])
|
7
|
-
#
|
8
|
-
# The kernel polling option requires support in the kernel.
|
9
|
-
# Additionally, you need to enable this feature while compiling Erlang.
|
10
|
-
#
|
11
|
-
# Default: true
|
12
|
-
#
|
13
|
-
#POLL=true
|
14
|
-
|
15
|
-
#.
|
16
|
-
#' SMP: SMP support ([enable|auto|disable])
|
17
|
-
#
|
18
|
-
# Explanation in Erlang/OTP documentation:
|
19
|
-
# enable: starts the Erlang runtime system with SMP support enabled.
|
20
|
-
# This may fail if no runtime system with SMP support is available.
|
21
|
-
# auto: starts the Erlang runtime system with SMP support enabled if it
|
22
|
-
# is available and more than one logical processor are detected.
|
23
|
-
# disable: starts a runtime system without SMP support.
|
24
|
-
#
|
25
|
-
# Default: auto
|
26
|
-
#
|
27
|
-
#SMP=auto
|
28
|
-
|
29
|
-
#.
|
30
|
-
#' ERL_MAX_PORTS: Maximum number of simultaneously open Erlang ports
|
31
|
-
#
|
32
|
-
# ejabberd consumes two or three ports for every connection, either
|
33
|
-
# from a client or from another Jabber server. So take this into
|
34
|
-
# account when setting this limit.
|
35
|
-
#
|
36
|
-
# Default: 32000
|
37
|
-
# Maximum: 268435456
|
38
|
-
#
|
39
|
-
#ERL_MAX_PORTS=32000
|
40
|
-
|
41
|
-
#.
|
42
|
-
#' FIREWALL_WINDOW: Range of allowed ports to pass through a firewall
|
43
|
-
#
|
44
|
-
# If Ejabberd is configured to run in cluster, and a firewall is blocking ports,
|
45
|
-
# it's possible to make Erlang use a defined range of port (instead of dynamic
|
46
|
-
# ports) for node communication.
|
47
|
-
#
|
48
|
-
# Default: not defined
|
49
|
-
# Example: 4200-4210
|
50
|
-
#
|
51
|
-
#FIREWALL_WINDOW=
|
52
|
-
|
53
|
-
#.
|
54
|
-
#' INET_DIST_INTERFACE: IP address where this Erlang node listens other nodes
|
55
|
-
#
|
56
|
-
# This communication is used by ejabberdctl command line tool,
|
57
|
-
# and in a cluster of several ejabberd nodes.
|
58
|
-
# Notice that the IP address must be specified in the Erlang syntax.
|
59
|
-
#
|
60
|
-
# Default: {127,0,0,1}
|
61
|
-
#
|
62
|
-
INET_DIST_INTERFACE={127,0,0,1}
|
63
|
-
|
64
|
-
#.
|
65
|
-
#' ERL_EPMD_ADDRESS: IP addresses where epmd listens for connections
|
66
|
-
#
|
67
|
-
# IMPORTANT: This option works only in Erlang/OTP R14B03 and newer.
|
68
|
-
#
|
69
|
-
# This environment variable may be set to a comma-separated
|
70
|
-
# list of IP addresses, in which case the epmd daemon
|
71
|
-
# will listen only on the specified address(es) and on the
|
72
|
-
# loopback address (which is implicitly added to the list if it
|
73
|
-
# has not been specified). The default behaviour is to listen on
|
74
|
-
# all available IP addresses.
|
75
|
-
#
|
76
|
-
# Default: 0.0.0.0
|
77
|
-
#
|
78
|
-
#ERL_EPMD_ADDRESS=127.0.0.1
|
79
|
-
|
80
|
-
#.
|
81
|
-
#' ERL_PROCESSES: Maximum number of Erlang processes
|
82
|
-
#
|
83
|
-
# Erlang consumes a lot of lightweight processes. If there is a lot of activity
|
84
|
-
# on ejabberd so that the maximum number of processes is reached, people will
|
85
|
-
# experience greater latency times. As these processes are implemented in
|
86
|
-
# Erlang, and therefore not related to the operating system processes, you do
|
87
|
-
# not have to worry about allowing a huge number of them.
|
88
|
-
#
|
89
|
-
# Default: 250000
|
90
|
-
# Maximum: 268435456
|
91
|
-
#
|
92
|
-
#ERL_PROCESSES=250000
|
93
|
-
|
94
|
-
#.
|
95
|
-
#' ERL_MAX_ETS_TABLES: Maximum number of ETS and Mnesia tables
|
96
|
-
#
|
97
|
-
# The number of concurrent ETS and Mnesia tables is limited. When the limit is
|
98
|
-
# reached, errors will appear in the logs:
|
99
|
-
# ** Too many db tables **
|
100
|
-
# You can safely increase this limit when starting ejabberd. It impacts memory
|
101
|
-
# consumption but the difference will be quite small.
|
102
|
-
#
|
103
|
-
# Default: 1400
|
104
|
-
#
|
105
|
-
#ERL_MAX_ETS_TABLES=1400
|
106
|
-
|
107
|
-
#.
|
108
|
-
#' ERL_OPTIONS: Additional Erlang options
|
109
|
-
#
|
110
|
-
# The next variable allows to specify additional options passed to erlang while
|
111
|
-
# starting ejabberd. Some useful options are -noshell, -detached, -heart. When
|
112
|
-
# ejabberd is started from an init.d script options -noshell and -detached are
|
113
|
-
# added implicitly. See erl(1) for more info.
|
114
|
-
#
|
115
|
-
# It might be useful to add "-pa /usr/local/lib/ejabberd/ebin" if you
|
116
|
-
# want to add local modules in this path.
|
117
|
-
#
|
118
|
-
# Default: ""
|
119
|
-
#
|
120
|
-
#ERL_OPTIONS=""
|
121
|
-
|
122
|
-
#.
|
123
|
-
#' ERLANG_NODE: Erlang node name
|
124
|
-
#
|
125
|
-
# The next variable allows to explicitly specify erlang node for ejabberd
|
126
|
-
# It can be given in different formats:
|
127
|
-
# ERLANG_NODE=ejabberd
|
128
|
-
# Lets erlang add hostname to the node (ejabberd uses short name in this case)
|
129
|
-
# ERLANG_NODE=ejabberd@hostname
|
130
|
-
# Erlang uses node name as is (so make sure that hostname is a real
|
131
|
-
# machine hostname or you'll not be able to control ejabberd)
|
132
|
-
# ERLANG_NODE=ejabberd@hostname.domainname
|
133
|
-
# The same as previous, but erlang will use long hostname
|
134
|
-
# (see erl (1) manual for details)
|
135
|
-
#
|
136
|
-
# Default: ejabberd
|
137
|
-
#
|
138
|
-
#ERLANG_NODE=ejabberd
|
139
|
-
|
140
|
-
#.
|
141
|
-
#' EJABBERD_PID_PATH: ejabberd PID file
|
142
|
-
#
|
143
|
-
# Indicate the full path to the ejabberd Process identifier (PID) file.
|
144
|
-
# If this variable is defined, ejabberd writes the PID file when starts,
|
145
|
-
# and deletes it when stops.
|
146
|
-
# Remember to create the directory and grant write permission to ejabberd.
|
147
|
-
#
|
148
|
-
# Default: don't write PID file
|
149
|
-
#
|
150
|
-
#EJABBERD_PID_PATH=/var/run/ejabberd/ejabberd.pid
|
151
|
-
|
152
|
-
#.
|
153
|
-
#'
|
154
|
-
# vim: foldmarker=#',#. foldmethod=marker:
|
data/ejabberd/conf/inetrc
DELETED
data/ejabberd/conf/ssconfig.cfg
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
#Social Stream Presence: ejabberd config
|
2
|
-
|
3
|
-
#Ejabberd node server domain
|
4
|
-
server_domain=localhost
|
5
|
-
|
6
|
-
#Scripts Path
|
7
|
-
scripts_path=/home/aldo/ejabberd-2.1.8_scripts
|
8
|
-
|
9
|
-
#Source path: uncomment to compile ejabberd social stream module
|
10
|
-
source_path=/home/aldo/ejabberd-2.1.8_source/src
|
11
|
-
|
12
|
-
#It is also necessary to modify the file: /etc/ejabberd/ejabberd.cfg
|
13
|
-
#%%{auth_method, external}.
|
14
|
-
#%%{extauth_program, "scripts_path/authentication_script"}.
|
15
|
-
|
16
|
-
#API REST
|
17
|
-
auth_api=http://0.0.0.0:3000/users/sign_in
|
18
|
-
set_connection_api=http://0.0.0.0:3000/xmpp/setConnection
|
19
|
-
unset_connection_api=http://0.0.0.0:3000/xmpp/unsetConnection
|
20
|
-
reset_connection_api=http://0.0.0.0:3000/xmpp/resetConnection
|
21
|
-
synchronize_presence_api=http://0.0.0.0:3000/xmpp/synchronizePresence
|
22
|
-
set_presence_api=http://0.0.0.0:3000/xmpp/setPresence
|
23
|
-
unset_presence_api=http://0.0.0.0:3000/xmpp/unsetPresence
|
24
|
-
|
25
|
-
#Social Stream Login
|
26
|
-
ss_login=social_stream-presence
|
27
|
-
|
28
|
-
#Social Stream PASSWORD
|
29
|
-
ss_password=DnVCB8G|R$VGmZ@2?5=CYS8z)NrL@LuQ<CUh^9B(DF4gC&sQpfbCMbaNKEdNrGYkT4L5zxM0wNWs5q3?ww(b&0d5fK87z^BmgJMMF2SKXT9pEk^UEcch!GX!Avf5GT9)j@FpHe)4RH)BK7J98u!sUmJHUN(Je6aBmn!FtZ4Ab5h8$|nsvUt3Jkq?21HOH$r0sDyJZZvGOCgFS2EKw@0wXsJRHYVRPBe&Eb!1X55e55bQ^h2AW&^R70TK0m)Fu8
|
30
|
-
|
31
|
-
#Ejabberd Server Password
|
32
|
-
ejabberd_password=G&s6GBnO)anw2Ene%K12Cb=0quj@uDmA
|
@@ -1,114 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'logger'
|
4
|
-
require 'rest_client'
|
5
|
-
|
6
|
-
$stdout.sync = true
|
7
|
-
$stdin.sync = true
|
8
|
-
|
9
|
-
path = "/var/log/ejabberd/auth.log"
|
10
|
-
file = File.open(path, File::WRONLY | File::APPEND | File::CREAT)
|
11
|
-
file.sync = true
|
12
|
-
$logger = Logger.new(file)
|
13
|
-
$logger.level = Logger::DEBUG
|
14
|
-
|
15
|
-
$logger.info "#{Process.pid}: Starting ejabberd authentication service"
|
16
|
-
|
17
|
-
|
18
|
-
def getOption(option)
|
19
|
-
File.open('/etc/ejabberd/ssconfig.cfg', 'r') do |f1|
|
20
|
-
while line = f1.gets
|
21
|
-
line = line.gsub(/\n/,'')
|
22
|
-
if line.match(/^#/)
|
23
|
-
#Comments
|
24
|
-
elsif line.match(/^#{option}/)
|
25
|
-
return line.gsub(/#{option}/,'')
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
return "Undefined"
|
30
|
-
end
|
31
|
-
|
32
|
-
$accessUrl = getOption("auth_api=")
|
33
|
-
$sslogin = getOption("ss_login=")
|
34
|
-
$sspass = getOption("ss_password=")
|
35
|
-
|
36
|
-
|
37
|
-
def auth(username, password)
|
38
|
-
|
39
|
-
#[TEST] Admin password
|
40
|
-
if username == "admin" and password == "pass"
|
41
|
-
return true
|
42
|
-
end
|
43
|
-
|
44
|
-
#Social Stream password
|
45
|
-
if username == $sslogin and password == $sspass
|
46
|
-
return true
|
47
|
-
end
|
48
|
-
|
49
|
-
begin
|
50
|
-
response = RestClient.post $accessUrl, :user => { :email => username , :password => password }
|
51
|
-
|
52
|
-
if response.code == 201
|
53
|
-
return true
|
54
|
-
else
|
55
|
-
return false
|
56
|
-
end
|
57
|
-
|
58
|
-
rescue => e
|
59
|
-
|
60
|
-
unless e.class.name == "RestClient::Unauthorized" and e.message == "401 Unauthorized"
|
61
|
-
$logger.error "#{Process.pid}: Exception in auth(username, password)"
|
62
|
-
$logger.error "#{Process.pid}: #{e.class.name}: #{e.message}"
|
63
|
-
end
|
64
|
-
|
65
|
-
return false
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
|
71
|
-
loop do
|
72
|
-
begin
|
73
|
-
$stdin.eof? # wait for input
|
74
|
-
start = Time.now
|
75
|
-
|
76
|
-
msg = $stdin.read(2)
|
77
|
-
length = msg.unpack('n').first
|
78
|
-
|
79
|
-
msg = $stdin.read(length)
|
80
|
-
cmd, *data = msg.split(":")
|
81
|
-
|
82
|
-
$logger.info "#{Process.pid}: Incoming Request: '#{cmd}'"
|
83
|
-
success = case cmd
|
84
|
-
|
85
|
-
when "auth"
|
86
|
-
$logger.info "#{Process.pid}: Authenticating #{data[0]}@#{data[1]}"
|
87
|
-
$logger.info "#{Process.pid}: With password #{data[2]}"
|
88
|
-
#password = data[2]
|
89
|
-
|
90
|
-
#Authorization condition for LOGIN
|
91
|
-
auth(data[0], data[2])
|
92
|
-
|
93
|
-
|
94
|
-
when "isuser"
|
95
|
-
|
96
|
-
$logger.info "#{Process.pid}: Isuser #{data[0]}@#{data[1]}"
|
97
|
-
|
98
|
-
#Authorization condition for ISUSER (Add buddys)
|
99
|
-
true
|
100
|
-
|
101
|
-
else
|
102
|
-
false
|
103
|
-
end
|
104
|
-
|
105
|
-
bool = success ? 1 : 0
|
106
|
-
$stdout.write [2, bool].pack("nn")
|
107
|
-
$logger.info "#{Process.pid}: Response: #{success ? "success" : "failure"}"
|
108
|
-
rescue => e
|
109
|
-
$logger.error "#{Process.pid}: #{e.class.name}: #{e.message}"
|
110
|
-
$logger.error "#{Process.pid}: " + e.backtrace.join("\n\t")
|
111
|
-
$logger.error "#{Process.pid}: Finish process"
|
112
|
-
break
|
113
|
-
end
|
114
|
-
end
|