Hello community, here is the log from the commit of package yast2-network for openSUSE:Factory checked in at 2018-04-26 13:31:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-network (Old) and /work/SRC/openSUSE:Factory/.yast2-network.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-network" Thu Apr 26 13:31:52 2018 rev:384 rq:601002 version:4.0.30 Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-network/yast2-network.changes 2018-04-07 20:52:35.724079666 +0200 +++ /work/SRC/openSUSE:Factory/.yast2-network.new/yast2-network.changes 2018-04-26 13:31:54.965525189 +0200 @@ -1,0 +2,40 @@ +Wed Apr 25 08:31:35 UTC 2018 - knut.anders...@suse.com + +- Y2remote: When vnc is disabled disable also all the services that + are still enabled (bsc#1088646) +- 4.0.30 + +------------------------------------------------------------------- +Wed Apr 25 07:01:58 UTC 2018 - mfi...@suse.com + +- bnc#1077435 + - do not crash with internal error when /etc/hosts is corrupted +- 4.0.29 + +------------------------------------------------------------------- +Mon Apr 23 18:10:29 UTC 2018 - mfi...@suse.com + +- bnc#1089471 + - previous fix contains wrong check of ifcfg options and proposes + wpa_supplicant incorrectly. The check was fixed and + wpa_supplicant is proposed when needed only. +- 4.0.28 + +------------------------------------------------------------------- +Sat Apr 21 18:15:56 UTC 2018 - mfi...@suse.com + +- bnc#1089471 + - do not propose vlan, iw and tunctl packages for installation as + its functionality is implemented by wicked. +- 4.0.27 + +------------------------------------------------------------------- +Thu Apr 19 00:31:15 UTC 2018 - knut.anders...@suse.com + +- Y2Remote: + - Fixed the start of services when writing (bsc#1088646) + - Fixed the modification of vnc services configuration according + to the selection of allowed interfaces (bsc#1088647) +- 4.0.26 + +------------------------------------------------------------------- Old: ---- yast2-network-4.0.25.tar.bz2 New: ---- yast2-network-4.0.30.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-network.spec ++++++ --- /var/tmp/diff_new_pack.RnXZBE/_old 2018-04-26 13:31:55.461507020 +0200 +++ /var/tmp/diff_new_pack.RnXZBE/_new 2018-04-26 13:31:55.461507020 +0200 @@ -17,7 +17,7 @@ Name: yast2-network -Version: 4.0.25 +Version: 4.0.30 Release: 0 BuildArch: noarch @@ -45,9 +45,9 @@ # Packages::vnc_packages Requires: yast2-packager >= 4.0.18 BuildRequires: yast2-packager >= 4.0.18 -# cfa for parsing hosts, AugeasTree#unique_id -BuildRequires: rubygem(%rb_default_ruby_abi:cfa) >= 0.6.0 -Requires: rubygem(%rb_default_ruby_abi:cfa) >= 0.6.0 +# cfa for parsing hosts +BuildRequires: rubygem(%rb_default_ruby_abi:cfa) >= 0.6.4 +Requires: rubygem(%rb_default_ruby_abi:cfa) >= 0.6.4 # lenses are needed to use cfa BuildRequires: augeas-lenses Requires: augeas-lenses ++++++ yast2-network-4.0.25.tar.bz2 -> yast2-network-4.0.30.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/package/yast2-network.changes new/yast2-network-4.0.30/package/yast2-network.changes --- old/yast2-network-4.0.25/package/yast2-network.changes 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/package/yast2-network.changes 2018-04-25 14:52:17.000000000 +0200 @@ -1,4 +1,44 @@ ------------------------------------------------------------------- +Wed Apr 25 08:31:35 UTC 2018 - knut.anders...@suse.com + +- Y2remote: When vnc is disabled disable also all the services that + are still enabled (bsc#1088646) +- 4.0.30 + +------------------------------------------------------------------- +Wed Apr 25 07:01:58 UTC 2018 - mfi...@suse.com + +- bnc#1077435 + - do not crash with internal error when /etc/hosts is corrupted +- 4.0.29 + +------------------------------------------------------------------- +Mon Apr 23 18:10:29 UTC 2018 - mfi...@suse.com + +- bnc#1089471 + - previous fix contains wrong check of ifcfg options and proposes + wpa_supplicant incorrectly. The check was fixed and + wpa_supplicant is proposed when needed only. +- 4.0.28 + +------------------------------------------------------------------- +Sat Apr 21 18:15:56 UTC 2018 - mfi...@suse.com + +- bnc#1089471 + - do not propose vlan, iw and tunctl packages for installation as + its functionality is implemented by wicked. +- 4.0.27 + +------------------------------------------------------------------- +Thu Apr 19 00:31:15 UTC 2018 - knut.anders...@suse.com + +- Y2Remote: + - Fixed the start of services when writing (bsc#1088646) + - Fixed the modification of vnc services configuration according + to the selection of allowed interfaces (bsc#1088647) +- 4.0.26 + +------------------------------------------------------------------- Fri Apr 6 16:17:45 UTC 2018 - knut.anders...@suse.com - Fixed preformatted proposal for network module (bsc#1088488) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/package/yast2-network.spec new/yast2-network-4.0.30/package/yast2-network.spec --- old/yast2-network-4.0.25/package/yast2-network.spec 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/package/yast2-network.spec 2018-04-25 14:52:17.000000000 +0200 @@ -17,7 +17,7 @@ Name: yast2-network -Version: 4.0.25 +Version: 4.0.30 Release: 0 BuildArch: noarch @@ -45,9 +45,9 @@ # Packages::vnc_packages Requires: yast2-packager >= 4.0.18 BuildRequires: yast2-packager >= 4.0.18 -# cfa for parsing hosts, AugeasTree#unique_id -BuildRequires: rubygem(%rb_default_ruby_abi:cfa) >= 0.6.0 -Requires: rubygem(%rb_default_ruby_abi:cfa) >= 0.6.0 +# cfa for parsing hosts +BuildRequires: rubygem(%rb_default_ruby_abi:cfa) >= 0.6.4 +Requires: rubygem(%rb_default_ruby_abi:cfa) >= 0.6.4 # lenses are needed to use cfa BuildRequires: augeas-lenses Requires: augeas-lenses diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/clients/dns.rb new/yast2-network-4.0.30/src/clients/dns.rb --- old/yast2-network-4.0.25/src/clients/dns.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/clients/dns.rb 2018-04-25 14:52:17.000000000 +0200 @@ -153,7 +153,7 @@ end # Handler for action "list" - # @param [Hash{String => String}] options action options + # @param _options [Hash{String => String}] action options def ListHandler(_options) # Command line output Headline summary = Ops.add( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/clients/host.rb new/yast2-network-4.0.30/src/clients/host.rb --- old/yast2-network-4.0.25/src/clients/host.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/clients/host.rb 2018-04-25 14:52:17.000000000 +0200 @@ -105,7 +105,7 @@ end # Handler for action "list" - # @param [Hash{String => String}] options action options + # @param _options [Hash{String => String}] action options def ListHandler(_options) # Command line output Headline # configuration of hosts diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/clients/inst_do_net_test.rb new/yast2-network-4.0.30/src/clients/inst_do_net_test.rb --- old/yast2-network-4.0.25/src/clients/inst_do_net_test.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/clients/inst_do_net_test.rb 2018-04-25 14:52:17.000000000 +0200 @@ -597,8 +597,8 @@ # Function checks two versions of installed rpm and decides whether the second one is # newer than the first one. This function ignores non-numerical values in versions # - # @param string first version - # @param string second version + # @param installed_rpm_version [String] first version + # @param downloaded_rpm_version [String] second version # @return [Boolean] true if the second one is newer than the first one def IsDownloadedVersionNewer(installed_rpm_version, downloaded_rpm_version) installed_rpm_version_l = Builtins.filter( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/clients/remote.rb new/yast2-network-4.0.30/src/clients/remote.rb --- old/yast2-network-4.0.25/src/clients/remote.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/clients/remote.rb 2018-04-25 14:52:17.000000000 +0200 @@ -130,7 +130,7 @@ end # Handler for action "list" - # @param [Hash{String => String}] options action options + # @param _options [Hash{String => String}] action options def ListHandler(_options) # Command line output Headline summary = Ops.add( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/clients/routing.rb new/yast2-network-4.0.30/src/clients/routing.rb --- old/yast2-network-4.0.25/src/clients/routing.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/clients/routing.rb 2018-04-25 14:52:17.000000000 +0200 @@ -217,7 +217,7 @@ end # Handler for action "list" - # @param [Hash{String => String}] options action options + # @param _options [Hash{String => String}] action options def ListHandler(_options) CommandLine.Print(PrintableRoutingTable(Routing.Routes)) CommandLine.Print("") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/include/network/lan/address.rb new/yast2-network-4.0.30/src/include/network/lan/address.rb --- old/yast2-network-4.0.25/src/include/network/lan/address.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/include/network/lan/address.rb 2018-04-25 14:52:17.000000000 +0200 @@ -397,12 +397,6 @@ ) end - # obsoleted by GetDefaultsForHW - # @return `next - def ChangeDefaults - :next - end - # `RadioButtonGroup uses CurrentButton instead of Value, grrr # @param [String] key widget id # @return what property to ask for to get the widget value @@ -414,8 +408,8 @@ end # Debug messages configurable at runtime - # @param [String] class debug class - # @param [String] msg message to log + # @param class_ [String] debug class + # @param msg [String] message to log def my2debug(class_, msg) if SCR.Read(path(".target.size"), Ops.add("/tmp/my2debug/", class_)) != -1 Builtins.y2internal(Ops.add(Ops.add(class_, ": "), msg)) @@ -472,8 +466,7 @@ end # Default function to store the value of devices attached to bridge (BRIDGE_PORTS). - # @param [String] key id of the widget - # @param [String] key id of the widget + # @param key [String] id of the widget def StoreBridge(key, _event) selected_bridge_ports = UI.QueryWidget(Id("BRIDGE_PORTS"), :SelectedItems) || [] @@ -487,7 +480,7 @@ end # Default function to init the value of slave ETHERDEVICE box. - # @param [String] key id of the widget + # @param _key [String] id of the widget def InitVLANSlave(_key) items = [] # unconfigured devices @@ -558,8 +551,7 @@ end # Default function to store the value of ETHERDEVICE devices box. - # @param [String] key id of the widget - # @param [String] key id of the widget + # @param _key [String] id of the widget def StoreVLANSlave(_key, _event) Ops.set( @settings, @@ -600,7 +592,7 @@ end # Default function to init the value of slave devices box for bonding. - # @param [String] key id of the widget + # @param _key [String] id of the widget def InitSlave(_key) @settings["SLAVES"] = LanItems.bond_slaves || [] @@ -677,8 +669,7 @@ end # Default function to store the value of slave devices box. - # @param [String] key id of the widget - # @param [String] key id of the widget + # @param _key [String] id of the widget def StoreSlave(_key, _event) configured_slaves = @settings["SLAVES"] || [] @@ -704,8 +695,8 @@ # Validates created bonding. Currently just prevent the user to create a # bond with more than one interface sharing the same physical port id # - # @param [String] key the widget being validated - # @param [Hash] event the event being handled + # @param _key [String] the widget being validated + # @param _event [Hash] the event being handled # @return true if valid or user decision if not def validate_bond(_key, _event) selected_slaves = UI.QueryWidget(:msbox_items, :SelectedItems) || [] @@ -759,10 +750,8 @@ # Initialize a RadioButtonGroup # Group called FOO has buttons FOO_bar FOO_qux and values bar qux - # @param [String] key id of the widget + # @param _key [String] id of the widget def initBootProto(_key) - # if (LanItems::type=="br") UI::ReplaceWidget(`rp, `Empty()); - # else if LanItems.type != "eth" UI.ReplaceWidget( :rp, @@ -862,8 +851,8 @@ # Store a RadioButtonGroup # Group called FOO has buttons FOO_bar FOO_qux and values bar qux - # @param [String] key id of the widget - # @param [Hash] event the event being handled + # @param _key [String] id of the widget + # @param _event [Hash] the event being handled def storeBootProto(_key, _event) case Convert.to_symbol(UI.QueryWidget(Id(:bootproto), :CurrentButton)) when :none @@ -938,8 +927,8 @@ end # Remap the buttons to their Wizard Sequencer values - # @param [String] key the widget receiving the event - # @param [Hash] event the event being handled + # @param _key [String] the widget receiving the event + # @param event [Hash] the event being handled # @return nil so that the dialog loops on def HandleButton(_key, event) event = deep_copy(event) @@ -962,8 +951,8 @@ end # Validator for network masks adresses - # @param [String] key the widget being validated - # @param [Hash] event the event being handled + # @param key [String] the widget being validated + # @param _event [Hash] the event being handled # @return whether valid def ValidateNetmask(key, _event) # TODO: general CWM improvement idea: validate and save only nondisabled @@ -976,8 +965,8 @@ end # Validator for ifcfg names - # @param [String] key the widget being validated - # @param [Hash] event the event being handled + # @param key [String] the widget being validated + # @param _event [Hash] the event being handled # @return whether valid def ValidateIfcfgType(key, _event) if LanItems.operation == :add @@ -1016,8 +1005,8 @@ end # Validator for network masks adresses - # @param [String] key the widget being validated - # @param [Hash] event the event being handled + # @param _key [String] the widget being validated + # @param _event [Hash] the event being handled # @return whether valid def ValidateBootproto(_key, _event) if UI.QueryWidget(:bootproto, :CurrentButton) == :static @@ -1075,7 +1064,7 @@ # Initialize value of firewall zone widget # (disables it when SuSEFirewall is not installed) - # @param [String] key id of the widget + # @param _key [String] id of the widget def InitFwZone(_key) if SuSEFirewall4Network.IsInstalled UI.ChangeWidget( @@ -1494,7 +1483,7 @@ # Given a map of duplicated port ids with device names, aks the user if he # would like to continue or not. # - # @param [Hash{String => Array<String>}] hash of duplicated physical port ids + # @param physical_ports [Hash{String => Array<String>}] hash of duplicated physical port ids # mapping to an array of device names # @return [Boolean] true if continue with duplicates, otherwise false def continue_with_duplicates?(physical_ports) @@ -1515,7 +1504,7 @@ # Given a list of device names returns a hash of physical port ids mapping # device names if at least two devices shared the same physical port id # - # @param [Array<String] bonding slaves + # @param slaves [Array<String>] bonding slaves # @return [Hash{String => Array<String>}] of duplicated physical port ids def repeated_physical_port_ids(slaves) physical_port_ids = {} @@ -1543,8 +1532,8 @@ # Otherwise the canonical name and all aliases in the record # are replaced by new ones. # - # @param [String] ip address - # @param [String] new hostname + # @param ipaddr [String] ip address + # @param hostname [String] new hostname def update_hostname(ipaddr, hostname) ip_changed = LanItems.ipaddr != ipaddr initial_hostname = initial_hostname(LanItems.ipaddr) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/include/network/lan/complex.rb new/yast2-network-4.0.30/src/include/network/lan/complex.rb --- old/yast2-network-4.0.25/src/include/network/lan/complex.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/include/network/lan/complex.rb 2018-04-25 14:52:17.000000000 +0200 @@ -408,7 +408,6 @@ return nil # means cancel end - # TODO: move the defaults to GetDefaultsForHW LanItems.startmode = "ifplugd" end else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/include/network/lan/virtual.rb new/yast2-network-4.0.30/src/include/network/lan/virtual.rb --- old/yast2-network-4.0.25/src/include/network/lan/virtual.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/include/network/lan/virtual.rb 2018-04-25 14:52:17.000000000 +0200 @@ -81,7 +81,6 @@ end # Main aliases dialog - # @param standalone true if not run from another ycp client # @return dialog result def handleAdditional(_key, event) event = deep_copy(event) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/include/network/lan/wireless.rb new/yast2-network-4.0.30/src/include/network/lan/wireless.rb --- old/yast2-network-4.0.25/src/include/network/lan/wireless.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/include/network/lan/wireless.rb 2018-04-25 14:52:17.000000000 +0200 @@ -1144,8 +1144,8 @@ # Event handler for EAP mode: # enable or disable appropriate widgets - # @param [String] key the widget receiving the event - # @param [Hash] event the event being handled + # @param key [String] the widget receiving the event + # @param _event [Hash] the event being handled # @return nil so that the dialog loops on def HandleEapMode(key, _event) tls = UI.QueryWidget(Id(key), :Value) == "TLS" @@ -1221,8 +1221,8 @@ end # Remap the buttons to their Wizard Sequencer values - # @param [String] key the widget receiving the event - # @param [Hash] event the event being handled + # @param _key [String] the widget receiving the event + # @param event [Hash] the event being handled # @return nil so that the dialog loops on def HandleDetails(_key, event) event = deep_copy(event) @@ -1231,8 +1231,8 @@ end # Called to validate that the file entered exists - # @param [String] key widget id - # @param [Hash] event ? + # @param key [String] widget id + # @param _event [Hash] the event being handled # @return ok? def ValidateFileExists(key, _event) file = Convert.to_string(UI.QueryWidget(Id(key), :Value)) @@ -1265,8 +1265,8 @@ end # Called to validate that the whole dialog makes sense together - # @param [String] key widget id - # @param [Hash] event ? + # @param _key [String] widget id + # @param _event [Hash] the event being handled # @return ok? def ValidateWpaEap(_key, _event) tmp = Builtins.listmap( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/include/network/routines.rb new/yast2-network-4.0.30/src/include/network/routines.rb --- old/yast2-network-4.0.25/src/include/network/routines.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/include/network/routines.rb 2018-04-25 14:52:17.000000000 +0200 @@ -183,8 +183,8 @@ end # Create a list of items for UI from the given list - # @param [Array] l given list for conversion - # @param [Fixnum] selected selected item (0 for the first) + # @param descriptions [Array] given list for conversion + # @param selected_index [Fixnum] selected item (0 for the first) # @return a list of items # @example [ "x", "y" ] -> [ `item(`id(0), "x"), `item(`id(1), "y") ] def list2items(descriptions, selected_index) @@ -199,8 +199,8 @@ # <li> undetected cards manually. there is no link status there # and it won't be displayed. all is ok. </li> # </ol> - # @param [Array<Hash>] l given list for conversion - # @param [Fixnum] selected selected item (0 for the first) + # @param descriptions [Array<Hash>] given list for conversion + # @param selected_index [Fixnum] selected item (0 for the first) # @return a list of items def hwlist2items(descriptions, selected_index) descriptions.map.with_index do |d, i| @@ -675,7 +675,7 @@ # TODO: begin: # Following functions should be generalized and ported into yast-yast2 - # @param Shell command to run + # @param command [String] Shell command to run # @return Hash in form $[ "exit": <command-exit-status>, "output": [ <1st line>, <2nd line>, ... ] ] def RunAndRead(command) ret = { "exit" => false, "output" => [] } @@ -705,7 +705,7 @@ deep_copy(ret) end - # @param Shell command to run + # @param command [String] Shell command to run # @return whether command execution succeeds def Run(command) ret = SCR.Execute(path(".target.bash"), command).zero? @@ -735,7 +735,7 @@ # Wrapper to call 'ip link set up' with the given interface # - # @param [String] name of interface to 'set link up' + # @param dev_name [String] name of interface to 'set link up' def SetLinkUp(dev_name) log.info("Setting link up for interface #{dev_name}") Run("ip link set #{dev_name} up") @@ -743,7 +743,7 @@ # Wrapper to call 'ip link set down' with the given interface # - # @param [String] name of interface to 'set link down' + # @param dev_name [String] name of interface to 'set link down' def SetLinkDown(dev_name) log.info("Setting link down for interface #{dev_name}") Run("ip link set #{dev_name} down") @@ -751,7 +751,7 @@ # Calls wicked ifup with the given interface # - # @param [String] name of interface to put down + # @param dev_name [String] name of interface to put down def SetIfaceUp(dev_name) log.info("Setting interface #{dev_name} up") Run("ifup #{dev_name}") @@ -759,7 +759,7 @@ # Calls wicked ifdown with the given interface # - # @param [String] name of interface to put down + # @param dev_name [String] name of interface to put down def SetIfaceDown(dev_name) log.info("Setting interface #{dev_name} down") Run("ifdown #{dev_name}") @@ -784,7 +784,7 @@ # port in various. If the driver module support it, we can check the phys # port id via sysfs reading the /sys/class/net/$dev_name/phys_port_id # - # @param [String] device name to check + # @param dev_name [String] device name to check # @return [String] physical port id if supported or a empty string if not def physical_port_id(dev_name) SCR.Read( @@ -801,7 +801,7 @@ # Dev port of the given interface from /sys/class/net/$dev_name/dev_port # - # @param [String] device name to check + # @param dev_name [String] device name to check # @return [String] dev port or an empty string if not def dev_port(dev_name) SCR.Read( @@ -960,7 +960,7 @@ # Returns a generic message informing user that incorrect DHCLIENT_SET_HOSTNAME # setup was detected. # - # @param [Array<String>] list of incorrectly configured devices + # @param cfgs [Array<String>] list of incorrectly configured devices # @return [String] a message stating that incorrect DHCLIENT_SET_HOSTNAME setup was detected def fix_dhclient_msg(cfgs) format( @@ -976,7 +976,7 @@ # A popup informing user that incorrent DHCLIENT_SET_HOSTNAME was detected # - # @param [Array<String>] list of incorrectly configured devices + # @param devs [Array<String>] list of incorrectly configured devices # @return [void] def fix_dhclient_warning(devs) Report.Warning(fix_dhclient_msg(devs)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/include/network/services/dns.rb new/yast2-network-4.0.30/src/include/network/services/dns.rb --- old/yast2-network-4.0.25/src/include/network/services/dns.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/include/network/services/dns.rb 2018-04-25 14:52:17.000000000 +0200 @@ -397,8 +397,8 @@ end # Default function to store the value of a widget. - # @param [String] key id of the widget - # @param [Hash] event the event being handled + # @param key [String] id of the widget + # @param _event [Hash] the event being handled def StoreHnWidget(key, _event) value = UI.QueryWidget(Id(key), :Value) SetHnItem(key, value) @@ -486,8 +486,8 @@ # Event handler for resolver data (nameservers, searchlist) # enable or disable: is DHCP available? - # @param [String] key the widget receiving the event - # @param [Hash] event the event being handled + # @param key [String] the widget receiving the event + # @param _event [Hash] the event being handled # @return nil so that the dialog loops on def HandleResolverData(key, _event) # if this one is disabled, it means NM is in charge (see also initModifyResolvPolicy()) @@ -499,8 +499,8 @@ end # Validator for hostname, no_popup - # @param [String] key the widget being validated - # @param [Hash] event the event being handled + # @param key [String] the widget being validated + # @param _event [Hash] the event being handled # @return whether valid def ValidateHostname(key, _event) dhn = has_dhcp? && use_dhcp_hostname? @@ -514,8 +514,8 @@ end # Validator for domain name, no_popup - # @param [String] key the widget being validated - # @param [Hash] event the event being handled + # @param key [String] the widget being validated + # @param _event [Hash] the event being handled # @return whether valid def ValidateDomain(key, _event) dhn = has_dhcp? && use_dhcp_hostname? @@ -531,8 +531,8 @@ end # Validator for the search list - # @param [String] key the widget being validated - # @param [Hash] event the event being handled + # @param key [String] the widget being validated + # @param _event [Hash] the event being handled # @return whether valid def ValidateSearchList(key, _event) value = Convert.to_string(UI.QueryWidget(Id(key), :Value)) @@ -651,7 +651,7 @@ end # Used in GUI mode - initializes widgets according hn_settings - # @param [String] key ignored + # @param _key [String] ignored def initHostnameGlobal(_key) InitHnSettings() @@ -673,8 +673,8 @@ # Used in GUI mode - updates and stores actuall hostname settings according dialog widgets content. # It calls store handler for every widget from hn_settings with event as an option. - # @param [String] key ignored - # @param [Hash] event user generated event + # @param _key [String] ignored + # @param event [Hash] user generated event def storeHostnameGlobal(_key, event) @hn_settings.keys.each do |key2| StoreHnWidget(key2, event) if UI.QueryWidget(Id(key2), :Enabled) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/include/network/widgets.rb new/yast2-network-4.0.30/src/include/network/widgets.rb --- old/yast2-network-4.0.25/src/include/network/widgets.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/include/network/widgets.rb 2018-04-25 14:52:17.000000000 +0200 @@ -158,8 +158,8 @@ end # Validator for IP adresses, no_popup - # @param [String] key the widget being validated - # @param [Hash] event the event being handled + # @param key [String] the widget being validated + # @param _event [Hash] the event being handled # @return whether valid def ValidateIP(key, _event) value = Convert.to_string(UI.QueryWidget(Id(key), :Value)) @@ -276,7 +276,7 @@ end # Initialize the NetworkManager widget - # @param [String] key id of the widget + # @param _key [String] id of the widget def ManagedInit(_key) items = [] @@ -318,8 +318,8 @@ end # Store the NetworkManager widget - # @param [String] key id of the widget - # @param [Hash] event the event being handled + # @param _key [String] id of the widget + # @param _event [Hash] the event being handled def ManagedStore(_key, _event) new_backend = UI.QueryWidget(Id(:managed), :Value) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/lib/network/network_autoconfiguration.rb new/yast2-network-4.0.30/src/lib/network/network_autoconfiguration.rb --- old/yast2-network-4.0.25/src/lib/network/network_autoconfiguration.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/lib/network/network_autoconfiguration.rb 2018-04-25 14:52:17.000000000 +0200 @@ -153,7 +153,7 @@ # Writes and activates changes in devices configurations # - # @devnames [Array] list of device names + # @param devnames [Array] list of device names # @return true when changes were successfully applied def activate_changes(devnames) return false if !write_configuration diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/lib/network/network_autoyast.rb new/yast2-network-4.0.30/src/lib/network/network_autoyast.rb --- old/yast2-network-4.0.25/src/lib/network/network_autoyast.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/lib/network/network_autoyast.rb 2018-04-25 14:52:17.000000000 +0200 @@ -26,7 +26,7 @@ # Merges existing config from system into given configuration map # - # @param [Hash, nil] configuration map + # @param conf [Hash, nil] configuration map # # @return updated configuration map def merge_configs(conf) @@ -281,11 +281,11 @@ # Renames a network device represented by given item. # - # @param [Integer] item is an item id. See LanItems for detail - # @param [String] name_to new device name - # @param [String] attr an udev attribute usable in NIC's rule. Currently just + # @param item [Integer] is an item id. See LanItems for detail + # @param name_to [String] new device name + # @param attr [String] an udev attribute usable in NIC's rule. Currently just # "KERNELS" or "ATTR{address}" makes sense. This parameter is optional - # @param [String] value for the given udev attribute. Optional parameter. + # @param key [String] for the given udev attribute. Optional parameter. def rename_lan_item(item, name_to, attr = nil, key = nil) return if item.nil? || item < 0 || item >= LanItems.Items.size return if name_to.nil? || name_to.empty? @@ -375,7 +375,7 @@ # Finds a LanItem which name is in collision to the provided name # - # @param [String] a device name (eth0, ...) + # @param name [String] a device name (eth0, ...) # @return [Integer] item id (see LanItems::Items) def colliding_item(name) colliding_item, _item_map = LanItems.Items.find do |i, _| diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/lib/network/wicked.rb new/yast2-network-4.0.30/src/lib/network/wicked.rb --- old/yast2-network-4.0.25/src/lib/network/wicked.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/lib/network/wicked.rb 2018-04-25 14:52:17.000000000 +0200 @@ -8,7 +8,7 @@ # Reloads configuration for each device named in devs # - # @param [Array] list of device names + # @param devs [Array] list of device names # @return [Boolean] true if configuration was reloaded; false otherwise def reload_config(devs) raise ArgumentError if devs.nil? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/lib/y2remote/modes.rb new/yast2-network-4.0.30/src/lib/y2remote/modes.rb --- old/yast2-network-4.0.25/src/lib/y2remote/modes.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/lib/y2remote/modes.rb 2018-04-25 14:52:17.000000000 +0200 @@ -45,18 +45,20 @@ # Restart all the given list of Y2Remote::Modes::Base instances and stop # the rest. # - # @param [Array<Y2Remote::Modes::Base>] list of modes to be restarted, the + # @param enable_modes [Array<Y2Remote::Modes::Base>] list of modes to be restarted, the # rest will be stopped def self.restart_modes(enable_modes = []) - all.each do |mode| - enable_modes.include?(mode.instance) ? mode.instance.restart! : mode.instance.stop! - end + # There are conflicts between modes. Therefore we have to stop first the + # disabled ones. + all.each { |mc| mc.instance.stop! unless enable_modes.include?(mc.instance) } + + enable_modes.each(&:restart!) end # Enable all the given list of Y2Remote::Modes::Base instances and # disable the rest. # - # @param [Array<Y2Remote::Modes::Base>] list of modes to be enabled; the + # @param enable_modes [Array<Y2Remote::Modes::Base>] list of modes to be enabled; the # rest will be disable def self.update_status(enable_modes = []) all.each do |mode| diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/lib/y2remote/remote.rb new/yast2-network-4.0.30/src/lib/y2remote/remote.rb --- old/yast2-network-4.0.25/src/lib/y2remote/remote.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/lib/y2remote/remote.rb 2018-04-25 14:52:17.000000000 +0200 @@ -30,8 +30,7 @@ include Yast::I18n GRAPHICAL_TARGET = "graphical".freeze - - FIREWALL_SERVICES_PACKAGE = "xorg-x11-Xvnc".freeze + FIREWALL_SERVICES = ["tigervnc", "tigervnc-https"].freeze # List of Y2Remote::Modes::Base subclasses that are the enabled VNC running # modes @@ -158,23 +157,18 @@ # # @return [Boolean] true if success, false otherwise def configure_display_manager - if enabled? - # Install required packages - if !Yast::Package.InstallAll(required_packages) - log.error "Installing of required packages failed" - return false - end - - Y2Remote::Modes.update_status(modes) + if enabled? && !Yast::Package.InstallAll(required_packages) + log.error "Installing of required packages failed" + return false end - + Y2Remote::Modes.update_status(modes) display_manager.write_remote_access(enabled?) end # Restarts services, reporting errors to the user def restart_services Yast::SystemdTarget.set_default(GRAPHICAL_TARGET) if enabled? - Y2Remote::Modes.restart_modes + Y2Remote::Modes.restart_modes(modes) display_manager.restart if enabled? end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/lib/y2remote/widgets/remote.rb new/yast2-network-4.0.30/src/lib/y2remote/widgets/remote.rb --- old/yast2-network-4.0.25/src/lib/y2remote/widgets/remote.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/lib/y2remote/widgets/remote.rb 2018-04-25 14:52:17.000000000 +0200 @@ -177,28 +177,47 @@ # Widget for opening VNC services in the firewall class RemoteFirewall < CWM::CustomWidget attr_accessor :cwm_interfaces + + # Constructor def initialize + textdomain "network" @cwm_interfaces = Yast::CWMFirewallInterfaces.CreateOpenFirewallWidget( - "services" => ["tigervnc", "tigervnc-https"], + "services" => services, "display_details" => true ) - textdomain "network" + end + + def opt + [:notify] end def init - Yast::CWMFirewallInterfaces.OpenFirewallInit(@cwm_interfaces, "") + Yast::CWMFirewallInterfaces.OpenFirewallInit(cwm_interfaces, "") end def contents - @cwm_interfaces["custom_widget"] + cwm_interfaces["custom_widget"] end def help - @cwm_interfaces["help"] || "" + cwm_interfaces["help"] || "" end def handle(event) - Yast::CWMFirewallInterfaces.OpenFirewallHandle(@cwm_interfaces, "", event) + Yast::CWMFirewallInterfaces.OpenFirewallHandle(cwm_interfaces, "", event) + end + + # Applies the configuration of the vnc services according to the allowed + # interfaces. + def store + Yast::CWMFirewallInterfaces.StoreAllowedInterfaces(services) + end + + private + + # Convenience method to obtain the vnc firewalld services + def services + Y2Remote::Remote::FIREWALL_SERVICES end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/modules/Host.rb new/yast2-network-4.0.30/src/modules/Host.rb --- old/yast2-network-4.0.25/src/modules/Host.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/modules/Host.rb 2018-04-25 14:52:17.000000000 +0200 @@ -114,7 +114,7 @@ # @return true if success, raises an exception in case of malformed file def Read return true if @initialized - return true if !load_hosts + return false if !load_hosts Builtins.y2debug("hosts=#{@hosts.inspect}") @@ -218,10 +218,10 @@ # Update hosts according to the current hostname # (only one hostname, assigned to all IP) - # @param hostname current hostname - # @param domain current domain name - # @param String ip to assign - # @return true if success + # @param oldhn [String] current hostname + # @param newhn [String] current domain name + # @param ip [String] to assign + # @return [Boolean] true if success def Update(oldhn, newhn, ip) raise ArgumentError, "IP cannot be nil" if ip.nil? raise ArgumentError, "Nonempty IP expected" if ip.empty? @@ -366,6 +366,18 @@ @hosts_init.load true + + # rescuing only those exceptions which are related to /etc/hosts access + # (e.g. corrupted file, file access error, ...) + rescue IOError, SystemCallError, RuntimeError => error + log.error("Loading /etc/hosts failed with exception #{error.inspect}") + + # get clean environment, crashing due to exception is no option here + @hosts = CFA::Hosts.new + @hosts_init = nil + + # reraise the exception - let the gui takes care of it + raise end Host = HostClass.new diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/modules/Lan.rb new/yast2-network-4.0.30/src/modules/Lan.rb --- old/yast2-network-4.0.25/src/modules/Lan.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/modules/Lan.rb 2018-04-25 14:52:17.000000000 +0200 @@ -31,9 +31,12 @@ # Input and output routines. require "yast" require "network/confirm_virt_proposal" +require "ui/text_helpers" module Yast class LanClass < Module + include ::UI::TextHelpers + def main Yast.import "UI" textdomain "network" @@ -239,9 +242,7 @@ end # Read all network settings from the SCR - # @param [Symbol] cache: - # `cache=use cached data, - # `nocache=reread from disk (for reproposal); TODO pass to submodules + # @param cache [Symbol] :cache=use cached data, :nocache=reread from disk TODO pass to submodules # @return true on success def Read(cache) if cache == :cache && @initialized @@ -286,9 +287,6 @@ return false if Abort() - # check the environment - # if(!Confirm::MustBeRoot()) return false; - return false if Abort() # Progress step 1/8 ProgressNextStage(_("Detecting ndiswrapper...")) if @gui @@ -348,38 +346,47 @@ return false if Abort() # Progress step 4/8 ProgressNextStage(_("Reading network configuration...")) if @gui - NetworkConfig.Read + begin + NetworkConfig.Read - @ipv6 = readIPv6 + @ipv6 = readIPv6 - Builtins.sleep(sl) + Builtins.sleep(sl) - return false if Abort() - # Progress step 5/8 - ProgressNextStage(_("Reading hostname and DNS configuration...")) if @gui - DNS.Read - Host.Read - Builtins.sleep(sl) + return false if Abort() + # Progress step 5/8 + ProgressNextStage(_("Reading hostname and DNS configuration...")) if @gui + DNS.Read - return false if Abort() - # Progress step 6/8 - ProgressNextStage(_("Reading installation information...")) if @gui - # ReadInstallInf(); - Builtins.sleep(sl) + Host.Read + Builtins.sleep(sl) - return false if Abort() - # Progress step 7/8 - ProgressNextStage(_("Reading routing configuration...")) if @gui - Routing.Read - Builtins.sleep(sl) + return false if Abort() + # Progress step 6/8 + ProgressNextStage(_("Reading installation information...")) if @gui + Builtins.sleep(sl) - return false if Abort() - # Progress step 8/8 - ProgressNextStage(_("Detecting current status...")) if @gui - NetworkService.Read - Builtins.sleep(sl) + return false if Abort() + # Progress step 7/8 + ProgressNextStage(_("Reading routing configuration...")) if @gui + Routing.Read + Builtins.sleep(sl) + + return false if Abort() + # Progress step 8/8 + ProgressNextStage(_("Detecting current status...")) if @gui + NetworkService.Read + Builtins.sleep(sl) + + return false if Abort() + rescue IOError, SystemCallError, RuntimeError => error + msg = format(_("Network configuration is corrupted.\n"\ + "If you continue resulting configuration can be malformed."\ + "\n\n%s"), wrap_text(error.message)) + return false if !@gui + return false if !Popup.ContinueCancel(msg) + end - return false if Abort() # Final progress step ProgressNextStage(_("Finished")) if @gui Builtins.sleep(sl) @@ -395,7 +402,7 @@ end # (a specialization used when a parameterless function is needed) - # @return Read(`cache) + # @return [Boolean] true on success def ReadWithCache Read(:cache) end @@ -416,16 +423,13 @@ end def writeIPv6 - # SCR::Write(.target.string, "/etc/modprobe.d/ipv6", sformat("%1install ipv6 /bin/true", ipv6?"#":"")); - # uncomment to write to old place (and comment code bellow) - # SCR::Write(.target.string, "/etc/modprobe.d/50-ipv6.conf", sformat("%1install ipv6 /bin/true\n", ipv6?"#":"")); filename = "/etc/sysctl.conf" sysctl = Convert.to_string(SCR.Read(path(".target.string"), filename)) sysctl_row = Builtins.sformat( "%1net.ipv6.conf.all.disable_ipv6 = 1", @ipv6 ? "# " : "" ) - found = false # size(regexptokenize(sysctl, "(net.ipv6.conf.all.disable_ipv6)"))>0; + found = false file = [] Builtins.foreach(Builtins.splitstring(sysctl, "\n")) do |row| if Ops.greater_than( @@ -745,7 +749,7 @@ # Import data. # It expects data described networking.rnc - # and then passed through {LanAutoClient#FromAY}. + # and then passed through {Lan#FromAY}. # Most prominently, instead of a flat list called "interfaces" # we import a 2-level map of typed "devices" # @param [Hash] settings settings to be imported @@ -881,8 +885,7 @@ true end - # Delete the given device - # @param name device to delete + # Delete current device (see LanItems::current) # @return true if success def Delete LanItems.DeleteItem @@ -975,50 +978,24 @@ nil end + # Proposes additional packages when needed by current networking setup + # # @return [Array] of packages needed when writing the config def Packages - # various device types require some special packages ... - type_requires = { - # for wlan require iw instead of wireless-tools (bnc#539669) - "wlan" => "iw", - "vlan" => "vlan", - "tun" => "tunctl", - "tap" => "tunctl" - } - # ... and some options require special packages as well - option_requires = { - "WIRELESS_AUTH_MODE" => { - "psk" => "wpa_supplicant", - "eap" => "wpa_supplicant" - } - } - pkgs = [] - type_requires.each do |type, package| - ifaces = NetworkInterfaces.List(type) - next if ifaces.empty? - - Builtins.y2milestone( - "Network interface type #{type} requires package #{package}" - ) - pkgs << package if !PackageSystem.Installed(package) - end - - option_requires.each do |option, option_values| - option_values.each do |value, package| - next if NetworkInterfaces.Locate(option, value) == [] - - Builtins.y2milestone( - "Network interface with option #{option}=#{value} requires package #{package}" - ) - pkgs << package if !PackageSystem.Installed(package) - end - end if NetworkService.is_network_manager pkgs << "NetworkManager" if !PackageSystem.Installed("NetworkManager") + elsif !PackageSystem.Installed("wpa_supplicant") + # we have to add wpa_supplicant when wpa is in game, wicked relies on it + pkgs << "wpa_supplicant" if !NetworkInterfaces.Locate("WIRELESS_AUTH_MODE", "psk").empty? + pkgs << "wpa_supplicant" if !NetworkInterfaces.Locate("WIRELESS_AUTH_MODE", "eap").empty? end + pkgs.uniq! + + log.info("Additional packages requested by yast2-network: #{pkgs.inspect}") if !pkgs.empty? + pkgs end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/modules/LanItems.rb new/yast2-network-4.0.30/src/modules/LanItems.rb --- old/yast2-network-4.0.25/src/modules/LanItems.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/modules/LanItems.rb 2018-04-25 14:52:17.000000000 +0200 @@ -354,7 +354,7 @@ # Inits item's udev rule to a default one if none is present # - # @param itemId [Integer] a key for {#Items} + # @param item_id [Integer] a key for {#Items} # @return [String] item's udev rule def InitItemUdevRule(item_id) udev = GetItemUdevRule(item_id) @@ -1037,7 +1037,7 @@ # It goes through currently present devices and tries to mach it to given # old fashioned name # - # @returns [String] new style name in case of success. Given name otherwise. + # @return [String] new style name in case of success. Given name otherwise. def getDeviceName(oldname) newname = oldname @@ -1171,7 +1171,7 @@ # networking section the function requires hash map with whole AY profile hash # representation as returned by LanAutoClient#FromAY profile. # - # @param [Hash] AY profile converted into hash + # @param settings [Hash] AY profile converted into hash # @return [Boolean] on success def Import(settings) reset_cache @@ -1345,7 +1345,7 @@ # Returns the interfaces that are enslaved in the given bridge # - # @param [String] bridge name + # @param master [String] bridge name # @return [Array<String>] a list of interface names def bridge_slaves(master) bridge_index.select { |_k, v| v == master }.keys @@ -1393,7 +1393,7 @@ # It supports differents types of summaries depending on the options[:type] # # @see LanItemsSummary - # @param options [Hash] summary options + # @param type [Hash] summary options # @return [String] summary of the configured items def summary(type = "default") LanItemsSummary.new.send(type) @@ -1682,7 +1682,6 @@ NetworkInterfaces.GetFreeDevices(type, 10) end - # must be in sync with {#GetDefaultsForHW} def SetDefaultsForHW Builtins.y2milestone("SetDefaultsForHW type %1", @type) @mtu = "1492" if Arch.s390 && Builtins.contains(["lcs", "eth"], @type) @@ -2327,7 +2326,7 @@ # Creates eth emulation for s390 devices # - # @param [Hash] an s390 device description (e.g. as obtained from AY profile). + # @param dev_attrs [Hash] an s390 device description (e.g. as obtained from AY profile). # If it contains s390 device attributes definition, then these definitions takes # precendence over values assigned to corresponding LanItems' global variables # before the method invocation. Hash keys are strings named after LanItems' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/modules/Routing.rb new/yast2-network-4.0.30/src/modules/Routing.rb --- old/yast2-network-4.0.25/src/modules/Routing.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/modules/Routing.rb 2018-04-25 14:52:17.000000000 +0200 @@ -58,12 +58,12 @@ # # @return [Array<Hash>] routing table entries - # @Orig_Routes [Array] array of hashes. Caches known routes + # @attribute Orig_Routes [Array] array of hashes. Caches known routes # - # @Orig_Forward_v4 [Boolean] current status of ipv4 forwarding - # @Orig_Forward_v6 [Boolean] current status of ipv6 forwarding + # @attribute Orig_Forward_v4 [Boolean] current status of ipv4 forwarding + # @attribute Orig_Forward_v6 [Boolean] current status of ipv6 forwarding # - # @modified [Boolean] modified by AY (bnc#649494) + # @attribute modified [Boolean] modified by AY (bnc#649494) # "routes" and ifroute-DEV file directory ROUTES_DIR = "/etc/sysconfig/network".freeze diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/src/modules/SuSEFirewall4Network.rb new/yast2-network-4.0.30/src/modules/SuSEFirewall4Network.rb --- old/yast2-network-4.0.25/src/modules/SuSEFirewall4Network.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/src/modules/SuSEFirewall4Network.rb 2018-04-25 14:52:17.000000000 +0200 @@ -262,7 +262,7 @@ # Function sets that a firewall proposal was changed by user # by editing firewall zone of network interface # (applicable during 2nd stage of installation only) - # @param boolean whether proposal was changed by user + # @param changed [Boolean] whether proposal was changed by user def ChangedByUser(changed) SuSEFirewallProposal.SetChangedByUser(changed) if Stage.cont @@ -276,7 +276,7 @@ end # Sets whether firewall should be enabled - # @param boolean new state + # @param enabled [Boolean] new state def SetEnabled1stStage(enabled) @firewall_enabled_1st_stage = enabled @@ -290,7 +290,7 @@ end # Sets whether SSH port should be opened in firewall - # @param boolean new state + # @param enabled [Boolean] new state def SetSshEnabled1stStage(enabled) @ssh_enabled_1st_stage = enabled @@ -303,7 +303,7 @@ end # Sets whether start sshd - # @param boolean new state + # @param enabled [Boolean] new state def SetSshdEnabled(enabled) @sshd_enabled = enabled @@ -324,7 +324,7 @@ end # Sets whether VNC ports should be opened in firewall - # @param boolean new state + # @param enabled [Boolean] new state def SetVncEnabled1stStage(enabled) @vnc_enabled_1st_stage = enabled diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/test/lan_test.rb new/yast2-network-4.0.30/test/lan_test.rb --- old/yast2-network-4.0.25/test/lan_test.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/test/lan_test.rb 2018-04-25 14:52:17.000000000 +0200 @@ -7,77 +7,60 @@ Yast.import "Lan" describe "LanClass#Packages" do - packages = { - "iw" => "wlan", - "vlan" => "vlan", - "tunctl" => "tun" - } - - packages.each do |pkg, type| - it "lists '#{pkg}' package for #{type} device" do - allow(Yast::NetworkInterfaces) - .to receive(:List) - .and_return([]) - allow(Yast::NetworkInterfaces) - .to receive(:List) - .with(type) - .and_return(["place_holder"]) - allow(Yast::NetworkInterfaces) - .to receive(:Locate) - .and_return([]) - allow(Yast::NetworkService) - .to receive(:is_network_manager) - .and_return(false) + before(:each) do + allow(Yast::NetworkService) + .to receive(:is_network_manager) + .and_return(nm_enabled) + end - expect(Yast::PackageSystem) + context "When NetworkManager is not going to be installed" do + let(:nm_enabled) { false } + + before(:each) do + allow(Yast::PackageSystem) .to receive(:Installed) - .with(pkg) + .with("wpa_supplicant") .at_least(:once) .and_return(false) - expect(Yast::Lan.Packages).to include pkg end - end - it "lists wpa_supplicant package when WIRELESS_AUTH_MODE is psk or eap" do - allow(Yast::NetworkInterfaces) - .to receive(:List) - .and_return([]) - allow(Yast::NetworkService) - .to receive(:is_network_manager) - .and_return(false) + it "does not list wpa_supplicant package when WIRELESS_AUTH_MODE is not psk or eap" do + expect(Yast::NetworkInterfaces) + .to receive(:Locate) + .with("WIRELESS_AUTH_MODE", /(psk|eap)/) + .at_least(:once) + .and_return([]) + + expect(Yast::Lan.Packages).not_to include "wpa_supplicant" + end + + it "lists wpa_supplicant package when WIRELESS_AUTH_MODE is psk or eap" do + # when checking options, LanClass#Packages currently cares only if + # WIRELESS_AUTH_MODE={psk, eap} is present + expect(Yast::NetworkInterfaces) + .to receive(:Locate) + .with("WIRELESS_AUTH_MODE", /(psk|eap)/) + .at_least(:once) + .and_return(["place_holder"]) - # when checking options, LanClass#Packages currently cares only if - # WIRELESS_AUTH_MODE={psk, eap} is present - expect(Yast::NetworkInterfaces) - .to receive(:Locate) - .with("WIRELESS_AUTH_MODE", /(psk|eap)/) - .at_least(:once) - .and_return(["place_holder"]) - expect(Yast::PackageSystem) - .to receive(:Installed) - .with("wpa_supplicant") - .at_least(:once) - .and_return(false) - expect(Yast::Lan.Packages).to include "wpa_supplicant" + expect(Yast::Lan.Packages).to include "wpa_supplicant" + end end - it "lists NetworkManager package when NetworkManager service is selected" do - allow(Yast::NetworkInterfaces) - .to receive(:List) - .and_return([]) - allow(Yast::NetworkInterfaces) - .to receive(:Locate) - .and_return([]) + context "When NetworkManager is selected for the target" do + let(:nm_enabled) { true } - expect(Yast::NetworkService) - .to receive(:is_network_manager) - .and_return(true) - expect(Yast::PackageSystem) - .to receive(:Installed) - .with("NetworkManager") - .at_least(:once) - .and_return(false) - expect(Yast::Lan.Packages).to include "NetworkManager" + it "lists NetworkManager package" do + expect(Yast::NetworkService) + .to receive(:is_network_manager) + .and_return(true) + expect(Yast::PackageSystem) + .to receive(:Installed) + .with("NetworkManager") + .at_least(:once) + .and_return(false) + expect(Yast::Lan.Packages).to include "NetworkManager" + end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/test/lib/y2remote/remote_test.rb new/yast2-network-4.0.30/test/lib/y2remote/remote_test.rb --- old/yast2-network-4.0.25/test/lib/y2remote/remote_test.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/test/lib/y2remote/remote_test.rb 2018-04-25 14:52:17.000000000 +0200 @@ -24,7 +24,9 @@ describe Y2Remote::Remote do let(:vnc) { Y2Remote::Modes::Web.instance } + let(:manager) { Y2Remote::Modes::Manager.instance } let(:web) { Y2Remote::Modes::VNC.instance } + let(:display_manager) { Y2Remote::DisplayManager.instance } subject { described_class.instance } before do @@ -84,10 +86,6 @@ end describe ".enable_manager!" do - let(:web) { Y2Remote::Modes::Web.instance } - let(:manager) { Y2Remote::Modes::Manager.instance } - let(:vnc) { Y2Remote::Modes::VNC.instance } - it "returns the current modes if already present" do allow(subject).to receive(:modes).and_return([manager, web]) expect(subject.modes).to_not receive(:delete) @@ -155,9 +153,6 @@ end describe ".read" do - let(:vnc) { Y2Remote::Modes::VNC.instance } - let(:display_manager) { Y2Remote::DisplayManager.instance } - it "returns true" do allow(display_manager).to receive(:enabled?).and_return(false) @@ -297,4 +292,102 @@ subject.reset! end end + + describe ".restart_services" do + let(:modes) { [vnc, web] } + + before do + allow(subject).to receive(:modes).and_return(modes) + allow(Yast::SystemdTarget).to receive(:set_default) + allow(display_manager).to receive(:restart) + end + + context "when vnc is enabled" do + it "sets graphical as the default systemd target" do + expect(Yast::SystemdTarget).to receive(:set_default) + .with(Y2Remote::Remote::GRAPHICAL_TARGET) + subject.restart_services + end + + it "starts the enabled modes and stops the rest" do + expect(Y2Remote::Modes).to receive(:restart_modes).with(modes) + subject.restart_services + end + + it "restarts the display manager" do + expect(display_manager).to receive(:restart) + subject.restart_services + end + end + + context "when vnc is disabled" do + let(:modes) { [] } + + it "stops the running modes" do + expect(Y2Remote::Modes).to receive(:restart_modes).with(modes) + subject.restart_services + end + end + end + + describe ".configure_display_manager" do + let(:modes) { [vnc, web] } + before do + allow(subject).to receive(:modes).and_return(modes) + allow(display_manager).to receive(:write_remote_access) + allow(Y2Remote::Modes).to receive(:update_status) + end + + context "when vnc is disabled" do + let(:modes) { [] } + + it "disables all the vnc modes that are still enabled" do + expect(Y2Remote::Modes).to receive(:update_status).with([]) + subject.configure_display_manager + end + + it "disables the remote access in the display manager" do + expect(display_manager).to receive(:write_remote_access).with(false) + + subject.configure_display_manager + end + end + + context "when vnc is enabled" do + before do + allow(Yast::Package).to receive(:InstallAll) + allow(subject).to receive(:required_packages).and_return("packages") + end + + it "tries to install all the required packages for the enabled modes" do + expect(Yast::Package).to receive(:InstallAll).with("packages") + + subject.configure_display_manager + end + + context "if all the required packages are installed" do + before do + allow(Yast::Package).to receive(:InstallAll).and_return(true) + end + + it "enables the configured vnc modes" do + expect(Y2Remote::Modes).to receive(:update_status).with([vnc, web]) + subject.configure_display_manager + end + + it "enables the remote access in the display manager" do + expect(display_manager).to receive(:write_remote_access).with(true) + + subject.configure_display_manager + end + end + + context "if some required package was not installed or available" do + it "returns false" do + expect(Yast::Package).to receive(:InstallAll).and_return(false) + subject.configure_display_manager + end + end + end + end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.0.25/test/lib/y2remote/widgets/remote_test.rb new/yast2-network-4.0.30/test/lib/y2remote/widgets/remote_test.rb --- old/yast2-network-4.0.25/test/lib/y2remote/widgets/remote_test.rb 2018-04-06 19:43:36.000000000 +0200 +++ new/yast2-network-4.0.30/test/lib/y2remote/widgets/remote_test.rb 2018-04-25 14:52:17.000000000 +0200 @@ -150,6 +150,41 @@ end describe Y2Remote::Widgets::RemoteFirewall do + let("firewall_widget") { { "help" => "", "custom_widget" => Yast::Term.new(:Empty) } } include_examples "CWM::CustomWidget" + + before do + allow(Yast::CWMFirewallInterfaces).to receive(:CreateOpenFirewallWidget) + .and_return(firewall_widget) + allow(Yast::CWMFirewallInterfaces).to receive(:OpenFirewallInit) + allow(Yast::CWMFirewallInterfaces).to receive(:OpenFirewallHandle) + allow(Yast::CWMFirewallInterfaces).to receive(:StoreAllowedInterfaces) + end + + describe ".new" do + it "initializes the widget" do + expect(Yast::CWMFirewallInterfaces).to receive(:CreateOpenFirewallWidget) + .with("services" => Y2Remote::Remote::FIREWALL_SERVICES, "display_details" => true) + + described_class.new + end + end + + describe ".handle" do + it "handles changes in the widget" do + expect(Yast::CWMFirewallInterfaces).to receive(:OpenFirewallHandle) + .with(firewall_widget, "", "event") + subject.handle("event") + end + end + + describe ".store" do + it "enables vnc firewall services in the allowed interfaces" do + expect(Yast::CWMFirewallInterfaces).to receive(:StoreAllowedInterfaces) + .with(Y2Remote::Remote::FIREWALL_SERVICES) + + subject.store + end + end end end