예제 #1
0
  @Override
  public String runMacro(HTTPRequest httpReq, String parm) {
    final java.util.Map<String, String> parms = parseParms(parm);
    boolean finalCondition = false;
    for (String key : parms.keySet()) {
      if (key.length() == 0) continue;
      final String equals = parms.get(key);
      boolean not = false;
      boolean thisCondition = true;
      boolean startswith = false;
      boolean inside = false;
      boolean endswith = false;
      if (key.startsWith("||")) key = key.substring(2);
      if (key.startsWith("<")) {
        startswith = true;
        key = key.substring(1);
      }
      if (key.startsWith(">")) {
        endswith = true;
        key = key.substring(1);
      }
      if (key.startsWith("*")) {
        inside = true;
        key = key.substring(1);
      }

      if (key.startsWith("!")) {
        key = key.substring(1);
        not = true;
      }
      final String check = httpReq.getUrlParameter(key);
      if (not) {
        if ((check == null) && (equals.length() == 0)) thisCondition = false;
        else if (check == null) thisCondition = true;
        else if (startswith) thisCondition = !check.startsWith(equals);
        else if (endswith) thisCondition = !check.endsWith(equals);
        else if (inside) thisCondition = !(check.indexOf(equals) >= 0);
        else if (!check.equalsIgnoreCase(equals)) thisCondition = true;
        else thisCondition = false;
      } else {
        if ((check == null) && (equals.length() == 0)) thisCondition = true;
        else if (check == null) thisCondition = false;
        else if (startswith) thisCondition = check.startsWith(equals);
        else if (endswith) thisCondition = check.endsWith(equals);
        else if (inside) thisCondition = (check.indexOf(equals) >= 0);
        else if (!check.equalsIgnoreCase(equals)) thisCondition = false;
        else thisCondition = true;
      }
      finalCondition = finalCondition || thisCondition;
    }
    if (finalCondition) return "true";
    return "false";
  }
예제 #2
0
 @Override
 public String runMacro(HTTPRequest httpReq, String parm, HTTPResponse httpResp) {
   final java.util.Map<String, String> parms = parseParms(parm);
   final String last = httpReq.getUrlParameter("GOVERNMENT");
   if (parms.containsKey("RESET")) {
     if (last != null) httpReq.removeUrlParameter("GOVERNMENT");
     return "";
   }
   int lastID = -1;
   for (final ClanGovernment G : CMLib.clans().getStockGovernments()) {
     if ((last == null)
         || ((last.length() > 0) && (CMath.s_int(last) == lastID) && (G.getID() != lastID))) {
       httpReq.addFakeUrlParameter("GOVERNMENT", Integer.toString(G.getID()));
       return "";
     }
     lastID = G.getID();
   }
   httpReq.addFakeUrlParameter("GOVERNMENT", "");
   if (parms.containsKey("EMPTYOK")) return "<!--EMPTY-->";
   return " @break@";
 }
예제 #3
0
  @Override
  public String runMacro(HTTPRequest httpReq, String parm) {
    final java.util.Map<String, String> parms = parseParms(parm);
    final String last = httpReq.getUrlParameter("JOURNAL");
    if (last == null) return " @break@";
    boolean securityOverride = false;
    if ((Thread.currentThread() instanceof CWThread)
        && CMath.s_bool(((CWThread) Thread.currentThread()).getConfig().getMiscProp("ADMIN"))
        && parms.containsKey("ALLFORUMJOURNALS")) securityOverride = true;

    final MOB M = Authenticate.getAuthenticatedMob(httpReq);
    if ((!securityOverride)
        && (CMLib.journals().isArchonJournalName(last))
        && ((M == null) || (!CMSecurity.isASysOp(M)))) return " @break@";

    final Clan setClan = CMLib.clans().getClan(httpReq.getUrlParameter("CLAN"));
    final JournalsLibrary.ForumJournal journal = CMLib.journals().getForumJournal(last, setClan);
    if (journal == null) return " @break@";

    final StringBuffer str = new StringBuffer("");
    if (parms.containsKey("ISSMTPFORWARD")) {
      @SuppressWarnings("unchecked")
      final TreeMap<String, JournalsLibrary.SMTPJournal> set =
          (TreeMap<String, JournalsLibrary.SMTPJournal>)
              Resources.getResource("SYSTEM_SMTP_JOURNALS");
      final JournalsLibrary.SMTPJournal entry =
          (set != null) ? set.get(last.toUpperCase().trim()) : null;
      final String email =
          ((M != null) && (M.playerStats() != null) && (M.playerStats().getEmail() != null))
              ? M.playerStats().getEmail()
              : "";
      str.append(
              ((entry != null) && (email.length() > 0)) ? Boolean.toString(entry.forward) : "false")
          .append(", ");
    }

    if (parms.containsKey("ISSMTPSUBSCRIBER")) {
      final Map<String, List<String>> lists =
          Resources.getCachedMultiLists("mailinglists.txt", true);
      final List<String> mylist = lists.get(last);
      str.append(
              ((mylist != null) && (M != null))
                  ? Boolean.toString(mylist.contains(M.Name()))
                  : "false")
          .append(", ");
    }

    if (parms.containsKey("SMTPADDRESS")) {
      @SuppressWarnings("unchecked")
      final TreeMap<String, JournalsLibrary.SMTPJournal> set =
          (TreeMap<String, JournalsLibrary.SMTPJournal>)
              Resources.getResource("SYSTEM_SMTP_JOURNALS");
      final JournalsLibrary.SMTPJournal entry =
          (set != null) ? set.get(last.toUpperCase().trim()) : null;
      if ((entry != null) && (entry.forward)) {
        str.append(entry.name.replace(' ', '_') + "@" + CMProps.getVar(CMProps.Str.MUDDOMAIN))
            .append(", ");
      }
    }

    if (parms.containsKey("CANADMIN") || parms.containsKey("ISADMIN"))
      str.append("" + journal.authorizationCheck(M, ForumJournalFlags.ADMIN)).append(", ");

    if (parms.containsKey("CANPOST"))
      str.append("" + journal.authorizationCheck(M, ForumJournalFlags.POST)).append(", ");

    if (parms.containsKey("CANREAD"))
      str.append("" + journal.authorizationCheck(M, ForumJournalFlags.READ)).append(", ");

    if (parms.containsKey("CANREPLY"))
      str.append("" + journal.authorizationCheck(M, ForumJournalFlags.REPLY)).append(", ");

    if (parms.containsKey("ADMINMASK")) str.append("" + journal.adminMask()).append(", ");

    if (parms.containsKey("READMASK")) str.append("" + journal.readMask()).append(", ");

    if (parms.containsKey("POSTMASK")) str.append("" + journal.postMask()).append(", ");

    if (parms.containsKey("REPLYMASK")) str.append("" + journal.replyMask()).append(", ");

    if (parms.containsKey("ID")) str.append("" + journal.NAME()).append(", ");

    if (parms.containsKey("NAME")) str.append("" + journal.NAME()).append(", ");

    if (parms.containsKey("EXPIRE")) str.append("").append(", ");

    final JournalsLibrary.JournalSummaryStats stats = CMLib.journals().getJournalStats(journal);
    if (stats == null) return " @break@";

    if (parms.containsKey("POSTS")) str.append("" + stats.posts).append(", ");

    if (parms.containsKey("THREADS")) str.append("" + stats.threads).append(", ");

    if (parms.containsKey("SHORTDESC")) str.append("" + stats.shortIntro).append(", ");

    if (parms.containsKey("LONGDESC")) str.append("" + stats.longIntro).append(", ");

    if (parms.containsKey("IMAGEPATH")) {
      if ((stats.imagePath == null) || (stats.imagePath.trim().length() == 0))
        str.append(L("images/lilcm.jpg")).append(", ");
      else str.append("" + stats.threads).append(", ");
    }

    String strstr = str.toString();
    if (strstr.endsWith(", ")) strstr = strstr.substring(0, strstr.length() - 2);
    return clearWebMacros(strstr);
  }