/**
 * 
 */
package com.ejweb.core.utils;

import java.util.HashMap;

import com.ejweb.conf.GConstants;


/**
 * 文件安全扫描过滤
 * @team IT Team
 * @author zhanglg
 * @version 1.0
 * @time  2016年11月5日
 */

public class FileManipulation {
   public static String Manipulation(String path){
       HashMap<String, String> map = new HashMap<String, String>();
       map.put("a", "a");
       map.put("b", "b");
       map.put("c", "c");
       map.put("d", "d");
       map.put("e", "e");
       map.put("f", "f");
       map.put("g", "g");
       map.put("h", "h");
       map.put("i", "i");
       map.put("j", "j");
       map.put("k", "k");
       map.put("l", "l");
       map.put("m", "m");
       map.put("n", "n");
       map.put("o", "o");
       map.put("p", "p");
       map.put("q", "q");
       map.put("r", "r");
       map.put("s", "s");
       map.put("t", "t");
       map.put("u", "u");
       map.put("v", "v");
       map.put("w", "w");
       map.put("x", "x");
       map.put("y", "y");
       map.put("z", "z");
       
       map.put("A", "A");
       map.put("B", "B");
       map.put("C", "C");
       map.put("D", "D");
       map.put("E", "E");
       map.put("F", "F");
       map.put("G", "G");
       map.put("H", "H");
       map.put("I", "I");
       map.put("J", "J");
       map.put("K", "K");
       map.put("L", "L");
       map.put("M", "M");
       map.put("N", "N");
       map.put("O", "O");
       map.put("P", "P");
       map.put("Q", "Q");
       map.put("R", "R");
       map.put("S", "S");
       map.put("T", "T");
       map.put("U", "U");
       map.put("V", "V");
       map.put("W", "W");
       map.put("X", "X");
       map.put("Y", "Y");
       map.put("Z", "Z");


     map.put(":", ":");
          map.put("/", "/");
          map.put("\\", "\\");
       
       String temp = "";
       for (int i = 0; i < path.length(); i++) {

        if (map.get(path.charAt(i)+"")!=null) {
         temp += map.get(path.charAt(i)+"");
        }
       }
       path = temp;
       return path;
   }
   /**
    * 
    * 黑名单验证
    * @author zhanglg
    * @time  2016年11月5日
    * @return
    */
   public static String validateFile(String filename){
       
       String[] extesions=new String[]{"%",";"};
       for(String extesion:extesions){
           if(filename.contains(extesion)){
               throw new LoadExceptions("非法的文件请求,请不要上传或下载含有非法字符或后缀的文件 :"+filename);
           }
       }
/*     String extesionName = Util.getExtensionName(filename);
 
//       if(extesionName == null || extesionName.length() == 0){// 文件扩展名称不能为NULL
//           throw new LoadExceptions("无法获取文件扩展名："+filename);
//       }

    
     String exd=".png;.jpg;.gif;.jpeg;.xls;.xlsx;.bmp;.ico;.swf;.psd;.apk;.doc;.docx;.txt;.sql;.xml;";
     if(!exd.contains(extesionName)){
         throw new LoadExceptions("此类型文件不允许上传："+filename);
     }*/
     /* if(GConstants.FILE_FILTERS.get(extesionName) == null){
           throw new LoadExceptions("此类型文件不允许上传："+filename);
      }*/
       filename= filename.replaceAll("\\.\\./", "");
       filename= filename.replaceAll("\\.\\.\\\\", "");
       filename= filename.replaceAll("\\.\\.", "");
       return filename;
   }
   
   public static void check(String filename){
       String extesionName = Util.getExtensionName(filename);
       if(GConstants.FILE_FILTERS.get(extesionName) == null){
           throw new LoadExceptions("此类型文件不允许上传："+filename);
      }
       String[] extesions=new String[]{"%",";"};
       for(String extesion:extesions){
           if(filename.contains(extesion)){
               throw new LoadExceptions("非法的文件请求,请不要上传或下载含有非法字符或后缀的文件 :"+filename);
           }
       }
   }
   
   /**
    * 
    * 黑名单验证2
    * @author zhanglg
    * @time  2016年11月5日
    * @return
    */
   public static String validateFile2(String filename){
       String[] extesions=new String[]{".xmls",".propertiey",".jsons"};
       for(String extesion:extesions){
           if(filename.contains(extesion)){
               throw new LoadExceptions("非法的文件请求,请不要上传或下载含有非法名称或后缀的文件");
           }
       }
       return filename;
   }
}
