version 1.1022, 2009/08/23 03:57:20
|
version 1.1023, 2009/08/24 20:08:40
|
Line 958 sub idput {
|
Line 958 sub idput {
|
} |
} |
} |
} |
|
|
# ------------------------------------------------ dump from domain db files |
# ------------------------------dump from db file owned by domainconfig user |
|
|
sub dump_dom { |
sub dump_dom { |
my ($namespace,$udom,$uhome,$regexp,$range)=@_; |
my ($namespace,$udom,$regexp,$range)=@_; |
if (!$udom) { |
if (!$udom) { |
$udom=$env{'user.domain'}; |
$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; |
my %returnhash; |
if ($udom && $uhome && ($uhome ne 'no_host')) { |
if ($udom) { |
if ($regexp) { |
my $uname = &get_domainconfiguser($udom); |
$regexp=&escape($regexp); |
%returnhash = &dump($namespace,$udom,$uname,$regexp,$range); |
} 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); |
|
} |
|
} |
} |
return %returnhash; |
return %returnhash; |
} |
} |
|
|
# ------------------------------------------- get items from domain db files |
# ------------------------------------------ get items from domain db files |
|
|
sub get_dom { |
sub get_dom { |
my ($namespace,$storearr,$udom,$uhome)=@_; |
my ($namespace,$storearr,$udom,$uhome)=@_; |
Line 1069 sub put_dom {
|
Line 1046 sub put_dom {
|
} |
} |
} |
} |
|
|
# -------------------------------------- newput for items in domain db files |
# --------------------- newput for items in db file owned by domainconfig user |
|
|
sub newput_dom { |
sub newput_dom { |
my ($namespace,$storehash,$udom,$uhome) = @_; |
my ($namespace,$storehash,$udom) = @_; |
my $result; |
my $result; |
if (!$udom) { |
if (!$udom) { |
$udom=$env{'user.domain'}; |
$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')) { |
if ($udom) { |
my $items=''; |
my $uname = &get_domainconfiguser($udom); |
if (ref($storehash) eq 'HASH') { |
$result = &newput($namespace,$storehash,$udom,$uname); |
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"); |
|
} |
} |
return $result; |
return $result; |
} |
} |
|
|
|
# --------------------- delete for items in db file owned by domainconfig user |
sub del_dom { |
sub del_dom { |
my ($namespace,$storearr,$udom,$uhome)=@_; |
my ($namespace,$storearr,$udom)=@_; |
if (ref($storearr) eq 'ARRAY') { |
if (ref($storearr) eq 'ARRAY') { |
my $items=''; |
|
foreach my $item (@$storearr) { |
|
$items.=&escape($item).'&'; |
|
} |
|
$items=~s/\&$//; |
|
if (!$udom) { |
if (!$udom) { |
$udom=$env{'user.domain'}; |
$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')) { |
if ($udom) { |
return &reply("deldom:$udom:$namespace:$items",$uhome); |
my $uname = &get_domainconfiguser($udom); |
} else { |
return &del($namespace,$storearr,$udom,$uname); |
&logthis("del_dom failed - no homeserver and/or domain"); |
|
} |
} |
} |
} |
} |
} |
|
|
|
# ----------------------------------construct domainconfig user for a domain |
|
sub get_domainconfiguser { |
|
my ($udom) = @_; |
|
return $udom.'-domainconfig'; |
|
} |
|
|
sub retrieve_inst_usertypes { |
sub retrieve_inst_usertypes { |
my ($udom) = @_; |
my ($udom) = @_; |
my (%returnhash,@order); |
my (%returnhash,@order); |