Beispiel #1
0
        static List <DiskDataReport> GetDisks()
        {
            List <DiskDataReport> dd = new List <DiskDataReport>();

            foreach (ManagementObject volume in new ManagementObjectSearcher("Select * from Win32_Volume").Get())
            {
                DiskDataReport d = new DiskDataReport();
                d.MachineID              = SystemInfos.SysInfo.MachineID;
                d.Access                 = (DiskDataAccess)Convert.ToInt32(volume["Access"]);
                d.Automount              = Convert.ToBoolean(volume["Automount"]);
                d.Availability           = (DiskDataAvailability)Convert.ToInt32(volume["Availability"]);
                d.Capacity               = Convert.ToInt64(volume["Capacity"]);
                d.Caption                = Convert.ToString(volume["Caption"]);
                d.Compressed             = Convert.ToBoolean(volume["Compressed"]);
                d.ConfigManagerErrorCode = Convert.ToInt32(volume["ConfigManagerErrorCode"]);
                d.Description            = Convert.ToString(volume["Description"]);
                d.DeviceID               = Convert.ToString(volume["DeviceID"]);
                d.DirtyBitSet            = Convert.ToBoolean(volume["DirtyBitSet"]);
                d.DriveLetter            = Convert.ToString(volume["DriveLetter"]);
                d.DriveType              = (DiskDataDriveType)Convert.ToInt32(volume["DriveType"]);
                d.ErrorDescription       = Convert.ToString(volume["ErrorDescription"]);
                d.ErrorMethodology       = Convert.ToString(volume["ErrorMethodology"]);
                d.FileSystem             = Convert.ToString(volume["FileSystem"]);
                d.FreeSpace              = Convert.ToInt64(volume["FreeSpace"]);
                d.Label                 = Convert.ToString(volume["Label"]);
                d.LastErrorCode         = Convert.ToInt32(volume["LastErrorCode"]);
                d.MaximumFileNameLength = Convert.ToInt32(volume["MaximumFileNameLength"]);
                d.Name         = Convert.ToString(volume["Name"]);
                d.PNPDeviceID  = Convert.ToString(volume["PNPDeviceID"]);
                d.SerialNumber = Convert.ToInt64(volume["SerialNumber"]);
                d.Status       = Convert.ToString(volume["Status"]);
                dd.Add(d);
            }
            return(dd);
        }
Beispiel #2
0
        public RESTStatus ListDiskData(SQLLib sql, object dummy, NetworkConnectionInfo ni, string id)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            lock (ni.sqllock)
            {
                SqlDataReader dr;
                if (string.IsNullOrWhiteSpace(id) == false)
                {
                    if (Computers.MachineExists(sql, id) == false)
                    {
                        ni.Error   = "Access denied";
                        ni.ErrorID = ErrorFlags.InvalidData;
                        return(RESTStatus.NotFound);
                    }

                    dr = sql.ExecSQLReader("select DiskData.*,ComputerName from DiskData inner join ComputerAccounts on ComputerAccounts.MachineID=DiskData.MachineID where diskData.MachineID=@m order by MachineID,Caption",
                                           new SQLParam("@m", id));
                }
                else
                {
                    dr = sql.ExecSQLReader("select DiskData.*,ComputerName from DiskData inner join ComputerAccounts on ComputerAccounts.MachineID=DiskData.MachineID order by MachineID,Caption");
                }

                LstDiskData       = new ListDiskDataReport();
                LstDiskData.Items = new List <DiskDataReport>();

                while (dr.Read())
                {
                    DiskDataReport d = new DiskDataReport();
                    sql.LoadIntoClass(dr, d);
                    LstDiskData.Items.Add(d);
                }
                dr.Close();
            }

            return(RESTStatus.Success);
        }
Beispiel #3
0
 public frmPropertiesWindow(DiskDataReport cd)
 {
     InitializeComponent();
     data = cd;
 }
Beispiel #4
0
        public RESTStatus ReportDiskData(SQLLib sql, ListDiskDataReport DiskDataList, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            DiskDataList.MachineID = ni.Username;
            lock (ni.sqllock)
            {
                if (Convert.ToInt32(sql.ExecSQLScalar("SELECT COUNT(*) FROM ComputerAccounts WHERE MachineID=@m",
                                                      new SQLParam("@m", DiskDataList.MachineID))) == 0)
                {
                    ni.Error   = "Invalid MachineID";
                    ni.ErrorID = ErrorFlags.InvalidValue;
                    return(RESTStatus.NotFound);
                }
            }

            if (DiskDataList.Items == null)
            {
                ni.Error   = "Invalid Items";
                ni.ErrorID = ErrorFlags.InvalidValue;
                return(RESTStatus.Fail);
            }

            lock (ni.sqllock)
            {
                sql.ExecSQL("UPDATE DiskData SET DevicePresent=0 WHERE MachineID=@m",
                            new SQLParam("@m", DiskDataList.MachineID));
            }
            foreach (DiskDataReport dr in DiskDataList.Items)
            {
                lock (ni.sqllock)
                {
                    sql.ExecSQL("DELETE FROM DiskData WHERE MachineID=@m AND DeviceID=@d",
                                new SQLParam("@d", dr.DeviceID),
                                new SQLParam("@m", DiskDataList.MachineID));
                }
            }

            List <List <SQLData> > bulkdata = new List <List <SQLData> >();
            DateTime DT = DateTime.Now;

            DiskDataReport cdr = null;

            lock (ni.sqllock)
            {
                try
                {
                    sql.BeginTransaction();
                    sql.SEHError = true;

                    foreach (DiskDataReport dr in DiskDataList.Items)
                    {
                        sql.InsertMultiData("DiskData",
                                            new SQLData("MachineID", dr.MachineID),
                                            new SQLData("DevicePresent", true),
                                            new SQLData("LastUpdated", DT),
                                            new SQLData("DeviceID", dr.DeviceID),
                                            new SQLData("Access", dr.Access),
                                            new SQLData("Automount", dr.Automount),
                                            new SQLData("Availability", dr.Availability),
                                            new SQLData("Capacity", dr.Capacity),
                                            new SQLData("Caption", dr.Caption),
                                            new SQLData("Compressed", dr.Compressed),
                                            new SQLData("ConfigManagerErrorCode", dr.ConfigManagerErrorCode),
                                            new SQLData("Description", dr.Description),
                                            new SQLData("DirtyBitSet", dr.DirtyBitSet),
                                            new SQLData("DriveLetter", dr.DriveLetter),
                                            new SQLData("DriveType", dr.DriveType),
                                            new SQLData("ErrorDescription", dr.ErrorDescription),
                                            new SQLData("ErrorMethodology", dr.ErrorMethodology),
                                            new SQLData("FileSystem", dr.FileSystem),
                                            new SQLData("FreeSpace", dr.FreeSpace),
                                            new SQLData("Label", dr.Label),
                                            new SQLData("LastErrorCode", dr.LastErrorCode),
                                            new SQLData("MaximumFileNameLength", dr.MaximumFileNameLength),
                                            new SQLData("Name", dr.Name),
                                            new SQLData("PNPDeviceID", dr.PNPDeviceID),
                                            new SQLData("SerialNumber", dr.SerialNumber),
                                            new SQLData("Status", dr.Status));
                    }
                    sql.CommitTransaction();
                }
                catch (Exception ee)
                {
                    sql.RollBackTransaction();
                    FoxEventLog.WriteEventLog("DB Error: Cannot insert data to DiskData: " + ee.ToString() + "\r\n\r\nJSON: " +
                                              JsonConvert.SerializeObject(cdr, Formatting.Indented), System.Diagnostics.EventLogEntryType.Error);
                    return(RESTStatus.ServerError);
                }
                finally
                {
                    sql.SEHError = false;
                }
            }

            Thread t = new Thread(new ParameterizedThreadStart(new DReportingThread(ReportingThread)));

            t.Start(DiskDataList);

            return(RESTStatus.Success);
        }