Nginx sticky module compile error

Hello,

we have problems compiling the nginx-sticky module (downloaded from
Google Code Archive - Long-term storage for Google Code Project Hosting.) in nginx
version 1.0.3 and 1.0.4. Here is the output of the “make” command:

gcc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter
-Wunused-function -Wunused-variable -Wunused-value -Werror -g -I
src/core -I src/event -I src/event/modules -I src/os/unix -I objs
-o objs/src/core/ngx_crypt.o
src/core/ngx_crypt.c
cc1: warnings being treated as errors
src/core/ngx_crypt.c: In function \u2018ngx_crypt_apr1\u2019:
src/core/ngx_crypt.c:76: warning: pointer targets in passing argument 2
of \u2018ngx_md5_update\u2019 differ in signedness
make[1]: *** [objs/src/core/ngx_crypt.o] Error 1
make[1]: Leaving directory `/root/src/nginx-1.0.3’
make: *** [build] Error 2
Does anybody know how to fix this error?

Thank you in advance!

Kind regards

Stephan

HEROLD Business Data GmbH
Guntramsdorfer Straße 105
A-2340 Mödling

FN 233171z
Landesgericht Wiener Neustadt

Besuchen Sie uns online und mobil www.herold.at!

Weitere Informationen zu unseren Produkten finden Sie unter:
http://mobile.herold.at
http://daten.herold.at

Werden Sie Fan von HEROLD auf Facebook!

Bitte beachten Sie auch unsere Tochter- und Partner-Unternehmen:
www.clearsense.at

www.aboutmedia.at
www.love.at
www.reise-hero.at
www.urlauburlaub.at

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte
Informationen enthalten. Wenn Sie nicht der richtige Adressat sind oder
diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den
Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie
die unbefugte Weitergabe dieser Mail sind nicht gestattet.

This e-mail may contain confidential and/or privileged information. If
you are not the intended recipient (or have received this e-mail in
error) please notify the sender immediately and delete this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.

Hello!

On Thu, Jun 16, 2011 at 09:56:15AM +0200, Stephan Wolfauer wrote:

src/core/ngx_crypt.c
cc1: warnings being treated as errors
src/core/ngx_crypt.c: In function \u2018ngx_crypt_apr1\u2019:
src/core/ngx_crypt.c:76: warning: pointer targets in passing argument 2
of \u2018ngx_md5_update\u2019 differ in signedness
make[1]: *** [objs/src/core/ngx_crypt.o] Error 1
make[1]: Leaving directory `/root/src/nginx-1.0.3’
make: *** [build] Error 2
Does anybody know how to fix this error?

This is fixed in 1.0.4.

Maxim D.

Hi,

actually, not it is not. We have the same error in 1.0.4, as stated.

Cheers,
DJ

Maxim D. [email protected] 6/16/2011 9:59 >>>
Hello!

On Thu, Jun 16, 2011 at 09:56:15AM +0200, Stephan Wolfauer wrote:

Hello,

we have problems compiling the nginx-sticky module (downloaded from
Google Code Archive - Long-term storage for Google Code Project Hosting.) in
nginx
version 1.0.3 and 1.0.4. Here is the output of the “make” command:

