Exemplo n.º 1
0
        /// <summary>
        /// Reads the server data from an BinaryReader.
        /// </summary>
        /// <param name="reader">Specify the BinaryReader to load the server data.</param>
        public void Load(BinaryReader reader)
        {
            uint             parameters;
            CParameterReader parameterReader;

            parameters = reader.ReadUInt32();
            for (uint i = 0; i != parameters; i++)
            {
                parameterReader = new CParameterReader(reader);
                switch ((Protocol.ServerTag)parameterReader.id)
                {
                case Protocol.ServerTag.Name:
                    m_Name = parameterReader.valorString;
                    break;

                case Protocol.ServerTag.Description:
                    m_Description = parameterReader.valorString;
                    break;

                case Protocol.ServerTag.Preference:
                    m_Preference = (Constants.ServerPriority)parameterReader.valorNum;
                    break;

                case Protocol.ServerTag.Ping:
                    m_LastPingTime = parameterReader.valorNum;
                    break;

                case Protocol.ServerTag.DynIP:
                    m_DynamicIP = parameterReader.valorString;
                    break;

                case Protocol.ServerTag.Fails:
                    m_nFails = parameterReader.valorNum;
                    break;

                case Protocol.ServerTag.MaxUsers:
                    m_MaxUsers = parameterReader.valorNum;
                    break;

                default:
                    if (parameterReader.nombreParam == null)
                    {
                        break;
                    }
                    if (parameterReader.nombreParam.Equals("users"))
                    {
                        m_Users = parameterReader.valorNum;
                    }
                    else if (parameterReader.nombreParam.Equals("files"))
                    {
                        m_Files = parameterReader.valorNum;
                    }
                    break;
                }
            }
        }
Exemplo n.º 2
0
        private uint m_ExtractResult(BinaryReader reader, CSearcher search)
        {
            CParameterReader parameterReader;

            byte[] HashEncontrado = reader.ReadBytes(16);
            uint   ip             = reader.ReadUInt32();
            ushort port           = reader.ReadUInt16();
            uint   nParametros    = reader.ReadUInt32();
            string fileName       = "?";
            uint   fileSize       = 0;
            uint   nSources       = 1;
            string codec          = "";
            uint   bitrate        = 0;
            string length         = "";
            bool   complete       = false;

            for (uint param = 0; param != nParametros; param++)
            {
                parameterReader = new CParameterReader(reader);
                switch ((Protocol.FileTag)parameterReader.id)
                {
                case Protocol.FileTag.Name:
                    fileName = parameterReader.valorString;
                    break;

                case Protocol.FileTag.Size:
                    fileSize = parameterReader.valorNum;
                    break;

                case Protocol.FileTag.Sources:
                    nSources = parameterReader.valorNum;
                    break;

                case Protocol.FileTag.Completed:
                    complete = parameterReader.valorNum > 0;
                    break;

                default:
                    if (parameterReader.nombreParam == Protocol.FileExtraTags.codec.ToString())
                    {
                        codec = parameterReader.valorString;
                    }
                    else if (parameterReader.nombreParam == Protocol.FileExtraTags.length.ToString())
                    {
                        length = parameterReader.valorString;
                    }
                    else if (parameterReader.nombreParam == Protocol.FileExtraTags.bitrate.ToString())
                    {
                        bitrate = parameterReader.valorNum;
                    }
                    //Debug.WriteLine(parameterReader.id+" name: "+parameterReader.nombreParam+" valString:"+parameterReader.valorString+" valNum: "+parameterReader.valorNum);
                    break;
                }
            }
            if (fileSize < Protocol.PartSize)
            {
                complete = true;
            }
            search.AddFileFound(HashEncontrado, fileName, fileSize, nSources, codec, length, bitrate, complete, ip, port);
            return(nSources);
        }
Exemplo n.º 3
0
        private bool m_LoadKnownFiles(string filefullpath, bool showErrorMessage)
        {
            FileStream   knownmet = null;
            BinaryReader reader   = null;

            if (filefullpath.Length == 0)
            {
                filefullpath = Path.Combine(CKernel.DllDirectory, "known.met");
            }
            try
            {
                knownmet = File.OpenRead(filefullpath);

                reader = new BinaryReader(knownmet);

                if (!Enum.IsDefined(typeof(Protocol.KnownMet), reader.ReadByte()))
                //	if (reader.ReadByte() != 0x0E)
                {
                    reader.Close();
                    knownmet.Close();
                    CLog.Log(Constants.Log.Notify, "KNWMET_INVALID");
                    return(false);
                }
                int nFiles = reader.ReadInt32();
                m_KnownMetList = new Hashtable(nFiles);
                for (uint i = 0; i != nFiles; i++)
                {
                    CKnownFileAttributes attributesKnownFile = new CKnownFileAttributes();
                    attributesKnownFile.Date     = new DateTime(((long)reader.ReadUInt32() * 10000000L) + 621355968000000000L);
                    attributesKnownFile.FileHash = reader.ReadBytes(16);
                    ushort nChunks = reader.ReadUInt16();
                    attributesKnownFile.HashSet = new ArrayList(nChunks);
                    for (uint chunk = 0; chunk != nChunks; chunk++)
                    {
                        attributesKnownFile.HashSet.Add(reader.ReadBytes(16));
                    }
                    CParameterReader ParameterReader;
                    uint             nparameters = reader.ReadUInt32();
                    for (uint parameter = 0; parameter != nparameters; parameter++)
                    {
                        ParameterReader = new CParameterReader(reader);
                        switch ((Protocol.FileTag)ParameterReader.id)
                        {
                        case Protocol.FileTag.Name:
                            attributesKnownFile.FileName = ParameterReader.valorString;
                            break;

                        case Protocol.FileTag.Size:
                            attributesKnownFile.Size = ParameterReader.valorNum;
                            break;

                        case Protocol.FileTag.Priority:
                            attributesKnownFile.Priority = (Constants.Priority)ParameterReader.valorNum;
                            break;

                        case Protocol.FileTag.Permissions:
                            attributesKnownFile.Permisions = (byte)ParameterReader.valorNum;
                            break;

                        case Protocol.FileTag.Comment:
                            attributesKnownFile.Comment = ParameterReader.valorString;
                            break;

                        case Protocol.FileTag.Rating:
                            attributesKnownFile.Rating = (byte)ParameterReader.valorNum;
                            break;

                        default:
                            break;
                            //faltan los parametros para las estadisticas....
                        }
                    }

                    if (!m_KnownMetList.ContainsKey(attributesKnownFile.FileName + (attributesKnownFile.Date.Ticks / 10000000L).ToString()))
                    {
                        m_KnownMetList.Add(attributesKnownFile.FileName + (attributesKnownFile.Date.Ticks / 10000000L).ToString(), attributesKnownFile);
                    }
                }

                reader.Close();
                knownmet.Close();
                return(true);
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.ToString());
                if (showErrorMessage)
                {
                    CLog.Log(Constants.Log.Notify, "Can not load known.met, hashing shared files");
                }
                try
                {
                    if (reader != null)
                    {
                        reader.Close();
                    }
                    if (knownmet != null)
                    {
                        knownmet.Close();
                    }
                }
                catch {};
                return(false);
            }
        }