#!/usr/bin/env ruby
###############################################################################
# mod_uploader / manage.cgi
###############################################################################
# Copyright (C) 2005 Tetsuya Kimata <kimata@acapulco.dyndns.org>
#
# All rights reserved.
#
# This software is provided 'as-is', without any express or implied
# warranty.  In no event will the authors be held liable for any
# damages arising from the use of this software.
#
# Permission is granted to anyone to use this software for any
# purpose, including commercial applications, and to alter it and
# redistribute it freely, subject to the following restrictions:
#
# 1. The origin of this software must not be misrepresented; you must
#    not claim that you wrote the original software. If you use this
#    software in a product, an acknowledgment in the product
#    documentation would be appreciated but is not required.
#
# 2. Altered source versions must be plainly marked as such, and must
#    not be misrepresented as being the original software.
#
# 3. This notice may not be removed or altered from any source
#    distribution.
#
# $Id: manage.cgi 646 2005-09-08 01:23:14Z svn $
###############################################################################

###############################################################################
# このファイルは，不要なアップロードファイルをブラウザ経由で削除するた
# めの CGI スクリプトです．
#
# スクリプト側ではパスワードによるアクセス制限等は設けていないので，
# HTTP サーバの機能を用いて適宜アクセス制限をしたうえで利用して下さい．
#
# o 動作環境
#
#     - Apache Portable Runtime 0.9 以上
#
#     - Ruby 1.8 以上
#
# o 準備
#
#     $ cd bin
#     $ make
#     （必要に応じて）
#     $ chmod 755 manage.cgi
#
# o 設定
#
#     以下にある UPLOADER_URL，FILE_DIR，THUMB_DIR の値を書き換えて下さい．
#     FILE_DIR，THUMB_DIR は，絶対パスで指定した方が無難です．
#
# o 使い方
#
#     ブラウザで manage.cgi にアクセスして，削除したファイルの右端にあ
#     る「削除」ボタンをクリックするとファイルが削除されます．確認画面
#     はでないので，作業は慎重に行って下さい．
#
# o テンプレート
#
#     CGI スクリプトは，bin/tmpl 以下のディレクトリにあるテンプレートに
#     基づいて表示を行います．CSS や画像の表示がうまくいっていない場合
#     は，テンプレートを適当に修正して下さい．
#
# o 注意事項
#
#     この CGI は mod_uploader と同じ権限で動作する必要があります．違う
#     場合，ファイルの削除が行えません．ファイルが削除できなくてよく分
#     からない場合は，ファイルの削除を行う前に，
#
#     $ su
#     $ chmod 666 file/*
#
#     して，ファイルの削除を行った後に，
#
#     $ su
#     $ chmod 644 file/*
#
#     してください．(file は，FileDirectory で指定したディレクトリです)
#
###############################################################################

require "cgi"
require "item-manager"

###############################################################################
# 設定
UPLOADER_URL    = "http://192.168.2.10:8080/up/"	# mod_uploader を設置した URL
FILE_DIR        = "../file"                         # FileDirectory で指定したディレクトリ
THUMB_DIR       = "../thumb"                        # ThumbDirectory で指定したディレクトリ
THUMB_EXT       = "jpg"                             # サムネイル画像の拡張子

###############################################################################
def get_page(cgi)
  if cgi.query_string != nil then
    page_str = cgi.query_string.split(';')[0]
  end

  if page_str != nil then
    page = page_str.to_i
  end

  if page == nil or page == 0 then
    page = 1
  end

  page
end

def get_file_path(cgi)
  cgi.params.keys.find {|key| /^\d+\.\w+$/ =~ key }
end

###############################################################################
cgi = CGI.new

page        = get_page(cgi)
file_path   = get_file_path(cgi)

print cgi.header
begin
  manager = ItemManager.new(UPLOADER_URL, FILE_DIR, THUMB_DIR, THUMB_EXT)

  if file_path == nil then
    print manager.view_page(page)
  else
    print manager.remove_page(file_path, page)
  end
rescue
  print "<pre>\n"
  print CGI.escapeHTML($!.message), "\n"
  print CGI.escapeHTML($!.backtrace), "\n"
  print "</pre>\n"
end


# local Variables:
# mode: ruby
# buffer-file-coding-system: euc-japan-unix
# End:

