Example #1
0
        public List <string> TryDynamicTypeDecoding(DirectoryAttribute attrib, ref bool match)
        {
            match = false;

            List <string> ret = new List <string>();

            DynamicAttributeAssociator assoc = ForestBase.ADHelperDynamicDLL.AssociatorList.GetValueSafe <string, DynamicAttributeAssociator>(attrib.Name);

            if (assoc != null)
            {
                switch (assoc.AssociateFrom)
                {
                case ASSOCIATE_FROM.ENUM:

                    ret = DynamicEnumDecoding(attrib, ref match);

                    break;

                case ASSOCIATE_FROM.BERCONVERTER:

                    ret = DynamicBerDecoding(attrib, assoc, ref match);

                    break;

                case ASSOCIATE_FROM.DICTIONARY:

                    ret = DynamicDictDecoding(attrib, assoc, ref match);

                    break;
                }
            }

            return(ret);
        }
Example #2
0
        private void GetAttributeAssociatorFromXML(XElement xmlAssoc)
        {
            DynamicAttributeAssociator dynassoc = new DynamicAttributeAssociator();

            dynassoc.Name = xmlAssoc.Attributes(NAME_ID).FirstOrDefault().Value;

            if (xmlAssoc.Attributes(ENUM_ID).Count() != 0)
            {
                dynassoc.EnumName = xmlAssoc.Attributes(ENUM_ID).FirstOrDefault().Value;

                dynassoc.AssociateFrom = ASSOCIATE_FROM.ENUM;
            }

            else if (xmlAssoc.Attributes(DECODE_ID).Count() != 0)
            {
                dynassoc.BerConverterName = xmlAssoc.Attributes(DECODE_ID).FirstOrDefault().Value;

                dynassoc.AssociateFrom = ASSOCIATE_FROM.BERCONVERTER;
            }

            else if (xmlAssoc.Attributes(DICT_ID).Count() != 0)
            {
                dynassoc.DictionaryName = xmlAssoc.Attributes(DICT_ID).FirstOrDefault().Value;

                dynassoc.AssociateFrom = ASSOCIATE_FROM.DICTIONARY;
            }

            if (dynassoc.Name.Length != 0)
            {
                AssociatorList.Add(dynassoc.Name, dynassoc);
            }
        }
Example #3
0
        public Type GetEnumFromDynamicAssociator(string attribName)
        {
            Type ret = null;

            if (AssociatorList.ContainsKey(attribName))
            {
                DynamicAttributeAssociator assoc = AssociatorList[attribName];

                if (assoc.AssociateFrom == ASSOCIATE_FROM.ENUM)
                {
                    ret = EnumList.GetValueSafe <string, Type>(assoc.EnumName);
                }
            }

            return(ret);
        }
Example #4
0
        private void AddAssociatorToXml(DynamicAttributeAssociator assoc, ref XElement xmlRoot)
        {
            bool goon = true;

            XAttribute xmltype = null;

            switch (assoc.AssociateFrom)
            {
            case ASSOCIATE_FROM.BERCONVERTER:

                xmltype = new XAttribute(DECODE_ID, assoc.BerConverterName);
                break;

            case ASSOCIATE_FROM.ENUM:

                xmltype = new XAttribute(ENUM_ID, assoc.EnumName);
                break;

            case ASSOCIATE_FROM.DICTIONARY:

                xmltype = new XAttribute(DICT_ID, assoc.DictionaryName);
                break;

            //case ASSOCIATE_FROM.TYPE:

            //    xmltype = new XAttribute(SYSTEMTYPE_ID, assoc.TypeName);
            //    break;

            default:

                goon = false;
                break;
            }

            if (goon)
            {
                XElement xmlassoc = new XElement(ASSOCIATOR_ID, new object[] { new XAttribute(NAME_ID, assoc.Name), xmltype });

                xmlRoot.Add(xmlassoc);
            }
        }
Example #5
0
        public List <string> DynamicBerDecoding(DirectoryAttribute attrib, DynamicAttributeAssociator assoc, ref bool match)
        {
            List <string> ret = new List <string>();

            DynamicBerConverter dynber = ForestBase.ADHelperDynamicDLL.BerConverterList.GetValueSafe <string, DynamicBerConverter>(assoc.BerConverterName);

            if (dynber != null)
            {
                List <string> fields = new List <string>();

                try
                {
                    foreach (byte[] value in attrib.GetValues(typeof(byte[])))
                    {
                        fields = dynber.DecodePrintable(value);

                        if (fields.Count != 0)
                        {
                            ret.AddRange(fields);
                        }

                        else
                        {
                            ret.AddFormatted("\t\t<not decoded>: {0}", ASCIIEncoding.Unicode.GetString(value));
                        }
                    }

                    match = true;
                }

                catch (Exception ex)
                {
                    ex.ToDummy();

                    ret.AddFormatted("\t\t<not decoded>: {0}", attrib[0].GetType().ToString());
                }
            }

            return(ret);
        }
Example #6
0
        public List <string> DynamicDictDecoding(DirectoryAttribute attrib, DynamicAttributeAssociator assoc, ref bool match)
        {
            List <string> ret = new List <string>();

            Dictionary <string, string> dyndict = ForestBase.ADHelperDynamicDLL.DictionaryList.GetValueSafe <string, Dictionary <string, string> >(assoc.DictionaryName);

            if (dyndict != null)
            {
                try
                {
                    foreach (string value in attrib.GetValues(typeof(string)))
                    {
                        if (dyndict.ContainsKey(value))
                        {
                            ret.AddFormatted("\t\t<{0}> ({1})", dyndict[value], value);
                        }

                        else
                        {
                            ret.AddFormatted("\t\t<not decoded>: ({0})", value);
                        }
                    }

                    match = true;
                }

                catch (Exception ex)
                {
                    ex.ToDummy();

                    ret.AddFormatted("\t\t<not decoded>: {0}", attrib[0].GetType().ToString());
                }
            }

            return(ret);
        }