예제 #1
0
        public async Task <LabSettingsDTO> ResetTxtAssignment(TeamDTO team)
        {
            var res = new LabSettingsDTO();

            try
            {
                var data = await LabRepo.GetDomAssignment(team.Lab.LabCode, team.TeamAssignment.TeamAuth);

                //remove zone record from zone
                using (var dns = new DnsAdmin())
                {
                    var domGroup = await _repo.GetGroup(data.Lab.AzureSubscriptionId, data.Lab.DnsZoneRG);

                    await dns.InitAsync();

                    dns.SetClient(domGroup);
                    await dns.ClearTxtRecord(team.TeamAssignment.DomainName);
                }
                //update record in Cosmos
                var assignment = await LabRepo.GetDomAssignment(team.Lab.LabCode, team.TeamAssignment.TeamAuth);

                assignment.TeamAssignment.DnsTxtRecord = null;
                await LabRepo.UpdateTeamAssignment(assignment.TeamAssignment);

                res.ResponseMessage = "TXT record reset";
                res.Settings        = await LabRepo.GetLabAndSettings(team.Lab.Id);
            }
            catch (Exception ex)
            {
                res.ResponseMessage = "ERROR: " + ex.Message;
            }

            return(res);
        }
예제 #2
0
        public async Task <LabSettingsDTO> UnlinkDomain(TeamDTO team)
        {
            var res = new LabSettingsDTO();

            try
            {
                //detach domain from tenant
                var control = await AADLinkControl.CreateAsync(team.TeamAssignment.AssignedTenantId, new HttpContextWrapper(HttpContext.Current));

                var adalResponse = await control.DeleteDomain(team.TeamAssignment.DomainName);

                if (adalResponse.Message == "ObjectInUse")
                {
                    var references = await control.GetDomainReferences(team.TeamAssignment.DomainName);

                    res.Object = references.Object;
                }

                res.ResponseMessage += string.Format("Domain operation {0}, message: {1}", ((adalResponse.Successful) ? "successful" : "failed"), adalResponse.Message);
                res.Settings         = await LabRepo.GetLabAndSettings(team.Lab.Id);

                if (adalResponse.Message != "ObjectInUse" && adalResponse.Successful)
                {
                    var res2 = await ResetTxtAssignment(team);

                    res.Settings = res2.Settings;
                }
            }
            catch (Exception ex)
            {
                res.ResponseMessage = "ERROR: " + ex.Message;
            }
            return(res);
        }
예제 #3
0
        public async Task <LabSettingsDTO> CheckDomainAssignment(TeamDTO team)
        {
            var res = new LabSettingsDTO();

            try
            {
                var control = await AADLinkControl.CreateAsync(team.TeamAssignment.AssignedTenantId, new HttpContextWrapper(HttpContext.Current));

                var adalResponse = await control.GetDomain(team.TeamAssignment.DomainName);

                if (adalResponse.Successful)
                {
                    res.ResponseMessage = adalResponse.ResponseContent;
                }
                else
                {
                    res.ResponseMessage += string.Format("Domain operation {0}, message: {1}", ((adalResponse.Successful) ? "successful" : "failed"), adalResponse.Message);
                }
            }
            catch (Exception ex)
            {
                res.ResponseMessage = "ERROR: " + ex.Message;
            }
            return(res);
        }
예제 #4
0
        public async Task <LabSettingsDTO> ResetTeamCode(TeamDTO team)
        {
            var res = new LabSettingsDTO();

            try
            {
                //update record in Cosmos
                var assignment = await LabRepo.ResetTeamCode(team);

                res.Settings = await LabRepo.GetLabAndSettings(team.Lab.Id);

                res.ResponseMessage = assignment.TeamAssignment.TeamAuth;
            }
            catch (Exception ex)
            {
                res.ResponseMessage = "ERROR: " + ex.Message;
            }
            return(res);
        }
예제 #5
0
        public async Task <LabSettingsDTO> DeleteDirectoryObject(DelObjectDTO team)
        {
            var res = new LabSettingsDTO();

            try
            {
                //detach domain from tenant
                var control = await AADLinkControl.CreateAsync(team.TeamAssignment.AssignedTenantId, new HttpContextWrapper(HttpContext.Current));

                var adalResponse = await control.DeleteObject(team.DelObjId);

                res.ResponseMessage += string.Format("Delete operation {0}, message: {1}", ((adalResponse.Successful) ? "successful" : "failed"), adalResponse.Message);
                res.Settings         = await LabRepo.GetLabAndSettings(team.Lab.Id);
            }
            catch (Exception ex)
            {
                res.ResponseMessage = "ERROR: " + ex.Message;
            }
            return(res);
        }