Module: Yast::KerberosServerComplexInclude

Defined in:
../../src/include/kerberos-server/complex.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) AdvancedConfiguration(ldap)



586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
# File '../../src/include/kerberos-server/complex.rb', line 586

def AdvancedConfiguration(ldap)
  itemList = get_adv_itemlist
  lastItem = nil

  # caption
  caption = _("Advanced Kerberos Configuration")

  # term content = `Label("Advanced Dialog");

  button = HBox(
    PushButton(Id(:back), Opt(:key_F8), Label.BackButton),
    HStretch(),
    PushButton(Id(:abort), Opt(:key_F9), Label.AbortButton),
    HStretch(),
    PushButton(Id(:next), Opt(:key_F10), Label.NextButton),
    Empty()
  )

  UI.OpenDialog(
    Opt(:defaultsize),
    VBox(
      VSpacing(3),
      HSpacing(85),
      HWeight(
        70,
        VBox(
          HBox(
            HWeight(
              35,
              # tree widget label
              Tree(
                Id(:tree),
                Opt(:notify, :vstretch),
                _("Advanced &Options"),
                itemList
              )
            ),
            HSpacing(1),
            HWeight(
              65,
              VBox(
                HSpacing(60),
                # label widget
                Left(
                  Heading(
                    Id(:heading),
                    Opt(:hstretch),
                    _("Current Selection: ")
                  )
                ),
                VSpacing(0.5),
                VBox(
                  ReplacePoint(
                    Id(:replace),
                    RichText(Id(:id_advanced_d), "")
                  )
                )
              )
            )
          ),
          button
        )
      )
    )
  )

  UI.ChangeWidget(Id(:tree), :CurrentItem, :advanced)
  lastItem = :advanced

  ret = :dummy

  while ret != :back && ret != :abort && ret != :next
    ret = Convert.to_symbol(UI.UserInput)

    if ret == :abort || ret == :cancel
      if ReallyAbort()
        break
      else
        next
      end
    elsif ret == :back
      break
    end

    selected = Convert.to_symbol(UI.QueryWidget(Id(:tree), :CurrentItem))

    # saving settings for old selection
    item = Ops.get_map(@itemMap, lastItem, {})
    function = Ops.get(item, "setCallback")
    error = ""
    if function != nil
      ret2 = Builtins.eval(function)
      error = Convert.to_string(ret2) if Ops.is_string?(ret2)
    end

    if error != nil && Ops.greater_than(Builtins.size(error), 0)
      Popup.Error(error)
      # set selection back
      UI.ChangeWidget(Id(:tree), :CurrentItem, lastItem)
    else
      if ret == :add
        selected2 = Convert.to_symbol(
          UI.QueryWidget(Id(:tree), :CurrentItem)
        )
        Builtins.y2milestone("Add for: %1", selected2)

        # Calling Add callback
        item2 = Ops.get_map(@itemMap, lastItem, {})
        function2 = Ops.get(item2, "addCallback")
        ret2 = Builtins.eval(function2) if function2 != nil
      elsif ret == :modify
        selected2 = Convert.to_symbol(
          UI.QueryWidget(Id(:tree), :CurrentItem)
        )
        Builtins.y2milestone("Modify for: %1", selected2)

        # Calling Modify callback
        item2 = Ops.get_map(@itemMap, lastItem, {})
        function2 = Ops.get(item2, "modifyCallback")
        ret2 = Builtins.eval(function2) if function2 != nil
      elsif ret == :delete
        selected2 = Convert.to_symbol(
          UI.QueryWidget(Id(:tree), :CurrentItem)
        )
        Builtins.y2milestone("Delete for: %1", selected2)

        # Calling Delete callback
        item2 = Ops.get_map(@itemMap, lastItem, {})
        function2 = Ops.get(item2, "deleteCallback")
        ret2 = Builtins.eval(function2) if function2 != nil
      else
        # no error --> goto next selection
        lastItem = selected
        item = Ops.get_map(@itemMap, selected, {})
        # header label
        UI.ChangeWidget(
          Id(:heading),
          :Value,
          Ops.add(
            _("Current Selection: "),
            Ops.get_string(item, "name", "")
          )
        )
        # showing concerning input fields
        UI.ReplaceWidget(
          Id(:replace),
          Ops.get_term(item, "widget", Empty())
        )

        # getting values
        function = Ops.get(item, "getCallback")
        ret2 = Builtins.eval(function) if function != nil
      end
    end
  end

  UI.CloseDialog

  ret
