On Wed, Jun 15, 2011 at 08:47:50AM -0000, [email protected] wrote: > Author: locilka > Date: Wed Jun 15 10:47:50 2011 > New Revision: 64378 > > URL: http://svn.opensuse.org/viewcvs/yast?rev=64378&view=rev > Log: > Added possibility to manage the sshd service (#556535) > > > Modified: > trunk/sshd/VERSION > trunk/sshd/package/yast2-sshd.changes > trunk/sshd/src/Sshd.ycp > trunk/sshd/src/dialogs.ycp > trunk/sshd/src/wizards.ycp > > Modified: trunk/sshd/VERSION > URL: > http://svn.opensuse.org/viewcvs/yast/trunk/sshd/VERSION?rev=64378&r1=64377&r2=64378&view=diff > ============================================================================== > --- trunk/sshd/VERSION (original) > +++ trunk/sshd/VERSION Wed Jun 15 10:47:50 2011 > @@ -1 +1 @@ > -2.18.0 > +2.21.0 > > Modified: trunk/sshd/package/yast2-sshd.changes > URL: > http://svn.opensuse.org/viewcvs/yast/trunk/sshd/package/yast2-sshd.changes?rev=64378&r1=64377&r2=64378&view=diff > ============================================================================== > --- trunk/sshd/package/yast2-sshd.changes (original) > +++ trunk/sshd/package/yast2-sshd.changes Wed Jun 15 10:47:50 2011 > @@ -1,4 +1,10 @@ > ------------------------------------------------------------------- > +Wed Jun 15 10:45:10 CEST 2011 - [email protected] > + > +- Added possibility to manage the sshd service (#556535).
s/#556535/bnc#556535/ > +- 2.21.0 > + > +------------------------------------------------------------------- > Wed Jan 13 18:56:03 CET 2010 - [email protected] > > - Adjusted .desktop file(s) to wrap /sbin/yast2/ calls in xdg-su > > Modified: trunk/sshd/src/Sshd.ycp > URL: > http://svn.opensuse.org/viewcvs/yast/trunk/sshd/src/Sshd.ycp?rev=64378&r1=64377&r2=64378&view=diff > ============================================================================== > --- trunk/sshd/src/Sshd.ycp (original) > +++ trunk/sshd/src/Sshd.ycp Wed Jun 15 10:47:50 2011 > @@ -30,7 +30,7 @@ > /** > * Sleep time between Read or Write steps > */ > -integer sl = 200; > +integer sl = 150; WTF? > > /** > * Returns whether the configuration has been modified. > @@ -46,6 +46,40 @@ > modified = true; > } > > +string service_name = "sshd"; > + > +boolean start_service = nil; > + > +global boolean GetStartService () { > + return start_service; > +} > + > +global void SetStartService (boolean new_state) { > + if (new_state == nil) { > + y2error ("Cannot set 'StartService' to %1", new_state); > + return; > + } else if (start_service == new_state) { > + y2warning ("'StartService' unchanged"); > + return; > + } > + > + start_service = new_state; > + SetModified(); > +} > + > +/** > + * Describes whether the daemon is running > + */ > +boolean Running () { > + return (Service::Status(service_name) == 0); > +} > + > +boolean ReadStartService () { > + start_service = Running(); > + > + return (start_service != nil); > +} > + > /** > * map of SSHD settings > */ > @@ -129,26 +163,6 @@ > } > > /** > - * Describes whether the daemon is running > - */ > -boolean sshd_is_running = false; > - > -/** > - * Reads current sshd status > - */ > -boolean ReadSSHDService () { > - if (Service::Status("sshd") == 0) { > - sshd_is_running = true; > - } else { > - sshd_is_running = false; > - } > - > - y2milestone((sshd_is_running ? "SSH is running":"SSH is not running")); > - > - return true; > -} > - > -/** > * Exports the current configuration. > * > * @return map of a current configuration > @@ -161,7 +175,7 @@ > global map Export () { > return $[ > "config" : SETTINGS, > - "status" : sshd_is_running, > + "status" : Running(), > ]; > } > > @@ -170,29 +184,13 @@ > */ > global boolean Import (map import_map) { > SETTINGS = (map <string, list<string> >) import_map["config"]:$[]; > - sshd_is_running = (import_map["status"]:false == true); > + SetStartService (import_map["status"]:false == true); > SetModified(); > y2milestone ("Configuration has been imported"); > return true; > } > > /** > - * Restarts the sshd when the daemon was running when starting the > configuration > - */ > -boolean WriteSSHDService () { > - boolean all_ok = true; > - > - if (sshd_is_running) { > - y2milestone("Restarting sshd daemon"); > - all_ok = Service::Restart("sshd"); > - } else { > - y2milestone("Sshd is not running - leaving..."); > - } > - > - return all_ok; > -} > - > -/** > Returns a confirmation popup dialog whether user wants to really abort. > */ > global boolean Abort() { > @@ -225,7 +223,7 @@ > /* SSHD read dialog caption */ > string caption = _("Initializing the SSHD Configuration"); > > - integer steps = 3; > + integer steps = 4; aaah, so "integer sl = 600 / steps" above, right? 8-] This Progress stuff is so... er... useful? > > Progress::New( caption, " ", steps, [ > /* Progress stage 1 */ > @@ -233,15 +231,18 @@ > /* Progress stage 2 */ > _("Read the current SSHD state"), > /* Progress stage 3 */ > - _("Read firewall settings") > + _("Read firewall settings"), > + /* Progress stage 4 */ > + _("Read service status"), > ], [ > /* Progress step 1 */ > _("Reading the current SSHD configuration..."), > /* Progress step 2 */ > - _("Reading the current SSHD state..."), > + _("Reading the current SSHD state"), > /* Progress step 3 */ > _("Reading firewall settings..."), > - /* Progress finished */ > + /* Progress step 4 */ > + _("Reading service status..."), > Message::Finished() > ], > "" > @@ -251,14 +252,12 @@ > > if (PollAbort()) return false; > Progress::NextStage(); > - /* Error message */ > if(!ReadSSHDSettings()) > Report::Error(Message::CannotReadCurrentSettings()); > sleep(sl); > > if (PollAbort()) return false; > - Progress::NextStep(); > - /* Error message */ > - if(!ReadSSHDService()) Report::Error(_("Cannot read the current SSHD > state.")); > + Progress::NextStage(); > + if (!ReadStartService()) > Report::Error(Message::CannotReadCurrentSettings()); > sleep(sl); > > if (PollAbort()) return false; > @@ -273,10 +272,61 @@ > Progress::NextStage (); > sleep(sl); > > + if (PollAbort()) return false; > + Progress::NextStage (); > + start_service = Service::Enabled (service_name); > + sleep(sl); > + > modified = false; > return true; > } > > +boolean AdjustSSHDService () { > + boolean enable_and_start = GetStartService(); > + boolean enabled = Service::Enabled (service_name); > + boolean running = (Service::Status (service_name) == 0); > + > + if (enable_and_start == nil) { > + y2error ("Configuration error: Cannot start/stop service %1", > service_name); > + return false; > + } > + > + // Service enable/disable > + if (enable_and_start == enabled) { > + y2milestone ("Service '%1' is already in the desired state", > service_name); > + } else { > + if (enable_and_start && !Service::Enable (service_name)) { > + y2error ("Cannot enable service %1", service_name); > + return false; > + } else if (!enable_and_start && !Service::Disable (service_name)) { > + y2error ("Cannot disable service %1", service_name); > + return false; > + } > + } > + > + // Start / restart service > + if (enable_and_start) { > + if (Running()) { > + if (!Service::Restart(service_name)) { > + y2error ("Cannot restart service %1", service_name); > + return false; > + } > + } else { > + if (!Service::Start (service_name)) { > + y2error ("Cannot start service %1", service_name); > + return false; > + } > + } > + // Stop a running service > + } else if (Running()) { > + if (!Service::Stop (service_name)) { > + return false; > + } > + } > + > + return true; > +} > + > /** > * Write all SSHD settings > * @return true on success > @@ -286,22 +336,22 @@ > /* SSHD read dialog caption */ > string caption = _("Saving the SSHD Configuration"); > > - integer steps = 3; > - > + integer steps = 4; > + > Progress::New(caption, " ", steps, [ > /* Progress stage 1 */ > _("Write the SSHD settings"), > /* Progress stage 2 */ > - _("Adjust the SSHD service"), > + _("Write firewall settings"), > /* Progress stage 3 */ > - _("Write firewall settings") > + _("Adjust SSHD service"), > ], [ > /* Progress step 1 */ > _("Writing the SSHD settings..."), > /* Progress step 2 */ > - _("Adjusting the SSHD service..."), > - /* Progress step 3 */ > _("Writing firewall settings..."), > + /* Progress step 3 */ > + _("Adjusting SSHD service..."), > Message::Finished() > ], > "" > @@ -317,16 +367,15 @@ > > if(PollAbort()) return false; > Progress::NextStage (); > + boolean progress_state = Progress::set (false); > /* Error message */ > - if(!WriteSSHDService()) Report::Error > (Message::CannotAdjustService("sshd")); > + if(!SuSEFirewall::Write()) Report::Error(_("Cannot write firewall > settings.")); > + Progress::set (progress_state); > sleep(sl); > > if(PollAbort()) return false; > Progress::NextStage (); > - boolean progress_state = Progress::set (false); > - /* Error message */ > - if(!SuSEFirewall::Write()) Report::Error(_("Cannot write firewall > settings.")); > - Progress::set (progress_state); > + AdjustSSHDService(); > sleep(sl); > > Progress::NextStage (); > > Modified: trunk/sshd/src/dialogs.ycp > URL: > http://svn.opensuse.org/viewcvs/yast/trunk/sshd/src/dialogs.ycp?rev=64378&r1=64377&r2=64378&view=diff > ============================================================================== > --- trunk/sshd/src/dialogs.ycp (original) > +++ trunk/sshd/src/dialogs.ycp Wed Jun 15 10:47:50 2011 > @@ -28,6 +28,15 @@ > mbox_y = 0; > } > > +term ServiceConfigurationDialogContent () { > + return `VBox ( > + "start_stop", > + `VSpacing(1), > + "auto_start_up", > + `VStretch() > + ); > +} > + > term ServerConfigurationDialogContent () { > return `VBox ( > `Left(`Label(_("SSHD TCP Ports"))), > @@ -45,7 +54,7 @@ > /* a push button */ > `PushButton(`id("delete_port"), _("&Delete")) > )), > - `VSpacing(1), > + `VSpacing (1), > `Frame ( > /* a dialog frame caption */ > _("Server Features"), > > Modified: trunk/sshd/src/wizards.ycp > URL: > http://svn.opensuse.org/viewcvs/yast/trunk/sshd/src/wizards.ycp?rev=64378&r1=64377&r2=64378&view=diff > ============================================================================== > --- trunk/sshd/src/wizards.ycp (original) > +++ trunk/sshd/src/wizards.ycp Wed Jun 15 10:47:50 2011 > @@ -14,10 +14,20 @@ > import "CWM"; > import "CWMTab"; > import "CWMFirewallInterfaces"; > +import "CWMServiceStart"; > +import "Sshd"; > > include "sshd/complex.ycp"; > include "sshd/dialogs.ycp"; > > +void SaveAndRestart () { > + Wizard::CreateDialog (); > + Wizard::RestoreHelp (HELPS["write"]:""); > + Sshd::Write (); > + sleep (1000); > + UI::CloseDialog (); > +} > + > /** > * Main workflow of the sshd configuration > * @return sequence result > @@ -52,9 +62,49 @@ > "services" : [ "service:sshd" ], > "display_details" : true, > ]), > + "start_stop" : CWMServiceStart::CreateStartStopWidget ($[ > + "service_id" : "sshd", > + // label - service status, informative text > + "service_running_label" : _("SSH server is running"), > + // label - service status, informative text > + "service_not_running_label" : _("SSH server is not running"), > + // push button (SSH service handling) > + "start_now_button" : _("&Start SSH Server Now"), > + // push button (SSH service handling) > + "stop_now_button" : _("S&top SSH Server Now"), > + "save_now_action" : SaveAndRestart, > + // push button (SSH service handling) > + "save_now_button" : _("Save Settings and Reload SSH Server &Now"), > + "help" : sformat (CWMServiceStart::StartStopHelpTemplate (true), > + // part of help text, used to describe pusbuttons (matching SSH > service handling but without "&") > + _("Start SSH Server Now"), > + // part of help text, used to describe pusbuttons (matching SSH > service handling but without "&") > + _("Stop SSH Server Now"), > + // part of help text, used to describe pusbuttons (matching SSH > service handling but without "&") > + _("Save Settings and Reload SSH Server Now")), > + ]), > + "auto_start_up" : CWMServiceStart::CreateAutoStartWidget ($[ > + "get_service_auto_start" : Sshd::GetStartService, > + "set_service_auto_start" : Sshd::SetStartService, > + // radio button (starting SSH service - option 1) > + "start_auto_button" : _("Now and When &Booting"), > + // radio button (starting SSH service - option 2) > + "start_manual_button" : _("&Manually"), > + "help" : sformat (CWMServiceStart::AutoStartHelpTemplate (), > + // part of help text, used to describe radiobuttons (matching > starting SSH service but without "&") > + _("Now and When Booting"), > + // part of help text, used to describe radiobuttons (matching > starting SSH service but without "&") > + _("Manually") > + ), > + ]), Hmm, when I saw 'import "CWMServiceStart"' above, I thought "good, that will save us so much repetitive code" :-/ Overall... God, so much code for a stupid totally standard sysvinit service?! I want a simple declaration to replace this *entire* patch: service :name => _("SSH Server"), :sysvinit => "sshd" We really should make better libraries. > ]; > > map <string, any> tabs = $[ > + "service_configuration" : $[ > + "header" : _("&Start-Up"), > + "widget_names" : ["start_stop", "auto_start_up"], > + "contents" : ServiceConfigurationDialogContent(), > + ], > "server_configuration" : $[ > "header" : _("&General"), > "widget_names" : ["sc", "fw"], > @@ -74,7 +124,7 @@ > > map <string, any> wd = $[ > "tab" : CWMTab::CreateWidget ($[ > - "tab_order" : ["server_configuration", "login_settings", > "proto_and_cipher"], > + "tab_order" : ["service_configuration", "server_configuration", > "login_settings", "proto_and_cipher"], > "tabs" : tabs, > "widget_descr" : widgets, > "initial_tab" : "server_configuration", > > -- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > -- Martin Vidner, YaST developer http://en.opensuse.org/User:Mvidner Kuracke oddeleni v restauraci je jako fekalni oddeleni v bazenu
pgpJoZSjfuRw6.pgp
Description: PGP signature
