📄 mparamvaluerule.java
字号:
package net.jumperz.app.MGuardian.rule;
import java.util.*;
import java.net.*;
import net.jumperz.net.*;
import java.util.regex.*;
import net.jumperz.util.*;
import java.io.*;
public class MParamValueRule
extends MAbstractRequestRule
{
//----------------------------------------------------------------------------------
public boolean matches( MHttpRequest request, MResultCache resultCache )
{
boolean match = false;
// check parameters in uri
MRequestUri uri = new MRequestUri( request.getUri() );
String query = uri.getQuery();
match = matches2( query );
// check parameters in request body
if( !match )
{
if( request.hasBody() )
{
try
{
query = MStreamUtil.streamToString( request.getBodyInputStream() );
}
catch( IOException e )
{
e.printStackTrace();
}
match = matches2( query );
}
}
match = ( match != negationFlag );
resultCache.cacheResult( this, match );
return match;
}
//--------------------------------------------------------------------------------
private boolean matches2( String query )
{
String[] pairList = query.split( "&" );
for( int i = 0; i< pairList.length; ++i )
{
int index = pairList[ i ].indexOf( '=' );
if( index > -1 )
{
String target = pairList[ i ].substring( index + 1 );
Matcher matcher = pattern.matcher( target );
if( matcher.find() )
{
return true;
}
else
{
try
{
if( MUnicodeUrlDecoder.isUrlDecoded( target ) )
{
target = MUnicodeUrlDecoder.decode( target );
}
else
{
target = URLDecoder.decode( target, MAbstractRequestRule.CHARSET );
}
}
catch( UnsupportedEncodingException e ) {}
catch( IllegalArgumentException e ){}
matcher = pattern.matcher( target );
if( matcher.find() )
{
return true;
}
}
}
}
return false;
}
//----------------------------------------------------------------------------------
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -