()
| 488 | } |
| 489 | |
| 490 | func loadChangeControlFlagsForm() { |
| 491 | if sd == nil { |
| 492 | return |
| 493 | } |
| 494 | |
| 495 | updateControlFlagsForm := NewXForm() |
| 496 | |
| 497 | controlFlags := sd.GetControl() |
| 498 | |
| 499 | checkboxState := controlFlags |
| 500 | |
| 501 | updateControlFlagsForm. |
| 502 | AddTextView("Raw ControlFlag Value", strconv.Itoa(checkboxState), 0, 1, false, true) |
| 503 | |
| 504 | controlFlagsKeys := make([]int, 0) |
| 505 | for key := range ldaputils.SDControlFlags { |
| 506 | controlFlagsKeys = append(controlFlagsKeys, key) |
| 507 | } |
| 508 | sort.Ints(controlFlagsKeys) |
| 509 | |
| 510 | for _, val := range controlFlagsKeys { |
| 511 | flagVal := val |
| 512 | updateControlFlagsForm.AddCheckbox( |
| 513 | ldaputils.SDControlFlags[flagVal], |
| 514 | controlFlags&flagVal != 0, |
| 515 | func(checked bool) { |
| 516 | if checked { |
| 517 | checkboxState |= flagVal |
| 518 | } else { |
| 519 | checkboxState &^= flagVal |
| 520 | } |
| 521 | |
| 522 | flagPreview := updateControlFlagsForm.GetFormItemByLabel("Raw ControlFlag Value").(*tview.TextView) |
| 523 | if flagPreview != nil { |
| 524 | flagPreview.SetText(strconv.Itoa(checkboxState)) |
| 525 | } |
| 526 | }) |
| 527 | } |
| 528 | |
| 529 | updateControlFlagsForm. |
| 530 | AddButton("Go Back", func() { |
| 531 | app.SetRoot(appPanel, true).SetFocus(daclEntriesPanel) |
| 532 | }). |
| 533 | AddButton("Update", func() { |
| 534 | |
| 535 | sd.Header.Control = ldaputils.EndianConvert(fmt.Sprintf("%04x", checkboxState)) |
| 536 | newSd, _ := hex.DecodeString(sd.Encode()) |
| 537 | |
| 538 | err = lc.ModifyDACL(object, string(newSd)) |
| 539 | |
| 540 | if err == nil { |
| 541 | updateLog("Control flags updated for '"+object+"'", "green") |
| 542 | go app.QueueUpdateDraw(updateDaclEntries) |
| 543 | } else { |
| 544 | handleLDAPError(err) |
| 545 | } |
| 546 | |
| 547 | app.SetRoot(appPanel, true).SetFocus(daclEntriesPanel) |
no test coverage detected