#!/usr/bin/perl -w 
#------------------------------------------------------------------------------
# $Id:$
#------------------------------------------------------------------------------
# send mail CGI
#
# Copyright (c) BAYBITS LLC. All rights reserved.
#------------------------------------------------------------------------------

use strict;
use utf8;
use CGI;
use URI::Escape;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use XML::DOM;
use TF::XMLUtils;
use TF::CommonUtils;
use HTML::Template;

binmode(STDOUT, ":utf8");

my $LOCATION      = $ENV{'TF_LOCATION'};
my $USERID        = $ENV{'REMOTE_USER'};
my $PASSWD        = $ENV{'TF_USERPLAINPASSWORD'};
my $BRAND         = $ENV{'TF_BRANDNAME'} || '';
my $LANGPARAM     = TF::CommonUtils::getLangPriority();
my $ACCEPTLANG_H  = $ENV{'HTTP_ACCEPT_LANGUAGE'} || '';
my ($SCHEMA,$SERVER_PORT,$URI_PREFIX) = TF::CommonUtils::getCgiConnectInfo();

my $ERRORTABLE_ja = {
					CGIError => "CGIエラーです",
					templateError => "テンプレートオブジェクトが生成できません",
					readTemplateError => "テンプレートファイルの読み込みに失敗しました",
					};

my $ERRORTABLE_en = {
					CGIError => "CGI error found.",
					templateError => "Can not create template object.",
					readTemplateError => "Failed to read template file.",
					};

my $SUBJECT_DEFAULT = ($LANGPARAM eq 'ja') ? "あなたの監視しているフォルダに変更がありました" : "There was a change in the folder which you were mail-watching";
	
my $ERRORTABLE    = ($LANGPARAM eq 'ja') ? $ERRORTABLE_ja : $ERRORTABLE_en;

if (!$LOCATION) {
	TF::CommonUtils::showAccessDeny();
	die '';
}

main();

sub main {

	#POSTデータの受け取り
	my $cgi = new CGI;
	if( ! $cgi ) {
		TF::CommonUtils::showErrorPage($ERRORTABLE->{CGIError}, $LANGPARAM);
		print STDERR "CGI Object error";
		return;
	}

	if( $cgi->cgi_error ) {
		TF::CommonUtils::showErrorPage($ERRORTABLE->{CGIError}, '(' . $cgi->cgi_error . ')', $LANGPARAM);
		print STDERR "CGI Error (" . $cgi->cgi->error . ")";
		return;
	}

	my $subject = $cgi->param('mlsubject');
	my $body    = $cgi->param('mlbody');
	my $CurrentFolderUri = $cgi->param('hidCurrentFolderUri');
	my $ParamMethod = $cgi->param("hidMWParamMethods");
	my $Triggerfile = $cgi->param("hidMWTriggerfile");
	
	&putMail($subject, $body, $CurrentFolderUri,
						$ParamMethod, $Triggerfile);

	print $cgi->redirect($CurrentFolderUri);

}

sub putMail {

	my $subject = shift || '';
	my $body = shift || '';
	my $folder = shift || '';
	my $parammethod = shift || '';
	my $triggerfile = shift || '';

	if (!$folder) {
		TF::CommonUtils::showAccessDeny();
		return;
	}

	my ($parent_uri, $seq) = split(/\?seq=/, $folder);
	my $parent_uri_decode = uri_unescape($parent_uri);
	my $ua  = LWP::UserAgent->new(ssl_opts => {verify_hostname => 0});
	my $req = HTTP::Request->new;
	my $uuid = `uuidgen`;
	my $uri = $URI_PREFIX . $LOCATION . '/.mail/' . $uuid;

	my $content= "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>"
				."<TF:mailrequest xmlns:TF=\"TF\">"
				."<TF:mailproperty xmlns:TF=\"http://www.teamfile.com/DTD/TF/\">"
				."<TF:brand>$BRAND</TF:brand>"
				."<TF:method>$parammethod</TF:method>"
				."<TF:srcuri><![CDATA[$parent_uri_decode]]></TF:srcuri>"
				."<TF:from><![CDATA[$USERID]]></TF:from>"
				."<TF:subject><![CDATA[$subject]]></TF:subject>"
				."<TF:body><![CDATA[$body]]></TF:body>"
				."<TF:bodyfodder><![CDATA[]]></TF:bodyfodder>"
				."<TF:filelist>"
				."<TF:filename><![CDATA[1: $triggerfile]]></TF:filename>"
				."</TF:filelist>"
				."</TF:mailproperty>"
				."</TF:mailrequest>";

	$req->uri($uri);
	$req->method("PUT");
	$req->protocol("HTTP/1.1");
	$req->header("TF-Client-Info", "mc11111");
	$req->header("Accept-Language", $ACCEPTLANG_H);
	$req->authorization_basic($USERID, $PASSWD);
	$req->content($content);

	$ua->agent(TF::CommonUtils::getCgiUserAgent());
	my $res = $ua->request($req);
	if ($res->is_success && $res->code == 201) {
		# メールの送信成功
	}

	return;
}

