--- loncom/lond 2023/05/22 21:10:56 1.577 +++ loncom/lond 2023/12/22 18:50:55 1.580 @@ -2,7 +2,7 @@ # The LearningOnline Network # lond "LON Daemon" Server (port "LOND" 5663) # -# $Id: lond,v 1.577 2023/05/22 21:10:56 raeburn Exp $ +# $Id: lond,v 1.580 2023/12/22 18:50:55 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -65,7 +65,7 @@ my $DEBUG = 0; # Non zero to ena my $status=''; my $lastlog=''; -my $VERSION='$Revision: 1.577 $'; #' stupid emacs +my $VERSION='$Revision: 1.580 $'; #' stupid emacs my $remoteVERSION; my $currenthostid="default"; my $currentdomainid; @@ -5265,9 +5265,9 @@ sub encrypted_get_domain_handler { # 0 - Exit. # Side effects: # The reply will contain an LTI itemID, if the signed LTI payload -# could be verified using the consumer key and the shared secret -# available for that key (for the itemID) for either the course or domain, -# depending on values for cnum and context. The reply is encrypted before +# could be verified using the consumer key and the shared secret +# available for that key (for the itemID) for either the course or domain, +# depending on values for cnum and context. The reply is encrypted before # being written to $client. # sub lti_handler { @@ -5308,21 +5308,25 @@ sub lti_handler { ®ister_handler("lti", \<i_handler, 1, 1, 0); # -# LTI data for launch payload (received encrypted) are unencrypted and +# Data for LTI payload (received encrypted) are unencrypted and # then signed with the appropriate key and secret, before re-encrypting -# for sending as the signed payload to the client (caller lonnet::sign_lti()). +# the signed payload which is sent to the client for unencryption by +# the caller: lonnet::sign_lti()) before dispatch either to a web browser +# (launch) or to a remote web service (roster, logout, or grade). # # Parameters: # $cmd - Command request keyword (signlti). # $tail - Tail of the command. This is a colon-separated list # consisting of the domain, coursenum (if for an External -# Tool defined in a course), crstool (true if defined in -# a course), escaped launch URL, numeric ID of external tool +# Tool defined in a course), crsdef (true if defined in +# a course), type (linkprot or lti) +# context (launch, roster, logout, or grade), +# escaped launch URL, numeric ID of external tool, # version number for encryption key (if tool's LTI secret was -# encrypted before storing), post (true if signed data are -# to be returned from Net::OAuth, as a post_body), -# a frozen hash of LTI launch parameters, and a frozen hash -# of LTI config data (i.e., method => signature method). +# encrypted before storing), a frozen hash of LTI launch +# parameters, and a frozen hash of LTI information, +# (e.g., method => 'HMAC-SHA1', +# respfmt => 'to_authorization_header'). # $client - File descriptor open on the client. # Returns: # 1 - Continue processing. @@ -5330,8 +5334,8 @@ sub lti_handler { # Side effects: # The reply will contain the LTI payload, as & separated key=value pairs, # where value is itself a frozen hash, if the required key and secret -# for the apecific tool ID are available. The payload data are retrived from -# a call to Lond::sign_params(), and the reply is encrypted before being +# for the specific tool ID are available. The payload data are retrieved from +# a call to Lond::sign_lti_payload(), and the reply is encrypted before being # written to $client. # sub sign_lti_handler { @@ -5339,13 +5343,14 @@ sub sign_lti_handler { my $userinput = "$cmd:$tail"; - my ($cdom,$cnum,$crstool,$escurl,$idx,$keynum,$post,$paramsref,$inforef) = split(/:/,$tail); + my ($cdom,$cnum,$crsdef,$type,$context,$escurl, + $ltinum,$keynum,$paramsref,$inforef) = split(/:/,$tail); my $url = &unescape($escurl); my $params = &Apache::lonnet::thaw_unescape($paramsref); my $info = &Apache::lonnet::thaw_unescape($inforef); my $res = - &LONCAPA::Lond::sign_params($cdom,$cnum,$crstool,$url,$idx,$keynum, - $post,$perlvar{'lonVersion'},$params,$info); + &LONCAPA::Lond::sign_lti_payload($cdom,$cnum,$crsdef,$type,$context,$url,$ltinum, + $keynum,$perlvar{'lonVersion'},$params,$info); my $result; if (ref($res) eq 'HASH') { foreach my $key (keys(%{$res})) { @@ -8875,6 +8880,9 @@ sub currentversion { if (-e $ulsdir) { if(-d $ulsdir) { if (opendir(LSDIR,$ulsdir)) { + if (-e $fname) { + $version=0; + } my $ulsfn; while ($ulsfn=readdir(LSDIR)) { # see if this is a regular file (ignore links produced earlier) 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.