mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-10 15:32:38 -07:00
Bump cherrypy from 18.8.0 to 18.9.0 (#2266)
* Bump cherrypy from 18.8.0 to 18.9.0 Bumps [cherrypy](https://github.com/cherrypy/cherrypy) from 18.8.0 to 18.9.0. - [Changelog](https://github.com/cherrypy/cherrypy/blob/main/CHANGES.rst) - [Commits](https://github.com/cherrypy/cherrypy/compare/v18.8.0...v18.9.0) --- updated-dependencies: - dependency-name: cherrypy dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * Update cherrypy==18.9.0 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com> [skip ci]
This commit is contained in:
parent
cfefa928be
commit
faef9a94c4
673 changed files with 159850 additions and 11583 deletions
254
lib/win32/Demos/cerapi.py
Normal file
254
lib/win32/Demos/cerapi.py
Normal file
|
@ -0,0 +1,254 @@
|
|||
# A demo of the Windows CE Remote API
|
||||
#
|
||||
# This connects to a CE device, and interacts with it.
|
||||
|
||||
import getopt
|
||||
import os
|
||||
import sys
|
||||
|
||||
import win32api
|
||||
import win32con
|
||||
import win32event
|
||||
import wincerapi
|
||||
|
||||
|
||||
def DumpPythonRegistry():
|
||||
try:
|
||||
h = wincerapi.CeRegOpenKeyEx(
|
||||
win32con.HKEY_LOCAL_MACHINE,
|
||||
"Software\\Python\\PythonCore\\%s\\PythonPath" % sys.winver,
|
||||
)
|
||||
except win32api.error:
|
||||
print("The remote device does not appear to have Python installed")
|
||||
return 0
|
||||
path, typ = wincerapi.CeRegQueryValueEx(h, None)
|
||||
print("The remote PythonPath is '%s'" % (str(path),))
|
||||
h.Close()
|
||||
return 1
|
||||
|
||||
|
||||
def DumpRegistry(root, level=0):
|
||||
# A recursive dump of the remote registry to test most functions.
|
||||
h = wincerapi.CeRegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, None)
|
||||
level_prefix = " " * level
|
||||
index = 0
|
||||
# Enumerate values.
|
||||
while 1:
|
||||
try:
|
||||
name, data, typ = wincerapi.CeRegEnumValue(root, index)
|
||||
except win32api.error:
|
||||
break
|
||||
print("%s%s=%s" % (level_prefix, name, repr(str(data))))
|
||||
index = index + 1
|
||||
# Now enumerate all keys.
|
||||
index = 0
|
||||
while 1:
|
||||
try:
|
||||
name, klass = wincerapi.CeRegEnumKeyEx(root, index)
|
||||
except win32api.error:
|
||||
break
|
||||
print("%s%s\\" % (level_prefix, name))
|
||||
subkey = wincerapi.CeRegOpenKeyEx(root, name)
|
||||
DumpRegistry(subkey, level + 1)
|
||||
index = index + 1
|
||||
|
||||
|
||||
def DemoCopyFile():
|
||||
# Create a file on the device, and write a string.
|
||||
cefile = wincerapi.CeCreateFile(
|
||||
"TestPython", win32con.GENERIC_WRITE, 0, None, win32con.OPEN_ALWAYS, 0, None
|
||||
)
|
||||
wincerapi.CeWriteFile(cefile, "Hello from Python")
|
||||
cefile.Close()
|
||||
# reopen the file and check the data.
|
||||
cefile = wincerapi.CeCreateFile(
|
||||
"TestPython", win32con.GENERIC_READ, 0, None, win32con.OPEN_EXISTING, 0, None
|
||||
)
|
||||
if wincerapi.CeReadFile(cefile, 100) != "Hello from Python":
|
||||
print("Couldnt read the data from the device!")
|
||||
cefile.Close()
|
||||
# Delete the test file
|
||||
wincerapi.CeDeleteFile("TestPython")
|
||||
print("Created, wrote to, read from and deleted a test file!")
|
||||
|
||||
|
||||
def DemoCreateProcess():
|
||||
try:
|
||||
hp, ht, pid, tid = wincerapi.CeCreateProcess(
|
||||
"Windows\\Python.exe", "", None, None, 0, 0, None, "", None
|
||||
)
|
||||
|
||||
# Not necessary, except to see if handle closing raises an exception
|
||||
# (if auto-closed, the error is suppressed)
|
||||
hp.Close()
|
||||
ht.Close()
|
||||
print("Python is running on the remote device!")
|
||||
except win32api.error as xxx_todo_changeme1:
|
||||
(hr, fn, msg) = xxx_todo_changeme1.args
|
||||
print("Couldnt execute remote process -", msg)
|
||||
|
||||
|
||||
def DumpRemoteMachineStatus():
|
||||
(
|
||||
ACLineStatus,
|
||||
BatteryFlag,
|
||||
BatteryLifePercent,
|
||||
BatteryLifeTime,
|
||||
BatteryFullLifeTime,
|
||||
BackupBatteryFlag,
|
||||
BackupBatteryLifePercent,
|
||||
BackupBatteryLifeTime,
|
||||
BackupBatteryLifeTime,
|
||||
) = wincerapi.CeGetSystemPowerStatusEx()
|
||||
if ACLineStatus:
|
||||
power = "AC"
|
||||
else:
|
||||
power = "battery"
|
||||
if BatteryLifePercent == 255:
|
||||
batPerc = "unknown"
|
||||
else:
|
||||
batPerc = BatteryLifePercent
|
||||
print(
|
||||
"The batteries are at %s%%, and is currently being powered by %s"
|
||||
% (batPerc, power)
|
||||
)
|
||||
|
||||
(
|
||||
memLoad,
|
||||
totalPhys,
|
||||
availPhys,
|
||||
totalPage,
|
||||
availPage,
|
||||
totalVirt,
|
||||
availVirt,
|
||||
) = wincerapi.CeGlobalMemoryStatus()
|
||||
|
||||
print("The memory is %d%% utilized." % (memLoad))
|
||||
print("%-20s%-10s%-10s" % ("", "Total", "Avail"))
|
||||
print("%-20s%-10s%-10s" % ("Physical Memory", totalPhys, availPhys))
|
||||
print("%-20s%-10s%-10s" % ("Virtual Memory", totalVirt, availVirt))
|
||||
print("%-20s%-10s%-10s" % ("Paging file", totalPage, availPage))
|
||||
|
||||
storeSize, freeSize = wincerapi.CeGetStoreInformation()
|
||||
print("%-20s%-10s%-10s" % ("File store", storeSize, freeSize))
|
||||
|
||||
print("The CE temp path is", wincerapi.CeGetTempPath())
|
||||
print("The system info for the device is", wincerapi.CeGetSystemInfo())
|
||||
|
||||
|
||||
def DumpRemoteFolders():
|
||||
# Dump all special folders possible.
|
||||
for name, val in list(wincerapi.__dict__.items()):
|
||||
if name[:6] == "CSIDL_":
|
||||
try:
|
||||
loc = str(wincerapi.CeGetSpecialFolderPath(val))
|
||||
print("Folder %s is at %s" % (name, loc))
|
||||
except win32api.error as details:
|
||||
pass
|
||||
|
||||
# Get the shortcut targets for the "Start Menu"
|
||||
print("Dumping start menu shortcuts...")
|
||||
try:
|
||||
startMenu = str(wincerapi.CeGetSpecialFolderPath(wincerapi.CSIDL_STARTMENU))
|
||||
except win32api.error as details:
|
||||
print("This device has no start menu!", details)
|
||||
startMenu = None
|
||||
|
||||
if startMenu:
|
||||
for fileAttr in wincerapi.CeFindFiles(os.path.join(startMenu, "*")):
|
||||
fileName = fileAttr[8]
|
||||
fullPath = os.path.join(startMenu, str(fileName))
|
||||
try:
|
||||
resolved = wincerapi.CeSHGetShortcutTarget(fullPath)
|
||||
except win32api.error as xxx_todo_changeme:
|
||||
(rc, fn, msg) = xxx_todo_changeme.args
|
||||
resolved = "#Error - %s" % msg
|
||||
print("%s->%s" % (fileName, resolved))
|
||||
|
||||
# print "The start menu is at",
|
||||
# print wincerapi.CeSHGetShortcutTarget("\\Windows\\Start Menu\\Shortcut to Python.exe.lnk")
|
||||
|
||||
|
||||
def usage():
|
||||
print("Options:")
|
||||
print("-a - Execute all demos")
|
||||
print("-p - Execute Python process on remote device")
|
||||
print("-r - Dump the remote registry")
|
||||
print("-f - Dump all remote special folder locations")
|
||||
print("-s - Dont dump machine status")
|
||||
print("-y - Perform asynch init of CE connection")
|
||||
|
||||
|
||||
def main():
|
||||
async_init = bStartPython = bDumpRegistry = bDumpFolders = 0
|
||||
bDumpStatus = 1
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], "apr")
|
||||
except getopt.error as why:
|
||||
print("Invalid usage:", why)
|
||||
usage()
|
||||
return
|
||||
|
||||
for o, v in opts:
|
||||
if o == "-a":
|
||||
bStartPython = bDumpRegistry = bDumpStatus = bDumpFolders = asynch_init = 1
|
||||
if o == "-p":
|
||||
bStartPython = 1
|
||||
if o == "-r":
|
||||
bDumpRegistry = 1
|
||||
if o == "-s":
|
||||
bDumpStatus = 0
|
||||
if o == "-f":
|
||||
bDumpFolders = 1
|
||||
if o == "-y":
|
||||
print("Doing asynch init of CE connection")
|
||||
async_init = 1
|
||||
|
||||
if async_init:
|
||||
event, rc = wincerapi.CeRapiInitEx()
|
||||
while 1:
|
||||
rc = win32event.WaitForSingleObject(event, 500)
|
||||
if rc == win32event.WAIT_OBJECT_0:
|
||||
# We connected.
|
||||
break
|
||||
else:
|
||||
print(
|
||||
"Waiting for Initialize to complete (picture a Cancel button here :)"
|
||||
)
|
||||
else:
|
||||
wincerapi.CeRapiInit()
|
||||
print("Connected to remote CE device.")
|
||||
try:
|
||||
verinfo = wincerapi.CeGetVersionEx()
|
||||
print(
|
||||
"The device is running windows CE version %d.%d - %s"
|
||||
% (verinfo[0], verinfo[1], verinfo[4])
|
||||
)
|
||||
|
||||
if bDumpStatus:
|
||||
print("Dumping remote machine status")
|
||||
DumpRemoteMachineStatus()
|
||||
|
||||
if bDumpRegistry:
|
||||
print("Dumping remote registry...")
|
||||
DumpRegistry(win32con.HKEY_LOCAL_MACHINE)
|
||||
|
||||
if bDumpFolders:
|
||||
print("Dumping remote folder information")
|
||||
DumpRemoteFolders()
|
||||
|
||||
DemoCopyFile()
|
||||
if bStartPython:
|
||||
print("Starting remote Python process")
|
||||
if DumpPythonRegistry():
|
||||
DemoCreateProcess()
|
||||
else:
|
||||
print("Not trying to start Python, as it's not installed")
|
||||
|
||||
finally:
|
||||
wincerapi.CeRapiUninit()
|
||||
print("Disconnected")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue