add setting to not persists user details between restarts

This commit is contained in:
faush01
2019-01-16 19:11:51 +11:00
parent 759638e2ff
commit 849fe95d07
6 changed files with 70 additions and 28 deletions

View File

@@ -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"/>

View File

@@ -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 ""

View File

@@ -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:

View File

@@ -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()

View File

@@ -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="&lt;none&gt;" 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>

View File

@@ -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()