⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msqlgen.java

📁 httptunnel.jar httptunnel java 源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package net.jumperz.app.MGuardian.rule;

import java.io.*;
import java.util.*;
import net.jumperz.util.*;
import net.jumperz.app.MGuardian.plugin.*;

public class MSqlGen
{
private static final String USAGE	= "Usage: java net.jumperz.app.MGuardian.rule.MChecker RULE_FILE_NAME";

private List requestRuleList	= new ArrayList();
private List responseRuleList	= new ArrayList();
private Map idRuleMap		= new HashMap();
//-------------------------------------------------------------------------------------------
public static void main( String[] args )
{
if( args.length != 1 )
	{
	System.out.println( USAGE );
	return;
	}
else
	{
	MSqlGen instance = new MSqlGen();
	
	try
		{
		instance.loadFromFile( args[ 0 ] );
		}
	catch( IOException e )
		{
		System.err.println( e );
		}
	}
}
//--------------------------------------------------------------------------------
public void loadFromFile( String ruleFileName )
throws IOException
{
int seq = 0;
String line = null;
String id = null;
String revision = null;
String name = null;
String type = null;
String patternStr = null;
String conditionStr = null;
String caseSensitiveFlagStr = null;
String logFlagStr = null;
String action = null;
String command = null;
int revisionInt = 0;
boolean caseSensitiveFlag;
boolean logFlag;
//String action = MAbstractRule.ACTION_BLOCK;
boolean negationFlag;
List pluginList = null;

String currentFileName	= ruleFileName;
BufferedReader reader	= new BufferedReader( new InputStreamReader( new FileInputStream( ruleFileName ), MCharset.CS_ISO_8859_1 ) );
Stack readerStateStack	= new Stack();

Set varSet = new HashSet();

for( int lineNumber = 1; ; ++lineNumber )
	{
	line = reader.readLine();
	if( line == null )
		{
		if( readerStateStack.empty() )
			{
			break;
			}
		else
			{
			MReaderState readerState = ( MReaderState )readerStateStack.pop();
			reader		= readerState.getReader();
			lineNumber	= readerState.getCurrentLineNumber();
			currentFileName	= readerState.getCurrentFileName();
			}
		}
	else if( line.indexOf( "include" ) == 0 )
		{
		if( false
		 || id != null
		 || revision != null
		 || name != null 
		 || type != null
		 || patternStr != null
		 || conditionStr != null
		 || caseSensitiveFlagStr != null
		 || logFlagStr != null
		 || action != null
		 || command != null 
		 || pluginList != null
		  )
			{
			throwParseError( currentFileName, lineNumber );
			}
		
		MReaderState readerState = new MReaderState();
		readerState.setCurrentFileName( currentFileName );
		readerState.setCurrentLineNumber( lineNumber );
		readerState.setReader( reader );
		readerStateStack.push( readerState );

		String nextFileName = MRegEx.getMatch( "^include\\s{0,}[\"']{1}(.*)[\"']$", line );
		File nextFile = new File( nextFileName );
		if( !nextFile.isAbsolute() )
			{
			File currentFile	= new File( currentFileName );
			File parentDir		= currentFile.getParentFile();
			nextFile		= new File( parentDir.getCanonicalPath() + "/" + nextFileName );		
			}
		lineNumber = 1;
		currentFileName = nextFile.getAbsolutePath();
		reader = new BufferedReader( new InputStreamReader( new FileInputStream( nextFile ), MCharset.CS_ISO_8859_1 ) );		
		}
	else if( line.matches( "^var\\s{1,}%.*$" ) )
		{
		if( false
		 || id != null
		 || revision != null
		 || name != null 
		 || type != null
		 || patternStr != null
		 || conditionStr != null
		 || caseSensitiveFlagStr != null
		 || logFlagStr != null
		 || action != null
		 || command != null 
		 || pluginList != null
		  )
			{
			throwParseError( currentFileName, lineNumber );
			}

		String varName = MRegEx.getMatch( "^var\\s{1,}(%[-_a-zA-Z0-9]{1,}%)", line ); 
		if( varName.equals( "" ) )
			{
			throwParseError( currentFileName, lineNumber );			
			}

		String varExpression = MRegEx.getMatch( "\"(.*)\"$", line ); 
		if( varExpression.equals( "" ) )
			{
			throwParseError( currentFileName, lineNumber );			
			}

		MVariable var = new MVariable();
		var.setName( varName );
		var.setExpression( varExpression );

		if( varSet.contains( var ) )
			{
				// duplicate variable name
			throwParseError( currentFileName, lineNumber );
			}
		varSet.add( var );
		}	
	else if( line.equalsIgnoreCase( "<rule>" ) )
		{
		if( false
		 || id != null
		 || revision != null
		 || name != null 
		 || type != null
		 || patternStr != null
		 || conditionStr != null
		 || caseSensitiveFlagStr != null
		 || logFlagStr != null
		 || action != null
		 || command != null 
		 || pluginList != null
		  )
			{
			throwParseError( currentFileName, lineNumber );
			}
		}
	else if( line.equalsIgnoreCase( "</rule>" ) )
		{
		if( false
		 || id == null
		 || revision == null
		 || name == null 
		 || type == null
		 || patternStr == null
		 || conditionStr == null
		 || caseSensitiveFlagStr == null
		 || logFlagStr == null
		 || action == null
		 || command == null 
		  )
			{
			throwParseError( currentFileName, lineNumber );
			}

		caseSensitiveFlag = ( caseSensitiveFlagStr.equalsIgnoreCase( "YES" ) );
		logFlag = ( logFlagStr.equalsIgnoreCase( "YES" ) );
		negationFlag = ( conditionStr.equalsIgnoreCase( "NOT MATCH" ) );

		/*
		if( actionStr.equalsIgnoreCase( "NONE" ) )
			{
			action = MAbstractRule.ACTION_NONE;
			}
		else if( actionStr.equalsIgnoreCase( "BLOCK" ) )
			{
			action = MAbstractRule.ACTION_BLOCK;
			}
		else if( actionStr.equalsIgnoreCase( "PASS" ) )
			{
			action = MAbstractRule.ACTION_PASS;
			}
		else
			{
			throwParseError( currentFileName, lineNumber );
			}
		*/

		MAbstractRule rule = null;
		if( type.equalsIgnoreCase( "address" ) )
			{
			rule = new MAddressRule();
			}
		else if( type.equalsIgnoreCase( "requestLine" ) )
			{
			rule = new MRequestLineRule();
			}
		else if( type.equalsIgnoreCase( "requestUri" ) || type.equalsIgnoreCase( "requestUrl" ) )
			{
			rule = new MRequestUriRule();
			}
		else if( type.equalsIgnoreCase( "requestUriPath" ) )
			{
			rule = new MRequestUriPathRule();
			}
		else if( type.equalsIgnoreCase( "requestUriParam" ) )
			{
			rule = new MRequestUriParamRule();
			}
		else if( type.equalsIgnoreCase( "requestUriQuery" ) )
			{
			rule = new MRequestUriQueryRule();
			}
		else if( type.equalsIgnoreCase( "paramValue" ) )
			{
			rule = new MParamValueRule();
			}		
		else if( type.equalsIgnoreCase( "requestHeader" ) )
			{
			rule = new MRequestHeaderRule();
			}
		else if( type.equalsIgnoreCase( "requestBody" ) )
			{
			rule = new MRequestBodyRule();
			}
		else if( type.equalsIgnoreCase( "decodedRequestBody" ) )
			{
			rule = new MDecodedRequestBodyRule();
			}
		else if( type.equalsIgnoreCase( "statusLine" ) )
			{
			rule = new MStatusLineRule();
			}
		else if( type.equalsIgnoreCase( "responseHeader" ) )
			{
			rule = new MResponseHeaderRule();
			}
		else if( type.equalsIgnoreCase( "responseBody" ) )
			{
			rule = new MResponseBodyRule();
			}
		else if( type.equalsIgnoreCase( "responseBody2" ) )
			{
			rule = new MResponseBodyRule2();
			}
		else if( type.equalsIgnoreCase( "responseBodyHead" ) )
			{
			rule = new MResponseBodyHeadRule();
			}
		else if( type.equalsIgnoreCase( "responseBodyLine" ) )
			{
			rule = new MResponseBodyLineRule();
			}
		else if( type.equalsIgnoreCase( "ruleGroup" ) )
			{
			rule = getRuleGroupInstance( patternStr );
			}
		else
			{
			throwParseError( currentFileName, lineNumber );
			}

			// construct rule
		rule.setId( id );
		rule.setRevision( revisionInt );
		rule.setName( name );
		rule.setPattern( patternStr, !caseSensitiveFlag );
		rule.setNegationFlag( negationFlag );
		rule.setLogFlag( logFlag );
		rule.setAction( action );
		rule.setCommand( command );
		rule.setPluginList( pluginList );
		rule.init();
		
			// set rule to idRuleMap for ruleGroups
		if( idRuleMap.containsKey( id ) )
			{
			System.err.println( "duplicate rule id" );
			throwParseError( currentFileName, lineNumber );
			}
		idRuleMap.put( id, rule );
		
		int ruleType = rule.getRuleType();
		if( ruleType == MAbstractRule.REQUEST )
			{
			requestRuleList.add( rule );
			}
		else if( ruleType == MAbstractRule.RESPONSE )
			{
			responseRuleList.add( rule );
			}
		else
			{
			throw new IOException( "invalid ruleType" );
			}

		Map typeMap = new HashMap();
		typeMap.put( "requestLine","0");
		typeMap.put( "requestUri","1");
		typeMap.put( "requestUriPath","2");
		typeMap.put( "requestUriParam","3");
		typeMap.put( "requestUriQuery","4");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -