public override void HandleRequest(Request request)
        {
            if (request is AttributeRequest)
            {
                AttributeRequest attr_request = request as AttributeRequest;
                Database         db           = new Database();
                Attribute        attr         = new Attribute();

                using (SQLiteConnection conn = db.Connection)
                {
                    conn.Open();

                    if (attr_request.Get)
                    {
                        string value = attr.Get(attr_request.Path, conn);
                        if (string.IsNullOrEmpty(value) == false)
                        {
                            attr_request.Value = value;
                            request.Handled();
                        }
                    }
                    else
                    {
                        attr.Set(attr_request.Path, attr_request.Value, conn);
                        request.Handled();
                    }
                }
            }
        }
Exemple #2
0
        public void RespondNull()
        {
            var req = new AttributeRequest();

            req.TypeUri = "http://someType";
            req.Count   = 1;
            req.Respond(null);
        }
Exemple #3
0
        public void RespondTooManyValues()
        {
            var req = new AttributeRequest();

            req.TypeUri = "http://someType";
            req.Count   = 1;
            req.Respond("value1", "value2");
        }
Exemple #4
0
        public void CtorFull()
        {
            var req = new AttributeRequest(WellKnownAttributes.Contact.Email, true, 5);

            Assert.AreEqual(WellKnownAttributes.Contact.Email, req.TypeUri);
            Assert.IsTrue(req.IsRequired);
            Assert.AreEqual(5, req.Count);
        }
Exemple #5
0
        public void CtorDefault()
        {
            AttributeRequest req = new AttributeRequest();

            Assert.AreEqual(1, req.Count);
            Assert.IsNull(req.TypeUri);
            Assert.IsFalse(req.IsRequired);
        }
Exemple #6
0
        public void RespondSimpleValue()
        {
            var req = new AttributeRequest();

            req.TypeUri = "http://someType";
            var resp = req.Respond("value");

            Assert.AreEqual(req.TypeUri, resp.TypeUri);
            Assert.AreEqual(1, resp.Values.Count);
            Assert.AreEqual("value", resp.Values[0]);
        }
Exemple #7
0
        public override CollectedData OnAcquire()
        {
            List <string>    drive_names = new List <string>();
            AttributeRequest request     = new AttributeRequest(Context.ID.Name + ".all.drives.descriptions", true);

            RequestBus.Instance.MakeRequest(request);
            if (request.IsHandled)
            {
                try
                {
                    Dictionary <string, string> dict = JsonConvert.DeserializeObject <Dictionary <string, string> >(request.Value);
                    drive_names = new List <string>(dict.Keys);
                }
                catch (Exception)
                {
                }
            }

            CollectedData basedata = base.OnAcquire();
            List <Data>   dataList = new List <Data>();

            if (basedata.DataIsCollected)
            {
                List <DictionaryData> speedData = basedata.D.Select(w => w as DictionaryData).ToList();
                while (speedData.Count > 0)
                {
                    var speed = speedData[0];
                    speedData.RemoveAt(0);

                    if (speed.Data.ContainsKey("PercentDiskTime") == false ||
                        speed.Data.ContainsKey("AvgDiskQueueLength") == false ||
                        speed.Data.ContainsKey("Name") == false)
                    {
                        continue;
                    }

                    var    d          = new DictionaryData(Context);
                    string drive_name = speed.Data["Name"].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).Last();
                    d.Data["Disk Time %"]       = speed.Data["PercentDiskTime"];
                    d.Data["Avg Disk Q Length"] = speed.Data["AvgDiskQueueLength"];
                    d.Data["Disk Name"]         = drive_name;
                    bool is_total = drive_name.ToLower().Contains("total");
                    if (is_total == false &&
                        (drive_names.Count == 0 || drive_names.Contains(drive_name.ToUpper())))
                    {
                        dataList.Add(d);
                    }
                }
            }

            return(new CollectedData(Context, basedata.DataIsCollected && dataList.Count > 0, dataList));
        }
