mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-08-14 02:26:58 -07:00
fix: sort issue with wrong config savings
This commit is contained in:
parent
84684ef148
commit
0a9f0a4866
3 changed files with 40 additions and 7 deletions
|
@ -1544,10 +1544,10 @@
|
|||
|
||||
<div id="s3_backup_options" style="overflow: hidden; display: ${'' if config.get('s3_backup_enabled', 0) else 'none'}">
|
||||
<div class="form-group">
|
||||
<label for="s3_bucket">S3 Bucket Name</label>
|
||||
<label for="s3_bucket_name">S3 Bucket Name</label>
|
||||
<div class="row">
|
||||
<div class="col-md-5">
|
||||
<input type="text" class="form-control" id="s3_bucket" name="s3_bucket" value="${config.get('s3_bucket', '')}" placeholder="mybucket">
|
||||
<input type="text" class="form-control" id="s3_bucket_name" name="s3_bucket_name" value="${config.get('s3_bucket_name', '')}" placeholder="mybucket">
|
||||
</div>
|
||||
</div>
|
||||
<p class="help-block">The name of the S3 bucket to store backups.</p>
|
||||
|
@ -2521,7 +2521,7 @@ $(document).ready(function() {
|
|||
});
|
||||
|
||||
$("#test_s3_connection").click(function() {
|
||||
var s3_bucket = $("#s3_bucket").val();
|
||||
var s3_bucket = $("#s3_bucket_name").val();
|
||||
var s3_region = $("#s3_region").val();
|
||||
var s3_access_key = $("#s3_access_key").val();
|
||||
var s3_secret_key = $("#s3_secret_key").val();
|
||||
|
|
|
@ -74,13 +74,21 @@ def get_s3_client():
|
|||
region = plexpy.CONFIG.S3_REGION if plexpy.CONFIG.S3_REGION else None
|
||||
|
||||
try:
|
||||
# Create a custom config that disables checksum algorithms for compatibility with Backblaze B2
|
||||
# and other S3-compatible services that don't support newer AWS features
|
||||
s3_config = boto3.session.Config(
|
||||
signature_version='s3v4',
|
||||
s3={'payload_signing_enabled': False}
|
||||
)
|
||||
|
||||
s3_client = session.client(
|
||||
service_name='s3',
|
||||
aws_access_key_id=access_key,
|
||||
aws_secret_access_key=secret_key,
|
||||
endpoint_url=endpoint_url,
|
||||
region_name=region,
|
||||
use_ssl=bool(plexpy.CONFIG.S3_SECURE)
|
||||
use_ssl=True, #bool(plexpy.CONFIG.S3_SECURE)
|
||||
config=s3_config
|
||||
)
|
||||
return s3_client
|
||||
except Exception as e:
|
||||
|
@ -133,7 +141,8 @@ def upload_file_to_s3(file_path, object_name=None):
|
|||
except NoCredentialsError:
|
||||
logger.error("Tautulli S3 Uploader :: Credentials not available for S3 upload")
|
||||
return False
|
||||
except EndpointConnectionError:
|
||||
except EndpointConnectionError as e:
|
||||
logger.error(f"Tautulli S3 Uploader :: Could not connect to S3 endpoint: {e}")
|
||||
logger.error(f"Tautulli S3 Uploader :: Could not connect to S3 endpoint: {plexpy.CONFIG.S3_ENDPOINT}")
|
||||
return False
|
||||
except ClientError as e:
|
||||
|
|
|
@ -173,7 +173,7 @@ class WebInterface(object):
|
|||
try:
|
||||
# Create S3 client
|
||||
s3_config = {
|
||||
'region_name': s3_region if s3_region else 'us-east-1'
|
||||
'region_name': s3_region if s3_region else 'us-east-1',
|
||||
}
|
||||
|
||||
# Add custom endpoint URL if provided
|
||||
|
@ -3337,7 +3337,31 @@ class WebInterface(object):
|
|||
# If we change the authentication settings, make sure we refresh the users lists.
|
||||
if kwargs.pop('auth_changed', None):
|
||||
refresh_users = True
|
||||
|
||||
|
||||
# Handle S3 backup parameter mappings
|
||||
s3_field_maps = {
|
||||
's3_bucket': 'S3_BUCKET_NAME',
|
||||
's3_region': 'S3_REGION',
|
||||
's3_access_key': 'S3_ACCESS_KEY',
|
||||
's3_secret_key': 'S3_SECRET_KEY',
|
||||
's3_endpoint': 'S3_ENDPOINT',
|
||||
's3_prefix': 'S3_PREFIX',
|
||||
's3_secure': 'S3_SECURE'
|
||||
}
|
||||
|
||||
for form_key, config_key in s3_field_maps.items():
|
||||
if form_key in kwargs:
|
||||
# Ensure string values for endpoints to prevent list nesting
|
||||
if isinstance(kwargs[form_key], list) or (form_key == 's3_endpoint' and kwargs[form_key]):
|
||||
kwargs[form_key] = str(kwargs[form_key])
|
||||
# Remove any nested list formatting
|
||||
if form_key == 's3_endpoint':
|
||||
kwargs[form_key] = kwargs[form_key].replace('[', '').replace(']', '').replace("'", "")
|
||||
if ',' in kwargs[form_key]:
|
||||
kwargs[form_key] = kwargs[form_key].split(',')[0].strip()
|
||||
|
||||
kwargs[config_key] = kwargs.pop(form_key)
|
||||
|
||||
all_settings = config.SETTINGS + config.CHECKED_SETTINGS
|
||||
kwargs = {k: v for k, v in kwargs.items() if k.upper() in all_settings}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue