Example #1
0
        private static FbUserData[] ParseUserData(byte[] buffer, ref int pos)
        {
            List <FbUserData> users       = new List <FbUserData>();
            FbUserData        currentUser = null;
            int type   = 0;
            int length = 0;

            while ((type = buffer[pos++]) != IscCodes.isc_info_end)
            {
                switch (type)
                {
                case IscCodes.isc_spb_sec_username:
                {
                    length               = IscHelper.VaxInteger(buffer, pos, 2);
                    pos                 += 2;
                    currentUser          = new FbUserData();
                    currentUser.UserName = Encoding.Default.GetString(buffer, pos, length);
                    pos                 += length;

                    users.Add(currentUser);
                }
                break;

                case IscCodes.isc_spb_sec_firstname:
                    length = IscHelper.VaxInteger(buffer, pos, 2);
                    pos   += 2;
                    currentUser.FirstName = Encoding.Default.GetString(buffer, pos, length);
                    pos += length;
                    break;

                case IscCodes.isc_spb_sec_middlename:
                    length = IscHelper.VaxInteger(buffer, pos, 2);
                    pos   += 2;
                    currentUser.MiddleName = Encoding.Default.GetString(buffer, pos, length);
                    pos += length;
                    break;

                case IscCodes.isc_spb_sec_lastname:
                    length = IscHelper.VaxInteger(buffer, pos, 2);
                    pos   += 2;
                    currentUser.LastName = Encoding.Default.GetString(buffer, pos, length);
                    pos += length;
                    break;

                case IscCodes.isc_spb_sec_userid:
                    currentUser.UserID = IscHelper.VaxInteger(buffer, pos, 4);
                    pos += 4;
                    break;

                case IscCodes.isc_spb_sec_groupid:
                    currentUser.GroupID = IscHelper.VaxInteger(buffer, pos, 4);
                    pos += 4;
                    break;
                }
            }

            pos--;

            return(users.ToArray());
        }
Example #2
0
        public void DeleteUser(FbUserData user)
        {
            if (user.UserName != null && user.UserName.Length == 0)
            {
                throw new InvalidOperationException("Invalid user name.");
            }

            // Configure Spb
            StartSpb = new ServiceParameterBuffer();

            StartSpb.Append(IscCodes.isc_action_svc_delete_user);

            StartSpb.Append(IscCodes.isc_spb_sec_username, user.UserName);

            if (user.RoleName != null && user.RoleName.Length > 0)
            {
                StartSpb.Append(IscCodes.isc_spb_sql_role_name, user.RoleName);
            }

            Open();

            // Start execution
            StartTask();

            Close();
        }
        public void AddUser(FbUserData user)
        {
            if (user.UserName != null && user.UserName.Length == 0)
            {
                throw new InvalidOperationException("Invalid user name.");
            }
            if (user.UserPassword != null && user.UserPassword.Length == 0)
            {
                throw new InvalidOperationException("Invalid user password.");
            }

            // Configure Spb
            this.StartSpb = new ServiceParameterBuffer();

            this.StartSpb.Append(IscCodes.isc_action_svc_add_user);

            this.StartSpb.Append(IscCodes.isc_spb_sec_username, user.UserName);
            this.StartSpb.Append(IscCodes.isc_spb_sec_password, user.UserPassword);

            if (user.FirstName != null && user.FirstName.Length > 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_firstname, user.FirstName);
            }

            if (user.MiddleName != null && user.MiddleName.Length > 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_middlename, user.MiddleName);
            }

            if (user.LastName != null && user.LastName.Length > 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_lastname, user.LastName);
            }

            if (user.UserID != 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_userid, user.UserID);
            }

            if (user.GroupID != 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_groupid, user.GroupID);
            }

            if (user.GroupName != null && user.GroupName.Length > 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_groupname, user.GroupName);
            }

            if (user.RoleName != null && user.RoleName.Length > 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sql_role_name, user.RoleName);
            }

            // Start execution
            this.StartTask();

            this.Close();
        }
Example #4
0
        public void AddUser(FbUserData user)
        {
            if (user.UserName != null && user.UserName.Length == 0)
            {
                throw new InvalidOperationException("Invalid user name.");
            }
            if (user.UserPassword != null && user.UserPassword.Length == 0)
            {
                throw new InvalidOperationException("Invalid user password.");
            }

            // Configure Spb
            this.StartSpb = new ServiceParameterBuffer();

            this.StartSpb.Append(IscCodes.isc_action_svc_add_user);

            this.StartSpb.Append(IscCodes.isc_spb_sec_username, user.UserName);
            this.StartSpb.Append(IscCodes.isc_spb_sec_password, user.UserPassword);

            if (user.FirstName != null && user.FirstName.Length > 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_firstname, user.FirstName);
            }

            if (user.MiddleName != null && user.MiddleName.Length > 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_middlename, user.MiddleName);
            }

            if (user.LastName != null && user.LastName.Length > 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_lastname, user.LastName);
            }

            if (user.UserID != 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_userid, user.UserID);
            }

            if (user.GroupID != 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_groupid, user.GroupID);
            }

            if (user.GroupName != null && user.GroupName.Length > 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sec_groupname, user.GroupName);
            }

            if (user.RoleName != null && user.RoleName.Length > 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sql_role_name, user.RoleName);
            }

            // Start execution
            this.StartTask();

            this.Close();
        }
Example #5
0
        public void AddUserTest()
        {
            FbSecurity securitySvc = new FbSecurity();

            securitySvc.ConnectionString = this.BuildServicesConnectionString(false);

            FbUserData user = new FbUserData();

            user.UserName = "******";
            user.UserPassword = "******";

            securitySvc.AddUser(user);
        }
        private async Task AddUserImpl(FbUserData user, AsyncWrappingCommonArgs async)
        {
            if (string.IsNullOrEmpty(user.UserName))
            {
                throw new InvalidOperationException("Invalid user name.");
            }

            await Open(async).ConfigureAwait(false);

            var startSpb = new ServiceParameterBuffer();

            startSpb.Append(IscCodes.isc_action_svc_add_user);
            startSpb.Append(IscCodes.isc_spb_sec_username, user.UserName);
            startSpb.Append(IscCodes.isc_spb_sec_password, user.UserPassword);
            if ((user.FirstName?.Length ?? 0) != 0)
            {
                startSpb.Append(IscCodes.isc_spb_sec_firstname, user.FirstName);
            }
            if ((user.MiddleName?.Length ?? 0) != 0)
            {
                startSpb.Append(IscCodes.isc_spb_sec_middlename, user.MiddleName);
            }
            if ((user.LastName?.Length ?? 0) != 0)
            {
                startSpb.Append(IscCodes.isc_spb_sec_lastname, user.LastName);
            }
            if (user.UserID != 0)
            {
                startSpb.Append(IscCodes.isc_spb_sec_userid, user.UserID);
            }
            if (user.GroupID != 0)
            {
                startSpb.Append(IscCodes.isc_spb_sec_groupid, user.GroupID);
            }
            if ((user.GroupName?.Length ?? 0) != 0)
            {
                startSpb.Append(IscCodes.isc_spb_sec_groupname, user.GroupName);
            }
            if ((user.RoleName?.Length ?? 0) != 0)
            {
                startSpb.Append(IscCodes.isc_spb_sql_role_name, user.RoleName);
            }
            await StartTask(startSpb, async).ConfigureAwait(false);
            await Close(async).ConfigureAwait(false);
        }
Example #7
0
        public async Task AddUserAsync(FbUserData user, CancellationToken cancellationToken = default)
        {
            if (string.IsNullOrEmpty(user.UserName))
            {
                throw new InvalidOperationException("Invalid user name.");
            }

            await OpenAsync(cancellationToken).ConfigureAwait(false);

            var startSpb = new ServiceParameterBuffer2();

            startSpb.Append(IscCodes.isc_action_svc_add_user);
            startSpb.Append2(IscCodes.isc_spb_sec_username, user.UserName);
            startSpb.Append2(IscCodes.isc_spb_sec_password, user.UserPassword);
            if ((user.FirstName?.Length ?? 0) != 0)
            {
                startSpb.Append2(IscCodes.isc_spb_sec_firstname, user.FirstName);
            }
            if ((user.MiddleName?.Length ?? 0) != 0)
            {
                startSpb.Append2(IscCodes.isc_spb_sec_middlename, user.MiddleName);
            }
            if ((user.LastName?.Length ?? 0) != 0)
            {
                startSpb.Append2(IscCodes.isc_spb_sec_lastname, user.LastName);
            }
            if (user.UserID != 0)
            {
                startSpb.Append(IscCodes.isc_spb_sec_userid, user.UserID);
            }
            if (user.GroupID != 0)
            {
                startSpb.Append(IscCodes.isc_spb_sec_groupid, user.GroupID);
            }
            if ((user.GroupName?.Length ?? 0) != 0)
            {
                startSpb.Append2(IscCodes.isc_spb_sec_groupname, user.GroupName);
            }
            if ((user.RoleName?.Length ?? 0) != 0)
            {
                startSpb.Append2(IscCodes.isc_spb_sql_role_name, user.RoleName);
            }
            await StartTaskAsync(startSpb, cancellationToken).ConfigureAwait(false);
            await CloseAsync(cancellationToken).ConfigureAwait(false);
        }
Example #8
0
        public void AddUser(FbUserData user)
        {
            if (string.IsNullOrEmpty(user.UserName))
            {
                throw new InvalidOperationException("Invalid user name.");
            }

            StartSpb = new ServiceParameterBuffer();
            StartSpb.Append(IscCodes.isc_action_svc_add_user);
            StartSpb.Append(IscCodes.isc_spb_sec_username, user.UserName);
            StartSpb.Append(IscCodes.isc_spb_sec_password, user.UserPassword);
            if ((user.FirstName?.Length ?? 0) != 0)
            {
                StartSpb.Append(IscCodes.isc_spb_sec_firstname, user.FirstName);
            }
            if ((user.MiddleName?.Length ?? 0) != 0)
            {
                StartSpb.Append(IscCodes.isc_spb_sec_middlename, user.MiddleName);
            }
            if ((user.LastName?.Length ?? 0) != 0)
            {
                StartSpb.Append(IscCodes.isc_spb_sec_lastname, user.LastName);
            }
            if (user.UserID != 0)
            {
                StartSpb.Append(IscCodes.isc_spb_sec_userid, user.UserID);
            }
            if (user.GroupID != 0)
            {
                StartSpb.Append(IscCodes.isc_spb_sec_groupid, user.GroupID);
            }
            if ((user.GroupName?.Length ?? 0) != 0)
            {
                StartSpb.Append(IscCodes.isc_spb_sec_groupname, user.GroupName);
            }
            if ((user.RoleName?.Length ?? 0) != 0)
            {
                StartSpb.Append(IscCodes.isc_spb_sql_role_name, user.RoleName);
            }

            Open();
            StartTask();
            Close();
        }
