public void CreateMany(string userNamePrefix, int usernameSuffix, int teamId, string password, int port, string userGroupName, string userNames, bool disablepwchange, bool pwneverexpires) { GroupPrincipal group = GroupPrincipal.FindByIdentity(context, userGroupName); string[] studentNames = userNames.Replace(Environment.NewLine, "").Split(',').Select(x => x.Trim()).ToArray(); string usernamePrefix = userNamePrefix.Replace(" ", ""); string username = usernamePrefix + usernameSuffix; string description = "Bruger oprettet med UserHelper"; string physicalPath = "C:\\inetpub\\wwwroot\\" + username + "\\"; try { for (int i = 0; i < studentNames.Length; i++) { UserPrincipal user = new UserPrincipal(context); UserManagement management = new UserManagement(user, group); //Create Windows User management.CreateLocalWindowsAccount(username, password, username, description, disablepwchange, pwneverexpires, user); management.AddUserToGroup(group, user); //Create IIS Website iis.CreateWebsite(username, "DefaultAppPool", "*:" + port + ":", physicalPath); //Create FTP Virtual Directory //txtStatusMessages.Text += iis.CreateFTPVDir("localhost", username, physicalPath, username); iis.CreateVirtualDirectory("_FTP", username, physicalPath); //create databases sql.CreateSQLLoginUserAndDatabase(username, username, password); Credentials cred = new Credentials(); cred.DatabaseUserName = username; cred.DatabasePassword = password; cred.FTPUserName = username; cred.FTPPassword = password; cred.WebsitePort = port; cred.WindowsUserGroupName = group.Name; Student student = new Student(); student.Name = studentNames[i]; student.Team = db.Teams.Find(teamId); student.Credentials = cred; db.Students.Add(student); //Change username and port for next iteration usernameSuffix++; username = usernamePrefix + usernameSuffix; physicalPath = "C:\\inetpub\\wwwroot\\" + username + "\\"; port++; } db.SaveChanges(); BatchState.State = UserProcessState.INITIAL; //done } catch (Exception) { throw; } }
public Student DeleteUserWebsiteFTPDatabase(int studentId) { try { Student student = db.Students.Find(studentId); UserPrincipal user = UserPrincipal.FindByIdentity(context, student.Credentials.FTPUserName); UserManagement mngtmnt = new UserManagement(user); mngtmnt.RemoveWindowsAccount(user); string physicalPath = "C:\\inetpub\\wwwroot\\" + student.Credentials.FTPUserName + "\\"; iis.RemoveWebsite(student.Credentials.FTPUserName, physicalPath); iis.RemoveVirtualDirectory("_FTP", "/" + student.Credentials.FTPUserName, physicalPath); sql.DeleteLoginAndDB(student.Credentials.FTPUserName, student.Credentials.FTPUserName); db.Students.Remove(student); db.Credentials.Remove(db.Credentials.Find(student.CredentialsId)); return student; } catch (Exception) { throw; } }
public void RollbackOnError(UserProcessState state, string userName) { switch (state) { case UserProcessState.WIN_USER_ERROR: //Hvis brugeroprettelse er færdig, stop her (der kan være nogel oprettede brugere i batch oprettelse) break; case UserProcessState.WIN_GROUP_ERROR: { UserPrincipal user = UserPrincipal.FindByIdentity(context, userName); UserManagement management = new UserManagement(user); management.RemoveWindowsAccount(user); //textBox2.Text += Enum.GetName(typeof(UserProcessState), BatchState.State) + "\n"; break; } case UserProcessState.IIS_WEBSITE_ERROR: { break; } case UserProcessState.VIRTUAL_DIRECTORY_ERROR: { //Hvis virtual directory oprettelse fejler, slet bruger og website UserPrincipal user = UserPrincipal.FindByIdentity(context, userName); UserManagement management = new UserManagement(user); string physicalPath = "C:\\inetpub\\wwwroot\\" + userName + "\\"; iis.RemoveWebsite(userName, physicalPath); } break; case UserProcessState.SQL_LOGIN_ERROR: { //hvis sql login fejler, slet vdir, website,bruger Student student = db.Students.Where(x => x.Credentials.FTPUserName == userName).Single(); UserPrincipal user = UserPrincipal.FindByIdentity(context, student.Credentials.FTPUserName); UserManagement management = new UserManagement(user); string physicalPath = "C:\\inetpub\\wwwroot\\" + student.Credentials.FTPUserName + "\\"; iis.RemoveWebsite(student.Credentials.FTPUserName, physicalPath); iis.RemoveVirtualDirectory("_FTP", "/" + student.Credentials.FTPUserName, physicalPath); } break; case UserProcessState.SQL_DB_ERROR: { //hvis dboprettelse fejler, slet dblogin,vdir,website og bruger Student student = db.Students.Where(x => x.Credentials.FTPUserName == userName).Single(); UserPrincipal user = UserPrincipal.FindByIdentity(context, student.Credentials.FTPUserName); UserManagement management = new UserManagement(user); string physicalPath = "C:\\inetpub\\wwwroot\\" + student.Credentials.FTPUserName + "\\"; iis.RemoveWebsite(student.Credentials.FTPUserName, physicalPath); iis.RemoveVirtualDirectory("_FTP", "/" + student.Credentials.FTPUserName, physicalPath); } break; case UserProcessState.SQL_USER_ERROR: { //hvis dboprettelse fejler, slet alt for denne bruger Student student = db.Students.Where(x => x.Credentials.FTPUserName == userName).Single(); UserPrincipal user = UserPrincipal.FindByIdentity(context, student.Credentials.FTPUserName); UserManagement management = new UserManagement(user); string physicalPath = "C:\\inetpub\\wwwroot\\" + student.Credentials.FTPUserName + "\\"; iis.RemoveWebsite(student.Credentials.FTPUserName, physicalPath); iis.RemoveVirtualDirectory("_FTP", "/" + student.Credentials.FTPUserName, physicalPath); sql.DeleteLoginAndDB(student.Credentials.FTPUserName, student.Credentials.FTPUserName); break; } case UserProcessState.SQL_INSERT_USER_DATA_ERROR: { //hvis dboprettelse fejler, slet alt for denne bruger //UserPrincipal user = UserPrincipal.FindByIdentity(context, student.Credentials.FTPUserName); //UserManagement management = new UserManagement(user); //string physicalPath = "C:\\inetpub\\wwwroot\\" + student.Credentials.FTPUserName + "\\"; //iis.RemoveWebsite(student.Credentials.FTPUserName, physicalPath); //iis.RemoveVirtualDirectory("_FTP", "/" + student.Credentials.FTPUserName, physicalPath); //sql.DeleteLoginAndDB(student.Credentials.FTPUserName, student.Credentials.FTPUserName); break; } } }
public void CreateSingleUser(string userName, string password, int port, string name, int teamId, string userGroupName, bool disablepwchange, bool pwneverexpires) { UserPrincipal user = new UserPrincipal(context); GroupPrincipal group = GroupPrincipal.FindByIdentity(context, userGroupName); Repository rep = new Repository(); UserManagement management = new UserManagement(user, group); string username = userName.Replace(" ", ""); string description = "Bruger oprettet med UserHelper"; string physicalPath = "C:\\inetpub\\wwwroot\\" + username + "\\"; try { //Create Windows User management.CreateLocalWindowsAccount(username, password, username, description, disablepwchange, pwneverexpires, user); management.AddUserToGroup(group, user); //Create IIS Website iis.CreateWebsite(username, "DefaultAppPool", "*:" + port + ":", physicalPath); //Create FTP Virtual Directory //txtStatusMessages.Text += iis.CreateFTPVDir("localhost", username, physicalPath, username); iis.CreateVirtualDirectory("_FTP", username, physicalPath); //Create database for user sql.CreateSQLLoginUserAndDatabase(username, username, password); Credentials cred = new Credentials(); cred.DatabaseUserName = username; cred.DatabasePassword = password; cred.FTPUserName = username; cred.FTPPassword = password; cred.WebsitePort = port; cred.WindowsUserGroupName = group.Name; Student student = new Student(); student.Name = name; sql.InsertUserWithCredentialsOnTeam(student,cred,teamId); BatchState.State = UserProcessState.INITIAL; //done } catch (Exception) { RollbackOnError(BatchState.State, username); throw; } }