package MT::Plugin::Hash; use vars qw( $VERSION ); $VERSION = 0.1; use MT::Template::Context; MT::Template::Context->add_container_tag(SHA1Hash => \&sha ); MT::Template::Context->add_container_tag(SHA1SaltHash => \&sha_salt ); sub sha { require Digest::SHA1; my ($ctx, $args) = @_; my $builder = $ctx->stash('builder'); my $tokens = $ctx->stash('tokens'); my $content; defined($content = $builder->build($ctx, $tokens)) or return $ctx->error($ctx->errstr); my $sha1 = Digest::SHA1->new; $sha1->add($content); return $sha1->b64digest . "="; } sub sha_salt { require MT::ConfigMgr; require Digest::SHA1; my ($ctx, $args) = @_; my $builder = $ctx->stash('builder'); my $tokens = $ctx->stash('tokens'); my $content; defined($content = $builder->build($ctx, $tokens)) or return $ctx->error($ctx->errstr); my $sha1 = Digest::SHA1->new; $sha1->add($content); my $salt_file = MT::ConfigMgr->instance->PluginPath .'/salt.txt'; open(FH, $salt_file) or die "cannot open file <$salt_file> ($!)"; $sha1->addfile(FH); close FH; return $sha1->b64digest . "="; } 1;