/** * Check if a stream is allowed to play * * @return true if allowed, false otherwise. */ public boolean checkTicket(IMediaStream stream) { String name = stream.getName(); IClient client = stream.getClient(); if (client == null) { logger.debug("No client, returning ", stream); return false; } String clientQuery = stream.getClient().getQueryStr(); logger.trace( "checkTicket(IMediaStream stream=" + stream + ", String name=" + name + ", String clientQuery=" + clientQuery + ")"); try { Ticket streamingTicket = StringAndTextUtil.getTicket(clientQuery, ticketTool); logger.debug( "Ticket received: " + (streamingTicket != null ? streamingTicket.getId() : "null")); if (streamingTicket != null && isClientAllowed(stream, streamingTicket) && ticketForThisPresentationType(streamingTicket) && doesTicketAllowThisStream(name, streamingTicket)) { logger.info( "checkTicket(IMediaStream stream=" + stream + ", String name=" + name + ", String clientQuery=" + clientQuery + ") successful."); return true; } else { logger.info( "Client not allowed to get content streamed for IMediaStream stream=" + stream + ", String name=" + name + ", String clientQuery=" + clientQuery + ")"); return false; } } catch (IllegallyFormattedQueryStringException e) { logger.warn("Illegally formatted query string [" + clientQuery + "]."); return false; } }