This commit is contained in:
r888888888
2018-02-22 11:15:42 -08:00
parent f38960092d
commit 689b5690bf
3 changed files with 32 additions and 3 deletions

View File

@@ -7,6 +7,24 @@ class RemoteFileManager
@path = path
end
def distribute_to_archive(dest_url)
uri = URI.parse(dest_url)
dir_name = uri.host.split(".").first
uuid = SecureRandom.uuid
dest_path = "/var/www/#{dir_name}#{uri.path}"
temp_path = "/tmp/rfm-#{Danbooru.config.server_host}-#{uuid}"
Net::SFTP.start(uri.host, Danbooru.config.archive_server_login) do |ftp|
ftp.upload!(path, temp_path)
begin
ftp.rename!(temp_path, dest_path)
rescue Net::SFTP::StatusException
ftp.remove!(dest_path)
ftp.rename!(temp_apth, dest_path)
end
end
end
def distribute
uuid = SecureRandom.uuid
temp_path = "/tmp/rfm-#{Danbooru.config.server_host}-#{uuid}"

View File

@@ -107,9 +107,16 @@ class Post < ApplicationRecord
end
def distribute_files
RemoteFileManager.new(file_path).distribute
RemoteFileManager.new(preview_file_path).distribute if has_preview?
RemoteFileManager.new(large_file_path).distribute if has_large?
if Danbooru.config.build_file_url(self) =~ /^http/
# this post is archived
RemoteFileManager.new(file_path).distribute_to_archive(Danbooru.config.build_file_url(self))
RemoteFileManager.new(preview_file_path).distribute if has_preview?
RemoteFileManager.new(large_file_path).distribute_to_archive(Danbooru.config.build_large_file_url(self)) if has_large?
else
RemoteFileManager.new(file_path).distribute
RemoteFileManager.new(preview_file_path).distribute if has_preview?
RemoteFileManager.new(large_file_path).distribute if has_large?
end
end
def file_path_prefix

View File

@@ -217,6 +217,10 @@ module Danbooru
"albert"
end
def archive_server_login
"danbooru"
end
def build_file_url(post)
"/data/#{post.file_path_prefix}/#{post.md5}.#{post.file_ext}"
end