mirror of
https://github.com/hrfee/jellyfin-accounts.git
synced 2025-12-16 07:21:13 +00:00
update readme, fix setup.js setting toggle
This commit is contained in:
@@ -98,7 +98,8 @@ config = Config(config_path, secrets.token_urlsafe(16), data_dir, local_dir, log
|
||||
|
||||
web_log = create_log("waitress")
|
||||
if not first_run:
|
||||
email_log = create_log("emails")
|
||||
email_log = create_log("email")
|
||||
pwr_log = create_log("pwr")
|
||||
auth_log = create_log("auth")
|
||||
|
||||
if args.host is not None:
|
||||
@@ -185,6 +186,7 @@ def resp(success=True, code=500):
|
||||
r.status_code = code
|
||||
return r
|
||||
|
||||
app = Flask(__name__, root_path=str(local_dir))
|
||||
|
||||
def main():
|
||||
if args.install:
|
||||
@@ -290,8 +292,6 @@ def main():
|
||||
success = True
|
||||
|
||||
else:
|
||||
global app
|
||||
app = Flask(__name__, root_path=str(local_dir))
|
||||
app.config["DEBUG"] = config.getboolean("ui", "debug")
|
||||
app.config["SECRET_KEY"] = secrets.token_urlsafe(16)
|
||||
app.config["JSON_SORT_KEYS"] = False
|
||||
@@ -328,7 +328,7 @@ def main():
|
||||
jellyfin_accounts.pw_reset.start()
|
||||
|
||||
pwr = threading.Thread(target=start_pwr, daemon=True)
|
||||
log.info("Starting email thread")
|
||||
log.info("Starting password reset thread")
|
||||
pwr.start()
|
||||
|
||||
def signal_handler(sig, frame):
|
||||
|
||||
@@ -21,16 +21,19 @@ function checkEmailRadio() {
|
||||
document.getElementById('emailCommonArea').style.display = '';
|
||||
document.getElementById('emailSMTPArea').style.display = '';
|
||||
document.getElementById('emailMailgunArea').style.display = 'none';
|
||||
document.getElementById('notificationsEnabled').checked = true;
|
||||
} else if (document.getElementById('emailMailgunRadio').checked) {
|
||||
document.getElementById('emailCommonArea').style.display = '';
|
||||
document.getElementById('emailSMTPArea').style.display = 'none';
|
||||
document.getElementById('emailMailgunArea').style.display = '';
|
||||
document.getElementById('notificationsEnabled').checked = true;
|
||||
} else if (document.getElementById('emailDisabledRadio').checked) {
|
||||
document.getElementById('emailCommonArea').style.display = 'none';
|
||||
document.getElementById('emailSMTPArea').style.display = 'none';
|
||||
document.getElementById('emailMailgunArea').style.display = 'none';
|
||||
document.getElementById('emailNextButton').href = '#page-8';
|
||||
document.getElementById('valBackButton').href = '#page-4';
|
||||
document.getElementById('notificationsEnabled').checked = false;
|
||||
};
|
||||
};
|
||||
var emailRadios = ['emailDisabledRadio', 'emailSMTPRadio', 'emailMailgunRadio'];
|
||||
@@ -165,6 +168,7 @@ document.getElementById('submitButton').onclick = function() {
|
||||
if (document.getElementById('emailDisabledRadio').checked) {
|
||||
config['password_resets']['enabled'] = 'false';
|
||||
config['invite_emails']['enabled'] = 'false';
|
||||
config['notificatons']['enabled'] = 'false';
|
||||
} else {
|
||||
if (document.getElementById('emailSMTPRadio').checked) {
|
||||
if (document.getElementById('emailSSL_TLS').checked) {
|
||||
|
||||
@@ -61,6 +61,7 @@ class Jellyfin:
|
||||
self.version = version
|
||||
self.device = device
|
||||
self.deviceId = deviceId
|
||||
self.authenticated = False
|
||||
self.timeout = cacheMinutes * 60
|
||||
self.userCacheAge = time.time() - self.timeout - 1
|
||||
self.userCachePublicAge = self.userCacheAge
|
||||
@@ -80,10 +81,10 @@ class Jellyfin:
|
||||
"X-Emby-Authorization": self.auth,
|
||||
}
|
||||
try:
|
||||
self.info = requests.get(self.server + "/System/Info/Public").json()
|
||||
self.info = requests.get(f"{self.server}/System/Info/Public").json()
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
def reloadCache(self):
|
||||
""" Forces a reload of the user caches """
|
||||
self.userCachePublicAge = time.time() - self.timeout - 1
|
||||
@@ -107,7 +108,7 @@ class Jellyfin:
|
||||
"""
|
||||
if public is True:
|
||||
if (time.time() - self.userCachePublicAge) >= self.timeout:
|
||||
response = requests.get(self.server + "/emby/Users/Public").json()
|
||||
response = requests.get(f"{self.server}/Users/Public").json()
|
||||
self.userCachePublic = response
|
||||
self.userCachePublicAge = time.time()
|
||||
else:
|
||||
@@ -117,7 +118,7 @@ class Jellyfin:
|
||||
):
|
||||
if (time.time() - self.userCacheAge) >= self.timeout:
|
||||
response = requests.get(
|
||||
self.server + "/emby/Users",
|
||||
f"{self.server}/Users",
|
||||
headers=self.header,
|
||||
params={"Username": self.username, "Pw": self.password},
|
||||
)
|
||||
@@ -125,7 +126,7 @@ class Jellyfin:
|
||||
response = response.json()
|
||||
self.userCache = response
|
||||
self.userCacheAge = time.time()
|
||||
else:
|
||||
elif response.status_code == 401:
|
||||
try:
|
||||
self.authenticate(self.username, self.password)
|
||||
return self.getUsers(username, userId, public)
|
||||
@@ -161,12 +162,10 @@ class Jellyfin:
|
||||
:param username: Plaintext username.
|
||||
:param password: Plaintext password.
|
||||
"""
|
||||
self.username = username
|
||||
self.password = password
|
||||
response = requests.post(
|
||||
self.server + "/emby/Users/AuthenticateByName",
|
||||
f"{self.server}/Users/AuthenticateByName",
|
||||
headers=self.header,
|
||||
params={"Username": self.username, "Pw": self.password},
|
||||
params={"Username": username, "Pw": password},
|
||||
)
|
||||
if response.status_code == 200:
|
||||
json = response.json()
|
||||
@@ -180,8 +179,11 @@ class Jellyfin:
|
||||
self.auth += f", Token={self.accessToken}"
|
||||
self.header["X-Emby-Authorization"] = self.auth
|
||||
self.info = requests.get(
|
||||
self.server + "/System/Info", headers=self.header
|
||||
f"{self.server}/System/Info", headers=self.header
|
||||
).json()
|
||||
self.username = username
|
||||
self.password = password
|
||||
self.authenticated = True
|
||||
return True
|
||||
else:
|
||||
raise self.AuthenticationError
|
||||
@@ -194,7 +196,7 @@ class Jellyfin:
|
||||
:param policy: User policy in dictionary form.
|
||||
"""
|
||||
return requests.post(
|
||||
self.server + "/Users/" + userId + "/Policy",
|
||||
f"{self.server}/Users/" + userId + "/Policy",
|
||||
headers=self.header,
|
||||
params=policy,
|
||||
)
|
||||
@@ -204,7 +206,7 @@ class Jellyfin:
|
||||
if user["Name"] == username:
|
||||
raise self.UserExistsError
|
||||
response = requests.post(
|
||||
self.server + "/emby/Users/New",
|
||||
f"{self.server}/Users/New",
|
||||
headers=self.header,
|
||||
params={"Name": username, "Password": password},
|
||||
)
|
||||
@@ -222,7 +224,7 @@ class Jellyfin:
|
||||
else:
|
||||
param = ""
|
||||
views = requests.get(
|
||||
self.server + "/Users/" + userId + "/Views" + param, headers=self.header
|
||||
f"{self.server}/Users/" + userId + "/Views" + param, headers=self.header
|
||||
).json()["Items"]
|
||||
orderedViews = []
|
||||
for library in views:
|
||||
@@ -236,7 +238,7 @@ class Jellyfin:
|
||||
:param configuration: Configuration to write in dictionary form.
|
||||
"""
|
||||
resp = requests.post(
|
||||
self.server + "/Users/" + userId + "/Configuration",
|
||||
f"{self.server}/Users/" + userId + "/Configuration",
|
||||
headers=self.header,
|
||||
params=configuration,
|
||||
)
|
||||
|
||||
@@ -6,7 +6,7 @@ from watchdog.events import FileSystemEventHandler
|
||||
from jellyfin_accounts.email import Mailgun, Smtp
|
||||
from jellyfin_accounts.web_api import jf
|
||||
from jellyfin_accounts import config, data_store
|
||||
from jellyfin_accounts import email_log as log
|
||||
from jellyfin_accounts import pwr_log as log
|
||||
|
||||
|
||||
class Watcher:
|
||||
|
||||
Reference in New Issue
Block a user