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 / clients / remotechooser.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  154 lines

  1. /**
  2.  * File:    clients/remotechooser.ycp
  3.  * Package:    yast2
  4.  * Summary:    Remote administration client
  5.  * Authors:    Michal Svec <msvec@suse.cz>
  6.  *
  7.  * $Id: remotechooser.ycp 14288 2004-02-16 17:30:14Z arvin $
  8.  */
  9.  
  10. {
  11.  
  12. textdomain "base";
  13. import "Label";
  14.  
  15. string host = "localhost";
  16. string user = "";
  17. string modul = "menu";
  18. string protocol = "ssh";
  19.  
  20. list hosts = [];
  21.  
  22. define any ChooseDialog() ``{
  23.  
  24.     /*
  25.     `Left(`HSquash(`RadioButtonGroup(`id(`protocol),
  26.           `VBox(
  27.               `Left(`RadioButton(`id("telnet"), "telnet", true)),
  28.               `Left(`RadioButton(`id("rlogin"), "rlogin")),
  29.               `Left(`RadioButton(`id("rsh"),    "rsh")),
  30.               `Left(`RadioButton(`id("ssh"),    "ssh")),
  31.               `Left(`RadioButton(`id("su"),     "su")),
  32.               `Left(`RadioButton(`id("sudo"),   "sudo"))))));
  33.       */
  34.  
  35.     term contents = `VBox(`HSpacing(50), `HBox(
  36.     /* SelectionBox label */
  37.     `SelectionBox(`id(`hosts), `opt(`notify), _("&Available Hosts:"), hosts),
  38.     `HSpacing(1.0),
  39.     `VBox(
  40.         /* TextEntry label */
  41.         `TextEntry(`id(`host), _("&Host:"), host),
  42.         /* TextEntry label */
  43.         `TextEntry(`id(`user), _("&User name:"), user),
  44.         /* TextEntry label */
  45.         `TextEntry(`id(`modul), _("&Module to Start:"), modul),
  46.         /* ComboBox label */
  47.         `Left(`ComboBox(`id(`protocol), _("Connection &Protocol:"), [
  48.         `item(`id("ssh"), "ssh", protocol == "ssh"),
  49.         `item(`id("rsh"), "rsh", protocol == "rsh"),
  50.         `item(`id("rlogin"), "rlogin", protocol == "rlogin"),
  51.         `item(`id("telnet"), "telnet", protocol == "telnet"),
  52.         `item(`id("sudo"), "sudo", protocol == "sudo"),
  53.         `item(`id("su"), "su", protocol == "su"),
  54.         ])),
  55.         // `VCenter(ProtocolSelection()),
  56.         `VSpacing(1),
  57.         `HBox(
  58.         /* PushButton label */
  59.         `PushButton(`id(`next), `opt(`default), _("&Launch")),
  60.         `HStretch(),
  61.         `PushButton(`id(`cancel), Label::CancelButton())
  62.         )
  63.     )
  64.     ));
  65.  
  66.     UI::OpenDialog(contents);
  67.  
  68.     any ret = nil;
  69.     while(true) {
  70.     ret = UI::UserInput();
  71.  
  72.     if(ret == `abort || ret == `cancel) {
  73.         /* if(ReallyAbort()) break;
  74.         else continue; */
  75.         break;
  76.     }
  77.     else if(ret == `hosts) {
  78.         UI::ChangeWidget(`id(`host), `Value, UI::QueryWidget(`id(`hosts),`CurrentItem));
  79.         continue;
  80.     }
  81.     else if(ret == `back) {
  82.         break;
  83.     }
  84.     else if(ret == `next) {
  85.         /* FIXME check_* */
  86.         break;
  87.     }
  88.     else {
  89.         y2error("Unexpected return code: %1", ret);
  90.         continue;
  91.     }
  92.     }
  93.  
  94.     if(ret == `next) {
  95.  
  96.     protocol = (string) UI::QueryWidget(`id(`protocol), `Value);
  97.     modul = (string) UI::QueryWidget(`id(`modul), `Value);
  98.     user = (string) UI::QueryWidget(`id(`user), `Value);
  99.     host = (string) UI::QueryWidget(`id(`host), `Value);
  100.  
  101.     if(host == "") host = "localhost";
  102.     if(modul == "") modul = "menu";
  103.     }
  104.  
  105.     UI::CloseDialog ();
  106.     return ret;
  107. }
  108.  
  109.  
  110. y2milestone("----------------------------------------");
  111. y2milestone("Remote chooser module started");
  112.  
  113. /* Label text */
  114. UI::OpenDialog(`Label(_("Scanning for hosts in the local network...")));
  115. hosts = sort((list) SCR::Read(.net.hostnames));
  116. if(hosts == nil) hosts = [];
  117. UI::CloseDialog();
  118.  
  119. /* Get the current user name */
  120. map output = (map) SCR::Execute(.target.bash_output, "echo \"$USER\"");
  121. user = select(splitstring(output["stdout"]:"", "\n"), 0, "");
  122.  
  123. any ret = nil;
  124. while(true) {
  125.     ret = ChooseDialog();
  126.  
  127.     if(ret == `abort || ret == `cancel || ret == `back) {
  128.     break;
  129.     }
  130.     /* Launch it */
  131.     else if(ret == `next) {
  132.  
  133.     string launch = protocol + "://" + user;
  134.     if(protocol != "su" && protocol != "sudo")
  135.         launch = launch + "@" + host;
  136.     launch = launch + "/" + modul;
  137.  
  138.     y2milestone("Launching %1", launch);
  139.     WFM::CallFunction(launch, []);
  140.     UI::SetModulename("remotechooser");
  141.     continue;
  142.     }
  143.     else {
  144.     y2error("Unexpected return code: %1", ret);
  145.     continue;
  146.     }
  147. };
  148.  
  149. y2milestone("Remote chooser module finished");
  150. y2milestone("----------------------------------------");
  151.  
  152. /* EOF */
  153. }
  154.