All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ajaxjs.security.ListControl Maven / Gradle / Ivy

Go to download

AJAXJS Web aims to full-stack, not only the server-side framework, but also integrates the front-end library. It'€™s written in HTML5 + Java, a successor to the JVM platform, efficient, secure, stable, cross-platform and many other advantages, but it abandoned the traditional enterprise architecture brought about by the large and bloated, emphasizing the lightweight, and fast, very suitable for the Internet fast application.

There is a newer version: 1.3.0
Show newest version
/**
 * Copyright 2015 Sp42 [email protected]
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.ajaxjs.security;

import java.util.List;
import java.util.regex.Pattern;

/**
 * 比较简单的过滤器,只是针对于 Request
 * @author Frank
 *
 */
public class ListControl {
	/**
	 * 白名单
	 */
	public List whiteList;

	/**
	 * 黑名单
	 */
	public List blackList;

	/**
	 * 是否在白名单列表中
	 * 
	 * @param str
	 *            待检查的字符串
	 * @return true 表示为包含在白名单;false 表示为不包含在白名单
	 */
	public boolean isInWhiteList(String str) {
		return isInList(str, whiteList);
	}

	private final static String msg = "地址 %s 已列入黑名单!";

	/**
	 * 是否在黑名单列表中。黑名单会专门抛出异常,以便记录。
	 * 
	 * @param str
	 *            待检查的字符串
	 * @return true 表示为包含在黑名单;false 表示为不包含在黑名单
	 */
	public boolean isInBlackList(String str) {
		boolean isIn = isInList(str, blackList);
		if (!isIn) 
			throw new SecurityException(String.format(msg, str));
		
		return isIn;
	}

	/**
	 * 是否在列表中
	 * 
	 * @param str
	 * @param list
	 * @return true 表示为包含;false 表示为不包含
	 */
	private static boolean isInList(String str, List list) {
		if (list == null || list.size() == 0)
			return false;

		for (String pattern : list) {
			if (Pattern.matches(pattern, str)) 
				return true;
		}

		return false;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy