Exemple #1
0
        /// <summary>Constructs a PeerInformation object</summary>
        /// <param name="ip">IP address of peer</param>
        /// <param name="port">Port number</param>
        /// <param name="id">Peer ID</param>
        public PeerInformation(string ip, int port, ByteField20 id)
        {
            this.ip   = ip;
            this.port = port;
            this.id   = id;

            // determine client type from id
            this.clientType = DetermineClientType(this.id, out this.versionNumber);
        }
		/// <summary>
		/// Determines what client the peer is using.
		/// </summary>
		/// <param name="id">Peer ID</param>
		/// <param name="versionNumber">Version of the client (if it can be determined)</param>
		/// <returns>Type of client used by peer</returns>
		public static PeerClientType DetermineClientType( ByteField20 id, out string versionNumber )
		{
			PeerClientType clientType = PeerClientType.Unknown;
			versionNumber = "";

			if (id == null)
				return PeerClientType.Unknown;

			string strId = id.ToString();
			
			// first check for Azurues-style
			if ( IsValidAzereusStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			// then check for shadow-style
			if ( IsValidShadowStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsOldBitCometStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsXBTStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsOperaStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsMLDonkeyStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsBitsOnWheelsStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsBitTyrantStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsTorrenTopiaStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsBitSpiritStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsRufusStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsG3Style( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsFlashGetStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsBTNextEvolutionStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsAllPeersStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsQvodStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;
			if ( IsValidBramStyle( strId, ref clientType, ref versionNumber ) )
				return clientType;

			return clientType;
		}
		/// <summary>Constructs a PeerInformation object</summary>
		/// <param name="ip">IP address of peer</param>
		/// <param name="port">Port number</param>
		/// <param name="id">Peer ID</param>
		public PeerInformation(string ip, int port, ByteField20 id)
		{
			this.ip = ip;
			this.port = port;
			this.id = id;
			
			// determine client type from id
			this.clientType = DetermineClientType(this.id, out this.versionNumber);
		}
Exemple #4
0
        /// <summary>
        /// Determines what client the peer is using.
        /// </summary>
        /// <param name="id">Peer ID</param>
        /// <param name="versionNumber">Version of the client (if it can be determined)</param>
        /// <returns>Type of client used by peer</returns>
        public static PeerClientType DetermineClientType(ByteField20 id, out string versionNumber)
        {
            PeerClientType clientType = PeerClientType.Unknown;

            versionNumber = "";

            if (id == null)
            {
                return(PeerClientType.Unknown);
            }

            string strId = id.ToString();

            // first check for Azurues-style
            if (IsValidAzereusStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            // then check for shadow-style
            if (IsValidShadowStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsOldBitCometStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsXBTStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsOperaStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsMLDonkeyStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsBitsOnWheelsStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsBitTyrantStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsTorrenTopiaStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsBitSpiritStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsRufusStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsG3Style(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsFlashGetStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsBTNextEvolutionStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsAllPeersStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsQvodStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }
            if (IsValidBramStyle(strId, ref clientType, ref versionNumber))
            {
                return(clientType);
            }

            return(clientType);
        }