亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? upnppluginservice.java

?? 基于JXTA開發平臺的下載軟件開發源代碼
?? JAVA
字號:
/*
 * Created on 16-Jun-2004
 * Created by Paul Gardner
 * Copyright (C) 2004, 2005, 2006 Aelitis, All Rights Reserved.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 * 
 * AELITIS, SAS au capital de 46,603.30 euros
 * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
 *
 */

package com.aelitis.azureus.plugins.upnp;

/**
 * @author parg
 *
 */

import java.util.*;

import org.gudy.azureus2.core3.internat.*;
import org.gudy.azureus2.core3.util.AEMonitor;
import org.gudy.azureus2.plugins.logging.*;
import org.gudy.azureus2.plugins.ui.config.BooleanParameter;

import com.aelitis.net.upnp.services.*;

public class 
UPnPPluginService 
{
	protected UPnPWANConnection		connection;
	protected BooleanParameter 		alert_success;
	protected BooleanParameter 		grab_ports;
	protected BooleanParameter 		alert_other_port_param;
	protected BooleanParameter		release_mappings;
	
	protected List	service_mappings = new ArrayList();
	
	protected AEMonitor	this_mon 	= new AEMonitor( "UPnPPluginService" );
	   
	protected
	UPnPPluginService(
		UPnPWANConnection				_connection,
		UPnPWANConnectionPortMapping[]	_ports,
		BooleanParameter				_alert_success,
		BooleanParameter				_grab_ports,
		BooleanParameter				_alert_other_port_param,
		BooleanParameter				_release_mappings)
	{
		connection				= _connection;
		alert_success			= _alert_success;
		grab_ports				= _grab_ports;
		alert_other_port_param	= _alert_other_port_param;
		release_mappings		= _release_mappings;
		
		for (int i=0;i<_ports.length;i++){

			service_mappings.add( new serviceMapping( _ports[i]));
		}
	}
	
	protected UPnPWANConnection
	getService()
	{
		return( connection );
	}
	
	protected String
	getOldDescriptionForPort(
		int		port )
	{
			// Remove one day - port name was changed as some routers use name uniqueness
			// to manage ports, hence UDP and TCP with same name failed
		
		return( "Azureus UPnP " + port );
	}
	
	protected String
	getDescriptionForPort(
		boolean	TCP,
		int		port )
	{
		return( "Azureus UPnP " + port + " " + (TCP?"TCP":"UDP"));
	}
	
	protected void
	checkMapping(
		LoggerChannel		log,
		UPnPMapping			mapping )
	{
		try{
			this_mon.enter();
		
			if ( mapping.isEnabled()){
				
					// check for change of port number and delete old value if so
				
				for (int i=0;i<service_mappings.size();i++){
					
					serviceMapping	sm = (serviceMapping)service_mappings.get(i);
					
					if ( sm.getMappings().contains( mapping )){
				
						if ( sm.getPort() != mapping.getPort()){
							
							removeMapping( log, mapping, sm, false );
						}
					}
				}
			
				serviceMapping	grab_in_progress	= null;
				
				String local_address = connection.getGenericService().getDevice().getRootDevice().getLocalAddress().getHostAddress();
				
				for (int i=0;i<service_mappings.size();i++){
					
					serviceMapping	sm = (serviceMapping)service_mappings.get(i);
					
					if ( 	sm.isTCP() 		== mapping.isTCP() &&
							sm.getPort() 	== mapping.getPort()){				
				
						if ( sm.getInternalHost().equals( local_address )){
							
								// make sure we tie this to the mapping in case it
								// was external to begin with
							
							sm.addMapping( mapping  );
							
							if ( !sm.getLogged()){
								
								sm.setLogged();
								
								log.log( "Mapping " + mapping.getString() + " already established" );
							}
							
							return;
							
						}else{
							
							if ( !grab_ports.getValue() ){
		
								if ( !sm.getLogged()){
									
									sm.setLogged();
								
									String	text = 
										MessageText.getString( 
											"upnp.alert.differenthost", 
											new String[]{ mapping.getString(), sm.getInternalHost()});
																
									if ( alert_other_port_param.getValue()){
									
										log.logAlertRepeatable( LoggerChannel.LT_WARNING, text );
									}else{
										
										log.log( text);
									}
								}
								
								return;
								
							}else{
								
									// we're going to grab it
								
								sm.addMapping( mapping  );
	
								grab_in_progress	= sm;
							}
						}
					}
				}
				
					// not found - try and establish it + add entry even if we fail so
					// that we don't retry later
							
				try{
					connection.addPortMapping( 
						mapping.isTCP(), mapping.getPort(), 
						getDescriptionForPort( mapping.isTCP(), mapping.getPort()));
								
					String	text;
					
					if ( grab_in_progress != null ){
						
						text = MessageText.getString( 
								"upnp.alert.mappinggrabbed", 
								new String[]{ mapping.getString(), grab_in_progress.getInternalHost()});
					}else{
						
						text = MessageText.getString( 
								"upnp.alert.mappingok", 
								new String[]{ mapping.getString()});
					}
					
					log.log( text );
					
					if ( alert_success.getValue()){
						
						log.logAlertRepeatable( LoggerChannel.LT_INFORMATION, text );
					}
					
				}catch( Throwable e ){
					
					String	text = 
						MessageText.getString( 
								"upnp.alert.mappingfailed", 
								new String[]{ mapping.getString()});
					
					log.log( text, e );
				
					if ( alert_other_port_param.getValue()){
					
						log.logAlertRepeatable( LoggerChannel.LT_ERROR, text );
					}
				}
				
				if ( grab_in_progress == null ){
					
					serviceMapping	new_mapping = new serviceMapping( mapping );
				
					service_mappings.add( new_mapping );
				}
				
			}else{
					// mapping is disabled
				
				removeMapping( log, mapping, false );
			}
		}finally{
			
			this_mon.exit();
		}
	}
	
	protected void
	removeMapping(
		LoggerChannel		log,
		UPnPMapping			mapping, 
		boolean				end_of_day )
	{
		try{
			this_mon.enter();
					
			for (int i=0;i<service_mappings.size();i++){
				
				serviceMapping	sm = (serviceMapping)service_mappings.get(i);
				
				if ( 	sm.isTCP() == mapping.isTCP() &&
						sm.getPort() == mapping.getPort() &&
						sm.getMappings().contains( mapping )){
					
					removeMapping( log, mapping, sm, end_of_day );
	
					return;
				}
			}
		}finally{
			
			this_mon.exit();
		}
	}
							
	protected void
	removeMapping(
		LoggerChannel		log,
		UPnPMapping			upnp_mapping,
		serviceMapping		service_mapping, 
		boolean				end_of_day )
	{
		if ( service_mapping.isExternal()){
		
			log.log( "Mapping " + service_mapping.getString() + " not removed as not created by Azureus" );
			
		}else{
			int	persistent	=  UPnPMapping.PT_DEFAULT;
			
			List	mappings = service_mapping.getMappings();
			
			for (int i=0;i<mappings.size();i++){
				
				UPnPMapping	map = (UPnPMapping)mappings.get(i); 
					
				int	p = map.getPersistent(); 
				
				if ( p == UPnPMapping.PT_DEFAULT ){
				
						// default - leave as is
					
				}else if ( p == UPnPMapping.PT_TRANSIENT ){
					
						// transient overrides default
					
					if ( persistent == UPnPMapping.PT_DEFAULT ){
						
						persistent	= p;
					}
				}else{
					
						// persistent overrides all others
					
					persistent	= UPnPMapping.PT_PERSISTENT;
				}
			}
			
				// set effective persistency
			
			if ( persistent == UPnPMapping.PT_DEFAULT ){
				
				persistent = release_mappings.getValue()?UPnPMapping.PT_TRANSIENT:UPnPMapping.PT_PERSISTENT;
			}
			
				// only time we take note of whether or not to release the mapping is
				// at closedown
			
			if ( end_of_day && persistent == UPnPMapping.PT_PERSISTENT ){

				log.log( "Mapping " + service_mapping.getString() + " not removed as mapping is persistent" );
	
			}else{
				
					// get the name here for the deletion case so that the subsequent message makes 
					// sense (as the name is derived from the current mappings, so getting it after
					// deleting it results in a name of <external>)
				
				String	service_name = service_mapping.getString();
				
				service_mapping.removeMapping( upnp_mapping );
				
				if ( service_mapping.getMappings().size() == 0 ){
				
					try{
						connection.deletePortMapping( 
								service_mapping.isTCP(), service_mapping.getPort());
				
						log.log( "Mapping " + service_name + " removed" );
						
					}catch( Throwable e ){
						
						log.log( "Mapping " + service_name + " failed to delete", e );
					}
					
					service_mappings.remove(service_mapping);
					
				}else{
					
					log.log( "Mapping " + service_mapping.getString() + " not removed as interest remains" );
				}
			}
		}
	}
	
	protected class
	serviceMapping
	{
		protected List			mappings	= new ArrayList();
		
		protected boolean		tcp;
		protected int			port;
		protected String		internal_host;
		
		protected boolean		external;		// true -> not defined by us
		protected boolean		logged;
		
		protected
		serviceMapping(
			UPnPWANConnectionPortMapping		device_mapping )
		{
			tcp				= device_mapping.isTCP();
			port			= device_mapping.getExternalPort();
			internal_host	= device_mapping.getInternalHost();
			
			String	desc = device_mapping.getDescription();
			
			if ( 	desc == null || 
					!(	desc.equalsIgnoreCase( getOldDescriptionForPort( port )) ||
						desc.equalsIgnoreCase( getDescriptionForPort( tcp, port )))){
				
				external		= true;
			}
		}
	
		protected
		serviceMapping(
			UPnPMapping		_mapping )
		{
			mappings.add( _mapping );
			
			tcp				= _mapping.isTCP();
			port			= _mapping.getPort();
			internal_host	= connection.getGenericService().getDevice().getRootDevice().getLocalAddress().getHostAddress();
		}
		
		protected boolean
		isExternal()
		{
			return( external );
		}
		
		protected List
		getMappings()
		{
			return( mappings );
		}
		
		protected void
		addMapping(
			UPnPMapping	_mapping )
		{
			if ( !mappings.contains( _mapping )){
				
				mappings.add( _mapping );
			}
		}
		
		protected void
		removeMapping(
			UPnPMapping	_mapping )
		{
			mappings.remove( _mapping );
		}
		
		protected boolean
		getLogged()
		{
			return( logged );
		}
		
		protected void
		setLogged()
		{
			logged	= true;
		}
		
		protected boolean
		isTCP()
		{
			return( tcp );
		}
		
		protected int
		getPort()
		{
			return( port );
		}
		
		protected String
		getInternalHost()
		{
			return( internal_host );
		}
		
		public String
		getString()
		{
			if ( mappings.size() == 0 ){
				
				return( "<external> (" + (isTCP()?"TCP":"UDP")+"/"+getPort()+")" ); 
				
			}else{
				
				String	str = "";
				
				for (int i=0;i<mappings.size();i++){
					str += (i==0?"":",")+ ((UPnPMapping)mappings.get(i)).getString( getPort());
				}
				
				return( str );
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产入口在线| 99视频精品全部免费在线| 欧美视频精品在线| 一区二区久久久久久| 在线视频你懂得一区| 亚洲国产中文字幕在线视频综合| 在线观看成人小视频| 丝袜脚交一区二区| 精品免费国产二区三区| 欧美精品乱码久久久久久| 夜夜嗨av一区二区三区中文字幕 | 亚洲一区二区三区视频在线播放| 色呦呦日韩精品| 亚洲妇女屁股眼交7| 欧美变态口味重另类| 成人毛片视频在线观看| 亚洲三级在线看| 91精品国产综合久久久久久久| 精品一区二区三区免费| 日本一区二区成人在线| 91极品视觉盛宴| 久久av老司机精品网站导航| 国产三级精品三级在线专区| 在线观看日产精品| 看片的网站亚洲| 亚洲人被黑人高潮完整版| 91超碰这里只有精品国产| 国产传媒一区在线| 一区二区在线免费| 精品国产乱码久久久久久久久| aaa欧美日韩| 免费人成在线不卡| 自拍视频在线观看一区二区| 欧美日韩高清在线播放| 丁香五精品蜜臀久久久久99网站| 亚洲香肠在线观看| 国产日韩影视精品| 欧美猛男gaygay网站| 国产a级毛片一区| 丝瓜av网站精品一区二区| 国产精品素人一区二区| 欧美日韩精品专区| 大胆欧美人体老妇| 麻豆一区二区99久久久久| 日韩一区日韩二区| 久久免费美女视频| 欧美日本免费一区二区三区| aaa国产一区| 国产精品自拍av| 全国精品久久少妇| 亚洲一卡二卡三卡四卡无卡久久| 国产无一区二区| 日韩视频123| 欧美日韩性生活| 一本大道综合伊人精品热热| 国产精品一级二级三级| 蜜臀av亚洲一区中文字幕| 亚洲国产一区二区三区| 国产精品久久久久久妇女6080 | 91网页版在线| 国产精品 欧美精品| 人妖欧美一区二区| 香蕉加勒比综合久久| 亚洲欧美日韩人成在线播放| 国产区在线观看成人精品| 日韩精品中文字幕一区| 欧美区一区二区三区| 91精品福利视频| 91麻豆6部合集magnet| 国产.欧美.日韩| 国产高清视频一区| 国产一区二区三区四区五区入口| 免费观看久久久4p| 免费成人在线视频观看| 青青国产91久久久久久| 日韩电影一区二区三区| 日韩精品免费专区| 91精品在线麻豆| 日本aⅴ亚洲精品中文乱码| 亚洲日本在线视频观看| 国产精品久久久久久久久快鸭| 久久久久久免费毛片精品| 精品伦理精品一区| 337p日本欧洲亚洲大胆色噜噜| 日韩一区二区视频| 精品国产91洋老外米糕| 欧美精品一区二区在线播放| 精品国产乱码久久久久久久久| 日韩你懂的电影在线观看| 精品久久久久一区二区国产| 久久综合一区二区| 国产欧美一区二区精品性色超碰| 国产清纯在线一区二区www| 国产精品丝袜久久久久久app| 中文字幕亚洲精品在线观看| 亚洲日穴在线视频| 亚洲国产美女搞黄色| 日本成人在线视频网站| 精品亚洲国内自在自线福利| 丁香一区二区三区| 色哟哟国产精品| 欧美一区二区在线免费观看| 精品电影一区二区三区| 中文字幕在线播放不卡一区| 夜夜嗨av一区二区三区四季av | 亚洲午夜成aⅴ人片| 日韩经典中文字幕一区| 国产尤物一区二区| 91小视频在线免费看| 欧美丰满少妇xxxxx高潮对白 | 2023国产一二三区日本精品2022| 国产欧美中文在线| 亚洲福中文字幕伊人影院| 九九热在线视频观看这里只有精品| 丰满少妇久久久久久久| 欧美综合视频在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 中文字幕一区二区三区精华液 | 91精品国产综合久久蜜臀| 久久久久久久久伊人| 一区二区高清视频在线观看| 免费人成精品欧美精品| 成人h精品动漫一区二区三区| 在线视频一区二区免费| 久久蜜臀中文字幕| 亚洲制服丝袜av| 国产成人精品一区二区三区网站观看| 色婷婷av一区二区三区软件| 精品对白一区国产伦| 一区二区日韩av| 成人毛片老司机大片| 日韩一区二区高清| 亚洲女人的天堂| 国产成人精品网址| 日韩视频中午一区| 亚洲影院理伦片| eeuss鲁一区二区三区| 日韩精品一区二区三区在线播放| 一区二区三区丝袜| 丁香婷婷综合五月| 精品国产污网站| 偷拍一区二区三区| 91在线一区二区| 欧美高清在线精品一区| 蜜臀a∨国产成人精品| 精品视频免费看| 亚洲美女屁股眼交3| 成人午夜碰碰视频| 精品国产乱码久久久久久浪潮| 日韩国产欧美视频| 欧美在线制服丝袜| 亚洲欧美激情在线| 成人av在线一区二区三区| www精品美女久久久tv| 日本特黄久久久高潮| 欧美老人xxxx18| 亚洲一区二区中文在线| 日本黄色一区二区| 中文字幕一区二区在线观看| 国产不卡一区视频| 久久精品亚洲麻豆av一区二区| 精品一区二区国语对白| 日韩一区二区视频在线观看| 日本亚洲最大的色成网站www| 欧美日韩精品是欧美日韩精品| 亚洲一区二区三区自拍| 在线视频一区二区三区| 亚洲一区在线观看视频| 91在线视频网址| 亚洲欧美日韩一区二区三区在线观看| 不卡的看片网站| 亚洲人成精品久久久久久 | 一区二区三区**美女毛片| 91美女精品福利| 夜夜亚洲天天久久| 欧美日韩一区小说| 免费观看30秒视频久久| 日韩精品中文字幕一区二区三区| 久久99国产精品麻豆| 久久久精品免费网站| 成人福利在线看| 一区二区三区影院| 欧美日韩国产影片| 美女视频黄a大片欧美| 久久午夜电影网| 9i看片成人免费高清| 亚洲精品免费在线观看| 欧美高清你懂得| 国产一区二区三区电影在线观看| 国产精品视频第一区| 色综合久久综合中文综合网| 天堂影院一区二区| 亚洲精品在线观| 91亚洲永久精品| 日韩成人午夜精品| 国产欧美综合在线| 欧美视频一区二区三区| 久久国产精品色婷婷| 国产精品美女一区二区三区| 欧洲一区二区三区在线|