View | Details | Raw Unified | Return to bug 41247
Collapse All | Expand All

(-)modules/univention/connector/ad/__init__.py (-2 / +7 lines)
 Lines 845-857    Link Here 
845
		binding= "ncacn_np:%s[%s]" % (self.ad_ldap_host, binding_options)
845
		binding= "ncacn_np:%s[%s]" % (self.ad_ldap_host, binding_options)
846
846
847
		self.samr = samba.dcerpc.samr.samr(binding, lp, creds)
847
		self.samr = samba.dcerpc.samr.samr(binding, lp, creds)
848
		handle = self.samr.Connect2(None, security.SEC_FLAG_MAXIMUM_ALLOWED)
848
		self.samr_handle = self.samr.Connect2(None, security.SEC_FLAG_MAXIMUM_ALLOWED)
849
849
850
		sam_domain = lsa.String()
850
		sam_domain = lsa.String()
851
		sam_domain.string = self.ad_netbios_domainname
851
		sam_domain.string = self.ad_netbios_domainname
852
		sid = self.samr.LookupDomain(handle, sam_domain)
852
		sid = self.samr.LookupDomain(self.samr_handle, sam_domain)
853
		self.dom_handle = self.samr.OpenDomain(handle, security.SEC_FLAG_MAXIMUM_ALLOWED, sid)
853
		self.dom_handle = self.samr.OpenDomain(handle, security.SEC_FLAG_MAXIMUM_ALLOWED, sid)
854
854
855
	def close_samr(self):
856
		self.samr.Close(self.dom_handle)
857
		self.samr.Close(self.samr_handle)
858
		self.samr = None
859
855
	def get_kerberos_ticket(self):
860
	def get_kerberos_ticket(self):
856
		cmd_block = ['kinit', '--no-addresses', '--password-file=%s' % self.baseConfig['%s/ad/ldap/bindpw' % self.CONFIGBASENAME], self.baseConfig['%s/ad/ldap/binddn' % self.CONFIGBASENAME]]
861
		cmd_block = ['kinit', '--no-addresses', '--password-file=%s' % self.baseConfig['%s/ad/ldap/bindpw' % self.CONFIGBASENAME], self.baseConfig['%s/ad/ldap/binddn' % self.CONFIGBASENAME]]
857
		p1 = subprocess.Popen(cmd_block, close_fds=True)
862
		p1 = subprocess.Popen(cmd_block, close_fds=True)
(-)modules/univention/connector/ad/password.py (-14 / +20 lines)
 Lines 131-154    Link Here 
131
	if not connector.samr:
131
	if not connector.samr:
132
		connector.open_samr()
132
		connector.open_samr()
133
133
134
	sam_accountname = lsa.String()
134
	user_handle = None
135
	sam_accountname.string = samaccountname
135
	try:
136
	(rids, types) = connector.samr.LookupNames(connector.dom_handle, [sam_accountname,])
136
		sam_accountname = lsa.String()
137
		sam_accountname.string = samaccountname
138
		(rids, types) = connector.samr.LookupNames(connector.dom_handle, [sam_accountname,])
137
139
138
	rid=rids.ids[0]
140
		rid=rids.ids[0]
139
	user_handle = connector.samr.OpenUser(connector.dom_handle, security.SEC_FLAG_MAXIMUM_ALLOWED, rid)
141
		user_handle = connector.samr.OpenUser(connector.dom_handle, security.SEC_FLAG_MAXIMUM_ALLOWED, rid)
140
142
141
	userinfo18 = samba.dcerpc.samr.UserInfo18()
143
		userinfo18 = samba.dcerpc.samr.UserInfo18()
142
	bin_hash = binascii.a2b_hex(pwd)
144
		bin_hash = binascii.a2b_hex(pwd)
143
	enc_hash = mySamEncryptNTLMHash(bin_hash, connector.samr.session_key)
145
		enc_hash = mySamEncryptNTLMHash(bin_hash, connector.samr.session_key)
144
146
145
	samr_Password = samba.dcerpc.samr.Password()
147
		samr_Password = samba.dcerpc.samr.Password()
146
	samr_Password.hash = map(ord, enc_hash)
148
		samr_Password.hash = map(ord, enc_hash)
147
149
148
	userinfo18.nt_pwd = samr_Password
150
		userinfo18.nt_pwd = samr_Password
149
	userinfo18.nt_pwd_active = 1
151
		userinfo18.nt_pwd_active = 1
150
	userinfo18.password_expired = 0
152
		userinfo18.password_expired = 0
151
	info = connector.samr.SetUserInfo(user_handle, 18, userinfo18)
153
		info = connector.samr.SetUserInfo(user_handle, 18, userinfo18)
154
	finally:
155
		if user_handle:
156
			connector.samr.Close(user_handle)
157
		connector.close_samr()
152
158
153
	return info
159
	return info
154
160

Return to bug 41247