Package railo.runtime.functions.owasp

Source Code of railo.runtime.functions.owasp.ESAPIDecode

package railo.runtime.functions.owasp;

import java.io.PrintStream;

import org.owasp.esapi.ESAPI;
import org.owasp.esapi.Encoder;
import org.owasp.esapi.errors.EncodingException;

import railo.commons.io.DevNullOutputStream;
import railo.commons.lang.StringUtil;
import railo.runtime.PageContext;
import railo.runtime.exp.ApplicationException;
import railo.runtime.exp.FunctionException;
import railo.runtime.exp.PageException;
import railo.runtime.ext.function.Function;
import railo.runtime.op.Caster;

public class ESAPIDecode implements Function {
 
  private static final long serialVersionUID = 7054200748398531363L;
 
  public static final short DEC_BASE64=1;
  public static final short DEC_URL=2;
 
  public static String decode(String item, short decFrom) throws PageException  {
   
    PrintStream out = System.out;
    try {
       System.setOut(new PrintStream(DevNullOutputStream.DEV_NULL_OUTPUT_STREAM));
       Encoder encoder = ESAPI.encoder();
       switch(decFrom){
       case DEC_URL:return encoder.decodeFromURL(item);
       }
       throw new ApplicationException("invalid target decoding defintion");
    }
    catch(EncodingException ee){
      throw Caster.toPageException(ee);
    }
    finally {
       System.setOut(out);
    }
  }
 
  public static String call(PageContext pc , String strDecodeFrom, String value) throws PageException{
    short decFrom;
    strDecodeFrom=StringUtil.emptyIfNull(strDecodeFrom).trim().toLowerCase();
    if("url".equals(strDecodeFrom)) decFrom=DEC_URL;
    else
      throw new FunctionException(pc, "ESAPIDecode", 1, "decodeFrom", "value ["+strDecodeFrom+"] is invalid, valid values are " +
          "[url]");
    return decode(value, decFrom);
  }
 
}
TOP

Related Classes of railo.runtime.functions.owasp.ESAPIDecode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.