4898794edd81be5285ea6e544acbedeaeb31bf78
max
  Tue Nov 23 08:10:57 2021 -0800
Fixing pointers to README file for license in all source code files. refs #27614

diff --git src/hg/encode3/encodeDataWarehouse/edwWebXSendFile/edwWebXSendFile.c src/hg/encode3/encodeDataWarehouse/edwWebXSendFile/edwWebXSendFile.c
index 1a66af1..25428ca 100644
--- src/hg/encode3/encodeDataWarehouse/edwWebXSendFile/edwWebXSendFile.c
+++ src/hg/encode3/encodeDataWarehouse/edwWebXSendFile/edwWebXSendFile.c
@@ -1,125 +1,125 @@
 /* edwWebXSendFile - A cgi script for user to download files using xsendfile. */
 
 /* Copyright (C) 2014 The Regents of the University of California 
- * See README in this or parent directory for licensing information. */
+ * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */
 #include "common.h"
 #include "hmac.h"
 #include "cheapcgi.h"
 #include "jksql.h"
 #include "encodeDataWarehouse.h"
 #include "edwLib.h"
 #include "hgConfig.h"
 #include "edwWebXSendFile.h"
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "edwWebXSendFile - A cgi script for user to download files using xsendfile.\n"
   "usage:\n"
   " Run by sending query string like \n"
   "  \"?accession=ENXXXXXXXXX&date=yyyy-mm-dd&user=someone@xyz.com&token=a41b..7a0\" \n"
   " to edwWebXSendFile cgi. \n"
   );
 }
 
 char *edwDataRoot()
 /* Return the encodeDataWarehouse data root directory  */
 {
 return cloneString(cfgOption(CFG_ENCODEDATAWAREHOUSE_DATAROOT));
 }
 
 char *edwKey()
 /* Return the encodeDataWarehouse key  */
 {
 return cloneString(cfgOption(CFG_ENCODEDATAWAREHOUSE_KEY));
 }
 
 char *getLicensePlate()
 /* Return the value of accession in the query string */
 {
 return cloneString(cgiUsualString("accession", ""));
 }
 
 char *getDate()
 /* Return the value of date in the query string */
 {
 return cloneString(cgiUsualString("date", ""));
 }
 
 char *getToken()
 /* Return the value of token in the query string */
 {
 return cloneString(cgiUsualString("token", ""));
 }
 
 char *getUserMail()
 /* Return the value of user (email) in the query string */
 {
 return cloneString(cgiUsualString("user", ""));
 }
 
 char *getFullFileName(char * licensePlate)
 /* Return a complete path given dir and basename of file associated with this licenses plate */
 {
 struct sqlConnection *conn = edwConnect();
 char query[512];
 char *fileName;
 char *fullFileName;
 sqlSafef(query, sizeof(query),
     "select edwFileName from vf where licensePlate = '%s'", licensePlate);
 fileName = sqlQuickString(conn, query);
 fullFileName = strcat(edwDataRoot(), fileName);
 return fullFileName;
 }
 
 char *getBaseName(char *fullFileName)
 /* Return basename part of the full file name */
 {
 return basename(fullFileName);
 }
 
 void xSendFile(char *baseName, char *fullFileName)
 /* send the file out using xsendfile */
 {
 printf("Content-Description: File Transfer\n");
 printf("Content-Disposition: attachment; filename=\"%s\"\n", baseName);
 printf("Content-Transfer-Encoding: binary\n");
 printf("Expires: 0\n");
 printf("Cache-Control: no-store, no-cache, must-revalidate\n");
 printf("Pragma: no-cache\n");
 printf("Content-Length: %lld\n", (long long)fileSize(fullFileName));
 printf("X-Sendfile: %s\n\n", fullFileName);
 }
 
 boolean tokenValid(char *accession, char *date, char *token, char *user)
 /* Check the token to ensure that the query string was created by
  * encodedcc without any modification */ 
 {
 char *hStr=strcat(strcat(date,accession),user);
 char *digest;
 digest=hmacSha1(edwKey(), hStr);
 if (sameString(digest, token))
     return TRUE;
 return FALSE;
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 boolean isFromWeb = cgiIsOnWeb();
 if (!isFromWeb && !cgiSpoof(&argc, argv))
     usage();
 char *lp = getLicensePlate();
 char *tk = getToken();
 char *dt = getDate();
 char *user = getUserMail();
 /* send file out only when the query string was created by encodedcc */
 if ( tokenValid(lp, dt, tk, user) )
     {
     char *xFile = getFullFileName(lp);
     char *bName = getBaseName(xFile);
     xSendFile(bName, xFile);
     }
 return 0;
 }