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 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(); }
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(); }
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); }
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); }
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(); }
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); }
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); }
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 { } }
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));
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 { } }
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(); }