Пример #1
0
  /**
   * This method checks if the ticket is given to the same IP address as the client
   *
   * @param stream the stream
   * @param streamingTicket the ticket
   * @return true if the ip is the same for the ticket and the user
   */
  private boolean isClientAllowed(IMediaStream stream, Ticket streamingTicket) {
    String ipOfClient = stream.getClient().getIp();

    boolean isAllowed = (ipOfClient != null) && (ipOfClient.equals(streamingTicket.getIpAddress()));
    logger.debug(
        "isClientAllowed - ipOfClient: "
            + ipOfClient
            + ", streamingTicket.getIpAddress(): "
            + streamingTicket.getIpAddress()
            + ", isAllowed: "
            + isAllowed);
    return isAllowed;
  }
Пример #2
0
 /**
  * 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;
   }
 }
Пример #3
0
 private boolean doesTicketAllowThisStream(String name, Ticket streamingTicket) {
   name = clean(name);
   for (String resource : streamingTicket.getResources()) {
     if (resource.contains(name)) {
       return true;
     }
   }
   return false;
 }
Пример #4
0
 private boolean ticketForThisPresentationType(Ticket streamingTicket) {
   return streamingTicket.getType().equals(presentationType);
 }