Exemple #8
0
        public MessageBase Read(SlpReader reader)
        {
            var v = reader.ReadByte();
            if (v != 1 && v != 2)
                throw new ServiceProtocolException(ServiceErrorCode.VersionNotSupported);

            var tmp = reader.ReadByte();
            MessageBase result = null;
            switch (tmp)
            {
                case 1:
                    result = new ServiceRequest();
                    break;
                case 2:
                    result = new ServiceReply();
                    break;
                case 3:
                    result = new ServiceRegistrationRequest();
                    break;
                case 4:
                    result = new ServiceDeregistrationRequest();
                    break;
                case 5:
                    result = new ServiceAcknowledgement();
                    break;
                case 6:
                    result = new AttributeRequest();
                    break;
                case 7:
                    result = new AttributeReply();
                    break;
                case 8:
                    result = new DirectoryAgentAdvert();
                    break;
                case 9:
                    result = new ServiceTypeRequest();
                    break;
                case 10:
                    result = new ServiceTypeReply();
                    break;
                case 11:
                    result = new ServiceAgentAdvert();
                    break;
                default:
                    throw new ServiceProtocolException(ServiceErrorCode.ParseError);
            }

            result.Version = v;
            result.Create(reader);

            return result;
        }
Exemple #9
0
        public void RespondTwoValues()
        {
            var req = new AttributeRequest();

            req.TypeUri = "http://someType";
            req.Count   = 2;
            var resp = req.Respond("value1", "value2");

            Assert.AreEqual(req.TypeUri, resp.TypeUri);
            Assert.AreEqual(2, resp.Values.Count);
            Assert.AreEqual("value1", resp.Values[0]);
            Assert.AreEqual("value2", resp.Values[1]);
        }
        public IActionResult GetAttributehierarchy([FromBody] AttributeRequest request)
        {
            var response = new OperationResponse <ICollection>();

            try
            {
                response.Data = _productService.GetAttributehierarchy(request);
            }
            catch (Exception exception)
            {
                response.State = ResponseState.Error;
                response.Messages.Add(exception.Message + " StackTrace==> " + exception.StackTrace);
                _logger.LogError(exception, "Error Getting GetAttributehierarchy==>" + exception.StackTrace, request);
            }
            return(new JsonResult(response));
        }
        public void EqualityTests()
        {
            var req1 = new AttributeRequest();
            var req2 = new AttributeRequest();

            Assert.AreEqual(req1, req2);

            req1.IsRequired = true;
            Assert.AreNotEqual(req1, req2);
            req2.IsRequired = true;
            Assert.AreEqual(req1, req2);

            req1.Count = 3;
            Assert.AreNotEqual(req1, req2);
            req2.Count = 3;
            Assert.AreEqual(req1, req2);

            req1.TypeUri = "http://hi";
            Assert.AreNotEqual(req1, req2);
            req2.TypeUri = "http://hi";
            Assert.AreEqual(req1, req2);
        }
Exemple #12
0
        public MessageBase Read(SlpReader reader)
        {
            var v = reader.ReadByte();

            if (v != 1 && v != 2)
            {
                throw new ServiceProtocolException(ServiceErrorCode.VersionNotSupported);
            }

            var         tmp    = reader.ReadByte();
            MessageBase result = null;

            switch (tmp)
            {
            case 1:
                result = new ServiceRequest();
                break;

            case 2:
                result = new ServiceReply();
                break;

            case 3:
                result = new ServiceRegistrationRequest();
                break;

            case 4:
                result = new ServiceDeregistrationRequest();
                break;

            case 5:
                result = new ServiceAcknowledgement();
                break;

            case 6:
                result = new AttributeRequest();
                break;

            case 7:
                result = new AttributeReply();
                break;

            case 8:
                result = new DirectoryAgentAdvert();
                break;

            case 9:
                result = new ServiceTypeRequest();
                break;

            case 10:
                result = new ServiceTypeReply();
                break;

            case 11:
                result = new ServiceAgentAdvert();
                break;

            default:
                throw new ServiceProtocolException(ServiceErrorCode.ParseError);
            }

            result.Version = v;
            result.Create(reader);

            return(result);
        }
Exemple #13
0
        public void SetCountNegative()
        {
            var req = new AttributeRequest();

            req.Count = -1;
        }
Exemple #14
0
        public void SetCountZero()
        {
            var req = new AttributeRequest();

            req.Count = 0;
        }
