無害化処理

ファイルを操作する機能を開発した時に必要になることがあります。

無害化処理

sanitizer_input/ に設置したファイルは無害化され sanitizer_output/ に移動します。
下記はファイル名を変更するだけの開発用スクリプトです。

#!/usr/bin/env ruby

require 'fileutils'
Dir.glob("/var/share/shirasagi/sanitizer_input/*").each do |f|
  file = "#{File.basename(f, '.*')}_#{rand(1_000)}_marked#{File.extname(f)}"
  file = "/var/share/shirasagi/sanitizer_output/#{file}"
  print "#{file}\n"
  ::FileUtils.mv(f, file)
end

SS::UploadPolicy <Module>

private sanitizer_save_file()

in_file にオブジェクトが設定されている場合、自動的に sanitizer_input/ にコピーします。

public sanitizer_copy_file()

in_file にオブジェクトを設定しない場合は明示的なコールが必要です。

public sanitizer_skip()

無害化する必要のないファイルは明示的にスキップします。

Restore

無害化済みファイルの取り込みは下記コマンドです。

$ bundle exec rake ss:sanitizer_restore

取り込んだファイルが公開中ステータスの場合 public に書き出します。

try(:generate_public_file)

取り込み処理が完了したファイルは削除されます。
取り込みが失敗したファイルも、ドキュメントが存在しないと判断して削除されます。