316230834978cf23c7ae8199514283626819fa28
hiram
Mon May 13 14:15:21 2019 -0700
keep protected data out of view refs #18869
diff --git src/hg/hubApi/hubApi.c src/hg/hubApi/hubApi.c
index 9c1623c..25d5805 100644
--- src/hg/hubApi/hubApi.c
+++ src/hg/hubApi/hubApi.c
@@ -218,31 +218,33 @@
safef(errorPrint, sizeof(errorPrint), " ERROR: %s", errorString);
}
boolean superChild = tdbIsSuperTrackChild(tdb);
char *genome = NULL;
if (hub)
genome = hub->genomeList->name;
struct dyString *extraDyFlags = newDyString(128);
if (debug)
dyStringAppend(extraDyFlags, ";debug=1");
if (jsonOutputArrays)
dyStringAppend(extraDyFlags, ";jsonOutputArrays=1");
char *extraFlags = dyStringCannibalize(&extraDyFlags);
-if (db)
+if (trackDbSetting(tdb, "tableBrowser"))
+ hPrintf("
%s : %s <protected data>\n", tdb->track, tdb->type);
+else if (db)
{
if (hub)
{
char urlReference[2048];
safef(urlReference, sizeof(urlReference), " (sample data)%s\n", urlPrefix, hub->url, genome, tdb->track, extraFlags, errorPrint);
if (tdb->parent)
hPrintf("%s: %s subtrack of parent: %s%s\n", tdb->track, tdb->type, tdb->parent->track, urlReference);
else
hPrintf("%s: %s%s\n", tdb->track, tdb->type, urlReference);
}
else
{
char urlReference[2048];
safef(urlReference, sizeof(urlReference), " (sample data)%s\n", urlPrefix, db, tdb->track, extraFlags, errorPrint);
@@ -287,31 +289,33 @@
safef(errorPrint, sizeof(errorPrint), " : ERROR: %s", errorString);
}
char countsMessage[512];
countsMessage[0] = 0;
if (chromCount > 0 || itemCount > 0)
{
if (allowedBigBedType(tdb->type))
safef(countsMessage, sizeof(countsMessage), " : %ld chroms : %ld item count ", chromCount, itemCount);
else if (startsWithWord("bigWig", tdb->type))
safef(countsMessage, sizeof(countsMessage), " : %ld chroms : %ld bases covered ", chromCount, itemCount);
else
safef(countsMessage, sizeof(countsMessage), " : %ld chroms : %ld count ", chromCount, itemCount);
}
-if (isSupportedType(tdb->type))
+if (trackDbSetting(tdb, "tableBrowser"))
+ hPrintf(" %s: %s protected data\n", tdb->track, tdb->type);
+else if (isSupportedType(tdb->type))
{
char urlReference[2048];
safef(urlReference, sizeof(urlReference), "(sample data)%s\n", urlPrefix, hub->url, genome, tdb->track, extraFlags, errorPrint);
if (allowedBigBedType(tdb->type))
hPrintf(" %s: %s%s%s\n", tdb->track, tdb->type, countsMessage, urlReference);
else if (startsWithWord("bigWig", tdb->type))
hPrintf(" %s: %s%s%s\n", tdb->track, tdb->type, countsMessage, urlReference);
else
hPrintf(" %s: %s%s%s\n", tdb->track, tdb->type, countsMessage, urlReference);
}
else
{
if (allowedBigBedType(tdb->type))
hPrintf(" %s: %s%s\n", tdb->track, tdb->type, countsMessage);
@@ -520,37 +524,44 @@
else
hPrintf("%s: %s : subtrack of parent: %s\n", tdbEl->track, tdbEl->type, tdbEl->parent->track);
}
hashCountTrack(tdbEl, countTracks);
if (tdbEl->subtracks)
showSubTracks(hub, db, tdbEl, countTracks, chromName, chromSize, errorString);
}
}
hPrintf(" \n");
}
static void trackSettings(struct trackDb *tdb, struct hash *countTracks)
/* process the settingsHash for a trackDb, recursive when subtracks */
{
hPrintf(" \n");
+boolean protectedData = FALSE;
+if (trackDbSetting(tdb, "tableBrowser"))
+ protectedData = TRUE;
struct hashEl *hel;
struct hashCookie hc = hashFirst(tdb->settingsHash);
while ((hel = hashNext(&hc)) != NULL)
{
if (sameWord("track", hel->name))
continue; // already output in header
- if (isEmpty((char *)hel->val))
+ if (sameWord("tableBrowser", hel->name))
+ hPrintf(" - protectedData: 'true'
\n");
+ else if (protectedData && sameWord("bigDataUrl", hel->name))
+ hPrintf(" - bigDataUrl: <protected data>
\n");
+ else if (isEmpty((char *)hel->val))
hPrintf(" - %s: <empty>
\n", hel->name);
else
hPrintf(" - %s: '%s'
\n", hel->name, (char *)hel->val);
}
if (tdb->subtracks)
{
struct trackDb *tdbEl = NULL;
if (debug)
hPrintf(" - has %d subtrack(s)
\n", slCount(tdb->subtracks));
for (tdbEl = tdb->subtracks; tdbEl; tdbEl = tdbEl->next)
{
hPrintf("- subtrack: %s of parent: %s : type: '%s' (TBD: sample data)
\n", tdbEl->track, tdbEl->parent->track, tdbEl->type);
hashCountTrack(tdbEl, countTracks);
trackSettings(tdbEl, countTracks);
}
@@ -639,45 +650,53 @@
* char *bigDataIndex, struct hash *countTracks,
* char *chromName, unsigned chromSize)
*/
static void countOneTdb(char *db, struct trackDb *tdb,
struct hash *countTracks, char *chromName, unsigned chromSize,
char *errorString)
/* for this tdb in this db, count it up and provide a sample */
{
char *bigDataUrl = trackDbSetting(tdb, "bigDataUrl");
boolean compositeContainer = tdbIsComposite(tdb);
boolean compositeView = tdbIsCompositeView(tdb);
boolean superChild = tdbIsSuperTrackChild(tdb);
boolean depthSearch = cartUsualBoolean(cart, "depthSearch", FALSE);
+boolean protectedData = FALSE;
+if (trackDbSetting(tdb, "tableBrowser"))
+ protectedData = TRUE;
hashCountTrack(tdb, countTracks);
if (compositeContainer)
hPrintf(" - %s: %s : composite track container has %d subtracks
\n", tdb->track, tdb->type, slCount(tdb->subtracks));
else if (compositeView)
hPrintf(" - %s: %s : composite view of parent: %s
\n", tdb->track, tdb->type, tdb->parent->track);
else if (superChild)
{
if (isSupportedType(tdb->type))
sampleUrl(NULL, db, tdb, errorString);
else
hPrintf(" - %s: %s : superTrack child of parent: %s
\n", tdb->track, tdb->type, tdb->parent->track);
}
else if (! depthSearch && bigDataUrl)
+ {
+ if (protectedData)
+ hPrintf(" - %s: %s : <protected data>
\n", tdb->track, tdb->type);
+ else
hPrintf(" - %s: %s : %s
\n", tdb->track, tdb->type, bigDataUrl);
+ }
else
{
if (isSupportedType(tdb->type))
sampleUrl(NULL, db, tdb, errorString);
else
hPrintf(" - %s: %s
\n", tdb->track, tdb->type);
}
if (allTrackSettings)
{
hPrintf(" \n");
trackSettings(tdb, countTracks); /* show all settings */
hPrintf("
\n");
}
else if (tdb->subtracks)