Exemple #15
0
        public ActionResult OpenIdLogin() {
            string returnUrl = VirtualPathUtility.ToAbsolute("~/");
            var openid = new OpenIdRelyingParty();
            var response = openid.GetResponse();
            if (response == null) {
                // Stage 2: user submitting Identifier
                Identifier id;
                if (Identifier.TryParse(Request["openid_identifier"], out id)) {
                    try {
                        IAuthenticationRequest req = openid.CreateRequest(Request["openid_identifier"]);

                        var fetch = new FetchRequest();
                        //ask for more info - the email address
                        var item = new AttributeRequest(WellKnownAttributes.Contact.Email);
                        item.IsRequired = true;
                        fetch.Attributes.Add(item);
                        req.AddExtension(fetch);

                        return req.RedirectingResponse.AsActionResult();
                    } catch (ProtocolException ex) {
                        ViewData["Message"] = ex.Message;
                        return View("Logon");
                    }
                } else {
                    ViewData["Message"] = "Invalid identifier";
                    return View("Logon");
                }
            } else {
                // Stage 3: OpenID Provider sending assertion response
                switch (response.Status) {
                    case AuthenticationStatus.Authenticated:

                        var fetch = response.GetExtension<FetchResponse>();
                        string name = response.FriendlyIdentifierForDisplay;
                        if (fetch != null) {
                            IList<string> emailAddresses = fetch.Attributes[WellKnownAttributes.Contact.Email].Values;
                            string email = emailAddresses.Count > 0 ? emailAddresses[0] : null;
                            //don't show the email - it's creepy. Just use the name of the email
                            name = email.Substring(0, email.IndexOf('@'));
                        } else {

                            name = name.Substring(0, name.IndexOf('.'));
                        }

                        //FormsAuthentication.SetAuthCookie(name, false);
                        SetCookies(name, name);
                        AuthAndRedirect(name, name);

                        if (!string.IsNullOrEmpty(returnUrl)) {
                            return Redirect(returnUrl);
                        } else {
                            return RedirectToAction("Index", "Home");
                        }
                    case AuthenticationStatus.Canceled:
                        ViewData["Message"] = "Canceled at provider";
                        return View("Logon");
                    case AuthenticationStatus.Failed:
                        ViewData["Message"] = response.Exception.Message;
                        return View("Logon");
                }
            }
            return new EmptyResult();

        }
        public override CollectedData OnAcquire()
        {
            CollectedData cd          = base.OnAcquire();
            CollectedData return_data = new CollectedData(Context, false);

            if (cd.DataIsCollected)
            {
                List <DictionaryData> usage_data = cd.D.Select(w => w as DictionaryData).ToList();
                //MonitoredDrivesRequest request = new MonitoredDrivesRequest(Context.Name);
                //RequestBus.Instance.MakeRequest(request);
                List <Data> data = new List <Data>();

                // Package the drive information into a single Data object that maps the drive letter to a DiskUsage
                // object that maintains the capacity/free/used values for that drive.
                GenericDictionaryData <DiskUsage> d = new GenericDictionaryData <DiskUsage>(Context);
                //data.Add(d);

                // Unfortunately, there's no way to determine the drive type when determining the disk speeds (see DiskSpeed class).
                // So that we're reporting the same drives, record the drive letters here, then match them when we do the disk speed.
                // And we also want to keep track of the drive letter => name ("C:" => "OSDisk", for example), so let's grab that now
                // as well.
                Dictionary <string, string> drive_descriptions = new Dictionary <string, string>();

                while (usage_data.Count > 0)
                {
                    DictionaryData usage = usage_data[0];
                    usage_data.RemoveAt(0);

                    // Only report local disks. Don't do removeable (floppy or thumb drive), CDs, or network drives.
                    if (int.TryParse(usage.Data["DriveType"], out int drive_type) &&
                        drive_type == (int)EDriveType.LocalDisk &&
                        usage.Data.ContainsKey("Size") &&
                        usage.Data.ContainsKey("FreeSpace") &&
                        usage.Data.ContainsKey("Name") &&
                        usage.Data.ContainsKey("VolumeName"))
                    {
                        string drive_name  = usage.Data["Name"].Trim();
                        string description = usage.Data["VolumeName"].Trim();
                        drive_descriptions[drive_name] = description;

                        if (ulong.TryParse(usage.Data["Size"], out ulong c) &&
                            ulong.TryParse(usage.Data["FreeSpace"], out ulong f))
                        {
                            d.Data[drive_name] = new DiskUsage()
                            {
                                CapacityNum = c, FreeNum = f
                            };
                        }
                    }
                }

                if (d.Data.Count > 0)
                {
                    return_data.DataIsCollected = true;
                    return_data.D.Add(d);
                }

                // Record the drive descriptions as an attribute in the database. We will also use this to get the drive letters
                // when needed.
                string           json         = JsonConvert.SerializeObject(drive_descriptions);
                AttributeRequest attr_request = new AttributeRequest(Context.ID.Name + ".all.drives.descriptions", false)
                {
                    Value = json
                };
                RequestBus.Instance.MakeRequest(attr_request);
            }

            return(return_data);
        }