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 >
Wrap
Text File
|
2006-11-29
|
4KB
|
154 lines
/**
* File: clients/remotechooser.ycp
* Package: yast2
* Summary: Remote administration client
* Authors: Michal Svec <msvec@suse.cz>
*
* $Id: remotechooser.ycp 14288 2004-02-16 17:30:14Z arvin $
*/
{
textdomain "base";
import "Label";
string host = "localhost";
string user = "";
string modul = "menu";
string protocol = "ssh";
list hosts = [];
define any ChooseDialog() ``{
/*
`Left(`HSquash(`RadioButtonGroup(`id(`protocol),
`VBox(
`Left(`RadioButton(`id("telnet"), "telnet", true)),
`Left(`RadioButton(`id("rlogin"), "rlogin")),
`Left(`RadioButton(`id("rsh"), "rsh")),
`Left(`RadioButton(`id("ssh"), "ssh")),
`Left(`RadioButton(`id("su"), "su")),
`Left(`RadioButton(`id("sudo"), "sudo"))))));
*/
term contents = `VBox(`HSpacing(50), `HBox(
/* SelectionBox label */
`SelectionBox(`id(`hosts), `opt(`notify), _("&Available Hosts:"), hosts),
`HSpacing(1.0),
`VBox(
/* TextEntry label */
`TextEntry(`id(`host), _("&Host:"), host),
/* TextEntry label */
`TextEntry(`id(`user), _("&User name:"), user),
/* TextEntry label */
`TextEntry(`id(`modul), _("&Module to Start:"), modul),
/* ComboBox label */
`Left(`ComboBox(`id(`protocol), _("Connection &Protocol:"), [
`item(`id("ssh"), "ssh", protocol == "ssh"),
`item(`id("rsh"), "rsh", protocol == "rsh"),
`item(`id("rlogin"), "rlogin", protocol == "rlogin"),
`item(`id("telnet"), "telnet", protocol == "telnet"),
`item(`id("sudo"), "sudo", protocol == "sudo"),
`item(`id("su"), "su", protocol == "su"),
])),
// `VCenter(ProtocolSelection()),
`VSpacing(1),
`HBox(
/* PushButton label */
`PushButton(`id(`next), `opt(`default), _("&Launch")),
`HStretch(),
`PushButton(`id(`cancel), Label::CancelButton())
)
)
));
UI::OpenDialog(contents);
any ret = nil;
while(true) {
ret = UI::UserInput();
if(ret == `abort || ret == `cancel) {
/* if(ReallyAbort()) break;
else continue; */
break;
}
else if(ret == `hosts) {
UI::ChangeWidget(`id(`host), `Value, UI::QueryWidget(`id(`hosts),`CurrentItem));
continue;
}
else if(ret == `back) {
break;
}
else if(ret == `next) {
/* FIXME check_* */
break;
}
else {
y2error("Unexpected return code: %1", ret);
continue;
}
}
if(ret == `next) {
protocol = (string) UI::QueryWidget(`id(`protocol), `Value);
modul = (string) UI::QueryWidget(`id(`modul), `Value);
user = (string) UI::QueryWidget(`id(`user), `Value);
host = (string) UI::QueryWidget(`id(`host), `Value);
if(host == "") host = "localhost";
if(modul == "") modul = "menu";
}
UI::CloseDialog ();
return ret;
}
y2milestone("----------------------------------------");
y2milestone("Remote chooser module started");
/* Label text */
UI::OpenDialog(`Label(_("Scanning for hosts in the local network...")));
hosts = sort((list) SCR::Read(.net.hostnames));
if(hosts == nil) hosts = [];
UI::CloseDialog();
/* Get the current user name */
map output = (map) SCR::Execute(.target.bash_output, "echo \"$USER\"");
user = select(splitstring(output["stdout"]:"", "\n"), 0, "");
any ret = nil;
while(true) {
ret = ChooseDialog();
if(ret == `abort || ret == `cancel || ret == `back) {
break;
}
/* Launch it */
else if(ret == `next) {
string launch = protocol + "://" + user;
if(protocol != "su" && protocol != "sudo")
launch = launch + "@" + host;
launch = launch + "/" + modul;
y2milestone("Launching %1", launch);
WFM::CallFunction(launch, []);
UI::SetModulename("remotechooser");
continue;
}
else {
y2error("Unexpected return code: %1", ret);
continue;
}
};
y2milestone("Remote chooser module finished");
y2milestone("----------------------------------------");
/* EOF */
}