Hello community, here is the log from the commit of package yast2-samba-client for openSUSE:Factory checked in at 2019-02-24 18:03:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-samba-client (Old) and /work/SRC/openSUSE:Factory/.yast2-samba-client.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-samba-client" Sun Feb 24 18:03:48 2019 rev:98 rq:677759 version:4.1.1 Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-samba-client/yast2-samba-client.changes 2019-02-15 09:53:14.471800906 +0100 +++ /work/SRC/openSUSE:Factory/.yast2-samba-client.new.28833/yast2-samba-client.changes 2019-02-24 18:03:50.155765676 +0100 @@ -1,0 +2,7 @@ +Tue Feb 5 20:12:18 UTC 2019 - David Mulder <dmul...@suse.com> + +- Perform the workgroup lookup using samba python bindings; + (bsc#1124390). +- 4.1.1 + +------------------------------------------------------------------- Old: ---- yast2-samba-client-4.1.0.tar.bz2 New: ---- yast2-samba-client-4.1.1.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-samba-client.spec ++++++ --- /var/tmp/diff_new_pack.vKXUbg/_old 2019-02-24 18:03:50.851765439 +0100 +++ /var/tmp/diff_new_pack.vKXUbg/_new 2019-02-24 18:03:50.851765439 +0100 @@ -17,7 +17,7 @@ Name: yast2-samba-client -Version: 4.1.0 +Version: 4.1.1 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build ++++++ yast2-samba-client-4.1.0.tar.bz2 -> yast2-samba-client-4.1.1.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-client-4.1.0/package/yast2-samba-client.changes new/yast2-samba-client-4.1.1/package/yast2-samba-client.changes --- old/yast2-samba-client-4.1.0/package/yast2-samba-client.changes 2019-01-29 10:42:00.000000000 +0100 +++ new/yast2-samba-client-4.1.1/package/yast2-samba-client.changes 2019-02-20 15:52:34.000000000 +0100 @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Tue Feb 5 20:12:18 UTC 2019 - David Mulder <dmul...@suse.com> + +- Perform the workgroup lookup using samba python bindings; + (bsc#1124390). +- 4.1.1 + +------------------------------------------------------------------- Fri Jan 18 19:38:21 UTC 2019 - David Mulder <dmul...@suse.com> - Use a cldap ping to search for the join server; (bsc#1122534). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-client-4.1.0/package/yast2-samba-client.spec new/yast2-samba-client-4.1.1/package/yast2-samba-client.spec --- old/yast2-samba-client-4.1.0/package/yast2-samba-client.spec 2019-01-29 10:42:00.000000000 +0100 +++ new/yast2-samba-client-4.1.1/package/yast2-samba-client.spec 2019-02-20 15:52:34.000000000 +0100 @@ -17,7 +17,7 @@ Name: yast2-samba-client -Version: 4.1.0 +Version: 4.1.1 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-client-4.1.0/src/modules/SambaAD.pm new/yast2-samba-client-4.1.1/src/modules/SambaAD.pm --- old/yast2-samba-client-4.1.0/src/modules/SambaAD.pm 2019-01-29 10:42:00.000000000 +0100 +++ new/yast2-samba-client-4.1.1/src/modules/SambaAD.pm 2019-02-20 15:52:34.000000000 +0100 @@ -287,31 +287,6 @@ } - -# Get AD Domain name and return the name of work group ("Pre-Win2k Domain") -# @param domain the domain user entered -# @param server AD server (used for querying) -# @return workgroup (returns domain if anything fails) -BEGIN{$TYPEINFO{ADDomain2Workgroup}=["function","string","string", "string"]} -sub ADDomain2Workgroup { - - my ($self, $domain, $server) = @_; - - - return "" if $server eq ""; - - my $out = SCR->Execute (".target.bash_output", "net -s $dummy_conf_file ads lookup -S $server | grep 'Pre-Win2k Domain' | cut -f 2"); - - y2debug ("net ads lookup -S $server: ", Dumper ($out)); - if ($out->{"exit"} ne 0 || $out->{"stdout"} eq "") { - return $domain; - } - my $workgroup = $out->{"stdout"}; - chomp $workgroup; - y2milestone ("workgroup: $workgroup"); - return $workgroup; -} - # Return the value of AD work group ("Pre-Win2k Domain") for the current ADS # @param domain the domain user entered # @return workgroup (returns domain if anything fails) @@ -319,7 +294,8 @@ sub GetWorkgroup { my ($self, $domain) = @_; - return $self->ADDomain2Workgroup ($domain, $ads); + # Perform the workgroup lookup using samba python bindings (bsc#1124390) + return SambaAPI->ADDomain2Workgroup($domain, $ads); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-samba-client-4.1.0/src/modules/SambaAPI.py new/yast2-samba-client-4.1.1/src/modules/SambaAPI.py --- old/yast2-samba-client-4.1.0/src/modules/SambaAPI.py 2019-01-29 10:42:00.000000000 +0100 +++ new/yast2-samba-client-4.1.1/src/modules/SambaAPI.py 2019-02-20 15:52:34.000000000 +0100 @@ -2,6 +2,21 @@ import_module('PackageSystem') import_module('Package') from yast import PackageSystem, Package +if not PackageSystem.Installed('samba-python3'): + if Package.InstallAll(['samba-python3']): + from samba.net import Net + from samba.credentials import Credentials + from samba.dcerpc import nbt + else: + raise ImportError("Failed to install samba python bindings samba-python3") + +# Global response to net.finddc() +cldap_ret = None + +def net_lookup(domain): + global cldap_ret + net = Net(Credentials()) + cldap_ret = net.finddc(domain=domain, flags=(nbt.NBT_SERVER_LDAP | nbt.NBT_SERVER_DS)) # Check if a given workgroup is a Active Directory domain and return the name # of AD domain controler @@ -10,14 +25,20 @@ # @return string non empty when ADS was found @Declare('string', 'string') def GetLDAPDS(workgroup): - if not PackageSystem.Installed('samba-python3'): - if not Package.InstallAll(['samba-python3']): - return '' - from samba.net import Net - from samba.credentials import Credentials - from samba.dcerpc import nbt - net = Net(Credentials()) - cldap_ret = net.finddc(domain=workgroup, flags=(nbt.NBT_SERVER_LDAP | nbt.NBT_SERVER_DS)) - ycpbuiltins.y2milestone('Found LDAP/DS server %s via cldap ping' % cldap_ret.pdc_dns_name) - return cldap_ret.pdc_dns_name + global cldap_ret + if not cldap_ret: + net_lookup(workgroup) + ycpbuiltins.y2milestone('Found LDAP/DS server %s via cldap ping' % cldap_ret.pdc_dns_name if cldap_ret else '') + return cldap_ret.pdc_dns_name if cldap_ret else '' +# Get AD Domain name and return the name of work group ("Pre-Win2k Domain") +# @param domain the domain user entered +# @param server AD server (used for querying) +# @return workgroup (returns domain if anything fails) +@Declare('string', 'string', 'string') +def ADDomain2Workgroup(domain, server): + global cldap_ret + if not cldap_ret or server != cldap_ret.pdc_dns_name: + net_lookup(domain) + ycpbuiltins.y2milestone('workgroup: %s' % cldap_ret.domain_name if cldap_ret else domain) + return cldap_ret.domain_name if cldap_ret else domain