diff --git a/html/export.php b/html/export.php
index d287a8ce4..209e45363 100644
--- a/html/export.php
+++ b/html/export.php
@@ -33,6 +33,7 @@ global $g_user,$cn,$g_parameter;
require_once NOALYSS_INCLUDE.'/class/database.class.php';
require_once NOALYSS_INCLUDE . '/class/noalyss_user.class.php';
require_once NOALYSS_INCLUDE.'/lib/http_input.class.php';
+mb_internal_encoding("UTF-8");
//
// for loading javascripts or style-sheet, it is needed to know the user
@@ -49,12 +50,47 @@ if (isset ($_REQUEST['loadjs']) && $_REQUEST['loadjs']=='message')
include_once NOALYSS_INCLUDE."/lib/message_javascript.php";
return;
}
+
+
+//------------------------------------------------
+// Export File from ADMINISTRATION MENU
+//------------------------------------------------
+$hi=new HttpInput();
+if ($hi->request("admin","string",0)==1 ) {
+ $g_user=new Noalyss_user(new Database());
+ if ($g_user->admin != 1)
+ {
+ $g_user->audit('FAIL', "ADMIN: export admin".var_export($_REQUEST,true));
+ echo_warning(_("Accès interdit"));
+ exit();
+ }
+ if ( $hi->get("action")=="logfile") {
+ $directory=dir( NOALYSS_BASE.DIRECTORY_SEPARATOR."log");
+ $a_file=[];
+ while ( $file = $directory->read()) {
+ if (preg_match("/noalyss.*log/", $file)) {
+ $a_file[]=$file;
+ }
+ }
+ $file=$hi->get("file");
+ if (! in_array($file,$a_file ) )
+ {
+ echo_warning(sprintf("%s non trouvé",$file));
+ return;
+ }
+ header('Content-Type: application/x-download');
+ header('Content-Disposition: attachment; filename="'.$file.'"');
+ header('Cache-Control: private, max-age=0, must-revalidate');
+ header('Pragma: public');
+ echo file_get_contents(NOALYSS_BASE.DIRECTORY_SEPARATOR."/log/{$file}");
+ }
+ return;
+}
+//------------------------------------------------
// Connect the user to the current folder and export file
+//------------------------------------------------
$cn=Dossier::connect();
$g_user=new Noalyss_user($cn);
-$gDossier=dossier::id();
-$g_parameter=new Noalyss_Parameter_Folder($cn);
-mb_internal_encoding("UTF-8");
$g_user->Check();
/**
* check if 2FA is completed
@@ -62,9 +98,10 @@ $g_user->Check();
if ( ! $g_user->is_double_identified()) {
exit();
}
+$gDossier=dossier::id();
+$g_parameter=new Noalyss_Parameter_Folder($cn);
$action=$g_user->check_dossier($gDossier);
-$hi=new HttpInput();
$action=$hi->get("act");
if ( $action=='X' || $g_user->check_print($action)==0 )
diff --git a/include/admin_logfile.inc.php b/include/admin_logfile.inc.php
new file mode 100644
index 000000000..ef24a9e8b
--- /dev/null
+++ b/include/admin_logfile.inc.php
@@ -0,0 +1,93 @@
+';
+print '
';
+print _("Fichiers trace");
+print "
";
+//print p(_("Fichiers trace"),' class="text-muted"');
+
+$directory=dir( NOALYSS_BASE.DIRECTORY_SEPARATOR."log");
+$a_file=[];
+while ( $file = $directory->read()) {
+ if (preg_match("/noalyss.*log/", $file)) {
+ $a_file[]=$file;
+ }
+
+}
+
+rsort($a_file);
+$nb_file=count($a_file);
+if ( $nb_file == 0) {
+ echo p(_("Aucune donnée"),' class="notice"');
+ return;
+}
+if ( $http->get("sa","string","x")=="dwn")
+{
+ $file=$http->get("file");
+ if (! in_array($file,$a_file ) )
+ {
+ echo_warning(sprintf("%s non trouvé",$file));
+ record_log("admin_logfile : {$file} not found");
+ return;
+ }
+ print "";
+ print "- ";
+ print \HtmlInput::button_anchor(_("Retour"), NOALYSS_URL."/admin-noalyss.php?action=logfile");
+ print "
";
+ print "- ";
+ print \HtmlInput::button_anchor(_("Télécharger").''
+ , NOALYSS_URL."/export.php?admin=1&action=logfile&file={$file}");
+
+ print "
";
+ print "
";
+ echo '';
+ echo file_get_contents(NOALYSS_BASE.DIRECTORY_SEPARATOR."/log/{$file}");
+ echo '';
+ print "";
+ print "- ";
+ print \HtmlInput::button_anchor(_("Retour"), NOALYSS_URL."/admin-noalyss.php?action=logfile");
+ print "
";
+ print "- ";
+ print \HtmlInput::button_anchor(_("Télécharger").''
+ , NOALYSS_URL."/export.php?admin=1&action=logfile&file={$file}");
+
+ print "
";
+ print "
";
+ return;
+}
+echo '';
+for ( $i=0;$i < $nb_file;$i++)
+{
+ $url=sprintf("%s?%s", NOALYSS_URL."/admin-noalyss.php"
+ , http_build_query(["action"=>"logfile","sa"=>"dwn","file"=>$a_file[$i]]));
+ printf ("- %s
",$url,$a_file[$i]);
+}
+print "
";
\ No newline at end of file
diff --git a/include/admin_repo.inc.php b/include/admin_repo.inc.php
index e1fd207c2..4965e7ef4 100644
--- a/include/admin_repo.inc.php
+++ b/include/admin_repo.inc.php
@@ -47,6 +47,7 @@ if ($User->admin != 1)
{
$theme=(isset($User->theme))?$User->theme:"";
$User->audit('FAIL',"ADMIN : [$action]".var_export($_REQUEST,true));
+ record_log("Security alert [{$action}]".var_export($_REQUEST,true));
html_page_start($theme);
echo '';
echo "
";
@@ -206,6 +207,12 @@ hr {width: 600px; background-color: #cccccc; border: 0px; height: 1px; color: #0
echo $html->saveHTML();
}
+if ($action== 'logfile')
+{
+ /* List the connexion successfull and failed */
+ require_once NOALYSS_INCLUDE."/admin_logfile.inc.php";
+}
+
//------------------------------------------------------------------------------
// Upgrade
//------------------------------------------------------------------------------
diff --git a/include/lib/user_menu.php b/include/lib/user_menu.php
index 5148f8666..6c699174b 100644
--- a/include/lib/user_menu.php
+++ b/include/lib/user_menu.php
@@ -62,6 +62,9 @@ function MenuAdmin()
case 'info':
$def=6;
break;
+ case 'logfile':
+ $def=9;
+ break;
}
}
if (!defined("MULTI")||(defined("MULTI")&&MULTI==1))
@@ -76,6 +79,10 @@ function MenuAdmin()
array("admin-noalyss.php?action=audit_log",_("Audit"),_("Utilisateurs qui se sont connectés"),4),
array("admin-noalyss.php?action=info",
_("Information système"),('Information à propos de votre installation'),6),
+ array("admin-noalyss.php?action=logfile"
+ ,_("Trace")
+ ,_("Fichiers erreurs")
+ ,9),
array("login.php",_("Accueil"),"",7),
array("logout.php",_("Sortie"),"",8)
);
@@ -96,6 +103,10 @@ function MenuAdmin()
array("admin-noalyss.php?action=audit_log",_("Audit"),_("Utilisateurs qui se sont connectés"),4),
array("admin-noalyss.php?action=info",
_("Information système"),('Information à propos de votre installation'),6),
+ array("admin-noalyss.php?action=logfile"
+ ,_("Trace")
+ ,_("Fichiers erreurs")
+ ,9),
array("login.php",_("Accueil")),
array("logout.php",_("Sortie"))
);