FIX: Empty backup names with unicode site titles

If a site title contains unicode it may end up with an empty backup
filename because of the rails `parameterize` method we are calling.

This fix ensures that the backup filenames default to "discourse" if the
parameterized site title is empty.

Bug reported [here][1].

[1]: https://meta.discourse.org/t/backup-checksum-and-backup-name-missing-when-unicode-site-name/123192?u=blake
This commit is contained in:
Blake Erickson
2019-07-17 17:07:10 -06:00
parent 514aaacdf4
commit c8661674d4
2 changed files with 24 additions and 1 deletions

View File

@@ -83,6 +83,10 @@ module BackupRestore
raise Discourse::InvalidParameters.new(:user_id) unless @user
end
def get_parameterized_title
SiteSetting.title.parameterize.empty? ? "discourse" : SiteSetting.title.parameterize
end
def initialize_state
@success = false
@store = BackupRestore::BackupStore.create
@@ -91,7 +95,7 @@ module BackupRestore
@tmp_directory = File.join(Rails.root, "tmp", "backups", @current_db, @timestamp)
@dump_filename = File.join(@tmp_directory, BackupRestore::DUMP_FILE)
@archive_directory = BackupRestore::LocalBackupStore.base_directory(db: @current_db)
filename = @filename_override || "#{SiteSetting.title.parameterize}-#{@timestamp}"
filename = @filename_override || "#{get_parameterized_title}-#{@timestamp}"
@archive_basename = File.join(@archive_directory, "#{filename}-#{BackupRestore::VERSION_PREFIX}#{BackupRestore.current_version}")
@backup_filename =