gcc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter
-Wunused-function -Wunused-variable -Wunused-value -Werror -g -I
src/core -I src/event -I src/event/modules -I src/os/unix -I objs
-o objs/src/core/ngx_crypt.o
src/core/ngx_crypt.c
cc1: warnings being treated as errors
src/core/ngx_crypt.c: In function \u2018ngx_crypt_apr1\u2019:
src/core/ngx_crypt.c:76: warning: pointer targets in passing argument
2
of \u2018ngx_md5_update\u2019 differ in signedness
make[1]: *** [objs/src/core/ngx_crypt.o] Error 1
make[1]: Leaving directory `/root/src/nginx-1.0.3’
make: *** [build] Error 2
Does anybody know how to fix this error?

This is fixed in 1.0.4.

Maxim D.


nginx mailing list
[email protected]
http://nginx.org/mailman/listinfo/nginx

HEROLD Business Data GmbH
Guntramsdorfer Straße 105
A-2340 Mödling

FN 233171z
Landesgericht Wiener Neustadt

Besuchen Sie uns online und mobil www.herold.at!

Weitere Informationen zu unseren Produkten finden Sie unter:
http://mobile.herold.at
http://daten.herold.at

Werden Sie Fan von HEROLD auf Facebook!

Bitte beachten Sie auch unsere Tochter- und Partner-Unternehmen:
www.clearsense.at

www.aboutmedia.at
www.love.at
www.reise-hero.at
www.urlauburlaub.at

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte
Informationen enthalten. Wenn Sie nicht der richtige Adressat sind oder
diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den
Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie
die unbefugte Weitergabe dieser Mail sind nicht gestattet.

This e-mail may contain confidential and/or privileged information. If
you are not the intended recipient (or have received this e-mail in
error) please notify the sender immediately and delete this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.

Hello!

On Thu, Jun 16, 2011 at 10:33:19AM +0200, Dalibor J. wrote:

Hi,

actually, not it is not. We have the same error in 1.0.4, as stated.

Please provide output of make for 1.0.4 if you think it isn’t.

Maxim D.

cc1: warnings being treated as errors

Informationen enthalten. Wenn Sie nicht der richtige Adressat sind oder
diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den
Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie
die unbefugte Weitergabe dieser Mail sind nicht gestattet.

This e-mail may contain confidential and/or privileged information. If
you are not the intended recipient (or have received this e-mail in
error) please notify the sender immediately and delete this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.

Hi,

sure, here it is:

gcc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter
-Wunused-function -Wunused-variable -Wunused-value -Werror -g -I
src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I
src/http -I src/http/modules -I src/mail
-o objs/addon/nginx-sticky-module-1.0-rc2/ngx_http_sticky_misc.o
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c
In file included from
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:11:
src/core/ngx_sha1.h:18:17: error: sha.h: No such file or directory
In file included from
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:11:
src/core/ngx_sha1.h:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or
attribute’ before ‘ngx_sha1_t’
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c: In
function ‘ngx_http_sticky_misc_md5’:
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
error: ‘MD5_DIGEST_LENGTH’ undeclared (first use in this function)
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
error: (Each undeclared identifier is reported only once
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
error: for each function it appears in.)
cc1: warnings being treated as errors
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
warning: unused variable ‘hash’
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c: In
function ‘ngx_http_sticky_misc_sha1’:
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:133:
error: ‘ngx_sha1_t’ undeclared (first use in this function)
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:133:
error: expected ‘;’ before ‘sha1’
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:134:
error: ‘SHA_DIGEST_LENGTH’ undeclared (first use in this function)
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:142:
warning: implicit declaration of function ‘SHA1_Init’
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:142:
error: ‘sha1’ undeclared (first use in this function)
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:143:
warning: implicit declaration of function ‘SHA1_Update’
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:144:
warning: implicit declaration of function ‘SHA1_Final’
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:134:
warning: unused variable ‘hash’
make[1]: ***
[objs/addon/nginx-sticky-module-1.0-rc2/ngx_http_sticky_misc.o] Error 1
make[1]: Leaving directory `/root/src/nginx-1.0.4’
make: *** [build] Error 2

Seems that the error is a different one, i wasn’t aware of that.
However, compiling fails…

Cheers,
DJ

Maxim D. [email protected] 6/16/2011 11:45 >>>
Hello!

On Thu, Jun 16, 2011 at 10:33:19AM +0200, Dalibor J. wrote:

Hi,

actually, not it is not. We have the same error in 1.0.4, as stated.

Please provide output of make for 1.0.4 if you think it isn’t.

Maxim D.

we have problems compiling the nginx-sticky module (downloaded
from
Google Code Archive - Long-term storage for Google Code Project Hosting.) in
nginx
version 1.0.3 and 1.0.4. Here is the output of the “make” command:

gcc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter
-Wunused-function -Wunused-variable -Wunused-value -Werror -g -I
src/core -I src/event -I src/event/modules -I src/os/unix -I objs

-o objs/src/core/ngx_crypt.o
src/core/ngx_crypt.c
cc1: warnings being treated as errors
src/core/ngx_crypt.c: In function \u2018ngx_crypt_apr1\u2019:
src/core/ngx_crypt.c:76: warning: pointer targets in passing
argument
2
of \u2018ngx_m
d5_update\u2019 differ in signedness
nginx mailing list
Besuchen Sie uns online und mobil www.herold.at!
www.tupalo.com
www.aboutmedia.at
www.love.at
www.reise-hero.at
www.urlauburlaub.at

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte
Informationen enthalten. Wenn Sie nicht der richtige Adressat sind
oder
diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort
den
Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren
sowie
die unbefugte Weitergabe dieser Mail sind nicht gestattet.

This e-mail may contain confidential and/or privileged information.
If
you are not the intended recipient (or have received this e-mail in
error) please notify the sender immediately and delete this e-mail.
Any
unauthorized copying, disclosure or distribution of the material in
this
e-mail is strictly forbidden.


nginx mailing list
[email protected]
nginx Info Page


nginx mailing list
[email protected]
http://nginx.org/mailman/listinfo/nginx

HEROLD Business Data GmbH
Guntramsdorfer Straße 105
A-2340 Mödling

FN 233171z
Landesgericht Wiener Neustadt

Besuchen Sie uns online und mobil www.herold.at!

Weitere Informationen zu unseren Produkten finden Sie unter:
http://mobile.herold.at
http://daten.herold.at

Werden Sie Fan von HEROLD auf Facebook!

Bitte beachten Sie auch unsere Tochter- und Partner-Unternehmen:
www.clearsense.at

www.aboutmedia.at
www.love.at
www.reise-hero.at
www.urlauburlaub.at

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte
Informationen enthalten. Wenn Sie nicht der richtige Adressat sind oder
diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den
Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie
die unbefugte Weitergabe dieser Mail sind nicht gestattet.

This e-mail may contain confidential and/or privileged information. If
you are not the intended recipient (or have received this e-mail in
error) please notify the sender immediately and delete this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.

Hi,

you are right!

checking for OpenSSL sha1 crypto library … not found

Let me try to install the correct libs and recompile.

To be continued…

DJ

Maxim D. [email protected] 6/16/2011 12:15 >>>
Hello!

On Thu, Jun 16, 2011 at 12:01:26PM +0200, Dalibor J. wrote:

In file included from
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:133:
warning: implicit declaration of function ‘SHA1_Final’
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:134:
warning: unused variable ‘hash’
make[1]: ***
[objs/addon/nginx-sticky-module-1.0-rc2/ngx_http_sticky_misc.o] Error
1
make[1]: Leaving directory `/root/src/nginx-1.0.4’
make: *** [build] Error 2

Seems that the error is a different one, i wasn’t aware of that.
However, compiling fails…

It seems that you don’t have any library with SHA1 functions
required for sticky module. Configure script should write
something like ‘sha1: not found’ (but it doesn’t fail as SHA1 is
considered to be optional by nginx itself).

Easiest way to fix this is to install OpenSSL library (and
headers).

Maxim D.

actually, not it is not. We have the same error in 1.0.4, as
stated.
Hello!

On Thu, Jun 16, 2011 at 09:56
:15AM +0200, Stephan Wolfauer wrote:

Hello,

we have problems compiling the nginx-sticky module (downloaded
from
Google Code Archive - Long-term storage for Google Code Project Hosting.) in
nginx
version 1.0.3 and 1.0.4. Here is the output of the “make”
command:

gcc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter
-Wunused-function -Wunused-variable -Wunused-value -Werror -g
-I
src/core -I src/event -I src/event/modules -I src/os/unix -I
objs
make[1]: *** [objs/src/core/ngx_crypt.o] Error 1
[email protected]

www.aboutmedia.at
www.love.at
www.reise-hero.at
www.urlauburlaub.at

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte
Informationen enthalten. Wenn Sie nicht der richtige Adressat sind
oder
diese E-Mail irrtümlich erhalten haben, informieren Sie bitte
sofort
den
Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren
sowie
die unbefugte Weitergabe dieser Mail sind nicht gestattet.

This e-mail may contain confidential and/or privileged
information.
If
you are not the intended recipient (or have received this e-mail
in
error) please notify the sender immediately and delete this
e-mail.
Any
unauthorized copying, disclosure or distribution of the material
in
nginx mailing list
Besuchen Sie uns online und mobil www.herold.at!
www.tupalo.com
www.aboutmedia.at
www.love.at
www.reise-hero.at
www.urlauburlaub.at

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte
Informationen enthalten. Wenn Sie nicht der richtige Adressat sind
oder
diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort
den
Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren
sowie
die unbefugte Weitergabe dieser Mail sind nicht gestattet.

This e-mail may contain confidential and/or privileged information.
If
you are not the intended recipient (or have received this e-mail in
error) please notify the sender immediately and delete this e-mail.
Any
unauthorized copying, disclosure or dist
ribution of the material in
this
e-mail is strictly forbidden.


nginx mailing list
[email protected]
nginx Info Page


nginx mailing list
[email protected]
http://nginx.org/mailman/listinfo/nginx

HEROLD Business Data GmbH
Guntramsdorfer Straße 105
A-2340 Mödling

FN 233171z
Landesgericht Wiener Neustadt

Besuchen Sie uns online und mobil www.herold.at!

Weitere Informationen zu unseren Produkten finden Sie unter:
http://mobile.herold.at
http://daten.herold.at

Werden Sie Fan von HEROLD auf Facebook!

Bitte beachten Sie auch unsere Tochter- und Partner-Unternehmen:
www.clearsense.at

www.aboutmedia.at
www.love.at
www.reise-hero.at
www.urlauburlaub.at

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte
Informationen enthalten. Wenn Sie nicht der richtige Adressat sind oder
diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den
Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie
die unbefugte Weitergabe dieser Mail sind nicht gestattet.

This e-mail may contain confidential and/or privileged information. If
you are not the intended recipient (or have received this e-mail in
error) please notify the sender immediately and delete this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.

Hello!

On Thu, Jun 16, 2011 at 12:01:26PM +0200, Dalibor J. wrote:

In file included from
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:133:
warning: implicit declaration of function ‘SHA1_Final’
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:134:
warning: unused variable ‘hash’
make[1]: ***
[objs/addon/nginx-sticky-module-1.0-rc2/ngx_http_sticky_misc.o] Error 1
make[1]: Leaving directory `/root/src/nginx-1.0.4’
make: *** [build] Error 2

Seems that the error is a different one, i wasn’t aware of that.
However, compiling fails…

It seems that you don’t have any library with SHA1 functions
required for sticky module. Configure script should write
something like ‘sha1: not found’ (but it doesn’t fail as SHA1 is
considered to be optional by nginx itself).

Easiest way to fix this is to install OpenSSL library (and
headers).

Maxim D.

Maxim D. [email protected] 6/16/2011 9:59 >>>
version 1.0.3 and 1.0.4. Here is the output of the “make” command:
src/core/ngx_crypt.c:76: warning: pointer targets in passing

Informationen enthalten. Wenn Sie nicht der richtige Adressat sind
error) please notify the sender immediately and delete this e-mail.

Landesgericht Wiener Neustadt
Bitte beachten Sie auch unsere Tochter- und Partner-Unternehmen:
Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie
die unbefugte Weitergabe dieser Mail sind nicht gestattet.

This e-mail may contain confidential and/or privileged information. If
you are not the intended recipient (or have received this e-mail in
error) please notify the sender immediately and delete this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.

2011/6/16 Maxim D. [email protected]

-Wunused-function -Wunused-variable -Wunused-value -Werror -g -I
attribute before ngx_sha1_t
warning: unused variable hash
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:142:
make: *** [build] Error 2

Seems that the error is a different one, i wasn’t aware of that.
However, compiling fails…

It seems that you don’t have any library with SHA1 functions
required for sticky module. Configure script should write
something like ‘sha1: not found’ (but it doesn’t fail as SHA1 is
considered to be optional by nginx itself).

Hi maxim,

I’m the developper of the sticky module. In order to ensure that sha1
and md5 functions exist, I’ve set the following variables in config
file:
USE_SHA1=YES
USE_MD5=YES

but it seems not to be enough to ensure they are there. As SHA1 and
MD5 are considered to be optional by nginx itself, what can be done to
stop the configure script and correct this bug ?

thx
++ jerome

Hello!

On Thu, Jun 16, 2011 at 08:28:09PM +0200, Jérôme Loyet wrote:

gcc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter
src/core/ngx_sha1.h:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
warning: implicit declaration of function ‘SHA1_Init’
make[1]: Leaving directory `/root/src/nginx-1.0.4’
Hi maxim,

I’m the developper of the sticky module. In order to ensure that sha1
and md5 functions exist, I’ve set the following variables in config
file:
USE_SHA1=YES
USE_MD5=YES

but it seems not to be enough to ensure they are there. As SHA1 and
MD5 are considered to be optional by nginx itself, what can be done to
stop the configure script and correct this bug ?

I don’t really think this is a bug in your module, but rather
limitation of nginx itself. It doesn’t allow you to specify
whether USE_* means “required” or “optional”.

For USE_MD5 (and other libraries) it means “required” (in older
versions configure failed, in 1.0.1+ we fallback to internal
implementation). For SHA1 it’s historically “optional”.

I believe solution would be to add internal SHA1 implementation,
effectively making SHA1 “required” as well.

Maxim D.

Hi,

yes, it’s working now. I’ve installed the openssl devel package. and

checking for OpenSSL sha1 crypto library

says “found”

make succeeds.

thanks for that great support!

Cheers,
DJ

“Dalibor J.” [email protected] 6/16/2011 12:57 >>>

Hi,

you are right!

checking for OpenSSL sha1 crypto library … not found

Let me try to install the correct libs and recompile.

To be continued…

DJ

Maxim D. [email protected] 6/16/2011 12:15 >>>
Hello!

On Thu, Jun 16, 2011 at 12:01:26PM +0200, Dalibor J. wrote:

In file included from
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:133:
warning: implicit declaration of function ‘SHA1_Final’
…/modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:134:
warning: unused variable ‘hash’
make[1]: ***
[objs/addon/nginx-sticky-module-1.0-rc2/ngx_http_sticky_misc.o] Error 1
make[1]: Leaving directory `/root/src/nginx-1.0.4’
make: *** [build] Error 2

Seems that the error is a different one, i wasn’t aware of that.
However, compiling fails…

It seems that you don’t have any library with SHA1 functions
required for sticky module. Configure script should write
something like ‘sha1: not found’ (but it doesn’t fail as SHA1 is
considered to be optional by nginx itself).

Easiest way to fix this is to install OpenSSL library (and
headers).

Maxim D.

Maxim D. [email protected] 6/16/2011 9:59 >>>
version 1.0.3 and 1.0.4. Here is the output of the “make” command:
src/core/ngx_crypt.c:76: warning: pointer targets in passing

Informationen enthalten. Wenn Sie nicht der richtige Adressat sind
error) please notify the sender immediately and delete this e-mail.

Landesgericht Wiener Neustadt
Bitte beachten Sie auch unsere Tochter- und Partner-Unternehmen:
Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie
die unbefugte Weitergabe dieser Mail sind nicht gestattet.

This e-mail may contain confidential and/or privileged information. If
you are not the intended recipient (or have received this e-mail in
error) please notify the sender immediately and delete this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.


nginx mailing list
[email protected]
nginx Info Page


nginx mailing list
[email protected]
http://nginx.org/mailman/listinfo/nginx

HEROLD Business Data GmbH
Guntramsdorfer Straße 105
A-2340 Mödling

FN 233171z
Landesgericht Wiener Neustadt

Besuchen Sie uns online und mobil auf www.herold.at!

