Exemplo n.º 1
0
        private void QDAddUser_Load(object sender, EventArgs e)
        {
            if (EditID != null)
            {
                using (WrapMySQL mysql = new WrapMySQL(DBData))
                {
                    if (!QDLib.ManagedDBOpen(mysql))
                    {
                        QDLib.DBOpenFailed(); return;
                    }

                    Username    = mysql.ExecuteScalar <string>("SELECT Username FROM qd_users WHERE ID = ?", EditID);
                    DisplayName = mysql.ExecuteScalar <string>("SELECT Name FROM qd_users WHERE ID = ?", EditID);
                    mysql.Close();

                    txbUsername.Text    = Username;
                    txbDisplayName.Text = DisplayName;
                }

                this.Text             = "Edit User";
                btnSubmit.Text        = "Save Changes";
                lblRegisterTitle.Text = "Update user-data";
                lblPassword.Text      = "New Password";
            }
        }
Exemplo n.º 2
0
 public void WrapMySQL_SQLScalarUntypedString_Success()
 {
     using (WrapMySQL sql = new WrapMySQL(dbHost, sbName, dbUser, dbPass))
     {
         sql.Open();
         object res = sql.ExecuteScalar("SELECT QDValue FROM qd_info WHERE QDKey = ?", "DefaultDomain");
         sql.Close();
         Assert.AreEqual("endevx", Convert.ToString(res));
     }
 }
Exemplo n.º 3
0
 public void WrapMySQL_SQLScalarUntypedInt_Success()
 {
     using (WrapMySQL sql = new WrapMySQL(dbHost, sbName, dbUser, dbPass))
     {
         sql.Open();
         object res = sql.ExecuteScalar("SELECT COUNT(*) FROM qd_drives");
         sql.Close();
         Assert.AreEqual(10, Convert.ToInt32(res));
     }
 }
Exemplo n.º 4
0
 public void WrapMySQL_SQLScalarTypedInt_Success()
 {
     using (WrapMySQL sql = new WrapMySQL(dbHost, sbName, dbUser, dbPass))
     {
         sql.Open();
         int res = sql.ExecuteScalar <int>("SELECT COUNT(*) FROM qd_drives");
         sql.Close();
         Assert.AreEqual(10, res);
     }
 }
Exemplo n.º 5
0
        private void lbxDevices_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!QDLib.ManagedDBOpen(mysql))
            {
                QDLib.DBOpenFailed(); return;
            }
            txbDeviceMac.Text  = mysql.ExecuteScalar <string>("SELECT MacAddress FROM qd_devices WHERE ID = ?", lbxDevices.SelectedValue);
            txbDeviceName.Text = mysql.ExecuteScalar <string>("SELECT DeviceName FROM qd_devices WHERE ID = ?", lbxDevices.SelectedValue);
            txbLogonName.Text  = mysql.ExecuteScalar <string>("SELECT LogonName FROM qd_devices WHERE ID = ?", lbxDevices.SelectedValue);
            mysql.Close();

            int userCount = QDLib.UserCountAtDevice(lbxDevices.SelectedValue.ToString(), dbData);

            if (userCount == 1)
            {
                lblDeviceUserCount.Text = $"{userCount} User logged into Q-Drive on this{Environment.NewLine}machine / account";
            }
            else
            {
                lblDeviceUserCount.Text = $"{userCount} Users logged into Q-Drive on this{Environment.NewLine}machine / account";
            }
        }
