mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
MSDNS: Adopt diff2 (#2046)
This commit is contained in:
@ -19,6 +19,13 @@ type psHandle struct {
|
||||
shell ps.Shell
|
||||
}
|
||||
|
||||
// func eLog(s string) {
|
||||
// f, _ := os.OpenFile("powershell.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||
// f.WriteString(s)
|
||||
// f.WriteString("\n")
|
||||
// f.Close()
|
||||
// }
|
||||
|
||||
func newPowerShell(config map[string]string) (*psHandle, error) {
|
||||
|
||||
back := &backend.Local{}
|
||||
@ -200,8 +207,10 @@ func (psh *psHandle) RecordDelete(dnsserver, domain string, rec *models.RecordCo
|
||||
c = generatePSDelete(dnsserver, domain, rec)
|
||||
}
|
||||
|
||||
//eLog(c)
|
||||
_, stderr, err := psh.shell.Execute(c)
|
||||
if err != nil {
|
||||
printer.Printf("PowerShell code was:\nSTART\n%s\nEND\n", c)
|
||||
return err
|
||||
}
|
||||
if stderr != "" {
|
||||
@ -215,7 +224,7 @@ func (psh *psHandle) RecordDelete(dnsserver, domain string, rec *models.RecordCo
|
||||
func generatePSDelete(dnsserver, domain string, rec *models.RecordConfig) string {
|
||||
|
||||
var b bytes.Buffer
|
||||
fmt.Fprintf(&b, `echo DELETE "%s" "%s" "..."`, rec.Type, rec.Name)
|
||||
fmt.Fprintf(&b, `echo DELETE "%s" "%s" "[target]"`, rec.Type, rec.Name)
|
||||
fmt.Fprintf(&b, " ; ")
|
||||
|
||||
if rec.Type == "NAPTR" {
|
||||
@ -229,13 +238,13 @@ func generatePSDelete(dnsserver, domain string, rec *models.RecordConfig) string
|
||||
fmt.Fprintf(&b, ` -ComputerName "%s"`, dnsserver)
|
||||
}
|
||||
fmt.Fprintf(&b, ` -Force`)
|
||||
fmt.Fprintf(&b, ` -ZoneName "%s"`, domain)
|
||||
fmt.Fprintf(&b, ` -Name "%s"`, rec.Name)
|
||||
fmt.Fprintf(&b, ` -ZoneName %q`, domain)
|
||||
fmt.Fprintf(&b, ` -Name %q`, rec.Name)
|
||||
fmt.Fprintf(&b, ` -RRType "%s"`, rec.Type)
|
||||
if rec.Type == "MX" {
|
||||
fmt.Fprintf(&b, ` -RecordData %d,"%s"`, rec.MxPreference, rec.GetTargetField())
|
||||
fmt.Fprintf(&b, ` -RecordData %d,%q`, rec.MxPreference, rec.GetTargetField())
|
||||
} else if rec.Type == "TXT" {
|
||||
fmt.Fprintf(&b, ` -RecordData %s`, rec.GetTargetField())
|
||||
fmt.Fprintf(&b, ` -RecordData %q`, rec.GetTargetTXTJoined())
|
||||
} else if rec.Type == "SRV" {
|
||||
// https://www.gitmemory.com/issue/MicrosoftDocs/windows-powershell-docs/1149/511916884
|
||||
fmt.Fprintf(&b, ` -RecordData %d,%d,%d,"%s"`, rec.SrvPriority, rec.SrvWeight, rec.SrvPort, rec.GetTargetField())
|
||||
@ -257,6 +266,7 @@ func (psh *psHandle) RecordCreate(dnsserver, domain string, rec *models.RecordCo
|
||||
//printer.Printf("DEBUG: PScreate\n")
|
||||
}
|
||||
|
||||
//eLog(c)
|
||||
stdout, stderr, err := psh.shell.Execute(c)
|
||||
if err != nil {
|
||||
printer.Printf("PowerShell code was:\nSTART\n%s\nEND\n", c)
|
||||
@ -265,6 +275,7 @@ func (psh *psHandle) RecordCreate(dnsserver, domain string, rec *models.RecordCo
|
||||
if stderr != "" {
|
||||
printer.Printf("STDOUT RecordCreate = %s\n", stdout)
|
||||
printer.Printf("STDERROR RecordCreate = %q\n", stderr)
|
||||
printer.Printf("PowerShell code was:\nSTART\n%s\nEND\n", c)
|
||||
return fmt.Errorf("unexpected stderr from PSCreate: %q", stderr)
|
||||
}
|
||||
return nil
|
||||
@ -272,7 +283,7 @@ func (psh *psHandle) RecordCreate(dnsserver, domain string, rec *models.RecordCo
|
||||
|
||||
func generatePSCreate(dnsserver, domain string, rec *models.RecordConfig) string {
|
||||
var b bytes.Buffer
|
||||
fmt.Fprintf(&b, `echo CREATE "%s" "%s" "..."`, rec.Type, rec.Name)
|
||||
fmt.Fprintf(&b, `echo CREATE "%s" "%s" "[target]"`, rec.Type, rec.Name)
|
||||
fmt.Fprintf(&b, " ; ")
|
||||
|
||||
if rec.Type == "NAPTR" {
|
||||
@ -339,6 +350,7 @@ func generatePSCreate(dnsserver, domain string, rec *models.RecordConfig) string
|
||||
|
||||
func (psh *psHandle) RecordModify(dnsserver, domain string, old, rec *models.RecordConfig) error {
|
||||
c := generatePSModify(dnsserver, domain, old, rec)
|
||||
//eLog(c)
|
||||
_, stderr, err := psh.shell.Execute(c)
|
||||
if err != nil {
|
||||
printer.Printf("PowerShell code was:\nSTART\n%s\nEND\n", c)
|
||||
|
Reference in New Issue
Block a user