Example #9
0
        public void DeleteUser(FbUserData user)
        {
            if (string.IsNullOrEmpty(user.UserName))
            {
                throw new InvalidOperationException("Invalid user name.");
            }

            StartSpb = new ServiceParameterBuffer();
            StartSpb.Append(IscCodes.isc_action_svc_delete_user);
            StartSpb.Append(IscCodes.isc_spb_sec_username, user.UserName);
            if ((user.RoleName?.Length ?? 0) != 0)
            {
                StartSpb.Append(IscCodes.isc_spb_sql_role_name, user.RoleName);
            }

            Open();
            StartTask();
            Close();
        }
        private async Task DeleteUserImpl(FbUserData user, AsyncWrappingCommonArgs async)
        {
            if (string.IsNullOrEmpty(user.UserName))
            {
                throw new InvalidOperationException("Invalid user name.");
            }

            await Open(async).ConfigureAwait(false);

            var startSpb = new ServiceParameterBuffer();

            startSpb.Append(IscCodes.isc_action_svc_delete_user);
            startSpb.Append(IscCodes.isc_spb_sec_username, user.UserName);
            if ((user.RoleName?.Length ?? 0) != 0)
            {
                startSpb.Append(IscCodes.isc_spb_sql_role_name, user.RoleName);
            }
            await StartTask(startSpb, async).ConfigureAwait(false);
            await Close(async).ConfigureAwait(false);
        }
Example #11
0
        public async Task DeleteUserAsync(FbUserData user, CancellationToken cancellationToken = default)
        {
            if (string.IsNullOrEmpty(user.UserName))
            {
                throw new InvalidOperationException("Invalid user name.");
            }

            await OpenAsync(cancellationToken).ConfigureAwait(false);

            var startSpb = new ServiceParameterBuffer2();

            startSpb.Append(IscCodes.isc_action_svc_delete_user);
            startSpb.Append2(IscCodes.isc_spb_sec_username, user.UserName);
            if ((user.RoleName?.Length ?? 0) != 0)
            {
                startSpb.Append2(IscCodes.isc_spb_sql_role_name, user.RoleName);
            }
            await StartTaskAsync(startSpb, cancellationToken).ConfigureAwait(false);
            await CloseAsync(cancellationToken).ConfigureAwait(false);
        }
Example #12
0
        public void fb_up(string pass)
        {
            //теперь нужно создать пользователя, под которым будет производится установка
            FbConnectionStringBuilder fc = new FbConnectionStringBuilder();
            fc.DataSource = "localhost";
            fc.UserID = "SYSDBA";
            fc.Password = this.t_sysdba.Text;

            FbSecurity fb = new FbSecurity();

            fb.ConnectionString = fc.ConnectionString;

            FbUserData fu = new FbUserData();
            fu.UserName = "******";
            fu.UserPassword = pass;
            try
            {
                fb.ModifyUser(fu);
            }
            catch { }
            finally { }
        }
Example #13
0
        public override void RecreateDataBase()
        {
            // ConnectionString Builder
            FbConnectionStringBuilder csb = new FbConnectionStringBuilder();
            csb.DataSource = "localhost";
            csb.Dialect = 3;
            csb.Charset = "UTF8";
            csb.Pooling = false;
            csb.UserID = "SYSDBA"; // default user
            csb.Password = "******"; // default password

            string serverConnectionString = csb.ToString();
            csb.Database = csb.Database = FQDBFile;

            string databaseConnectionString = csb.ToString();

            Console.WriteLine("-------------------------");
            Console.WriteLine("Using Firebird Database  ");
            Console.WriteLine("-------------------------");

            base.RecreateDataBase();

            // Create simple user
            FbSecurity security = new FbSecurity();
            security.ConnectionString = serverConnectionString;
            var userData = security.DisplayUser(FbUserName);
            if (userData == null)
            {
                userData = new FbUserData();
                userData.UserName = FbUserName;
                userData.UserPassword = FbUserPass;
                security.AddUser(userData);
            }

            // Try to shutdown & delete database
            if (File.Exists(FQDBFile))
            {
                FbConfiguration configuration = new FbConfiguration();
                configuration.ConnectionString = databaseConnectionString;
                try
                {
                    configuration.DatabaseShutdown(FbShutdownMode.Forced, 0);
                    Thread.Sleep(1000);
                }
                finally
                {
                    File.Delete(FQDBFile);
                }
            }

            // Create the new DB
            FbConnection.CreateDatabase(databaseConnectionString, 4096, true, true);
            if (!File.Exists(FQDBFile)) throw new Exception("Database failed to create");

            // Create the Schema
            string script = @"
CREATE TABLE Users(
    UserId integer PRIMARY KEY NOT NULL, 
    Name varchar(200), 
    Age integer, 
    DateOfBirth timestamp, 
    Savings decimal(10,5),
    Is_Male smallint,
    UniqueId char(38),
    TimeSpan time,
    TestEnum varchar(10),
    HouseId integer,
    SupervisorId integer
                );
          
CREATE TABLE ExtraUserInfos(
    ExtraUserInfoId integer PRIMARY KEY NOT NULL, 
    UserId integer NOT NULL, 
    Email varchar(200), 
    Children integer 
);

CREATE TABLE Houses(
    HouseId integer PRIMARY KEY NOT NULL, 
    Address varchar(200)
);

CREATE TABLE CompositeObjects(
    Key1ID integer PRIMARY KEY NOT NULL, 
    Key2ID integer NOT NULL, 
    Key3ID integer NOT NULL, 
    TextData varchar(512), 
    DateEntered timestamp NOT NULL,
    DateUpdated timestamp  
);

CREATE GENERATOR USERS_USERID_GEN;
CREATE GENERATOR EXTRAUSERINFOS_ID_GEN;
CREATE GENERATOR HOUSES_HOUSEID_GEN;

SET TERM ^ ;

CREATE TRIGGER BI_USERS_USERID FOR USERS
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
  IF (NEW.USERID IS NULL) THEN
      NEW.USERID = GEN_ID(USERS_USERID_GEN, 1);
END^


CREATE TRIGGER BI_EXTRAUSERINFOS_ID1 FOR EXTRAUSERINFOS
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
  IF (NEW.EXTRAUSERINFOID IS NULL) THEN
      NEW.EXTRAUSERINFOID = GEN_ID(EXTRAUSERINFOS_ID_GEN, 1);
END^

CREATE TRIGGER BI_HOUSES_HOUSEID FOR HOUSES
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
  IF (NEW.HOUSEID IS NULL) THEN
      NEW.HOUSEID = GEN_ID(HOUSES_HOUSEID_GEN, 1);
END^

SET TERM ; ^

CREATE ROLE %role%;

GRANT SELECT, UPDATE, INSERT, DELETE ON Users TO ROLE %role%;
GRANT SELECT, UPDATE, INSERT, DELETE ON ExtraUserInfos TO ROLE %role%;
GRANT SELECT, UPDATE, INSERT, DELETE ON Houses TO ROLE %role%;
GRANT SELECT, UPDATE, INSERT, DELETE ON CompositeObjects TO ROLE %role%;

GRANT %role% TO %user%;
".Replace("%role%", FbRole).Replace("%user%", FbUserName);

/* 
 * Using new connection so that when a transaction is bound to Connection if it rolls back 
 * it doesn't blow away the tables
 */

            using (var conn = new FbConnection(databaseConnectionString))
            {
                FbScript fbScript = new FbScript(script);
                fbScript.Parse();
                FbBatchExecution fbBatch = new FbBatchExecution(conn, fbScript);
                fbBatch.Execute(true);

                conn.Open();
                Console.WriteLine("Tables (CreateDB): " + Environment.NewLine);
                var dt = conn.GetSchema("Tables", new[] {null, null, null, "TABLE"});
                foreach (DataRow row in dt.Rows)
                {
                    Console.WriteLine(row[2]);
                }

                conn.Close();
            }
        }
 public void DeleteUser(FbUserData user) => DeleteUserImpl(user, new AsyncWrappingCommonArgs(false)).GetAwaiter().GetResult();
		private static FbUserData[] ParseUserData(byte[] buffer, ref int pos)
		{
			List<FbUserData> users = new List<FbUserData>();
			FbUserData currentUser = null;
			int type = 0;
			int length = 0;

			while ((type = buffer[pos++]) != IscCodes.isc_info_end)
			{
				switch (type)
				{
					case IscCodes.isc_spb_sec_username:
						{
							length = IscHelper.VaxInteger(buffer, pos, 2);
							pos += 2;
							currentUser = new FbUserData();
							currentUser.UserName = Encoding.Default.GetString(buffer, pos, length);
							pos += length;

							users.Add(currentUser);
						}
						break;

					case IscCodes.isc_spb_sec_firstname:
						length = IscHelper.VaxInteger(buffer, pos, 2);
						pos += 2;
						currentUser.FirstName = Encoding.Default.GetString(buffer, pos, length);
						pos += length;
						break;

					case IscCodes.isc_spb_sec_middlename:
						length = IscHelper.VaxInteger(buffer, pos, 2);
						pos += 2;
						currentUser.MiddleName = Encoding.Default.GetString(buffer, pos, length);
						pos += length;
						break;

					case IscCodes.isc_spb_sec_lastname:
						length = IscHelper.VaxInteger(buffer, pos, 2);
						pos += 2;
						currentUser.LastName = Encoding.Default.GetString(buffer, pos, length);
						pos += length;
						break;

					case IscCodes.isc_spb_sec_userid:
						currentUser.UserID = IscHelper.VaxInteger(buffer, pos, 4);
						pos += 4;
						break;

					case IscCodes.isc_spb_sec_groupid:
						currentUser.GroupID = IscHelper.VaxInteger(buffer, pos, 4);
						pos += 4;
						break;
				}
			}

			pos--;

			return users.ToArray();
		}
 public Task DeleteUserAsync(FbUserData user, CancellationToken cancellationToken = default) => DeleteUserImpl(user, new AsyncWrappingCommonArgs(true, cancellationToken));
