コード例 #1
0
        public static byte ConvertStatusFlagToByte(UserStatusFlag statusFlag)
        {
            byte statusFlagRawByte = 0;

            if ((UserStatusFlag.Normal & statusFlag) == UserStatusFlag.Normal)
            {
                statusFlagRawByte |= 1;
            }
            if ((UserStatusFlag.Away & statusFlag) == UserStatusFlag.Away)
            {
                statusFlagRawByte |= 2;
            }
            if ((UserStatusFlag.Server & statusFlag) == UserStatusFlag.Server)
            {
                statusFlagRawByte |= 4;
            }
            if ((UserStatusFlag.Fireball & statusFlag) == UserStatusFlag.Fireball)
            {
                statusFlagRawByte |= 8;
            }
            if ((UserStatusFlag.TLS & statusFlag) == UserStatusFlag.TLS)
            {
                statusFlagRawByte |= 16;
            }
            return(statusFlagRawByte);
        }
コード例 #2
0
        public static UserStatusFlag ConvertByteToStatusFlag(byte value)
        {
            UserStatusFlag flag = UserStatusFlag.Unknown;

            if ((1 & value) == 1)
            {
                flag |= UserStatusFlag.Normal;
            }
            if ((2 & value) == 2)
            {
                flag |= UserStatusFlag.Away;
            }
            if ((4 & value) == 4)
            {
                flag |= UserStatusFlag.Server;
            }
            if ((8 & value) == 8)
            {
                flag |= UserStatusFlag.Fireball;
            }
            if ((16 & value) == 16)
            {
                flag |= UserStatusFlag.TLS;
            }
            return(flag);
        }
コード例 #3
0
        public MyINFO(Hub hub, byte flg)
            : base(hub, null)
        {
            //$MyINFO $ALL DisplayName Description goes here  † ZPoc V:3.00a, S:2, M:A † $ [email protected]$0$|
            this.info       = hub.Me;
            this.statusFlag = flg;
            System.Text.StringBuilder tag = new System.Text.StringBuilder();
            //ZPoC fix -- Tosk
            tag.Append(" ");
            string cross = "†";

            tag.Append(cross);
            tag.Append(" ");
            tag.Append(info.TagInfo.Version);
            tag.Append(", S:" + (info.TagInfo.Slots == -1 ? 0 : info.TagInfo.Slots).ToString());
            tag.Append(", M:");
            switch (info.TagInfo.Mode)
            {
            case Enums.ConnectionTypes.Socket5:     // Socket5
                tag.Append("5"); break;

            case Enums.ConnectionTypes.Direct:     // Active
                tag.Append("A"); break;

            case Enums.ConnectionTypes.Passive:     // Passive
            default:
                tag.Append("P"); break;
            }
            tag.Append(" ");
            tag.Append(cross);
            tag.Append(" ");

            UserStatusFlag status = ConvertByteToStatusFlag(statusFlag);

            if (info.ContainsKey(UserInfo.SECURE))
            {
                status |= UserStatusFlag.TLS;
            }

            Raw = "$MyINFO $ALL "
                  + info.DisplayName
                  + " "
                  + info.Description
                  + tag
                  + "$ $"
                  + info.Connection
                  + hub.Protocol.Encoding.GetString(new byte[] { ConvertStatusFlagToByte(status) }) + "$"
                  + info.Email + "$"
                  //+ info.Share
                  + "0"
                  + "$|";
            IsValid = true;
        }
