Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Xavier Bachelot
lemonldap-ng
Commits
7553d5b9
Commit
7553d5b9
authored
Oct 20, 2009
by
Yadd
Browse files
Serialization moved to conf modules (to be able to use another serialization)
parent
cd600986
Changes
5
Hide whitespace changes
Inline
Side-by-side
modules/lemonldap-ng-common/MANIFEST
View file @
7553d5b9
...
...
@@ -12,6 +12,7 @@ lib/Lemonldap/NG/Common/Conf/DBI.pm
lib/Lemonldap/NG/Common/Conf/File.pm
lib/Lemonldap/NG/Common/Conf/LDAP.pm
lib/Lemonldap/NG/Common/Conf/SOAP.pm
lib/Lemonldap/NG/Common/Conf/Serializer.pm
lib/Lemonldap/NG/Common/Crypto.pm
lib/Lemonldap/NG/Common/Safelib.pm
Makefile.PL
...
...
modules/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf.pm
View file @
7553d5b9
...
...
@@ -9,7 +9,6 @@ package Lemonldap::NG::Common::Conf;
use
strict
;
no
strict
'
refs
';
use
Data::
Dumper
;
use
Lemonldap::NG::Common::Conf::
Constants
;
#inherits
use
Lemonldap::NG::Common::
Crypto
;
#link protected cipher Object "cypher" in configuration hash
use
Regexp::
Assemble
;
...
...
@@ -55,9 +54,12 @@ sub new {
unless
(
$self
->
{
mdone
}
)
{
$self
->
_readConfFile
(
$self
->
{
confFile
}
)
unless
(
$self
->
{
type
}
);
unless
(
$self
->
{
type
}
)
{
$msg
.=
"
Error: configStorage: type is not defined
\n
"
;
$msg
.=
'
Error: configStorage: type is not defined
'
;
return
0
;
}
unless
(
$self
->
{
type
}
=~
/^[\w:]+$/
)
{
$msg
.=
"
Error: configStorage: type is not well formed
";
}
$self
->
{
type
}
=
"
Lemonldap::NG::Common::Conf::
$self
->{type}
"
unless
$self
->
{
type
}
=~
/^Lemonldap::/
;
eval
"
require
$self
->{type}
";
...
...
@@ -126,32 +128,9 @@ sub saveConf {
return
CONFIG_WAS_CHANGED
if
(
$conf
->
{
cfgNum
}
!=
$self
->
lastCfg
or
$self
->
isLocked
);
$self
->
lock
or
return
DATABASE_LOCKED
;
my
$fields
;
local
$
Data::Dumper::
Indent
=
0
;
local
$
Data::Dumper::
Varname
=
"
data
";
while
(
my
(
$k
,
$v
)
=
each
(
%$conf
)
)
{
next
if
(
$k
=~
/^(?:reVHosts|cipher)$/
);
if
(
ref
(
$v
)
)
{
$fields
->
{
$k
}
=
Dumper
(
$v
);
$fields
->
{
$k
}
=~
s/'/'/g
;
$fields
->
{
$k
}
=
"
'
$fields
->{
$k
}'
";
}
elsif
(
$v
=~
/^\d+$/
)
{
$fields
->
{
$k
}
=
"
$v
";
}
else
{
# mono-line
$v
=~
s/[\r\n]/ /gm
;
# trim
$v
=~
s/^\s*(.*?)\s*$/$1/
;
$fields
->
{
$k
}
=
"
'
$v
'
";
}
}
$fields
->
{
cfgNum
}
=
$self
->
lastCfg
+
1
;
$msg
=
"
Configuration
$fields
->{cfgNum} stored
";
return
$self
->
store
(
$fields
);
$conf
->
{
cfgNum
}
++
;
$msg
=
"
Configuration
$conf
->{cfgNum} stored
";
return
$self
->
store
(
$conf
);
}
## @method hashRef getConf(hashRef args)
...
...
@@ -234,41 +213,7 @@ sub getDBConf {
?
(
$a
[
$#a
+
$args
->
{
cfgNum
}
]
)
:
$a
[
0
];
}
my
$fields
=
$self
->
load
(
$args
->
{
cfgNum
}
);
my
$conf
;
while
(
my
(
$k
,
$v
)
=
each
(
%$fields
)
)
{
$v
=~
s/^'(.*)'$/$1/s
;
if
(
$k
=~
/^(?:exportedVars|locationRules|groups|exportedHeaders|macros|globalStorageOptions)$/
and
$v
||=
{}
and
not
ref
(
$v
)
)
{
$conf
->
{
$k
}
=
{};
if
(
defined
(
$v
)
and
$v
!~
/^\$/
)
{
print
STDERR
"
Lemonldap::NG : Warning: configuration is in old format, you've to migrate !
\n
";
eval
{
require
Storable
;
require
MIME::
Base64
;
};
if
(
$@
)
{
$msg
=
"
Error : $@
";
return
0
;
}
$conf
->
{
$k
}
=
Storable::
thaw
(
MIME::Base64::
decode_base64
(
$v
)
);
}
else
{
my
$data
;
$v
=~
s/^\$([_a-zA-Z][_a-zA-Z0-9]*) *=/\$data =/
;
$v
=~
s/&#?39;/'/g
;
eval
$v
;
print
STDERR
"
Lemonldap::NG : Error while reading configuration with
$k
key: $@
\n
"
if
(
$@
);
$conf
->
{
$k
}
=
$data
;
}
}
else
{
$conf
->
{
$k
}
=
$v
;
}
}
my
$conf
=
$self
->
load
(
$args
->
{
cfgNum
}
);
$msg
=
"
Get configuration
$conf
->{cfgNum}
";
my
$re
=
Regexp::
Assemble
->
new
();
foreach
(
keys
%
{
$conf
->
{
locationRules
}
}
)
{
...
...
modules/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/DBI.pm
View file @
7553d5b9
...
...
@@ -3,7 +3,8 @@ package Lemonldap::NG::Common::Conf::DBI;
use
strict
;
use
DBI
;
use
MIME::
Base64
;
use
Lemonldap::NG::Common::Conf::
Constants
;
use
Lemonldap::NG::Common::Conf::
Constants
;
#inherits
use
Lemonldap::NG::Common::Conf::
Serializer
;
our
$VERSION
=
0.17
;
...
...
@@ -79,6 +80,7 @@ sub unlock {
sub
store
{
my
(
$self
,
$fields
)
=
@_
;
my
$fields
=
$self
->
serialize
(
$fields
);
my
$tmp
=
$self
->
dbh
->
do
(
"
insert into
"
.
$self
->
{
dbiTable
}
.
"
(
"
...
...
@@ -107,7 +109,7 @@ sub load {
$self
->
logError
;
return
0
;
}
return
$row
;
return
$self
->
unserialize
(
$row
)
;
}
sub
delete
{
...
...
modules/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/File.pm
View file @
7553d5b9
...
...
@@ -2,6 +2,7 @@ package Lemonldap::NG::Common::Conf::File;
use
strict
;
use
Lemonldap::NG::Common::Conf::
Constants
;
#inherits
use
Lemonldap::NG::Common::Conf::
Serializer
;
our
$VERSION
=
0.23
;
...
...
@@ -63,6 +64,7 @@ sub unlock {
sub
store
{
my
(
$self
,
$fields
)
=
@_
;
my
$fields
=
$self
->
serialize
(
$fields
);
my
$mask
=
umask
;
umask
(
oct
('
0027
')
);
unless
(
open
FILE
,
...
...
@@ -98,7 +100,7 @@ sub load {
}
}
close
FILE
;
return
$
f
;
return
$
self
->
unserialize
(
$f
)
;
}
sub
delete
{
...
...
modules/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/Serializer.pm
0 → 100644
View file @
7553d5b9
package
Lemonldap::NG::Common::Conf::
Serializer
;
use
Data::
Dumper
;
BEGIN
{
*
Lemonldap::NG::Common::Conf::
serialize
=
\
&serialize
;
*
Lemonldap::NG::Common::Conf::
unserialize
=
\
&unserialize
;
}
sub
serialize
{
my
(
$self
,
$conf
)
=
@_
;
my
$fields
;
local
$
Data::Dumper::
Indent
=
0
;
local
$
Data::Dumper::
Varname
=
"
data
";
while
(
my
(
$k
,
$v
)
=
each
(
%$conf
)
)
{
next
if
(
$k
=~
/^(?:reVHosts|cipher)$/
);
if
(
ref
(
$v
)
)
{
$fields
->
{
$k
}
=
Dumper
(
$v
);
$fields
->
{
$k
}
=~
s/'/'/g
;
$fields
->
{
$k
}
=
"
'
$fields
->{
$k
}'
";
}
elsif
(
$v
=~
/^\d+$/
)
{
$fields
->
{
$k
}
=
"
$v
";
}
else
{
# mono-line
$v
=~
s/[\r\n]/ /gm
;
# trim
$v
=~
s/^\s*(.*?)\s*$/$1/
;
$fields
->
{
$k
}
=
"
'
$v
'
";
}
}
return
$fields
;
}
sub
unserialize
{
my
(
$self
,
$fields
)
=
@_
;
my
$conf
;
while
(
my
(
$k
,
$v
)
=
each
(
%$fields
)
)
{
$v
=~
s/^'(.*)'$/$1/s
;
if
(
$k
=~
/^(?:exportedVars|locationRules|groups|exportedHeaders|macros|globalStorageOptions)$/
and
$v
||=
{}
and
not
ref
(
$v
)
)
{
$conf
->
{
$k
}
=
{};
if
(
defined
(
$v
)
and
$v
!~
/^\$/
)
{
print
STDERR
"
Lemonldap::NG : Warning: configuration is in old format, you've to migrate !
\n
";
eval
{
require
Storable
;
require
MIME::
Base64
;
};
if
(
$@
)
{
$msg
=
"
Error : $@
";
return
0
;
}
$conf
->
{
$k
}
=
Storable::
thaw
(
MIME::Base64::
decode_base64
(
$v
)
);
}
else
{
my
$data
;
$v
=~
s/^\$([_a-zA-Z][_a-zA-Z0-9]*) *=/\$data =/
;
$v
=~
s/&#?39;/'/g
;
eval
$v
;
print
STDERR
"
Lemonldap::NG : Error while reading configuration with
$k
key: $@
\n
"
if
(
$@
);
$conf
->
{
$k
}
=
$data
;
}
}
else
{
$conf
->
{
$k
}
=
$v
;
}
}
return
$conf
;
}
1
;
__END__
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment