Commit c759234a authored by Yadd's avatar Yadd
Browse files

"New virtual host" (not finished)

parent 11ed0e26
...@@ -43,7 +43,7 @@ sub unserialize { ...@@ -43,7 +43,7 @@ sub unserialize {
while ( my ( $k, $v ) = each(%$fields) ) { while ( my ( $k, $v ) = each(%$fields) ) {
$v =~ s/^'(.*)'$/$1/s; $v =~ s/^'(.*)'$/$1/s;
if ( $k =~ if ( $k =~
/^(?:exportedVars|locationRules|groups|exportedHeaders|macros|globalStorageOptions)$/ /^(?:exportedVars|locationRules|groups|exportedHeaders|macros|globalStorageOptions|notificationStorageOptions)$/
and $v ||= {} and $v ||= {}
and not ref($v) ) and not ref($v) )
{ {
......
...@@ -117,8 +117,9 @@ function rules(id){ ...@@ -117,8 +117,9 @@ function rules(id){
$('#newrb').css('display',''); $('#newrb').css('display','');
} }
function rulesRoot(id){ function rulesRoot(id){
currentId=id;
display('default','Lemonldap::NG Manager'); display('default','Lemonldap::NG Manager');
$('#newrbr').css('display',''); $('#newrbr').css('display','block');
} }
function reloadAuthParams() { function reloadAuthParams() {
setlmdata(currentId,$('#authText').attr('value')); setlmdata(currentId,$('#authText').attr('value'));
...@@ -161,6 +162,14 @@ function newKey(){ ...@@ -161,6 +162,14 @@ function newKey(){
}); });
return false; return false;
} }
function newRuleR(){
var newIdValue=newId(currentId);
simpleTreeCollection[0].addNode(newIdValue,text4newKey,function(d,s){
$('>span',s).attr('onClick','rules("'+newIdValue+'")').attr('name',text4newKey).attr('value',value4newKey).attr('id','text_'+newIdValue);
rules(newIdValue);
});
return false;
}
function newRule(){ function newRule(){
var newIdValue=newId(currentId); var newIdValue=newId(currentId);
simpleTreeCollection[0].newNodeAfter(newIdValue,text4newKey,function(d,s){ simpleTreeCollection[0].newNodeAfter(newIdValue,text4newKey,function(d,s){
...@@ -173,6 +182,12 @@ function delKey(){ ...@@ -173,6 +182,12 @@ function delKey(){
$('#'+currentId).prev().remove(); $('#'+currentId).prev().remove();
$('#'+currentId).remove(); $('#'+currentId).remove();
} }
function newVh(name){
var vhId='li_'+myB64('/locationRules/'+name);
simpleTreeCollection[0].newAjaxNodeIn($('#li_L3ZpcnR1YWxIb3N0cw2'),vhId,name,scriptname+'?type=new&node=virtualHosts/'+name,function(d,s){
$('>span',s).attr('name',name).attr('help','default').attr('id','text_'+vhId);
});
}
function uploadConf(){ function uploadConf(){
$.ajax({ $.ajax({
type:"POST", type:"POST",
...@@ -207,3 +222,35 @@ function uploadConf(){ ...@@ -207,3 +222,35 @@ function uploadConf(){
} }
}); });
} }
/* Warning, it's not a real base64 */
function myB64(s) {
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i=0;
var res="";
var s2="";
while (i < s.length) {
chr1 = s.charCodeAt(i++);
chr2 = s.charCodeAt(i++);
chr3 = s.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
res+=keyStr.charAt(enc1)+keyStr.charAt(enc2);
if (isNaN(chr2)) {
res+='2';
break;
}
res+=keyStr.charAt(enc3);
if (isNaN(chr3)) {
res+='1';
break;
}
res+=keyStr.charAt(enc4);
if(i==s.length) {
res+='0';
}
}
return res;
}
...@@ -50,6 +50,10 @@ var scriptname='<TMPL_VAR NAME="SCRIPT_NAME">';var imagepath='<TMPL_VAR NAME="DI ...@@ -50,6 +50,10 @@ var scriptname='<TMPL_VAR NAME="SCRIPT_NAME">';var imagepath='<TMPL_VAR NAME="DI
<lang en="Apply" fr="Appliquer" /> <lang en="Apply" fr="Appliquer" />
</button> </button>
<button id="bnewvh" onclick="newVh('test25.example.com');return false;" class="ui-state-default ui-corner-all">
<lang en="New virtual host" fr="Nouvel hôte virtuel" />
</button>
<button id="newkbr" style="display:none;" onclick="newKeyR();return false;" class="ui-state-default ui-corner-all"> <button id="newkbr" style="display:none;" onclick="newKeyR();return false;" class="ui-state-default ui-corner-all">
<lang en="New key" fr="Nouvelle clef" /> <lang en="New key" fr="Nouvelle clef" />
</button> </button>
......
...@@ -431,12 +431,16 @@ $.fn.simpleTree = function(opt){ ...@@ -431,12 +431,16 @@ $.fn.simpleTree = function(opt){
}; };
TREE.addNode = function(id, text, callback) TREE.addNode = function(id, text, callback)
{
TREE.newNodeIn(TREE.getSelected(),id,text,callback);
};
TREE.newNodeIn = function(node, id, text, callback)
{ {
var temp_node = $('<li><ul><li id="'+id+'"><span>'+text+'</span></li></ul></li>'); var temp_node = $('<li><ul><li id="'+id+'"><span>'+text+'</span></li></ul></li>');
TREE.setTreeNodes(temp_node); TREE.setTreeNodes(temp_node,true);
dragNode_destination = TREE.getSelected(); destination = node;
dragNode_source = $('.doc-last',temp_node); dragNode_source = $('.doc-last',temp_node);
TREE.moveNodeToFolder(dragNode_destination); TREE.moveNodeToFolder(destination);
temp_node.remove(); temp_node.remove();
if(typeof(callback) == 'function') if(typeof(callback) == 'function')
{ {
...@@ -445,18 +449,20 @@ $.fn.simpleTree = function(opt){ ...@@ -445,18 +449,20 @@ $.fn.simpleTree = function(opt){
}; };
TREE.newNodeAfter = function(id, text, callback) TREE.newNodeAfter = function(id, text, callback)
{ {
var temp_node = $('<li><ul><li id="'+id+'"><span>'+text+'</span></li></u></li>'); TREE.newNodeIn(TREE.getSelected().parent().parent(),id,text,callback);
};
TREE.newAjaxNodeIn = function(node,id,text,url,callback)
{
var temp_node = $('<li><ul><li id="'+id+'"><span>'+text+'</span><ul class="ajax"><li id="new">.{url:'+url+'}</li></ul></li></ul></li>');
TREE.setTreeNodes(temp_node,true); TREE.setTreeNodes(temp_node,true);
destination = TREE.getSelected().parent().parent(); destination = node;
dragNode_source = $('.doc-last',temp_node); dragNode_source = $('.folder-close-last',temp_node);
TREE.moveNodeToFolder(destination); TREE.moveNodeToFolder(destination);
temp_node.remove(); temp_node.remove();
if(typeof(callback) == 'function') if(typeof(callback) == 'function')
{ {
callback(dragNode_destination, dragNode_source); callback(dragNode_destination, dragNode_source);
} }
//existing.after(temp_node);
//temp_node.remove();
}; };
TREE.delNode = function(callback) TREE.delNode = function(callback)
{ {
......
...@@ -130,7 +130,16 @@ sub confNode { ...@@ -130,7 +130,16 @@ sub confNode {
# Hash datas # Hash datas
elsif ( $target =~ s/^hash:// ) { elsif ( $target =~ s/^hash:// ) {
my $h = $self->keyToH( $target, $self->conf ); my $h = $self->keyToH( $target, $self->conf );
return unless ($h); unless ($h) {
my $tmp;
unless ( ($tmp) = ( $target =~ /^\/?(.*)\// )
and $h = $self->subDefaultConf()->{$tmp} )
{
$self->lmLog( "$target hash is not defined in configuration",
'error' );
return;
}
}
foreach ( sort keys %$h ) { foreach ( sort keys %$h ) {
if ( ref( $h->{$_} ) ) { if ( ref( $h->{$_} ) ) {
$res .= $self->confNode( "$target/$_", $help, $js ); $res .= $self->confNode( "$target/$_", $help, $js );
...@@ -287,8 +296,8 @@ sub conf { ...@@ -287,8 +296,8 @@ sub conf {
$self->abort( 'Unable to get configuration', $self->abort( 'Unable to get configuration',
$Lemonldap::NG::Common::Conf::msg ) $Lemonldap::NG::Common::Conf::msg )
unless ( $self->{_conf} ); unless ( $self->{_conf} );
if(my $c = $self->param('conf')){ if ( my $c = $self->param('conf') ) {
$self->{_conf}->{$_} = $self->param($_) foreach(split /\s+/,$c); $self->{_conf}->{$_} = $self->param($_) foreach ( split /\s+/, $c );
} }
return $self->{_conf}; return $self->{_conf};
} }
......
...@@ -113,7 +113,7 @@ sub confUpload { ...@@ -113,7 +113,7 @@ sub confUpload {
foreach ( @{ $result->getChildrenByTagName('ignore') } ) { foreach ( @{ $result->getChildrenByTagName('ignore') } ) {
my $node = $_->getAttribute('value'); my $node = $_->getAttribute('value');
$node =~ s/^.*node=(.*?)(?:&.*)?\}$/$1/; $node =~ s/^.*node=(.*?)(?:&.*)?\}$/$1/;
foreach my $k ( $self->findAllConfKeys( $self->corresp( $node, 1 ) ) ) { foreach my $k ( $self->findAllConfKeys( $self->corresp( $node ) ) ) {
my $v = $self->keyToH( $k, $self->conf ); my $v = $self->keyToH( $k, $self->conf );
$v = $self->keyToH( $k, $self->defaultConf ) unless ( defined $v ); $v = $self->keyToH( $k, $self->defaultConf ) unless ( defined $v );
if ( defined $v ) { if ( defined $v ) {
......
...@@ -26,8 +26,10 @@ sub cstruct { ...@@ -26,8 +26,10 @@ sub cstruct {
_nodes => ["hash:/locationRules/$k:rules:rules"], _nodes => ["hash:/locationRules/$k:rules:rules"],
_js => 'rulesRoot' _js => 'rulesRoot'
}, },
headers => headers => {
{ _nodes => ["hash:/exportedHeaders/$k"], _js => 'hashRoot' }, _nodes => ["hash:/exportedHeaders/$k"],
_js => 'hashRoot'
},
} }
} }
); );
...@@ -61,11 +63,9 @@ sub struct { ...@@ -61,11 +63,9 @@ sub struct {
# Displayed nodes depend on authentication/userDB modules choosed # Displayed nodes depend on authentication/userDB modules choosed
_nodes => sub { _nodes => sub {
my $self = shift; my $self = shift;
my $auth = my $auth = $self->conf->{authentication}
$self->conf->{authentication}
|| $self->defaultConf()->{authentication}; || $self->defaultConf()->{authentication};
my $udb = my $udb = $self->conf->{userDB}
$self->conf->{userDB}
|| $self->defaultConf()->{userDB}; || $self->defaultConf()->{userDB};
$auth = lc($auth); $auth = lc($auth);
$udb = lc($udb); $udb = lc($udb);
...@@ -415,6 +415,7 @@ sub defaultConf { ...@@ -415,6 +415,7 @@ sub defaultConf {
cda => '0', cda => '0',
cookieName => 'lemonldap', cookieName => 'lemonldap',
domain => 'example.com', domain => 'example.com',
exportedHeaders => { 'test.example.com' => { 'Auth-User' => '$uid' }, },
exportedVars => { cn => 'cn', mail => 'mail', uid => 'uid', }, exportedVars => { cn => 'cn', mail => 'mail', uid => 'uid', },
globalStorage => 'Apache::Session::File', globalStorage => 'Apache::Session::File',
globalStorageOptions => { globalStorageOptions => {
...@@ -425,6 +426,7 @@ sub defaultConf { ...@@ -425,6 +426,7 @@ sub defaultConf {
ldapBase => 'dc=example,dc=com', ldapBase => 'dc=example,dc=com',
ldapPort => '389', ldapPort => '389',
ldapServer => 'localhost', ldapServer => 'localhost',
locationRules => { 'test.example.com' => { default => 'accept' }, },
managerDn => '', managerDn => '',
managerPassword => '', managerPassword => '',
notification => '0', notification => '0',
...@@ -449,4 +451,11 @@ sub defaultConf { ...@@ -449,4 +451,11 @@ sub defaultConf {
}; };
} }
sub subDefaultConf {
return {
locationRules => { default => 'deny' },
exportedHeaders => { 'Auth-User' => '$uid' },
};
}
1; 1;
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment