From 586609bb2cc7e6b26a1df5faef7f5cdd6d79581f Mon Sep 17 00:00:00 2001 From: NoDRM Date: Mon, 27 Dec 2021 10:35:02 +0100 Subject: [PATCH] Remove ancient code to import keys from ancient plugins There were a couple specific DRM removal plugins before the DeDRM plugin was created. These are obsolete since a long time, there's no need to still have the code to import their config. If people are still using these ancient plugins, they'll have to update to an older version of DeDRM first, and then update to the current one. --- DeDRM_plugin/__init__.py | 13 +-- DeDRM_plugin/prefs.py | 219 ++------------------------------------- 2 files changed, 14 insertions(+), 218 deletions(-) diff --git a/DeDRM_plugin/__init__.py b/DeDRM_plugin/__init__.py index 2351220..f433949 100644 --- a/DeDRM_plugin/__init__.py +++ b/DeDRM_plugin/__init__.py @@ -102,8 +102,13 @@ class DeDRMError(Exception): pass from calibre.customize import FileTypePlugin -from calibre.constants import iswindows, isosx -from calibre.gui2 import is_ok_to_use_qt + +try: + from calibre.constants import iswindows, isosx +except: + iswindows = sys.platform.startswith('win') + isosx = sys.platform.startswith('darwin') + from calibre.utils.config import config_dir @@ -197,10 +202,6 @@ class DeDRM(FileTypePlugin): traceback.print_exc() pass - # convert old preferences, if necessary. - from calibre_plugins.dedrm.prefs import convertprefs - convertprefs() - # mark that this version has been initialized os.mkdir(self.verdir) except Exception as e: diff --git a/DeDRM_plugin/prefs.py b/DeDRM_plugin/prefs.py index 16a8522..c83e0a5 100755 --- a/DeDRM_plugin/prefs.py +++ b/DeDRM_plugin/prefs.py @@ -5,13 +5,15 @@ __license__ = 'GPL v3' # Standard Python modules. -import os, sys, re, hashlib -import codecs, json +import os import traceback -from calibre.utils.config import dynamic, config_dir, JSONConfig -from calibre_plugins.dedrm.__init__ import PLUGIN_NAME, PLUGIN_VERSION -from calibre.constants import iswindows, isosx +from calibre.utils.config import JSONConfig + +try: + from calibre_plugins.dedrm.__init__ import PLUGIN_NAME +except: + PLUGIN_NAME = "DeDRM" class DeDRM_Prefs(): def __init__(self): @@ -91,210 +93,3 @@ class DeDRM_Prefs(): except: traceback.print_exc() return False - - -def convertprefs(always = False): - - def parseIgnobleString(keystuff): - from calibre_plugins.dedrm.ignoblekeygen import generate_key - userkeys = [] - ar = keystuff.split(':') - for keystring in ar: - try: - name, ccn = keystring.split(',') - # Generate Barnes & Noble EPUB user key from name and credit card number. - keyname = "{0}_{1}".format(name.strip(),ccn.strip()[-4:]) - keyvalue = generate_key(name, ccn) - userkeys.append([keyname,keyvalue]) - except Exception as e: - traceback.print_exc() - print(e.args[0]) - pass - return userkeys - - def parseeReaderString(keystuff): - from calibre_plugins.dedrm.erdr2pml import getuser_key - userkeys = [] - ar = keystuff.split(':') - for keystring in ar: - try: - name, cc = keystring.split(',') - # Generate eReader user key from name and credit card number. - keyname = "{0}_{1}".format(name.strip(),cc.strip()[-4:]) - keyvalue = codecs.encode(getuser_key(name,cc),'hex') - userkeys.append([keyname,keyvalue]) - except Exception as e: - traceback.print_exc() - print(e.args[0]) - pass - return userkeys - - def parseKindleString(keystuff): - pids = [] - serials = [] - ar = keystuff.split(',') - for keystring in ar: - keystring = str(keystring).strip().replace(" ","") - if len(keystring) == 10 or len(keystring) == 8 and keystring not in pids: - pids.append(keystring) - elif len(keystring) == 16 and keystring[0] == 'B' and keystring not in serials: - serials.append(keystring) - return (pids,serials) - - def getConfigFiles(extension, encoding = None): - # get any files with extension 'extension' in the config dir - userkeys = [] - files = [f for f in os.listdir(config_dir) if f.endswith(extension)] - for filename in files: - try: - fpath = os.path.join(config_dir, filename) - key = os.path.splitext(filename)[0] - value = open(fpath, 'rb').read() - if encoding is not None: - value = codecs.encode(value,encoding) - userkeys.append([key,value]) - except: - traceback.print_exc() - pass - return userkeys - - dedrmprefs = DeDRM_Prefs() - - if (not always) and dedrmprefs['configured']: - # We've already converted old preferences, - # and we're not being forced to do it again, so just return - return - - - print("{0} v{1}: Importing configuration data from old DeDRM plugins".format(PLUGIN_NAME, PLUGIN_VERSION)) - - IGNOBLEPLUGINNAME = "Ignoble Epub DeDRM" - EREADERPLUGINNAME = "eReader PDB 2 PML" - OLDKINDLEPLUGINNAME = "K4PC, K4Mac, Kindle Mobi and Topaz DeDRM" - - # get prefs from older tools - kindleprefs = JSONConfig(os.path.join("plugins", "K4MobiDeDRM")) - ignobleprefs = JSONConfig(os.path.join("plugins", "ignoble_epub_dedrm")) - - # Handle the old ignoble plugin's customization string by converting the - # old string to stored keys... get that personal data out of plain sight. - from calibre.customize.ui import config - sc = config['plugin_customization'] - val = sc.pop(IGNOBLEPLUGINNAME, None) - if val is not None: - print("{0} v{1}: Converting old Ignoble plugin configuration string.".format(PLUGIN_NAME, PLUGIN_VERSION)) - priorkeycount = len(dedrmprefs['bandnkeys']) - userkeys = parseIgnobleString(str(val)) - for keypair in userkeys: - name = keypair[0] - value = keypair[1] - dedrmprefs.addnamedvaluetoprefs('bandnkeys', name, value) - addedkeycount = len(dedrmprefs['bandnkeys'])-priorkeycount - print("{0} v{1}: {2:d} Barnes and Noble {3} imported from old Ignoble plugin configuration string".format(PLUGIN_NAME, PLUGIN_VERSION, addedkeycount, "key" if addedkeycount==1 else "keys")) - # Make the json write all the prefs to disk - dedrmprefs.writeprefs(False) - - # Handle the old eReader plugin's customization string by converting the - # old string to stored keys... get that personal data out of plain sight. - val = sc.pop(EREADERPLUGINNAME, None) - if val is not None: - print("{0} v{1}: Converting old eReader plugin configuration string.".format(PLUGIN_NAME, PLUGIN_VERSION)) - priorkeycount = len(dedrmprefs['ereaderkeys']) - userkeys = parseeReaderString(str(val)) - for keypair in userkeys: - name = keypair[0] - value = keypair[1] - dedrmprefs.addnamedvaluetoprefs('ereaderkeys', name, value) - addedkeycount = len(dedrmprefs['ereaderkeys'])-priorkeycount - print("{0} v{1}: {2:d} eReader {3} imported from old eReader plugin configuration string".format(PLUGIN_NAME, PLUGIN_VERSION, addedkeycount, "key" if addedkeycount==1 else "keys")) - # Make the json write all the prefs to disk - dedrmprefs.writeprefs(False) - - # get old Kindle plugin configuration string - val = sc.pop(OLDKINDLEPLUGINNAME, None) - if val is not None: - print("{0} v{1}: Converting old Kindle plugin configuration string.".format(PLUGIN_NAME, PLUGIN_VERSION)) - priorpidcount = len(dedrmprefs['pids']) - priorserialcount = len(dedrmprefs['serials']) - pids, serials = parseKindleString(val) - for pid in pids: - dedrmprefs.addvaluetoprefs('pids',pid) - for serial in serials: - dedrmprefs.addvaluetoprefs('serials',serial) - addedpidcount = len(dedrmprefs['pids']) - priorpidcount - addedserialcount = len(dedrmprefs['serials']) - priorserialcount - print("{0} v{1}: {2:d} {3} and {4:d} {5} imported from old Kindle plugin configuration string.".format(PLUGIN_NAME, PLUGIN_VERSION, addedpidcount, "PID" if addedpidcount==1 else "PIDs", addedserialcount, "serial number" if addedserialcount==1 else "serial numbers")) - # Make the json write all the prefs to disk - dedrmprefs.writeprefs(False) - - # copy the customisations back into calibre preferences, as we've now removed the nasty plaintext - config['plugin_customization'] = sc - - # get any .b64 files in the config dir - priorkeycount = len(dedrmprefs['bandnkeys']) - bandnfilekeys = getConfigFiles('.b64') - for keypair in bandnfilekeys: - name = keypair[0] - value = keypair[1] - dedrmprefs.addnamedvaluetoprefs('bandnkeys', name, value) - addedkeycount = len(dedrmprefs['bandnkeys'])-priorkeycount - if addedkeycount > 0: - print("{0} v{1}: {2:d} Barnes and Noble {3} imported from config folder.".format(PLUGIN_NAME, PLUGIN_VERSION, addedkeycount, "key file" if addedkeycount==1 else "key files")) - # Make the json write all the prefs to disk - dedrmprefs.writeprefs(False) - - # get any .der files in the config dir - priorkeycount = len(dedrmprefs['adeptkeys']) - adeptfilekeys = getConfigFiles('.der','hex') - for keypair in adeptfilekeys: - name = keypair[0] - value = keypair[1] - dedrmprefs.addnamedvaluetoprefs('adeptkeys', name, value) - addedkeycount = len(dedrmprefs['adeptkeys'])-priorkeycount - if addedkeycount > 0: - print("{0} v{1}: {2:d} Adobe Adept {3} imported from config folder.".format(PLUGIN_NAME, PLUGIN_VERSION, addedkeycount, "keyfile" if addedkeycount==1 else "keyfiles")) - # Make the json write all the prefs to disk - dedrmprefs.writeprefs(False) - - # get ignoble json prefs - if 'keys' in ignobleprefs: - priorkeycount = len(dedrmprefs['bandnkeys']) - for name in ignobleprefs['keys']: - value = ignobleprefs['keys'][name] - dedrmprefs.addnamedvaluetoprefs('bandnkeys', name, value) - addedkeycount = len(dedrmprefs['bandnkeys']) - priorkeycount - # no need to delete old prefs, since they contain no recoverable private data - if addedkeycount > 0: - print("{0} v{1}: {2:d} Barnes and Noble {3} imported from Ignoble plugin preferences.".format(PLUGIN_NAME, PLUGIN_VERSION, addedkeycount, "key" if addedkeycount==1 else "keys")) - # Make the json write all the prefs to disk - dedrmprefs.writeprefs(False) - - # get kindle json prefs - priorpidcount = len(dedrmprefs['pids']) - priorserialcount = len(dedrmprefs['serials']) - if 'pids' in kindleprefs: - pids, serials = parseKindleString(kindleprefs['pids']) - for pid in pids: - dedrmprefs.addvaluetoprefs('pids',pid) - if 'serials' in kindleprefs: - pids, serials = parseKindleString(kindleprefs['serials']) - for serial in serials: - dedrmprefs.addvaluetoprefs('serials',serial) - addedpidcount = len(dedrmprefs['pids']) - priorpidcount - if addedpidcount > 0: - print("{0} v{1}: {2:d} {3} imported from Kindle plugin preferences".format(PLUGIN_NAME, PLUGIN_VERSION, addedpidcount, "PID" if addedpidcount==1 else "PIDs")) - addedserialcount = len(dedrmprefs['serials']) - priorserialcount - if addedserialcount > 0: - print("{0} v{1}: {2:d} {3} imported from Kindle plugin preferences".format(PLUGIN_NAME, PLUGIN_VERSION, addedserialcount, "serial number" if addedserialcount==1 else "serial numbers")) - try: - if 'wineprefix' in kindleprefs and kindleprefs['wineprefix'] != "": - dedrmprefs.set('adobewineprefix',kindleprefs['wineprefix']) - dedrmprefs.set('kindlewineprefix',kindleprefs['wineprefix']) - print("{0} v{1}: WINEPREFIX ‘(2)’ imported from Kindle plugin preferences".format(PLUGIN_NAME, PLUGIN_VERSION, kindleprefs['wineprefix'])) - except: - traceback.print_exc() - - - # Make the json write all the prefs to disk - dedrmprefs.writeprefs() - print("{0} v{1}: Finished setting up configuration data.".format(PLUGIN_NAME, PLUGIN_VERSION))