--- loncom/lonnet/perl/lonnet.pm 2009/08/23 03:57:20 1.1022 +++ loncom/lonnet/perl/lonnet.pm 2009/08/24 20:08:40 1.1023 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1022 2009/08/23 03:57:20 raeburn Exp $ +# $Id: lonnet.pm,v 1.1023 2009/08/24 20:08:40 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -958,44 +958,21 @@ sub idput { } } -# ------------------------------------------------ dump from domain db files - +# ------------------------------dump from db file owned by domainconfig user sub dump_dom { - my ($namespace,$udom,$uhome,$regexp,$range)=@_; + my ($namespace,$udom,$regexp,$range)=@_; if (!$udom) { $udom=$env{'user.domain'}; - if (defined(&domain($udom,'primary'))) { - $uhome=&domain($udom,'primary'); - } else { - undef($uhome); - } - } else { - if (!$uhome) { - if (defined(&domain($udom,'primary'))) { - $uhome=&domain($udom,'primary'); - } - } } my %returnhash; - if ($udom && $uhome && ($uhome ne 'no_host')) { - if ($regexp) { - $regexp=&escape($regexp); - } else { - $regexp='.'; - } - my $rep=&reply("dumpdom:$udom:$namespace:$regexp:$range",$uhome); - my @pairs=split(/\&/,$rep); - foreach my $item (@pairs) { - my ($key,$value)=split(/=/,$item,2); - $key = &unescape($key); - next if ($key =~ /^error: 2 /); - $returnhash{$key}=&thaw_unescape($value); - } + if ($udom) { + my $uname = &get_domainconfiguser($udom); + %returnhash = &dump($namespace,$udom,$uname,$regexp,$range); } return %returnhash; } -# ------------------------------------------- get items from domain db files +# ------------------------------------------ get items from domain db files sub get_dom { my ($namespace,$storearr,$udom,$uhome)=@_; @@ -1069,70 +1046,40 @@ sub put_dom { } } -# -------------------------------------- newput for items in domain db files - +# --------------------- newput for items in db file owned by domainconfig user sub newput_dom { - my ($namespace,$storehash,$udom,$uhome) = @_; + my ($namespace,$storehash,$udom) = @_; my $result; if (!$udom) { $udom=$env{'user.domain'}; - if (defined(&domain($udom,'primary'))) { - $uhome=&domain($udom,'primary'); - } else { - undef($uhome); - } - } else { - if (!$uhome) { - if (defined(&domain($udom,'primary'))) { - $uhome=&domain($udom,'primary'); - } - } } - if ($udom && $uhome && ($uhome ne 'no_host')) { - my $items=''; - if (ref($storehash) eq 'HASH') { - foreach my $key (keys(%$storehash)) { - $items.=&escape($key).'='.&freeze_escape($$storehash{$key}).'&'; - } - $items=~s/\&$//; - $result = &reply("newputdom:$udom:$namespace:$items",$uhome); - } - } else { - &logthis("put_dom failed - no homeserver and/or domain"); + if ($udom) { + my $uname = &get_domainconfiguser($udom); + $result = &newput($namespace,$storehash,$udom,$uname); } return $result; } +# --------------------- delete for items in db file owned by domainconfig user sub del_dom { - my ($namespace,$storearr,$udom,$uhome)=@_; + my ($namespace,$storearr,$udom)=@_; if (ref($storearr) eq 'ARRAY') { - my $items=''; - foreach my $item (@$storearr) { - $items.=&escape($item).'&'; - } - $items=~s/\&$//; if (!$udom) { $udom=$env{'user.domain'}; - if (defined(&domain($udom,'primary'))) { - $uhome=&domain($udom,'primary'); - } else { - undef($uhome); - } - } else { - if (!$uhome) { - if (defined(&domain($udom,'primary'))) { - $uhome=&domain($udom,'primary'); - } - } } - if ($udom && $uhome && ($uhome ne 'no_host')) { - return &reply("deldom:$udom:$namespace:$items",$uhome); - } else { - &logthis("del_dom failed - no homeserver and/or domain"); + if ($udom) { + my $uname = &get_domainconfiguser($udom); + return &del($namespace,$storearr,$udom,$uname); } } } +# ----------------------------------construct domainconfig user for a domain +sub get_domainconfiguser { + my ($udom) = @_; + return $udom.'-domainconfig'; +} + sub retrieve_inst_usertypes { my ($udom) = @_; my (%returnhash,@order);