end

- (Object) AskBasicDialog(adv)



209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
# File '../../src/include/kerberos-server/complex.rb', line 209

def AskBasicDialog(adv)
  # caption
  caption = _("Basic Kerberos Settings")

  advButton = Empty()

  if adv
    # Button text
    advButton = PushButton(Id(:advanced), _("&Advanced Configuration"))
  end

  firewall_settings = {
    "services"        => ["service:kdc", "service:kadmind"],
    "display_details" => true
  }
  firewall_widget = CWMFirewallInterfaces.CreateOpenFirewallWidget(
    firewall_settings
  )


  content = HBox(
    HSpacing(3),
    VBox(
      VSpacing(0.5),
      # Frame lable
      Frame(
        _("Basic Kerberos Settings"),
        VBox(
          # TextEntry label: "Realm" is a typical kerberos phrase.
          # 								Please think twice please before you translate this,
          # 								and check with kerberos.pot how it is translated there.
          InputField(
            Id(:realm),
            Opt(:hstretch),
            _("R&ealm"),
            KerberosServer.getDBrealm
          ),
          Password(
            Id(:pw1),
            Opt(:hstretch),
            Label.Password,
            KerberosServer.getDBpassword
          ),
          Password(
            Id(:pw2),
            Opt(:hstretch),
            Label.ConfirmPassword,
            KerberosServer.getDBpassword
          )
        )
      ),
      advButton,
      VSpacing(1),
      # Frame label
      Frame(
        _("Firewall Settings"),
        Ops.get_term(firewall_widget, "custom_widget", Empty())
      )
    )
  )

  Wizard.SetContentsButtons(
    caption,
    content,
    Ops.get_string(@HELPS, "basic", ""),
    Label.BackButton,
    Label.NextButton
  )

  CWMFirewallInterfaces.OpenFirewallInit(firewall_widget, "")

  ret = nil
  event = {}

  while true
    event = UI.WaitForEvent
    ret = Ops.get_symbol(event, "ID")

    CWMFirewallInterfaces.OpenFirewallHandle(firewall_widget, "", event)

    # abort?
    if ret == :abort || ret == :cancel
      if ReallyAbort()
        break
      else
        next
      end
    elsif ret == :back
      break
    elsif ret == :advanced || ret == :next
      CWMFirewallInterfaces.OpenFirewallStore(firewall_widget, "", event)

      stash = KerberosServer.getDBvalue("key_stash_file")
      oldrealm = KerberosServer.getDBrealm
      realm = Convert.to_string(UI.QueryWidget(Id(:realm), :Value))

      newstash = Builtins.regexpsub(
        stash,
        Ops.add(Ops.add("^(.+)", oldrealm), "$"),
        Ops.add("\\1", realm)
      )
      if newstash != nil
        KerberosServer.setDBvalue("key_stash_file", newstash)
      end

      # --------------------------------- password checks
      pw1 = Convert.to_string(UI.QueryWidget(Id(:pw1), :Value))
      pw2 = Convert.to_string(UI.QueryWidget(Id(:pw2), :Value))

      if pw1 != pw2
        # The two user password information do not match
        # error popup
        Report.Error(_("The passwords do not match.\nTry again."))
        UI.SetFocus(Id(:pw1))
        next
      end

      KerberosServer.setDBrealm(realm)
      KerberosServer.setDBpassword(pw1)

      if ret == :next && pw1 == ""
        # Error popup
        Report.Error(_("Empty password is not allowed."))
        UI.SetFocus(Id(:pw1))
        next
      end

      break
    else
      Builtins.y2error("unexpected retcode: %1", ret)
      next
    end
  end

  ret
end

- (Object) AskDBtypeDialog



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
# File '../../src/include/kerberos-server/complex.rb', line 95

def AskDBtypeDialog
  Wizard.RestoreHelp(Ops.get_string(@HELPS, "AskDBtype", ""))

  # caption
  caption = _("Select the Database Back-End")

  content = HBox(
    HSpacing(3),
    # Button group label
    Frame(
      _("Select the database back-end you want to use"),
      RadioButtonGroup(
        Id(:rb),
        VBox(
          # Checkbox text
          Left(RadioButton(Id(:file), Opt(:notify), _("&Local Database"))),
          # Checkbox text
          Left(
            RadioButton(
              Id(:newldap),
              Opt(:notify),
              _("&Set up new LDAP server as database back-end")
            )
          ),
          # Checkbox text
          Left(
            RadioButton(
              Id(:useldap),
              Opt(:notify),
              _("&Use existing LDAP server as database back-end")
            )
          )
        )
      )
    ),
    HSpacing(3)
  )

  Wizard.SetContentsButtons(
    caption,
    content,
    Ops.get_string(@HELPS, "AskDBtype", ""),
    Label.BackButton,
    Label.NextButton
  )

  ret = :file
  type = KerberosServer.getDBtype

  if type == nil || type == "" || type == "file"
    UI.ChangeWidget(Id(:file), :Value, true)
  elsif type == "ldap"
    if KerberosServer.getLdapUseExisting
      UI.ChangeWidget(Id(:useldap), :Value, true)
      ret = :useldap
    else
      UI.ChangeWidget(Id(:newldap), :Value, true)
      ret = :newldap
    end
  end

  while true
    ret = Convert.to_symbol(UI.UserInput)

    # abort?
    if ret == :abort || ret == :cancel || ret == :back
      if ReallyAbort()
        ret = :abort
        break
      else
        next
      end
    elsif ret == :file
      KerberosServer.setDBtype("file")
      KerberosServer.setDBvalue(
        "database_name",
        "/var/lib/kerberos/krb5kdc/principal"
      )
    elsif ret == :newldap || ret == :useldap
      KerberosServer.setDBtype("ldap")
      KerberosServer.setDBvalue("database_name", "")
      if ret == :newldap
        KerberosServer.setLdapUseExisting(false)
      else
        KerberosServer.setLdapUseExisting(true)
      end
    elsif ret == :next
      if Convert.to_boolean(UI.QueryWidget(Id(:file), :Value))
        KerberosServer.setDBtype("file")
        KerberosServer.setDBvalue(
          "database_name",
          "/var/lib/kerberos/krb5kdc/principal"
        )
        ret = :file
      elsif Convert.to_boolean(UI.QueryWidget(Id(:newldap), :Value))
        ret = :newldap
      elsif Convert.to_boolean(UI.QueryWidget(Id(:useldap), :Value))
        ret = :useldap
      else
        Builtins.y2error("unexpected selection.")
        next
      end
      Builtins.y2milestone("configuring kerberos database type: %1", ret)
      break
    else
      Builtins.y2error("unexpected retcode: %1", ret)
      next
    end
  end

  ret
end

- (Object) AskLdapDialog(init)



346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
# File '../../src/include/kerberos-server/complex.rb', line 346

def AskLdapDialog(init)
  # caption
  caption = _("Kerberos Setting for the LDAP Back-End")

  help = Ops.get_string(@HELPS, "useldap", "")

  if !init
    KerberosServer.ReadDefaultLdapValues
  else
    KerberosServer.CalcDefaultLdapValues
  end
  # TextEntry label
  ldapServerTl = InputField(
    Id(:server),
    Opt(:hstretch),
    _("LDAP &Server URI:"),
    KerberosServer.getLdapDBvalue("ldap_servers")
  )
  pwCheckbox1 = Empty()
  # TextEntry label
  kadmindnW = InputField(
    Id(:kadmin),
    Opt(:hstretch),
    _("K&admin Bind DN:"),
    KerberosServer.getLdapDBvalue("ldap_kadmind_dn")
  )
  kadminpw1 = HBox(
    Password(
      Id(:kadminpw1),
      Opt(:hstretch),
      Label.Password,
      KerberosServer.getLdapKadmPw
    ),
    HSpacing(3),
    Password(
      Id(:kadminpw2),
      Opt(:hstretch),
      Label.ConfirmPassword,
      KerberosServer.getLdapKadmPw
    )
  )

  if init
    help = Ops.get_string(@HELPS, "newldap", "")

    # when we init a new ldap server , we know the URI. No need to ask for it.
    ldapServerTl = Empty()

    kadmindnW = Empty()
    kadminpw1 = Empty()
    #kadminpw2 = `Empty();

    pwCheckbox1 = CheckBox(
      Id(:kdc_use_kdcpw),
      Opt(:notify),
      # Checkbox text
      _("Use prev&iously entered password"),
      true
    )
  end

  content = HBox(
    HSpacing(3),
    VBox(
      VSpacing(0.5),
      # Frame label
      Frame(
        _("LDAP Settings"),
        VBox(
          ldapServerTl, #kadminpw2
          # TextEntry label
          InputField(
            Id(:basedn),
            Opt(:hstretch),
            _("LDAP ba&se DN:"),
            KerberosServer.getLdapBaseDN
          ),
          # TextEntry label
          InputField(
            Id(:container),
            Opt(:hstretch),
            _("Kerberos &Container DN:"),
            KerberosServer.getLdapDBvalue("ldap_kerberos_container_dn")
          ),
          HBox(
            # TextEntry label
            InputField(
              Id(:kdcadmin),
              Opt(:hstretch),
              _("K&DC Bind DN:"),
              KerberosServer.getLdapDBvalue("ldap_kdc_dn")
            ),
            pwCheckbox1
          ),
          HBox(
            Password(
              Id(:kdcpw1),
              Opt(:hstretch),
              Label.Password,
              KerberosServer.getLdapKdcPw
            ),
            HSpacing(3),
            Password(
              Id(:kdcpw2),
              Opt(:hstretch),
              Label.ConfirmPassword,
              KerberosServer.getLdapKdcPw
            )
          ),
          kadmindnW,
          kadminpw1
        )
      ),
      # Button text
      PushButton(Id(:advanced), _("Ad&vanced Configuration"))
    )
  )


  Wizard.SetContentsButtons(
    caption,
    content,
    help,
    Label.BackButton,
    Label.NextButton
  )

  if init
    UI.ChangeWidget(Id(:kdcpw1), :Enabled, false)
    UI.ChangeWidget(Id(:kdcpw2), :Enabled, false)
  end

  ret = nil
  while true
    ret = Convert.to_symbol(UI.UserInput)

    # abort?
    if ret == :abort || ret == :cancel
      if ReallyAbort()
        break
      else
        next
      end
    elsif ret == :back
      break
    elsif ret == :kdc_use_kdcpw
      UI.ChangeWidget(
        Id(:kdcpw1),
        :Enabled,
        !Convert.to_boolean(UI.QueryWidget(Id(:kdc_use_kdcpw), :Value))
      )
      UI.ChangeWidget(
        Id(:kdcpw2),
        :Enabled,
        !Convert.to_boolean(UI.QueryWidget(Id(:kdc_use_kdcpw), :Value))
      )
    elsif ret == :next || ret == :advanced
      if init &&
          Convert.to_boolean(UI.QueryWidget(Id(:kdc_use_kdcpw), :Value))
        KerberosServer.setLdapKdcPw(KerberosServer.getDBpassword)
      else
        pw1 = Convert.to_string(UI.QueryWidget(Id(:kdcpw1), :Value))
        pw2 = Convert.to_string(UI.QueryWidget(Id(:kdcpw2), :Value))

        if pw1 != pw2
          # The two user password information do not match
          # error popup
          Report.Error(
            _("The LDAP KDC passwords do not match.\nTry again.")
          )
          UI.SetFocus(Id(:kdcpw1))
          next
        end
        KerberosServer.setLdapKdcPw(pw1)
      end

      if init
        KerberosServer.setLdapKadmPw(KerberosServer.getLdapKdcPw)
      else
        pw1 = Convert.to_string(UI.QueryWidget(Id(:kadminpw1), :Value))
        pw2 = Convert.to_string(UI.QueryWidget(Id(:kadminpw2), :Value))

        if pw1 != pw2
          # The two user password information do not match
          # error popup
          Report.Error(
            _("The LDAP Kadmin passwords do not match.\nTry again.")
          )
          UI.SetFocus(Id(:kadminpw1))
          next
        end
        KerberosServer.setLdapKadmPw(pw1)
      end

      if init
        KerberosServer.setLdapDBvalue("ldap_servers", "ldapi://")
      else
        KerberosServer.setLdapDBvalue(
          "ldap_servers",
          Convert.to_string(UI.QueryWidget(Id(:server), :Value))
        )
      end

      #KerberosServer::setDBtype("ldap");

      KerberosServer.setLdapBaseDN(
        Convert.to_string(UI.QueryWidget(Id(:basedn), :Value))
      )

      KerberosServer.setLdapDBvalue(
        "ldap_kerberos_container_dn",
        Convert.to_string(UI.QueryWidget(Id(:container), :Value))
      )
      KerberosServer.setLdapDBvalue(
        "ldap_kdc_dn",
        Convert.to_string(UI.QueryWidget(Id(:kdcadmin), :Value))
      )
      if init
        KerberosServer.setLdapDBvalue(
          "ldap_kadmind_dn",
          Convert.to_string(UI.QueryWidget(Id(:kdcadmin), :Value))
        )
      else
        KerberosServer.setLdapDBvalue(
          "ldap_kadmind_dn",
          Convert.to_string(UI.QueryWidget(Id(:kadmin), :Value))
        )
      end

      break
    else
      Builtins.y2error("unexpected retcode: %1", ret)
      next
    end
  end

  ret
end

- (Object) initialize_kerberos_server_complex(include_target)



32
33
34
35
36
37
38
39
40
41
42
43
44
# File '../../src/include/kerberos-server/complex.rb', line 32

def initialize_kerberos_server_complex(include_target)
  textdomain "kerberos-server"

  Yast.import "Label"
  Yast.import "Popup"
  Yast.import "Wizard"
  Yast.import "Confirm"
  Yast.import "KerberosServer"
  Yast.import "CWMFirewallInterfaces"

  Yast.include include_target, "kerberos-server/helps.rb"
  Yast.include include_target, "kerberos-server/advanced_items.rb"
end

- (Object) Modified

Return a modification status

Returns:

  • true if data was modified



48
49
50
# File '../../src/include/kerberos-server/complex.rb', line 48

def Modified
  KerberosServer.Modified
end

- (Object) PollAbort



56
57
58
# File '../../src/include/kerberos-server/complex.rb', line 56

def PollAbort
  UI.PollInput == :abort
end

- (Object) ReadDialog

Read settings dialog

Returns:

  • abort if aborted andnext otherwise



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File '../../src/include/kerberos-server/complex.rb', line 62

def ReadDialog
  Wizard.RestoreHelp(Ops.get_string(@HELPS, "read", ""))
  # KerberosServer::AbortFunction = PollAbort;
  return :abort if !Confirm.MustBeRoot
  ret = KerberosServer.Read

  return :abort if !ret

  Builtins.y2milestone(
    "Wizard: found Database? : %1",
    KerberosServer.getFoundDB
  )

  return :init if KerberosServer.getFoundDB == false
  :next
