Commit a3d12f0eff86e16e08b71754b1f7b8b5532934da

Authored by Victor Costa
2 parents 7041451b b256dff9

Merge branch 'master' into staging_rails4

etc/noosfero/varnish-accept-language.vcl
@@ -23,7 +23,7 @@ C{ @@ -23,7 +23,7 @@ C{
23 #include <string.h> 23 #include <string.h>
24 24
25 #define DEFAULT_LANGUAGE "en" 25 #define DEFAULT_LANGUAGE "en"
26 -#define SUPPORTED_LANGUAGES ":de:eo:es:fr:hy:it:pt:ru:" 26 +#define SUPPORTED_LANGUAGES ":en:cs:de:eo:es:fr:hy:it:pt:ru:"
27 27
28 #define vcl_string char 28 #define vcl_string char
29 #define LANG_LIST_SIZE 16 29 #define LANG_LIST_SIZE 16
@@ -162,20 +162,21 @@ void select_language(const vcl_string *incoming_header, char *lang) { @@ -162,20 +162,21 @@ void select_language(const vcl_string *incoming_header, char *lang) {
162 } 162 }
163 163
164 /* Reads req.http.Accept-Language and writes X-Varnish-Accept-Language */ 164 /* Reads req.http.Accept-Language and writes X-Varnish-Accept-Language */
165 -void vcl_rewrite_accept_language(const struct sess *sp) { 165 +void vcl_rewrite_accept_language(const struct vrt_ctx *ctx) {
166 vcl_string *in_hdr; 166 vcl_string *in_hdr;
167 vcl_string lang[LANG_MAXLEN]; 167 vcl_string lang[LANG_MAXLEN];
  168 + const struct gethdr_s hdr = { HDR_REQ, "\020Accept-Language:" };
  169 + const struct gethdr_s hdrUpd = { HDR_REQ, "\032X-Varnish-Accept-Language:"};
168 170
169 /* Get Accept-Language header from client */ 171 /* Get Accept-Language header from client */
170 - in_hdr = VRT_GetHdr(sp, HDR_REQ, "\020Accept-Language:"); 172 + in_hdr = VRT_GetHdr(ctx, &hdr);
171 173
172 /* Normalize and filter out by list of supported languages */ 174 /* Normalize and filter out by list of supported languages */
173 memset(lang, 0, sizeof(lang)); 175 memset(lang, 0, sizeof(lang));
174 select_language(in_hdr, lang); 176 select_language(in_hdr, lang);
175 177
176 /* By default, use a different header name: don't mess with backend logic */ 178 /* By default, use a different header name: don't mess with backend logic */
177 - VRT_SetHdr(sp, HDR_REQ, "\032X-Varnish-Accept-Language:", lang, vrt_magic_string_end);  
178 - 179 + VRT_SetHdr(ctx, &hdrUpd, lang, vrt_magic_string_end);
179 return; 180 return;
180 } 181 }
181 182
@@ -188,15 +189,14 @@ void vcl_rewrite_accept_language(const struct sess *sp) { @@ -188,15 +189,14 @@ void vcl_rewrite_accept_language(const struct sess *sp) {
188 189
189 sub vcl_recv { 190 sub vcl_recv {
190 C{ 191 C{
191 - vcl_rewrite_accept_language(sp); 192 + vcl_rewrite_accept_language(ctx);
192 }C 193 }C
193 } 194 }
194 195
195 -sub vcl_fetch { 196 +sub vcl_backend_response {
196 if (beresp.http.Vary) { 197 if (beresp.http.Vary) {
197 set beresp.http.Vary = beresp.http.Vary + ", X-Varnish-Accept-Language"; 198 set beresp.http.Vary = beresp.http.Vary + ", X-Varnish-Accept-Language";
198 } else { 199 } else {
199 set beresp.http.Vary = "X-Varnish-Accept-Language"; 200 set beresp.http.Vary = "X-Varnish-Accept-Language";
200 } 201 }
201 } 202 }
202 -  
etc/noosfero/varnish-noosfero.vcl
  1 +vcl 4.0;
  2 +
1 sub vcl_recv { 3 sub vcl_recv {
2 - if (req.request == "GET" || req.request == "HEAD") { 4 + if (req.method == "GET" || req.method == "HEAD") {
3 if (req.http.Cookie) { 5 if (req.http.Cookie) {
4 # We only care about the "_noosfero_.*" cookies, used by Noosfero 6 # We only care about the "_noosfero_.*" cookies, used by Noosfero
5 if (req.http.Cookie !~ "_noosfero_.*" ) { 7 if (req.http.Cookie !~ "_noosfero_.*" ) {
@@ -17,10 +19,10 @@ sub vcl_deliver { @@ -17,10 +19,10 @@ sub vcl_deliver {
17 } 19 }
18 } 20 }
19 21
20 -sub vcl_error {  
21 - set obj.http.Content-Type = "text/html; charset=utf-8"; 22 +sub vcl_backend_error {
  23 + set beresp.http.Content-Type = "text/html; charset=utf-8";
22 24
23 - synthetic {" 25 + synthetic({"
24 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 26 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
25 <html xmlns="http://www.w3.org/1999/xhtml"> 27 <html xmlns="http://www.w3.org/1999/xhtml">
26 <head> 28 <head>
@@ -52,7 +54,7 @@ sub vcl_error { @@ -52,7 +54,7 @@ sub vcl_error {
52 <div id='wrap'> 54 <div id='wrap'>
53 <div id='header'> 55 <div id='header'>
54 <div id='logo'>&nbsp;</div> 56 <div id='logo'>&nbsp;</div>
55 - <div id='details'><b>"} + obj.status + "</b> - " + obj.response + {"</div> 57 + <div id='details'><b>"} + beresp.status + "</b> - " + beresp.reason + {"</div>
56 </div> 58 </div>
57 59
58 <div id='de' style='display: none' class='message'> 60 <div id='de' style='display: none' class='message'>
@@ -145,6 +147,6 @@ sub vcl_error { @@ -145,6 +147,6 @@ sub vcl_error {
145 </div> 147 </div>
146 </body> 148 </body>
147 </html> 149 </html>
148 - "}; 150 + "});
149 return(deliver); 151 return(deliver);
150 } 152 }
plugins/ldap/Gemfile
1 -gem "net-ldap" 1 +gem "net-ldap", "~> 0.12.1"
2 gem "magic", ">= 0.2.8" 2 gem "magic", ">= 0.2.8"
plugins/ldap/dependencies.rb
@@ -1 +0,0 @@ @@ -1 +0,0 @@
1 -require 'net/ldap'  
plugins/ldap/lib/ldap_authentication.rb
@@ -15,7 +15,6 @@ @@ -15,7 +15,6 @@
15 # along with this program; if not, write to the Free Software 15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 -require 'iconv'  
19 require 'net/ldap' 18 require 'net/ldap'
20 require 'net/ldap/dn' 19 require 'net/ldap/dn'
21 require 'magic' 20 require 'magic'
@@ -111,7 +110,14 @@ class LdapAuthentication @@ -111,7 +110,14 @@ class LdapAuthentication
111 else 110 else
112 ldap_con = initialize_ldap_con(self.account, self.account_password) 111 ldap_con = initialize_ldap_con(self.account, self.account_password)
113 end 112 end
114 - login_filter = Net::LDAP::Filter.eq( self.attr_login, login ) 113 + login_filter = nil
  114 + (self.attr_login || []).split.each do |attr|
  115 + if(login_filter.nil?)
  116 + login_filter = Net::LDAP::Filter.eq( attr, login )
  117 + else
  118 + login_filter = login_filter | Net::LDAP::Filter.eq( attr, login )
  119 + end
  120 + end
115 object_filter = Net::LDAP::Filter.eq( "objectClass", "*" ) 121 object_filter = Net::LDAP::Filter.eq( "objectClass", "*" )
116 122
117 attrs = {} 123 attrs = {}
plugins/ldap/lib/ldap_plugin.rb
@@ -55,7 +55,7 @@ class LdapPlugin &lt; Noosfero::Plugin @@ -55,7 +55,7 @@ class LdapPlugin &lt; Noosfero::Plugin
55 end 55 end
56 56
57 if attrs 57 if attrs
58 - user.login = login 58 + user.login = get_login(attrs, ldap.attr_login, login)
59 user.email = get_email(attrs, login) 59 user.email = get_email(attrs, login)
60 user.name = attrs[:fullname] 60 user.name = attrs[:fullname]
61 user.password = password 61 user.password = password
@@ -94,6 +94,11 @@ class LdapPlugin &lt; Noosfero::Plugin @@ -94,6 +94,11 @@ class LdapPlugin &lt; Noosfero::Plugin
94 user 94 user
95 end 95 end
96 96
  97 + def get_login(attrs, attr_login, login)
  98 + user_login = Array.wrap(attrs[attr_login.split.first.to_sym])
  99 + user_login.empty? ? login : user_login.first
  100 + end
  101 +
97 def get_email(attrs, login) 102 def get_email(attrs, login)
98 return attrs[:mail] unless attrs[:mail].blank? 103 return attrs[:mail] unless attrs[:mail].blank?
99 104
plugins/ldap/test/unit/ldap_plugin_test.rb
@@ -14,4 +14,24 @@ class LdapPluginTest &lt; ActiveSupport::TestCase @@ -14,4 +14,24 @@ class LdapPluginTest &lt; ActiveSupport::TestCase
14 refute plugin.allow_password_recovery 14 refute plugin.allow_password_recovery
15 end 15 end
16 16
  17 + should 'return login when exists a login attribute returned by ldap' do
  18 + plugin = LdapPlugin.new
  19 + assert_equal 'test', plugin.get_login({:uid => 'test'}, 'uid', 'test2')
  20 + end
  21 +
  22 + should 'return the attribute configured by attr_login when the attribute exists' do
  23 + plugin = LdapPlugin.new
  24 + assert_equal 'test', plugin.get_login({:uid => 'test'}, 'uid', 'test2')
  25 + end
  26 +
  27 + should 'return login when the ldap attribute does not exists' do
  28 + plugin = LdapPlugin.new
  29 + assert_equal 'test2', plugin.get_login({:uid => 'test'}, 'mail', 'test2')
  30 + end
  31 +
  32 + should 'use the first word at attr_login as the login key' do
  33 + plugin = LdapPlugin.new
  34 + assert_equal 'test', plugin.get_login({:uid => 'test', :mail => 'test@test'}, 'uid mail', 'test2')
  35 + end
  36 +
17 end 37 end
plugins/stoa/script/stoa-auth-server
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
25 # PATH should only include /usr/* if it runs after the mountnfs.sh script 25 # PATH should only include /usr/* if it runs after the mountnfs.sh script
26 PATH=/sbin:/usr/sbin:/bin:/usr/bin 26 PATH=/sbin:/usr/sbin:/bin:/usr/bin
27 DESC="Stoa authentication deamon" 27 DESC="Stoa authentication deamon"
28 -NAME=stoa-auth-daemon 28 +NAME=stoa-auth-server
29 SCRIPTNAME=/etc/init.d/$NAME 29 SCRIPTNAME=/etc/init.d/$NAME
30 30
31 # default values 31 # default values
@@ -33,8 +33,8 @@ NOOSFERO_DIR=/var/lib/noosfero/current @@ -33,8 +33,8 @@ NOOSFERO_DIR=/var/lib/noosfero/current
33 NOOSFERO_USER=noosfero 33 NOOSFERO_USER=noosfero
34 34
35 # Read configuration variable file if it is present 35 # Read configuration variable file if it is present
36 -if [ -r /etc/default/$NAME ]; then  
37 - . /etc/default/$NAME 36 +if [ -r /etc/default/noosfero ]; then
  37 + . /etc/default/noosfero
38 else 38 else
39 # for running from development setup, or from git with the script symlinked 39 # for running from development setup, or from git with the script symlinked
40 script=$(readlink -f $0) 40 script=$(readlink -f $0)