Ejemplo n.º 1
0
 private void sendEmails(Notification notification) {
   String subjectText =
       EmailHelper.createSubject(notification.project, notification.subject.toString());
   for (String email : notification.emails) {
     String text = createText(email, notification);
     emailSender.sendEmail(notification.project, email, subjectText, text);
   }
 }
Ejemplo n.º 2
0
  @Override
  public ModelAndView resolveException(
      HttpServletRequest request,
      HttpServletResponse response,
      Object object,
      Exception exception) {
    if (request.getRequestURI().endsWith(".ajax")) {
      return ajaxFailure(request, response, exception);
    } else {
      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
      QueryProblem queryProblem = QueryProblem.NONE;
      if (exception instanceof EuropeanaQueryException) {
        queryProblem = ((EuropeanaQueryException) exception).getFetchProblem();
      }
      Boolean debugMode = Boolean.valueOf(debug);
      String stackTrace = getStackTrace(exception);
      if (queryProblem == QueryProblem.NONE || queryProblem == QueryProblem.SOLR_UNREACHABLE) {

        if (!debugMode) { // don't send email in debugMode
          emailSender
              .create("exception")
              .setFrom(fromEmail)
              .setTo(toEmail)
              .setSubject(queryProblem.getFragment())
              .set("hostName", request.getServerName())
              .set("request", ControllerUtil.formatFullRequestUrl(request))
              .set("stackTrace", stackTrace)
              .set("cacheUrl", cacheUrl)
              .set("portalName", portalName)
              .set("portalTheme", portalTheme)
              .set("portalColor", portalColor)
              .set("portalDisplayName", portalDisplayName)
              .set("agent", request.getHeader("User-Agent"))
              .set("referer", request.getHeader("referer"))
              .send();
        } else {
          log.error(stackTrace);
        }
      }
      String errorMessage = MessageFormat.format("errorMessage={0}", queryProblem.toString());
      clickStreamLogger.logCustomUserAction(
          request, ClickStreamLogger.UserAction.EXCEPTION_CAUGHT, errorMessage);
      ModelAndView mav = new ModelAndView("exception");
      mav.addObject("debug", debugMode);
      mav.addObject("interfaceLanguage", ControllerUtil.getLocale(request));
      mav.addObject("cacheUrl", cacheUrl);
      mav.addObject("portalName", portalName);
      mav.addObject("portalTheme", portalTheme);
      mav.addObject("portalColor", portalColor);
      mav.addObject("portalDisplayName", portalDisplayName);
      mav.addObject("queryProblem", queryProblem);
      mav.addObject("exception", exception);
      mav.addObject("stackTrace", stackTrace);
      mav.addObject("includedMacros", includedMacros);
      return mav;
    }
  }
 public void run() {
   LOG.trace("ENTER");
   running = true;
   while (running) {
     Email email;
     while ((email = outbox.poll()) != null) {
       LOG.debug("Got e-mail [" + email + "] from outbox");
       try {
         LOG.debug(
             "Looking for a thread for this e-mail server ["
                 + email.getEmailFrom().getAccountServer()
                 + "]");
         if (serverHandlers.containsKey(email.getEmailFrom())) {
           LOG.debug("A Thread for the server already exists!");
           if (serverHandlers.get(email.getEmailFrom()).isAlive()) {
             LOG.debug("And it is alive! Adding this e-mail to the thread outbox.");
             serverHandlers.get(email.getEmailFrom()).sendEmail(email);
           } else {
             LOG.debug(
                 "And it is dead! Creating a new thread for server ["
                     + email.getEmailFrom().getAccountServer()
                     + "]...");
             EmailSender sender = new EmailSender(email.getEmailFrom(), this);
             sender.sendEmail(email);
             sender.start();
             serverHandlers.put(email.getEmailFrom(), sender);
           }
         } else {
           LOG.debug(
               "No thread found! Creating a new thread for server ["
                   + email.getEmailFrom().getAccountServer()
                   + "]...");
           EmailSender sender = new EmailSender(email.getEmailFrom(), this);
           sender.sendEmail(email);
           sender.start();
           serverHandlers.put(email.getEmailFrom(), sender);
         }
       } catch (Exception e) {
         // This exception may happens because the account was deleted.
         LOG.debug("Error retrieving account details", e);
       }
     }
     Utils.sleep_ignoreInterrupts(5000);
   }
   LOG.trace("EXIT");
 }
  public MessageDistributor(Element element, boolean senderIsMailUser) {

    // Captures the info from the message
    getMessageParams(element);
    // Gets the sender info
    SocketInfo sender = getSenderInfo(senderIsMailUser);

    // Getting the destination list for this message
    Vector<SocketInfo> usersVector = getDestinationList(element, senderIsMailUser);
    int groupSize = usersVector.size();

    String many = "";
    if (groupSize > 1 || groupSize == 0) {
      many = "s";
    }

    LogWriter.write("INFO: Enviando mensaje a " + groupSize + " usuario" + many);

    // In this cycle, the message is sent to every user in the destination list
    for (SocketInfo destination : usersVector) {
      SocketChannel sock =
          destination.getSock() != null ? destination.getSock().getChannel() : null;

      // If the POS user is online
      if (sock != null) {
        Element message = new Element("Message");
        Element root = new Element("root");

        message.addContent(root);
        root.addContent(addColumn(dateString));
        root.addContent(addColumn(hourString));
        root.addContent(addColumn(sender.getGroupName()));
        root.addContent(addColumn(subject));
        root.addContent(addColumn(body));
        root.addContent(addColumn("f"));

        Document doc = new Document((Element) message.clone());
        // Sending message to POS user online
        try {
          SocketWriter.write(sock, doc);
          LogWriter.write(
              "INFO: [Envio a Punto de Venta] Remitente {"
                  + sender.getLogin()
                  + "} - Destino: "
                  + destination.getLogin()
                  + " - Asunto: "
                  + subject);
        } catch (ClosedChannelException e) {
          LogWriter.write(
              "INFO: El colocador " + destination.getLogin() + " no se encuentra en linea.");
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }

      // Sending message to pop users (admin users)
      if (!senderIsMailUser) {
        EmailSender mail = new EmailSender();
        mail.setFrom(Pop3Handler.getUser() + "@" + Pop3Handler.getHost());
        mail.setSender(destination.getEmail());
        mail.setSubject(sender.getLogin() + "," + subject);
        mail.setDate(date);
        mail.setMessage(body);
        mail.setSenderFullName(sender.getNames());
        mail.setWorkStation(sender.getWsName());
        mail.send();
        LogWriter.write(
            "INFO: [Envio a Cuenta de Correo] Remitente {"
                + sender.getLogin()
                + "} - Destino: "
                + destination.getLogin()
                + " - Asunto: "
                + subject);
      }

      // if destination user is offline
      if (!control || (control && (sock != null))) {
        String isValid = groupSize > 0 ? "true" : "false";
        String[] argsArray = {
          String.valueOf(destination.getUid()),
          String.valueOf(sender.getUid()),
          dateString,
          hourString,
          subject.trim(),
          body.trim(),
          isValid,
          String.valueOf(ConfigFileHandler.getMessageLifeTimeForClients()),
          String.valueOf(control),
          String.valueOf(lifeTime)
        };

        QueryRunner qRunner = null;
        try {
          LogWriter.write(
              "INFO: Almacenando registro de mensaje en la base de datos ["
                  + destination.getLogin()
                  + "]");
          qRunner = new QueryRunner("INS0003", argsArray);
          qRunner.setAutoCommit(false);
          qRunner.executeSQL();
          qRunner.commit();
        } catch (SQLNotFoundException e) {
          qRunner.rollback();
          LogWriter.write(
              "ERROR: No se pudo almacenar mensaje en la base de datos. Instruccion SQL no encontrada");
          e.printStackTrace();
        } catch (SQLBadArgumentsException e) {
          qRunner.rollback();
          LogWriter.write(
              "ERROR: No se pudo almacenar mensaje en la base de datos. Argumentos Invalidos");
          e.printStackTrace();
        } catch (SQLException e) {
          qRunner.rollback();
          LogWriter.write("ERROR: No se pudo almacenar mensaje en la base de datos. Excepcion SQL");
          e.printStackTrace();
        } finally {
          qRunner.closeStatement();
          qRunner.setAutoCommit(true);
        }
      }
    }
  }
  // This method sends an alarm message to the CoMeet group when the system fails
  public static void sendAlarm(String subject, String body) {
    Vector<SocketInfo> usersVector = SocketServer.getAllClients("COMEET");
    int groupSize = usersVector.size();
    Date date = Calendar.getInstance().getTime();
    String dateString = formatDate.format(date);
    String hourString = formatHour.format(date);

    for (SocketInfo destination : usersVector) {
      EmailSender mail = new EmailSender();
      mail.setFrom(Pop3Handler.getUser() + "@" + Pop3Handler.getHost());
      mail.setSender(destination.getEmail());
      mail.setSubject("[Error CoMeet]: " + subject);
      mail.setDate(date);
      mail.setMessage(body);
      mail.setSenderFullName("Sistema CoMeet");
      mail.setWorkStation("Servidor");
      mail.send();
      LogWriter.write(
          "INFO: Enviando notificacion de alarma a {"
              + destination.getEmail()
              + "} / Asunto: ["
              + subject
              + "]");

      String isValid = groupSize > 0 ? "true" : "false";
      String[] argsArray = {
        String.valueOf(destination.getUid()),
        String.valueOf(0),
        dateString,
        hourString,
        subject.trim(),
        body.trim(),
        isValid,
        String.valueOf(ConfigFileHandler.getMessageLifeTimeForClients()),
        "false",
        "-1"
      };

      QueryRunner qRunner = null;
      try {
        LogWriter.write("INFO: Almacenando registro de alarma en la base de datos...");
        qRunner = new QueryRunner("INS0003", argsArray);
        qRunner.setAutoCommit(false);
        qRunner.executeSQL();
        qRunner.commit();
      } catch (SQLNotFoundException e) {
        qRunner.rollback();
        LogWriter.write(
            "ERROR: No se pudo almacenar mensaje en la base de datos. Instruccion SQL no encontrada");
        e.printStackTrace();
      } catch (SQLBadArgumentsException e) {
        qRunner.rollback();
        LogWriter.write(
            "ERROR: No se pudo almacenar mensaje en la base de datos. Argumentos Invalidos");
        e.printStackTrace();
      } catch (SQLException e) {
        qRunner.rollback();
        LogWriter.write("ERROR: No se pudo almacenar mensaje en la base de datos. Excepcion SQL");
        e.printStackTrace();
      } finally {
        qRunner.closeStatement();
        qRunner.setAutoCommit(true);
      }
    }
  }