From 1516bfde61914329e11b6fcf1c7ad6b7723448c0 Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Wed, 3 Feb 2016 21:48:05 +0100 Subject: [PATCH 01/40] Cleanup, merged from micke-work, and fixed issue #129 --- Contents/Code/__init__.py | 2 +- Contents/Code/git.py | 272 ++++++++++++++------ Contents/Code/git.pyc | Bin 18302 -> 0 bytes Contents/Code/logs.py | 44 +++- Contents/Code/pms.py | 20 +- Contents/Code/pms.pyc | Bin 25921 -> 0 bytes Contents/Code/webSrv.py | 13 +- http/changelog.txt | 17 ++ http/jscript/functions.js | 136 +++++++--- http/modules/install/jscript/install.js | 89 ++++--- http/modules/logviewer/jscript/logviewer.js | 4 + 11 files changed, 408 insertions(+), 189 deletions(-) delete mode 100644 Contents/Code/git.pyc delete mode 100644 Contents/Code/pms.pyc diff --git a/Contents/Code/__init__.py b/Contents/Code/__init__.py index 419e491..9e4ab19 100644 --- a/Contents/Code/__init__.py +++ b/Contents/Code/__init__.py @@ -15,7 +15,7 @@ NAME = 'WebTools' ICON = 'WebTools.png' -VERSION = '2.1' +VERSION = '2.2' AUTHTOKEN = '' SECRETKEY = '' diff --git a/Contents/Code/git.py b/Contents/Code/git.py index 4baff7c..cf1a0f4 100644 --- a/Contents/Code/git.py +++ b/Contents/Code/git.py @@ -9,7 +9,7 @@ import datetime # Used for a timestamp in the dict import json -import io, os +import io, os, shutil import plistlib import pms @@ -53,7 +53,6 @@ def reqprocess(self, req): req.set_status(412) req.finish("Unknown function call") - ''' Grap the tornado req, and process it for a PUT request''' def reqprocessPUT(self, req): function = req.get_argument('function', 'missing') @@ -126,7 +125,7 @@ def getUASCacheList(): Log.Debug('Exception in Migrate/getUASCacheList : ' + str(e)) return '' - # Grap indentifier from plist file + # Grap indentifier from plist file and timestamp def getIdentifier(pluginDir): try: pFile = Core.storage.join_path(self.PLUGIN_DIR, pluginDir, 'Contents', 'Info.plist') @@ -134,8 +133,10 @@ def getIdentifier(pluginDir): createStamp = datetime.datetime.fromtimestamp(os.path.getmtime(pFile)).strftime('%Y-%m-%d %H:%M:%S') return (pl['CFBundleIdentifier'], createStamp) except Exception, e: - Log.Debug('Exception in Migrate/getIdentifier : ' + str(e)) - return '' + errMsg = str(e) + '\nfor something in directory: ' + Core.storage.join_path(self.PLUGIN_DIR, pluginDir) + errMsg = errMsg + '\nSkipping migration of directory' + Log.Error('Exception in Migrate/getIdentifier : ' + errMsg) + pass # Main call Log.Debug('Migrate function called') @@ -152,67 +153,71 @@ def getIdentifier(pluginDir): migratedBundles = {} for pluginDir in dirs: if pluginDir.endswith('.bundle'): - # It's a bundle - if pluginDir.upper() not in knownBundles: - # It's unknown - if pluginDir not in self.IGNORE_BUNDLE: - Log.Debug('About to migrate %s' %(pluginDir)) - # This we need to migrate - (target, dtStamp) = getIdentifier(pluginDir) - # try and see if part of uas Cache - uasListjson = getUASCacheList() - bFound = False - for git in uasListjson: - if target == uasListjson[git]['identifier']: - Log.Debug('Found %s is part of uas' %(target)) - targetGit = {} - targetGit['description'] = uasListjson[git]['description'] - targetGit['title'] = uasListjson[git]['title'] - targetGit['bundle'] = uasListjson[git]['bundle'] - targetGit['branch'] = uasListjson[git]['branch'] - targetGit['identifier'] = uasListjson[git]['identifier'] - targetGit['type'] = uasListjson[git]['type'] - targetGit['icon'] = uasListjson[git]['icon'] - targetGit['date'] = dtStamp - targetGit['supporturl'] = uasListjson[git]['supporturl'] - Dict['installed'][git] = targetGit - Log.Debug('Dict stamped with the following install entry: ' + git + ' - ' + str(targetGit)) - # Now update the PMS-AllBundleInfo Dict as well - Dict['PMS-AllBundleInfo'][git] = targetGit - Dict.Save() - migratedBundles[git] = targetGit - bFound = True - pms.updateUASTypesCounters() - break - if not bFound: - Log.Debug('Found %s is sadly not part of uas' %(pluginDir)) - vFile = Core.storage.join_path(self.PLUGIN_DIR, pluginDir, 'Contents', 'VERSION') - if os.path.isfile(vFile): - Log.Debug(pluginDir + ' is an official bundle, so skipping') - else: - git = {} - git['title'] = pluginDir[:-7] - git['description'] = '' - git['branch'] = '' - git['bundle'] = pluginDir - git['identifier'] = target - git['type'] = ['Unknown'] - git['icon'] = '' - git['date'] = dtStamp - Dict['installed'][target] = git - # Now update the PMS-AllBundleInfo Dict as well - Dict['PMS-AllBundleInfo'][target] = git - migratedBundles[target] = git - Log.Debug('Dict stamped with the following install entry: ' + pluginDir + ' - ' + str(git)) - Dict.Save() - pms.updateUASTypesCounters() + if not pluginDir.startswith('.'): + # It's a bundle + if pluginDir.upper() not in knownBundles: + # It's unknown + if pluginDir not in self.IGNORE_BUNDLE: + Log.Debug('About to migrate %s' %(pluginDir)) + # This we need to migrate + try: + (target, dtStamp) = getIdentifier(pluginDir) + except Exception, e: + continue + # try and see if part of uas Cache + uasListjson = getUASCacheList() + bFound = False + for git in uasListjson: + if target == uasListjson[git]['identifier']: + Log.Debug('Found %s is part of uas' %(target)) + targetGit = {} + targetGit['description'] = uasListjson[git]['description'] + targetGit['title'] = uasListjson[git]['title'] + targetGit['bundle'] = uasListjson[git]['bundle'] + targetGit['branch'] = uasListjson[git]['branch'] + targetGit['identifier'] = uasListjson[git]['identifier'] + targetGit['type'] = uasListjson[git]['type'] + targetGit['icon'] = uasListjson[git]['icon'] + targetGit['date'] = dtStamp + targetGit['supporturl'] = uasListjson[git]['supporturl'] + Dict['installed'][git] = targetGit + Log.Debug('Dict stamped with the following install entry: ' + git + ' - ' + str(targetGit)) + # Now update the PMS-AllBundleInfo Dict as well + Dict['PMS-AllBundleInfo'][git] = targetGit + Dict.Save() + migratedBundles[git] = targetGit + bFound = True + pms.updateUASTypesCounters() + break + if not bFound: + Log.Debug('Found %s is sadly not part of uas' %(pluginDir)) + vFile = Core.storage.join_path(self.PLUGIN_DIR, pluginDir, 'Contents', 'VERSION') + if os.path.isfile(vFile): + Log.Debug(pluginDir + ' is an official bundle, so skipping') + else: + git = {} + git['title'] = pluginDir[:-7] + git['description'] = '' + git['branch'] = '' + git['bundle'] = pluginDir + git['identifier'] = target + git['type'] = ['Unknown'] + git['icon'] = '' + git['date'] = dtStamp + Dict['installed'][target] = git + # Now update the PMS-AllBundleInfo Dict as well + Dict['PMS-AllBundleInfo'][target] = git + migratedBundles[target] = git + Log.Debug('Dict stamped with the following install entry: ' + pluginDir + ' - ' + str(git)) + Dict.Save() + pms.updateUASTypesCounters() Log.Debug('Migrated: ' + str(migratedBundles)) req.clear() req.set_status(200) req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish(json.dumps(migratedBundles)) except Exception, e: - Log.Debug('Fatal error happened in migrate: ' + str(e)) + Log.Critical('Fatal error happened in migrate: ' + str(e)) req.clear() req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') @@ -228,7 +233,7 @@ def uasTypes(self, req): req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish(json.dumps(Dict['uasTypes'])) except Exception, e: - Log.Debug('Exception in uasTypes: ' + str(e)) + Log.Critical('Exception in uasTypes: ' + str(e)) req.clear() req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') @@ -256,7 +261,21 @@ def updateUASCache(self, req): # Target Directory targetDir = Core.storage.join_path(self.PLUGIN_DIR, NAME + '.bundle', 'http', 'uas') # Force creation, if missing - Core.storage.ensure_dirs(targetDir) + try: + Core.storage.ensure_dirs(targetDir) + except Exception, e: + errMsg = str(e) + if 'Errno 13' in errMsg: + errMsg = errMsg + '\n\nLooks like permissions are not correct, cuz we where denied access\n' + errMsg = errMsg + 'to create a needed directory.\n\n' + errMsg = errMsg + 'If running on Linux, you might have to issue:\n' + errMsg = errMsg + 'sudo chown plex:plex ./WebTools.bundle -R' + Log.Critical('Exception in updateUASCache ' + str(e)) + req.clear() + req.set_status(500) + req.set_header('Content-Type', 'application/json; charset=utf-8') + req.finish('Exception in updateUASCache: ' + errMsg) + return req # Grap file from Github zipfile = Archive.ZipFromURL(self.UAS_URL+ '/archive/master.zip') for filename in zipfile: @@ -270,7 +289,7 @@ def updateUASCache(self, req): Core.storage.save(path, data) except Exception, e: bError = True - Log.Debug("Unexpected Error") + Log.Critical("Unexpected Error " + str(e)) else: # We got a directory here Log.Debug(filename.split('/')[-2]) @@ -282,7 +301,7 @@ def updateUASCache(self, req): Core.storage.ensure_dirs(path) except Exception, e: bError = True - Log.Debug("Unexpected Error") + Log.Critical("Unexpected Error " + str(e)) # Update the AllBundleInfo as well pms.updateAllBundleInfoFromUAS() pms.updateUASTypesCounters() @@ -295,7 +314,7 @@ def updateUASCache(self, req): req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish('UASCache is up to date') except Exception, e: - Log.Debug('Exception in updateUASCache ' + str(e)) + Log.Critical('Exception in updateUASCache ' + str(e)) req.clear() req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') @@ -324,7 +343,6 @@ def getSavePath(self, plugin, path): ''' Download install/update from GitHub ''' def install(self, req): - ''' Grap bundle name ''' def grapBundleName(url): gitName = url.rsplit('/', 1)[-1] @@ -337,6 +355,10 @@ def grapBundleName(url): ''' Save Install info to the dict ''' def saveInstallInfo(url, bundleName): + # If this is WebTools itself, then don't save + if 'WebTools.bundle' in bundleName: + return + # Get the dict with the installed bundles, and init it if it doesn't exists if not 'installed' in Dict: Dict['installed'] = {} @@ -385,6 +407,25 @@ def saveInstallInfo(url, bundleName): ''' Download the bundle ''' def downloadBundle2tmp(url, bundleName): + # Helper function + def removeEmptyFolders(path, removeRoot=True): + 'Function to remove empty folders' + if not os.path.isdir(path): + return + # remove empty subfolders + files = os.listdir(path) + if len(files): + for f in files: + fullpath = os.path.join(path, f) + if os.path.isdir(fullpath): + removeEmptyFolders(fullpath) + # if folder empty, delete it + files = os.listdir(path) + if len(files) == 0 and removeRoot: + Log.Debug('Removing empty directory: ' + path) + os.rmdir(path) + + # Main try: zipPath = url + '/archive/master.zip' # Grap file from Github @@ -393,48 +434,116 @@ def downloadBundle2tmp(url, bundleName): Core.storage.ensure_dirs(Core.storage.join_path(self.PLUGIN_DIR, bundleName)) # Make sure it's actually a bundle channel bError = True + bUpgrade = False + instFiles = [] for filename in zipfile: + # Make a list of all files and dirs in the zip + instFiles.append(filename) if '/Contents/Info.plist' in filename: - # We found the info.plist file here, but is the dir level okay? - count = filename.count('/') - if count == 2: - bError = False - else: - Log.Critical('Tried to install ' + bundleName + ' but dir levels did not match') + pos = filename.find('/Contents/') + cutStr = filename[:pos] + bError = False + # so we hit the Info.plist file, and now we can make sure, that/if this is an upgrade or not + # So let's grap the identifier from the info file of the bundle to be migrated + # We start by temporary save that as Plug-ins/WT-tmp.plist + Core.storage.save(self.PLUGIN_DIR + '/WT-tmp.plist', zipfile[filename]) + # Now read out the identifier + bundleId = plistlib.readPlist(self.PLUGIN_DIR + '/WT-tmp.plist')['CFBundleIdentifier'] + Log.Debug('Identifier of the bundle to be installed is: ' + bundleId) + # Then nuke the file again + os.remove(self.PLUGIN_DIR + '/WT-tmp.plist') + # And finally check if it's already installed + for bundle in Dict['installed']: + if Dict['installed'][bundle]['identifier'] == bundleId: + bUpgrade = True + Log.Debug('Install is an upgrade') + break + if bUpgrade: + # Since this is an upgrade, we need to check, if the dev wants us to delete the Cache directory + if url in Dict['installed'].keys(): + CacheDir = Core.storage.join_path(Core.app_support_path, 'Plug-in Support', 'Caches', bundleId) + if 'DeleteCacheDir' in Dict['PMS-AllBundleInfo'][url]: + print 'Ged111', Dict['PMS-AllBundleInfo'][url]['DeleteCacheDir'] + if Dict['PMS-AllBundleInfo'][url]['DeleteCacheDir']: + Log.Info('Deleting the Cache directory ' + CacheDir) + shutil.rmtree(CacheDir) + else: + Log.Info('Keeping the Cache directory ' + CacheDir) + # Since this is an upgrade, we need to check, if the dev wants us to delete the Data directory + if url in Dict['installed'].keys(): + DataDir = Core.storage.join_path(Core.app_support_path, 'Plug-in Support', 'Data', bundleId) + if 'DeleteDataDir' in Dict['PMS-AllBundleInfo'][url]: + if Dict['PMS-AllBundleInfo'][url]['DeleteDataDir']: + Log.Info('Deleting the Data directory ' + DataDir) + shutil.rmtree(DataDir) + else: + Log.Info('Keeping the Data directory ' + DataDir) + # It's an upgrade, so we need to store a list of files that we install here + newFiles = [] + for fileName in instFiles: + newFiles.append(fileName.replace(cutStr, '')) if bError: Core.storage.remove_tree(Core.storage.join_path(self.PLUGIN_DIR, bundleName)) Log.Debug('The bundle downloaded is not a Plex Channel bundle!') raise ValueError('The bundle downloaded is not a Plex Channel bundle!') bError = False + if not bUpgrade: + presentFiles = [] for filename in zipfile: # Walk contents of the zip, and extract as needed data = zipfile[filename] if not str(filename).endswith('/'): - # Pure file, so save it - path = self.getSavePath(bundleName, filename) + # Pure file, so save it + path = self.getSavePath(bundleName, filename.replace(cutStr, '')) Log.Debug('Extracting file' + path) try: Core.storage.save(path, data) except Exception, e: bError = True - Log.Debug('Exception happend in downloadBundle2tmp: ' + str(e)) + Log.Critical('Exception happend in downloadBundle2tmp: ' + str(e)) else: # We got a directory here Log.Debug(filename.split('/')[-2]) if not str(filename.split('/')[-2]).startswith('.'): # Not hidden, so let's create it - path = self.getSavePath(bundleName, filename) + path = self.getSavePath(bundleName, filename.replace(cutStr, '')) Log.Debug('Extracting folder ' + path) try: Core.storage.ensure_dirs(path) except Exception, e: bError = True - Log.Debug('Exception happend in downloadBundle2tmp: ' + str(e)) + Log.Critical('Exception happend in downloadBundle2tmp: ' + str(e)) + if bUpgrade: + # Now we need to nuke files that should no longer be there! + for root, dirs, files in os.walk(bundleName): + for fname in files: + if Core.storage.join_path(root, fname).replace(bundleName, '') not in newFiles: + Log.Debug('Removing not needed file: ' + Core.storage.join_path(root, fname)) + os.remove(Core.storage.join_path(root, fname)) + # And now time to swipe empty directories + removeEmptyFolders(bundleName) if not bError: # Install went okay, so save info saveInstallInfo(url, bundleName) + # Install went okay, so let's make sure it get's registred + if bUpgrade: + try: + pFile = Core.storage.join_path(self.PLUGIN_DIR, bundleName, 'Contents', 'Info.plist') + pl = plistlib.readPlist(pFile) + HTTP.Request('http://127.0.0.1:32400/:/plugins/%s/restart' % pl['CFBundleIdentifier'], cacheTime=0, immediate=True) + except: + try: + HTTP.Request('http://127.0.0.1:32400/:/plugins/com.plexapp.system/restart', immediate=True) + except: + pass + else: + try: + HTTP.Request('http://127.0.0.1:32400/:/plugins/com.plexapp.system/restart', immediate=True) + except: + pass return True - except: + except Exception, e: + Log.Critical('Exception in downloadBundle2tmp: ' + str(e)) return False # Starting install main @@ -456,6 +565,7 @@ def downloadBundle2tmp(url, bundleName): req.finish('All is cool') return req else: + Log.Critical('Fatal error happened in install for :' + url) req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish('Fatal error happened in install for :' + url) @@ -490,7 +600,7 @@ def getLastUpdateTime(self, req, UAS=False, url=''): req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish(str(response)) except Exception, e: - Log.Debug('Fatal error happened in getLastUpdateTime for :' + url + ' was: ' + str(e)) + Log.Critical('Fatal error happened in getLastUpdateTime for :' + url + ' was: ' + str(e)) req.clear() req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') @@ -518,7 +628,7 @@ def getListofBundles(self, req): req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish(json.dumps(results)) except: - Log.Debug('Fatal error happened in getListofBundles') + Log.Critical('Fatal error happened in getListofBundles') req.clear() req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') @@ -563,7 +673,7 @@ def getReleaseInfo(self, req): req.finish(response) Log.Debug('Ending getReleaseInfo') except: - Log.Debug('Fatal error happened in getReleaseInfo') + Log.Critical('Fatal error happened in getReleaseInfo') req.clear() req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') diff --git a/Contents/Code/git.pyc b/Contents/Code/git.pyc deleted file mode 100644 index 8f9d367b3d228fe021190e27a8058d2893110697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18302 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 JFn&XY{{@-d)=~ff diff --git a/Contents/Code/logs.py b/Contents/Code/logs.py index 9b77ffc..820966c 100644 --- a/Contents/Code/logs.py +++ b/Contents/Code/logs.py @@ -9,17 +9,33 @@ import shutil import time import json -import os +import os, sys import zipfile class logs(object): # Defaults used by the rest of the class def __init__(self): - # Check if Log directory has been overwritten try: - self.LOGDIR = os.environ['PLEX_MEDIA_SERVER_LOG_DIR'] - except: - self.LOGDIR = os.path.join(Core.app_support_path, 'Logs') + if 'PLEX_MEDIA_SERVER_LOG_DIR' in os.environ: + self.LOGDIR = os.environ['PLEX_MEDIA_SERVER_LOG_DIR'] + elif sys.platform.find('linux') == 0 and 'PLEXLOCALAPPDATA' in os.environ: + self.LOGDIR = os.path.join(os.environ['PLEXLOCALAPPDATA'], 'Plex Media Server', 'Logs') + elif sys.platform == 'win32': + if 'PLEXLOCALAPPDATA' in os.environ: + key = 'PLEXLOCALAPPDATA' + else: + key = 'LOCALAPPDATA' + self.LOGDIR = os.path.join(os.environ[key], 'Plex Media Server', 'Logs') + else: + self.LOGDIR = os.path.join(os.environ['HOME'], 'Library', 'Logs', 'Plex Media Server') + if not os.direxists(self.LOGDIR): + self.LOGDIR = os.path.join(Core.app_support_path, 'Logs') + except Exception, e: + Log.Debug('Fatal error happened in Logs list: ' + str(e)) + req.clear() + req.set_status(500) + req.set_header('Content-Type', 'application/json; charset=utf-8') + req.finish('Fatal error happened in Logs list: ' + str(e)) Log.Debug('Log Root dir is: ' + self.LOGDIR) ''' Grap the tornado req for a Get, and process it ''' @@ -67,12 +83,12 @@ def entry(self, req): req.set_status(200) req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish('Entry logged') - except: - Log.Debug('Fatal error happened in Logs entry') + except Exception, e: + Log.Debug('Fatal error happened in Logs entry: ' + str(e)) req.clear() req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') - req.finish('Fatal error happened in Logs entry') + req.finish('Fatal error happened in Logs entry: ' + str(e)) ''' This metode will return a list of logfiles. accepts a filter parameter ''' def list(self, req): @@ -96,12 +112,12 @@ def list(self, req): req.set_status(200) req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish(json.dumps(sorted(retFiles))) - except: - Log.Debug('Fatal error happened in Logs list') + except Exception, e: + Log.Debug('Fatal error happened in Logs list: ' + str(e)) req.clear() req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') - req.finish('Fatal error happened in Logs list') + req.finish('Fatal error happened in Logs list: ' + str(e)) ''' This will return contents of the logfile as an array. Req. a parameter named fileName ''' def show(self, req): @@ -129,12 +145,12 @@ def show(self, req): req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish(json.dumps(retFile)) return req - except: - Log.Debug('Fatal error happened in Logs show') + except Exception, e: + Log.Debug('Fatal error happened in Logs show: ' + str(e)) req.clear() req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') - req.finish('Fatal error happened in Logs show') + req.finish('Fatal error happened in Logs show: ' + str(e)) ''' This will download a zipfile with the complete log directory. if parameter fileName is specified, only that file will be downloaded, and not zipped''' def download(self, req): diff --git a/Contents/Code/pms.py b/Contents/Code/pms.py index d9b47a3..bf790e9 100644 --- a/Contents/Code/pms.py +++ b/Contents/Code/pms.py @@ -255,12 +255,12 @@ def removeBundle(bundleName, bundleIdentifier, url): bundleInstallDir = Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name, pluginDir) Log.Debug('Bundle directory name digested as: %s' %(bundleInstallDir)) shutil.rmtree(bundleInstallDir) - except: - Log.Debug("Unable to remove the bundle directory.") + except Exception, e: + Log.Critical("Unable to remove the bundle directory: " + str(e)) req.clear() req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') - req.finish('Fatal error happened when trying to remove the bundle directory.') + req.finish('Fatal error happened when trying to remove the bundle directory: ' + str(e)) try: shutil.rmtree(bundleDataDir) except: @@ -283,14 +283,18 @@ def removeBundle(bundleName, bundleIdentifier, url): Dict['installed'].pop(url, None) # remove entry from PMS-AllBundleInfo dict if url.startswith('https://'): - # UAS bundle, so only nuke date field - git = Dict['PMS-AllBundleInfo'][url] - git['date'] = '' - Dict['PMS-AllBundleInfo'][url] = git - Dict.Save() + if 'Unknown' in Dict['PMS-AllBundleInfo'][url]['type']: + # Manual install or migrated, so nuke the entire key + Dict['PMS-AllBundleInfo'].pop(url, None) + else: + # UAS bundle, so only nuke date field + git = Dict['PMS-AllBundleInfo'][url] + git['date'] = '' + Dict['PMS-AllBundleInfo'][url] = git else: # Manual install or migrated, so nuke the entire key Dict['PMS-AllBundleInfo'].pop(url, None) + Dict.Save() updateUASTypesCounters() # TODO diff --git a/Contents/Code/pms.pyc b/Contents/Code/pms.pyc deleted file mode 100644 index b924f83f0f50415ef1337b44617b43140dce9b41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25921 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 diff --git a/Contents/Code/webSrv.py b/Contents/Code/webSrv.py index 1d672b3..ca60798 100644 --- a/Contents/Code/webSrv.py +++ b/Contents/Code/webSrv.py @@ -27,6 +27,7 @@ # TODO #from importlib import import_module +# SNIFF....Tornado is V1.0.0, meaning no WebSocket :-( # Path to http folder within the bundle ACTUALPATH = os.path.join(Core.app_support_path, 'Plug-ins', NAME + '.bundle', 'http') @@ -126,8 +127,8 @@ def get(self, **params): class webTools2Handler(BaseHandler): #******* GET REQUEST ********* - @authenticated -# print '********** AUTH DISABLED WebSRV WebTools2 GET' +# @authenticated + print '********** AUTH DISABLED WebSRV WebTools2 GET' # Get Request def get(self, **params): @@ -199,8 +200,8 @@ def post(self, **params): return #******* DELETE REQUEST ********* - @authenticated -# print '********** AUTH DISABLED WebSRV WebTools2 DELETE' +# @authenticated + print '********** AUTH DISABLED WebSRV WebTools2 DELETE' def delete(self, **params): module = self.get_argument('module', 'missing') if module == 'missing': @@ -219,8 +220,8 @@ def delete(self, **params): return #******* PUT REQUEST ********* - @authenticated -# print '********** AUTH DISABLED WebSRV WebTools2 PUT' +# @authenticated + print '********** AUTH DISABLED WebSRV WebTools2 PUT' def put(self, **params): module = self.get_argument('module', 'missing') diff --git a/http/changelog.txt b/http/changelog.txt index 22464a4..2343ced 100644 --- a/http/changelog.txt +++ b/http/changelog.txt @@ -1,3 +1,20 @@ +V2.2-DEV-2016-02-02: +UAS: + Reverting Issue #119 because of reported issue with locked interface. + Now displays message regarding permissions. (Issue #124) + Now showing Check for updates for everything that has a repolink. (Issue #118, Issue #127) +WebTools: + Moved Changelog to Options menu (Issue #128) + +V2.2-DEV-2016-01-26: +LogViewer: + Now highlights exception in the same was as critical. (Issue #108) +WebTools: + Now highlights exception in the same was as critical when viewing logs. (Issue #108) + Added "View Changelog" under Logs menu. This allows viewing of entire changelog. (Issue #128) +UAS: + When selecting "ShowOnlyInstalled", only categories with installed plugins are shown. (Issue #119) + V2.0-RELEASE-2016-01-14: WebTools: New modules, LogViewer and Unsupported Appstore diff --git a/http/jscript/functions.js b/http/jscript/functions.js index 5322d31..80ac700 100644 --- a/http/jscript/functions.js +++ b/http/jscript/functions.js @@ -49,6 +49,7 @@ webtools.list_modules.inline([ $('#OptionsMenu').append('
  • Change Password
  • '); } $('#OptionsMenu').append('
  • Check for Webtools Updates
  • '); + $('#OptionsMenu').append('
  • View Changelog
  • '); webtools.defaultoptionsmenu = $('#OptionsMenu').html(); callback('VersionFetch:Success', activatemodulename); }, @@ -222,6 +223,7 @@ webtools.listlogfiles = function(callback, activatemodulename) { $('#LogfilesMenu').append('
  • Download all logfiles as Zip
  • '); $('#LogfilesMenu').append('
  • Refresh Logfilelist
  • '); + if (typeof(callback) != 'undefined') { callback('LogfileNamesFetch:Success', activatemodulename); } else { @@ -259,57 +261,107 @@ webtools.log = function(LogEntry, Source) { webtools.show_log = function(filename) { webtools.loading(); - $('#ContentHeader').html('Logfile: ' + filename); + $('#ContentBody').html('Fetching Logfile..'); $('#ContentFoot').html(''); $('#navfoot').html(''); + if (filename == 'changelog') { + $('#ContentHeader').html('Viewing Changelog'); + $.ajax({ + url: '/changelog.txt', + cache: false, + dataType: 'text', + success: function(logs) { + logs = logs.split('\n'); + //$('#ContentBody').html(logs.join('
    ')); + var logtable = ''; + //logtable += ''; + if (logs.length > 0) { + for (var i = 0; i < logs.length; i++) { + if (logs[i].length === 0) { + logs[i] = ' '; + } - $.ajax({ - url: '/webtools2', - data: { - 'module': 'logs', - 'function': 'show', - 'fileName': filename - }, - type: 'GET', - cache: false, - dataType: 'JSON', - success: function(logs) { - //$('#ContentBody').html(logs.join('
    ')); - var logtable = '
    Changelog
    '; - logtable += ''; - if (logs.length > 0) { - for (var i = 0; i < logs.length; i++) { - - var tdnumber = 'bg-warning'; - var tdtext = ''; - - if (logs[i].toLowerCase().indexOf('critical') != -1) { - tdnumber = 'bg-danger'; - tdtext = 'bg-danger'; - } - if (logs[i].toLowerCase().indexOf('error') != -1) { - tdnumber = 'bg-info'; - tdtext = 'bg-info'; - } + if (logs[i] != '####') { + logs[i] = logs[i].replace('\t', ''); + if (logs[i].search(/\d\d\d\d[-]\d\d[-]\d\d/) !== -1) { + //logs[i] = '' + logs[i] + ''; + logtable += ''; + } else if (logs[i][logs[i].length - 1] == ':') { + logtable += ''; + } else { + logtable += ''; + } - logtable += ''; + } + } + } else { + logtable += ''; } - } else { - logtable += ''; + logtable += '
    Row#Logentry
    ' + logs[i] + '
    ' + logs[i] + '
    ' + logs[i] + '
    #' + (i + 1) + '' + logs[i] + '
    #-Empty file
    #-Empty file
    '; + + $('#ContentBody').html(logtable); + $('#ContentFoot').html(''); + $('.modal').modal('hide'); + }, + error: function(logs) { + $('#ContentBody').html(logs); + $('.modal').modal('hide'); } - logtable += ''; + }); + } else { + $('#ContentHeader').html('Logfile: ' + filename); - $('#ContentBody').html(logtable); - $('#ContentFoot').html('Download Logfile'); - $('.modal').modal('hide'); - }, - error: function(logs) { - $('#ContentBody').html(logs); - $('.modal').modal('hide'); - } - }); + $.ajax({ + url: '/webtools2', + data: { + 'module': 'logs', + 'function': 'show', + 'fileName': filename + }, + type: 'GET', + cache: false, + dataType: 'JSON', + success: function(logs) { + //$('#ContentBody').html(logs.join('
    ')); + var logtable = ''; + logtable += ''; + if (logs.length > 0) { + for (var i = 0; i < logs.length; i++) { + + var tdnumber = 'bg-warning'; + var tdtext = ''; + + if (logs[i].toLowerCase().indexOf('critical') != -1) { + tdnumber = 'bg-danger'; + tdtext = 'bg-danger'; + } + if (logs[i].toLowerCase().indexOf('exception') != -1) { + tdnumber = 'bg-danger'; + tdtext = 'bg-danger'; + } + if (logs[i].toLowerCase().indexOf('error') != -1) { + tdnumber = 'bg-info'; + tdtext = 'bg-info'; + } + + logtable += ''; + } + } else { + logtable += ''; + } + logtable += '
    Row#Logentry
    #' + (i + 1) + '' + logs[i] + '
    #-Empty file
    '; + $('#ContentBody').html(logtable); + $('#ContentFoot').html('Download Logfile'); + $('.modal').modal('hide'); + }, + error: function(logs) { + $('#ContentBody').html(logs); + $('.modal').modal('hide'); + } + }); + } }; diff --git a/http/modules/install/jscript/install.js b/http/modules/install/jscript/install.js index f4a3604..ca244f4 100644 --- a/http/modules/install/jscript/install.js +++ b/http/modules/install/jscript/install.js @@ -50,18 +50,19 @@ install.start = function() { 'Example: https://github.com/ukdtom/plex2csv.bundle

    We do not offer any support for these channels. We only provide a installation method.

    ', '
    ' ]; - + var submenu = ['', - '', - '', - '', - '', - '', - '', - '', - '', - ''] - + '', + '', + '', + '', + '', + '', + '', + '', + '' + ] + $('#ContentBody').html(body.join('
    ')); $('#ContentFoot').html(''); $('#install_availablechannels').html(submenu.join('\n')); @@ -92,8 +93,6 @@ install.start = function() { launcher.start(); }; - - install.show_options = function() { webtools.loading(); $('#myModalLabel').html('Preferences'); @@ -131,6 +130,7 @@ install.installfromgit = function(github) { $('#myModalFoot').html(''); }, error: function(data) { + console.log(data); $('#myModalBody').html('An error occured, please check the logs.
    ' + '
    Errorinfo:' + '
    Requested URL: ' + this.url + '
    Error Code/Message: ' + data.status + '/' + data.statusText); $('#myModalFoot').html(''); } @@ -167,8 +167,13 @@ install.loadChannels = function(InitalRun) { }, error: function(data) { data.url = this.url; + webtools.log('Failed calling UpdateUASCache. Received: ' + data); - webtools.display_error('Failed updating UAS Cache. Reload the page and try again.
    If the error persists please restart the server.
    Contact devs on the Plex forums if it occurs again.', data); + if (data.responseText.indexOf('Errno 13') != -1) { + webtools.display_error('Failed updating UAS Cache. Looks like permissions are not correct, because we where denied access to create a needed directory.
    If running on Linux, you might have to issue: sudo chown plex:plex ./WebTools.bundle -R' , data); + } else { + webtools.display_error('Failed updating UAS Cache. Reload the page and try again.
    If the error persists please restart the server.
    Contact devs on the Plex forums if it occurs again.
    ' , data); + } loader.abort(); } }) @@ -193,16 +198,16 @@ install.loadChannels = function(InitalRun) { data[key].key = key; tempArray.push(data[key]); } - + tempArray.sort(webtools.dynamicSort('title')); - + install.allBundles = {}; - tempArray.forEach(function (object) { + tempArray.forEach(function(object) { var tempkey = object.key; delete object.key; install.allBundles[tempkey] = object; }) - + callback(); }, error: function(data) { @@ -236,7 +241,7 @@ install.loadChannels = function(InitalRun) { }) } ], function() { - + var menu = ''; var checked = ''; if (install.showOnlyInstalled === true) { @@ -247,10 +252,12 @@ install.loadChannels = function(InitalRun) { menu += ' ' for (var categorykey in install.categories) { - if ((typeof(elementToHighlight) == 'undefined') && (categorykey.trim() == 'Application')) { - menu += ' ' - } else { - menu += ' ' + if ((install.categories[categorykey].installed > 0) || (install.showOnlyInstalled === false)) { + if ((typeof(elementToHighlight) == 'undefined') && (categorykey.trim() == 'Application')) { + menu += ' ' + } else { + menu += ' ' + } } } @@ -276,7 +283,7 @@ install.loadChannels = function(InitalRun) { */ install.showChannels = function(button, type, page, highlight) { webtools.loading(); - + if (typeof(highlight) != 'undefined') { $('#OnlyShowInstalledCheckbox').prop('checked', false); install.showOnlyInstalled = $('#OnlyShowInstalledCheckbox').prop('checked'); @@ -353,26 +360,34 @@ install.showChannels = function(button, type, page, highlight) { for (var i = start; i < end; i++) { var key = install.channelstoshow[i]; - var installlink = ''; + var installlink = ''; var isInstalled = false; var installDate = ''; - var rowspan = 2; - var repolink = '' + key + ''; + var rowspan = 3; + var repolink = ''; if ((typeof(install.allBundles[key].date) != 'undefined') && (install.allBundles[key].date.length > 0)) { isInstalled = true; rowspan = 3; - installlink = ''; + installlink = ''; + if (((install.showOnlyInstalled === true) && (isInstalled === true)) || (install.showOnlyInstalled === false)) { var iconurl = 'icons/NoIcon.png'; var supporturl = '-'; @@ -394,9 +409,9 @@ install.showChannels = function(button, type, page, highlight) { newEntry.push('') newEntry.push('') - if (isInstalled === true) { + //if (isInstalled === true) { newEntry.push('') - } + //} newEntry.push('
    ' + install.allBundles[key].description + '
    Categories:  ' + install.allBundles[key].type + ' 
    Repo:  ' + repolink + ' 
    Support:  ' + supporturl + ' 
    Installed:  ' + install.allBundles[key].date + ' 
    Latest Update on Github:  ' + updateTime + ' 
    '); newEntry.push(installlink); newEntry.push(''); @@ -419,6 +434,7 @@ install.switchShowInstalled = function() { install.showOnlyInstalled = $('#OnlyShowInstalledCheckbox').prop('checked'); if (typeof($('#channelmenu>button.btn-active').html()) != 'undefined') { install.showChannels($('#channelmenu>button.btn-active'), $('#channelmenu>button.btn-active').attr('id')); + //install.loadChannels(); } } @@ -521,7 +537,7 @@ install.massiveupdatechecker = function() { $('#myModalLabel').html('Massive Updater'); $('#myModalBody').html('
    '); $('#myModalFoot').html(''); - + $('#OptionsTable').html('Searching for updates'); $('#OptionsModalAlert').hide(); $('#UpdateClose').prop('disabled', true); @@ -743,5 +759,4 @@ install.quickjump = function(key) { var elementToHighlight = $('#All'); install.showChannels(elementToHighlight, elementToHighlight.attr('id'), targetPage, key); -} - +} \ No newline at end of file diff --git a/http/modules/logviewer/jscript/logviewer.js b/http/modules/logviewer/jscript/logviewer.js index 99d3db9..a1f8836 100644 --- a/http/modules/logviewer/jscript/logviewer.js +++ b/http/modules/logviewer/jscript/logviewer.js @@ -74,6 +74,10 @@ logviewer.viewlogfile = function(filename) { tdnumber = 'bg-danger'; tdtext = 'bg-danger'; } + if (data[i].toLowerCase().indexOf('exception') != -1) { + tdnumber = 'bg-danger'; + tdtext = 'bg-danger'; + } if (data[i].toLowerCase().indexOf('error') != -1) { tdnumber = 'bg-info'; tdtext = 'bg-info'; From 342f6e0a3b9bf71d84278d4a29ac2db5847c58bc Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Mon, 8 Feb 2016 20:06:16 +0100 Subject: [PATCH 02/40] Fixed issue #135 --- Contents/Code/Docs/webtools-README_DEVS.odt | Bin 95186 -> 95232 bytes Contents/Code/git.py | 1 - Contents/Code/plextvhelper.py | 7 +- Contents/Code/webSrv.py | 73 +++++++++++++++----- 4 files changed, 60 insertions(+), 21 deletions(-) diff --git a/Contents/Code/Docs/webtools-README_DEVS.odt b/Contents/Code/Docs/webtools-README_DEVS.odt index 5b9b86edb338677787c6c246e401dec9c6bbd825..b781afed53d26438c819bb9ee767f82e00bdedc5 100644 GIT binary patch delta 23334 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 delta 23316 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 username") return req pwd = req.get_argument('pwd', '') if pwd == '': + Log.Error('Missing password') req.clear() req.set_status(412) req.finish("Missing password") @@ -44,9 +46,10 @@ def login(self, req): self.myHeader['Authorization'] = 'Basic ' + authString try: token = XML.ElementFromURL(self.loginUrl, headers=self.myHeader, method='POST').xpath('//user')[0].get('authenticationToken') - Log.Debug('Authenticated towards plex.tv with success') + Log.Info('Authenticated towards plex.tv with success') return token except Ex.HTTPError, e: + Log.Critical('Login error: ' + str(e)) req.clear() req.set_status(e.code) req.finish(e) diff --git a/Contents/Code/webSrv.py b/Contents/Code/webSrv.py index ca60798..d3853a5 100644 --- a/Contents/Code/webSrv.py +++ b/Contents/Code/webSrv.py @@ -25,12 +25,40 @@ from settings import settings from findUnmatched import findUnmatched +import os + +# Below used to find path of this file +from inspect import getsourcefile +from os.path import abspath + # TODO #from importlib import import_module # SNIFF....Tornado is V1.0.0, meaning no WebSocket :-( # Path to http folder within the bundle -ACTUALPATH = os.path.join(Core.app_support_path, 'Plug-ins', NAME + '.bundle', 'http') +def getActualHTTPPath(): + HTTPPath = Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name, NAME + '.bundle', 'http') + if not os.path.isdir(HTTPPath): + Log.Critical('Could not find my http path in: ' + HTTPPath) + return '' + else: + return HTTPPath + +# Path to http folder within the bundle +def isCorrectPath(req): + installedPlugInPath, skipStr = abspath(getsourcefile(lambda:0)).upper().split('WEBTOOLS.BUNDLE',1) + targetPath = Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name).upper() + if installedPlugInPath[:-1] != targetPath: + installedPlugInPath, skipStr = abspath(getsourcefile(lambda:0)).split('/Contents',1) + msg = '

    Wrong installation path detected

    ' + msg = msg + '

    It seems like you installed WebTools into the wrong folder

    ' + msg = msg + '

    You installed WebTools here:

    ' + msg = msg + installedPlugInPath + msg = msg + '

    but the correct folder is:

    ' + msg = msg + Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name, 'WebTools.bundle') + req.clear() + req.set_status(404) + req.finish(msg) #************** webTools functions ****************************** ''' Here we have the supported functions ''' @@ -40,7 +68,7 @@ def getVersion(self): retVal = {'version': VERSION, 'PasswordSet': Dict['pwdset'], 'PlexTVOnline': plexTV().auth2myPlex()} - Log.Debug('Version requested, returning ' + str(retVal)) + Log.Info('Version requested, returning ' + str(retVal)) return retVal #**************** Handler Classes for Rest ********************** @@ -62,18 +90,22 @@ def get(self): class idxHandler(BaseHandler): @authenticated def get(self): - self.render(ACTUALPATH + "/index.html") + Log.Info('Returning: ' + Core.storage.join_path(getActualHTTPPath(), 'index.html')) + self.render(Core.storage.join_path(getActualHTTPPath(), 'index.html')) ''' Logout handler ''' class LogoutHandler(BaseHandler): @authenticated def get(self): + Log.Info('Clearing Auth Cookie') self.clear_cookie(NAME) self.redirect('/') class LoginHandler(BaseHandler): def get(self): - self.render(ACTUALPATH + "/login.html", next=self.get_argument("next","/")) + isCorrectPath(self) + Log.Info('Returning login page: ' + Core.storage.join_path(getActualHTTPPath() , 'login.html')) + self.render(Core.storage.join_path(getActualHTTPPath(), 'login.html'), next=self.get_argument("next","/")) def post(self): global AUTHTOKEN @@ -87,15 +119,19 @@ def post(self): if retVal == 0: # All is good self.allow() + Log.Info('All is good, we are authenticated') self.redirect('/') elif retVal == 1: - # Server not found + # Server not found + Log.Info('Server not found on plex.tv') self.set_status(404) elif retVal == 2: # Not the owner + Log.Info('USer is not the server owner') self.set_status(403) else: # Unknown error + Log.Critical('Unknown error, when authenticating') self.set_status(403) except Ex.HTTPError, e: self.clear() @@ -103,8 +139,10 @@ def post(self): self.finish(e) return self else: + Log.Info('Server is not online according to plex.tv') # Server is offline if Dict['password'] == '': + Log.Info('First local login, so we need to set the local password') Dict['password'] = self.get_argument("pwd") Dict['pwdset'] = True Dict.Save @@ -112,10 +150,12 @@ def post(self): self.redirect('/') elif Dict['password'] == self.get_argument("pwd"): self.allow() + Log.Info('Local password accepted') self.redirect('/') elif Dict['password'] != self.get_argument("pwd"): - self.clear() - self.set_status(401) + Log.Critical('Either local login failed, or PMS lost connection to plex.tv') + self.clear() + self.set_status(401) def allow(self): self.set_secure_cookie(NAME, Hash.MD5(Dict['SharedSecret']+Dict['password']), expires_days = None) @@ -127,8 +167,8 @@ def get(self, **params): class webTools2Handler(BaseHandler): #******* GET REQUEST ********* -# @authenticated - print '********** AUTH DISABLED WebSRV WebTools2 GET' + @authenticated +# print '********** AUTH DISABLED WebSRV WebTools2 GET' # Get Request def get(self, **params): @@ -142,19 +182,16 @@ def get(self, **params): Log.Debug('Recieved a get call for module: ' + module) #TODO - ''' + ''' Attempt to create a dynamic import, but so far, it sadly breaks access to the PMS API :-( import sys sys.path.append(os.path.join(Core.app_support_path, 'Plug-ins', NAME + '.bundle', 'Contents', 'Code')) mod = import_module(module) modClass = getattr(mod, module)() print 'GED1', dir(modClass) callFunction = getattr(modClass, 'reqprocess') - self = modClass().reqprocess(self) - ''' - if module == 'git': self = git().reqprocess(self) elif module == 'logs': @@ -200,8 +237,8 @@ def post(self, **params): return #******* DELETE REQUEST ********* -# @authenticated - print '********** AUTH DISABLED WebSRV WebTools2 DELETE' + @authenticated +# print '********** AUTH DISABLED WebSRV WebTools2 DELETE' def delete(self, **params): module = self.get_argument('module', 'missing') if module == 'missing': @@ -220,8 +257,8 @@ def delete(self, **params): return #******* PUT REQUEST ********* -# @authenticated - print '********** AUTH DISABLED WebSRV WebTools2 PUT' + @authenticated +# print '********** AUTH DISABLED WebSRV WebTools2 PUT' def put(self, **params): module = self.get_argument('module', 'missing') @@ -250,7 +287,7 @@ def put(self, **params): (r'/', idxHandler), (r'/index.html', idxHandler), (r"/webtools2*$", webTools2Handler), - (r'/(.*)', StaticFileHandler, {'path': ACTUALPATH}) + (r'/(.*)', StaticFileHandler, {'path': getActualHTTPPath()}) ] if Prefs['Force_SSL']: From c6ff5808948919737775362411a7f0fab0789873 Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Tue, 9 Feb 2016 21:48:49 +0100 Subject: [PATCH 03/40] fixed issue #126...See the docs --- Contents/Code/Docs/webtools-README_DEVS.odt | Bin 95232 -> 95594 bytes Contents/Code/git.py | 99 +++++++++++++++++++- 2 files changed, 98 insertions(+), 1 deletion(-) diff --git a/Contents/Code/Docs/webtools-README_DEVS.odt b/Contents/Code/Docs/webtools-README_DEVS.odt index b781afed53d26438c819bb9ee767f82e00bdedc5..82186fb28796b112d029dc4514c2e32c328a0d1f 100644 GIT binary patch delta 42871 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 PcU^!uC@PMRN`U_X*ub^L delta 42477 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≫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 diff --git a/Contents/Code/git.py b/Contents/Code/git.py index 1a973ec..63f7199 100644 --- a/Contents/Code/git.py +++ b/Contents/Code/git.py @@ -62,11 +62,108 @@ def reqprocessPUT(self, req): req.finish("Missing function parameter") elif function == 'migrate': return self.migrate(req) + elif function == 'upgradeWT': + return self.upgradeWT(req) else: req.clear() req.set_status(412) req.finish("Unknown function call") + ''' Upgrade WebTools itself ''' + def upgradeWT(self, req): + Log.Info('Starting upgradeWT') + + # Helper function + def removeEmptyFolders(path, removeRoot=True): + 'Function to remove empty folders' + if not os.path.isdir(path): + return + # remove empty subfolders + files = os.listdir(path) + if len(files): + for f in files: + fullpath = os.path.join(path, f) + if os.path.isdir(fullpath): + removeEmptyFolders(fullpath) + # if folder empty, delete it + files = os.listdir(path) + if len(files) == 0 and removeRoot: + Log.Debug('Removing empty directory: ' + path) + os.rmdir(path) + + # URL to Github + url = 'https://api.github.com/repos/dagalufh/WebTools.bundle/releases/latest' + bundleName = Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name, NAME + '.bundle') + Log.Info('WT install dir is: ' + bundleName) + try: + Log.Debug('Getting release info from url: ' + url) + jsonReponse = JSON.ObjectFromURL(url) + wtURL = jsonReponse['assets'][0]['browser_download_url'] + Log.Info('WT Download url detected as: ' + wtURL) + # Grap file from Github + zipfile = Archive.ZipFromURL(wtURL) + bError = True + bUpgrade = False + instFiles = [] + # We need to cut of the main directory, which name we don't know + for filename in zipfile: + pos = filename.find('/') + cutStr = filename[:pos] + break + # Now build a list of files in the zip, while extracting them as well + for filename in zipfile: + myFile = filename.replace(cutStr, '') + if myFile != '/': + # Make a list of all files and dirs in the zip + instFiles.append(myFile) + # Grap the file + data = zipfile[filename] + if not str(filename).endswith('/'): + # Pure file, so save it + path = self.getSavePath(bundleName, filename.replace(cutStr, '')) + Log.Debug('Extracting file' + path) + try: + Core.storage.save(path, data) + except Exception, e: + bError = True + Log.Critical('Exception happend in downloadBundle2tmp: ' + str(e)) + else: + # We got a directory here + Log.Debug(filename.split('/')[-2]) + if not str(filename.split('/')[-2]).startswith('.'): + # Not hidden, so let's create it + path = self.getSavePath(bundleName, filename.replace(cutStr, '')) + Log.Debug('Extracting folder ' + path) + try: + Core.storage.ensure_dirs(path) + except Exception, e: + bError = True + Log.Critical('Exception happend in downloadBundle2tmp: ' + str(e)) + # Now we need to nuke files that should no longer be there! + for root, dirs, files in os.walk(bundleName): + for fname in files: + fileName = Core.storage.join_path(root, fname).replace(bundleName, '') + if fileName not in instFiles: + if 'uas' not in fileName: + Log.Debug('Removing not needed file: ' + fileName) + os.remove(Core.storage.join_path(root, fname)) + # And now time to swipe empty directories + removeEmptyFolders(bundleName) + req.clear() + req.set_status(200) + req.set_header('Content-Type', 'application/json; charset=utf-8') + req.finish('Upgraded ok') + except Exception, e: + Log.Critical('***************************************************************') + Log.Critical('DARN....When we tried to upgrade WT, we had an error :-(') + Log.Critical('Only option now might be to do a manual install, like you did the first time') + Log.Critical('The error was: ' + str(e)) + Log.Critical('Do NOT FORGET!!!!') + Log.Critical('We NEED this log, so please upload to Plex forums') + Log.Critical('***************************************************************') + return + + ''' This function will return a list of bundles, where there is an update avail ''' def getUpdateList(self, req): Log.Debug('Got a call for getUpdateList') @@ -635,7 +732,7 @@ def getListofBundles(self, req): ''' Get release info for a bundle ''' def getReleaseInfo(self, req): - Log.Debug('Starting getReleaseInfo') + Log.Info('Starting getReleaseInfo') try: url = req.get_argument('url', 'missing') if url == 'missing': From 130391f7dfad6800e7a2eb628b5c4ee63967d8c2 Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Sat, 13 Feb 2016 21:30:34 +0100 Subject: [PATCH 04/40] Added debug mode for easy authentication See doc --- Contents/Code/Docs/webtools-README_DEVS.odt | Bin 95594 -> 95717 bytes Contents/Code/__init__.py | 10 +++++++- Contents/Code/webSrv.py | 25 +++++++++++++------- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/Contents/Code/Docs/webtools-README_DEVS.odt b/Contents/Code/Docs/webtools-README_DEVS.odt index 82186fb28796b112d029dc4514c2e32c328a0d1f..b3d29b84bc04b7eaf3a51382ac01166cb31e9a0a 100644 GIT binary patch delta 39925 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 PZy?XrUU!@dE#UtERP+bv delta 39865 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 z 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 ZUhcZVIjPnQ$W5T(isgg_{0A<#!$<%C diff --git a/Contents/Code/__init__.py b/Contents/Code/__init__.py index 9e4ab19..a26f917 100644 --- a/Contents/Code/__init__.py +++ b/Contents/Code/__init__.py @@ -18,6 +18,7 @@ VERSION = '2.2' AUTHTOKEN = '' SECRETKEY = '' +DEBUGMODE = False #********** Imports needed ********* @@ -33,6 +34,13 @@ #********** Initialize ********* def Start(): global SECRETKEY + global VERSION + global DEBUGMODE + # Switch to debug mode if needed + debugFile = Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name, NAME + '.bundle', 'debug') + DEBUGMODE = os.path.isfile(debugFile) + if DEBUGMODE: + VERSION = VERSION + ' ****** WARNING Debug mode on *********' PLUGIN_VERSION = VERSION print("******** Started %s on %s **********" %(NAME + ' V' + PLUGIN_VERSION, Platform.OS)) Log.Debug("******* Started %s on %s ***********" %(NAME + ' V' + PLUGIN_VERSION, Platform.OS)) @@ -45,7 +53,7 @@ def Start(): # Get the secret key used to access the PMS framework ********** FUTURE USE *************** SECRETKEY = genSecretKeyAsStr() - startWeb(SECRETKEY) + startWeb(SECRETKEY, VERSION, DEBUGMODE) #################################################################################################### # Generate secret key diff --git a/Contents/Code/webSrv.py b/Contents/Code/webSrv.py index d3853a5..05d41cc 100644 --- a/Contents/Code/webSrv.py +++ b/Contents/Code/webSrv.py @@ -109,6 +109,12 @@ def get(self): def post(self): global AUTHTOKEN + # Allow no password when in debug mode + if DEBUGMODE: + self.allow() + Log.Info('All is good, we are authenticated') + self.redirect('/') + # Let's start by checking if the server is online if plexTV().auth2myPlex(): token = '' @@ -166,10 +172,13 @@ def get(self, **params): self.write(webTools().getVersion()) class webTools2Handler(BaseHandler): + # Disable auth when debug + def prepare(self): + if DEBUGMODE: + self.set_secure_cookie(NAME, Hash.MD5(Dict['SharedSecret']+Dict['password']), expires_days = None) + #******* GET REQUEST ********* @authenticated -# print '********** AUTH DISABLED WebSRV WebTools2 GET' - # Get Request def get(self, **params): module = self.get_argument('module', 'missing') @@ -212,7 +221,6 @@ def get(self, **params): #******* POST REQUEST ********* @authenticated -# print '********** AUTH DISABLED WebSRV WebTools2 POST' def post(self, **params): module = self.get_argument('module', 'missing') if module == 'missing': @@ -238,7 +246,6 @@ def post(self, **params): #******* DELETE REQUEST ********* @authenticated -# print '********** AUTH DISABLED WebSRV WebTools2 DELETE' def delete(self, **params): module = self.get_argument('module', 'missing') if module == 'missing': @@ -258,8 +265,6 @@ def delete(self, **params): #******* PUT REQUEST ********* @authenticated -# print '********** AUTH DISABLED WebSRV WebTools2 PUT' - def put(self, **params): module = self.get_argument('module', 'missing') if module == 'missing': @@ -337,10 +342,14 @@ def stopWeb(): Log.Debug('Asked Tornado to exit') ''' Main call ''' -def startWeb(secretKey): - global SECRETKEY +def startWeb(secretKey, version, debugmode): + global SECRETKEY # Set the secret key for use by other calls in the future maybe? SECRETKEY = secretKey + global VERSION + VERSION = version + global DEBUGMODE + DEBUGMODE = debugmode stopWeb() Log.Debug('tornado is handling the following URI: %s' %(handlers)) t = threading.Thread(target=start_tornado) From 32d7d5e4bc629e536dbef016cd0f73fca580075d Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Mon, 15 Feb 2016 09:50:57 +0100 Subject: [PATCH 05/40] Now support Basic Auth Header for the login page --- Contents/Code/Docs/webtools-README_DEVS.odt | Bin 95717 -> 96039 bytes Contents/Code/plextvhelper.py | 7 +++- Contents/Code/webSrv.py | 34 +++++++++++++++++--- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/Contents/Code/Docs/webtools-README_DEVS.odt b/Contents/Code/Docs/webtools-README_DEVS.odt index b3d29b84bc04b7eaf3a51382ac01166cb31e9a0a..e1b54ada1163a5bfcfb4bc8d456ee7beedcc4ad9 100644 GIT binary patch delta 33796 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 H1^NE~o7dfA delta 33511 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 |T@@&{8^a}^)bKND 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 diff --git a/Contents/Code/plextvhelper.py b/Contents/Code/plextvhelper.py index 8149caa..de846fa 100644 --- a/Contents/Code/plextvhelper.py +++ b/Contents/Code/plextvhelper.py @@ -25,8 +25,10 @@ def __init__(self): self.myHeader['X-Plex-Platform'] = Platform.OS # Login to Plex.tv - def login(self, req): + def login(self, user, pwd): Log.Info('Start to auth towards plex.tv') + + ''' user = req.get_argument('user', '') if user == '': Log.Error('Missing username') @@ -41,6 +43,9 @@ def login(self, req): req.set_status(412) req.finish("Missing password") return req + ''' + + # Got what we needed, so let's logon authString = String.Base64Encode('%s:%s' % (user, pwd)) self.myHeader['Authorization'] = 'Basic ' + authString diff --git a/Contents/Code/webSrv.py b/Contents/Code/webSrv.py index 05d41cc..0e8c053 100644 --- a/Contents/Code/webSrv.py +++ b/Contents/Code/webSrv.py @@ -109,18 +109,41 @@ def get(self): def post(self): global AUTHTOKEN + + # Check for an auth header, in case a frontend wanted to use that + # Header has precedence compared to params + auth_header = self.request.headers.get('Authorization', None) + if auth_header is None or not auth_header.startswith('Basic '): + Log.Info('No Basic Auth header, so looking for params') + user = self.get_argument('user', '') + if user == '': + if plexTV().auth2myPlex(): + Log.Info('Missing username') + self.clear() + self.set_status(412) + self.finish("Missing username") + pwd = self.get_argument('pwd', '') + if pwd == '': + Log.Info('Missing password') + self.clear() + self.set_status(412) + self.finish("Missing password") + else: + Log.Info('Auth header found') + auth_decoded = String.Base64Decode(auth_header[6:]) + user, pwd = auth_decoded.split(':', 2) + Log.Info('User is: ' + user) # Allow no password when in debug mode if DEBUGMODE: self.allow() Log.Info('All is good, we are authenticated') self.redirect('/') - # Let's start by checking if the server is online if plexTV().auth2myPlex(): token = '' try: # Authenticate - retVal = plexTV().isServerOwner(plexTV().login(self)) + retVal = plexTV().isServerOwner(plexTV().login(user, pwd)) self.clear() if retVal == 0: # All is good @@ -140,6 +163,7 @@ def post(self): Log.Critical('Unknown error, when authenticating') self.set_status(403) except Ex.HTTPError, e: + Log.Critical('Exception in Login: ' + str(e)) self.clear() self.set_status(e.code) self.finish(e) @@ -149,16 +173,16 @@ def post(self): # Server is offline if Dict['password'] == '': Log.Info('First local login, so we need to set the local password') - Dict['password'] = self.get_argument("pwd") + Dict['password'] = pwd Dict['pwdset'] = True Dict.Save self.allow() self.redirect('/') - elif Dict['password'] == self.get_argument("pwd"): + elif Dict['password'] == pwd: self.allow() Log.Info('Local password accepted') self.redirect('/') - elif Dict['password'] != self.get_argument("pwd"): + elif Dict['password'] != pwd: Log.Critical('Either local login failed, or PMS lost connection to plex.tv') self.clear() self.set_status(401) From 1699c609d9fa644058cf8c88a9093e421b2fc912 Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Sat, 20 Feb 2016 17:15:29 +0100 Subject: [PATCH 06/40] Fixed issue with stale unknowns, a problem with WT Update, and additional logging added --- Contents/Code/Docs/webtools-README_DEVS.odt | Bin 96039 -> 96257 bytes Contents/Code/git.py | 121 +++++++++++++------- Contents/Code/pms.py | 21 +++- 3 files changed, 95 insertions(+), 47 deletions(-) diff --git a/Contents/Code/Docs/webtools-README_DEVS.odt b/Contents/Code/Docs/webtools-README_DEVS.odt index e1b54ada1163a5bfcfb4bc8d456ee7beedcc4ad9..ee2fb35cce9886f803e39ab9125482222e81cd73 100644 GIT binary patch delta 24125 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 delta 23977 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 diff --git a/Contents/Code/git.py b/Contents/Code/git.py index 63f7199..c25b7c9 100644 --- a/Contents/Code/git.py +++ b/Contents/Code/git.py @@ -24,7 +24,7 @@ def __init__(self): self.OFFICIAL_APP_STORE = 'https://nine.plugins.plexapp.com' Log.Debug("Plugin directory is: %s" %(self.PLUGIN_DIR)) - ''' Grap the tornado req, and process it ''' + ''' Grap the tornado req, and process it for GET request''' def reqprocess(self, req): function = req.get_argument('function', 'missing') if function == 'missing': @@ -73,6 +73,16 @@ def reqprocessPUT(self, req): def upgradeWT(self, req): Log.Info('Starting upgradeWT') + #Helper function + ''' This helper function will delete the dict named Installed + After doing so, it'll do a forced migrate + ''' + def nukeSpecialDicts(): + #TODO Make this + Dict['installed'] = {} + Dict.Save() + self.migrate(req, silent=True) + # Helper function def removeEmptyFolders(path, removeRoot=True): 'Function to remove empty folders' @@ -91,15 +101,24 @@ def removeEmptyFolders(path, removeRoot=True): Log.Debug('Removing empty directory: ' + path) os.rmdir(path) - # URL to Github - url = 'https://api.github.com/repos/dagalufh/WebTools.bundle/releases/latest' + + + # Reset dicts + nukeSpecialDicts() + + + url= req.get_argument('debugURL', 'https://api.github.com/repos/dagalufh/WebTools.bundle/releases/latest') bundleName = Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name, NAME + '.bundle') Log.Info('WT install dir is: ' + bundleName) try: - Log.Debug('Getting release info from url: ' + url) - jsonReponse = JSON.ObjectFromURL(url) - wtURL = jsonReponse['assets'][0]['browser_download_url'] + if url == 'https://api.github.com/repos/dagalufh/WebTools.bundle/releases/latest': + Log.Debug('Getting release info from url: ' + url) + jsonReponse = JSON.ObjectFromURL(url) + wtURL = jsonReponse['assets'][0]['browser_download_url'] + else: + wtURL = url.replace('tree', 'archive') + '.zip' Log.Info('WT Download url detected as: ' + wtURL) + # Grap file from Github zipfile = Archive.ZipFromURL(wtURL) bError = True @@ -149,6 +168,7 @@ def removeEmptyFolders(path, removeRoot=True): os.remove(Core.storage.join_path(root, fname)) # And now time to swipe empty directories removeEmptyFolders(bundleName) + req.clear() req.set_status(200) req.set_header('Content-Type', 'application/json; charset=utf-8') @@ -201,10 +221,11 @@ def getUpdateList(self, req): ''' This function will migrate bundles that has been installed without using our UAS into our UAS ''' - def migrate(self, req): + def migrate(self, req, silent=False): # get list from uas cache def getUASCacheList(): try: + Log.Info('Migrating old bundles into WT') jsonFileName = Core.storage.join_path(self.PLUGIN_DIR, NAME + '.bundle', 'http', 'uas', 'Resources', 'plugin_details.json') json_file = io.open(jsonFileName, "rb") response = json_file.read() @@ -281,6 +302,9 @@ def getIdentifier(pluginDir): Log.Debug('Dict stamped with the following install entry: ' + git + ' - ' + str(targetGit)) # Now update the PMS-AllBundleInfo Dict as well Dict['PMS-AllBundleInfo'][git] = targetGit + # If it existed as unknown as well, we need to remove that + Dict['PMS-AllBundleInfo'].pop(uasListjson[git]['identifier'], None) + Dict['installed'].pop(uasListjson[git]['identifier'], None) Dict.Save() migratedBundles[git] = targetGit bFound = True @@ -309,10 +333,13 @@ def getIdentifier(pluginDir): Dict.Save() pms.updateUASTypesCounters() Log.Debug('Migrated: ' + str(migratedBundles)) - req.clear() - req.set_status(200) - req.set_header('Content-Type', 'application/json; charset=utf-8') - req.finish(json.dumps(migratedBundles)) + if silent: + return + else: + req.clear() + req.set_status(200) + req.set_header('Content-Type', 'application/json; charset=utf-8') + req.finish(json.dumps(migratedBundles)) except Exception, e: Log.Critical('Fatal error happened in migrate: ' + str(e)) req.clear() @@ -340,6 +367,7 @@ def uasTypes(self, req): ''' This will update the UAS Cache directory from GitHub ''' def updateUASCache(self, req): Log.Debug('Starting to update the UAS Cache') + debugForce = ('false' != req.get_argument('debugForce', 'false')) # Main call try: # Start by getting the time stamp for the last update @@ -353,7 +381,7 @@ def updateUASCache(self, req): # Now get the last update time from the UAS repository on GitHub masterUpdate = datetime.datetime.strptime(self.getLastUpdateTime(req, True, self.UAS_URL), '%Y-%m-%d %H:%M:%S') # Do we need to update the cache, and add 2 min. tolerance here? - if (masterUpdate - lastUpdateUAS) > datetime.timedelta(seconds = 120): + if ((masterUpdate - lastUpdateUAS) > datetime.timedelta(seconds = 120) or debugForce): # We need to update UAS Cache # Target Directory targetDir = Core.storage.join_path(self.PLUGIN_DIR, NAME + '.bundle', 'http', 'uas') @@ -503,7 +531,7 @@ def saveInstallInfo(url, bundleName): return ''' Download the bundle ''' - def downloadBundle2tmp(url, bundleName): + def downloadBundle2tmp(url, bundleName, branch): # Helper function def removeEmptyFolders(path, removeRoot=True): 'Function to remove empty folders' @@ -521,40 +549,46 @@ def removeEmptyFolders(path, removeRoot=True): if len(files) == 0 and removeRoot: Log.Debug('Removing empty directory: ' + path) os.rmdir(path) - - # Main try: - zipPath = url + '/archive/master.zip' - # Grap file from Github - zipfile = Archive.ZipFromURL(zipPath) + zipPath = url + '/archive/' + branch + '.zip' + try: + # Grap file from Github + zipfile = Archive.ZipFromURL(zipPath) + except Exception, e: + Log.Critical('Exception in downloadBundle2tmp while downloading from GitHub: ' + str(e)) + return False # Create base directory Core.storage.ensure_dirs(Core.storage.join_path(self.PLUGIN_DIR, bundleName)) # Make sure it's actually a bundle channel bError = True bUpgrade = False instFiles = [] - for filename in zipfile: - # Make a list of all files and dirs in the zip - instFiles.append(filename) - if '/Contents/Info.plist' in filename: - pos = filename.find('/Contents/') - cutStr = filename[:pos] - bError = False - # so we hit the Info.plist file, and now we can make sure, that/if this is an upgrade or not - # So let's grap the identifier from the info file of the bundle to be migrated - # We start by temporary save that as Plug-ins/WT-tmp.plist - Core.storage.save(self.PLUGIN_DIR + '/WT-tmp.plist', zipfile[filename]) - # Now read out the identifier - bundleId = plistlib.readPlist(self.PLUGIN_DIR + '/WT-tmp.plist')['CFBundleIdentifier'] - Log.Debug('Identifier of the bundle to be installed is: ' + bundleId) - # Then nuke the file again - os.remove(self.PLUGIN_DIR + '/WT-tmp.plist') - # And finally check if it's already installed - for bundle in Dict['installed']: - if Dict['installed'][bundle]['identifier'] == bundleId: - bUpgrade = True - Log.Debug('Install is an upgrade') - break + try: + for filename in zipfile: + # Make a list of all files and dirs in the zip + instFiles.append(filename) + if '/Contents/Info.plist' in filename: + pos = filename.find('/Contents/') + cutStr = filename[:pos] + bError = False + # so we hit the Info.plist file, and now we can make sure, that/if this is an upgrade or not + # So let's grap the identifier from the info file of the bundle to be migrated + # We start by temporary save that as Plug-ins/WT-tmp.plist + Core.storage.save(self.PLUGIN_DIR + '/WT-tmp.plist', zipfile[filename]) + # Now read out the identifier + bundleId = plistlib.readPlist(self.PLUGIN_DIR + '/WT-tmp.plist')['CFBundleIdentifier'] + Log.Debug('Identifier of the bundle to be installed is: ' + bundleId) + # Then nuke the file again + os.remove(self.PLUGIN_DIR + '/WT-tmp.plist') + # And finally check if it's already installed + for bundle in Dict['installed']: + if Dict['installed'][bundle]['identifier'] == bundleId: + bUpgrade = True + Log.Debug('Install is an upgrade') + break + except Exception, e: + Log.Critical('Exception in downloadBundle2tmp while walking the downloaded file to find the plist: ' + str(e)) + return False if bUpgrade: # Since this is an upgrade, we need to check, if the dev wants us to delete the Cache directory if url in Dict['installed'].keys(): @@ -646,14 +680,15 @@ def removeEmptyFolders(path, removeRoot=True): Log.Debug('Starting install') req.clear() url = req.get_argument('url', 'missing') + branch = req.get_argument('branch', 'master') if url == 'missing': req.set_status(412) req.finish("Missing url of git") return req # Get bundle name bundleName = grapBundleName(url) - if downloadBundle2tmp(url, bundleName): - Log.Debug('Finished installing %s' %(bundleName)) + if downloadBundle2tmp(url, bundleName, branch): + Log.Debug('Finished installing %s from branch %s' %(bundleName, branch)) Log.Debug('******* Ending install *******') req.clear() req.set_status(200) @@ -664,7 +699,7 @@ def removeEmptyFolders(path, removeRoot=True): Log.Critical('Fatal error happened in install for :' + url) req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') - req.finish('Fatal error happened in install for :' + url) + req.finish('Fatal error happened in install for :' + url + ' with branch ' + branch) return req ''' Get the last update time for a master branch. if UAS is set to True, then this is an internal req. for UAS ''' diff --git a/Contents/Code/pms.py b/Contents/Code/pms.py index bf790e9..acb1284 100644 --- a/Contents/Code/pms.py +++ b/Contents/Code/pms.py @@ -62,16 +62,29 @@ def updateAllBundleInfoFromUAS(): for git in gits: # Rearrange data key = git['repo'] - del git['repo'] + if key == 'https://github.com/ukdtom/test': + # This is out test bundle.....Only add if this is running in devmode + # meaning a file named 'devmode' is present in the root of the bundle dir + fname = Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name, 'WebTools.bundle', 'devmode') + print 'GED Look here' + if os.path.isfile(fname): + continue + +#******************* WORK IN PROGRESS HERE **************** + + + # Check if already present, and if an install date also is there if key in Dict['PMS-AllBundleInfo']: jsonPMSAllBundleInfo = Dict['PMS-AllBundleInfo'][key] if 'date' not in jsonPMSAllBundleInfo: - git['date'] = "" - else: - git['date'] = "" + installDate = "" + else: + installDate = Dict['PMS-AllBundleInfo'][key]['date'] + del git['repo'] # Add/Update our Dict Dict['PMS-AllBundleInfo'][key] = git + Dict['PMS-AllBundleInfo'][key]['date'] = installDate Dict.Save() updateUASTypesCounters() else: From b1e1c9ed6d0004db00146d31dae19f6894bb639a Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Sat, 27 Feb 2016 22:36:33 +0100 Subject: [PATCH 07/40] Return of Agent delete of subs, as well as changelog ;-) --- .gitignore | 4 + Contents/Code/Docs/webtools-README_DEVS.odt | Bin 96257 -> 96260 bytes Contents/Code/__init__.py | 13 +- Contents/Code/git.py | 33 ++-- Contents/Code/pms.py | 168 ++++++++++++-------- http/changelog.txt | 34 ++++ 6 files changed, 168 insertions(+), 84 deletions(-) diff --git a/.gitignore b/.gitignore index 28f597f..38eb73b 100644 --- a/.gitignore +++ b/.gitignore @@ -43,4 +43,8 @@ Icon # gedit tmp files #***************** *~ + +*.pyc +debug + diff --git a/Contents/Code/Docs/webtools-README_DEVS.odt b/Contents/Code/Docs/webtools-README_DEVS.odt index ee2fb35cce9886f803e39ab9125482222e81cd73..0953083f3925d474421fcd558e5ad542032ba4ec 100644 GIT binary patch delta 22269 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 QWsCo*9XxE3 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 delta 22163 zcmZshV{j&I6R2a`+1O4twylkA+vXG7wr$%sH@3}ijxCuDW}=d%An3YNqb# zo}gQB|66c)d1+8EG$0@-AfRM_<#>20(4VDVQ&RN5HL*mL82C1ET-1vhop&v~2 z0Yw_4EKo>8|0_@m6i8kg5(@ga{&^}85Re=&(9iLI!Jwd^{tK4qEJg$nYao2-(evM{ zw@|8$m)T^vtU0GEFH&7APp}k8X==2wVKF977(zoCgNQS(--yuw3|~)XrTVOfepY=Y zK*vH6`pak&+mk33XwoGJ5E5_l4%qGOeU0+_tbr|nMxgS;=w(x--lqo*s2slTZB;hP zvG3@tngKjNdp{X9Yd-<#9rp!Gwt)i=hUmdmUsQXwgNG44J}xbhgOy{lABWV=?3C?N zYHITs!E0)2!^>*Mv~Q%6xggiGk_Y=MRBs9QzHm0uI~~$r@&74wFZupcFe*mo){<<; z_LBAwa}B8PSa1F1Pa96{L*(z}>Xci&S~9$Qd2xR&(-8yQZ3#Kxnh9 z59pb}q0qHi`92AKUa9nIa(IsZd>X;@O)Ii(8j%0D>tSMgu_ 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

      Ak6jeEirw_G__J7DsDWK14QH30CV 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 RLw$V&@RF_ioUzA({tpCovWWly diff --git a/Contents/Code/__init__.py b/Contents/Code/__init__.py index a26f917..eb4b69d 100644 --- a/Contents/Code/__init__.py +++ b/Contents/Code/__init__.py @@ -41,12 +41,11 @@ def Start(): DEBUGMODE = os.path.isfile(debugFile) if DEBUGMODE: VERSION = VERSION + ' ****** WARNING Debug mode on *********' - PLUGIN_VERSION = VERSION - print("******** Started %s on %s **********" %(NAME + ' V' + PLUGIN_VERSION, Platform.OS)) - Log.Debug("******* Started %s on %s ***********" %(NAME + ' V' + PLUGIN_VERSION, Platform.OS)) + print("******** Started %s on %s **********" %(NAME + ' V' + VERSION, Platform.OS)) + Log.Debug("******* Started %s on %s ***********" %(NAME + ' V' + VERSION, Platform.OS)) HTTP.CacheTime = 0 DirectoryObject.thumb = R(ICON) - ObjectContainer.title1 = NAME + ' V' + PLUGIN_VERSION + ObjectContainer.title1 = NAME + ' V' + VERSION Plugin.AddViewGroup('List', viewMode='List', mediaType='items') ObjectContainer.view_group = 'List' makeSettings() @@ -97,6 +96,12 @@ def makeSettings(): # Create the pwdset entry if Dict['pwdset'] == None: Dict['pwdset'] = False + # Init the installed dict + if Dict['installed'] == None: + Dict['installed'] = {} + # Init the allBundle Dict + if Dict['PMS-AllBundleInfo'] == None: + Dict['PMS-AllBundleInfo'] = {} return #################################################################################################### diff --git a/Contents/Code/git.py b/Contents/Code/git.py index c25b7c9..2e19576 100644 --- a/Contents/Code/git.py +++ b/Contents/Code/git.py @@ -101,12 +101,9 @@ def removeEmptyFolders(path, removeRoot=True): Log.Debug('Removing empty directory: ' + path) os.rmdir(path) - - # Reset dicts nukeSpecialDicts() - url= req.get_argument('debugURL', 'https://api.github.com/repos/dagalufh/WebTools.bundle/releases/latest') bundleName = Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name, NAME + '.bundle') Log.Info('WT install dir is: ' + bundleName) @@ -174,16 +171,17 @@ def removeEmptyFolders(path, removeRoot=True): req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish('Upgraded ok') except Exception, e: + Log.Critical('***************************************************************') + Log.Critical('Error when updating WebTools') + Log.Critical('The error was: ' + str(e)) Log.Critical('***************************************************************') Log.Critical('DARN....When we tried to upgrade WT, we had an error :-(') Log.Critical('Only option now might be to do a manual install, like you did the first time') - Log.Critical('The error was: ' + str(e)) Log.Critical('Do NOT FORGET!!!!') Log.Critical('We NEED this log, so please upload to Plex forums') Log.Critical('***************************************************************') return - ''' This function will return a list of bundles, where there is an update avail ''' def getUpdateList(self, req): Log.Debug('Got a call for getUpdateList') @@ -218,7 +216,6 @@ def getUpdateList(self, req): req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish('Fatal error happened in getUpdateList ' + str(e)) - ''' This function will migrate bundles that has been installed without using our UAS into our UAS ''' def migrate(self, req, silent=False): @@ -259,9 +256,6 @@ def getIdentifier(pluginDir): # Main call Log.Debug('Migrate function called') try: - # Init dict, if not already so - if Dict['installed'] == None: - Dict['installed'] = {} # Let's start by getting a list of known installed bundles knownBundles = [] for installedBundles in Dict['installed']: @@ -286,6 +280,11 @@ def getIdentifier(pluginDir): uasListjson = getUASCacheList() bFound = False for git in uasListjson: + ''' + if target == 'com.plexapp.plugins.Plex2csv': + print 'GED KIG HER' + continue + ''' if target == uasListjson[git]['identifier']: Log.Debug('Found %s is part of uas' %(target)) targetGit = {} @@ -302,6 +301,8 @@ def getIdentifier(pluginDir): Log.Debug('Dict stamped with the following install entry: ' + git + ' - ' + str(targetGit)) # Now update the PMS-AllBundleInfo Dict as well Dict['PMS-AllBundleInfo'][git] = targetGit + # Update installed dict as well + Dict['installed'][git] = targetGit # If it existed as unknown as well, we need to remove that Dict['PMS-AllBundleInfo'].pop(uasListjson[git]['identifier'], None) Dict['installed'].pop(uasListjson[git]['identifier'], None) @@ -402,7 +403,15 @@ def updateUASCache(self, req): req.finish('Exception in updateUASCache: ' + errMsg) return req # Grap file from Github - zipfile = Archive.ZipFromURL(self.UAS_URL+ '/archive/master.zip') + try: + zipfile = Archive.ZipFromURL(self.UAS_URL+ '/archive/master.zip') + except Exception, e: + Log.Critical('Could not download UAS Repo from GitHub') + req.clear() + req.set_status(500) + req.set_header('Content-Type', 'application/json; charset=utf-8') + req.finish('Exception in updateUASCache while downloading UAS repo from Github: ' + str(e)) + return req for filename in zipfile: # Walk contents of the zip, and extract as needed data = zipfile[filename] @@ -549,7 +558,11 @@ def removeEmptyFolders(path, removeRoot=True): if len(files) == 0 and removeRoot: Log.Debug('Removing empty directory: ' + path) os.rmdir(path) + try: + # Get the dict with the installed bundles, and init it if it doesn't exists + if not 'installed' in Dict: + Dict['installed'] = {} zipPath = url + '/archive/' + branch + '.zip' try: # Grap file from Github diff --git a/Contents/Code/pms.py b/Contents/Code/pms.py index acb1284..e87ca47 100644 --- a/Contents/Code/pms.py +++ b/Contents/Code/pms.py @@ -9,6 +9,7 @@ import shutil, os import time, json import io +from xml.etree import ElementTree # Undate uasTypesCounters @@ -44,11 +45,40 @@ def updateUASTypesCounters(): #TODO fix updateAllBundleInfo # updateAllBundleInfo def updateAllBundleInfoFromUAS(): + def updateInstallDict(): + ''' + # Debugging stuff + print 'Ged debugging stuff' + Dict['PMS-AllBundleInfo'].pop('https://github.com/ukdtom/plex2csv.bundle', None) + Dict['installed'].clear() + Dict.Save() + #Debug end + ''' + + + + # Start by creating a fast lookup cache for all uas bundles + uasBundles = {} + bundles = Dict['PMS-AllBundleInfo'] + for bundle in bundles: + uasBundles[bundles[bundle]['identifier']] = bundle + # Now walk the installed ones + for installedBundle in Dict['installed']: + if not installedBundle.startswith('https://'): + Log.Info('Checking unknown bundle: ' + installedBundle + ' to see if it is part of UAS now') + if installedBundle in uasBundles: + # Get the installed date of the bundle formerly known as unknown :-) + installedDate = Dict['installed'][installedBundle]['date'] + # Add updated stuff to the dicts + Dict['PMS-AllBundleInfo'][uasBundles[installedBundle]]['date'] = installedDate + Dict['installed'][uasBundles[installedBundle]] = Dict['PMS-AllBundleInfo'][uasBundles[installedBundle]] + # Remove old stuff from the Ditcs + Dict['PMS-AllBundleInfo'].pop(installedBundle, None) + Dict['installed'].pop(installedBundle, None) + Dict.Save() + return + try: - # Init the Dict - if Dict['PMS-AllBundleInfo'] == None: - Dict['PMS-AllBundleInfo'] = {} - Dict.Save() # start by checking if UAS cache has been populated jsonUAS = Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name, NAME + '.bundle', 'http', 'uas', 'Resources', 'plugin_details.json') if os.path.exists(jsonUAS): @@ -59,38 +89,29 @@ def updateAllBundleInfoFromUAS(): json_file.close() # Convert to a JSON Object gits = JSON.ObjectFromString(str(response)) - for git in gits: - # Rearrange data - key = git['repo'] - if key == 'https://github.com/ukdtom/test': - # This is out test bundle.....Only add if this is running in devmode - # meaning a file named 'devmode' is present in the root of the bundle dir - fname = Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name, 'WebTools.bundle', 'devmode') - print 'GED Look here' - if os.path.isfile(fname): - continue - -#******************* WORK IN PROGRESS HERE **************** - - - - # Check if already present, and if an install date also is there - if key in Dict['PMS-AllBundleInfo']: - jsonPMSAllBundleInfo = Dict['PMS-AllBundleInfo'][key] - if 'date' not in jsonPMSAllBundleInfo: - installDate = "" - else: + try: + for git in gits: + # Rearrange data + key = git['repo'] + # Check if already present, and if an install date also is there + installDate = "" + if key in Dict['PMS-AllBundleInfo']: + jsonPMSAllBundleInfo = Dict['PMS-AllBundleInfo'][key] + if 'date' in jsonPMSAllBundleInfo: installDate = Dict['PMS-AllBundleInfo'][key]['date'] - del git['repo'] - # Add/Update our Dict - Dict['PMS-AllBundleInfo'][key] = git - Dict['PMS-AllBundleInfo'][key]['date'] = installDate + del git['repo'] + # Add/Update our Dict + Dict['PMS-AllBundleInfo'][key] = git + Dict['PMS-AllBundleInfo'][key]['date'] = installDate + except Exception, e: + Log.Critical('Critical error in updateInstallDict while walking the gits: ' + str(e)) Dict.Save() updateUASTypesCounters() + updateInstallDict() else: Log.Debug('UAS was sadly not present') except Exception, e: - Log.Debug('Fatal error happened in updateAllBundleInfoFromUAS: ' + str(e)) + Log.Critical('Fatal error happened in updateAllBundleInfoFromUAS: ' + str(e)) class pms(object): # Defaults used by the rest of the class @@ -168,6 +189,30 @@ def reqprocessPost(self, req): req.set_status(412) req.finish("Unknown function call") + ''' Delete from an XML file ''' + def DelFromXML(self, fileName, attribute, value): + Log.Debug('Need to delete element with an attribute named "%s" with a value of "%s" from file named "%s"' %(attribute, value, fileName)) + with io.open(fileName, 'r') as f: + tree = ElementTree.parse(f) + root = tree.getroot() + mySubtitles = root.findall('.//Subtitle') + for Subtitles in root.findall("Language[Subtitle]"): + for node in Subtitles.findall("Subtitle"): + myValue = node.attrib.get(attribute) + + print 'Ged9', myValue + + if myValue: + if '_' in myValue: + drop, myValue = myValue.split("_") + if myValue == value: + + print 'Ged10', value + + Subtitles.remove(node) + tree.write(fileName, encoding='utf-8', xml_declaration=True) + return + # getParts def getParts(self, req): Log.Debug('Got a call for getParts') @@ -234,15 +279,10 @@ def getAllBundleInfo(self, req): Log.Debug('Got a call for getAllBundleInfo') try: req.clear() - if Dict['PMS-AllBundleInfo'] == None: - Log.Debug('getAllBundleInfo has not been populated yet') - req.set_status(204) - req.finish('getAllBundleInfo has not been populated yet') - else: - Log.Debug('Returning: ' + str(len(Dict['PMS-AllBundleInfo'])) + ' items') - req.set_status(200) - req.set_header('Content-Type', 'application/json; charset=utf-8') - req.finish(json.dumps(Dict['PMS-AllBundleInfo'])) + Log.Debug('Returning: ' + str(len(Dict['PMS-AllBundleInfo'])) + ' items') + req.set_status(200) + req.set_header('Content-Type', 'application/json; charset=utf-8') + req.finish(json.dumps(Dict['PMS-AllBundleInfo'])) except Exception, e: Log.Debug('Fatal error happened in getAllBundleInfo: ' + str(e)) req.clear() @@ -393,60 +433,48 @@ def delSub(self, req): req.finish('Hmmm....This is invalid, and most likely due to trying to delete an embedded sub :-)') else: if filePath.startswith('media://'): - ''' - Here we look at an agent provided subtitle, so this part of the function - has been crippled on purpose - ''' + # Path to symblink filePath = filePath.replace('media:/', os.path.join(Core.app_support_path, 'Media', 'localhost')) # Subtitle name agent, sub = filePath.split('_') tmp, agent = agent.split('com.') # Agent used agent = 'com.' + agent - filePath2 = filePath.replace('Contents', 'Subtitle Contributions') + filePath2 = filePath.replace('Contents', os.path.join('Contents', 'Subtitle Contributions')) filePath2, language = filePath2.split('Subtitles') language = language[1:3] filePath3 = os.path.join(filePath2[:-1], agent, language, sub) - - ''' This is removed from the code, due to the fact, that Plex will re-download right after the deletion - subtitlesXMLPath, tmp = filePath.split('Contents') agentXMLPath = os.path.join(subtitlesXMLPath, 'Contents', 'Subtitle Contributions', agent + '.xml') subtitlesXMLPath = os.path.join(subtitlesXMLPath, 'Contents', 'Subtitles.xml') self.DelFromXML(agentXMLPath, 'media', sub) self.DelFromXML(subtitlesXMLPath, 'media', sub) - agentXML = XML.ElementFromURL('"' + agentXMLPath + '"') - #Let's refresh the media - url = 'http://127.0.0.1:32400/library/metadata/' + params['param2'] + '/refresh&force=1' - refresh = HTTP.Request(url, immediate=False) - # Nuke the actual file try: # Delete the actual file os.remove(filePath) - print 'Removing: ' + filePath - + # Delete the symb link os.remove(filePath3) - print 'Removing: ' + filePath3 - # Refresh the subtitles in Plex - self.getSubTitles(params) - except: - return 500 - ''' - + #TODO: Refresh is sadly not working for me, so could use some help here :-( + #Let's refresh the media + url = 'http://127.0.0.1:32400/library/metadata/' + key + '/refresh?force=1' + HTTP.Request(url, cacheTime=0, immediate=True, method="PUT") + except Exception, e: + Log.Critical('Exception while deleting an agent based sub: ' + str(e)) + req.clear() + req.set_status(404) + req.set_header('Content-Type', 'application/json; charset=utf-8') + req.finish('Exception while deleting an agent based sub: ' + str(e)) retValues = {} retValues['FilePath']=filePath3 retValues['SymbLink']=filePath - Log.Debug('Agent subtitle returning %s' %(retValues)) req.clear() req.set_status(200) req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish(json.dumps(retValues)) - return req elif filePath.startswith('file://'): # We got a sidecar here, so killing time.....YES - filePath = filePath.replace('file://', '') try: # Delete the actual file @@ -458,13 +486,13 @@ def delSub(self, req): req.set_status(200) req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish(json.dumps(retVal)) - except: + except Exception, e: # Could not find req. subtitle - Log.Debug('Fatal error happened in delSub, when deleting %s' %(filePath)) + Log.Debug('Fatal error happened in delSub, when deleting %s : %s' %(filePath, str(e))) req.clear() req.set_status(404) req.set_header('Content-Type', 'application/json; charset=utf-8') - req.finish('Fatal error happened in delSub, when deleting %s' %(filePath)) + req.finish('Fatal error happened in delSub, when deleting %s : %s' %(filePath, str(e))) else: # Could not find req. subtitle Log.Debug('Fatal error happened in delSub, subtitle not found') @@ -472,12 +500,12 @@ def delSub(self, req): req.set_status(404) req.set_header('Content-Type', 'application/json; charset=utf-8') req.finish('Could not find req. subtitle') - except: - Log.Debug('Fatal error happened in delSub') + except Exception, e: + Log.Debug('Fatal error happened in delSub: ' + str(e)) req.clear() req.set_status(500) req.set_header('Content-Type', 'application/json; charset=utf-8') - req.finish('Fatal error happened in delSub') + req.finish('Fatal error happened in delSub: ' + str(e)) ''' TVShow ''' def TVshow(self, req): diff --git a/http/changelog.txt b/http/changelog.txt index 2343ced..3804735 100644 --- a/http/changelog.txt +++ b/http/changelog.txt @@ -1,3 +1,37 @@ +V2.2-DEV: +Internal Note: + Here we collect stuff that needs to go into the real released changelog, aka acumulated, and only since 2.1 changes here ;-) +BACKEND: + Fix: + #115 UAS: Migration fails, if plugin directory contains hidden folder + #116 UAS: Make UAS work, even if a git is dir levels too low + #117 UAS and uninstall unknown bundle + #121 UAS: Cleanup old files/folders when updating + #122 UAS: bundle migration + #138 UAS: getAllBundleInfo is reset when UASRepo is updated + New: + #129 UAS: Alllow 3.Party devs to clear their stuff + #135 WT: Tell users, if wrong install path is used + #137 WT: Add new decorator for auth + #126 UAS: Allow WebTools to autoupdate + +FRONTEND: + Fix: + TODO + New: + #126 UAS: Allow WebTools to autoupdate +#### + +V2.2-DEV-2016-02-25: +UAS: + The return of the Uninstall-button (Issue #132) +WebTools: + Implemented update of main plugin. This however currently causes an error in the logs. + +V2.2-DEV-2016-02-19: +UAS: + Changed focus after showing channel. This should not bring up the keyboard on mobile devices anymore. + V2.2-DEV-2016-02-02: UAS: Reverting Issue #119 because of reported issue with locked interface. From 0122c6b9ec32d8e54fc3dd60870a23a4437f6ef1 Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Sat, 27 Feb 2016 22:38:53 +0100 Subject: [PATCH 08/40] Here we go --- http/jscript/functions.js | 48 +++++++++++++++++++++++-- http/modules/install/jscript/install.js | 21 ++++++----- 2 files changed, 57 insertions(+), 12 deletions(-) diff --git a/http/jscript/functions.js b/http/jscript/functions.js index 80ac700..e6d91ea 100644 --- a/http/jscript/functions.js +++ b/http/jscript/functions.js @@ -28,7 +28,9 @@ var webtools = { longermodulestart: false, loading: function() {}, changelog: '', - credits: '' + credits: '', + install_WT: function() {}, + wait_update: function () {} }; // Webtools function @@ -223,7 +225,7 @@ webtools.listlogfiles = function(callback, activatemodulename) { $('#LogfilesMenu').append('

    1. Download all logfiles as Zip
    2. '); $('#LogfilesMenu').append('
    3. Refresh Logfilelist
    4. '); - + if (typeof(callback) != 'undefined') { callback('LogfileNamesFetch:Success', activatemodulename); } else { @@ -463,12 +465,15 @@ webtools.updates_check = function() { switch (compare(webtools.version, data.tag_name)) { case 0: infoarray.push('You are on the latest and greatest!'); + $('#myModalFoot').html(' '); break; case -1: infoarray.push('You\'ve fallen behind. Time to update to the greatest!'); + $('#myModalFoot').html(' '); break; case 1: infoarray.push('You are ahead of time. Your version is newer than the one on Github.'); + $('#myModalFoot').html(' '); break; } } @@ -478,7 +483,44 @@ webtools.updates_check = function() { $('#updateinfo').html('An error occured while trying to fetch information from Github. Try again in a little while.'); } }); -}; +} + +webtools.install_WT = function () { + $.ajax({ + url: '/webtools2?module=git&function=upgradeWT', + type:'PUT', + success: function (data) { + console.log('success'); + console.log(data); + webtools.wait_update(); + // Call webtools_wait_for_reload(); + // That function is an ajax call for /, if 404, wait for a few seconds, then try again. Otherwise, notify user of updated completed. + }, + error: function (data) { + console.log('error'); + console.log(data); + webtools.wait_update(); + // Notify user + } + }) +} + +webtools.wait_update = function () { + $('#myModalLabel').html(' Waiting for WebTools'); + $('#myModalBody').html('

      Waiting for WebTools to come online. Will automatically return you to start when ready.

      '); + $('#myModalFoot').html(''); + $('#myModal').modal('show'); + $.ajax({ + url:'/', + type: 'GET', + success: function () { + window.location.href='/'; + }, + error: function () { + setTimeout(webtools.wait_update,1000); + } + }) +} $(function(ready) { $('#myModal').on('hidden.bs.modal', function(e) { diff --git a/http/modules/install/jscript/install.js b/http/modules/install/jscript/install.js index ca244f4..e52d5fd 100644 --- a/http/modules/install/jscript/install.js +++ b/http/modules/install/jscript/install.js @@ -296,7 +296,7 @@ install.showChannels = function(button, type, page, highlight) { // Reset install.channelstoshow install.channelstoshow = []; $('#channelmenu>button').removeClass('btn-active'); - $('#gitlink').focus(); + $('#install_availablechannels').focus(); $('#' + type.replace(' ', '')).addClass('btn-active'); var channellist = []; @@ -360,7 +360,9 @@ install.showChannels = function(button, type, page, highlight) { for (var i = start; i < end; i++) { var key = install.channelstoshow[i]; - var installlink = ''; + var link_install = ''; + var link_update = ''; + var link_uninstall = ''; var isInstalled = false; var installDate = ''; @@ -370,23 +372,24 @@ install.showChannels = function(button, type, page, highlight) { if ((typeof(install.allBundles[key].date) != 'undefined') && (install.allBundles[key].date.length > 0)) { isInstalled = true; rowspan = 3; - installlink = ''; + //} if (((install.showOnlyInstalled === true) && (isInstalled === true)) || (install.showOnlyInstalled === false)) { var iconurl = 'icons/NoIcon.png'; @@ -413,7 +416,7 @@ install.showChannels = function(button, type, page, highlight) { newEntry.push('
      Installed:  ' + install.allBundles[key].date + ' 
      Latest Update on Github:  ' + updateTime + ' 
      ') //} newEntry.push(''); - newEntry.push(installlink); + newEntry.push(''); newEntry.push(''); $('#channellist').append(newEntry.join('\n')); From 71dd91576cf922ab02fbcaf08a1f3c63a8d53954 Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Sun, 6 Mar 2016 23:34:41 +0100 Subject: [PATCH 09/40] Added L --- Contents/Code/findUnmatched.py | 105 ++++++++++++++++++--------------- Contents/Code/language.py | 93 +++++++++++++++++++++++++++++ Contents/Code/webSrv.py | 11 +++- http/changelog.txt | 10 +++- 4 files changed, 170 insertions(+), 49 deletions(-) create mode 100644 Contents/Code/language.py diff --git a/Contents/Code/findUnmatched.py b/Contents/Code/findUnmatched.py index 727f8ca..140883c 100644 --- a/Contents/Code/findUnmatched.py +++ b/Contents/Code/findUnmatched.py @@ -4,31 +4,43 @@ # # Author: dane22, a Plex Community member # -# ###################################################################################################################### import urllib import unicodedata import json -class findUnmatched(object): +# Consts used here +AmountOfMediasInDatabase = 0 # Int of amount of medias in a database section + +class findUnmatched(object): # Defaults used by the rest of the class def __init__(self): Log.Debug('******* Starting findUnmatched *******') self.MovieChuncks = 20 self.CoreUrl = 'http://127.0.0.1:32400/library/sections/' - self.default_IGNORED_FILES = ['imdb.nfo', '.DS_Store', '__db.001', 'Thumbs.db', '.plexignore'] - self.default_IGNORED_DIRS = ['.@__thumb', '.AppleDouble', 'lost+found'] - self.default_VALID_EXTENSIONS = ['.m4v', '.3gp', '.nsv', '.ts', '.ty', '.strm', '.rm', '.rmvb', '.m3u', + + ''' Populate the defaults, if not already there ''' + def populatePrefs(self): + if Dict['FindUnmatched-default_ALL_EXTENSIONS'] == None: + Dict['FindUnmatched-default_ALL_EXTENSIONS'] = False + if Dict['FindUnmatched-default_ENABLE_PLEXIGNORE'] == None: + Dict['FindUnmatched-default_ENABLE_PLEXIGNORE'] = True + if Dict['FindUnmatched-default_IGNORE_HIDDEN'] == None: + Dict['FindUnmatched-default_IGNORE_HIDDEN'] = True + if Dict['FindUnmatched-default_IGNORED_FILES'] == None: + Dict['FindUnmatched-default_IGNORED_FILES'] = ['imdb.nfo', '.DS_Store', '__db.001', 'Thumbs.db', '.plexignore'] + if Dict['FindUnmatched-default_IGNORED_DIRS'] == None: + Dict['FindUnmatched-default_IGNORED_DIRS'] = ['.@__thumb', '.AppleDouble', 'lost+found'] + if Dict['FindUnmatched-default_VALID_EXTENSIONS'] == None: + Dict['FindUnmatched-default_VALID_EXTENSIONS'] = ['.m4v', '.3gp', '.nsv', '.ts', '.ty', '.strm', '.rm', '.rmvb', '.m3u', '.mov', '.qt', '.divx', '.xvid', '.bivx', '.vob', '.nrg', '.img', '.iso', '.pva', '.wmv', '.asf', '.asx', '.ogm', '.m2v', '.avi', '.bin', '.dat', '.dvr-ms', '.mpg', '.mpeg', '.mp4', '.mkv', '.avc', '.vp3', '.svq3', '.nuv', '.viv', '.dv', '.fli', '.flv', '.rar', '.001', '.wpl', '.zip', '.jpg', '.mp3'] - self.default_IGNORED_EXTENSIONS = ['.srt', '.xml', '.idx', '.jpg', '.sub', '.nfo', '.png', '.gif', '.txt', '.rtf', + if Dict['FindUnmatched-default_IGNORED_EXTENSIONS'] == None: + Dict['FindUnmatched-default_IGNORED_EXTENSIONS'] = ['.srt', '.xml', '.idx', '.jpg', '.sub', '.nfo', '.png', '.gif', '.txt', '.rtf', '.m3u', '.rar', '.sfv', '.md5', '.ico', '.doc', '.zip', '.SRT2UTF-8'] - self.default_ALL_EXTENSIONS = False - self.default_ENABLE_PLEXIGNORE = True - self.default_IGNORE_HIDDEN = True ''' Grap the tornado req, and process it ''' def reqprocess(self, req): @@ -36,14 +48,17 @@ def reqprocess(self, req): if function == 'missing': req.clear() req.set_status(412) - req.finish("Missing function parameter") + req.finish("Missing function parameter") elif function == 'scanSection': # Call scanSection with the url return self.scanSection(req) + elif function == 'getStatus': + # Call scanSection with the url + return self.getStatus(req) else: req.clear() req.set_status(412) - req.finish("Unknown function call") + req.finish("Unknown function call") ''' Grap the tornado req, and process it for a PUT request''' def reqprocessPost(self, req): @@ -51,44 +66,30 @@ def reqprocessPost(self, req): if function == 'missing': req.clear() req.set_status(412) - req.finish("Missing function parameter") - elif function == 'setSettingstoDefault': - return self.setSettingstoDefault(req) + req.finish("Missing function parameter") else: req.clear() req.set_status(412) - req.finish("Unknown function call") + req.finish("Unknown function call") + +# ''' + # Return current status + def getStatus1(self, req): + result = {} - # Save defaults to settings - def setSettingstoDefault(self, req, internal = False): - try: - print 'Ged Set Settings to default' - Log.Debug('findUnmatched set settings to default') - defaults = {} - defaults['IGNORED_FILES'] = self.default_IGNORED_FILES - defaults['IGNORED_DIRS'] = self.default_IGNORED_DIRS - defaults['VALID_EXTENSIONS'] = self.default_VALID_EXTENSIONS - defaults['IGNORED_EXTENSIONS'] = self.default_IGNORED_EXTENSIONS - defaults['ALL_EXTENSIONS'] = self.default_ALL_EXTENSIONS - defaults['ENABLE_PLEXIGNORE'] = self.default_ENABLE_PLEXIGNORE - defaults['IGNORE_HIDDEN'] = self.default_IGNORE_HIDDEN - Dict['findUnmatched'] = defaults - Dict.Save() - req.clear() - req.set_status(200) - req.set_header('Content-Type', 'application/json; charset=utf-8') - req.finish(json.dumps(Dict['findUnmatched'])) - except Exception, e: - print 'GED Exception in setSettingstoDefault', str(e) - Log.Debug('Fatal error happened in setSettingstoDefault: ' + str(e)) - req.clear() - req.set_status(500) - req.set_header('Content-Type', 'application/json; charset=utf-8') - req.finish('Fatal error happened in getUpdateList: ' + str(e)) + + result['AmountOfMediasInDatabase'] = AmountOfMediasInDatabase + + req.clear() + + req.set_status(200) + req.set_header('Content-Type', 'application/json; charset=utf-8') + req.finish(json.dumps(result)) # Main call for function..... def scanSection(self, req): + global AmountOfMediasInDatabase # Scan the file system def getFiles(filePath): @@ -103,25 +104,35 @@ def getFiles(filePath): if Dict['findUnmatched-IGNORED_FILES'] == None: Dict['findUnmatched-IGNORED_FILES'] = self.default_IGNORED_FILES + return [] + except Exception, e: + print 'GED Exception', str(e) - return [] + # Background thread starter + def getStatus(self, req, thread='', section=-1): - except Exception, e: - print 'GED Exception', str(e) + if thread == 'scanMovieDB': + Thread.Create(self.scanMovieDb(section)) + + + +#Thread.Create(backgroundScanThread, globalize=True, title=title, key=key, sectiontype=sectiontype, paths=paths) # Get a list of all files in a Movie Library def scanMovieDb(sectionNumber): + global AmountOfMediasInDatabase try: mediasFromDB = [] Log.Debug('Starting scanMovieDb for section %s' %(sectionNumber)) # # Start by getting the totals of this section -# totalSize = XML.ElementFromURL(self.CoreUrl + sectionNumber + '/all?X-Plex-Container-Start=1&X-Plex-Container-Size=0').get('totalSize') + totalSize = XML.ElementFromURL(self.CoreUrl + sectionNumber + '/all?X-Plex-Container-Start=1&X-Plex-Container-Size=0').get('totalSize') + AmountOfMediasInDatabase = totalSize # Log.Debug('Total size of medias are %s' %(totalSize)) # So let's walk the library iStart = 1 @@ -153,7 +164,7 @@ def scanMovieDb(sectionNumber): if sectionNumber == 'missing': req.clear() req.set_status(412) - req.finish("Missing section parameter") + req.finish("Missing section parameter") # Let's find out the info of section here response = XML.ElementFromURL(self.CoreUrl).xpath('//Directory[@key=' + sectionNumber + ']') sectionTitle = response[0].get('title') @@ -170,6 +181,8 @@ def scanMovieDb(sectionNumber): # print 'GED filesFromDatabase:', filesFromDatabase print 'GED number', len(filesFromDatabase) + AmountOfMediasInDatabase = len(filesFromDatabase) + Log.Debug('************** Files from database *****************') Log.Debug(filesFromDatabase) Log.Debug('************** Files from database end *************') diff --git a/Contents/Code/language.py b/Contents/Code/language.py new file mode 100644 index 0000000..b470e25 --- /dev/null +++ b/Contents/Code/language.py @@ -0,0 +1,93 @@ +###################################################################################################################### +# Language helper unit +# +# Author: dane22, a Plex Community member +# +# This unit works with supported languages within Plex +# +# NAME variable must be defined in the calling unit, and is the name of the application +# +###################################################################################################################### + +import json, sys + +class language(object): + # Defaults used by the rest of the class + def __init__(self): + return + + ''' Grap the tornado req, and process it for a GET request''' + def reqprocess(self, req): + function = req.get_argument('function', 'missing') + if function == 'missing': + req.clear() + req.set_status(412) + req.finish('Missing function parameter') + elif function == 'getCountryCodes': + return self.getCountryCodes(req) + elif function == 'getMatch': + return self.getMatch(req) + elif function == 'getLangCodeList': + return self.getLangCodeList(req) + elif function == 'getCodeLangList': + return self.getCodeLangList(req) + else: + req.clear() + req.set_status(412) + req.finish('Unknown function call') + + ''' Returns an array of valid country codes ''' + def getCountryCodes(self, req): + req.clear() + req.set_status(200) + req.finish(json.dumps(Locale.Language.All())) + + ''' Here we return a valid country code, based on the language param ''' + def getMatch(self, req): + code = req.get_argument('language', 'missing') + if code == 'missing': + req.clear() + req.set_status(412) + req.finish('Missing language parameter') + # Match the code + req.clear() + req.set_status(200) + req.finish(json.dumps(Locale.Language.Match(code))) + + ''' Here we return an ordered jason of language:countrycode for all the valid ones ''' + def getLangCodeList(self, req): + # Walk the darn module + all_languages = {} + cls = dir(Locale.Language) + for name in cls: + if name[0] != '_': + if name not in ['All', 'Match', 'lock']: + code = Locale.Language.Match(name) + if code != 'xx': + all_languages[name] = code + req.clear() + req.set_status(200) + req.finish(json.dumps(all_languages, sort_keys=True)) + + ''' Here we return an ordered jason of countrycode:language for all the valid ones ''' + def getCodeLangList(self, req): + # Walk the darn module + all_languages = {} + cls = dir(Locale.Language) + for name in cls: + if name[0] != '_': + if name not in ['All', 'Match', 'lock']: + code = Locale.Language.Match(name) + if code != 'xx': + all_languages[code] = name + req.clear() + req.set_status(200) + req.finish(json.dumps(all_languages, sort_keys=True)) + + + + + + + + diff --git a/Contents/Code/webSrv.py b/Contents/Code/webSrv.py index 0e8c053..e9c5dac 100644 --- a/Contents/Code/webSrv.py +++ b/Contents/Code/webSrv.py @@ -6,8 +6,6 @@ # Author: dagaluf, a Plex Community member # Author: dane22, a Plex Community member # -# Support thread: https://forums.plex.tv/index.php/topic/119940-webtool-subtitle-manager-development/ -# ###################################################################################################################### from tornado.web import * @@ -24,6 +22,7 @@ from pms import pms from settings import settings from findUnmatched import findUnmatched +from language import language import os @@ -63,6 +62,12 @@ def isCorrectPath(req): #************** webTools functions ****************************** ''' Here we have the supported functions ''' class webTools(object): + # Defaults used by the rest of the class + def __init__(self): + # Find-Unmatched settings stuff + findUnmatched().populatePrefs() + + ''' Return version number, and other info ''' def getVersion(self): retVal = {'version': VERSION, @@ -235,6 +240,8 @@ def get(self, **params): self = settings().reqprocess(self) elif module == 'findUnmatched': self = findUnmatched().reqprocess(self) + elif module == 'language': + self = language().reqprocess(self) else: self.clear() self.set_status(412) diff --git a/http/changelog.txt b/http/changelog.txt index 3804735..8ba7313 100644 --- a/http/changelog.txt +++ b/http/changelog.txt @@ -14,12 +14,20 @@ BACKEND: #135 WT: Tell users, if wrong install path is used #137 WT: Add new decorator for auth #126 UAS: Allow WebTools to autoupdate + #### WT: Added a language module for devs FRONTEND: Fix: - TODO + #131 UAS: After changin category, focus is no longer set on inputbox + #139 UAS: Unknown bundles without url won't be able to be uninstalled or re-installed. + #140 UAS: Migrate now always goes back to showing ALL available bundles + #-- Subtitlemgmt: Added more logging for uploads. And fixed error reported by Dane22 about uploads. (2016-03-04) New: #126 UAS: Allow WebTools to autoupdate + #142 LogViewer: Search for keywords, highlighting of the same. Jump to top. + #133 Subtitlemgmt: Added GUI for uploading subtitles + #112 Subtitlemgmt: Allow delete/view for agent subtitles aswell. + #### V2.2-DEV-2016-02-25: From e43cd58c049e129acf00e1b22200a1687b2ba1ee Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Sun, 6 Mar 2016 23:35:57 +0100 Subject: [PATCH 10/40] Added Language module...See docs --- Contents/Code/Docs/webtools-README_DEVS.odt | Bin 96260 -> 88024 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Contents/Code/Docs/webtools-README_DEVS.odt b/Contents/Code/Docs/webtools-README_DEVS.odt index 0953083f3925d474421fcd558e5ad542032ba4ec..3a3c77f9fde06ba33c2c97d269712b7e7de3cc15 100644 GIT binary patch delta 38985 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,hKn^q7LTE>C9rWf=F!uN1#+nJN0{iT^yO6CNN_ zAt@Vzj8dWVw*w0*b@+*~5W_RsWH@)$#KR_W zhNA;>TG?D!w!leSzlsTcts2^6Cbep5y7~79NfT(Q8x%Vj(H83Qg)_MBquLrdKAm?V z;L_6x$((ahZc4DpFWUIG7N9#}qmR+&Wrz)1nqH5J={~5NU=)STzBfjX?+%z8{lc#n zqkO1fSe>*uOxrU>UN_q!4M6+cvp)~nG^9%B`g}V-#y1@(xK$K`50>1sVz!|njf2v$ zKj+PTM$G7T3z<0b{N$#s#G0)=)v&>e)9H4${OW@|B?4&;!cvNtq-cau(@L8YNU6;#;M7~kkQ78f*xN4q&Z(n?xMWCRP8a* z1diINz{;EYH7i?ZCE6a3icD#fiRFA)1Ft8raokSZ?wCo8!yy|_PY^i_YNE#-87#XP zD--@3_|#uf^qeRnfNL%m7U`6=&qRG?5H))s9_-5=)Mn4xl1(sYQ8nT<4-j|hp%l$Co>ra~<%2RqHt`?zlriL)VcR>;`M$X6O@2go*W|zSo1j#TLuh7Y_ z@k3tEOg*Gm@df1G{xjz^o{x+|BMYnUaU5R2%Bu3V0TNuPJTh0&V*z>u;d`|)+j0}? zdebcW!ivT`pA3LxU>> z8QFbGRsf*8~65 z^*(T^na)_Jt){BEWD^Sz-85liR1>#6!SaWbitMl%!Z4x&$Sz<~D#kB`Rgw@C*i?$t zLf8ZNjdgQvu-|DSXY&puaw}Ur!IiZOzErIsL$laR>atC=yQZ-~N|ydvBRDc0%@yGR z8KIVx;~U2Bg=bl;%V`fm=i_W&7z5u~>1>-h-5um!i@El3P4A*hW$ez z>t(t%{ONOai}DA7=kXYx`!q8Q^Rx&G=0ZTxf~bYqPf)eE&M|<=uzv+5fjdO@nL

      iMT|n#Gzh2F)t4eyOz#txc{@b8aad*P(kWneE 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�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 W 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 z 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 From 244d62ba5f4519112274af5db149634edcf3d4bc Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Sun, 6 Mar 2016 23:38:30 +0100 Subject: [PATCH 11/40] Forgot to update my branch with the READMME ;-) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3c36572..d294b79 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ WebTools.bundle =============== +[![GitHub issues](https://img.shields.io/github/issues/dagalufh/WebTools.bundle.svg?style=flat)](https://github.com/dagalufh/WebTools.bundle/issues) [![](https://img.shields.io/github/release/dagalufh/WebTools.bundle.svg?style=flat)](https://github.com/dagalufh/WebTools.bundle/releases) + Please see the wiki for futher information From 03be2ea5b9323e83c87ec3c48a2483c44f8cbb67 Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Wed, 9 Mar 2016 22:12:07 +0100 Subject: [PATCH 12/40] Added support for ISO639-3 to the language module --- Contents/Code/Docs/webtools-README_DEVS.odt | Bin 88024 -> 90512 bytes Contents/Code/findUnmatched.py | 68 +++--- Contents/Code/language.py | 219 ++++++++++++++++++++ 3 files changed, 252 insertions(+), 35 deletions(-) diff --git a/Contents/Code/Docs/webtools-README_DEVS.odt b/Contents/Code/Docs/webtools-README_DEVS.odt index 3a3c77f9fde06ba33c2c97d269712b7e7de3cc15..45c5118000a1041c1789605e33bbf575425c5422 100644 GIT binary patch delta 40388 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 aZLKdd(s9`!5S@eyVyDw^{axst2l_t_@uzzL delta 37862 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 c_3w>-oHcwZ?+ Date: Wed, 16 Mar 2016 14:43:30 +0100 Subject: [PATCH 13/40] First attempt for new module findMedia --- .../Code/Docs/FindUnmatched-README_DEVS.odt | Bin 31324 -> 0 bytes Contents/Code/Docs/webtools-README_DEVS.odt | Bin 90512 -> 93109 bytes Contents/Code/findMedia.py | 416 ++++++++++++++++++ Contents/Code/findUnmatched.py | 203 --------- Contents/Code/settings.py | 2 +- Contents/Code/webSrv.py | 14 +- 6 files changed, 424 insertions(+), 211 deletions(-) delete mode 100644 Contents/Code/Docs/FindUnmatched-README_DEVS.odt create mode 100644 Contents/Code/findMedia.py delete mode 100644 Contents/Code/findUnmatched.py diff --git a/Contents/Code/Docs/FindUnmatched-README_DEVS.odt b/Contents/Code/Docs/FindUnmatched-README_DEVS.odt deleted file mode 100644 index 04602edaacb9b313b9990f981648a50bc49080bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31324 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%0AFkBB7T712pG@rR-NcVL~+KBtL zd}lus4>T5AQYDyh${}0w0(?HsQp;)AaN{Ql{puNHwqCli%q_3$a%+q2Vq?1)#~8W> z_e_t_a#hruwqE(5MwS=(j_zaj-d3Po2eS%s;&i$gN-ASye+9skWc{16rD|szOQnW? zZ8g0~^@Dkj#^uGhaBxN7}_w~T4 zsF^C(Q9b>h${EqqWH`1^8i8IRu&=DS%^D11$B{$SSS{3U<-1#j?ze>kC!-3kfY8EhT` ztJ$+e(!r7dnjay|KHL*ZswvHN1;57=d}>-tS<&uMY6qw9G+bYp9K9(oaS`28&b;wi zDJvRPFG_+jT`MUqr)7!l=tSBFmf~S{QzH7O+aemxM_J*SFS%#>q$<`^95L6sa=!GI zIRS0kbY65uXvK_{l<*l(lC)x47QWVW-t=A7n3AefH1PcLQ{jH}EZi%>p7igZ?!FJ6 zbF<8&EK?To{L0Mq4YuW+O!Yn3joJX`J5!eEPdg6HpxZ%u<9DxS&yt~Ft7{qPRC*_K+yJ?+iT+q{?)#g5kqC91!Z~cNd71L z`qhDFXJl_>Zsy|3`QY0H@v7IR%wY~RzIe2E8e8B@& z)w_w=3QZJPJR}^{Uy-OwR=ujP{?2j+8niqKhWtZ)e+-2LY3zRpAM{Gp!QR};0^t0w zagZ)-%#IF@07uXaNC5L+=Rf`r6X?a?@wvDfxdL2_jhz1j-|O7Sf8XEhuKwS-Tpb*2 z|KGXHZ5@nU&HgyTze`kl9hLd-M`&bXVrFXwQjmi)vkAc2`M-0HApe!F^s1KE$(FD5 z&k7>}ZT)w#R(3`fW-iPkR<3qNjxPT}Yk#Nh*YkHYvNyB+4}64wvr|WB2McF2mp@&n zztaL1h*Mr%O_)(yL4x^z?k|wXqd`s9zK;}b{Qwhtb#%&HJ A?FfDbQto0&IH)Ix zEXu)P)mlJ3<*ml-y3eNfH?WHF={8^h>#|Ua$H&QhA-256ISru6qkd=9xL3`UP-9R3 zgDIvcNl~3nB%w5{6qgl5ymZ}ko@jaS2yx`?ofkiAb_YGUY>hr9PUj#mL-_NOLHVZ> z-DU7|`aJtU-CklFM5;R?4T#nWEl9rPGRS#nbcQN`%pe6Kr(~a7&ab%c*1~(!(YO@? z{4e3y^XWMQz+BV}SxEDE_bhu0cw@o%UMQdwRA0G0OH7}#i5IrL$o{rKQ8=WxsYko^ z8PRj_LRESUz-8z;th{8I&>;|ib)QGLun59rYI`fJR4(rFZtpqvcmgMlEf(FhaYmOS zW|#hU=aZH{#OrPNY16%d0dyPY{mV-L4uJ{w&(m2!I{y>>F{@Qc_OD$3K8E!-3urFu zKMrO6L&_f)`_D;suNeB9{1pD0srT=ke-5m?CgJ_2Nf4*W@07fMXZ*8!?XSDU()()^ z=HEI0>}q*+zx^gD6A=9Ww=?eFx&HhBd3D45CO5M`J7xZz@6X8j*W+Ap{OiN!56*u= z*57-?a{k}9|DSR8ub22Y-+v+P@AvY5Bj?Y!`_FP-k@q)+{*9d9IQ)MrrR{H|{Kn<~ zTPc@+BjqgarxgG{s-LtPnYc#r+<^*-w6F*sQu69`HI`W zsqJrs{TapoSW F{{b`d3Wopy diff --git a/Contents/Code/Docs/webtools-README_DEVS.odt b/Contents/Code/Docs/webtools-README_DEVS.odt index 45c5118000a1041c1789605e33bbf575425c5422..e1e2ae9cbd25fc51a70683e539ed638731711844 100644 GIT binary patch delta 40714 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�{!5+ZubJcW&cGqX$9{(iI>2jP}fbf)BL3Cm%P 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 ZGWyR2bP|z&q)QYxdk{sFbo&GX_&*9RWY7Qr delta 38024 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%0D)r3FGG;(=cIu3`v9cPExBo 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 Date: Wed, 16 Mar 2016 18:14:05 +0100 Subject: [PATCH 14/40] Fixed issue #144 --- Contents/Code/findMedia.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Contents/Code/findMedia.py b/Contents/Code/findMedia.py index 338d9d0..371dc90 100644 --- a/Contents/Code/findMedia.py +++ b/Contents/Code/findMedia.py @@ -19,6 +19,14 @@ mediasFromFileSystem = [] # Files from the file system statusMsg = 'idle' # Response to getStatus runningState = 0 # Internal tracker of where we are +Extras = ['behindthescenes', + 'deleted', + 'featurette', + 'interview', + 'scene', + 'short', + 'trailer' + ] # Local extras class findMedia(object): init_already = False # Make sure init only run once @@ -254,6 +262,10 @@ def getFiles(filePath): # File has a valid extention if file.startswith('.') and Dict['findMedia']['IGNORE_HIDDEN']: continue + # Filter out local extras + if '-' in file: + if os.path.splitext(os.path.basename(file))[0].rsplit('-', 1)[1] in Extras: + continue mediasFromFileSystem.append(Core.storage.join_path(root,file)) statusMsg = 'Scanning file: ' + file Log.Debug('***** Finished scanning filesystem *****') From f068af8d6aa2f4b1673a9c465ff778c3a0606c52 Mon Sep 17 00:00:00 2001 From: Tommy Mikkelsen Date: Fri, 18 Mar 2016 19:35:47 +0100 Subject: [PATCH 15/40] Align with Mike --- http/changelog.txt | 3 +- http/index.html | 1 - http/jscript/functions.js | 148 ++++++++++++++++-- http/modules/install/jscript/install.js | 5 +- http/modules/logviewer/jscript/logviewer.js | 13 +- .../subtitlemgmt/jscript/functions_video.js | 21 +-- .../subtitlemgmt/jscript/subtitlemgmt.js | 108 ++++++++++++- 7 files changed, 271 insertions(+), 28 deletions(-) diff --git a/http/changelog.txt b/http/changelog.txt index 8ba7313..2087225 100644 --- a/http/changelog.txt +++ b/http/changelog.txt @@ -21,12 +21,13 @@ FRONTEND: #131 UAS: After changin category, focus is no longer set on inputbox #139 UAS: Unknown bundles without url won't be able to be uninstalled or re-installed. #140 UAS: Migrate now always goes back to showing ALL available bundles - #-- Subtitlemgmt: Added more logging for uploads. And fixed error reported by Dane22 about uploads. (2016-03-04) + #### Subtitlemgmt: Added more logging for uploads. And fixed error reported by Dane22 about uploads. (2016-03-04) New: #126 UAS: Allow WebTools to autoupdate #142 LogViewer: Search for keywords, highlighting of the same. Jump to top. #133 Subtitlemgmt: Added GUI for uploading subtitles #112 Subtitlemgmt: Allow delete/view for agent subtitles aswell. + #### Subtitlemgmt: Now uses the new Language Module #### diff --git a/http/index.html b/http/index.html index 37d56d9..65731d9 100755 --- a/http/index.html +++ b/http/index.html @@ -10,7 +10,6 @@ - diff --git a/http/jscript/functions.js b/http/jscript/functions.js index e6d91ea..4c266d0 100644 --- a/http/jscript/functions.js +++ b/http/jscript/functions.js @@ -30,7 +30,15 @@ var webtools = { changelog: '', credits: '', install_WT: function() {}, - wait_update: function () {} + wait_update: function () {}, + languagecodes: {}, + // Search a table that has the tr with an id tag unique for each row + keywordarray: [], + currentkeyword: 0, + searchkeyword: function () {}, + next: function () {}, + previous: function () {}, + clearresult: function () {} }; // Webtools function @@ -62,6 +70,25 @@ webtools.list_modules.inline([ } }); }, + function(callback, activatemodulename) { + //Name:VersionFetch + webtools.loading(); + $.ajax({ + url: '/webtools2?module=language&function=get3CodeLangList', + cache: false, + dataType: 'JSON', + success: function(data) { + webtools.languagecodes = data; + console.log(webtools.languagecodes); + callback('LanguageCodes:Success', activatemodulename); + }, + error: function(data) { + data.url = this.url; + webtools.display_error('Failed fetching the languagecodes from the server. Reload the page and try again.
      If the error persists please restart the server.
      Contact devs on the Plex forums if it occurs again.', data); + webtools.list_modules.abort('Error: ' + data.statusText); + } + }); + }, function(callback, activatemodulename) { webtools.listlogfiles(callback, activatemodulename); }, @@ -262,8 +289,7 @@ webtools.log = function(LogEntry, Source) { }; webtools.show_log = function(filename) { - webtools.loading(); - + webtools.loading(); $('#ContentBody').html('Fetching Logfile..'); $('#ContentFoot').html(''); $('#navfoot').html(''); @@ -276,7 +302,7 @@ webtools.show_log = function(filename) { success: function(logs) { logs = logs.split('\n'); //$('#ContentBody').html(logs.join('
      ')); - var logtable = ''; + var logtable = '
      '; //logtable += ''; if (logs.length > 0) { for (var i = 0; i < logs.length; i++) { @@ -313,7 +339,8 @@ webtools.show_log = function(filename) { }); } else { $('#ContentHeader').html('Logfile: ' + filename); - + $('#navfoot').html(''); + webtools.clearresult(); $.ajax({ url: '/webtools2', data: { @@ -326,7 +353,7 @@ webtools.show_log = function(filename) { dataType: 'JSON', success: function(logs) { //$('#ContentBody').html(logs.join('
      ')); - var logtable = '
      Changelog
      '; + var logtable = '
      '; logtable += ''; if (logs.length > 0) { for (var i = 0; i < logs.length; i++) { @@ -347,7 +374,7 @@ webtools.show_log = function(filename) { tdtext = 'bg-info'; } - logtable += ''; + logtable += ''; } } else { logtable += ''; @@ -486,20 +513,29 @@ webtools.updates_check = function() { } webtools.install_WT = function () { + + $('#myModalLabel').html(' Installing WebTools'); + $('#myModalBody').html('

      Installation in progress.

      '); + $('#myModalFoot').html(''); $.ajax({ url: '/webtools2?module=git&function=upgradeWT', type:'PUT', + dataType:'text', success: function (data) { + $('#myModalLabel').html(' Waiting for WebTools'); + $('#myModalBody').html('

      Waiting for WebTools to come online. Will automatically return you to start when ready.

      '); + $('#myModalFoot').html(''); + console.log('success'); console.log(data); - webtools.wait_update(); + setTimeout(webtools.wait_update,5000); // Call webtools_wait_for_reload(); // That function is an ajax call for /, if 404, wait for a few seconds, then try again. Otherwise, notify user of updated completed. }, error: function (data) { console.log('error'); console.log(data); - webtools.wait_update(); + //webtools.wait_update(); // Notify user } }) @@ -595,4 +631,98 @@ webtools.dynamicSort = function(property) { var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0; return result * sortOrder; } +} + +webtools.searchkeyword = function(tablename) { + webtools.keywordarray = []; + webtools.currentkeyword = 0; + $('#webtoolssearchkeywordresult').html(''); + + if ($('#webtoolssearchKeyword').val().length > 0) { + $('#'+tablename + ' tr').each(function (index,value) { + var children = $(this).children() + $(children[1]).removeClass('bg-info'); + $(children[1]).removeClass('keyword'); + if (typeof($(this).context) != 'undefined') { + if ($(this).context.innerHTML.toLowerCase().indexOf($('#webtoolssearchKeyword').val().toLowerCase()) != -1) { + $(children[1]).addClass('bg-info'); + $(children[1]).addClass('keyword'); + webtools.keywordarray.push($(this).attr('id')); + } + } + }) + if (webtools.keywordarray.length > 0) { + $('.bg-primary').addClass('bg-info'); + $('.bg-primary').removeClass('bg-primary'); + var targetrow = $('#' + webtools.keywordarray[webtools.currentkeyword]).children(); + $(targetrow[1]).addClass('bg-primary'); + $(targetrow[1]).removeClass('bg-info'); + + $('html, body').animate({ + scrollTop: ($('#' + webtools.keywordarray[webtools.currentkeyword]).offset().top - 60) + }); + + $('#webtoolssearchbuttonnext').prop('disabled',false); + $('#webtoolssearchbuttonprevious').prop('disabled',false); + // Enable Next / Previous buttons + } else { + $('#webtoolssearchbuttonnext').prop('disabled',true); + $('#webtoolssearchbuttonprevious').prop('disabled',true); + } + $('#webtoolssearchkeywordresult').html('Found ' + webtools.keywordarray.length + ' Rows'); + } +} + +webtools.next = function () { + if (webtools.keywordarray.length > 0) { + webtools.currentkeyword++; + if (webtools.currentkeyword >= webtools.keywordarray.length) { + webtools.currentkeyword = 0; + } + //console.log('Jumping to: ' + logviewer.currentkeyword ); + $('.bg-primary').addClass('bg-info'); + $('.bg-primary').removeClass('bg-primary'); + var targetrow = $('#' + webtools.keywordarray[webtools.currentkeyword]).children(); + $(targetrow[1]).addClass('bg-primary'); + $(targetrow[1]).removeClass('bg-info'); + + $('html, body').animate({ + scrollTop: ($('#' + webtools.keywordarray[webtools.currentkeyword]).offset().top - 60) + }); + } +} + +webtools.previous = function () { + if (webtools.keywordarray.length > 0) { + webtools.currentkeyword--; + if (webtools.currentkeyword < 0) { + webtools.currentkeyword = webtools.keywordarray.length-1; + } + + //console.log('Jumping to: ' + logviewer.currentkeyword ); + $('.bg-primary').addClass('bg-info'); + $('.bg-primary').removeClass('bg-primary'); + var targetrow = $('#' + webtools.keywordarray[webtools.currentkeyword]).children(); + $(targetrow[1]).addClass('bg-primary'); + $(targetrow[1]).removeClass('bg-info'); + + $('html, body').animate({ + scrollTop: ($('#' + webtools.keywordarray[webtools.currentkeyword]).offset().top - 60) + }); + } +} + +webtools.jumptotop = function() { + $('html, body').animate({ + scrollTop: (0) + }); +} + +webtools.clearresult = function () { + webtools.keywordarray = []; + webtools.currentkeyword = 0; + $('#webtoolssearchkeywordresult').html(''); + $('#webtoolssearchKeyword').val(''); + $('#webtoolssearchbuttonnext').prop('disabled',true); + $('#webtoolssearchbuttonprevious').prop('disabled',true); } \ No newline at end of file diff --git a/http/modules/install/jscript/install.js b/http/modules/install/jscript/install.js index e52d5fd..58bc11b 100644 --- a/http/modules/install/jscript/install.js +++ b/http/modules/install/jscript/install.js @@ -244,6 +244,7 @@ install.loadChannels = function(InitalRun) { var menu = ''; var checked = ''; + install.showOnlyInstalled = false; if (install.showOnlyInstalled === true) { checked = 'checked'; } @@ -372,7 +373,9 @@ install.showChannels = function(button, type, page, highlight) { if ((typeof(install.allBundles[key].date) != 'undefined') && (install.allBundles[key].date.length > 0)) { isInstalled = true; rowspan = 3; - link_install = ''; + if ((key.indexOf('http') != -1) && (key.indexOf('https') != -1)) { + link_install = ''; + } } diff --git a/http/modules/logviewer/jscript/logviewer.js b/http/modules/logviewer/jscript/logviewer.js index a1f8836..f26509e 100644 --- a/http/modules/logviewer/jscript/logviewer.js +++ b/http/modules/logviewer/jscript/logviewer.js @@ -6,7 +6,7 @@ webtools.functions.logviewer = { start: function() {}, hasoptions: false, fetchlogfiles: function() {}, - viewlogfile: function() {} + viewlogfile: function() {}, }; // Alias: @@ -14,11 +14,12 @@ var logviewer = webtools.functions.logviewer; logviewer.start = function() { webtools.loading(); - $('#ContentHeader').html('Viewing Logfile: Download selected logfile / Download all as zip'); + $('#ContentHeader').html('Viewing Logfile: Download selected logfile / Download all as zip
      '); $('#ContentBody').html(''); $('#ContentFoot').html(''); logviewer.fetchlogfiles(); - + $('#navfoot').html(''); + webtools.clearresult(); $('#LogfileList').change(function() { // Display loading screen when fetching. webtools.loading(); @@ -51,6 +52,7 @@ logviewer.fetchlogfiles = function() { }; logviewer.viewlogfile = function(filename) { + webtools.clearresult(); $.ajax({ url: '/webtools2', data: { @@ -83,7 +85,7 @@ logviewer.viewlogfile = function(filename) { tdtext = 'bg-info'; } - subtitle += ''; + subtitle += ''; } } else { subtitle += ''; @@ -109,4 +111,5 @@ logviewer.download = function(filename) { } else { window.location.href = '/webtools2?module=logs&function=download'; } -} \ No newline at end of file +} + diff --git a/http/modules/subtitlemgmt/jscript/functions_video.js b/http/modules/subtitlemgmt/jscript/functions_video.js index bc68e1c..d00d193 100644 --- a/http/modules/subtitlemgmt/jscript/functions_video.js +++ b/http/modules/subtitlemgmt/jscript/functions_video.js @@ -141,13 +141,13 @@ subtitlemgmt.display_episodes = function() { var selectedsubtitle = ''; if (subtitle.languageCode != null) { - if (typeof(languagecodes[subtitle.languageCode.toLowerCase()]) != 'undefined') { - //language = ''+subtitle.languageCode.toUpperCase()+''; - var languagetext = languagecodes[subtitle.languageCode.toLowerCase()]; - if (languagecodes[subtitle.languageCode.toLowerCase()].length > 8) { - languagetext = languagecodes[subtitle.languageCode.toLowerCase()].substr(0, 6) + '...'; + if (typeof(webtools.languagecodes[subtitle.languageCode.toLowerCase()]) != 'undefined') { + //language = ''+subtitle.languageCode.toUpperCase()+''; + var languagetext = webtools.languagecodes[subtitle.languageCode.toLowerCase()]; + if (webtools.languagecodes[subtitle.languageCode.toLowerCase()].length > 8) { + languagetext = webtools.languagecodes[subtitle.languageCode.toLowerCase()].substr(0, 6) + '...'; } - language = '' + languagetext + ''; + language = '' + languagetext + ''; } else { language = subtitle.languageCode.toLowerCase(); } @@ -179,7 +179,7 @@ subtitlemgmt.display_episodes = function() { anysubtitleadded = true; var view = ''; var checkbox = ''; - if (subtitle.location == 'Sidecar') { + if ( (subtitle.location == 'Sidecar') || (subtitle.location == 'Agent') ) { checkbox = ''; view = ''; } @@ -192,7 +192,7 @@ subtitlemgmt.display_episodes = function() { newEntry.push(''); } newEntry.push('
      Row#Logentry
      #' + (i + 1) + '' + logs[i] + '
      #' + (i + 1) + '' + logs[i] + '
      #-Empty file
      #' + (i + 1) + '' + data[i] + '
      #' + (i + 1) + '' + data[i] + '
      #-Empty file
      No subtitles that matched your filter. Video has a total of ' + subtitlemgmt.selected_section.contents[i].subtitles.length + ' subtitles.
      '); - newEntry.push('

      '); + newEntry.push(''); newEntry.push(''); $("#ContentBody").append(newEntry.join('\n')); } @@ -279,12 +279,13 @@ subtitlemgmt.subtitle_delete = function(videoKey) { type: 'DELETE', cache: false, success: function(response, status, xhr) { + $('input[value="' + splitstring[0] + ',' + splitstring[1] + '"]').prop('disabled', true); $('input[value="' + splitstring[0] + ',' + splitstring[1] + '"]').prop('checked', false); $('input[value="' + splitstring[0] + ',' + splitstring[1] + '"]').parent().parent().addClass('bg-danger'); $('input[value="' + splitstring[0] + ',' + splitstring[1] + '"]').parent().parent().fadeOut(2000); - webtools.log("Deleted File: " + response['Deleted file']); - callback("Deleted File: " + response['Deleted file'], subtitlearray); + webtools.log("Deleted File: " + response.FilePath); + callback("Deleted File: " + response.FilePath, subtitlearray); }, error: function(response) { webtools.log(JSON.stringify(response)); diff --git a/http/modules/subtitlemgmt/jscript/subtitlemgmt.js b/http/modules/subtitlemgmt/jscript/subtitlemgmt.js index 07f4806..307239f 100644 --- a/http/modules/subtitlemgmt/jscript/subtitlemgmt.js +++ b/http/modules/subtitlemgmt/jscript/subtitlemgmt.js @@ -49,7 +49,8 @@ webtools.functions.subtitlemgmt = { view_subtitle: function() {}, subtitle_select_all: function() {}, subtitle_delete_confirm: function() {}, - subtitle_delete: function() {} + subtitle_delete: function() {}, + upload_dialog: function() {} }; // Alias: var subtitlemgmt = webtools.functions.subtitlemgmt; @@ -344,4 +345,109 @@ subtitlemgmt.show_options = function() { subtitlemgmt.set_pageToShow = function(pageToShow) { subtitlemgmt.selected_section.currentpage = Number(pageToShow); +} + +subtitlemgmt.upload_dialog = function(videokey) { + webtools.log('Requesting getParts for movie/episode with key: ' + videokey); + $('#myModalLabel').html(' Upload Subtitle'); + $('#myModalBody').html('Fetching info about video/episode.'); + $('#myModalFoot').html(' '); + $('#myModal').modal('show'); + + $.ajax({ + url: '/webtools2?module=pms&function=getParts&key=' + videokey, + type: 'GET', + dataType: 'JSON', + success: function(data) { + webtools.log('Received getParts' + JSON.stringify(data)); + $('#myModalLabel').html(' Upload Subtitle'); + + + //Example return of above: /home/cabox/workspace/dummylibraries/movies/10 Things I Hate About You (1999)/10 Things I Hate About You (1999).mp4 + var subtitleform = [ + '
      ', + '', + '', + '', + '', + '', + '
      If a file exists with the selected language and file extension, it will be overwritten.
      Subtitle:
      Language:
      Subtitle target file:
      Note: Hover over files in above selection to see full path.
      ', + ]; + subtitleform = subtitleform.join('\n') + + var languagelist = []; + for (var key in webtools.languagecodes) { + languagelist.push('