public static boolean isSystemHeaderAndNotGruu(ModifiableRule modifiableRule, String value) { boolean isSettingGruu = false; if(modifiableRule == ModifiableRule.ContactSystem && (value.indexOf("gruu") != -1 || value.indexOf("gr=") != -1)) { isSettingGruu = true; if (logger.isDebugEnabled()) logger.debug("Setting gruu so modifying contact header address is allowed"); } return !isSettingGruu && isSystemHeader(modifiableRule); }
public void removeHeader(String name) { checkCommitted(); String hName = getFullHeaderName(name); if(hName.trim().equalsIgnoreCase(ContactHeader.NAME)) { String header = getHeader(hName); if (isSystemHeaderAndNotGruu(getModifiableRule(hName), header)) { throw new IllegalArgumentException("Cant remove system header[" + hName + "]"); } } else { if (isSystemHeader(getModifiableRule(hName))) { throw new IllegalArgumentException("Cant remove system header[" + hName + "]"); } } if (hName.equalsIgnoreCase("From") || hName.equalsIgnoreCase("To")) { logger.error("Error, can't remove From or To header [" + hName + "]"); throw new IllegalArgumentException( "Cant remove From or To header, see JSR 289 Section 4.1.2"); } String nameToSearch = getCorrectHeaderName(hName); this.message.removeHeader(nameToSearch); }
public void setURI(URI uri) { if(SipServletMessageImpl.isSystemHeader(isModifiable)) { throw new IllegalStateException("this Address is used in a context where it cannot be modified"); } this.getAddress().setURI(((URIImpl) uri).uri); }
public void setDisplayName(String name) { if(SipServletMessageImpl.isSystemHeader(isModifiable)) { throw new IllegalStateException("this Address is used in a context where it cannot be modified"); } try { getAddress().setDisplayName(name); } catch (ParseException e) { throw new IllegalArgumentException("illegal name ", e); } }
/** * Support for GRUU https://github.com/Mobicents/sip-servlets/issues/51 * if the header contains one of the gruu, gr, temp-gruu or pub-gruu, it is allowed to set the Contact Header * as per RFC 5627 */ public static boolean isSystemHeaderAndNotGruu(ModifiableRule modifiableRule, Parameterable parameterable) { boolean isSettingGruu = false; if(modifiableRule == ModifiableRule.ContactSystem && (parameterable.getParameter("gruu") != null || parameterable.getParameter("gr") != null)) { isSettingGruu = true; if (logger.isDebugEnabled()) logger.debug("Setting gruu so modifying contact header address is allowed"); } return !isSettingGruu && isSystemHeader(modifiableRule); }
public void setParameterableHeader(String name, Parameterable param) { checkCommitted(); if(isSystemHeader(getModifiableRule(name))) { throw new IllegalArgumentException(name + " is a system header !"); } try { this.message.setHeader(SipFactoryImpl.headerFactory.createHeader(name, param.toString())); } catch (ParseException e) { throw new IllegalArgumentException("Impossible to set this parameterable header", e); } }
public void removeHeaderInternal(String name, boolean bypassSystemHeaderCheck) { String hName = getFullHeaderName(name); if (logger.isDebugEnabled()) logger.debug("Removing header under name [" + hName + "]"); if (!bypassSystemHeaderCheck && isSystemHeader(getModifiableRule(hName))) { logger.error("Cant remove system header [" + hName + "]"); throw new IllegalArgumentException("Header[" + hName + "] is system header, can't remove it!!!"); } String nameToRemove = getCorrectHeaderName(hName); try { message.removeHeader(nameToRemove); } catch (Exception ex) { throw new IllegalArgumentException("Illegal args supplied ", ex); } }
public void setHeaderInternal(String name, String value, boolean bypassSystemHeaderCheck) { if(name == null) { throw new NullPointerException ("name parameter is null"); } if(value == null) { throw new NullPointerException ("value parameter is null"); } if(!bypassSystemHeaderCheck && isSystemHeader(getModifiableRule(name))) { throw new IllegalArgumentException(name + " is a system header !"); } try { Header header = SipFactory.getInstance().createHeaderFactory() .createHeader(name, value); this.message.setHeader(header); } catch (Exception e) { throw new IllegalArgumentException("Error creating header!", e); } }
throw new NullPointerException ("value parameter is null"); if (isSystemHeader(getModifiableRule(name))) { throw new IllegalArgumentException(name + " is a system header !");
logger.debug("Adding header under name [" + hName + "]"); if (!bypassSystemHeaderCheck && isSystemHeader(getModifiableRule(hName))) {