Beispiel #1
0
        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;
                }
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        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;
                    }

            }
        }
Beispiel #4
0
        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;
                }
        }