Weitere Informationen zu unseren Produkten finden Sie unter:
http://mobile.herold.at
http://daten.herold.at

Werden Sie Fan von HEROLD auf Facebook!

Bitte beachten Sie auch unsere Tochter- und Partner-Unternehmen:
www.clearsense.at

www.aboutmedia.at
www.love.at
www.reise-hero.at
www.urlauburlaub.at

Diese E-Mail kann vertrauliche und/oder rechtlich geschützte
Informationen enthalten. Wenn Sie nicht der richtige Adressat sind oder
diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den
Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie
die unbefugte Weitergabe dieser Mail sind nicht gestattet.

This e-mail may contain confidential and/or privileged information. If
you are not the intended recipient (or have received this e-mail in
error) please notify the sender immediately and delete this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.

Click here to report this email as spam.

2011/10/6 ramindeja [email protected]

Hi,

Hi,

We are using NGINX as a load-balancer and we would like to learn more
about the MD5 hash function. We need to replicate this function in our
Java application.

We are using the sticky module that hashes the IP.

Are you talking of this module:
Google Code Archive - Long-term storage for Google Code Project Hosting. ?

When we tried to hash
the same IP:PORT using MD5 in Java , we never got the same result. What
inputs should we use for the MD5 function.

If you are using nginx-sticky-module, you won’t be able to recreate
the same MD5 easily because the module uses internal nginx data to
create the hash.
You can look in ngx_http_sticky_module.c on line 146
(Google Code Archive - Long-term storage for Google Code Project Hosting.).
You’ll find out that the md5 hash is made from the sockaddr internal
structure which discribe each backend server and I’m not sure you’ll
be able to reconstruct the very same structure on your java side.

what is your need ? there is maybe another way to achieve your goal.

++ jerome

Hi,

We are using NGINX as a load-balancer and we would like to learn more
about the MD5 hash function. We need to replicate this function in our
Java application.

We are using the sticky module that hashes the IP. When we tried to hash
the same IP:PORT using MD5 in Java , we never got the same result. What
inputs should we use for the MD5 function.

Thanks in advance,
RaminDeja

Posted at Nginx Forum:

Merci Jérôme, we resolved the solution by writing the following class.
It’s not super but does the job:

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class IPEncryptor
{

public static String MD5(String ip)
throws NoSuchAlgorithmException, UnsupportedEncodingException
{
    MessageDigest md;
    md = MessageDigest.getInstance("MD5");

    byte[] md5hash = new byte[32];
    byte[] ipParts = parseIP(ip);

    md.update(ipParts, 0, ipParts.length);

    md5hash = md.digest();
    return convertToHex(md5hash);
}


private static String convertToHex(byte[] data)
{
    StringBuffer buf = new StringBuffer();

    for (int i = 0; i < data.length; i++)
    {
        int halfbyte = (data[i] >>> 4) & 0x0F;
        int two_halfs = 0;
        do
        {
            if ((0 <= halfbyte) && (halfbyte <= 9))
                buf.append((char) ('0' + halfbyte));
            else
                buf.append((char) ('a' + (halfbyte - 10)));
            halfbyte = data[i] & 0x0F;
        } while(two_halfs++ < 1);
    }

    return buf.toString();
}

// Parses the input
private static byte[] parseIP(String address)
{
  String[] addressParts = address.split(":");

  String[] ipParts = addressParts[0].split("\\.");
  int portHiByte = Integer.parseInt(addressParts[1]) / 256;
  int portLoByte = Integer.parseInt(addressParts[1]) % 256;

  int i = 0;
  int j = 0;

  byte[] ip = new byte[16];
  ip[i++] = 0;
  ip[i++] = 2;
  ip[i++] = (byte)portHiByte;
  ip[i++] = (byte)portLoByte;

  for (j = 0; j < ipParts.length; j++, i++)
  {
    ip[i] = (byte)Integer.parseInt(ipParts[j]);
  }

  // pad the rest with ZEROs
  for (; i < ip.length; ++i)
  {
    ip[i] = 0;
  }

  return ip;
}

}

Posted at Nginx Forum: