예제 #1
0
  public static String generateSetCookie(Cookie cookie) {
    if (cookie == null) {
      throw new IllegalArgumentException("the cookie is null");
    } else {
      StringBuilder sb = new StringBuilder();

      sb.append(cookie.getName()).append('=').append(cookie.getValue());

      if (VerifyUtils.isNotEmpty(cookie.getComment())) {
        sb.append(";Comment=").append(cookie.getComment());
      }

      if (VerifyUtils.isNotEmpty(cookie.getDomain())) {
        sb.append(";Domain=").append(cookie.getDomain());
      }
      if (cookie.getMaxAge() >= 0) {
        sb.append(";Max-Age=").append(cookie.getMaxAge());
      }

      String path = VerifyUtils.isEmpty(cookie.getPath()) ? "/" : cookie.getPath();
      sb.append(";Path=").append(path);

      if (cookie.getSecure()) {
        sb.append(";Secure");
      }

      sb.append(";Version=").append(cookie.getVersion());

      return sb.toString();
    }
  }
예제 #2
0
  protected static void addToRequest(HttpRequest nettyRequest, Request request) {
    for (String key : nettyRequest.getHeaderNames()) {
      Http.Header hd = new Http.Header();
      hd.name = key.toLowerCase();
      hd.values = new ArrayList<String>();
      for (String next : nettyRequest.getHeaders(key)) {
        hd.values.add(next);
      }
      request.headers.put(hd.name, hd);
    }

    String value = nettyRequest.getHeader(COOKIE);
    if (value != null) {
      Set<Cookie> cookies = new CookieDecoder().decode(value);
      if (cookies != null) {
        for (Cookie cookie : cookies) {
          Http.Cookie playCookie = new Http.Cookie();
          playCookie.name = cookie.getName();
          playCookie.path = cookie.getPath();
          playCookie.domain = cookie.getDomain();
          playCookie.secure = cookie.isSecure();
          playCookie.value = cookie.getValue();
          playCookie.httpOnly = cookie.isHttpOnly();
          request.cookies.put(playCookie.name, playCookie);
        }
      }
    }
  }
예제 #3
0
 @Override
 public void addResponseCookie(final Cookie cookie) {
   javax.servlet.http.Cookie c =
       new javax.servlet.http.Cookie(cookie.getName(), cookie.getValue());
   c.setSecure(cookie.isSecure());
   c.setPath(cookie.getPath());
   c.setMaxAge(cookie.getMaxAge());
   c.setHttpOnly(cookie.isHttpOnly());
   c.setComment(cookie.getComment());
   c.setDomain(cookie.getDomain());
   this.response.addCookie(c);
 }
예제 #4
0
  public NewCookie(Cookie cookie, String comment, int maxAge, boolean secure) {
    super(
        cookie == null ? null : cookie.getName(),
        cookie == null ? null : cookie.getValue(),
        cookie == null ? null : cookie.getPath(),
        cookie == null ? null : cookie.getDomain(),
        cookie == null ? DEFAULT_VERSION : cookie.getVersion());

    this.comment = comment;
    this.maxAge = maxAge;
    this.secure = secure;
  }
예제 #5
0
  private String encodeClientSide() {
    StringBuilder sb = new StringBuilder();

    for (Cookie cookie : cookies) {
      if (cookie.getVersion() >= 1) {
        add(sb, '$' + CookieHeaderNames.VERSION, 1);
      }

      add(sb, cookie.getName(), cookie.getValue());

      if (cookie.getPath() != null) {
        add(sb, '$' + CookieHeaderNames.PATH, cookie.getPath());
      }

      if (cookie.getDomain() != null) {
        add(sb, '$' + CookieHeaderNames.DOMAIN, cookie.getDomain());
      }

      if (cookie.getVersion() >= 1) {
        if (!cookie.getPorts().isEmpty()) {
          sb.append('$');
          sb.append(CookieHeaderNames.PORT);
          sb.append((char) HttpConstants.EQUALS);
          sb.append((char) HttpConstants.DOUBLE_QUOTE);
          for (int port : cookie.getPorts()) {
            sb.append(port);
            sb.append((char) HttpConstants.COMMA);
          }
          sb.setCharAt(sb.length() - 1, (char) HttpConstants.DOUBLE_QUOTE);
          sb.append((char) HttpConstants.SEMICOLON);
        }
      }
    }

    if (sb.length() > 0) {
      sb.setLength(sb.length() - 1);
    }

    return sb.toString();
  }
 private static String formatCooke(final Cookie cookie) {
   final StringBuilder buf = new StringBuilder();
   buf.append(cookie.getName());
   buf.append("=\"");
   String v = cookie.getValue();
   if (v != null) {
     if (v.length() > 100) {
       v = v.substring(0, 100) + "...";
     }
     buf.append(v);
   }
   buf.append("\"");
   buf.append(", version:");
   buf.append(Integer.toString(cookie.getVersion()));
   buf.append(", domain:");
   buf.append(cookie.getDomain());
   buf.append(", path:");
   buf.append(cookie.getPath());
   buf.append(", expiry:");
   buf.append(cookie.getExpiryDate());
   return buf.toString();
 }
예제 #7
0
  /**
   * the method called by the DefaultCookiePolicyHandler.
   *
   * @return true if the cookie should be accepted
   */
  public synchronized boolean accept(Cookie cookie, DefaultCookiePolicyHandler h, String server) {
    // set the new values

    name_value_label.setText(cookie.getName() + "=" + cookie.getValue());
    domain_value.setText(cookie.getDomain());
    path_value.setText(cookie.getPath());
    if (cookie.expires() == null) expires_value.setText("never");
    else expires_value.setText(cookie.expires().toString());
    int pos = 2;
    if (cookie.isSecure()) add(secure_note, constr, pos++);
    if (cookie.discard()) add(discard_note, constr, pos++);

    if (cookie instanceof Cookie2) {
      Cookie2 cookie2 = (Cookie2) cookie;

      // set ports list
      if (cookie2.getPorts() != null) {
        ((GridLayout) left_panel.getLayout()).setRows(5);
        left_panel.add(ports_label, 2);
        ((GridLayout) right_panel.getLayout()).setRows(5);
        int[] ports = cookie2.getPorts();
        StringBuffer plist = new StringBuffer();
        plist.append(ports[0]);
        for (int idx = 1; idx < ports.length; idx++) {
          plist.append(", ");
          plist.append(ports[idx]);
        }
        ports_value.setText(plist.toString());
        right_panel.add(ports_value, 2);
      }

      // set comment url
      if (cookie2.getCommentURL() != null) {
        c_url_note.setText("For more info on this cookie see: " + cookie2.getCommentURL());
        add(c_url_note, constr, pos++);
      }

      // set comment
      if (cookie2.getComment() != null) {
        comment_value.setText(cookie2.getComment());
        add(comment_label, constr, pos++);
        add(comment_value, constr, pos++);
      }
    }

    // invalidate all labels, so that new values are displayed correctly

    name_value_label.invalidate();
    domain_value.invalidate();
    ports_value.invalidate();
    path_value.invalidate();
    expires_value.invalidate();
    left_panel.invalidate();
    right_panel.invalidate();
    secure_note.invalidate();
    discard_note.invalidate();
    c_url_note.invalidate();
    comment_value.invalidate();
    invalidate();

    // set default domain test

    domain.setText(cookie.getDomain());

    // display

    setResizable(true);
    pack();
    setResizable(false);
    setLocation(
        (screen.width - getPreferredSize().width) / 2,
        (int) ((screen.height - getPreferredSize().height) / 2 * .7));
    setVisible(true);
    default_focus.requestFocus();

    // wait for user input

    try {
      wait();
    } catch (InterruptedException e) {
    }

    setVisible(false);

    // reset popup

    remove(secure_note);
    remove(discard_note);
    left_panel.remove(ports_label);
    ((GridLayout) left_panel.getLayout()).setRows(4);
    right_panel.remove(ports_value);
    ((GridLayout) right_panel.getLayout()).setRows(4);
    remove(c_url_note);
    remove(comment_label);
    remove(comment_value);

    // handle accept/reject domain buttons

    if (accept_domain) {
      String dom = domain.getText().trim().toLowerCase();

      if (accept) h.addAcceptDomain(dom);
      else h.addRejectDomain(dom);
    }

    return accept;
  }
예제 #8
0
  private String encodeServerSide() {
    StringBuilder sb = new StringBuilder();

    for (Cookie cookie : cookies) {
      add(sb, cookie.getName(), cookie.getValue());

      if (cookie.getMaxAge() >= 0) {
        if (cookie.getVersion() == 0) {
          addUnquoted(
              sb,
              CookieHeaderNames.EXPIRES,
              new HttpHeaderDateFormat()
                  .format(new Date(System.currentTimeMillis() + cookie.getMaxAge() * 1000L)));
        } else {
          add(sb, CookieHeaderNames.MAX_AGE, cookie.getMaxAge());
        }
      }

      if (cookie.getPath() != null) {
        if (cookie.getVersion() > 0) {
          add(sb, CookieHeaderNames.PATH, cookie.getPath());
        } else {
          addUnquoted(sb, CookieHeaderNames.PATH, cookie.getPath());
        }
      }

      if (cookie.getDomain() != null) {
        if (cookie.getVersion() > 0) {
          add(sb, CookieHeaderNames.DOMAIN, cookie.getDomain());
        } else {
          addUnquoted(sb, CookieHeaderNames.DOMAIN, cookie.getDomain());
        }
      }
      if (cookie.isSecure()) {
        sb.append(CookieHeaderNames.SECURE);
        sb.append((char) HttpConstants.SEMICOLON);
      }
      if (cookie.isHttpOnly()) {
        sb.append(CookieHeaderNames.HTTPONLY);
        sb.append((char) HttpConstants.SEMICOLON);
      }
      if (cookie.getVersion() >= 1) {
        if (cookie.getComment() != null) {
          add(sb, CookieHeaderNames.COMMENT, cookie.getComment());
        }

        add(sb, CookieHeaderNames.VERSION, 1);

        if (cookie.getCommentUrl() != null) {
          addQuoted(sb, CookieHeaderNames.COMMENTURL, cookie.getCommentUrl());
        }

        if (!cookie.getPorts().isEmpty()) {
          sb.append(CookieHeaderNames.PORT);
          sb.append((char) HttpConstants.EQUALS);
          sb.append((char) HttpConstants.DOUBLE_QUOTE);
          for (int port : cookie.getPorts()) {
            sb.append(port);
            sb.append((char) HttpConstants.COMMA);
          }
          sb.setCharAt(sb.length() - 1, (char) HttpConstants.DOUBLE_QUOTE);
          sb.append((char) HttpConstants.SEMICOLON);
        }
        if (cookie.isDiscard()) {
          sb.append(CookieHeaderNames.DISCARD);
          sb.append((char) HttpConstants.SEMICOLON);
        }
      }
    }

    if (sb.length() > 0) {
      sb.setLength(sb.length() - 1);
    }

    return sb.toString();
  }