add setting to not persists user details between restarts
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="plugin.video.embycon"
|
||||
name="EmbyCon"
|
||||
version="1.7.20"
|
||||
version="1.8.1"
|
||||
provider-name="Team B">
|
||||
<requires>
|
||||
<import addon="xbmc.python" version="2.25.0"/>
|
||||
|
||||
@@ -779,7 +779,7 @@ msgid "Manually enter user details"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30367"
|
||||
msgid "Allow password saving"
|
||||
msgid "Allow fast user switching password saving"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30368"
|
||||
@@ -821,3 +821,7 @@ msgstr ""
|
||||
msgctxt "#30377"
|
||||
msgid "Sending request"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30378"
|
||||
msgid "Persist user details"
|
||||
msgstr ""
|
||||
@@ -22,6 +22,36 @@ from .translation import string_load
|
||||
|
||||
log = SimpleLogging(__name__)
|
||||
|
||||
|
||||
def save_user_details(settings, user_name, user_password):
|
||||
save_user_to_settings = settings.getSetting("save_user_to_settings") == "true"
|
||||
if save_user_to_settings:
|
||||
settings.setSetting("username", user_name)
|
||||
settings.setSetting("password", user_password)
|
||||
else:
|
||||
settings.setSetting("username", "")
|
||||
settings.setSetting("password", "")
|
||||
home_window = HomeWindow()
|
||||
home_window.setProperty("username", user_name)
|
||||
home_window.setProperty("password", user_password)
|
||||
|
||||
|
||||
def load_user_details(settings):
|
||||
save_user_to_settings = settings.getSetting("save_user_to_settings") == "true"
|
||||
if save_user_to_settings:
|
||||
user_name = settings.getSetting("username")
|
||||
user_password = settings.getSetting("password")
|
||||
else:
|
||||
home_window = HomeWindow()
|
||||
user_name = home_window.getProperty("username")
|
||||
user_password = home_window.getProperty("password")
|
||||
|
||||
user_details = {}
|
||||
user_details["username"] = user_name
|
||||
user_details["password"] = user_password
|
||||
return user_details
|
||||
|
||||
|
||||
def getDetailsString():
|
||||
|
||||
addonSettings = xbmcaddon.Addon()
|
||||
@@ -359,25 +389,25 @@ class DownloadUtils():
|
||||
return userid
|
||||
|
||||
settings = xbmcaddon.Addon()
|
||||
userName = settings.getSetting('username')
|
||||
user_details = load_user_details(settings)
|
||||
user_name = user_details.get("username", "")
|
||||
|
||||
if not userName:
|
||||
if not user_name:
|
||||
return ""
|
||||
log.debug("Looking for user name: {0}", userName)
|
||||
log.debug("Looking for user name: {0}", user_name)
|
||||
|
||||
jsonData = None
|
||||
try:
|
||||
jsonData = self.downloadUrl("{server}/emby/Users/Public?format=json", suppress=True, authenticate=False)
|
||||
json_data = self.downloadUrl("{server}/emby/Users/Public?format=json", suppress=True, authenticate=False)
|
||||
except Exception as msg:
|
||||
log.error("Get User unable to connect: {0}", msg)
|
||||
return ""
|
||||
|
||||
log.debug("GETUSER_JSONDATA_01: {0}", jsonData)
|
||||
log.debug("GETUSER_JSONDATA_01: {0}", json_data)
|
||||
|
||||
result = []
|
||||
|
||||
try:
|
||||
result = json.loads(jsonData)
|
||||
result = json.loads(json_data)
|
||||
except Exception as e:
|
||||
log.debug("Could not load user data: {0}", e)
|
||||
return ""
|
||||
@@ -389,7 +419,7 @@ class DownloadUtils():
|
||||
|
||||
secure = False
|
||||
for user in result:
|
||||
if user.get("Name") == unicode(userName, "utf-8"):
|
||||
if user.get("Name") == unicode(user_name, "utf-8"):
|
||||
userid = user.get("Id")
|
||||
userImage = self.get_user_artwork(user, 'Primary')
|
||||
log.debug("Username Found: {0}", user.get("Name"))
|
||||
@@ -440,9 +470,10 @@ class DownloadUtils():
|
||||
|
||||
url = "{server}/emby/Users/AuthenticateByName?format=json"
|
||||
|
||||
pwd_sha = hashlib.sha1(settings.getSetting('password')).hexdigest()
|
||||
user_name = urllib.quote(settings.getSetting('username'))
|
||||
pwd_text = urllib.quote(settings.getSetting('password'))
|
||||
user_details = load_user_details(settings)
|
||||
pwd_sha = hashlib.sha1(user_details.get("password", "")).hexdigest()
|
||||
user_name = urllib.quote(user_details.get("username", ""))
|
||||
pwd_text = urllib.quote(user_details.get("password", ""))
|
||||
|
||||
messageData = "username=" + user_name + "&password=" + pwd_sha
|
||||
|
||||
@@ -522,7 +553,8 @@ class DownloadUtils():
|
||||
|
||||
return_data = "null"
|
||||
settings = xbmcaddon.Addon()
|
||||
username = settings.getSetting("username")
|
||||
user_details = load_user_details(settings)
|
||||
username = user_details.get("username", "")
|
||||
|
||||
if settings.getSetting("suppressErrors") == "true":
|
||||
suppress = True
|
||||
@@ -642,8 +674,7 @@ class DownloadUtils():
|
||||
hashed_username = m.hexdigest()
|
||||
log.error("HTTP response error 401 auth error, removing any saved passwords for user: {0}", hashed_username)
|
||||
settings.setSetting("saved_user_password_" + hashed_username, "")
|
||||
settings.setSetting("username", "")
|
||||
settings.setSetting("password", "")
|
||||
save_user_details(settings, "", "")
|
||||
|
||||
log.error("HTTP response error: {0} {1}", data.status, data.reason)
|
||||
if suppress is False:
|
||||
|
||||
@@ -12,7 +12,7 @@ import xbmcgui
|
||||
import xbmc
|
||||
|
||||
from .kodi_utils import HomeWindow
|
||||
from .downloadutils import DownloadUtils
|
||||
from .downloadutils import DownloadUtils, save_user_details, load_user_details
|
||||
from .simple_logging import SimpleLogging
|
||||
from .translation import string_load
|
||||
from .utils import datetime_from_string
|
||||
@@ -181,7 +181,8 @@ def checkServer(force=False, change_user=False, notify=False):
|
||||
something_changed = True
|
||||
|
||||
# do we need to change the user
|
||||
current_username = settings.getSetting("username")
|
||||
user_details = load_user_details(settings)
|
||||
current_username = user_details.get("username", "")
|
||||
current_username = unicode(current_username, "utf-8")
|
||||
|
||||
# if asked or we have no current user then show user selection screen
|
||||
@@ -334,8 +335,8 @@ def checkServer(force=False, change_user=False, notify=False):
|
||||
if saved_password:
|
||||
log.debug("Saving username and password: {0}", selected_user_name)
|
||||
log.debug("Using stored password for user: {0}", hashed_username)
|
||||
settings.setSetting("username", selected_user_name)
|
||||
settings.setSetting('password', saved_password)
|
||||
save_user_details(settings, selected_user_name, saved_password)
|
||||
|
||||
else:
|
||||
kb = xbmc.Keyboard()
|
||||
kb.setHeading(string_load(30006))
|
||||
@@ -343,8 +344,7 @@ def checkServer(force=False, change_user=False, notify=False):
|
||||
kb.doModal()
|
||||
if kb.isConfirmed():
|
||||
log.debug("Saving username and password: {0}", selected_user_name)
|
||||
settings.setSetting("username", selected_user_name)
|
||||
settings.setSetting('password', kb.getText())
|
||||
save_user_details(settings, selected_user_name, kb.getText())
|
||||
|
||||
# should we save the password
|
||||
if allow_password_saving:
|
||||
@@ -354,8 +354,7 @@ def checkServer(force=False, change_user=False, notify=False):
|
||||
settings.setSetting("saved_user_password_" + hashed_username, kb.getText())
|
||||
else:
|
||||
log.debug("Saving username with no password: {0}", selected_user_name)
|
||||
settings.setSetting("username", selected_user_name)
|
||||
settings.setSetting('password', '')
|
||||
save_user_details(settings, selected_user_name, "")
|
||||
|
||||
if something_changed:
|
||||
home_window = HomeWindow()
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<settings>
|
||||
<category label="30014">
|
||||
<setting label="30011" type="action" action="RunScript(plugin.video.embycon,0,?mode=DETECT_SERVER_USER)" option="close"/>
|
||||
<setting id="ipaddress" type="text" label="30000" default="<none>" visible="true" enable="true" />
|
||||
<setting id="port" type="text" label="30001" default="8096" visible="true" enable="true" />
|
||||
<setting id="use_https" type="bool" label="30002" default="false" visible="true" enable="true" />
|
||||
<setting id="verify_cert" type="bool" label="30003" default="false" visible="true" enable="true" />
|
||||
<setting label="30011" type="action" action="RunScript(plugin.video.embycon,0,?mode=DETECT_SERVER_USER)" option="close"/>
|
||||
|
||||
<setting type="sep" />
|
||||
<setting label="30012" type="action" action="RunScript(plugin.video.embycon,0,?mode=CHANGE_USER)" option="close"/>
|
||||
<setting id="username" type="text" label="30024" />
|
||||
<setting id="password" type="text" option="hidden" label="30025" />
|
||||
<setting label="30012" type="action" action="RunScript(plugin.video.embycon,0,?mode=CHANGE_USER)" option="close"/>
|
||||
<setting id="save_user_to_settings" type="bool" label="30378" default="true" visible="true" enable="true" />
|
||||
<setting id="allow_password_saving" type="bool" label="30367" default="true" visible="true" enable="true" />
|
||||
<setting id="deviceName" type="text" label="30016" default="EmbyCon" visible="true" enable="true" />
|
||||
</category>
|
||||
|
||||
10
service.py
10
service.py
@@ -11,7 +11,7 @@ import xbmc
|
||||
import xbmcaddon
|
||||
import xbmcgui
|
||||
|
||||
from resources.lib.downloadutils import DownloadUtils
|
||||
from resources.lib.downloadutils import DownloadUtils, save_user_details
|
||||
from resources.lib.simple_logging import SimpleLogging
|
||||
from resources.lib.play_utils import Service, PlaybackService, sendProgress
|
||||
from resources.lib.kodi_utils import HomeWindow
|
||||
@@ -19,6 +19,9 @@ from resources.lib.widgets import checkForNewContent, set_background_image, set_
|
||||
from resources.lib.websocket_client import WebSocketClient
|
||||
from resources.lib.menu_functions import set_library_window_values
|
||||
from resources.lib.context_monitor import ContextMonitor
|
||||
from resources.lib.server_detect import checkServer
|
||||
|
||||
settings = xbmcaddon.Addon()
|
||||
|
||||
# clear user and token when logging in
|
||||
home_window = HomeWindow()
|
||||
@@ -27,6 +30,9 @@ home_window.clearProperty("AccessToken")
|
||||
home_window.clearProperty("Params")
|
||||
|
||||
log = SimpleLogging('service')
|
||||
|
||||
checkServer()
|
||||
|
||||
download_utils = DownloadUtils()
|
||||
|
||||
# auth the service
|
||||
@@ -54,7 +60,7 @@ home_window.setProperty("session_id", str(time.time()))
|
||||
|
||||
|
||||
# start the WebSocket Client running
|
||||
settings = xbmcaddon.Addon()
|
||||
|
||||
remote_control = settings.getSetting('remoteControl') == "true"
|
||||
if remote_control:
|
||||
websocket_client.start()
|
||||
|
||||
Reference in New Issue
Block a user