Ejemplo n.º 1
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;
   }
 }
  @Exposed(method = "GET", url = "streams")
  public ArrayList<String> getStreams() {
    Pattern p = Pattern.compile("^\\[.+\\].+");

    ArrayList<String> streams = new ArrayList<String>();
    for (IMediaStream s : appInstance.getStreams().getStreams()) {
      String name = s.getName();
      Matcher m = p.matcher(name);

      if (name.equalsIgnoreCase(liveStreamName())) continue;
      if (name.equalsIgnoreCase(previewStreamName())) continue;
      if (m.matches()) continue;

      streams.add(name);
    }

    /* list content */
    File contentDir = new File(appInstance.getStreamStorageDir());
    for (final File fileEntry : contentDir.listFiles()) {
      if (!fileEntry.isDirectory()) {
        String ext = Utils.fileExtension(fileEntry.getName());
        if (ext.equalsIgnoreCase("mp4")
            || ext.equalsIgnoreCase("mov")
            || ext.equalsIgnoreCase("3gp")
            || ext.equalsIgnoreCase("m4v")) {
          streams.add("mp4:" + fileEntry.getName());
        } else if (ext.equalsIgnoreCase("flv")) {
          streams.add("flv:" + fileEntry.getName());
        } else if (ext.equalsIgnoreCase("mp3")) {
          streams.add("mp3:" + fileEntry.getName());
        }
      }
    }

    return streams;
  }