Hello community,
here is the log from the commit of package yast2-samba-provision for openSUSE:Factory checked in at 2019-07-31 14:23:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-samba-provision (Old)
and /work/SRC/openSUSE:Factory/.yast2-samba-provision.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-samba-provision"
Wed Jul 31 14:23:02 2019 rev:3 rq:714456 version:1.0.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-samba-provision/yast2-samba-provision.changes 2018-11-01 14:42:58.130886115 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-samba-provision.new.4126/yast2-samba-provision.changes 2019-07-31 14:23:07.262443253 +0200
@@ -1,0 +2,28 @@
+Wed Jul 10 08:59:29 UTC 2019 - Samuel Cabrero
+
+- Catch and show internal python exceptions; (bsc#1140548);
+- 1.0.4
+
+-------------------------------------------------------------------
+Fri May 31 12:40:00 UTC 2019 - Stasiek Michalski
+
+- Add metainfo (fate#319035)
+- Revamp spec
+- Replace GenericName with Comment
+- 1.0.3
+
+-------------------------------------------------------------------
+Wed May 22 14:54:28 UTC 2019 - Samuel Cabrero
+
+- Call samba python API using yast python binding; (bsc#1117597);
+ (CVE-2018-17956)
+- Show a dialog with provision details or errors; (bsc#1132676);
+- Enable and start services after provision
+- 1.0.2
+
+-------------------------------------------------------------------
+Wed Nov 7 17:34:23 UTC 2018 - jengelh@inai.de
+
+- Remove TM mark.
+
+-------------------------------------------------------------------
Old:
----
yast2-samba-provision-1.0.1.tar.bz2
New:
----
yast2-samba-provision-1.0.4.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-samba-provision.spec ++++++
--- /var/tmp/diff_new_pack.0RwLUt/_old 2019-07-31 14:23:07.766442966 +0200
+++ /var/tmp/diff_new_pack.0RwLUt/_new 2019-07-31 14:23:07.770442963 +0200
@@ -1,7 +1,7 @@
#
# spec file for package yast2-samba-provision
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,55 +12,54 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: yast2-samba-provision
-Version: 1.0.1
+Version: 1.0.4
Release: 0
+Summary: YaST2 - Samba AD DC provision
+License: GPL-2.0-only
+Group: System/YaST
+Url: https://github.com/yast/yast-samba-provision
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: %{name}-%{version}.tar.bz2
BuildRequires: perl-XML-Writer
BuildRequires: update-desktop-files
BuildRequires: yast2 >= 3.3.8
-BuildRequires: yast2-devtools >= 3.1.46
+BuildRequires: yast2-devtools >= 4.2.2
BuildRequires: yast2-perl-bindings
BuildRequires: yast2-testsuite
Requires: yast2 >= 3.3.8
-
-BuildArch: noarch
-
Requires: yast2-network
+Requires: yast2-python3-bindings >= 4.0.8
Requires: yast2-ruby-bindings >= 3.3.1
-Summary: YaST2 - Samba AD DC provision
-License: GPL-2.0-only
-Group: System/YaST
+BuildArch: noarch
%description
This package contains the YaST2 component to configure samba as an Active
-Directory (TM) Domain Controller.
+Directory Domain Controller.
%prep
-%setup -n %{name}-%{version}
+%setup -q
%build
%yast_build
%install
%yast_install
+%yast_metainfo
%files
-%defattr(-,root,root)
-%dir %{yast_yncludedir}/samba-provision
-%{yast_yncludedir}/samba-provision/*
-%{yast_clientdir}/samba-provision.rb
-%{yast_moduledir}/SambaProvision.rb
-%{yast_desktopdir}/samba-provision.desktop
+%{yast_yncludedir}
+%{yast_clientdir}
+%{yast_moduledir}
+%{yast_desktopdir}
+%{yast_metainfodir}
%doc %{yast_docdir}
%changelog
++++++ yast2-samba-provision-1.0.1.tar.bz2 -> yast2-samba-provision-1.0.4.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-provision-1.0.1/package/yast2-samba-provision.changes new/yast2-samba-provision-1.0.4/package/yast2-samba-provision.changes
--- old/yast2-samba-provision-1.0.1/package/yast2-samba-provision.changes 2018-10-31 18:19:00.000000000 +0100
+++ new/yast2-samba-provision-1.0.4/package/yast2-samba-provision.changes 2019-07-10 16:48:01.000000000 +0200
@@ -1,4 +1,32 @@
-------------------------------------------------------------------
+Wed Jul 10 08:59:29 UTC 2019 - Samuel Cabrero
+
+- Catch and show internal python exceptions; (bsc#1140548);
+- 1.0.4
+
+-------------------------------------------------------------------
+Fri May 31 12:40:00 UTC 2019 - Stasiek Michalski
+
+- Add metainfo (fate#319035)
+- Revamp spec
+- Replace GenericName with Comment
+- 1.0.3
+
+-------------------------------------------------------------------
+Wed May 22 14:54:28 UTC 2019 - Samuel Cabrero
+
+- Call samba python API using yast python binding; (bsc#1117597);
+ (CVE-2018-17956)
+- Show a dialog with provision details or errors; (bsc#1132676);
+- Enable and start services after provision
+- 1.0.2
+
+-------------------------------------------------------------------
+Wed Nov 7 17:34:23 UTC 2018 - jengelh@inai.de
+
+- Remove TM mark.
+
+-------------------------------------------------------------------
Wed Oct 31 17:17:35 UTC 2018 - Samuel Cabrero
- Fix required packages after samba-kdc renamed to samba-ad-dc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-provision-1.0.1/package/yast2-samba-provision.spec new/yast2-samba-provision-1.0.4/package/yast2-samba-provision.spec
--- old/yast2-samba-provision-1.0.1/package/yast2-samba-provision.spec 2018-10-31 18:19:00.000000000 +0100
+++ new/yast2-samba-provision-1.0.4/package/yast2-samba-provision.spec 2019-07-10 16:48:01.000000000 +0200
@@ -12,54 +12,54 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: yast2-samba-provision
-Version: 1.0.1
+Version: 1.0.4
Release: 0
+Summary: YaST2 - Samba AD DC provision
+Group: System/YaST
+License: GPL-2.0
+Url: https://github.com/yast/yast-samba-provision
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: %{name}-%{version}.tar.bz2
-Group: System/YaST
-License: GPL-2.0
BuildRequires: yast2 >= 3.3.8
-BuildRequires: yast2-perl-bindings
-BuildRequires: yast2-devtools >= 3.1.46
-BuildRequires: yast2-testsuite
-BuildRequires: perl-XML-Writer
-BuildRequires: update-desktop-files
+BuildRequires: yast2-perl-bindings
+BuildRequires: yast2-devtools >= 4.2.2
+BuildRequires: yast2-testsuite
+BuildRequires: perl-XML-Writer
+BuildRequires: update-desktop-files
Requires: yast2 >= 3.3.8
-
-BuildArchitectures: noarch
-
Requires: yast2-ruby-bindings >= 3.3.1
-requires: yast2-network
+Requires: yast2-python3-bindings >= 4.0.8
+Requires: yast2-network
-Summary: YaST2 - Samba AD DC provision
+BuildArch: noarch
%description
This package contains the YaST2 component to configure samba as an Active
-Directory (TM) Domain Controller.
+Directory Domain Controller.
%prep
-%setup -n %{name}-%{version}
+%setup -q
%build
%yast_build
%install
%yast_install
+%yast_metainfo
%files
-%defattr(-,root,root)
-%dir %{yast_yncludedir}/samba-provision
-%{yast_yncludedir}/samba-provision/*
-%{yast_clientdir}/samba-provision.rb
-%{yast_moduledir}/SambaProvision.rb
-%{yast_desktopdir}/samba-provision.desktop
+%{yast_yncludedir}
+%{yast_clientdir}
+%{yast_moduledir}
+%{yast_desktopdir}
+%{yast_metainfodir}
%doc %{yast_docdir}
+%changelog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-provision-1.0.1/src/Makefile.am new/yast2-samba-provision-1.0.4/src/Makefile.am
--- old/yast2-samba-provision-1.0.1/src/Makefile.am 2018-10-31 18:19:00.000000000 +0100
+++ new/yast2-samba-provision-1.0.4/src/Makefile.am 2019-07-10 16:48:01.000000000 +0200
@@ -1,7 +1,8 @@
# Sources for samba-client
module_DATA = \
- modules/SambaProvision.rb
+ modules/SambaProvision.rb \
+ modules/SambaToolDomainAPI.py
client_DATA = \
clients/samba-provision.rb
@@ -23,7 +24,7 @@
schemafiles_DATA =
desktop_DATA = \
- desktop/samba-provision.desktop
+ desktop/org.opensuse.yast.SambaProvision.desktop
EXTRA_DIST = $(module_DATA) $(client_DATA) $(ynclude_DATA) $(scrconf_DATA) $(agent_SCRIPTS) $(schemafiles_DATA) $(desktop_DATA)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-provision-1.0.1/src/desktop/org.opensuse.yast.SambaProvision.desktop new/yast2-samba-provision-1.0.4/src/desktop/org.opensuse.yast.SambaProvision.desktop
--- old/yast2-samba-provision-1.0.1/src/desktop/org.opensuse.yast.SambaProvision.desktop 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-samba-provision-1.0.4/src/desktop/org.opensuse.yast.SambaProvision.desktop 2019-07-10 16:48:01.000000000 +0200
@@ -0,0 +1,27 @@
+[Desktop Entry]
+Type=Application
+Categories=Settings;System;Qt;X-SuSE-YaST;X-SuSE-YaST-Net_advanced;
+
+X-KDE-ModuleType=Library
+X-KDE-HasReadOnlyMode=true
+X-SuSE-YaST-Call=samba-provision
+
+X-SuSE-YaST-Group=Net_advanced
+X-SuSE-YaST-Argument=
+X-SuSE-YaST-RootOnly=true
+X-SuSE-YaST-AutoInst=all
+X-SuSE-YaST-Geometry=
+X-SuSE-YaST-SortKey=
+X-SuSE-YaST-AutoInstResource=samba-provision
+X-SuSE-YaST-AutoInstClonable=true
+X-SuSE-YaST-AutoInstRequires=lan
+X-SuSE-YaST-AutoInstSchema=samba-provision.rnc
+X-SuSE-YaST-Keywords=authentication,samba,windows
+
+Icon=yast-samba-server
+Exec=xdg-su -c "/sbin/yast2 samba-provision"
+
+Name=YaST Active Directory Domain Controller
+GenericName=Active Directory Domain Controller
+Comment=Provision an Active Directory Domain Controller
+StartupNotify=true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-provision-1.0.1/src/desktop/samba-provision.desktop new/yast2-samba-provision-1.0.4/src/desktop/samba-provision.desktop
--- old/yast2-samba-provision-1.0.1/src/desktop/samba-provision.desktop 2018-10-31 18:19:00.000000000 +0100
+++ new/yast2-samba-provision-1.0.4/src/desktop/samba-provision.desktop 1970-01-01 01:00:00.000000000 +0100
@@ -1,26 +0,0 @@
-[Desktop Entry]
-Type=Application
-Categories=Settings;System;Qt;X-SuSE-YaST;X-SuSE-YaST-Net_advanced;
-
-X-KDE-ModuleType=Library
-X-KDE-HasReadOnlyMode=true
-X-SuSE-YaST-Call=samba-provision
-
-X-SuSE-YaST-Group=Net_advanced
-X-SuSE-YaST-Argument=
-X-SuSE-YaST-RootOnly=true
-X-SuSE-YaST-AutoInst=all
-X-SuSE-YaST-Geometry=
-X-SuSE-YaST-SortKey=
-X-SuSE-YaST-AutoInstResource=samba-provision
-X-SuSE-YaST-AutoInstClonable=true
-X-SuSE-YaST-AutoInstRequires=lan
-X-SuSE-YaST-AutoInstSchema=samba-provision.rnc
-X-SuSE-YaST-Keywords=authentication,samba,windows
-
-Icon=yast-samba-server
-Exec=xdg-su -c "/sbin/yast2 samba-provision"
-
-Name=Provision an Active Directory Domain Controller
-GenericName=Configure an Active Directory Domain Controller
-StartupNotify=true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-provision-1.0.1/src/include/samba-provision/wizards.rb new/yast2-samba-provision-1.0.4/src/include/samba-provision/wizards.rb
--- old/yast2-samba-provision-1.0.1/src/include/samba-provision/wizards.rb 2018-10-31 18:19:00.000000000 +0100
+++ new/yast2-samba-provision-1.0.4/src/include/samba-provision/wizards.rb 2019-07-10 16:48:01.000000000 +0200
@@ -80,7 +80,7 @@
}
Wizard.CreateDialog
- Wizard.SetDesktopTitleAndIcon("samba-provision")
+ Wizard.SetDesktopTitleAndIcon("org.opensuse.yast.SambaProvision")
ret = Sequencer.Run(aliases, sequence)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-provision-1.0.1/src/modules/SambaProvision.rb new/yast2-samba-provision-1.0.4/src/modules/SambaProvision.rb
--- old/yast2-samba-provision-1.0.1/src/modules/SambaProvision.rb 2018-10-31 18:19:00.000000000 +0100
+++ new/yast2-samba-provision-1.0.4/src/modules/SambaProvision.rb 2019-07-10 16:48:01.000000000 +0200
@@ -14,6 +14,8 @@
Yast.import "SambaConfig"
Yast.import "Kerberos"
Yast.import "DNS"
+ Yast.import "SambaToolDomainAPI"
+ Yast.import "Service"
@operation = ""
@parent_domain_name = ""
@@ -36,16 +38,18 @@
caption = _("Provisioning Samba Active Directory Domain controller...")
- no_stages = 3
+ no_stages = 4
stages = [
_("Write the settings"),
_("Provision"),
- _("Write kerberos settings")
+ _("Write kerberos settings"),
+ _("Start services")
]
steps = [
_("Writting the settings..."),
_("Provisioning..."),
- _("Writting kerberos settings...")
+ _("Writting kerberos settings..."),
+ _("Starting services...")
]
if @dns
@@ -79,15 +83,25 @@
# Provision
Progress.NextStage
+ result = false
+ output = ""
+
case @operation
when "new_forest"
- if !write_provision
- Report.Error(_("Error provisioning database. Check logs for details."))
+ result, output = write_provision
+ if !result
+ headline = _("An error occurred while provisioning new domain.")
+ msg = RichText(Opt(:plainText), output)
+ Popup.LongText(headline, msg, 60, 20)
return false
end
when "new_dc"
- if !write_join
- Report.Error(_("Error joining to domain. Check logs for details."))
+ result, output = write_join
+ if !result
+ headline = _("An error occurred while joining to domain.")
+ msg = RichText(Opt(:plainText), output)
+ Popup.LongText(headline, msg, 60, 20)
+ return false
end
end
@@ -110,6 +124,22 @@
SCR.Execute(path(".target.bash"), "/sbin/netconfig update")
end
+ headline = _("Provision result")
+ msg = RichText(Opt(:plainText), output)
+ Popup.LongText(headline, msg, 60, 20)
+
+ Progress.NextStage
+
+ if !Service.Adjust("samba-ad-dc", "enable")
+ # translators: error message, do not change winbind
+ Report.Error(_("Cannot enable samba-ad-dc service."))
+ return false
+ end
+ if !Service.Start("samba-ad-dc")
+ Report.Error(_("Cannot start samba-ad-dc daemon."))
+ return false
+ end
+
# Final stage
Progress.Finish
@@ -156,22 +186,14 @@
domain = SambaConfig.GlobalGetStr("workgroup", "")
realm = SambaConfig.GlobalGetStr("realm", "")
- cmd = "samba-tool domain provision " +
- "--server-role=dc " +
- "--realm='#{realm}' " +
- "--domain='#{domain}' " +
- "--adminpass='#{@admin_password}' " +
- "--function-level='#{@forest_level}' " +
- "--dns-backend='#{@dns_backend}' "
-
- if @rfc2307
- cmd += " --use-rfc2307"
- end
+ result, output = SambaToolDomainAPI.provision(realm,
+ domain,
+ admin_password,
+ forest_level,
+ dns_backend,
+ rfc2307)
- output = SCR.Execute(path(".target.bash_output"), cmd)
- Builtins.y2milestone("Samba provision result: #{output}")
-
- output["exit"] == 0
+ return result, output
end
@@ -179,15 +201,12 @@
domain = SambaConfig.GlobalGetStr("realm", "").downcase
role = @rodc ? "RODC" : "DC"
- cmd = "samba-tool domain join #{domain} #{role} " +
- "--dns-backend='#{@dns_backend}' " +
- "--username=\"#{credentials_username}\" " +
- "--password=\"#{credentials_password}\" "
-
- output = SCR.Execute(path(".target.bash_output"), cmd)
- Builtins.y2milestone("Samba domain join result: #{output}")
-
- output["exit"] == 0
+ result, output = SambaToolDomainAPI.join(domain,
+ role,
+ dns_backend,
+ credentials_username,
+ credentials_password)
+ return result, output
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-provision-1.0.1/src/modules/SambaToolDomainAPI.py new/yast2-samba-provision-1.0.4/src/modules/SambaToolDomainAPI.py
--- old/yast2-samba-provision-1.0.1/src/modules/SambaToolDomainAPI.py 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-samba-provision-1.0.4/src/modules/SambaToolDomainAPI.py 2019-07-10 16:48:01.000000000 +0200
@@ -0,0 +1,99 @@
+from io import StringIO
+from yast import ycpbuiltins
+import sys
+
+class YaSTIO(StringIO):
+ def __init__(self, outf):
+ super(YaSTIO, self).__init__()
+ self.outf = outf
+
+ def write(self, s):
+ super(YaSTIO, self).write(s)
+ self.outf(s)
+
+from samba.netcmd import domain as dm
+from samba.getopt import SambaOptions, CredentialsOptions
+from samba.logger import get_samba_logger
+from optparse import OptionParser
+from samba.netcmd import CommandError
+from yast import Declare
+
+@Declare('string', 'string', 'string', 'string', 'string', 'string', 'boolean')
+def provision(realm, domain, adminpass, function_level, dns_backend, use_rfc2307):
+ '''Provision a domain
+ param string realm The realm name
+ param string domain NetBIOS domain name to use
+ param string adminpass Choose an admin password
+ param string function_level The domain and forest function level (2000 | 2003 | 2008 | 2008_R2)
+ param string dns_backend The DNS server backend
+ param boolean use_rfc2307 Use AD to store posix attributes
+ return string Error message, or an empty string
+ '''
+ parser = OptionParser()
+ sambaopts = SambaOptions(parser)
+ lp = sambaopts.get_loadparm()
+ lp.set('realm', realm)
+
+ outlog = YaSTIO(ycpbuiltins.y2debug)
+ errlog = YaSTIO(ycpbuiltins.y2error)
+
+ provision = dm.cmd_domain_provision(errf=errlog)
+ provision.raw_argv = []
+ provision.logger = get_samba_logger(name="provision",
+ stream=outlog,
+ verbose=True,
+ quiet=False,
+ fmt="%(message)s")
+
+ try:
+ provision.run(sambaopts=sambaopts,
+ domain=domain,
+ adminpass=adminpass,
+ function_level=function_level,
+ dns_backend=dns_backend,
+ server_role="dc")
+ except Exception as e:
+ template = "{0} exception:\n{1}"
+ message = template.format(type(e).__name__, str(e))
+ return [False, message]
+ return [True, outlog.getvalue()]
+
+@Declare('string', 'string', 'string', 'string', 'string', 'string')
+def join(domain, role, dns_backend, username, password):
+ '''Join domain as either member or backup domain controller
+ param string domain NetBIOS domain name to use
+ param string role possible values: MEMBER, DC, RODC, SUBDOMAIN
+ param string dns_backend The DNS server backend
+ param string username Username
+ param string password Password
+ return string Error message, or an empty string
+ '''
+ parser = OptionParser()
+ sambaopts = SambaOptions(parser)
+ credopts = CredentialsOptions(parser)
+ credopts.creds.parse_string(username)
+ credopts.creds.set_password(password)
+ credopts.ask_for_password = False
+ credopts.machine_pass = False
+
+ outlog = YaSTIO(ycpbuiltins.y2debug)
+ errlog = YaSTIO(ycpbuiltins.y2error)
+
+ join = dm.cmd_domain_join(errf=errlog)
+ join.logger = get_samba_logger(name="provision",
+ stream=outlog,
+ verbose=True,
+ quiet=False,
+ fmt="%(message)s")
+
+ try:
+ join.run(sambaopts=sambaopts,
+ credopts=credopts,
+ domain=domain,
+ role=role,
+ dns_backend=dns_backend)
+ except Exception as e:
+ template = "{0} exception:\n{1}"
+ message = template.format(type(e).__name__, str(e))
+ return [False, message]
+ return [True, outlog.getvalue()]