diff --git a/lemonldap-ng-manager/MANIFEST b/lemonldap-ng-manager/MANIFEST index bd29ad91e..fd608c4c5 100644 --- a/lemonldap-ng-manager/MANIFEST +++ b/lemonldap-ng-manager/MANIFEST @@ -165,6 +165,7 @@ t/06-rest-api.t t/07-utf8.t t/10-save-unchanged-conf.t t/12-save-changed-conf.t +t/14-bad-changes-in-conf.t t/20-test-coverage.t t/40-sessions.t t/50-notifications.t @@ -175,6 +176,7 @@ t/conf/lmConf-1.js t/jsonfiles/01-base-tree.json t/jsonfiles/02-base-tree-all-nodes-opened.json t/jsonfiles/12-modified.json +t/jsonfiles/14-bad.json t/lemonldap-ng.ini t/test-lib.pm TODO.md diff --git a/lemonldap-ng-manager/Makefile.PL b/lemonldap-ng-manager/Makefile.PL index bee700084..e772d933c 100644 --- a/lemonldap-ng-manager/Makefile.PL +++ b/lemonldap-ng-manager/Makefile.PL @@ -37,5 +37,8 @@ WriteMakefile( ) : () ), + clean => { + FILES => 't/conf/lmConf-2.js', + }, ); diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm index 4123715ed..974ca351b 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm @@ -22,11 +22,7 @@ sub types { 'boolOrExpr' => { 'msgFail' => '__notAValidPerlExpression__', 'test' => sub { - my $s = eval { - do { - $_[0]; - } - }; + my $s = eval $_[0]; return $@ ? ( 0, "__badExpression__: $@" ) : 1; } }, @@ -804,11 +800,7 @@ qr/^(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0- }, 'grantSessionRules' => { 'keyTest' => sub { - my $s = eval { - do { - $_[0]; - } - }; + my $s = eval $_[0]; return $@ ? ( 0, "__badExpression__: $@" ) : 1; }, 'test' => sub { @@ -819,11 +811,7 @@ qr/^(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0- 'groups' => { 'default' => {}, 'test' => sub { - my $s = eval { - do { - $_[0]; - } - }; + my $s = eval $_[0]; return $@ ? ( 0, "__badExpression__: $@" ) : 1; }, 'type' => 'keyTextContainer' @@ -1065,8 +1053,23 @@ m[^(?:ldapi://[^/]*/?|\w[\w\-\.]*(?::\d{1,5})?|ldap(?:s|\+tls)?://\w[\w\-\.]*(?: }, 'keyTest' => qr/^(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0-9]*[a-zA-Z0-9]|[a-zA-Z])[.]?)$/, - 'test' => sub { - 1; + 'test' => { + 'keyMsgFail' => '__badRegexp__', + 'keyTest' => sub { + eval { + do { + qr/$_[0]/; + } + }; + return $@ ? 0 : 1; + }, + 'msgFail' => '__badExpression__', + 'test' => sub { + my $s = $_[0]; + $s =~ s/\b(accept|deny)\b/1/g; + eval $s; + return $@ ? ( 0, "__badExpression__: $@" ) : 1; + } }, 'type' => 'ruleContainer' }, @@ -1082,11 +1085,7 @@ qr/^(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0- 'default' => {}, 'keyTest' => qr/^[_a-zA-Z][a-zA-Z0-9_]*$/, 'test' => sub { - my $s = eval { - do { - $_[0]; - } - }; + my $s = eval $_[0]; return $@ ? ( 0, "__badExpression__: $@" ) : 1; }, 'type' => 'keyTextContainer' @@ -1683,11 +1682,7 @@ qr/^(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0- }, 'portalSkinRules' => { 'keyTest' => sub { - my $s = eval { - do { - $_[0]; - } - }; + my $s = eval $_[0]; return $@ ? ( 0, "__badExpression__: $@" ) : 1; }, 'msgFail' => '__badValue__', diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm index b09b3aee0..164ad432d 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm @@ -11,7 +11,7 @@ use strict; use Regexp::Common qw/URI/; my $perlExpr = sub { - my $s = eval { $_[0] }; + my $s = eval $_[0]; return $@ ? ( 0, "__badExpression__: $@" ) : (1); }; @@ -855,9 +855,22 @@ sub attributes { }, locationRules => { - type => 'ruleContainer', - help => 'writingrulesand_headers.html#rules', - test => sub { 1 }, + type => 'ruleContainer', + help => 'writingrulesand_headers.html#rules', + test => { + keyTest => sub { + eval { qr/$_[0]/ }; + return $@ ? 0 : 1; + }, + keyMsgFail => '__badRegexp__', + test => sub { + my $s = $_[0]; + $s =~ s/\b(accept|deny)\b/1/g; + eval $s; + return $@ ? ( 0, "__badExpression__: $@" ) : (1); + }, + msgFail => '__badExpression__', + }, keyTest => qr/^$Regexp::Common::URI::RFC2396::hostname$/, keyMsgFail => '__badHostname__', default => { diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Parser.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Parser.pm index d378fa2a3..b2520e5a4 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Parser.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Conf/Parser.pm @@ -832,7 +832,7 @@ sub _unitTest { } # Hash parameters - if ( $key =~ $simpleHashKeys or $attr->{type} =~ /Container$/ ) { + if ( $key =~ $simpleHashKeys ) { $conf->{$key} //= {}; unless ( ref $conf->{$key} eq 'HASH' ) { push @{ $self->errors }, @@ -841,24 +841,11 @@ sub _unitTest { next; } } - if ( $key =~ $simpleHashKeys ) { + elsif ( $attr->{type} =~ /Container$/ ) { - #foreach my $k ( keys %{ $conf->{$key} } ) { - # my $keyMsg = $attr->{keyMsgFail} // $type->{keyMsgFail} - # // 'Bad hash key'; - # my $msg = $attr->{msgFail} // $type->{msgFail}; - # $res = 0 - # unless ( - # $self->_execTest( $attr->{keyTest} // $type->{keyTest} - # // qr/^\w+$/, - # $k, "$key/$k", $attr, $keyMsg, $conf ) - # and $self->_execTest( - # $attr->{test} // $type->{test}, - # $conf->{$key}->{$k}, - # "$key/$k", $attr, $msg, $conf - # ) - # ); - #} + #TODO + } + if ( $key =~ $simpleHashKeys or $attr->{type} =~ /Container$/ ) { my $keyMsg = $attr->{keyMsgFail} // $type->{keyMsgFail}; my $msg = $attr->{msgFail} // $type->{msgFail}; $res = 0 @@ -876,10 +863,6 @@ sub _unitTest { ) ); } - elsif ( $attr->{type} =~ /Container$/ ) { - - #TODO - } elsif ( defined $attr->{keyTest} ) { #TODO @@ -911,9 +894,13 @@ sub _execTest { unless ( $ref = ref($test) and $ref =~ /^(CODE|Regexp|HASH)$/ ); if ( $ref eq 'CODE' ) { my ( $r, $m ) = ( $test->( $value, $conf, $attr ) ); - push @{ $self->{ ( $r ? 'warnings' : 'error' ) } }, - { message => "$key: $m" } - if ($m); + if ($m) { + push @{ $self->{ ( $r ? 'warnings' : 'errors' ) } }, + { message => "$key: $m" }; + } + elsif ( !$r ) { + push @{ $self->{errors} }, { message => "$key: $msg" }; + } return $r; } elsif ( $ref eq 'Regexp' ) { diff --git a/lemonldap-ng-manager/t/14-bad-changes-in-conf.t b/lemonldap-ng-manager/t/14-bad-changes-in-conf.t new file mode 100644 index 000000000..85f0f7179 --- /dev/null +++ b/lemonldap-ng-manager/t/14-bad-changes-in-conf.t @@ -0,0 +1,33 @@ +#!/usr/bin/env perl -I pl/lib +# +# Verify that bas changes are detected + +use Test::More; +use strict; +use JSON; +use Data::Dumper; +require 't/test-lib.pm'; + +my $struct = 't/jsonfiles/14-bad.json'; + +sub body { + return IO::File->new( $struct, 'r' ); +} + +unlink 't/conf/lmConf-2.js'; + +my ( $res, $resBody ); +ok( $res = &client->_post( '/confs/', 'cfgNum=1', &body, 'application/json' ), + "Request succeed" ); +ok( $res->[0] == 200, "Result code is 200" ); +ok( $resBody = from_json( $res->[2]->[0] ), "Result body contains JSON text" ); +ok( $resBody->{result} == 0, "JSON response contains \"result:0\"" ) + or print STDERR Dumper($res); +ok( @{ $resBody->{details}->{__errors__} } == 1, '1 error detected' ); + +count(5); +print STDERR Dumper($resBody); + +done_testing( count() ); + +unlink 't/conf/lmConf-2.js'; diff --git a/lemonldap-ng-manager/t/jsonfiles/14-bad.json b/lemonldap-ng-manager/t/jsonfiles/14-bad.json new file mode 100644 index 000000000..16ad0ebaf --- /dev/null +++ b/lemonldap-ng-manager/t/jsonfiles/14-bad.json @@ -0,0 +1,2448 @@ +[{ + "id": "generalParameters", + "title": "generalParameters", + "nodes": [{ + "id": "portalParams", + "title": "portalParams", + "nodes": [{ + "default": "http://auth.example.com/", + "id": "portal", + "title": "portal", + "data": "http://auth.example.com/" + }, { + "id": "portalMenu", + "title": "portalMenu", + "nodes": [{ + "id": "portalModules", + "title": "portalModules", + "type": "simpleInputContainer", + "nodes": [{ + "default": 1, + "id": "portalDisplayLogout", + "title": "portalDisplayLogout", + "type": "boolOrExpr", + "data": 1 + }, { + "default": "$_auth =~ /^(LDAP|DBI|Demo)$/", + "id": "portalDisplayChangePassword", + "title": "portalDisplayChangePassword", + "type": "boolOrExpr", + "data": "$_auth =~ /^(LDAP|DBI|Demo)$/" + }, { + "default": 1, + "id": "portalDisplayAppslist", + "title": "portalDisplayAppslist", + "type": "boolOrExpr", + "data": 1 + }, { + "default": 1, + "id": "portalDisplayLoginHistory", + "title": "portalDisplayLoginHistory", + "type": "boolOrExpr", + "data": 1 + }] + }, { + "default": [{ + "data": { + "catname": "Default category", + "type": "category" + }, + "id": "applicationList/default", + "title": "default", + "type": "catAndAppList" + }], + "id": "applicationList", + "title": "applicationList", + "type": "catAndAppList", + "nodes": [{ + "title": "Sample applications", + "nodes": [{ + "title": "Application Test 1", + "id": "applicationList/0001-cat/0002-app", + "type": "menuApp", + "data": { + "uri": "http://test1.example.com/", + "logo": "demo.png", + "description": "A simple application displaying authenticated user", + "display": "auto" + } + }, { + "data": { + "display": "auto", + "logo": "thumbnail.png", + "description": "The same simple application displaying authenticated user", + "uri": "http://test2.example.com/" + }, + "title": "Application Test 2", + "id": "applicationList/0001-cat/0003-app", + "type": "menuApp" + }], + "id": "applicationList/0001-cat", + "type": "menuCat" + }, { + "type": "menuCat", + "id": "applicationList/0004-cat", + "nodes": [{ + "title": "WebSSO Manager", + "id": "applicationList/0004-cat/0005-app", + "type": "menuApp", + "data": { + "display": "auto", + "uri": "http://manager.example.com/", + "logo": "configure.png", + "description": "Configure LemonLDAP::NG WebSSO" + } + }, { + "title": "Notifications explorer", + "type": "menuApp", + "id": "applicationList/0004-cat/0006-app", + "data": { + "display": "auto", + "uri": "http://manager.example.com/notifications.pl", + "description": "Explore WebSSO notifications", + "logo": "database.png" + } + }, { + "data": { + "display": "auto", + "description": "Explore WebSSO sessions", + "logo": "database.png", + "uri": "http://manager.example.com/sessions.pl" + }, + "title": "Sessions explorer", + "type": "menuApp", + "id": "applicationList/0004-cat/0007-app" + }], + "title": "Administration" + }, { + "nodes": [{ + "data": { + "uri": "http://manager.example.com/doc/", + "logo": "help.png", + "description": "Documentation supplied with LemonLDAP::NG", + "display": "on" + }, + "title": "Local documentation", + "id": "applicationList/0008-cat/0009-app", + "type": "menuApp" + }, { + "title": "Offical Website", + "type": "menuApp", + "id": "applicationList/0008-cat/0010-app", + "data": { + "display": "on", + "description": "Official LemonLDAP::NG Website", + "logo": "network.png", + "uri": "http://lemonldap-ng.org/" + } + }], + "title": "Documentation", + "id": "applicationList/0008-cat", + "type": "menuCat" + }] + }] + }, { + "id": "portalCustomization", + "title": "portalCustomization", + "nodes": [{ + "default": "bootstrap", + "id": "portalSkin", + "select": [{ + "k": "bootstrap", + "v": "Bootstrap" + }, { + "k": "pastel", + "v": "Pastel" + }, { + "k": "impact", + "v": "Impact" + }, { + "k": "dark", + "v": "Dark" + }], + "title": "portalSkin", + "type": "portalskin", + "data": "bootstrap" + }, { + "id": "portalSkinRules", + "title": "portalSkinRules", + "type": "keyTextContainer", + "nodes": [] + }, { + "id": "portalButtons", + "title": "portalButtons", + "type": "simpleInputContainer", + "nodes": [{ + "default": 1, + "id": "portalCheckLogins", + "title": "portalCheckLogins", + "type": "bool", + "data": 1 + }, { + "default": 1, + "id": "portalDisplayResetPassword", + "title": "portalDisplayResetPassword", + "type": "boolOrExpr", + "data": 1 + }, { + "default": 1, + "id": "portalDisplayRegister", + "title": "portalDisplayRegister", + "type": "boolOrExpr", + "data": 1 + }] + }, { + "id": "passwordManagement", + "title": "passwordManagement", + "type": "simpleInputContainer", + "nodes": [{ + "default": 1, + "id": "portalRequireOldPassword", + "title": "portalRequireOldPassword", + "type": "bool", + "data": 1 + }, { + "default": 0, + "id": "hideOldPassword", + "title": "hideOldPassword", + "type": "bool", + "data": 0 + }, { + "default": 0, + "id": "mailOnPasswordChange", + "title": "mailOnPasswordChange", + "type": "bool", + "data": 0 + }] + }, { + "id": "portalOther", + "title": "portalOther", + "type": "simpleInputContainer", + "nodes": [{ + "default": "_user", + "id": "portalUserAttr", + "title": "portalUserAttr", + "data": "_user" + }, { + "default": 0, + "id": "portalOpenLinkInNewWindow", + "title": "portalOpenLinkInNewWindow", + "type": "bool", + "data": 0 + }, { + "default": 1, + "id": "portalAntiFrame", + "title": "portalAntiFrame", + "type": "bool", + "data": 1 + }, { + "default": 60000, + "id": "portalPingInterval", + "title": "portalPingInterval", + "type": "int", + "data": 60000 + }] + }] + }, { + "id": "portalCaptcha", + "title": "portalCaptcha", + "nodes": [{ + "default": 0, + "id": "captcha_login_enabled", + "title": "captcha_login_enabled", + "type": "bool", + "data": 0 + }, { + "default": 0, + "id": "captcha_mail_enabled", + "title": "captcha_mail_enabled", + "type": "bool", + "data": 0 + }, { + "default": 1, + "id": "captcha_register_enabled", + "title": "captcha_register_enabled", + "type": "bool", + "data": 1 + }, { + "default": 6, + "id": "captcha_size", + "title": "captcha_size", + "type": "int", + "data": 6 + }, { + "default": "Apache::Session::File", + "id": "captchaStorage", + "title": "captchaStorage", + "data": "Apache::Session::File" + }, { + "default": [{ + "data": "/var/lib/lemonldap-ng/captcha/", + "id": "captchaStorageOptions/Directory", + "title": "Directory", + "type": "keyText" + }], + "id": "captchaStorageOptions", + "title": "captchaStorageOptions", + "type": "keyTextContainer", + "nodes": [] + }] + }] + }, { + "_nodes_filter": "authParams", + "id": "authParams", + "title": "authParams", + "type": "authParams", + "nodes": [{ + "default": "Demo", + "id": "authentication", + "select": [{ + "k": "Apache", + "v": "Apache" + }, { + "k": "AD", + "v": "Active Directory" + }, { + "k": "BrowserID", + "v": "BrowserID (Mozilla Persona)" + }, { + "k": "Choice", + "v": "authChoice" + }, { + "k": "CAS", + "v": "Central Authentication Service (CAS)" + }, { + "k": "DBI", + "v": "Database (DBI)" + }, { + "k": "Demo", + "v": "Demonstration" + }, { + "k": "Facebook", + "v": "Facebook" + }, { + "k": "Google", + "v": "Google" + }, { + "k": "LDAP", + "v": "LDAP" + }, { + "k": "Multi", + "v": "Multiple" + }, { + "k": "Null", + "v": "None" + }, { + "k": "OpenID", + "v": "OpenID" + }, { + "k": "Proxy", + "v": "Proxy" + }, { + "k": "Radius", + "v": "Radius" + }, { + "k": "Remote", + "v": "Remote" + }, { + "k": "SAML", + "v": "SAML v2" + }, { + "k": "Slave", + "v": "Slave" + }, { + "k": "SSL", + "v": "SSL" + }, { + "k": "Twitter", + "v": "Twitter" + }, { + "k": "WebID", + "v": "WebID" + }, { + "k": "Yubikey", + "v": "Yubikey" + }], + "title": "authentication", + "type": "select", + "data": "Demo" + }, { + "default": "Demo", + "id": "userDB", + "select": [{ + "k": "AD", + "v": "Active Directory" + }, { + "k": "DBI", + "v": "Database (DBI)" + }, { + "k": "Choice", + "v": "authChoice" + }, { + "k": "Demo", + "v": "Demonstration" + }, { + "k": "Facebook", + "v": "Facebook" + }, { + "k": "Google", + "v": "Google" + }, { + "k": "LDAP", + "v": "LDAP" + }, { + "k": "Multi", + "v": "Multiple" + }, { + "k": "Null", + "v": "None" + }, { + "k": "OpenID", + "v": "OpenID" + }, { + "k": "Proxy", + "v": "Proxy" + }, { + "k": "Remote", + "v": "Remote" + }, { + "k": "SAML", + "v": "SAML v2" + }, { + "k": "Slave", + "v": "Slave" + }, { + "k": "WebID", + "v": "WebID" + }], + "title": "userDB", + "type": "select", + "data": "Demo" + }, { + "default": "Demo", + "id": "passwordDB", + "select": [{ + "k": "AD", + "v": "Active Directory" + }, { + "k": "Choice", + "v": "authChoice" + }, { + "k": "DBI", + "v": "Database (DBI)" + }, { + "k": "Demo", + "v": "Demonstration" + }, { + "k": "LDAP", + "v": "LDAP" + }, { + "k": "Null", + "v": "None" + }], + "title": "passwordDB", + "type": "select", + "data": "Demo" + }], + "nodes_cond": [{ + "_nodes": [{ + "default": 4, + "id": "apacheAuthnLevel", + "title": "apacheAuthnLevel", + "type": "int" + }], + "id": "apacheParams", + "show": false, + "title": "apacheParams", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "default": 1, + "id": "browserIdAuthnLevel", + "title": "browserIdAuthnLevel", + "type": "int" + }, { + "id": "browserIdAutoLogin", + "title": "browserIdAutoLogin", + "type": "bool" + }, { + "id": "browserIdVerificationURL", + "title": "browserIdVerificationURL" + }, { + "id": "browserIdSiteName", + "title": "browserIdSiteName" + }, { + "id": "browserIdSiteLogo", + "title": "browserIdSiteLogo" + }, { + "id": "browserIdBackgroundColor", + "title": "browserIdBackgroundColor" + }], + "id": "browserIdParams", + "show": false, + "title": "browserIdParams", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "default": 1, + "id": "CAS_authnLevel", + "title": "CAS_authnLevel", + "type": "int" + }, { + "id": "CAS_url", + "title": "CAS_url" + }, { + "id": "CAS_CAFile", + "title": "CAS_CAFile" + }, { + "id": "CAS_renew", + "title": "CAS_renew", + "type": "bool" + }, { + "id": "CAS_gateway", + "title": "CAS_gateway", + "type": "bool" + }, { + "default": "/tmp/pgt.txt", + "id": "CAS_pgtFile", + "title": "CAS_pgtFile" + }, { + "cnodes": "CAS_proxiedServices", + "id": "CAS_proxiedServices", + "title": "CAS_proxiedServices", + "type": "keyTextContainer" + }], + "id": "casParams", + "show": false, + "title": "casParams" + }, { + "_nodes": [{ + "id": "authChoiceParam", + "title": "authChoiceParam" + }, { + "cnodes": "authChoiceModules", + "id": "authChoiceModules", + "title": "authChoiceModules", + "type": "keyTextContainer" + }], + "id": "choiceParams", + "show": false, + "title": "choiceParams" + }, { + "_nodes": [{ + "default": 2, + "id": "dbiAuthnLevel", + "title": "dbiAuthnLevel", + "type": "int" + }, { + "cnodes": "dbiExportedVars", + "default": [], + "id": "dbiExportedVars", + "title": "dbiExportedVars", + "type": "keyTextContainer" + }, { + "_nodes": [{ + "_nodes": [{ + "id": "dbiAuthChain", + "title": "dbiAuthChain" + }, { + "id": "dbiAuthUser", + "title": "dbiAuthUser" + }, { + "id": "dbiAuthPassword", + "title": "dbiAuthPassword" + }], + "id": "dbiConnectionAuth", + "title": "dbiConnectionAuth", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "id": "dbiUserChain", + "title": "dbiUserChain" + }, { + "id": "dbiUserUser", + "title": "dbiUserUser" + }, { + "id": "dbiUserPassword", + "title": "dbiUserPassword" + }], + "id": "dbiConnectionUser", + "title": "dbiConnectionUser", + "type": "simpleInputContainer" + }], + "id": "dbiConnection", + "title": "dbiConnection" + }, { + "_nodes": [{ + "id": "dbiAuthTable", + "title": "dbiAuthTable" + }, { + "id": "dbiUserTable", + "title": "dbiUserTable" + }, { + "id": "dbiAuthLoginCol", + "title": "dbiAuthLoginCol" + }, { + "id": "dbiAuthPasswordCol", + "title": "dbiAuthPasswordCol" + }, { + "id": "dbiPasswordMailCol", + "title": "dbiPasswordMailCol" + }, { + "id": "userPivot", + "title": "userPivot" + }], + "id": "dbiSchema", + "title": "dbiSchema", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "id": "dbiAuthPasswordHash", + "title": "dbiAuthPasswordHash" + }], + "id": "dbiPassword", + "title": "dbiPassword", + "type": "simpleInputContainer" + }], + "id": "dbiParams", + "show": false, + "title": "dbiParams" + }, { + "id": "demoParams", + "show": true, + "title": "demoParams", + "nodes": [{ + "default": [{ + "data": "cn", + "id": "demoExportedVars/cn", + "title": "cn", + "type": "keyText" + }, { + "data": "mail", + "id": "demoExportedVars/mail", + "title": "mail", + "type": "keyText" + }, { + "data": "uid", + "id": "demoExportedVars/uid", + "title": "uid", + "type": "keyText" + }], + "id": "demoExportedVars", + "title": "demoExportedVars", + "type": "keyTextContainer", + "nodes": [{ + "data": "cn", + "title": "cn", + "id": "demoExportedVars/cn", + "type": "keyText" + }, { + "data": "mail", + "title": "mail", + "type": "keyText", + "id": "demoExportedVars/mail" + }, { + "type": "keyText", + "id": "demoExportedVars/uid", + "title": "uid", + "data": "uid" + }] + }] + }, { + "_nodes": [{ + "default": 1, + "id": "facebookAuthnLevel", + "title": "facebookAuthnLevel", + "type": "int" + }, { + "cnodes": "facebookExportedVars", + "default": [], + "id": "facebookExportedVars", + "title": "facebookExportedVars", + "type": "keyTextContainer" + }, { + "id": "facebookAppId", + "title": "facebookAppId" + }, { + "id": "facebookAppSecret", + "title": "facebookAppSecret" + }], + "id": "facebookParams", + "show": false, + "title": "facebookParams" + }, { + "_nodes": [{ + "default": 1, + "id": "googleAuthnLevel", + "title": "googleAuthnLevel", + "type": "int" + }, { + "cnodes": "googleExportedVars", + "default": [], + "id": "googleExportedVars", + "title": "googleExportedVars", + "type": "keyTextContainer" + }], + "id": "googleParams", + "show": false, + "title": "googleParams" + }, { + "_nodes": [{ + "default": 2, + "id": "ldapAuthnLevel", + "title": "ldapAuthnLevel", + "type": "int" + }, { + "cnodes": "ldapExportedVars", + "default": [{ + "data": "cn", + "id": "ldapExportedVars/cn", + "title": "cn", + "type": "keyText" + }, { + "data": "mail", + "id": "ldapExportedVars/mail", + "title": "mail", + "type": "keyText" + }, { + "data": "uid", + "id": "ldapExportedVars/uid", + "title": "uid", + "type": "keyText" + }], + "id": "ldapExportedVars", + "title": "ldapExportedVars", + "type": "keyTextContainer" + }, { + "_nodes": [{ + "default": "ldap://localhost", + "id": "ldapServer", + "title": "ldapServer" + }, { + "default": 389, + "id": "ldapPort", + "title": "ldapPort", + "type": "int" + }, { + "default": "dc=example,dc=com", + "id": "ldapBase", + "title": "ldapBase" + }, { + "default": "", + "id": "managerDn", + "title": "managerDn" + }, { + "default": "", + "id": "managerPassword", + "title": "managerPassword" + }, { + "default": 120, + "id": "ldapTimeout", + "title": "ldapTimeout", + "type": "int" + }, { + "default": 3, + "id": "ldapVersion", + "title": "ldapVersion", + "type": "int" + }, { + "id": "ldapRaw", + "title": "ldapRaw" + }], + "id": "ldapConnection", + "title": "ldapConnection", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "id": "LDAPFilter", + "title": "LDAPFilter" + }, { + "id": "AuthLDAPFilter", + "title": "AuthLDAPFilter" + }, { + "id": "mailLDAPFilter", + "title": "mailLDAPFilter" + }], + "id": "ldapFilters", + "title": "ldapFilters", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "id": "ldapGroupBase", + "title": "ldapGroupBase" + }, { + "default": "groupOfNames", + "id": "ldapGroupObjectClass", + "title": "ldapGroupObjectClass" + }, { + "default": "member", + "id": "ldapGroupAttributeName", + "title": "ldapGroupAttributeName" + }, { + "default": "dn", + "id": "ldapGroupAttributeNameUser", + "title": "ldapGroupAttributeNameUser" + }, { + "default": "cn", + "id": "ldapGroupAttributeNameSearch", + "title": "ldapGroupAttributeNameSearch" + }, { + "default": 0, + "id": "ldapGroupRecursive", + "title": "ldapGroupRecursive", + "type": "bool" + }, { + "default": "dn", + "id": "ldapGroupAttributeNameGroup", + "title": "ldapGroupAttributeNameGroup" + }], + "id": "ldapGroups", + "title": "ldapGroups", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "default": 0, + "id": "ldapPpolicyControl", + "title": "ldapPpolicyControl", + "type": "bool" + }, { + "default": 0, + "id": "ldapSetPassword", + "title": "ldapSetPassword", + "type": "bool" + }, { + "default": 0, + "id": "ldapChangePasswordAsUser", + "title": "ldapChangePasswordAsUser", + "type": "bool" + }, { + "default": "utf-8", + "id": "ldapPwdEnc", + "title": "ldapPwdEnc" + }, { + "default": 1, + "id": "ldapUsePasswordResetAttribute", + "title": "ldapUsePasswordResetAttribute", + "type": "bool" + }, { + "default": "pwdReset", + "id": "ldapPasswordResetAttribute", + "title": "ldapPasswordResetAttribute" + }, { + "default": "TRUE", + "id": "ldapPasswordResetAttributeValue", + "title": "ldapPasswordResetAttributeValue" + }], + "id": "ldapPassword", + "title": "ldapPassword", + "type": "simpleInputContainer" + }], + "id": "ldapParams", + "show": false, + "title": "ldapParams" + }, { + "_nodes": [{ + "default": 2, + "id": "nullAuthnLevel", + "title": "nullAuthnLevel", + "type": "int" + }], + "id": "nullParams", + "show": false, + "title": "nullParams", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "default": 1, + "id": "openIdAuthnLevel", + "title": "openIdAuthnLevel", + "type": "int" + }, { + "cnodes": "openIdExportedVars", + "default": [], + "id": "openIdExportedVars", + "title": "openIdExportedVars", + "type": "keyTextContainer" + }, { + "id": "openIdSecret", + "title": "openIdSecret" + }, { + "id": "openIdIDPList", + "title": "openIdIDPList" + }], + "id": "openIdParams", + "show": false, + "title": "openIdParams" + }, { + "_nodes": [{ + "id": "soapAuthService", + "title": "soapAuthService" + }, { + "id": "remoteCookieName", + "title": "remoteCookieName" + }, { + "id": "soapSessionService", + "title": "soapSessionService" + }], + "id": "proxyParams", + "show": false, + "title": "proxyParams", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "default": 3, + "id": "radiusAuthnLevel", + "title": "radiusAuthnLevel", + "type": "int" + }, { + "id": "radiusSecret", + "title": "radiusSecret" + }, { + "id": "radiusServer", + "title": "radiusServer" + }], + "id": "radiusParams", + "show": false, + "title": "radiusParams", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "id": "remotePortal", + "title": "remotePortal" + }, { + "id": "remoteCookieName", + "title": "remoteCookieName" + }, { + "default": "Lemonldap::NG::Common::Apache::Session::SOAP", + "id": "remoteGlobalStorage", + "title": "remoteGlobalStorage" + }, { + "cnodes": "remoteGlobalStorageOptions", + "default": [{ + "data": "http://auth.example.com/Lemonldap/NG/Common/CGI/SOAPService", + "id": "remoteGlobalStorageOptions/ns", + "title": "ns", + "type": "keyText" + }, { + "data": "http://auth.example.com/index.pl/sessions", + "id": "remoteGlobalStorageOptions/proxy", + "title": "proxy", + "type": "keyText" + }], + "id": "remoteGlobalStorageOptions", + "title": "remoteGlobalStorageOptions", + "type": "keyTextContainer" + }], + "id": "remoteParams", + "show": false, + "title": "remoteParams" + }, { + "_nodes": [{ + "default": 2, + "id": "slaveAuthnLevel", + "title": "slaveAuthnLevel", + "type": "int" + }, { + "cnodes": "slaveExportedVars", + "default": [], + "id": "slaveExportedVars", + "title": "slaveExportedVars", + "type": "keyTextContainer" + }, { + "id": "slaveUserHeader", + "title": "slaveUserHeader" + }, { + "id": "slaveMasterIP", + "title": "slaveMasterIP" + }], + "id": "slaveParams", + "show": false, + "title": "slaveParams" + }, { + "_nodes": [{ + "default": 5, + "id": "SSLAuthnLevel", + "title": "SSLAuthnLevel", + "type": "int" + }, { + "id": "SSLVar", + "title": "SSLVar" + }], + "id": "sslParams", + "show": false, + "title": "sslParams", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "default": 1, + "id": "twitterAuthnLevel", + "title": "twitterAuthnLevel", + "type": "int" + }, { + "id": "twitterKey", + "title": "twitterKey" + }, { + "id": "twitterSecret", + "title": "twitterSecret" + }, { + "id": "twitterAppName", + "title": "twitterAppName" + }], + "id": "twitterParams", + "show": false, + "title": "twitterParams", + "type": "simpleInputContainer" + }, { + "_nodes": [{ + "default": 1, + "id": "webIDAuthnLevel", + "title": "webIDAuthnLevel", + "type": "int" + }, { + "cnodes": "webIDExportedVars", + "default": [], + "id": "webIDExportedVars", + "title": "webIDExportedVars", + "type": "keyTextContainer" + }, { + "id": "webIDWhitelist", + "title": "webIDWhitelist" + }], + "id": "webIDParams", + "show": false, + "title": "webIDParams" + }, { + "_nodes": [{ + "default": 3, + "id": "yubikeyAuthnLevel", + "title": "yubikeyAuthnLevel", + "type": "int" + }, { + "id": "yubikeyClientID", + "title": "yubikeyClientID" + }, { + "id": "yubikeySecretKey", + "title": "yubikeySecretKey" + }, { + "default": 12, + "id": "yubikeyPublicIDSize", + "title": "yubikeyPublicIDSize", + "type": "int" + }], + "id": "yubikeyParams", + "show": false, + "title": "yubikeyParams", + "type": "simpleInputContainer" + }] + }, { + "id": "issuerParams", + "title": "issuerParams", + "nodes": [{ + "id": "issuerDBSAML", + "title": "issuerDBSAML", + "type": "simpleInputContainer", + "nodes": [{ + "default": 0, + "id": "issuerDBSAMLActivation", + "title": "issuerDBSAMLActivation", + "type": "bool", + "data": 0 + }, { + "default": "^/saml/", + "id": "issuerDBSAMLPath", + "title": "issuerDBSAMLPath", + "data": "^/saml/" + }, { + "default": 1, + "id": "issuerDBSAMLRule", + "title": "issuerDBSAMLRule", + "type": "boolOrExpr", + "data": 1 + }] + }, { + "id": "issuerDBCAS", + "title": "issuerDBCAS", + "nodes": [{ + "default": 0, + "id": "issuerDBCASActivation", + "title": "issuerDBCASActivation", + "type": "bool", + "data": 0 + }, { + "default": "^/cas/", + "id": "issuerDBCASPath", + "title": "issuerDBCASPath", + "data": "^/cas/" + }, { + "default": 1, + "id": "issuerDBCASRule", + "title": "issuerDBCASRule", + "type": "boolOrExpr", + "data": 1 + }, { + "id": "issuerDBCASOptions", + "title": "issuerDBCASOptions", + "nodes": [{ + "id": "casAttr", + "title": "casAttr" + }, { + "default": "none", + "id": "casAccessControlPolicy", + "select": [{ + "k": "none", + "v": "None" + }, { + "k": "error", + "v": "Display error on portal" + }, { + "k": "faketicket", + "v": "Send a fake service ticket" + }], + "title": "casAccessControlPolicy", + "type": "select", + "data": "none" + }, { + "id": "casStorage", + "title": "casStorage" + }, { + "id": "casStorageOptions", + "title": "casStorageOptions", + "type": "keyTextContainer", + "nodes": [] + }] + }] + }, { + "id": "issuerDBOpenID", + "title": "issuerDBOpenID", + "nodes": [{ + "default": 0, + "id": "issuerDBOpenIDActivation", + "title": "issuerDBOpenIDActivation", + "type": "bool", + "data": 0 + }, { + "default": "^/openidserver/", + "id": "issuerDBOpenIDPath", + "title": "issuerDBOpenIDPath", + "data": "^/openidserver/" + }, { + "default": 1, + "id": "issuerDBOpenIDRule", + "title": "issuerDBOpenIDRule", + "type": "boolOrExpr", + "data": 1 + }, { + "id": "issuerDBOpenIDOptions", + "title": "issuerDBOpenIDOptions", + "nodes": [{ + "id": "openIdIssuerSecret", + "title": "openIdIssuerSecret" + }, { + "id": "openIdAttr", + "title": "openIdAttr" + }, { + "id": "openIdSPList", + "title": "openIdSPList", + "type": "openidServerList" + }, { + "id": "openIdSreg", + "title": "openIdSreg", + "type": "simpleInputContainer", + "nodes": [{ + "default": "cn", + "id": "openIdSreg_fullname", + "title": "openIdSreg_fullname", + "data": "cn" + }, { + "default": "uid", + "id": "openIdSreg_nickname", + "title": "openIdSreg_nickname", + "data": "uid" + }, { + "id": "openIdSreg_language", + "title": "openIdSreg_language" + }, { + "id": "openIdSreg_postcode", + "title": "openIdSreg_postcode" + }, { + "default": "_timezone", + "id": "openIdSreg_timezone", + "title": "openIdSreg_timezone", + "data": "_timezone" + }, { + "id": "openIdSreg_country", + "title": "openIdSreg_country" + }, { + "id": "openIdSreg_gender", + "title": "openIdSreg_gender" + }, { + "default": "mail", + "id": "openIdSreg_email", + "title": "openIdSreg_email", + "data": "mail" + }, { + "id": "openIdSreg_dob", + "title": "openIdSreg_dob" + }] + }] + }] + }] + }, { + "id": "logParams", + "title": "logParams", + "type": "simpleInputContainer", + "nodes": [{ + "default": "", + "id": "syslog", + "title": "syslog", + "data": "" + }, { + "default": "", + "id": "trustedProxies", + "title": "trustedProxies", + "data": "" + }, { + "default": "uid", + "id": "whatToTrace", + "title": "whatToTrace", + "data": "_whatToTrace" + }] + }, { + "id": "cookieParams", + "title": "cookieParams", + "type": "simpleInputContainer", + "nodes": [{ + "default": "lemonldap", + "id": "cookieName", + "title": "cookieName", + "data": "lemonldap" + }, { + "default": "example.com", + "id": "domain", + "title": "domain", + "data": "example.com" + }, { + "default": 0, + "id": "cda", + "title": "cda", + "type": "bool", + "data": 0 + }, { + "default": 0, + "id": "securedCookie", + "select": [{ + "k": "0", + "v": "unsecuredCookie" + }, { + "k": "1", + "v": "securedCookie" + }, { + "k": "2", + "v": "doubleCookie" + }, { + "k": "3", + "v": "doubleCookieForSingleSession" + }], + "title": "securedCookie", + "type": "select", + "data": 0 + }, { + "default": 1, + "id": "httpOnly", + "title": "httpOnly", + "type": "bool", + "data": 1 + }, { + "id": "cookieExpiration", + "title": "cookieExpiration" + }] + }, { + "id": "sessionParams", + "title": "sessionParams", + "nodes": [{ + "default": 0, + "id": "storePassword", + "title": "storePassword", + "type": "bool", + "data": 0 + }, { + "default": 72000, + "id": "timeout", + "title": "timeout", + "type": "int", + "data": 72000 + }, { + "default": 0, + "id": "timeoutActivity", + "select": [{ + "k": "0", + "v": "None" + }, { + "k": "900", + "v": "15 min" + }, { + "k": "1800", + "v": "30 min" + }, { + "k": "2700", + "v": "45 min" + }, { + "k": "3600", + "v": "60 min" + }], + "title": "timeoutActivity", + "type": "select", + "data": 0 + }, { + "id": "grantSessionRules", + "title": "grantSessionRules", + "type": "keyTextContainer", + "nodes": [] + }, { + "id": "sessionStorage", + "title": "sessionStorage", + "nodes": [{ + "default": "Apache::Session::File", + "id": "globalStorage", + "title": "globalStorage", + "data": "Apache::Session::File" + }, { + "default": [{ + "data": "t/sessions", + "id": "globalStorageOptions/Directory", + "title": "Directory", + "type": "keyText" + }, { + "data": "/var/lib/lemonldap-ng/sessions/lock/", + "id": "globalStorageOptions/LockDirectory", + "title": "LockDirectory", + "type": "keyText" + }, { + "data": "Lemonldap::NG::Common::Apache::Session::Generate::SHA256", + "id": "globalStorageOptions/generateModule", + "title": "generateModule", + "type": "keyText" + }], + "id": "globalStorageOptions", + "title": "globalStorageOptions", + "type": "keyTextContainer", + "nodes": [{ + "data": "t/sessions", + "title": "Directory", + "type": "keyText", + "id": "globalStorageOptions/Directory" + }, { + "data": "Lemonldap::NG::Common::Apache::Session::Generate::SHA256", + "type": "keyText", + "id": "globalStorageOptions/generateModule", + "title": "generateModule" + }] + }, { + "default": "Cache::FileCache", + "id": "localSessionStorage", + "title": "localSessionStorage", + "data": "Cache::FileCache" + }, { + "default": [{ + "data": 3, + "id": "localSessionStorageOptions/cache_depth", + "title": "cache_depth", + "type": "keyText" + }, { + "data": "/tmp", + "id": "localSessionStorageOptions/cache_root", + "title": "cache_root", + "type": "keyText" + }, { + "data": 600, + "id": "localSessionStorageOptions/default_expires_in", + "title": "default_expires_in", + "type": "keyText" + }, { + "data": "007", + "id": "localSessionStorageOptions/directory_umask", + "title": "directory_umask", + "type": "keyText" + }, { + "data": "lemonldap-ng-sessions", + "id": "localSessionStorageOptions/namespace", + "title": "namespace", + "type": "keyText" + }], + "id": "localSessionStorageOptions", + "title": "localSessionStorageOptions", + "type": "keyTextContainer", + "nodes": [] + }] + }, { + "id": "multipleSessions", + "title": "multipleSessions", + "type": "simpleInputContainer", + "nodes": [{ + "default": 0, + "id": "singleSession", + "title": "singleSession", + "type": "bool", + "data": 0 + }, { + "default": 0, + "id": "singleIP", + "title": "singleIP", + "type": "bool", + "data": 0 + }, { + "default": 0, + "id": "singleUserByIP", + "title": "singleUserByIP", + "type": "bool", + "data": 0 + }, { + "default": 0, + "id": "singleSessionUserByIP", + "title": "singleSessionUserByIP", + "type": "bool", + "data": 0 + }, { + "default": 1, + "id": "notifyDeleted", + "title": "notifyDeleted", + "type": "bool", + "data": 1 + }, { + "default": 0, + "id": "notifyOther", + "title": "notifyOther", + "type": "bool", + "data": 0 + }] + }, { + "id": "persistentSessions", + "title": "persistentSessions", + "nodes": [{ + "id": "persistentStorage", + "title": "persistentStorage", + "data": "Apache::Session::File" + }, { + "id": "persistentStorageOptions", + "title": "persistentStorageOptions", + "type": "keyTextContainer", + "nodes": [{ + "title": "Directory", + "id": "persistentStorageOptions/Directory", + "type": "keyText", + "data": "__PSESSIONDIR__" + }] + }] + }] + }, { + "id": "reloadUrls", + "title": "reloadUrls", + "type": "keyTextContainer", + "nodes": [{ + "data": "http://reload.example.com/reload", + "title": "reload.example.com", + "id": "reloadUrls/reload.example.com", + "type": "keyText" + }] + }, { + "id": "advancedParams", + "title": "advancedParams", + "nodes": [{ + "id": "customFunctions", + "title": "customFunctions" + }, { + "id": "soap", + "title": "soap", + "type": "simpleInputContainer", + "nodes": [{ + "default": 0, + "id": "Soap", + "title": "Soap", + "type": "bool", + "data": 0 + }, { + "id": "exportedAttr", + "title": "exportedAttr" + }] + }, { + "id": "loginHistory", + "title": "loginHistory", + "nodes": [{ + "default": 1, + "id": "loginHistoryEnabled", + "title": "loginHistoryEnabled", + "type": "bool", + "data": 1 + }, { + "default": 5, + "id": "successLoginNumber", + "title": "successLoginNumber", + "type": "int", + "data": 5 + }, { + "default": 5, + "id": "failedLoginNumber", + "title": "failedLoginNumber", + "type": "int", + "data": 5 + }, { + "id": "sessionDataToRemember", + "title": "sessionDataToRemember", + "type": "keyTextContainer", + "nodes": [] + }] + }, { + "id": "notifications", + "title": "notifications", + "nodes": [{ + "default": 0, + "id": "notification", + "title": "notification", + "type": "bool", + "data": 1 + }, { + "default": "File", + "id": "notificationStorage", + "title": "notificationStorage", + "data": "File" + }, { + "default": [{ + "data": "/var/lib/lemonldap-ng/notifications", + "id": "notificationStorageOptions/dirName", + "title": "dirName", + "type": "keyText" + }], + "id": "notificationStorageOptions", + "title": "notificationStorageOptions", + "type": "keyTextContainer", + "nodes": [{ + "title": "dirName", + "type": "keyText", + "id": "notificationStorageOptions/dirName", + "data": "t/notifications" + }] + }, { + "default": "allusers", + "id": "notificationWildcard", + "title": "notificationWildcard", + "data": "allusers" + }, { + "id": "notificationXSLTfile", + "title": "notificationXSLTfile" + }] + }, { + "id": "passwordManagement", + "title": "passwordManagement", + "nodes": [{ + "id": "SMTP", + "title": "SMTP", + "type": "simpleInputContainer", + "nodes": [{ + "default": "", + "id": "SMTPServer", + "title": "SMTPServer", + "data": "" + }, { + "id": "SMTPAuthUser", + "title": "SMTPAuthUser" + }, { + "id": "SMTPAuthPass", + "title": "SMTPAuthPass" + }] + }, { + "id": "mailHeaders", + "title": "mailHeaders", + "type": "simpleInputContainer", + "nodes": [{ + "default": "noreply@example.com", + "id": "mailFrom", + "title": "mailFrom", + "data": "noreply@example.com" + }, { + "id": "mailReplyTo", + "title": "mailReplyTo" + }, { + "default": "utf-8", + "id": "mailCharset", + "title": "mailCharset", + "data": "utf-8" + }] + }, { + "id": "mailContent", + "title": "mailContent", + "type": "simpleInputContainer", + "nodes": [{ + "default": "[LemonLDAP::NG] Your new password", + "id": "mailSubject", + "title": "mailSubject", + "data": "[LemonLDAP::NG] Your new password" + }, { + "id": "mailBody", + "title": "mailBody", + "type": "longtext" + }, { + "default": "[LemonLDAP::NG] Password reset confirmation", + "id": "mailConfirmSubject", + "title": "mailConfirmSubject", + "data": "[LemonLDAP::NG] Password reset confirmation" + }, { + "id": "mailConfirmBody", + "title": "mailConfirmBody", + "type": "longtext" + }] + }, { + "id": "mailOther", + "title": "mailOther", + "type": "simpleInputContainer", + "nodes": [{ + "default": "http://auth.example.com/mail.pl", + "id": "mailUrl", + "title": "mailUrl", + "data": "http://auth.example.com/mail.pl" + }, { + "default": "[A-Z]{3}[a-z]{5}.\\d{2}", + "id": "randomPasswordRegexp", + "title": "randomPasswordRegexp", + "data": "[A-Z]{3}[a-z]{5}.\\d{2}" + }, { + "default": 0, + "id": "mailTimeout", + "title": "mailTimeout", + "type": "int", + "data": 0 + }, { + "default": "mail", + "id": "mailSessionKey", + "title": "mailSessionKey", + "data": "mail" + }] + }] + }, { + "id": "register", + "title": "register", + "type": "simpleInputContainer", + "nodes": [{ + "default": "Demo", + "id": "registerDB", + "select": [{ + "k": "AD", + "v": "Active Directory" + }, { + "k": "Demo", + "v": "Demonstration" + }, { + "k": "LDAP", + "v": "LDAP" + }, { + "k": "Null", + "v": "None" + }], + "title": "registerDB", + "type": "select", + "data": "Demo" + }, { + "default": "http://auth.example.com/register.pl", + "id": "registerUrl", + "title": "registerUrl", + "data": "http://auth.example.com/register.pl" + }, { + "default": 0, + "id": "registerTimeout", + "title": "registerTimeout", + "type": "int", + "data": 0 + }, { + "default": "[LemonLDAP::NG] Account register confirmation", + "id": "registerConfirmSubject", + "title": "registerConfirmSubject", + "data": "[LemonLDAP::NG] Account register confirmation" + }, { + "default": "[LemonLDAP::NG] Your new account", + "id": "registerDoneSubject", + "title": "registerDoneSubject", + "data": "[LemonLDAP::NG] Your new account" + }] + }, { + "id": "security", + "title": "security", + "type": "simpleInputContainer", + "nodes": [{ + "default": "^[\\w\\.\\-@]+$", + "id": "userControl", + "title": "userControl", + "data": "^[\\w\\.\\-@]+$" + }, { + "default": 0, + "id": "portalForceAuthn", + "title": "portalForceAuthn", + "type": "bool", + "data": 0 + }, { + "default": "p2@Pol9Lo_Ze&j*P", + "id": "key", + "title": "key", + "type": "password", + "data": "qwertyui" + }, { + "id": "trustedDomains", + "title": "trustedDomains" + }, { + "default": 1, + "id": "useSafeJail", + "title": "useSafeJail", + "type": "bool", + "data": 1 + }, { + "default": 1, + "id": "checkXSS", + "title": "checkXSS", + "type": "bool", + "data": 1 + }] + }, { + "id": "redirection", + "title": "redirection", + "type": "simpleInputContainer", + "nodes": [{ + "default": 0, + "id": "https", + "title": "https", + "type": "bool", + "data": 0 + }, { + "id": "port", + "title": "port", + "type": "int", + "data": null + }, { + "default": 0, + "id": "useRedirectOnForbidden", + "title": "useRedirectOnForbidden", + "type": "bool", + "data": 0 + }, { + "default": 1, + "id": "useRedirectOnError", + "title": "useRedirectOnError", + "type": "bool", + "data": 1 + }, { + "default": 0, + "id": "maintenance", + "title": "maintenance", + "type": "bool", + "data": 0 + }] + }, { + "id": "portalRedirection", + "title": "portalRedirection", + "type": "simpleInputContainer", + "nodes": [{ + "default": 0, + "id": "jsRedirect", + "title": "jsRedirect", + "type": "boolOrExpr", + "data": 0 + }] + }, { + "id": "specialHandlers", + "title": "specialHandlers", + "nodes": [{ + "id": "zimbraHandler", + "title": "zimbraHandler", + "type": "simpleInputContainer", + "nodes": [{ + "id": "zimbraPreAuthKey", + "title": "zimbraPreAuthKey" + }, { + "id": "zimbraAccountKey", + "title": "zimbraAccountKey" + }, { + "default": "", + "id": "zimbraBy", + "select": [{ + "k": "", + "v": "" + }, { + "k": "name", + "v": "User name" + }, { + "k": "id", + "v": "User id" + }, { + "k": "foreignPrincipal", + "v": "Foreign principal" + }], + "title": "zimbraBy", + "type": "select", + "data": "" + }, { + "id": "zimbraUrl", + "title": "zimbraUrl" + }, { + "id": "zimbraSsoUrl", + "title": "zimbraSsoUrl" + }] + }, { + "id": "sympaHandler", + "title": "sympaHandler", + "type": "simpleInputContainer", + "nodes": [{ + "id": "sympaSecret", + "title": "sympaSecret" + }, { + "id": "sympaMailKey", + "title": "sympaMailKey" + }] + }, { + "id": "secureTokenHandler", + "title": "secureTokenHandler", + "type": "simpleInputContainer", + "nodes": [{ + "default": "127.0.0.1:11211", + "id": "secureTokenMemcachedServers", + "title": "secureTokenMemcachedServers", + "data": "127.0.0.1:11211" + }, { + "default": 60, + "id": "secureTokenExpiration", + "title": "secureTokenExpiration", + "type": "int", + "data": 60 + }, { + "default": "uid", + "id": "secureTokenAttribute", + "title": "secureTokenAttribute", + "data": "uid" + }, { + "default": ".*", + "id": "secureTokenUrls", + "title": "secureTokenUrls", + "data": ".*" + }, { + "default": "Auth-Token", + "id": "secureTokenHeader", + "title": "secureTokenHeader", + "data": "Auth-Token" + }, { + "default": 1, + "id": "secureTokenAllowOnError", + "title": "secureTokenAllowOnError", + "type": "bool", + "data": 1 + }] + }] + }, { + "default": [], + "id": "logoutServices", + "title": "logoutServices", + "type": "keyTextContainer", + "nodes": [] + }] + }] +}, { + "id": "variables", + "title": "variables", + "nodes": [{ + "default": [{ + "data": "HTTP_USER_AGENT", + "id": "exportedVars/UA", + "title": "UA", + "type": "keyText" + }], + "id": "exportedVars", + "title": "exportedVars", + "type": "keyTextContainer", + "nodes": [{ + "data": "HTTP_USER_AGENT", + "type": "keyText", + "id": "exportedVars/UA", + "title": "UA" + }] + }, { + "default": [], + "id": "macros", + "title": "macros", + "type": "keyTextContainer", + "nodes": [{ + "id": "macros/_whatToTrace", + "type": "keyText", + "title": "_whatToTrace", + "data": "$_auth eq 'SAML' ? \"$_user\\@$_idpConfKey\" : \"$_user\"" + }] + }, { + "default": [], + "id": "groups", + "title": "groups", + "type": "keyTextContainer", + "nodes": [] + }] +}, { + "id": "virtualHosts", + "template": "virtualHost", + "title": "virtualHosts", + "type": "virtualHostContainer", + "nodes": [{ + "template": "virtualHost", + "title": "manager.example.com", + "type": "virtualHost", + "id": "virtualHosts/manager.example.com", + "nodes": [{ + "default": [{ + "data": "deny", + "id": "virtualHosts/manager.example.com/locationRules/default", + "re": "default", + "title": "default", + "type": "rule" + }], + "id": "virtualHosts/manager.example.com/locationRules", + "title": "locationRules", + "type": "ruleContainer", + "nodes": [{ + "comment": "", + "title": "default", + "type": "rule", + "id": "virtualHosts/manager.example.com/locationRules/1", + "data": "$uid =~ /dwho/rtyler/", + "re": "default" + }] + }, { + "id": "virtualHosts/manager.example.com/exportedHeaders", + "title": "exportedHeaders", + "type": "keyTextContainer", + "nodes": [] + }, { + "id": "virtualHosts/manager.example.com/post", + "title": "post", + "type": "postContainer", + "nodes": [] + }, { + "id": "vhostOptions", + "title": "vhostOptions", + "nodes": [{ + "default": -1, + "get": "virtualHosts/manager.example.com/vhostPort", + "id": "virtualHosts/manager.example.com/vhostPort", + "title": "vhostPort", + "type": "int", + "data": -1 + }, { + "default": -1, + "get": "virtualHosts/manager.example.com/vhostHttps", + "id": "virtualHosts/manager.example.com/vhostHttps", + "title": "vhostHttps", + "type": "trool", + "data": -1 + }, { + "default": 0, + "get": "virtualHosts/manager.example.com/vhostMaintenance", + "id": "virtualHosts/manager.example.com/vhostMaintenance", + "title": "vhostMaintenance", + "type": "bool", + "data": 0 + }, { + "get": "virtualHosts/manager.example.com/vhostAliases", + "id": "virtualHosts/manager.example.com/vhostAliases", + "title": "vhostAliases" + }] + }] + }, { + "template": "virtualHost", + "type": "virtualHost", + "id": "virtualHosts/test1.example.com", + "title": "test1.example.com", + "nodes": [{ + "default": [{ + "data": "deny", + "id": "virtualHosts/test1.example.com/locationRules/default", + "re": "default", + "title": "default", + "type": "rule" + }], + "id": "virtualHosts/test1.example.com/locationRules", + "title": "locationRules", + "type": "ruleContainer", + "nodes": [{ + "data": "logout_sso", + "re": "^/logout", + "comment": "", + "title": "^/logout", + "id": "virtualHosts/test1.example.com/locationRules/1", + "type": "rule" + }, { + "title": "default", + "comment": "", + "type": "rule", + "id": "virtualHosts/test1.example.com/locationRules/2", + "data": "accept", + "re": "default" + }] + }, { + "id": "virtualHosts/test1.example.com/exportedHeaders", + "title": "exportedHeaders", + "type": "keyTextContainer", + "nodes": [{ + "data": "$uid", + "id": "virtualHosts/test1.example.com/exportedHeaders/1", + "type": "keyText", + "title": "Auth-User" + }] + }, { + "id": "virtualHosts/test1.example.com/post", + "title": "post", + "type": "postContainer", + "nodes": [] + }, { + "id": "vhostOptions", + "title": "vhostOptions", + "nodes": [{ + "default": -1, + "get": "virtualHosts/test1.example.com/vhostPort", + "id": "virtualHosts/test1.example.com/vhostPort", + "title": "vhostPort", + "type": "int", + "data": -1 + }, { + "default": -1, + "get": "virtualHosts/test1.example.com/vhostHttps", + "id": "virtualHosts/test1.example.com/vhostHttps", + "title": "vhostHttps", + "type": "trool", + "data": -1 + }, { + "default": 0, + "get": "virtualHosts/test1.example.com/vhostMaintenance", + "id": "virtualHosts/test1.example.com/vhostMaintenance", + "title": "vhostMaintenance", + "type": "bool", + "data": 0 + }, { + "get": "virtualHosts/test1.example.com/vhostAliases", + "id": "virtualHosts/test1.example.com/vhostAliases", + "title": "vhostAliases" + }] + }] + }, { + "id": "virtualHosts/test2.example.com", + "type": "virtualHost", + "title": "test2.example.com", + "template": "virtualHost", + "nodes": [{ + "default": [{ + "data": "deny", + "id": "virtualHosts/test2.example.com/locationRules/default", + "re": "default", + "title": "default", + "type": "rule" + }], + "id": "virtualHosts/test2.example.com/locationRules", + "title": "locationRules", + "type": "ruleContainer", + "nodes": [{ + "title": "^/logout", + "comment": "", + "type": "rule", + "id": "virtualHosts/test2.example.com/locationRules/1", + "data": "logout_sso", + "re": "^/logout" + }, { + "data": "accept", + "re": "default", + "title": "default", + "comment": "", + "id": "virtualHosts/test2.example.com/locationRules/2", + "type": "rule" + }] + }, { + "id": "virtualHosts/test2.example.com/exportedHeaders", + "title": "exportedHeaders", + "type": "keyTextContainer", + "nodes": [{ + "id": "virtualHosts/test2.example.com/exportedHeaders/1", + "type": "keyText", + "title": "Auth-User", + "data": "$uid" + }] + }, { + "id": "virtualHosts/test2.example.com/post", + "title": "post", + "type": "postContainer", + "nodes": [] + }, { + "id": "vhostOptions", + "title": "vhostOptions", + "nodes": [{ + "default": -1, + "get": "virtualHosts/test2.example.com/vhostPort", + "id": "virtualHosts/test2.example.com/vhostPort", + "title": "vhostPort", + "type": "int", + "data": -1 + }, { + "default": -1, + "get": "virtualHosts/test2.example.com/vhostHttps", + "id": "virtualHosts/test2.example.com/vhostHttps", + "title": "vhostHttps", + "type": "trool", + "data": -1 + }, { + "default": 0, + "get": "virtualHosts/test2.example.com/vhostMaintenance", + "id": "virtualHosts/test2.example.com/vhostMaintenance", + "title": "vhostMaintenance", + "type": "bool", + "data": 0 + }, { + "get": "virtualHosts/test2.example.com/vhostAliases", + "id": "virtualHosts/test2.example.com/vhostAliases", + "title": "vhostAliases" + }] + }] + }] +}, { + "id": "samlServiceMetaData", + "title": "samlServiceMetaData", + "nodes": [{ + "default": "#PORTAL#/saml/metadata", + "id": "samlEntityID", + "title": "samlEntityID", + "data": "#PORTAL#/saml/metadata" + }, { + "id": "samlServiceSecurity", + "title": "samlServiceSecurity", + "nodes": [{ + "id": "samlServiceSecuritySig", + "title": "samlServiceSecuritySig", + "nodes": [{ + "default": "", + "id": "samlServicePrivateKeySig", + "title": "samlServicePrivateKeySig", + "type": "file", + "data": "" + }, { + "default": "", + "id": "samlServicePrivateKeySigPwd", + "title": "samlServicePrivateKeySigPwd", + "data": "" + }, { + "default": "", + "id": "samlServicePublicKeySig", + "title": "samlServicePublicKeySig", + "type": "file", + "data": "" + }] + }, { + "id": "samlServiceSecurityEnc", + "title": "samlServiceSecurityEnc", + "nodes": [{ + "default": "", + "id": "samlServicePrivateKeyEnc", + "title": "samlServicePrivateKeyEnc", + "type": "file", + "data": "" + }, { + "id": "samlServicePrivateKeyEncPwd", + "title": "samlServicePrivateKeyEncPwd" + }, { + "default": "", + "id": "samlServicePublicKeyEnc", + "title": "samlServicePublicKeyEnc", + "type": "file", + "data": "" + }] + }] + }, { + "id": "samlNameIDFormatMap", + "title": "samlNameIDFormatMap", + "type": "simpleInputContainer", + "nodes": [{ + "default": "mail", + "id": "samlNameIDFormatMapEmail", + "title": "samlNameIDFormatMapEmail", + "data": "mail" + }, { + "default": "mail", + "id": "samlNameIDFormatMapX509", + "title": "samlNameIDFormatMapX509", + "data": "mail" + }, { + "default": "uid", + "id": "samlNameIDFormatMapWindows", + "title": "samlNameIDFormatMapWindows", + "data": "uid" + }, { + "default": "uid", + "id": "samlNameIDFormatMapKerberos", + "title": "samlNameIDFormatMapKerberos", + "data": "uid" + }] + }, { + "id": "samlAuthnContextMap", + "title": "samlAuthnContextMap", + "type": "simpleInputContainer", + "nodes": [{ + "default": 2, + "id": "samlAuthnContextMapPassword", + "title": "samlAuthnContextMapPassword", + "type": "int", + "data": 2 + }, { + "default": 3, + "id": "samlAuthnContextMapPasswordProtectedTransport", + "title": "samlAuthnContextMapPasswordProtectedTransport", + "type": "int", + "data": 3 + }, { + "default": 5, + "id": "samlAuthnContextMapTLSClient", + "title": "samlAuthnContextMapTLSClient", + "type": "int", + "data": 5 + }, { + "default": 4, + "id": "samlAuthnContextMapKerberos", + "title": "samlAuthnContextMapKerberos", + "type": "int", + "data": 4 + }] + }, { + "id": "samlOrganization", + "title": "samlOrganization", + "type": "simpleInputContainer", + "nodes": [{ + "default": "Example", + "id": "samlOrganizationDisplayName", + "title": "samlOrganizationDisplayName", + "data": "Example" + }, { + "default": "Example", + "id": "samlOrganizationName", + "title": "samlOrganizationName", + "data": "Example" + }, { + "default": "http://www.example.com", + "id": "samlOrganizationURL", + "title": "samlOrganizationURL", + "data": "http://www.example.com" + }] + }, { + "id": "samlSPSSODescriptor", + "title": "samlSPSSODescriptor", + "nodes": [{ + "default": 1, + "id": "samlSPSSODescriptorAuthnRequestsSigned", + "title": "samlSPSSODescriptorAuthnRequestsSigned", + "type": "bool", + "data": 1 + }, { + "default": 1, + "id": "samlSPSSODescriptorWantAssertionsSigned", + "title": "samlSPSSODescriptorWantAssertionsSigned", + "type": "bool", + "data": 1 + }, { + "id": "samlSPSSODescriptorSingleLogoutService", + "title": "samlSPSSODescriptorSingleLogoutService", + "nodes": [{ + "default": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/proxySingleLogout;#PORTAL#/saml/proxySingleLogoutReturn", + "id": "samlSPSSODescriptorSingleLogoutServiceHTTPRedirect", + "title": "samlSPSSODescriptorSingleLogoutServiceHTTPRedirect", + "type": "samlService", + "data": ["urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", "#PORTAL#/saml/proxySingleLogout", "#PORTAL#/saml/proxySingleLogoutReturn"] + }, { + "default": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/proxySingleLogout;#PORTAL#/saml/proxySingleLogoutReturn", + "id": "samlSPSSODescriptorSingleLogoutServiceHTTPPost", + "title": "samlSPSSODescriptorSingleLogoutServiceHTTPPost", + "type": "samlService", + "data": ["urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", "#PORTAL#/saml/proxySingleLogout", "#PORTAL#/saml/proxySingleLogoutReturn"] + }, { + "default": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/proxySingleLogoutSOAP;", + "id": "samlSPSSODescriptorSingleLogoutServiceSOAP", + "title": "samlSPSSODescriptorSingleLogoutServiceSOAP", + "type": "samlService", + "data": ["urn:oasis:names:tc:SAML:2.0:bindings:SOAP", "#PORTAL#/saml/proxySingleLogoutSOAP", ""] + }] + }, { + "id": "samlSPSSODescriptorAssertionConsumerService", + "title": "samlSPSSODescriptorAssertionConsumerService", + "nodes": [{ + "default": "1;0;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact;#PORTAL#/saml/proxySingleSignOnArtifact", + "id": "samlSPSSODescriptorAssertionConsumerServiceHTTPArtifact", + "title": "samlSPSSODescriptorAssertionConsumerServiceHTTPArtifact", + "type": "samlAssertion", + "data": ["1", "0", "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact", "#PORTAL#/saml/proxySingleSignOnArtifact"] + }, { + "default": "0;1;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/proxySingleSignOnPost", + "id": "samlSPSSODescriptorAssertionConsumerServiceHTTPPost", + "title": "samlSPSSODescriptorAssertionConsumerServiceHTTPPost", + "type": "samlAssertion", + "data": ["0", "1", "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", "#PORTAL#/saml/proxySingleSignOnPost"] + }] + }, { + "id": "samlSPSSODescriptorArtifactResolutionService", + "title": "samlSPSSODescriptorArtifactResolutionService", + "nodes": [{ + "default": "1;0;urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/artifact", + "id": "samlSPSSODescriptorArtifactResolutionServiceArtifact", + "title": "samlSPSSODescriptorArtifactResolutionServiceArtifact", + "type": "samlAssertion", + "data": ["1", "0", "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", "#PORTAL#/saml/artifact"] + }] + }] + }, { + "id": "samlIDPSSODescriptor", + "title": "samlIDPSSODescriptor", + "nodes": [{ + "default": 1, + "id": "samlIDPSSODescriptorWantAuthnRequestsSigned", + "title": "samlIDPSSODescriptorWantAuthnRequestsSigned", + "type": "bool", + "data": 1 + }, { + "id": "samlIDPSSODescriptorSingleSignOnService", + "title": "samlIDPSSODescriptorSingleSignOnService", + "nodes": [{ + "default": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/singleSignOn;", + "id": "samlIDPSSODescriptorSingleSignOnServiceHTTPRedirect", + "title": "samlIDPSSODescriptorSingleSignOnServiceHTTPRedirect", + "type": "samlService", + "data": ["urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", "#PORTAL#/saml/singleSignOn", ""] + }, { + "default": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/singleSignOn;", + "id": "samlIDPSSODescriptorSingleSignOnServiceHTTPPost", + "title": "samlIDPSSODescriptorSingleSignOnServiceHTTPPost", + "type": "samlService", + "data": ["urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", "#PORTAL#/saml/singleSignOn", ""] + }, { + "default": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact;#PORTAL#/saml/singleSignOnArtifact;", + "id": "samlIDPSSODescriptorSingleSignOnServiceHTTPArtifact", + "title": "samlIDPSSODescriptorSingleSignOnServiceHTTPArtifact", + "type": "samlService", + "data": ["urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact", "#PORTAL#/saml/singleSignOnArtifact", ""] + }, { + "default": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/singleSignOnSOAP;", + "id": "samlIDPSSODescriptorSingleSignOnServiceSOAP", + "title": "samlIDPSSODescriptorSingleSignOnServiceSOAP", + "type": "samlService", + "data": ["urn:oasis:names:tc:SAML:2.0:bindings:SOAP", "#PORTAL#/saml/singleSignOnSOAP", ""] + }] + }, { + "id": "samlIDPSSODescriptorSingleLogoutService", + "title": "samlIDPSSODescriptorSingleLogoutService", + "nodes": [{ + "default": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/singleLogout;#PORTAL#/saml/singleLogoutReturn", + "id": "samlIDPSSODescriptorSingleLogoutServiceHTTPRedirect", + "title": "samlIDPSSODescriptorSingleLogoutServiceHTTPRedirect", + "type": "samlService", + "data": ["urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", "#PORTAL#/saml/singleLogout", "#PORTAL#/saml/singleLogoutReturn"] + }, { + "default": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/singleLogout;#PORTAL#/saml/singleLogoutReturn", + "id": "samlIDPSSODescriptorSingleLogoutServiceHTTPPost", + "title": "samlIDPSSODescriptorSingleLogoutServiceHTTPPost", + "type": "samlService", + "data": ["urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", "#PORTAL#/saml/singleLogout", "#PORTAL#/saml/singleLogoutReturn"] + }, { + "default": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/singleLogoutSOAP;", + "id": "samlIDPSSODescriptorSingleLogoutServiceSOAP", + "title": "samlIDPSSODescriptorSingleLogoutServiceSOAP", + "type": "samlService", + "data": ["urn:oasis:names:tc:SAML:2.0:bindings:SOAP", "#PORTAL#/saml/singleLogoutSOAP", ""] + }] + }, { + "id": "samlIDPSSODescriptorArtifactResolutionService", + "title": "samlIDPSSODescriptorArtifactResolutionService", + "nodes": [{ + "default": "1;0;urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/artifact", + "id": "samlIDPSSODescriptorArtifactResolutionServiceArtifact", + "title": "samlIDPSSODescriptorArtifactResolutionServiceArtifact", + "type": "samlAssertion", + "data": ["1", "0", "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", "#PORTAL#/saml/artifact"] + }] + }] + }, { + "id": "samlAttributeAuthorityDescriptor", + "title": "samlAttributeAuthorityDescriptor", + "nodes": [{ + "id": "samlAttributeAuthorityDescriptorAttributeService", + "title": "samlAttributeAuthorityDescriptorAttributeService", + "nodes": [{ + "default": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/AA/SOAP;", + "id": "samlAttributeAuthorityDescriptorAttributeServiceSOAP", + "title": "samlAttributeAuthorityDescriptorAttributeServiceSOAP", + "type": "samlService", + "data": ["urn:oasis:names:tc:SAML:2.0:bindings:SOAP", "#PORTAL#/saml/AA/SOAP", ""] + }] + }] + }, { + "id": "samlAdvanced", + "title": "samlAdvanced", + "nodes": [{ + "default": "lemonldapidp", + "id": "samlIdPResolveCookie", + "title": "samlIdPResolveCookie", + "data": "lemonldapidp" + }, { + "default": 1, + "id": "samlMetadataForceUTF8", + "title": "samlMetadataForceUTF8", + "type": "bool", + "data": 1 + }, { + "id": "samlStorage", + "title": "samlStorage" + }, { + "id": "samlStorageOptions", + "title": "samlStorageOptions", + "type": "keyTextContainer", + "nodes": [] + }, { + "default": 600, + "id": "samlRelayStateTimeout", + "title": "samlRelayStateTimeout", + "type": "int", + "data": 600 + }, { + "default": 0, + "id": "samlUseQueryStringSpecific", + "title": "samlUseQueryStringSpecific", + "type": "bool", + "data": 0 + }, { + "id": "samlCommonDomainCookie", + "title": "samlCommonDomainCookie", + "type": "simpleInputContainer", + "nodes": [{ + "default": 0, + "id": "samlCommonDomainCookieActivation", + "title": "samlCommonDomainCookieActivation", + "type": "bool", + "data": 0 + }, { + "id": "samlCommonDomainCookieDomain", + "title": "samlCommonDomainCookieDomain" + }, { + "id": "samlCommonDomainCookieReader", + "title": "samlCommonDomainCookieReader" + }, { + "id": "samlCommonDomainCookieWriter", + "title": "samlCommonDomainCookieWriter" + }] + }] + }] +}, { + "id": "samlIDPMetaDataNodes", + "template": "samlIDPMetaDataNode", + "title": "samlIDPMetaDataNodes", + "type": "samlIDPMetaDataNodeContainer", + "nodes": [] +}, { + "id": "samlSPMetaDataNodes", + "template": "samlSPMetaDataNode", + "title": "samlSPMetaDataNodes", + "type": "samlSPMetaDataNodeContainer", + "nodes": [] +}, { + "id": "cfgLog", + "title": "cfgLog", + "data": "Log" +}]