social_stream-presence 0.1.2 → 0.1.4
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/app/assets/javascripts/chat_interface_manager.js.erb +43 -5
- data/app/assets/javascripts/chat_utilities.js +26 -0
- data/app/assets/javascripts/xmpp_client_management.js.erb +5 -1
- data/app/assets/stylesheets/chat.css +24 -0
- data/app/views/chat/_off.html.erb +0 -3
- data/app/views/xmpp/active_users.html.erb +1 -1
- data/config/locales/en.yml +4 -2
- data/config/locales/es.yml +3 -1
- data/config/routes.rb +3 -3
- data/ejabberd/conf/ssconfig_example.cfg +14 -20
- data/ejabberd/ejabberd_files.zip +0 -0
- data/ejabberd/ejabberd_scripts/authentication_script +3 -13
- data/ejabberd/ejabberd_scripts/development_scripts/show_config.sh +13 -9
- data/ejabberd/ejabberd_scripts/emanagement +65 -22
- data/ejabberd/ejabberd_scripts/reset_connection_script +1 -1
- data/ejabberd/ejabberd_scripts/set_connection_script +1 -1
- data/ejabberd/ejabberd_scripts/set_presence_script +1 -1
- data/ejabberd/ejabberd_scripts/set_script_header.sh +112 -0
- data/ejabberd/ejabberd_scripts/synchronize_presence_script +4 -2
- data/ejabberd/ejabberd_scripts/unset_connection_script +1 -1
- data/ejabberd/ejabberd_scripts/unset_presence_script +48 -0
- data/ejabberd/installer.sh +267 -0
- data/ejabberd/mod_sspresence/mod_sspresence.beam +0 -0
- data/ejabberd/mod_sspresence/mod_sspresence.erl +31 -99
- data/lib/generators/social_stream/presence/install_generator.rb +1 -1
- data/lib/generators/social_stream/presence/templates/initializer.rb +6 -4
- data/lib/social_stream-presence.rb +2 -1
- data/lib/social_stream/presence/models/buddy_manager.rb +1 -1
- data/lib/social_stream/presence/version.rb +1 -1
- data/lib/social_stream/presence/xmpp_server_order.rb +128 -28
- data/lib/tasks/presence/installer.rake +100 -0
- data/social_stream-presence.gemspec +2 -0
- data/vendor/assets/javascripts/jquery.ui.chatbox.js +18 -2
- metadata +23 -5
@@ -0,0 +1,112 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#Script header edition
|
3
|
+
#@author Aldo
|
4
|
+
|
5
|
+
#Constants
|
6
|
+
installer_file_path=$(readlink -f $0)
|
7
|
+
installer_folder_path=`dirname "$installer_file_path"`
|
8
|
+
|
9
|
+
|
10
|
+
#Functions
|
11
|
+
|
12
|
+
|
13
|
+
msg () {
|
14
|
+
echo "#################################"
|
15
|
+
echo $1
|
16
|
+
}
|
17
|
+
|
18
|
+
|
19
|
+
#Main Program
|
20
|
+
|
21
|
+
msg "Starting set scripts header"
|
22
|
+
|
23
|
+
echo "Installer path:" $installer_file_path
|
24
|
+
|
25
|
+
|
26
|
+
#Look for params
|
27
|
+
|
28
|
+
msg "Detecting ruby enviroment"
|
29
|
+
|
30
|
+
if [ $1 ]
|
31
|
+
then {
|
32
|
+
echo "Ruby enviromet specified by param"
|
33
|
+
ruby_env=$1
|
34
|
+
} else {
|
35
|
+
ruby_env=`which ruby`
|
36
|
+
}
|
37
|
+
fi
|
38
|
+
|
39
|
+
echo "Ruby enviroment:" $ruby_env
|
40
|
+
|
41
|
+
|
42
|
+
msg "Writing scripts header"
|
43
|
+
echo ""
|
44
|
+
for file in `ls $installer_folder_path/` ; do
|
45
|
+
|
46
|
+
|
47
|
+
if [ ! -f $installer_folder_path/$file ];
|
48
|
+
then
|
49
|
+
continue
|
50
|
+
fi
|
51
|
+
|
52
|
+
if [[ $file =~ .sh$ ]]
|
53
|
+
then
|
54
|
+
continue
|
55
|
+
fi
|
56
|
+
|
57
|
+
if [ $installer_folder_path/$file == $installer_file_path ];
|
58
|
+
then
|
59
|
+
continue
|
60
|
+
fi
|
61
|
+
|
62
|
+
|
63
|
+
printf $file"\n"
|
64
|
+
|
65
|
+
#Create temporal file
|
66
|
+
temporal_path=$installer_folder_path/$file"_temp"
|
67
|
+
|
68
|
+
if [ -f $temporal_path ];
|
69
|
+
then
|
70
|
+
echo "File $temporal_path exists."
|
71
|
+
rm $temporal_path
|
72
|
+
fi
|
73
|
+
|
74
|
+
touch $temporal_path
|
75
|
+
|
76
|
+
#Read file
|
77
|
+
file_path=$installer_folder_path/$file
|
78
|
+
|
79
|
+
SAVEIFS=$IFS
|
80
|
+
IFS=$(echo -en "\n\b")
|
81
|
+
|
82
|
+
while read line
|
83
|
+
do
|
84
|
+
#Look for Pattern !/usr/bin/env ruby
|
85
|
+
if [[ $line =~ ^#!/usr/bin/env ]]
|
86
|
+
then
|
87
|
+
scriptheader="#!/usr/bin/env"
|
88
|
+
line="${scriptheader} ${ruby_env}"
|
89
|
+
fi
|
90
|
+
echo $line >> $temporal_path
|
91
|
+
done < $file_path
|
92
|
+
|
93
|
+
IFS=$SAVEIFS
|
94
|
+
|
95
|
+
#Replace original file
|
96
|
+
cp $temporal_path $file_path
|
97
|
+
|
98
|
+
#Remove temporal file
|
99
|
+
rm $temporal_path
|
100
|
+
|
101
|
+
done
|
102
|
+
|
103
|
+
|
104
|
+
msg "Complete"
|
105
|
+
exit 0
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
|
@@ -25,8 +25,9 @@ def getOption(option)
|
|
25
25
|
return "Undefined"
|
26
26
|
end
|
27
27
|
|
28
|
-
$url = getOption("
|
28
|
+
$url = "http://" + getOption("web_domain=") + "/xmpp/synchronizePresence"
|
29
29
|
$pass = getOption("ejabberd_password=")
|
30
|
+
$scripts_path = getOption("scripts_path=")
|
30
31
|
|
31
32
|
|
32
33
|
def log(text)
|
@@ -37,7 +38,8 @@ def synchronize()
|
|
37
38
|
log("Start Synchronize")
|
38
39
|
|
39
40
|
users = []
|
40
|
-
|
41
|
+
command = $scripts_path + "/emanagement getConnectedUsers"
|
42
|
+
output = %x[#{command}]
|
41
43
|
sessions = output.split("\n")
|
42
44
|
|
43
45
|
sessions.each do |session|
|
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#Unset Presence Script
|
3
|
+
#@author Aldo
|
4
|
+
|
5
|
+
require 'logger'
|
6
|
+
require 'rest_client'
|
7
|
+
|
8
|
+
path = "/var/log/ejabberd/scripts.log"
|
9
|
+
file = File.open(path, File::WRONLY | File::APPEND | File::CREAT)
|
10
|
+
file.sync = true
|
11
|
+
$logger = Logger.new(file)
|
12
|
+
$logger.level = Logger::DEBUG
|
13
|
+
|
14
|
+
def getOption(option)
|
15
|
+
File.open('/etc/ejabberd/ssconfig.cfg', 'r') do |f1|
|
16
|
+
while line = f1.gets
|
17
|
+
line = line.gsub(/\n/,'')
|
18
|
+
if line.match(/^#/)
|
19
|
+
#Comments
|
20
|
+
elsif line.match(/^#{option}/)
|
21
|
+
return line.gsub(/#{option}/,'')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
return "Undefined"
|
26
|
+
end
|
27
|
+
|
28
|
+
$url = "http://" + getOption("web_domain=") + "/xmpp/unsetPresence"
|
29
|
+
$pass = getOption("ejabberd_password=")
|
30
|
+
|
31
|
+
|
32
|
+
def log(text)
|
33
|
+
$logger.info "Unset Presence Script: " + text
|
34
|
+
end
|
35
|
+
|
36
|
+
def unsetPresence(username)
|
37
|
+
log("unsetPresence(#{username})")
|
38
|
+
RestClient.post($url, :name => username, :password => $pass)
|
39
|
+
return true
|
40
|
+
|
41
|
+
rescue RestClient::Exception
|
42
|
+
log("RestClient::Exception with unsetPresence(#{username})")
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
unsetPresence(ARGV[0])
|
47
|
+
|
48
|
+
|
@@ -0,0 +1,267 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
#Social Stream Presence Ejabberd files installer
|
4
|
+
#@author Aldo
|
5
|
+
|
6
|
+
#Call example:
|
7
|
+
#./installer.sh ejabberd_module_path="/ejabberd_module_path/" scripts_path="/scripts_path/" [key1=value1,key2=value2]
|
8
|
+
|
9
|
+
#Constants
|
10
|
+
config_files_path="/etc/ejabberd/"
|
11
|
+
logs_path="/var/log/ejabberd/"
|
12
|
+
installer_file_path=$(readlink -f $0)
|
13
|
+
installer_folder_path=`dirname "$installer_file_path"`
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
#Functions
|
18
|
+
|
19
|
+
help () {
|
20
|
+
echo "Syntax error: ./installer [onlyconf=true] ejabberd_module_path=mpath scripts_path=spath [key1=value1,key2=value2,...]"
|
21
|
+
}
|
22
|
+
|
23
|
+
|
24
|
+
msg () {
|
25
|
+
echo "#################################"
|
26
|
+
echo $1
|
27
|
+
}
|
28
|
+
|
29
|
+
|
30
|
+
applyOption () {
|
31
|
+
if [ ! $1 ] || [ ! $2 ]
|
32
|
+
then
|
33
|
+
return 1
|
34
|
+
fi
|
35
|
+
#key $1
|
36
|
+
#value $2
|
37
|
+
#string ssconfig $3
|
38
|
+
echo "Enable option " $1"="$2
|
39
|
+
|
40
|
+
SEPARATOR=$(echo -en "\n\b")
|
41
|
+
match=$1"="
|
42
|
+
|
43
|
+
if [[ $ssconfig == *$match* ]]
|
44
|
+
then {
|
45
|
+
#Modify existing options
|
46
|
+
repl=$1"="$2"="
|
47
|
+
|
48
|
+
if [ $2 == "remove" ]
|
49
|
+
then
|
50
|
+
repl="removedVar=true="
|
51
|
+
fi
|
52
|
+
|
53
|
+
ssconfig=${ssconfig/$match/$repl}
|
54
|
+
} else {
|
55
|
+
#Add new options
|
56
|
+
if [ ! $2 == "remove" ]
|
57
|
+
then
|
58
|
+
ssconfig="${ssconfig}${SEPARATOR}${1}=${2}="
|
59
|
+
fi
|
60
|
+
}
|
61
|
+
fi
|
62
|
+
|
63
|
+
return 0
|
64
|
+
}
|
65
|
+
|
66
|
+
|
67
|
+
restoreFile () {
|
68
|
+
IFS=$(echo -en "\n\b")
|
69
|
+
cat /dev/null > $conffile
|
70
|
+
for word in $ssconfigrestore; do
|
71
|
+
echo $word >> $conffile
|
72
|
+
done
|
73
|
+
return 0
|
74
|
+
}
|
75
|
+
|
76
|
+
|
77
|
+
updateSSConfig () {
|
78
|
+
|
79
|
+
if [ $1 ] && [ ${#1} -gt 2 ]
|
80
|
+
then {
|
81
|
+
|
82
|
+
if [ ${1:0:1} != "[" ] || [ ${1:${#1}-1:${#1}} != "]" ]
|
83
|
+
then
|
84
|
+
echo "Malformed options"
|
85
|
+
help
|
86
|
+
exit 1
|
87
|
+
fi
|
88
|
+
|
89
|
+
msg "Processing options"
|
90
|
+
options=${1:1:${#1}-2}
|
91
|
+
options=(${options//","/ })
|
92
|
+
|
93
|
+
|
94
|
+
#Read config file
|
95
|
+
ssconfig=""
|
96
|
+
conffile=$config_files_path/ssconfig.cfg
|
97
|
+
|
98
|
+
SAVEIFS=$IFS
|
99
|
+
IFS=$(echo -en "\n\b")
|
100
|
+
|
101
|
+
while read line
|
102
|
+
do
|
103
|
+
ssconfig="${ssconfig}${line}${IFS}"
|
104
|
+
done < $conffile
|
105
|
+
|
106
|
+
IFS=$SAVEIFS
|
107
|
+
|
108
|
+
ssconfigrestore=$ssconfig;
|
109
|
+
|
110
|
+
#Modify ssconfig to apply options
|
111
|
+
for option in ${options[@]}; do
|
112
|
+
option=(${option//"="/ })
|
113
|
+
key=${option[0]}
|
114
|
+
value=${option[1]}
|
115
|
+
applyOption $key $value
|
116
|
+
done
|
117
|
+
|
118
|
+
|
119
|
+
#Write (ssconfig) to file
|
120
|
+
cat /dev/null > $conffile
|
121
|
+
IFS=$(echo -en "\n\b")
|
122
|
+
for word in $ssconfig; do
|
123
|
+
|
124
|
+
if [[ $word =~ [#] ]] || [ -z $word ]
|
125
|
+
then {
|
126
|
+
echo $word >> $conffile
|
127
|
+
} else {
|
128
|
+
IFS=$SAVEIFS
|
129
|
+
arr=(${word//"="/ })
|
130
|
+
if [ ${#arr[@]} -lt 2 ]
|
131
|
+
then
|
132
|
+
echo "ssconfig.cfg error in line:" $word
|
133
|
+
restoreFile
|
134
|
+
exit 1
|
135
|
+
fi
|
136
|
+
word="${arr[0]}=${arr[1]}"
|
137
|
+
if [ ! $word == "removedVar=true" ]
|
138
|
+
then
|
139
|
+
echo $word >> $conffile
|
140
|
+
fi
|
141
|
+
}
|
142
|
+
fi
|
143
|
+
done
|
144
|
+
}
|
145
|
+
fi
|
146
|
+
|
147
|
+
}
|
148
|
+
|
149
|
+
|
150
|
+
#Main Program
|
151
|
+
|
152
|
+
|
153
|
+
#Look for only configuration mode
|
154
|
+
arr=(${1//"="/ })
|
155
|
+
if [ ${#arr} -ge 2 ] && [ ${arr[0]} == "onlyconf" ] && [ ${arr[1]} == "true" ]
|
156
|
+
then {
|
157
|
+
msg "Updating ssconfig"
|
158
|
+
updateSSConfig $2
|
159
|
+
exit 0
|
160
|
+
}
|
161
|
+
fi
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
#Installer mode
|
166
|
+
msg "Start installer"
|
167
|
+
|
168
|
+
if [ $# -lt 2 ]
|
169
|
+
then
|
170
|
+
help
|
171
|
+
exit 1
|
172
|
+
fi
|
173
|
+
|
174
|
+
|
175
|
+
msg "Reading parameters..."
|
176
|
+
|
177
|
+
arr=(${1//"="/ })
|
178
|
+
|
179
|
+
if [ ${arr[0]} == "ejabberd_module_path" ]
|
180
|
+
then {
|
181
|
+
ejabberd_module_path=${arr[1]}
|
182
|
+
} else {
|
183
|
+
help
|
184
|
+
exit 1
|
185
|
+
}
|
186
|
+
fi
|
187
|
+
|
188
|
+
arr=(${2//"="/ })
|
189
|
+
|
190
|
+
if [ ${arr[0]} == "scripts_path" ]
|
191
|
+
then {
|
192
|
+
scripts_path=${arr[1]}
|
193
|
+
} else {
|
194
|
+
help
|
195
|
+
exit 1
|
196
|
+
}
|
197
|
+
fi
|
198
|
+
|
199
|
+
|
200
|
+
echo "Installer path:" $installer_file_path
|
201
|
+
echo "Ejabberd module path:" $ejabberd_module_path
|
202
|
+
echo "scripts_path:" $scripts_path
|
203
|
+
echo "config_files_path:" $config_files_path
|
204
|
+
echo "logs_path:" $logs_path
|
205
|
+
|
206
|
+
|
207
|
+
paths=($ejabberd_module_path $scripts_path $config_files_path $logs_path )
|
208
|
+
|
209
|
+
msg "Creating directories"
|
210
|
+
|
211
|
+
for path in ${paths[@]}; do
|
212
|
+
mkdir -p $path
|
213
|
+
done
|
214
|
+
|
215
|
+
|
216
|
+
msg "Copying Ejabberd modules"
|
217
|
+
cp $installer_folder_path/mod_admin_extra/mod_admin_extra.beam $ejabberd_module_path
|
218
|
+
cp $installer_folder_path/mod_sspresence/mod_sspresence.beam $ejabberd_module_path
|
219
|
+
|
220
|
+
msg "Copying scripts"
|
221
|
+
cp -r $installer_folder_path/ejabberd_scripts/* $scripts_path
|
222
|
+
|
223
|
+
|
224
|
+
msg "Checking and copying configuration files"
|
225
|
+
|
226
|
+
if [ -e $config_files_path/ssconfig.cfg ]
|
227
|
+
then {
|
228
|
+
echo "Find ssconfig.cfg: updating ssconfig_example.cfg"
|
229
|
+
cp $installer_folder_path/conf/ssconfig_example.cfg $config_files_path/ssconfig_example.cfg
|
230
|
+
} else {
|
231
|
+
echo "ssconfig not exists"
|
232
|
+
cp $installer_folder_path/conf/ssconfig_example.cfg $config_files_path/ssconfig.cfg
|
233
|
+
}
|
234
|
+
fi
|
235
|
+
|
236
|
+
cp $installer_folder_path/conf/ejabberd_example.cfg $config_files_path/ejabberd_example.cfg
|
237
|
+
echo "Updating ejabberd_example.cfg"
|
238
|
+
|
239
|
+
msg "Check and copying log files"
|
240
|
+
if [ ! -e $logs_path/scripts.log ]
|
241
|
+
then {
|
242
|
+
echo "Creating scripts.log"
|
243
|
+
touch $logs_path/scripts.log
|
244
|
+
}
|
245
|
+
fi
|
246
|
+
|
247
|
+
if [ ! -e $logs_path/auth.log ]
|
248
|
+
then {
|
249
|
+
echo "Creating auth.log"
|
250
|
+
touch $logs_path/auth.log
|
251
|
+
}
|
252
|
+
fi
|
253
|
+
|
254
|
+
|
255
|
+
#Processing options
|
256
|
+
updateSSConfig $3
|
257
|
+
|
258
|
+
|
259
|
+
msg "Complete"
|
260
|
+
exit 0
|
261
|
+
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
|