diff --git a/app/site_files.rb b/app/site_files.rb index f5694d4b..8e129579 100644 --- a/app/site_files.rb +++ b/app/site_files.rb @@ -189,9 +189,17 @@ end get '/site_files/:username.zip' do |username| require_login + if !current_site.dl_queued_at.nil? && current_site.dl_queued_at > 1.hour.ago + flash[:error] = 'Site downloads are currently limited to once per hour, please try again later.' + redirect request.referer + end + content_type 'application/zip' attachment "neocities-#{current_site.username}.zip" + current_site.dl_queued_at = Time.now + current_site.save_changes validate: false + directory_path = current_site.files_path stream do |out| diff --git a/migrations/118_site_dl_queued_at.rb b/migrations/118_site_dl_queued_at.rb new file mode 100644 index 00000000..1363d559 --- /dev/null +++ b/migrations/118_site_dl_queued_at.rb @@ -0,0 +1,9 @@ +Sequel.migration do + up { + DB.add_column :sites, :dl_queued_at, Time + } + + down { + DB.drop_column :sites, :dl_queued_at + } +end