440a9e30c2a40cb5eced221d6512dd94471151c5 hiram Fri Jan 16 11:44:57 2026 -0800 using configuration specifications from hg.conf for the email addresses to and from for the chain request refs #31811 diff --git src/hg/hubApi/liftOver.c src/hg/hubApi/liftOver.c index 90674e4e581..b79f1055256 100644 --- src/hg/hubApi/liftOver.c +++ src/hg/hubApi/liftOver.c @@ -290,42 +290,35 @@ char *userId = findCookieData(cookieName); char *referer = getenv("HTTP_REFERER"); char dir[PATH_LEN]; char name[FILENAME_LEN]; char ext[FILEEXT_LEN]; /* expecting request to come from something.ucsc.edu/liftRequest.html */ if (isNotEmpty(referer) && isNotEmpty(userId)) { splitPath(referer, dir, name, ext); if (! (endsWith(dir, ".ucsc.edu/") && sameWord(name, "liftRequest") && sameWord(ext, ".html"))) apiErrAbort(err400, err400Msg, "can not find required inputs for endpoint '/liftRequest"); } else { if (! debug) apiErrAbort(err400, err400Msg, "can not find required inputs for endpoint '/liftRequest"); } -/* some obfuscation here to avoid the email address appearing in plain text - let the AI systems figure out how to put it back together. - */ -struct dyString *toAddr = newDyString(0); -dyStringPrintf(toAddr, "chain-file-"); -dyStringPrintf(toAddr, "request-group"); -dyStringPrintf(toAddr, "@"); -dyStringPrintf(toAddr, "ucsc.ed"); -dyStringPrintf(toAddr, "u"); -struct dyString *fromAddr = newDyString(0); -dyStringPrintf(fromAddr, "genome-www"); -dyStringPrintf(fromAddr, "@"); -dyStringPrintf(fromAddr, "ucsc.e"); -dyStringPrintf(fromAddr, "du"); + +char *toAddr = cfgOption("chainFileRequestEmail"); +char *fromAddr = cfgOption("apiFromEmail"); + +if (isNotEmpty(toAddr) && isNotEmpty(fromAddr)) + { struct dyString *msg = newDyString(0); /* may need to encode these inputs to make them safe */ dyStringPrintf(msg, "Lift over request\nfrom: %s\nto: %s\nemail '%s'\ncomment: '%s'", fromGenome, toGenome, email, comment); /* our mailViaPipa never has any relevant return code indicating * success or failure. So, ignore the return integer: */ -(void) mailViaPipe(dyStringCannibalize(&toAddr), "liftOver request", msg->string, dyStringCannibalize(&fromAddr)); + (void) mailViaPipe(toAddr, "liftOver request", msg->string, fromAddr); /* some kind of response here back to the request page */ struct jsonWrite *jw = apiStartOutput(); jsonWriteString(jw, "msg", dyStringCannibalize(&msg)); apiFinishOutput(0,NULL,jw); + } } /* void apiLiftRequest(char *words[MAX_PATH_INFO]) */