Example #17
0
        public void fb_add(string username, string pass, bool is_full, string database)
        {
            //теперь нужно создать пользователя, под которым будет производится установка
            FbConnectionStringBuilder fc = new FbConnectionStringBuilder();
            fc.DataSource = "localhost";
            fc.UserID = "SYSDBA";
            if (this.is_new_sysdba.Checked)
            {
                fc.Password = this.t_sysdba_new.Text;
            }
            else
            {
                fc.Password = this.t_sysdba.Text;
            }
            if (database != "")
            {
                fc.Database = database;
            }
            FbSecurity fb = new FbSecurity();

            fb.ConnectionString = fc.ConnectionString;

            FbUserData fu = new FbUserData();
            fu.UserName = username;
            if (is_full)
            {
                fu.RoleName = "FULL_ACCESS";
            }
            fu.UserPassword = pass;
            try
            {
                fb.AddUser(fu);
            }
            catch { }
            finally { }
        }
Example #18
0
		public void DeleteUser()
		{
			FbSecurity securitySvc = new FbSecurity();

			securitySvc.ConnectionString = this.BuildServicesConnectionString(false);

			FbUserData user = new FbUserData();

			user.UserName = "******";

			securitySvc.DeleteUser(user);
		}
        public void DeleteUser(FbUserData user)
        {
            if (user.UserName != null && user.UserName.Length == 0)
            {
                throw new InvalidOperationException("Invalid user name.");
            }

            // Configure Spb
            this.StartSpb = new ServiceParameterBuffer();

            this.StartSpb.Append(IscCodes.isc_action_svc_delete_user);

            this.StartSpb.Append(IscCodes.isc_spb_sec_username, user.UserName);

            if (user.RoleName != null && user.RoleName.Length > 0)
            {
                this.StartSpb.Append(IscCodes.isc_spb_sql_role_name, user.RoleName);
            }

            // Start execution
            this.StartTask();

            this.Close();
        }