From e53cfccbe6c4573a6cedc9800c2fdfaf97b5993b Mon Sep 17 00:00:00 2001 From: "renater.salaun" <renater.salaun@047e039d-479c-447e-8a29-aa6bf4a09bab> Date: Mon, 15 Sep 2014 14:09:55 +0000 Subject: [PATCH] First version of the web interface git-svn-id: https://svn.geant.net/GEANT/edugain_testidp_account_manager/trunk@8 047e039d-479c-447e-8a29-aa6bf4a09bab --- bin/account-manager-web.pl | 211 ++++++++++++++++++ lib/IdPAccountManager/Tools.pm | 64 ++++++ resources/geant_logo_rgb_300dpi.jpg | Bin 0 -> 72279 bytes .../mail/notification_generic_error.tt2.eml | 19 ++ templates/web/content.tt2.html | 13 ++ templates/web/index.tt2.html | 153 +++++++++++++ templates/web/title.tt2.html | 6 + 7 files changed, 466 insertions(+) create mode 100755 bin/account-manager-web.pl create mode 100644 resources/geant_logo_rgb_300dpi.jpg create mode 100644 templates/mail/notification_generic_error.tt2.eml create mode 100644 templates/web/content.tt2.html create mode 100644 templates/web/index.tt2.html create mode 100644 templates/web/title.tt2.html diff --git a/bin/account-manager-web.pl b/bin/account-manager-web.pl new file mode 100755 index 0000000..d04e310 --- /dev/null +++ b/bin/account-manager-web.pl @@ -0,0 +1,211 @@ +#!/usr/bin/perl + +## 15/09/2014, Olivier Salaün +## Web interface for the eduGAIN Test IdP Account Manager +## TODO : rename %erreurs e + +use strict; +use utf8; +use lib "/opt/testidp/IdPAccountManager/lib"; + +use CGI; +use CGI::Cookie; +use CGI::Util; +use Template; +use Template::Constants qw( :debug ); +use POSIX; + +use IdPAccountManager::TestAccount; + +## Defining parameters format +my $urn_or_url_regex = '(http(s?):\/\/|urn:)[^\\\$\*\"\'\`\^\|\<\>\n\s]+'; ## Format de type URL HTTP ou URN +my $url_regex = 'http(s?):\/\/[^\\\$\*\"\'\`\^\|\<\>\n\s]+'; +my $email_regex = '([\w\-\_\.\/\+\=\'\&]+|\".*\")\@[\w\-]+(\.[\w\-]+)+'; +my $domains_regex = '[\w\.\-]+(,[\w\.\-]+)*'; +my %format = ( + ## URL + #'attributeauthority' => $url_regex, + ); + +my %actions = ('select_sp' => {'title_en' => 'Select your Service Provider' } + ); + +## Gives writes for the group +umask 0002; + +chdir $IdPAccountManager::Conf::global{'root_manager_dir'}; + +my $request = new WebRequest; + +if (defined $request) { + $request->execute(); +} + +$request->respond(); + +package WebRequest; + +## New web request +sub new { + my $pkg = shift; + my $request = {}; + + my $http_query = new CGI; + + ## Input parameters + my %in_vars = $http_query->Vars; + $request->{'param_in'} = \%in_vars; + + ## Check if admin acts as another user + $request->{'cookies'} = CGI::Cookie->fetch; + #if (defined $request->{'cookies'}{'as_user'} && $request->{'is_admin'}) { + # $request->{'utilisateur'} = $request->{'as_user'} = $request->{'cookies'}{'as_user'}->value; + # $request->{'is_admin'} = 0; + #} + + ## Usefull data for output (web pages or mail notices) + $request->{'param_out'}{'url_cgi'} = $ENV{'SCRIPT_NAME'}; + $request->{'param_out'}{'env'} = \%ENV; + $request->{'param_out'}{'actions'} = \%actions; + $request->{'param_out'}{'conf'} = \%IdPAccountManager::Conf::global; + + ## Dumping input data + #open TMP, ">/tmp/account_manager.in"; &IdPAccountManager::Tools::dump_var($request->{'param_in'}, 0, \*TMP); close TMP; + + ## Clean input vars + foreach my $key (keys %{$request->{'param_in'}}) { + #&IdPAccountManager::Tools::do_log('trace', "PARAM_ENTREE: %s=%s", $key, $request->{'param_in'}{$key}); + + ## Removing all ^M (0D) + $request->{'param_in'}{$key} =~ s/\r//g; + + $request->{'param_in'}{$key} =~ s/\s+$//; ## Remove trailing spaces + $request->{'param_in'}{$key} =~ s/^\s+//; ## Remove leading spaces + #if ($request->{'param_in'}{$key} =~ /\0/) { + # my @valeurs = split /\0/, $request->{'param_in'}{$key}; + # $request->{'param_in'}{$key} = $valeurs[0]; ## Only keep first value of multi-valued parameters + #} + + ## If action_xx param is set, then action=xx + ## Usefull to have sementicless values in submit forms + if ($key =~ /^action_(\w+)$/) { + #&IdPAccountManager::Tools::do_log('trace', "ACTION $key"); + $request->{'param_in'}{'action'} = $1; + } + } + + ## Check the requested action + if ($request->{'param_in'}{'action'} ) { + $request->{'action'} = $request->{'param_in'}{'action'}; + }else { + ## Default action + &IdPAccountManager::Tools::do_log('info', "Default action"); + $request->{'action'} = 'help'; + } + + bless $request, $pkg; + + return $request; +} + +## Execute a web request +sub execute { + my $self = shift; + &IdPAccountManager::Tools::do_log('debug', ""); + + my $status; + + ## Check input parameters format + foreach my $key (keys %{$request->{'param_in'}}) { + if ($self->{'param_in'}{$key} !~ /^\s*$/ && + defined $format{$key} && + ! ref($format{$key})) { + unless ($self->{'param_in'}{$key} =~ /^$format{$key}$/) { + push @{$self->{'param_out'}{'erreurs'}}, "format_$key"; + &IdPAccountManager::Tools::do_log('error', "Incorrect parameter format : $key"); + return undef; + } + } + } + + do { + ## Actions can be chained + $self->{'action'} = $self->{'next_action'} if ($self->{'next_action'}); + delete $self->{'next_action'}; ## Prevent loops + + if (defined $actions{$self->{'action'}}) { + + ## Execute the target subroutine named req_actionName + my $sub = 'req_'.$self->{'action'}; + $status = &{$sub}($self); + + }else { + ## Inknown action + push @{$self->{'param_out'}{'erreurs'}}, "unknown_action"; + &IdPAccountManager::Tools::do_log('error', "Unknown action '%s'", $self->{'action'}); + + } + + } while ($self->{'next_action'}); + + #return undef if (!defined $status); + + return 1; +} + + +## Return HTML content +sub respond { + my $self = shift; + &IdPAccountManager::Tools::do_log('debug', ""); + + ## Dump output data + #open TMP, ">/tmp/account_registry.out"; &IdPAccountManager::Tools::dump_var($self->{'param_out'}, 0, \*TMP); close TMP; + + ## Automatic pass object entries to the output hash + foreach my $key (keys %{$self}) { + #&IdPAccountManager::Tools::do_log('trace', "Passing $key"); + $self->{'param_out'}{$key} ||= $self->{$key} unless ($key eq 'param_out'); + } + + ## An action may redirect to an external URL + if ($self->{'url_redirection'}) { + #&IdPAccountManager::Tools::do_log('trace', "URL Redirect : $self->{'url_redirection'}"); + printf "Location: %s\n\n", $self->{'url_redirection'}; + + }else { + #$self->{'param_out'}{'cookie'} = CGI::Cookie->new(-name=>'as_user',-value=>$self->{'as_user'},-expires=>'-1M'); + + ## Parse template + my $tt2 = Template->new({ + ENCODING => 'iso-8859-1', ## le défaut apparemment + FILTERS => {'encode_utf8', => [\&IdPAccountManager::Tools::encode_utf8, 0], + 'escape_quotes' => [\&IdPAccountManager::Tools::escape_quotes, 0]}, + #DEBUG => 'all', + #DEBUG => 'caller', + #DEBUG => 'parser' + }); + + my $template = 'templates/web/index.tt2.html'; + + unless ($tt2->process($template, $self->{'param_out'}, \*STDOUT)) { + printf "Content-type: text/plain\n\n Error: %s", $tt2->error(); + &IdPAccountManager::Tools::do_log('error', "Web parser error : %s", $tt2->error()); + } + } + + ## Ignore some type of errors + my @erreurs_admin; + foreach my $id_erreur (@{$self->{'param_out'}{'erreurs'}}) { + unless ($id_erreur =~ /^(error_x)$/) { + push @erreurs_admin, $id_erreur; + } + } + + ## Mail notification of admins about the error + if (@erreurs_admin) { + &IdPAccountManager::Tools::mail_notice('template' => 'templates/mail/notification_generic_error.tt2.eml', + 'data' => $self->{'param_out'}); + } + +} \ No newline at end of file diff --git a/lib/IdPAccountManager/Tools.pm b/lib/IdPAccountManager/Tools.pm index 620d2d3..98b1a09 100644 --- a/lib/IdPAccountManager/Tools.pm +++ b/lib/IdPAccountManager/Tools.pm @@ -135,6 +135,70 @@ sub do_log { return 1; } +## Send a mail notice +## Default is to send email to the manager admins, unless other recipients are specified +## mail_notice(IN) +## IN is a HASH with expected entries : +## template : mail template file +## data : data used by the TT2 parser +sub mail_notice { + my %in = @_; + my $tt2_file = $in{'template'}; + my $mail_data = $in{'data'}; + + $mail_data->{'conf'} ||= \%IdPAccountManager::Conf::global; + + my $notice_email = $in{'to'} || $IdPAccountManager::Conf::global{'admin_email'}; + $mail_data->{'to'} = $notice_email; + + ## Protection to prevent notifications during test dev phases + ## Notify only adresses @renater.fr + if ($IdPAccountManager::Conf::global{'no_mail_outside'}) { + foreach my $email (split /,/, $notice_email) { + unless ($email =~ /\@(cru|renater)\.fr$/) { + &do_log('error',"Notification to an external address skipped"); + return undef; + } + } + } + + &do_log('trace', '(template=%s, to=%s)', $in{'template'}, $mail_data->{'to'}); + + open SENDMAIL, "|/usr/sbin/sendmail -f ".$IdPAccountManager::Conf::global{'notice_from'}." $notice_email"; + + my $tt2 = Template->new(FILTERS => {qencode => [\&qencode, 0]}); + unless ($tt2->process($tt2_file, $mail_data, \*SENDMAIL)) { + &do_log('error', "Erreur TT2 : %s", $tt2->error()); + } + close SENDMAIL; +} + +sub qencode { + my $string = shift; + # We are not able to determine the name of header field, so assume + # longest (maybe) one. + return MIME::EncWords::encode_mimewords(Encode::decode('utf8', $string), + Encoding=>'A', + Charset=> 'utf8', + Field=>"subject"); +} + +## usefull to pass parameters to TT2 +sub encode_utf8 ($) { + my $string = shift||''; + + return Encode::encode('utf8', $string); +} + +## usefull to pass parameters to TT2 +sub escape_quotes { + my $string = shift; + + $string =~ s/\'/\\\'/g; + + return $string; +} + 1; # Magic true value required at end of module __END__ diff --git a/resources/geant_logo_rgb_300dpi.jpg b/resources/geant_logo_rgb_300dpi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..820b7dee541a942c219abcbcf329b189e4433a96 GIT binary patch literal 72279 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 literal 0 HcmV?d00001 diff --git a/templates/mail/notification_generic_error.tt2.eml b/templates/mail/notification_generic_error.tt2.eml new file mode 100644 index 0000000..9908628 --- /dev/null +++ b/templates/mail/notification_generic_error.tt2.eml @@ -0,0 +1,19 @@ +From: [% conf.app_name %] <[% conf.notice_from %]> +To: [% to %] +Subject: [% subject %] +Content-type: text/plain; charset=UTF-8; format=flowed + +You receive this notification as administrator of the eduGAIN Test Account Manager +An error occured during test account processing. + +[% IF error_type == 'skipping_provider_metadata_issue' %] +Le fichier de méta-données pour le provider [% entityid %] a un format incorrect ou n'a pas pu être téléchargé. + +L'URL des méta-données : [% provider.get('metadataurl') %] + +Check logs for more details +[% ELSE %] +Error: [% error_type %] + +Check logs for more details +[% END %] diff --git a/templates/web/content.tt2.html b/templates/web/content.tt2.html new file mode 100644 index 0000000..16963a7 --- /dev/null +++ b/templates/web/content.tt2.html @@ -0,0 +1,13 @@ + + +[% IF action == 'select_sp' %] + [% TRY %] + [% PROCESS 'templates/select_sp.tt2.html' %] + [% CATCH %] + An error occured + [% END %] + +[% ELSE %] +Error: unknown action + +[% END %] diff --git a/templates/web/index.tt2.html b/templates/web/index.tt2.html new file mode 100644 index 0000000..84f8a43 --- /dev/null +++ b/templates/web/index.tt2.html @@ -0,0 +1,153 @@ +Content-Type: text/html +[% IF cookie %]Set-Cookie: [% cookie %][% END %] + +<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/x +html1/DTD/xhtml1-transitional.dtd"> +<html xml:lang="[% iso639 = locale.match('^(.)(.)'); iso639.0; iso639.1 %]" xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<meta http-equiv="content-type" content="text/html; charset=utf-8" /> + +<link type="text/css" href="/jquery/jquery-ui-1.8.16/css/smoothness/jquery-ui-1.8.16.custom.css" rel="Stylesheet" /> +<link rel="stylesheet" media="screen" type="text/css" href="/css/renater.css" /> +<link rel="icon" type="image/png" href="/images/favicon.png" /> + +<script type="text/javascript" src="/jquery/jquery-1.7.min.js"></script> +<script type="text/javascript" src="/jquery/jquery-ui-1.8.16.custom.min.js"></script> + +<SCRIPT TYPE="text/javascript"> +<!-- + + // To confirm on a link (A HREF) + function request_confirm_link(my_url, my_message) { + question = confirm(my_message); + if (question !="0") { + top.location = my_url; + } + } + +function showhide(div){ + var oDiv = document.getElementById(div); + if(oDiv.style.display == "none"){ + oDiv.style.display = "block"; + }else{ + oDiv.style.display = "none"; + } +} + +function hide(div) { + var oDiv = document.getElementById(div); + oDiv.style.display = "none"; +} + +//--> +</SCRIPT> + +<STYLE type="text/css"><!-- + +.login {float: left} +.menu {float: right} +.footer {text-align: center} +.prod {background-color: #028A34} +h1 {text-align: center} +li,dd {margin-left:10px;} +li.parametre {margin-bottom: 15px;} +dd.parametre {margin-bottom: 15px;} +div.important{border-style:solid;border-color:black;border-width:1px;background-color:#F5DEB3;padding:5px;} +.mandatory{color:#e00853;font-style:italic;font-weight:bold;margin:0 3px} +.notice{border:2px solid #05a;padding:5px 5px 5px 5px;margin:20px;} +--></STYLE> +<title> [% PROCESS 'templates/web/title.tt2.html' %] </title> + +</head> + +<body> + +<div id="wrapper"> + <div id="header"> + <div id="bandeau"> + <div class="logo"> + <img alt="GEANT logo" width="150" src="/resources/geant_logo_rgb_300dpi.jpg"/> + </div> + <div class="connection"> + </div> + + <div class="title"> + [% PROCESS 'templates/web/title.tt2.html' %] + </div> + + </div> + + + <div id="content"> + +[% IF erreurs %] +<div class="ui-widget"> + [% FOREACH err IN erreurs %] + +<p class="ui-state-error ui-corner-all" style="margin-top: 20px; padding: 0 .7em;"><span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;"></span> + [% IF lang == 'en' %]Error: [% ELSE %]Erreur : [% END %] + + [% IF err == 'unknown_action' %] + [% IF lang == 'en' %]Unknown action[% ELSE %]action non supportée.[% END %] + + [% ELSIF err == 'internal' %] + [% IF lang == 'en' %]internal error; administrators of the federation registry have been notified.[% ELSE %]erreur interne ; les administrateurs du guichet de la fédération ont été notifiés.[% END %] + + [% ELSIF (matches = err.match('missing_(\w+)')) %] + [% IF lang == 'en' %]missing parameter '[% matches.0 %]'[% ELSE %]paramètre '[% matches.0 %]' manquant.[% END %] + + [% ELSE %] + [% err %] + + [% END %] <!-- autorisation --> +</p> +<br/> + [% END %] <!-- FOREACH --> +</div> +[% ELSE %] + + +[% IF notifications %] +<div class="ui-widget"> + [% FOREACH notif IN notifications %] +<p class="ui-state-highlight ui-corner-all" style="border: 2px solid #10427a; background: #DFF1EE;padding: 0.7em;"><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> + [% IF lang == 'en' %]Notice: [% ELSE %]Notification : [% END %] + + [% IF notif == 'done' %] + + [% IF lang == 'en' %]Operation has been performed[% ELSE %]L'opération a été effectuée;[%END%] + + [% ELSE %] + + [% notif %]<br/> + + [% END %] + + [% END %] <!-- FOREACH --> +</b></div> +[% END %] <!-- notifications --> + +[% PROCESS 'templates/web/content.tt2.html' %] + +[% END %] <!-- IF erreurs --> + +<p> + +[% IF dump %] +DUMP :<br> + + [% USE Dumper %] + [% Dumper.dump_html(dump) %] +</p> +[% END %] + + <div> + <hr> + +<div align="middle">Test Account Manager [% conf.version %]</div> + </div> + </div> +</div> +</body> +</html> diff --git a/templates/web/title.tt2.html b/templates/web/title.tt2.html new file mode 100644 index 0000000..80302a0 --- /dev/null +++ b/templates/web/title.tt2.html @@ -0,0 +1,6 @@ +[% conf.app_name %] - + + [% IF actions.$action %] + [% FILTER encode_utf8 %][% actions.$action.title %][% END %] + [% ELSE %] + [% END %] -- GitLab