コード例 #1
0
        private async void OnDnsZoneChange(DnsZoneViewModel zone)
        {
            currentZone = zone;
            AddRecordCommand.RaiseCanExecuteChanged();
            EditRecordCommand.RaiseCanExecuteChanged();

            if (zone == null)
            {
                Loading = false;
                IsEnabled = true;

                Records.Clear();
                return;
            }

            await LoadDnsRecordsAsync();
        }
コード例 #2
0
ファイル: AzurePowerShell.cs プロジェクト: winleaks/AzureDNS
        public async Task AddDnsRecordAsync(DnsZoneViewModel dnsZone, string hostName, string type, 
            Dictionary<string, object> options,
            List<Dictionary<string, string>> records, 
            bool overwrite = false)
        {
            await Task.Run(
                delegate
                {
                    lock (runspace)
                    {
                        var pipe = runspace.CreatePipeline();

                        var rs = new Command("New-AzureDnsRecordSet");
                        rs.Parameters.Add("Name", hostName);
                        rs.Parameters.Add("ZoneName", dnsZone.Name);
                        rs.Parameters.Add("ResourceGroupName", dnsZone.ResourceGroupName);
                        rs.Parameters.Add("RecordType", type);
                        foreach (var item in options)
                        {
                            rs.Parameters.Add(item.Key, item.Value);
                        }
                        if (overwrite)
                        {
                            rs.Parameters.Add("Overwrite");
                            rs.Parameters.Add("Force");
                        }

                        pipe.Commands.Add(rs);

                        foreach (var record in records)
                        {
                            var ip = new Command("Add-AzureDnsRecordConfig");

                            foreach (var item in record)
                            {
                                ip.Parameters.Add(item.Key, item.Value);
                            }

                            pipe.Commands.Add(ip);
                        }
                        pipe.Commands.Add(new Command("Set-AzureDnsRecordSet"));

                        LogCommand(pipe.Commands);
                        pipe.Invoke();

                        if (pipe.HadErrors)
                        {
                            dynamic error = pipe.Error.Read();
                            Exception ex = error.Exception;
                            throw new Exception("Can't create " + type + " record", ex);
                        }
                    }
                });
        }
コード例 #3
0
ファイル: AzurePowerShell.cs プロジェクト: winleaks/AzureDNS
        public async Task<IList<DnsRecordViewModel>> GetAzureDnsRecordsAsync(DnsZoneViewModel zone)
        {
            return await Task.Run(
                delegate
                {
                    lock (runspace)
                    {
                        try
                        {
                            var ps = PowerShell.Create();
                            ps.Runspace = runspace;
                            ps.AddCommand("Get-AzureDnsRecordSet")
                                .AddParameter("ResourceGroupName", zone.ResourceGroupName)
                                .AddParameter("ZoneName", zone.Name);

                            LogCommand(ps.Commands.Commands);
                            var items = ps.Invoke();

                            dynamic records = items[0].BaseObject;

                            var result = new List<DnsRecordViewModel>();
                            foreach (var item in records)
                            {
                                string recordType = item.RecordType.ToString();

                                var record = new DnsRecordViewModel();
                                record.Name = item.Name;
                                record.RecordType = (RecordType) Enum.Parse(typeof (RecordType), recordType);
                                var reader = container.Resolve<IDnsRecordReader>(recordType);

                                var list = new List<BaseDnsRecord>();
                                foreach (var r in item.Records)
                                {
                                    list.Add(reader.Read(r));
                                }
                                record.Records = list;

                                result.Add(record);
                            }
                            return result;
                        }
                        catch (Exception)
                        {
                            return new List<DnsRecordViewModel>();
                        }
                    }
                });
        }
コード例 #4
0
ファイル: AzurePowerShell.cs プロジェクト: winleaks/AzureDNS
        public async Task RemoveRecordSetAsync(DnsZoneViewModel dnsZone, DnsRecordViewModel record)
        {
            await Task.Run(
                delegate
                {
                    lock (runspace)
                    {
                        var pipe = runspace.CreatePipeline();

                        var rs = new Command("Remove-AzureDnsRecordSet");
                        rs.Parameters.Add("Name", record.Name);
                        rs.Parameters.Add("RecordType", record.RecordType.ToString());
                        rs.Parameters.Add("ZoneName", dnsZone.Name);
                        rs.Parameters.Add("ResourceGroupName", dnsZone.ResourceGroupName);
                        rs.Parameters.Add("Force");

                        pipe.Commands.Add(rs);

                        LogCommand(pipe.Commands);
                        pipe.Invoke();
                    }
                });
        }
コード例 #5
0
ファイル: AzurePowerShell.cs プロジェクト: winleaks/AzureDNS
        public async Task<IList<DnsZoneViewModel>> GetAzureDnsZoneAsync()
        {
            return await Task.Run(
                delegate
                {
                    lock (runspace)
                    {
                        var pipe = runspace.CreatePipeline();
                        pipe.Commands.Add(new Command("Get-AzureResourceGroup"));
                        pipe.Commands.Add(new Command("Get-AzureDnsZone"));

                        LogCommand(pipe.Commands);
                        var result = pipe.Invoke();
                        var list = new List<DnsZoneViewModel>();

                        foreach (var o in result)
                        {
                            dynamic zoneList = o.BaseObject;
                            foreach (var item in zoneList)
                            {
                                var zone = new DnsZoneViewModel();
                                zone.Name = item.Name;
                                zone.ResourceGroupName = item.ResourceGroupName;

                                list.Add(zone);
                            }
                        }

                        return list;
                    }
                });
        }