Exemplo n.º 6
0
        private void LoadAllData()
        {
            try
            {
                using (WrapSQLite sqlite = new WrapSQLite(QDInfo.ConfigFile))
                {
                    if (!QDLib.ManagedDBOpen(sqlite))
                    {
                        QDLib.DBOpenFailed(); return;
                    }

                    bool localConnection = !Convert.ToBoolean(sqlite.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.IsOnlineLinked));

                    sqlite.Close();

                    if (localConnection)
                    {
                        pnlLocal.BringToFront();
                        return;
                    }

                    if (!QDLib.ManagedDBOpen(sqlite))
                    {
                        QDLib.DBOpenFailed(); return;
                    }
                    dbData.Hostname = Cipher.Decrypt(sqlite.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.DBHost), QDInfo.LocalCipherKey);
                    dbData.Username = Cipher.Decrypt(sqlite.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.DBUsername), QDInfo.LocalCipherKey);
                    dbData.Password = Cipher.Decrypt(sqlite.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.DBPassword), QDInfo.LocalCipherKey);
                    dbData.Database = Cipher.Decrypt(sqlite.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.DBName), QDInfo.LocalCipherKey);
                    sqlite.Close();
                }

                mysql = new WrapMySQL(dbData);

                if (!QDLib.ManagedDBOpen(mysql))
                {
                    QDLib.DBOpenFailed(); return;
                }
                userCanToggleKeepLoggedIn    = Convert.ToBoolean(mysql.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.UserCanToggleKeepLoggedIn));
                userCanAddPrivateDrive       = Convert.ToBoolean(mysql.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.UserCanAddPrivateDrive));
                userCanAddPublicDrive        = Convert.ToBoolean(mysql.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.UserCanAddPublicDrive));
                userCanSelfRegister          = Convert.ToBoolean(mysql.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.UserCanSelfRegister));
                useLoginAsDriveAuth          = Convert.ToBoolean(mysql.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.UseLoginAsDriveAuthentication));
                forceLoginDriveAuth          = Convert.ToBoolean(mysql.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.ForceLoginAsDriveAuthentication));
                disconnectDrivesAtShutdown   = Convert.ToBoolean(mysql.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.DisconnectDrivesAtShutdown));
                logUserActions               = Convert.ToBoolean(mysql.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.LogUserActions));
                userCanChangeManagerSettings = Convert.ToBoolean(mysql.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.UserCanChangeManagerSettings));
                defaultDomain  = mysql.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.DefaultDomain);
                masterPassword = mysql.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.MasterPassword);
                mysql.Close();
            }
            catch
            {
                MessageBox.Show("An error occured whilst trying to connect to the online-database.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.Close();
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Loggs user-actions to the online log
        /// </summary>
        /// <param name="pUserID">User-ID</param>
        /// <param name="pLogAction">Log Action</param>
        /// <param name="pDBData">DB connection data</param>
        /// <param name="pLogUserActionAllowed">Global flag to allow or deny the logging of data</param>
        public static void LogUserConnection(string pUserID, QDLogAction pLogAction, WrapMySQLData pDBData, bool pLogUserActionAllowed)
        {
            if (string.IsNullOrEmpty(pUserID))
            {
                return;
            }

            try
            {
                using (WrapMySQL mysql = new WrapMySQL(pDBData))
                {
                    string deviceID;
                    string deviceMac = GetMACAddress();

                    if (!QDLib.ManagedDBOpen(mysql))
                    {
                        QDLib.DBOpenFailed(); return;
                    }
                    mysql.TransactionBegin();

                    try
                    {
                        // Add device to DB if it doesn't exist. Get device ID
                        if (mysql.ExecuteScalar <int>("SELECT COUNT(*) FROM qd_devices WHERE MacAddress = ? AND LogonName = ? AND DeviceName = ?", deviceMac, Environment.UserName, Environment.MachineName) == 0)
                        {
                            deviceID = Guid.NewGuid().ToString();
                            mysql.ExecuteNonQuery("INSERT INTO qd_devices (ID, MacAddress, LogonName, DeviceName) VALUES (?,?,?,?)",
                                                  deviceID,
                                                  deviceMac,
                                                  Environment.UserName,
                                                  Environment.MachineName
                                                  );
                        }
                        else
                        {
                            deviceID = mysql.ExecuteScalar <string>("SELECT ID FROM qd_devices WHERE MacAddress = ? AND LogonName = ? AND DeviceName = ?", deviceMac, Environment.UserName, Environment.MachineName);
                        }

                        // Log device action.
                        if (pLogUserActionAllowed)
                        {
                            mysql.ExecuteNonQuery("INSERT INTO qd_conlog (ID, UserID, DeviceID, LogTime, LogAction) VALUES (?,?,?, NOW() ,?)",
                                                  Guid.NewGuid(),
                                                  pUserID,
                                                  deviceID,
                                                  pLogAction
                                                  );
                        }

                        mysql.TransactionCommit();
                    }
                    catch
                    {
                        mysql.TransactionRollback();
                    }

                    mysql.Close();
                }
            }
            catch { }
        }
Exemplo n.º 8
0
        private void UpdateDatagrid()
        {
            QDLoader qdLoader = new QDLoader();

            qdLoader.Show();

            BrowserSort sort = BrowserSort.None;

            if (!QDLib.ManagedDBOpen(mysql))
            {
                QDLib.DBOpenFailed(); qdLoader.Close(); return;
            }

            totalEntryCount = mysql.ExecuteScalar <int>("SELECT COUNT(*) FROM qd_conlog");

            bool abort = false;

            if (string.IsNullOrEmpty(SelectedObjectID))
            {
                sort = BrowserSort.AllEntries;
            }
            else if (SelectedObjectID.StartsWith("ACT="))
            {
                sort = BrowserSort.SortedByActionType;
            }
            else if (mysql.ExecuteScalar <int>("SELECT COUNT(*) FROM qd_users WHERE ID = ?", SelectedObjectID) != 0)
            {
                sort = BrowserSort.SortedByUsers;
            }
            else if (mysql.ExecuteScalar <int>("SELECT COUNT(*) FROM qd_devices WHERE ID = ?", SelectedObjectID) != 0)
            {
                sort = BrowserSort.SortedByDevice;
            }
            else
            {
                abort = true;
            }

            mysql.Close();

            if (abort)
            {
                qdLoader.Close();
                return;
            }

            switch (cbxEntryLimit.SelectedIndex)
            {
            case 0: listLimitSize = 50; break;

            case 1: listLimitSize = 100; break;

            case 2: listLimitSize = 250; break;

            case 3: listLimitSize = 500; break;

            case 4: listLimitSize = 1000; break;

            case 5: listLimitSize = 5000; break;

            default: listLimitSize = -1; break;
            }

            if (listOffset <= 0 || listLimitSize == -1)
            {
                btnJumpToFirst.Enabled = false; btnJumpToFirst.BackColor = Color.DarkGray;
            }
            else
            {
                btnJumpToFirst.Enabled = true; btnJumpToFirst.BackColor = Color.Gainsboro;
            }

            if (listOffset <= 0 || listLimitSize == -1)
            {
                btnJumpBack.Enabled = false; btnJumpBack.BackColor = Color.DarkGray;
            }
            else
            {
                btnJumpBack.Enabled = true; btnJumpBack.BackColor = Color.Gainsboro;
            }

            if (listOffset + listLimitSize > totalEntryCount || listLimitSize == -1)
            {
                btnJumpToNext.Enabled = false; btnJumpToNext.BackColor = Color.DarkGray;
            }
            else
            {
                btnJumpToNext.Enabled = true; btnJumpToNext.BackColor = Color.Gainsboro;
            }

            maxOffset = 0;
            while (listLimitSize + maxOffset < totalEntryCount)
            {
                maxOffset += listLimitSize;
            }

            if (listOffset >= maxOffset)
            {
                btnJumpToLast.Enabled = false; btnJumpToLast.BackColor = Color.DarkGray;
            }
            else
            {
                btnJumpToLast.Enabled = true; btnJumpToLast.BackColor = Color.Gainsboro;
            }

            string limitString;

            if (listLimitSize == -1)
            {
                limitString = "";
            }
            else
            {
                limitString = $"LIMIT {listOffset},{listLimitSize}";
            }

            string sqlQuery = "";

            switch (sort)
            {
            case BrowserSort.AllEntries:
                sqlQuery = $"SELECT " +
                           $"*, " +
                           $"qd_conlog.ID AS MainID, " +
                           $"CONCAT(qd_users.Name, ' (', qd_users.Username, ')') AS UserDisplay, " +
                           $"CONCAT(qd_devices.LogonName, ' @ ', qd_devices.DeviceName) AS DeviceDisplay " +
                           $"FROM qd_conlog " +
                           $"INNER JOIN qd_users ON qd_conlog.UserID = qd_users.ID " +
                           $"INNER JOIN qd_devices ON qd_conlog.DeviceID = qd_devices.ID " +
                           $"ORDER BY LogTime DESC " + limitString;
                lblActionDescriptor.Text = "Showing all recorded actions.";
                break;

            case BrowserSort.SortedByActionType:
                sqlQuery = $"SELECT " +
                           $"*, " +
                           $"qd_conlog.ID AS MainID, " +
                           $"CONCAT(qd_users.Name, ' (', qd_users.Username, ')') AS UserDisplay, " +
                           $"CONCAT(qd_devices.LogonName, ' @ ', qd_devices.DeviceName) AS DeviceDisplay " +
                           $"FROM qd_conlog " +
                           $"INNER JOIN qd_users ON qd_conlog.UserID = qd_users.ID " +
                           $"INNER JOIN qd_devices ON qd_conlog.DeviceID = qd_devices.ID " +
                           $"WHERE qd_conlog.LogAction = ? " +
                           $"ORDER BY LogTime DESC " + limitString;
                lblActionDescriptor.Text = $"Showing all recorded actions of type \"{(QDLogAction)Convert.ToInt32(SelectedObjectID.Replace("ACT=", ""))}\".";
                break;

            case BrowserSort.SortedByDevice:
                sqlQuery = $"SELECT " +
                           $"*, " +
                           $"qd_conlog.ID AS MainID, " +
                           $"CONCAT(qd_users.Name, ' (', qd_users.Username, ')') AS UserDisplay, " +
                           $"CONCAT(qd_devices.LogonName, ' @ ', qd_devices.DeviceName) AS DeviceDisplay " +
                           $"FROM qd_conlog " +
                           $"INNER JOIN qd_users ON qd_conlog.UserID = qd_users.ID " +
                           $"INNER JOIN qd_devices ON qd_conlog.DeviceID = qd_devices.ID " +
                           $"WHERE qd_devices.ID = ? " +
                           $"ORDER BY LogTime DESC " + limitString;
                lblActionDescriptor.Text = $"Showing all recorded actions of device \"{mysql.ExecuteScalarACon<string>("SELECT CONCAT(LogonName, ' @ ', DeviceName) FROM qd_devices WHERE ID = ?", SelectedObjectID)}\".";
                break;

            case BrowserSort.SortedByUsers:
                sqlQuery = $"SELECT " +
                           $"*, " +
                           $"qd_conlog.ID AS MainID, " +
                           $"CONCAT(qd_users.Name, ' (', qd_users.Username, ')') AS UserDisplay, " +
                           $"CONCAT(qd_devices.LogonName, ' @ ', qd_devices.DeviceName) AS DeviceDisplay " +
                           $"FROM qd_conlog " +
                           $"INNER JOIN qd_users ON qd_conlog.UserID = qd_users.ID " +
                           $"INNER JOIN qd_devices ON qd_conlog.DeviceID = qd_devices.ID " +
                           $"WHERE qd_users.ID = ? " +
                           $"ORDER BY LogTime DESC " + limitString;
                lblActionDescriptor.Text = $"Showing all recorded actions of user \"{mysql.ExecuteScalarACon<string>("SELECT CONCAT(Name, ' (', Username, ')') FROM qd_users WHERE ID = ?", SelectedObjectID)}\".";
                break;
            }

            dgvActionBrowser.Rows.Clear();

            if (!QDLib.ManagedDBOpen(mysql))
            {
                QDLib.DBOpenFailed(); qdLoader.Close(); return;
            }

            using (MySqlDataReader reader = (MySqlDataReader)mysql.ExecuteQuery(sqlQuery, SelectedObjectID.Replace("ACT=", "")))
            {
                while (reader.Read())
                {
                    dgvActionBrowser.Rows.Add(new string[] {
                        Convert.ToString(reader["MainID"]),
                        Convert.ToString(reader["LogTime"]),
                        Convert.ToString(reader["UserDisplay"]),
                        Convert.ToString(reader["DeviceDisplay"]),
                        Convert.ToString((QDLogAction)Convert.ToInt32(reader["LogAction"])),
                    });
                }
            }

            mysql.Close();

            lblResultRange.Text = $"Showing entries {listOffset + 1} to {listOffset + dgvActionBrowser.Rows.Count} ({totalEntryCount} entries in total)";

            qdLoader.Close();
        }
Exemplo n.º 9
0
        private int LoadQDData()
        {
            // Load local Data

            using (WrapSQLite sqlite = new WrapSQLite(QDInfo.ConfigFile))
            {
                if (!QDLib.ManagedDBOpen(sqlite))
                {
                    QDLib.DBOpenFailed(); return(-1);
                }

                localConnection = !Convert.ToBoolean(sqlite.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.IsOnlineLinked));
                promptPassword  = Convert.ToBoolean(sqlite.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.AlwaysPromptPassword));

                Username = sqlite.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.DefaultUsername);
                Password = sqlite.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.DefaultPassword);

                dbData.Hostname = Cipher.Decrypt(sqlite.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.DBHost), QDInfo.LocalCipherKey);
                dbData.Username = Cipher.Decrypt(sqlite.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.DBUsername), QDInfo.LocalCipherKey);
                dbData.Password = Cipher.Decrypt(sqlite.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.DBPassword), QDInfo.LocalCipherKey);
                dbData.Database = Cipher.Decrypt(sqlite.ExecuteScalar <string>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBL.DBName), QDInfo.LocalCipherKey);

                sqlite.Close();

                if (!string.IsNullOrEmpty(Password))
                {
                    Password = Cipher.Decrypt(Password, QDInfo.LocalCipherKey);
                }
            }

            try
            {
                using (WrapSQLite sqlite = new WrapSQLite(QDInfo.ConfigFile))
                {
                    sqlite.Open();

                    sqlite.Close();
                }
            }
            catch { return(3); }

            // Load Online Data
            if (!localConnection)
            {
                try
                {
                    using (WrapMySQL mysql = new WrapMySQL(dbData))
                    {
                        if (!QDLib.ManagedDBOpen(mysql))
                        {
                            QDLib.DBOpenFailed(); return(-1);
                        }

                        disconnectAtShutdown = Convert.ToBoolean(mysql.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.DisconnectDrivesAtShutdown));
                        logUserActions       = Convert.ToBoolean(mysql.ExecuteScalar <short>("SELECT QDValue FROM qd_info WHERE QDKey = ?", QDInfo.DBO.LogUserActions));

                        mysql.Close();
                    }
                }
                catch { return(2); }
            }

            if (!promptPassword)
            {
                QDLib.VerifyPassword(localConnection, Username, Password, out UserID, dbData);
            }

            return(0);
        }