gmr,
If you are technical this .80 code modification in paramsprocesserutil
allows you enter in multiple SALTs "|" delimited into
bigbluebutton.properties and it serves up different client directories
for each SALT where directory is just 5-9char of salt. For example
048f5GMBBBd9640ba57e91122288ef38 would serve client from /GMBBB.
Quick and "dirty" way to provision multi salts and serve different
clients. Requires a restart of BBB any time changes are made.
Regards;
Stephen
hostbbb.com
public boolean isChecksumSame(String apiCall, String checksum, String
queryString) {
log.debug("checksum: [{}] ; query string: [{}]", checksum,
queryString);
if (StringUtils.isEmpty(securitySalt)) {
log.warn("Security is disabled in this service. Make sure this is
intentional.");
return true;
}
// handle either checksum as first or middle / end parameter
// TODO: this is hackish - should be done better
queryString = queryString.replace("&checksum=" + checksum, "");
queryString = queryString.replace("checksum=" + checksum + "&", "");
queryString = queryString.replace("checksum=" + checksum, "");
log.debug("query string after checksum removed: [{}]",
queryString);
log.debug("Security Salt: [{}]", securitySalt);
String delims = "[|]+";
String[] tokens = securitySalt.split(delims);
for (int i = 0; i < tokens.length; i++){
String cs = DigestUtils.shaHex(apiCall +
queryString + tokens[i]);
String temp = tokens[i] + " " + cs + " " +
checksum;
log.debug("Check [{}]:[{}]", i, temp );
if ( cs.equals(checksum) == true ) {
log.info("checksumGood: request did pass the checksum security
check");
return true;
}
}
log.debug("checksumError: Failed");
return false;
}
public String getUrlPath(String apiCall, String checksum, String
queryString) {
String urltemp = "/client/BigBlueButton.html";
if (StringUtils.isEmpty(securitySalt)) {
log.warn("urlPath No salt, return default.");
return urltemp;
}
queryString = queryString.replace("&checksum=" + checksum,
"");
queryString = queryString.replace("checksum=" + checksum + "&", "");
queryString = queryString.replace("checksum=" + checksum, "");
String delims = "[|]+";
String[] tokens = securitySalt.split(delims);
for (int i = 0; i < tokens.length; i++){
String cs = DigestUtils.shaHex(apiCall +
queryString + tokens[i]);
String temp = tokens[i] + " " + cs + " " +
checksum;
log.debug("Check [{}]:[{}]", i, temp );
if ( cs.equals(checksum) == true ) {
log.info("checksumGood: urlPath");
String urlpath = "/client/" + tokens[i].substring(5,9)
+ "/" ;
return urlpath;