@@ -491,13 +491,18 @@ def load_rules(self):
491491
492492 for rule in reversed (self .rules ):
493493 if rule .source == "@type:TemplateVM" :
494- def_updatevm = rule .action .target
494+ if rule .action == "deny" :
495+ def_updatevm = None
496+ else :
497+ def_updatevm = rule .action .target
495498 elif rule .source == "@tag:whonix-updatevm" :
496- def_whonix_updatevm = rule .action .target
499+ if rule .action == "deny" :
500+ def_whonix_updatevm = None
501+ else :
502+ def_whonix_updatevm = rule .action .target
497503
498- if def_updatevm :
499- self .updatevm_model .select_value (str (def_updatevm ))
500- self .updatevm_model .update_initial ()
504+ self .updatevm_model .select_value (str (def_updatevm ))
505+ self .updatevm_model .update_initial ()
501506
502507 if self .has_whonix :
503508 self .whonix_updatevm_model .select_value (str (def_whonix_updatevm ))
@@ -589,27 +594,41 @@ def save(self):
589594 new_update_proxies .add (self .qapp .domains [rule .target ])
590595
591596 if self .has_whonix :
592- raw_rules . append (
593- self .policy_manager .new_rule (
597+ if self . whonix_updatevm_model . get_selected ():
598+ rule = self .policy_manager .new_rule (
594599 service = self .service_name ,
595600 source = "@tag:whonix-updatevm" ,
596601 target = "@default" ,
597602 action = "allow "
598603 f"target={ self .whonix_updatevm_model .get_selected ()} " ,
599604 )
600- )
601- new_update_proxies .add (self .whonix_updatevm_model .get_selected ())
602-
603- if self .updatevm_model .get_selected ():
604- raw_rules .append (
605- self .policy_manager .new_rule (
605+ else :
606+ rule = self .policy_manager .new_rule (
606607 service = self .service_name ,
607- source = "@type:TemplateVM " ,
608+ source = "@tag:whonix-updatevm " ,
608609 target = "@default" ,
609- action = "allow " f"target= { self . updatevm_model . get_selected () } " ,
610+ action = "deny " ,
610611 )
612+ raw_rules .append (rule )
613+ new_update_proxies .add (self .whonix_updatevm_model .get_selected ())
614+
615+ # always have a rule for updatevm
616+ if self .updatevm_model .get_selected ():
617+ rule = self .policy_manager .new_rule (
618+ service = self .service_name ,
619+ source = "@type:TemplateVM" ,
620+ target = "@default" ,
621+ action = f"allow target={ self .updatevm_model .get_selected ()} " ,
611622 )
612623 new_update_proxies .add (self .updatevm_model .get_selected ())
624+ else :
625+ rule = self .policy_manager .new_rule (
626+ service = self .service_name ,
627+ source = "@type:TemplateVM" ,
628+ target = "@default" ,
629+ action = "deny" ,
630+ )
631+ raw_rules .append (rule )
613632
614633 self .policy_manager .save_rules (
615634 self .policy_file_name , raw_rules , self .current_token
0 commit comments