end

- (Object) ReallyAbort



52
53
54
# File '../../src/include/kerberos-server/complex.rb', line 52

def ReallyAbort
  !KerberosServer.Modified || Popup.ReallyAbort(true)
end

- (Object) SummaryDialog

Summary dialog

Returns:

  • dialog result



749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
# File '../../src/include/kerberos-server/complex.rb', line 749

def SummaryDialog
  # KerberosServer summary dialog caption
  caption = _("Kerberos Server Configuration")

  summary = KerberosServer.Summary
  configured = Ops.get_string(summary, 0, "")

  firewall_settings = {
    "services"        => ["service:kdc", "service:kadmind"],
    "display_details" => true
  }
  firewall_widget = CWMFirewallInterfaces.CreateOpenFirewallWidget(
    firewall_settings
  )



  button = HBox(PushButton(Id(:edit), Label.EditButton), HStretch())

  # Frame label
  contents = VBox(
    VSpacing(0.5),
    RadioButtonGroup(
      Id(:rd),
      Left(
        HVSquash(
          VBox(
            # radio button label
            Left(
              RadioButton(
                Id(:disable),
                Opt(:notify),
                _("&Disable Kerberos"),
                !KerberosServer.getServiceEnabled
              )
            ),
            # radio button label
            Left(
              RadioButton(
                Id(:enable),
                Opt(:notify),
                _("&Enable Kerberos"),
                KerberosServer.getServiceEnabled
              )
            )
          )
        )
      )
    ),
    RichText(configured),
    button,
    VSpacing(1),
    # Frame label
    Frame(
      _("Firewall Settings"),
      Ops.get_term(firewall_widget, "custom_widget", Empty())
    )
  )

  Wizard.SetContentsButtons(
    caption,
    contents,
    Ops.get_string(@HELPS, "summary", ""),
    Label.BackButton,
    Label.FinishButton
  )

  UI.ChangeWidget(Id(:edit), :Enabled, KerberosServer.getServiceEnabled)

  CWMFirewallInterfaces.OpenFirewallInit(firewall_widget, "")

  ret = nil
  event = {}
  while true
    event = UI.WaitForEvent
    ret = Ops.get_symbol(event, "ID")

    CWMFirewallInterfaces.OpenFirewallHandle(firewall_widget, "", event)

    # abort?
    if ret == :abort || ret == :cancel || ret == :back
      if ReallyAbort()
        ret = :abort
        break
      else
        next
      end
    elsif ret == :edit || ret == :next
      CWMFirewallInterfaces.OpenFirewallStore(firewall_widget, "", event)
      break
    elsif ret == :enable
      KerberosServer.setServiceEnabled(true)
      UI.ChangeWidget(Id(:edit), :Enabled, true)
    elsif ret == :disable
      KerberosServer.setServiceEnabled(false)
      UI.ChangeWidget(Id(:edit), :Enabled, false)
    else
      Builtins.y2error("unexpected retcode: %1", ret)
      next
    end
  end
  ret
end

- (Object) WriteDialog

Write settings dialog

Returns:

  • abort if aborted andnext otherwise



81
82
83
84
85
86
87
88
89
90
91
92
# File '../../src/include/kerberos-server/complex.rb', line 81

def WriteDialog
  Wizard.RestoreHelp(Ops.get_string(@HELPS, "write", ""))
  # KerberosServer::AbortFunction = PollAbort;
  ret = KerberosServer.Write
  if !ret &&
      Popup.YesNo(
        _("Saving the configuration failed. Change the settings?")
      )
    return :back
  end
  ret ? :next : :abort
end