コード例 #4
0
        // Receiving
        public MyINFO(Hub hub, string raw)
            : base(hub, raw)
        {
            int pos1, pos2;

            if ((pos1 = raw.IndexOf("$MyINFO $ALL ")) != -1)
            {
                if ((pos2 = raw.IndexOf(" ", 13)) > 13)
                {
                    from = raw.Substring(13, pos2 - 13);
                    // Zline<Z++ V:2.00,M:P,H:4/4/25,S:2>$ $DSL[email protected]$0$
                    string   temp     = raw.Substring(++pos2);
                    string[] sections = temp.Split('$');
                    info             = new UserInfo();
                    info.DisplayName = from;
                    info.Set(UserInfo.STOREID, hub.HubSetting.Address + hub.HubSetting.Port.ToString() + from);
                    if (sections.Length == 6)
                    {
                        int pos = 0;
                        if ((pos = sections[0].LastIndexOf('<')) != -1)
                        {
                            info.Description = sections[0].Substring(0, pos);
                            // <Z++ V:2.00,M:P,H:4/4/25,S:2>
                            info.TagInfo.Tag = sections[0].Substring(pos);
                            // Parsing of tag
                        }
                        else
                        {
                            info.Description = sections[0];
                        }
                        info.Connection = sections[2];
                        if (info.Connection.Length > 0)
                        {
                            statusFlag = (byte)info.Connection[info.Connection.Length - 1];
                            UserStatusFlag flag = ConvertByteToStatusFlag(statusFlag);
                            if ((flag & UserStatusFlag.TLS) == UserStatusFlag.TLS)
                            {
                                info.Set(UserInfo.SECURE, "");
                            }
                        }

                        info.Email = sections[3];
                        info.Share = sections[4];
                    }
                    if (!string.IsNullOrEmpty(info.DisplayName))
                    {
                        IsValid = true;
                    }
                }
            }
        }
コード例 #5
0
        public MyINFO(Hub hub, byte flg)
            : base(hub, null)
        {
            this.info       = hub.Me;
            this.statusFlag = flg;
            System.Text.StringBuilder tag = new System.Text.StringBuilder();
            tag.Append("<");
            tag.Append(info.TagInfo.Version);
            tag.Append(",M:");
            switch (info.TagInfo.Mode)
            {
            case Enums.ConnectionTypes.Socket5:     // Socket5
                tag.Append("5"); break;

            case Enums.ConnectionTypes.Direct:     // Active
                tag.Append("A"); break;

            case Enums.ConnectionTypes.Passive:     // Passive
            default:
                tag.Append("P"); break;
            }
            tag.Append(",H:");
            tag.Append(info.TagInfo.Normal.ToString() + "/"); // Normal
            tag.Append(info.TagInfo.Regged.ToString() + "/"); // Regged
            tag.Append(info.TagInfo.OP.ToString() + "");      // OP
            tag.Append(",S:" + (info.TagInfo.Slots == -1 ? 0 : info.TagInfo.Slots).ToString() + ">");

            UserStatusFlag status = ConvertByteToStatusFlag(statusFlag);

            if (info.ContainsKey(UserInfo.SECURE))
            {
                status |= UserStatusFlag.TLS;
            }

            Raw = "$MyINFO $ALL "
                  + info.DisplayName
                  + " "
                  + info.Description
                  + tag
                  + "$ $"
                  + info.Connection
                  + hub.Protocol.Encoding.GetString(new byte[] { ConvertStatusFlagToByte(status) }) + "$"
                  + info.Email + "$"
                  + (string.IsNullOrEmpty(info.Share) ? "0" : info.Share)
                  + "$|";
            IsValid = true;
        }
コード例 #6
0
ファイル: hubnmdcmessages.cs プロジェクト: musakasim/flowlib
 public static byte ConvertStatusFlagToByte(UserStatusFlag statusFlag)
 {
     byte statusFlagRawByte = 0;
     if ((UserStatusFlag.Normal & statusFlag) == UserStatusFlag.Normal)
         statusFlagRawByte |= 1;
     if ((UserStatusFlag.Away & statusFlag) == UserStatusFlag.Away)
         statusFlagRawByte |= 2;
     if ((UserStatusFlag.Server & statusFlag) == UserStatusFlag.Server)
         statusFlagRawByte |= 4;
     if ((UserStatusFlag.Fireball & statusFlag) == UserStatusFlag.Fireball)
         statusFlagRawByte |= 8;
     if ((UserStatusFlag.TLS & statusFlag) == UserStatusFlag.TLS)
         statusFlagRawByte |= 16;
     return statusFlagRawByte;
 }