version 1.178.2.19, 2004/04/26 10:37:47
|
version 1.178.2.22, 2004/05/04 10:09:38
|
Line 242 sub TieUserHash {
|
Line 242 sub TieUserHash {
|
# make the history log entry: |
# make the history log entry: |
|
|
|
|
unless ($namespace =~/^nohist\_/ && (scalar @_ > 0)) { |
if (($namespace =~/^nohist\_/) && (scalar @_ > 0)) { |
|
my $args = scalar @_; |
|
Debug(" Opening history: $namespace $args"); |
my $hfh = IO::File->new(">>$proname/$namespace.hist"); |
my $hfh = IO::File->new(">>$proname/$namespace.hist"); |
if($hfh) { |
if($hfh) { |
my $now = time; |
my $now = time; |
Line 788 sub ChangePasswordHandler {
|
Line 790 sub ChangePasswordHandler {
|
# npass - New password. |
# npass - New password. |
|
|
my ($udom,$uname,$upass,$npass)=split(/:/,$tail); |
my ($udom,$uname,$upass,$npass)=split(/:/,$tail); |
chomp($npass); |
|
$upass=&unescape($upass); |
$upass=&unescape($upass); |
$npass=&unescape($npass); |
$npass=&unescape($npass); |
&Debug("Trying to change password for $uname"); |
&Debug("Trying to change password for $uname"); |
Line 1028 sub UpdateResourceHandler {
|
Line 1030 sub UpdateResourceHandler {
|
|
|
my $userinput = "$cmd:$tail"; |
my $userinput = "$cmd:$tail"; |
|
|
my $fname=$tail; |
my $fname= $tail; # This allows interactive testing |
|
|
|
|
my $ownership=ishome($fname); |
my $ownership=ishome($fname); |
if ($ownership eq 'not_owner') { |
if ($ownership eq 'not_owner') { |
if (-e $fname) { |
if (-e $fname) { |
Line 1188 sub UnsubscribeHandler {
|
Line 1192 sub UnsubscribeHandler {
|
my $client = shift; |
my $client = shift; |
my $userinput= "$cmd:$tail"; |
my $userinput= "$cmd:$tail"; |
|
|
my $fname = $tail; |
my ($fname) = $tail; |
|
|
|
Debug("Unsubscribing $fname"); |
if (-e $fname) { |
if (-e $fname) { |
Reply($client, &unsub($client,$fname,$clientip), $userinput); |
Debug("Exists"); |
|
Reply($client, &unsub($fname,$clientip), $userinput); |
} else { |
} else { |
Failure($client, "not_found\n", $userinput); |
Failure($client, "not_found\n", $userinput); |
} |
} |
return 1; |
return 1; |
} |
} |
RegisterHandler("unusb", \&UnsubscribeHandler, 0, 1, 0); |
RegisterHandler("unsub", \&UnsubscribeHandler, 0, 1, 0); |
|
|
# Subscribe to a resource |
# Subscribe to a resource |
# |
# |
Line 1845 sub DumpWithRegexp {
|
Line 1852 sub DumpWithRegexp {
|
} |
} |
RegisterHandler("dump", \&DumpWithRegexp, 0, 1, 0); |
RegisterHandler("dump", \&DumpWithRegexp, 0, 1, 0); |
|
|
# Store an aitem in any resource meta data(?) or database with |
# Store a set of key=value pairs associated with a versioned name. |
# versioning? |
|
# |
# |
# Parameters: |
# Parameters: |
# $cmd - Request command keyword. |
# $cmd - Request command keyword. |
Line 1912 sub StoreHandler {
|
Line 1918 sub StoreHandler {
|
} |
} |
RegisterHandler("store", \&StoreHandler, 0, 1, 0); |
RegisterHandler("store", \&StoreHandler, 0, 1, 0); |
# |
# |
# Restore a prior version of a resource. |
# Dump out all versions of a resource that has key=value pairs associated |
|
# with it for each version. These resources are built up via the store |
|
# command. |
# |
# |
# Parameters: |
# Parameters: |
# $cmd - Command keyword. |
# $cmd - Command keyword. |
Line 1926 RegisterHandler("store", \&StoreHandler,
|
Line 1934 RegisterHandler("store", \&StoreHandler,
|
# 1 indicating the caller should not yet exit. |
# 1 indicating the caller should not yet exit. |
# Side-effects: |
# Side-effects: |
# Writes a reply to the client. |
# Writes a reply to the client. |
|
# The reply is a string of the following shape: |
|
# version=current&version:keys=k1:k2...&1:k1=v1&1:k2=v2... |
|
# Where the 1 above represents version 1. |
|
# this continues for all pairs of keys in all versions. |
|
# |
|
# |
|
# |
# |
# |
sub RestoreHandler { |
sub RestoreHandler { |
my $cmd = shift; |
my $cmd = shift; |
Line 2422 sub TmpGetHandler {
|
Line 2437 sub TmpGetHandler {
|
my $client = shift; |
my $client = shift; |
my $userinput = "$cmd:$id"; |
my $userinput = "$cmd:$id"; |
|
|
chomp($id); |
|
$id=~s/\W/\_/g; |
$id=~s/\W/\_/g; |
my $store; |
my $store; |
my $execdir=$perlvar{'lonDaemons'}; |
my $execdir=$perlvar{'lonDaemons'}; |
Line 2690 sub ProcessRequest {
|
Line 2705 sub ProcessRequest {
|
my ($command, $tail) = split(/:/, $userinput, 2); |
my ($command, $tail) = split(/:/, $userinput, 2); |
chomp($command); |
chomp($command); |
chomp($tail); |
chomp($tail); |
|
$tail =~ s/(\r)//; # This helps people debugging with e.g. telnet. |
|
|
Debug("Command received: $command, encoded = $wasenc"); |
Debug("Command received: $command, encoded = $wasenc"); |
|
|
Line 3818 sub propath {
|
Line 3834 sub propath {
|
|
|
sub ishome { |
sub ishome { |
my $author=shift; |
my $author=shift; |
|
Debug("ishome: $author"); |
$author=~s/\/home\/httpd\/html\/res\/([^\/]*)\/([^\/]*).*/$1\/$2/; |
$author=~s/\/home\/httpd\/html\/res\/([^\/]*)\/([^\/]*).*/$1\/$2/; |
|
Debug(" after big regsub: $author"); |
my ($udom,$uname)=split(/\//,$author); |
my ($udom,$uname)=split(/\//,$author); |
|
Debug(" domain: $udom user: $uname"); |
my $proname=propath($udom,$uname); |
my $proname=propath($udom,$uname); |
|
Debug(" path = $proname"); |
if (-e $proname) { |
if (-e $proname) { |
return 'owner'; |
return 'owner'; |
} else { |
} else { |
Line 4286 sub addline {
|
Line 4306 sub addline {
|
my $expr='^'.$hostid.':'.$ip.':'; |
my $expr='^'.$hostid.':'.$ip.':'; |
$expr =~ s/\./\\\./g; |
$expr =~ s/\./\\\./g; |
my $sh; |
my $sh; |
|
Debug("Looking for $expr"); |
if ($sh=IO::File->new("$fname.subscription")) { |
if ($sh=IO::File->new("$fname.subscription")) { |
while (my $subline=<$sh>) { |
while (my $subline=<$sh>) { |
if ($subline !~ /$expr/) {$contents.= $subline;} else {$found=1;} |
Debug("addline: line: $subline"); |
|
if ($subline !~ /$expr/) { |
|
$contents.= $subline; |
|
} else { |
|
Debug("Found $subline"); |
|
$found=1; |
|
} |
} |
} |
$sh->close(); |
$sh->close(); |
} |
} |
$sh=IO::File->new(">$fname.subscription"); |
$sh=IO::File->new(">$fname.subscription"); |
if ($contents) { print $sh $contents; } |
if ($contents) { print $sh $contents; } |
if ($newline) { print $sh $newline; } |
if ($newline) { |
|
Debug("Appending $newline"); |
|
print $sh $newline; |
|
} |
$sh->close(); |
$sh->close(); |
return $found; |
return $found; |
} |
} |
Line 4367 sub chatadd {
|
Line 4397 sub chatadd {
|
sub unsub { |
sub unsub { |
my ($fname,$clientip)=@_; |
my ($fname,$clientip)=@_; |
my $result; |
my $result; |
|
my $unsubs = 0; # Number of successful unsubscribes: |
|
|
|
|
|
# An old way subscriptions were handled was to have a |
|
# subscription marker file: |
|
|
|
Debug("Attempting unlink of $fname.$clientname"); |
if (unlink("$fname.$clientname")) { |
if (unlink("$fname.$clientname")) { |
$result="ok\n"; |
$unsubs++; # Successful unsub via marker file. |
} else { |
} |
$result="not_subscribed\n"; |
|
} |
# The more modern way to do it is to have a subscription list |
|
# file: |
|
|
if (-e "$fname.subscription") { |
if (-e "$fname.subscription") { |
my $found=&addline($fname,$clientname,$clientip,''); |
my $found=&addline($fname,$clientname,$clientip,''); |
if ($found) { $result="ok\n"; } |
if ($found) { |
|
$unsubs++; |
|
} |
|
} |
|
|
|
# If either or both of these mechanisms succeeded in unsubscribing a |
|
# resource we can return ok: |
|
|
|
if($unsubs) { |
|
$result = "ok\n"; |
} else { |
} else { |
if ($result != "ok\n") { $result="not_subscribed\n"; } |
$result = "not_subscribed\n"; |
} |
} |
|
|
return $result; |
return $result; |
} |
} |
|
|
Line 4429 sub thisversion {
|
Line 4478 sub thisversion {
|
|
|
sub subscribe { |
sub subscribe { |
my ($userinput,$clientip)=@_; |
my ($userinput,$clientip)=@_; |
|
chomp($userinput); |
my $result; |
my $result; |
my ($cmd,$fname)=split(/:/,$userinput); |
my ($cmd,$fname)=split(/:/,$userinput); |
my $ownership=&ishome($fname); |
my $ownership=&ishome($fname); |
|
Debug("subscribe: Owner = $ownership file: '$fname'"); |
if ($ownership eq 'owner') { |
if ($ownership eq 'owner') { |
# explitly asking for the current version? |
# explitly asking for the current version? |
unless (-e $fname) { |
unless (-e $fname) { |
|
Debug("subscribe - does not exist"); |
my $currentversion=¤tversion($fname); |
my $currentversion=¤tversion($fname); |
if (&thisversion($fname)==$currentversion) { |
if (&thisversion($fname)==$currentversion) { |
if ($fname=~/^(.+)\.\d+\.(\w+(?:\.meta)*)$/) { |
if ($fname=~/^(.+)\.\d+\.(\w+(?:\.meta)*)$/) { |
Line 4450 sub subscribe {
|
Line 4502 sub subscribe {
|
} |
} |
} |
} |
if (-e $fname) { |
if (-e $fname) { |
|
Debug("subscribe - exists"); |
if (-d $fname) { |
if (-d $fname) { |
$result="directory\n"; |
$result="directory\n"; |
} else { |
} else { |