[yast-commit] r48629 - in /trunk/ldap-server/src: LdapServer.pm agent/SlapdConfigAgent.cc tree_structure.ycp widgets.ycp
Author: rhafer
Date: Fri Jun 27 15:59:21 2008
New Revision: 48629
URL: http://svn.opensuse.org/viewcvs/yast?rev=48629&view=rev
Log:
Support for admin password change
Modified:
trunk/ldap-server/src/LdapServer.pm
trunk/ldap-server/src/agent/SlapdConfigAgent.cc
trunk/ldap-server/src/tree_structure.ycp
trunk/ldap-server/src/widgets.ycp
Modified: trunk/ldap-server/src/LdapServer.pm
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ldap-server/src/LdapServer.pm?rev=48629&r1=48628&r2=48629&view=diff
==============================================================================
--- trunk/ldap-server/src/LdapServer.pm (original)
+++ trunk/ldap-server/src/LdapServer.pm Fri Jun 27 15:59:21 2008
@@ -16,6 +16,9 @@
use Data::Dumper;
+use Digest::MD5 qw(md5_hex);
+use Digest::SHA1 qw(sha1);
+use MIME::Base64;
use X500::DN;
use ycp;
use YaST::YCP qw(Boolean);
@@ -612,12 +615,48 @@
sub UpdateDatabase
{
my ($self, $index, $changes) = @_;
+ y2milestone( "UpdateDatabase: ".Data::Dumper->Dump([$changes]) );
my $rc = SCR->Write(".ldapserver.database.{".$index."}", $changes);
- y2milestone( "Database: ".Data::Dumper->Dump([$rc]) );
+ y2milestone( "result: ".Data::Dumper->Dump([$rc]) );
return $rc;
}
+BEGIN { $TYPEINFO {HashPassword} = ["function", "string", "string", "string" ] ; }
+sub HashPassword
+{
+ my ($self, $hashAlgo, $cleartext) = @_;
+ my $hashed;
+ if( !grep( ($_ eq $hashAlgo), ("CRYPT", "SMD5", "SHA", "SSHA", "PLAIN") ) ) {
+ # unsupported password hash
+ return "";
+ }
+
+ if( $hashAlgo eq "CRYPT" ) {
+ my $salt = pack("C2",(int(rand 26)+65),(int(rand 26)+65));
+ $hashed = crypt $cleartext,$salt;
+ $hashed = "{CRYPT}".$hashed;
+ } elsif( $hashAlgo eq "SMD5" ) {
+ my $salt = pack("C5",(int(rand 26)+65),(int(rand 26)+65),(int(rand 26)+65),
+ (int(rand 26)+65), (int(rand 26)+65));
+ my $ctx = new Digest::MD5();
+ $ctx->add($cleartext);
+ $ctx->add($salt);
+ $hashed = "{SMD5}".encode_base64($ctx->digest.$salt, "");
+ } elsif( $hashAlgo eq "SHA"){
+ my $digest = sha1($cleartext);
+ $hashed = "{SHA}".encode_base64($digest, "");
+ } elsif( $hashAlgo eq "SSHA"){
+ my $salt = pack("C5",(int(rand 26)+65),(int(rand 26)+65),(int(rand 26)+65),
+ (int(rand 26)+65), (int(rand 26)+65));
+ my $digest = sha1($cleartext.$salt);
+ $hashed = "{SSHA}".encode_base64($digest.$salt, "");
+ } else {
+ $hashed = $cleartext;
+ }
+ return $hashed;
+}
+
BEGIN { $TYPEINFO {HaveCommonServerCertificate} = ["function", "boolean" ]; }
sub HaveCommonServerCertificate
{
Modified: trunk/ldap-server/src/agent/SlapdConfigAgent.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ldap-server/src/agent/SlapdConfigAgent.cc?rev=48629&r1=48628&r2=48629&view=diff
==============================================================================
--- trunk/ldap-server/src/agent/SlapdConfigAgent.cc (original)
+++ trunk/ldap-server/src/agent/SlapdConfigAgent.cc Fri Jun 27 15:59:21 2008
@@ -622,11 +622,16 @@
{
if ( path->length() == 1 )
{
- YCPValue val = changesMap.value( YCPString("rootdn") );
- if ( val->isString() )
+ YCPValue val = changesMap.value( YCPString("rootdn") );
+ if ( ! val.isNull() && val->isString() )
{
(*i)->setStringValue( "olcRootDn", val->asString()->value_cstr() );
}
+ val = changesMap.value( YCPString("rootpw") );
+ if ( ! val.isNull() && val->isString() )
+ {
+ (*i)->setStringValue( "olcRootPw", val->asString()->value_cstr() );
+ }
} else {
std::string dbComponent = path->component_str(1);
y2milestone("Component '%s'", dbComponent.c_str());
Modified: trunk/ldap-server/src/tree_structure.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ldap-server/src/tree_structure.ycp?rev=48629&r1=48628&r2=48629&view=diff
==============================================================================
--- trunk/ldap-server/src/tree_structure.ycp (original)
+++ trunk/ldap-server/src/tree_structure.ycp Fri Jun 27 15:59:21 2008
@@ -725,8 +725,8 @@
define boolean cb_check_db()
``{
- string suffix =(string)widget_map[current_tree_item,"name"]:nil;
- y2milestone( "calling db check handler for suffix '%1'", suffix );
+ string label =(string)widget_map[current_tree_item,"name"]:nil;
+ y2milestone( "calling db check handler for suffix '%1'", label );
string rootpw = (string)UI::QueryWidget( `te_rootpw, `Value );
if( rootpw != (string)UI::QueryWidget( `te_valid_rootpw, `Value ) )
@@ -757,7 +757,8 @@
if( db["rootdn"]:"" != "" && (boolean)UI::QueryWidget( `cb_append_basedn, `Value ) )
{
- string suffix = (string)widget_map[current_tree_item,"name"]:"";
+ map
participants (1)
-
rhafer@svn.opensuse.org