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

📄 mguardianimpl.java

📁 httptunnel.jar httptunnel java 源码
💻 JAVA
字号:
package net.jumperz.app.MGuardian;

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

public class MGuardianImpl
implements MApplication
{
private static MGuardianImpl instance;

private MThreadPool threadPool;
private int maxConnectionCount;
private MTimer timer;
private List acceptorList;
private boolean shutdowned = false;
private MLogger logger = MSimpleLogger.getInstance();
boolean enableConsole = false;
//--------------------------------------------------------------------------------------
public static MGuardianImpl getInstance()
{
return instance;
}
//--------------------------------------------------------------------------------
public MThreadPool getThreadPool()
{
return threadPool;
}
//--------------------------------------------------------------------------------
private MGuardianImpl()
{
}
//--------------------------------------------------------------------------------
public void log( String message )
{
logger.log( message );
}
//--------------------------------------------------------------------------------------
public void loadConfig ( String configDirName )
throws Exception
{
MConfig config = MConfig.getInstance();
config.load( configDirName );
log( config.toString() );

	// targetport targetaddress
MSession.setTargetPeer( config.getTargetHost(), config.getTargetPort() );

	// replaceHostField
MSession.setReplaceHostField( config.getReplaceHostField() );

	// replaceLocationField
//MSession.setReplaceLocationField( config.getReplaceLocationField() );
	
	// logFileName
String logFileName = config.getLogFileName();
if( logFileName != null )
	{
	MSimpleLogger.getInstance().addStream( new FileOutputStream( new File( logFileName ), true ) );
	}

	// sessionLogDirName
String sessionLogDirName = config.getSessionLogDirName();
if( sessionLogDirName != null )
	{
	MHttpDataLogger.setSessionLogDirName( sessionLogDirName );
	}

	// restrictRequestHeader
if( config.getLimitRequestHeader() )
	{
	MSession.setRequestFilter( config.getRequestFilter() );
	}
	
	// restrictResponseHeader
if( config.getLimitResponseHeader() )
	{
	MSession.setResponseFilter( config.getResponseFilter() );
	}

	// connect timeout
MSession.setConnectTimeOut( config.getConnectTimeOut() );

	// header timeout
MSession.setRequestHeaderTimeOut( config.getRequestHeaderTimeOut() );

	// body timeout
MSession.setRequestBodyTimeOut( config.getRequestBodyTimeOut() );

	// max connect count
maxConnectionCount			= config.getMaxConnectionCount();
MAddressManager.getInstance().setMaxCount( maxConnectionCount );

	// urlDecodingCharset
MRequestUriRule.setCharset( config.getUrlDecodingCharset() );

	// additionalRequestHeader
MSession.setAdditionalRequestHeaderMap( config.getAdditionalRequestHeaderMap() );

	// additionalResponseHeader
MSession.setAdditionalResponseHeaderMap( config.getAdditionalResponseHeaderMap() );

	// allowedAddress
MAddressManager.getInstance().setAllowedAddress( config.getAllowedAddressSet() );

	// acceptorList
acceptorList = config.getAcceptorList();

	// rule
MSession.setRequestRuleList( config.getRequestRuleList() );
MSession.setResponseRuleList( config.getResponseRuleList() );

	//commandInterval
MCommandExecuter.getInstance().setInterval( config.getCommandInterval() * 1000 );

	//maxQueueCount
MCommandExecuter.getInstance().setMaxQueueCount( config.getMaxQueueCount() );

	// thread pool
int threadCount = config.getThreadCount();
threadPool = new MThreadPool( threadCount );
threadPool.setLogger( logger );

	// start resolver
new MResolver( threadPool );

	// start timer
timer = new MTimer( 1000 );
threadPool.addCommand( timer );

	//console
enableConsole = MConfig.getInstance().getEnableConsole();
if( enableConsole )
	{
	MGuardianConsole.getInstance().setConsoleWorkDirName( config.getRequiredProperty( "consoleWorkDirName" ) );
	MGuardianConsole.getInstance().setConsoleWebDirName( config.getRequiredProperty( "consoleWebDirName" ) );
	MGuardianConsole.getInstance().init();
	timer.register1( MGuardianConsole.getInstance() );
	}

MPluginManager.getInstance().startup();
}
//--------------------------------------------------------------------------------------
public static void main( String arg )
throws Exception
{
//MLogger.getInstance().addStream( System.out );
instance = new MGuardianImpl();
instance.initLogger();
try
	{
	instance.loadConfig( arg );
	instance.start();
	}
catch( Exception e )
	{
	e.printStackTrace();
	instance.threadPool.stop();
	}
}
//--------------------------------------------------------------------------------
public void initLogger()
{
MSimpleLogger.getInstance().addStream( System.out );
}
//--------------------------------------------------------------------------------------
public void start()
throws Exception
{
log( "Guardian@JUMPERZ.NET started." );

MSession.setTimer( timer );

	// start commandExecuter
threadPool.addCommand( MCommandExecuter.getInstance() );

threadPool.addCommand( MSocketCloser.getInstance() );

	// listen sockets
int count = acceptorList.size();
for( int i = 0; i < count; ++i )
	{
	MMultiAcceptor acceptor = ( MMultiAcceptor )acceptorList.get( i );
	MAcceptorObserver observer = new MAcceptorObserver( acceptor );
	acceptor.register1( observer );
	threadPool.addCommand( acceptor );
	}
	
	//shutdown
MShutdownServer shutdownServer = new MShutdownServer( this );
shutdownServer.start( threadPool );
}
//--------------------------------------------------------------------------------------
public void startSession( Socket in_socket )
{
try
	{
	MSession session = new MSession( in_socket );
	session.register2( MSimpleLogger.getInstance() );
	if( enableConsole )
		{
		session.register2( MGuardianConsole.getInstance() );
		}
	threadPool.addCommand( session );
	}
catch( Exception e )
	{
	e.printStackTrace();
	log( e.toString() );
	}
}
//--------------------------------------------------------------------------------
public MTimer getTimer()
{
return timer;
}
//--------------------------------------------------------------------------------------
public void shutdown()
{
if( !shutdowned )
	{
	shutdowned = true;
	if( enableConsole )
		{
		MGuardianConsole.getInstance().shutdown();
		}
	threadPool.stop();
	MPluginManager.getInstance().shutdown();
	MBuffer.closeStreams();
	System.exit( 0 );
	}
}
//--------------------------------------------------------------------------------
public MLogger getLogger()
{
return logger;
}
//--------------------------------------------------------------------------------------
}

⌨️ 快捷键说明

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