mirror of
https://github.com/samba-team/samba.git
synced 2025-06-07 03:17:08 +03:00
60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
#!/usr/bin/env python
|
|
|
|
#
|
|
# A python module that maps printerdata to a dictionary. We define
|
|
# two classes. The printerdata class maps to Get/Set/Enum/DeletePrinterData
|
|
# and the printerdata_ex class maps to Get/Set/Enum/DeletePrinterDataEx
|
|
#
|
|
|
|
#
|
|
# TODO:
|
|
#
|
|
# - Implement __delitem__
|
|
#
|
|
|
|
from samba import spoolss
|
|
|
|
class printerdata:
|
|
def __init__(self, host, creds = {}):
|
|
self.hnd = spoolss.openprinter(host, creds = creds)
|
|
|
|
def keys(self):
|
|
return self.hnd.enumprinterdata().keys()
|
|
|
|
def __getitem__(self, key):
|
|
return self.hnd.getprinterdata(key)['data']
|
|
|
|
def __setitem__(self, key, value):
|
|
# Store as REG_BINARY for now
|
|
self.hnd.setprinterdata({"key": "", "value": key, "type": 3,
|
|
"data": value})
|
|
|
|
class printerdata_ex:
|
|
def __init__(self, host):
|
|
self.host = host
|
|
self.top_level_keys = ["PrinterDriverData", "DsSpooler", "DsDriver",
|
|
"DsUser"]
|
|
|
|
def keys(self):
|
|
return self.top_level_keys
|
|
|
|
def has_key(self, key):
|
|
for k in self.top_level_keys:
|
|
if k == key:
|
|
return 1
|
|
return 0
|
|
|
|
class printerdata_ex_subkey:
|
|
def __init__(self, host, key):
|
|
self.hnd = spoolss.openprinter(host)
|
|
self.key = key
|
|
|
|
def keys(self):
|
|
return self.hnd.enumprinterdataex(self.key).keys()
|
|
|
|
def __getitem__(self, key):
|
|
return self.hnd.getprinterdataex(self.key, key)['data']
|
|
|
|
def __getitem__(self, key):
|
|
return self.printerdata_ex_subkey(self.host, key)
|