[yast-commit] r48640 - in /trunk/ldap-server/src: LdapServer.pm agent/SlapdConfigAgent.cc lib/backConfigTest.cpp lib/backConfigTest.h tree_structure.ycp
Author: rhafer
Date: Fri Jun 27 16:00:01 2008
New Revision: 48640
URL: http://svn.opensuse.org/viewcvs/yast?rev=48640&view=rev
Log:
- brought back ppolicy support
- some cleanup
Modified:
trunk/ldap-server/src/LdapServer.pm
trunk/ldap-server/src/agent/SlapdConfigAgent.cc
trunk/ldap-server/src/lib/backConfigTest.cpp
trunk/ldap-server/src/lib/backConfigTest.h
trunk/ldap-server/src/tree_structure.ycp
Modified: trunk/ldap-server/src/LdapServer.pm
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ldap-server/src/LdapServer.pm?rev=48640&r1=48639&r2=48640&view=diff
==============================================================================
--- trunk/ldap-server/src/LdapServer.pm (original)
+++ trunk/ldap-server/src/LdapServer.pm Fri Jun 27 16:00:01 2008
@@ -582,10 +582,44 @@
return $rc;
}
-BEGIN { $TYPEINFO {AddPasswordPolicy} = ["function", "boolean" , "integer", ["map", "string", "string" ] ]; }
+BEGIN { $TYPEINFO {GetOverlayList} = ["function", [ "list", [ "map" , "string", "string"] ], "integer" ]; }
+sub GetOverlayList
+{
+ my ($self, $index) = @_;
+ y2milestone("GetOverlayList ", $index);
+ my $rc = SCR->Read(".ldapserver.database.{".$index."}.overlays" );
+ y2milestone( "Overlays: ".Data::Dumper->Dump([$rc]) );
+ return $rc;
+}
+
+BEGIN { $TYPEINFO {GetPpolicyOverlay} = ["function", [ "map" , "string", "any" ], "integer" ]; }
+sub GetPpolicyOverlay
+{
+ my ($self, $index) = @_;
+ y2milestone("GetPpolicyOverlay ", $index);
+ my $rc = SCR->Read(".ldapserver.database.{".$index."}.ppolicy" );
+ y2milestone( "Ppolicy: ".Data::Dumper->Dump([$rc]) );
+ if ( defined $rc->{'hashClearText'} )
+ {
+ $rc->{'hashClearText'} = YaST::YCP::Boolean($rc->{'hashClearText'});
+ }
+ if ( defined $rc->{'useLockout'} )
+ {
+ $rc->{'useLockout'} = YaST::YCP::Boolean($rc->{'useLockout'});
+ }
+ return $rc;
+}
+
+BEGIN { $TYPEINFO {AddPasswordPolicy} = ["function", "boolean" , "integer", ["map", "string", "any" ] ]; }
sub AddPasswordPolicy
{
my ($self, $dbIndex, $ppolicy ) = @_;
+ y2milestone("AddPasswordPolicy: ".Data::Dumper->Dump([$ppolicy])." ". scalar(keys %{$ppolicy}) );
+ if ( 0 < scalar(keys %{$ppolicy}) )
+ {
+ $ppolicy->{'hashClearText'} = YaST::YCP::Boolean($ppolicy->{'hashClearText'});
+ $ppolicy->{'useLockout'} = YaST::YCP::Boolean($ppolicy->{'useLockout'});
+ }
if ( ! SCR->Write(".ldapserver.database.{".$dbIndex."}.ppolicy", $ppolicy ) ) {
my $err = SCR->Error(".ldapserver");
$self->SetError( $err->{'summary'}, $err->{'description'} );
Modified: trunk/ldap-server/src/agent/SlapdConfigAgent.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ldap-server/src/agent/SlapdConfigAgent.cc?rev=48640&r1=48639&r2=48640&view=diff
==============================================================================
--- trunk/ldap-server/src/agent/SlapdConfigAgent.cc (original)
+++ trunk/ldap-server/src/agent/SlapdConfigAgent.cc Fri Jun 27 16:00:01 2008
@@ -226,6 +226,12 @@
for ( i = databases.begin(); i != databases.end() ; i++ )
{
olc.updateEntry(**i);
+ OlcOverlayList overlays = (*i)->getOverlays();
+ OlcOverlayList::const_iterator k;
+ for ( k = overlays.begin(); k != overlays.end(); k++ )
+ {
+ olc.updateEntry(**k);
+ }
}
OlcSchemaList::const_iterator j;
for ( j = schema.begin(); j != schema.end() ; j++ )
@@ -391,26 +397,84 @@
} else {
std::string dbComponent = path->component_str(1);
y2milestone("Component %s ", dbComponent.c_str());
- IndexMap idx = (*i)->getDatabaseIndexes();
- IndexMap::const_iterator j = idx.begin();
- for ( ; j != idx.end(); j++ )
- {
- YCPMap ycpIdx;
- y2milestone("indexed Attribute: \"%s\"", j->first.c_str() );
- std::vector<IndexType>::const_iterator k = j->second.begin();
- for ( ; k != j->second.end(); k++ )
+ if ( dbComponent == "indexes" )
+ {
+ IndexMap idx = (*i)->getDatabaseIndexes();
+ IndexMap::const_iterator j = idx.begin();
+ for ( ; j != idx.end(); j++ )
{
- if ( *k == Eq ){
- ycpIdx.add(YCPString("eq"), YCPBoolean(true) );
- } else if ( *k == Present ){
- ycpIdx.add(YCPString("pres"), YCPBoolean(true) );
- } else if ( *k == Sub ){
- ycpIdx.add(YCPString("sub"), YCPBoolean(true) );
+ YCPMap ycpIdx;
+ y2milestone("indexed Attribute: \"%s\"", j->first.c_str() );
+ std::vector<IndexType>::const_iterator k = j->second.begin();
+ for ( ; k != j->second.end(); k++ )
+ {
+ if ( *k == Eq ){
+ ycpIdx.add(YCPString("eq"), YCPBoolean(true) );
+ } else if ( *k == Present ){
+ ycpIdx.add(YCPString("pres"), YCPBoolean(true) );
+ } else if ( *k == Sub ){
+ ycpIdx.add(YCPString("sub"), YCPBoolean(true) );
+ }
}
+ resMap.add( YCPString(j->first), ycpIdx );
}
- resMap.add( YCPString(j->first), ycpIdx );
+ return resMap;
+ }
+ else if ( dbComponent == "overlays" )
+ {
+ OlcOverlayList overlays = (*i)->getOverlays();
+ OlcOverlayList::const_iterator j = overlays.begin();
+ YCPList resList;
+ for (; j != overlays.end(); j++ )
+ {
+ y2milestone("Overlay: %s", (*j)->getType().c_str() );
+ YCPMap overlayMap;
+ overlayMap.add( YCPString("type"), YCPString( (*j)->getType() ) );
+ overlayMap.add( YCPString("index"), YCPInteger( (*j)->getEntryIndex() ) );
+ resList.add(overlayMap);
+ }
+ return resList;
+ }
+ else if ( dbComponent == "ppolicy" )
+ {
+ OlcOverlayList overlays = (*i)->getOverlays();
+ OlcOverlayList::const_iterator j = overlays.begin();
+ YCPList resList;
+ for (; j != overlays.end(); j++ )
+ {
+ if ( (*j)->getType() == "ppolicy" )
+ {
+ resMap.add(YCPString("defaultPolicy"),
+ YCPString((*j)->getStringValue("olcPpolicyDefault") ) );
+ if ( (*j)->getStringValue("olcPPolicyHashCleartext") == "TRUE" )
+ {
+ resMap.add(YCPString("hashClearText"), YCPBoolean(true) );
+ }
+ else
+ {
+ resMap.add(YCPString("hashClearText"), YCPBoolean(false) );
+ }
+ if ( (*j)->getStringValue("olcPPolicyUseLockout") == "TRUE" )
+ {
+ resMap.add(YCPString("useLockout"), YCPBoolean(true) );
+ }
+ else
+ {
+ resMap.add(YCPString("useLockout"), YCPBoolean(false) );
+ }
+ break;
+ }
+ }
+ return resMap;
+ }
+ else
+ {
+ lastError->add(YCPString("summary"), YCPString("Read Failed") );
+ std::string msg = "Unsupported SCR path: `.ldapserver.database.";
+ msg += path->toString().c_str();
+ msg += "`";
+ lastError->add(YCPString("description"), YCPString(msg) );
}
- return resMap;
}
}
}
@@ -672,7 +736,47 @@
(*i)->addIndex(attr, idx);
}
ret = true;
- } else {
+ }
+ else if (dbComponent == "ppolicy" )
+ {
+ OlcOverlayList overlays = (*i)->getOverlays();
+ OlcOverlayList::const_iterator j = overlays.begin();
+ for (; j != overlays.end(); j++ )
+ {
+ if ( (*j)->getType() == "ppolicy" )
+ {
+ YCPMap argMap = arg->asMap();
+ y2milestone("Mapsize: %d", argMap.size());
+ if ( argMap.size() == 0 ){
+ y2milestone("Delete ppolicy overlay");
+ (*j)->clearChangedEntry();
+ } else {
+ (*j)->setStringValue("olcPpolicyDefault",
+ argMap->value(YCPString("defaultPolicy"))->asString()->value_cstr() );
+ if ( argMap->value(YCPString("useLockout"))->asBoolean()->value() == true )
+ {
+ (*j)->setStringValue("olcPpolicyUseLockout", "TRUE");
+ }
+ else
+ {
+ (*j)->setStringValue("olcPpolicyUseLockout", "FALSE");
+ }
+ if ( argMap->value(YCPString("hashClearText"))->asBoolean()->value() == true )
+ {
+ (*j)->setStringValue("olcPpolicyHashCleartext", "TRUE");
+ }
+ else
+ {
+ (*j)->setStringValue("olcPpolicyHashCleartext", "FALSE");
+ }
+ }
+ break;
+ }
+ }
+ ret = true;
+ }
+ else
+ {
lastError->add(YCPString("summary"), YCPString("Write Failed") );
std::string msg = "Unsupported SCR path: `.ldapserver.database.";
msg += path->toString().c_str();
@@ -772,7 +876,7 @@
y2milestone("Comment or empty" );
continue;
}
- int pos=schemaLine.find_last_not_of(" \t\n");
+ std::string::size_type pos=schemaLine.find_last_not_of(" \t\n");
if (pos != std::string::npos )
schemaLine.erase(pos+1, std::string::npos );
Modified: trunk/ldap-server/src/lib/backConfigTest.cpp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ldap-server/src/lib/backConfigTest.cpp?rev=48640&r1=48639&r2=48640&view=diff
==============================================================================
--- trunk/ldap-server/src/lib/backConfigTest.cpp (original)
+++ trunk/ldap-server/src/lib/backConfigTest.cpp Fri Jun 27 16:00:01 2008
@@ -13,6 +13,22 @@
return toupper(c1) == toupper(c2);
}
+static int splitIndexFromString(const std::string &in, std::string &out)
+{
+ int index=0;
+ if ( in[0] == '{' )
+ {
+ std::string::size_type pos = in.find('}');
+ std::istringstream indexstr(in.substr(1, pos-1));
+ indexstr >> index;
+ out = in.substr( pos+1, std::string::npos );
+ } else {
+ out = in;
+ index = 0;
+ }
+ return index;
+}
+
static bool strCaseIgnoreEquals(const std::string &s1, const std::string &s2)
{
if(s1.size() == s2.size()){
@@ -27,16 +43,7 @@
OlcDatabase::OlcDatabase( const LDAPEntry& le=LDAPEntry()) : OlcConfigEntry(le)
{
std::string type(this->getStringValue("olcdatabase"));
- if ( type[0] == '{' )
- {
- std::string::size_type pos = type.find('}');
- std::istringstream indexstr(type.substr(1, pos-1));
- indexstr >> entryIndex;
- m_type = type.substr( pos+1, std::string::npos );
- } else {
- m_type = type;
- entryIndex = 0;
- }
+ entryIndex = splitIndexFromString( type, m_type );
}
OlcDatabase::OlcDatabase( const std::string& type ) : m_type(type)
@@ -364,16 +371,7 @@
{
std::cout << "OlcSchemaConfig::OlcSchemaConfig(const LDAPEntry &e) : OlcConfigEntry(e)" << std::endl;
std::string name(this->getStringValue("cn"));
- if ( name[0] == '{' )
- {
- std::string::size_type pos = name.find('}');
- std::istringstream indexstr(name.substr(1, pos-1));
- indexstr >> entryIndex;
- m_name = name.substr( pos+1, std::string::npos );
- } else {
- m_name = name;
- entryIndex = 0;
- }
+ entryIndex = splitIndexFromString( name, m_name );
}
void OlcSchemaConfig::clearChangedEntry()
@@ -395,13 +393,9 @@
for ( j = types.begin(); j != types.end(); j++ )
{
LDAPAttrType currentAttr;
- if ( (*j)[0] == '{' )
- {
- std::string::size_type pos = j->find('}');
- currentAttr = LDAPAttrType( j->substr( pos+1, std::string::npos ) );
- } else {
- currentAttr = LDAPAttrType( *j );
- }
+ std::string tmp;
+ splitIndexFromString( *j, tmp );
+ currentAttr = LDAPAttrType( tmp );
res.push_back(currentAttr);
}
return res;
@@ -418,35 +412,35 @@
tls.applySettings( *this );
}
-std::map
participants (1)
-
rhafer@svn.opensuse.org