home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / modules / NetworkService.ycp < prev    next >
Text File  |  2006-11-29  |  3KB  |  133 lines

  1. /**
  2.  * File:    modules/NetworkService.ycp
  3.  * Package:    Network configuration
  4.  * Summary:    Init script handling, ifup vs NetworkManager
  5.  * Authors:    Martin Vidner <mvidner@suse.cz>
  6.  *
  7.  * $Id: NetworkService.ycp 31444 2006-06-12 10:27:34Z mvidner $
  8.  *
  9.  * This module used to switch between rcnetwork and rcnetworkmanager.
  10.  * Now the master switch is /etc/sysconfig/network/config:NETWORKMANAGER
  11.  */
  12.  
  13. {
  14.  
  15. module "NetworkService";
  16.  
  17. import "Service";
  18. import "NetworkConfig";
  19. import "Popup";
  20.  
  21. textdomain "base";
  22.  
  23. global void Read ();
  24.  
  25. /**
  26.  * if false, read needs to do work
  27.  */
  28. boolean initialized = false;
  29.  
  30. /**
  31.  * Whether use NetworkManager or ifup
  32.  */
  33. global boolean IsManaged () {
  34.     Read ();
  35.     return NetworkConfig::Config["NETWORKMANAGER"]:false;
  36.  
  37. }
  38.  
  39. /**
  40.  * @param m whether networkmanager will be used
  41.  */
  42. global void SetManaged (boolean m) {
  43.     NetworkConfig::Config["NETWORKMANAGER"] = m;
  44.     initialized = true;
  45. }
  46.  
  47. /**
  48.  * Initialize module data
  49.  */
  50. global void Read () {
  51.     if (!initialized)
  52.     {
  53.     NetworkConfig::Read ();
  54.     boolean nm =  NetworkConfig::Config["NETWORKMANAGER"]:false;
  55.     y2milestone ("NetworkManager: %1", nm);
  56.     }
  57.     initialized = true;
  58. }
  59.  
  60. /**
  61.  * Enables and disables the appropriate services.
  62.  */
  63. global void EnableDisable () {
  64.     // Workaround for bug #61055:
  65.     y2milestone("Enabling service %1", "network");
  66.     string cmd = "cd /; /sbin/insserv -d /etc/init.d/network";
  67.     SCR::Execute (.target.bash, cmd);
  68. }
  69.  
  70. boolean RunScript (string script, string action) {
  71.     if (script == "")
  72.      return true;
  73.     y2milestone("rc%1 %2", script, action);
  74.     // Workaround for bug #61055:
  75.     string cmd = sformat ("cd /; /etc/init.d/%1 %2", script, action);
  76.     return SCR::Execute (.target.bash, cmd) == 0;
  77. }
  78.  
  79. /**
  80.  * Starts and stops the appropriate services.
  81.  */
  82. global void StartStop () {
  83.     if (Service::Status ("network") == 0)
  84.     {
  85.     RunScript ("network", "reload");
  86.     }
  87.     else
  88.     {
  89.     // #148263
  90.     // Because rcnetwork really handles two different things in one script
  91.     // (ifup and NM), it could happen that "start" would shut down an
  92.     // interface. Instead, it tells the user to use "restart".
  93.     // So we do it always, it does not hurt if the net was stopped.
  94.     RunScript ("network", "restart");
  95.     }
  96. }
  97.  
  98. /*
  99.  * Variable remembers that the question has been asked during this run already.
  100.  * It avoids useless questions over and over again.
  101.  */
  102. boolean already_asked_for_NetworkManager = false;
  103.  
  104. /**
  105.  * Opens up a continue/cancel confirmation popup
  106.  * in the case when NetworkManager is enabled.
  107.  * User is informed that continuing the configuration
  108.  * may produce undefined results.
  109.  * If NetworkManager is not used, silently returns true.
  110.  *
  111.  * @return boolean continue
  112.  */
  113. global define boolean ConfirmNetworkManager () {
  114.     if (!already_asked_for_NetworkManager && NetworkService::IsManaged()) {
  115.     // TRANSLATORS: pop-up question when reading the service configuration
  116.     boolean cont = Popup::ContinueCancel(_("Your network interfaces are currently controlled by NetworkManager
  117. but the service to configure might not work well with it.
  118.  
  119. Really continue?"));
  120.     y2milestone("Network is controlled by NetworkManager, user decided %1...",
  121.         (cont ? "to continue":"not to continue")
  122.     );
  123.     already_asked_for_NetworkManager = true;
  124.     
  125.     return cont;
  126.     } else {
  127.     return true;
  128.     }
  129. }
  130.  
  131. /* EOF */
  132. }
  133.