diff --git a/htdocs/blockedlog/admin/fingerprints.php b/htdocs/blockedlog/admin/blockedlog_list.php similarity index 83% rename from htdocs/blockedlog/admin/fingerprints.php rename to htdocs/blockedlog/admin/blockedlog_list.php index 629f274ae58..923ea5d9d93 100644 --- a/htdocs/blockedlog/admin/fingerprints.php +++ b/htdocs/blockedlog/admin/blockedlog_list.php @@ -16,7 +16,7 @@ */ /** - * \file htdocs/blockedlog/admin/fingerprints.php + * \file htdocs/blockedlog/admin/blockedlog_list.php * \ingroup blockedlog * \brief Page setup for blockedlog module */ @@ -36,8 +36,22 @@ if (! $user->admin) accessforbidden(); $action = GETPOST('action','alpha'); $showonlyerrors = GETPOST('showonlyerrors','int'); +// Load variable for pagination +$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit; +$sortfield = GETPOST('sortfield','alpha'); +$sortorder = GETPOST('sortorder','alpha'); +$page = GETPOST('page','int'); +if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 +$offset = $limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; + +if (empty($sortfield)) $sortfield='rowid'; +if (empty($sortorder)) $sortorder='DESC'; + $block_static = new BlockedLog($db); + /* * Actions */ @@ -114,7 +128,7 @@ else if($action === 'downloadcsv') { * View */ -$blocks = $block_static->getLog('all', 0, GETPOST('all','alpha') ? 0 : 50); +$blocks = $block_static->getLog('all', 0, GETPOST('all','alpha') ? 0 : 50, $sortfield, $sortorder); $form=new Form($db); @@ -143,11 +157,11 @@ print '
| '.$block->id.' | '; print ''.dol_print_date($block->tms,'dayhour').' | '; - print ''.$block->getUser().' | '; + print ''; + //print $block->getUser() + print $block->user_fullname; + print ' | '; print ''.$langs->trans('log'.$block->action).' | '; print ''.$block->ref_object.' | '; print ''.$object_link.' | '; @@ -178,15 +205,14 @@ foreach($blocks as &$block) { print ''; print '';
- if (empty($block->error))
+ if (! $checkresult[$block->id] || ($loweridinerror && $block->id >= $loweridinerror)) // If error
{
- if (empty($atleastoneerror)) print img_picto($langs->trans('OkCheckFingerprintValidity'), 'statut4');
- else print img_picto($langs->trans('OkCheckFingerprintValidityButChainIsKo'), 'statut1');
+ if (empty($checkresult[$block->id])) print img_picto($langs->trans('OkCheckFingerprintValidityButChainIsKo'), 'statut1');
+ else print img_picto($langs->trans('KoCheckFingerprintValidity'), 'statut8');
}
else
{
- $atleastoneerror++;
- print img_picto($langs->trans('KoCheckFingerprintValidity'), 'statut8');
+ print img_picto($langs->trans('OkCheckFingerprintValidity'), 'statut4');
}
if(!empty($conf->global->BLOCKEDLOG_USE_REMOTE_AUTHORITY) && !empty($conf->global->BLOCKEDLOG_AUTHORITY_URL)) {
diff --git a/htdocs/blockedlog/ajax/check_signature.php b/htdocs/blockedlog/ajax/check_signature.php
index 170693a2ece..4b50474b4a9 100644
--- a/htdocs/blockedlog/ajax/check_signature.php
+++ b/htdocs/blockedlog/ajax/check_signature.php
@@ -45,7 +45,7 @@ $auth->syncSignatureWithAuthority();
$block_static = new BlockedLog($db);
-$blocks = $block_static->getLog('just_certified', 0, 0, 1) ;
+$blocks = $block_static->getLog('just_certified', 0, 0, 'rowid', 'ASC');
$auth->signature = $block_static->getSignature();
diff --git a/htdocs/blockedlog/class/authority.class.php b/htdocs/blockedlog/class/authority.class.php
index 707e3b1b172..b1084b01a54 100644
--- a/htdocs/blockedlog/class/authority.class.php
+++ b/htdocs/blockedlog/class/authority.class.php
@@ -1,4 +1,4 @@
-
*
* This program is free software; you can redistribute it and/or modify
@@ -20,76 +20,76 @@
*/
class BlockedLogAuthority
{
-
+
/**
* Id of the log
* @var int
*/
public $id;
-
+
/**
* Unique fingerprint of the blockchain to store
* @var string
*/
public $signature = '';
-
+
/**
* Entire fingerprints blockchain
* @var string
*/
public $blockchain = '';
-
+
/**
* timestamp
* @var int
*/
public $tms = 0;
-
+
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
public function __construct($db) {
-
+
$this->db = $db;
-
+
}
-
+
/**
- * Get the blockchain
+ * Get the blockchain
*
* @return string blockchain
*/
public function getLocalBlockChain() {
-
+
$block_static = new BlockedLog($this->db);
-
+
$this->signature = $block_static->getSignature();
-
- $blocks = $block_static->getLog('all', 0, 0, 1) ;
-
+
+ $blocks = $block_static->getLog('all', 0, 0, 'rowid', 'ASC') ;
+
$this->blockchain = '';
-
+
foreach($blocks as &$b) {
$this->blockchain.=$b->signature;
-
+
}
-
+
return $this->blockchain;
}
-
+
/**
* Get hash of the block chain to check
*
* @return string hash md5 of blockchain
*/
public function getBlockchainHash() {
-
+
return md5($this->signature.$this->blockchain);
-
+
}
-
+
/**
* Get hash of the block chain to check
*
@@ -97,22 +97,22 @@ class BlockedLogAuthority
* @return boolean
*/
public function checkBlockchain($hash) {
-
+
return ($hash === $this->getBlockchainHash() );
-
+
}
-
+
/**
* Add a new block to the chain
*
* @param string $block new block to chain
*/
public function addBlock($block) {
-
+
$this->blockchain.=$block;
-
+
}
-
+
/**
* hash already exist into chain ?
*
@@ -120,20 +120,20 @@ class BlockedLogAuthority
* @return boolean
*/
public function checkBlock($block) {
-
+
if(strlen($block)!=64) return false;
-
+
$blocks = str_split($this->blockchain,64);
-
+
if(!in_array($block,$blocks)) {
return true;
- }
+ }
else{
return false;
}
}
-
-
+
+
/**
* Get object from database
*
@@ -142,40 +142,40 @@ class BlockedLogAuthority
* @return int >0 if OK, <0 if KO, 0 if not found
*/
public function fetch($id, $signature='') {
-
+
global $langs;
-
+
dol_syslog(get_class($this)."::fetch id=".$id, LOG_DEBUG);
-
+
if (empty($id) && empty($signature))
{
$this->error='BadParameter';
return -1;
}
-
+
$langs->load("blockedlog");
-
+
$sql = "SELECT b.rowid, b.signature, b.blockchain, b.tms";
$sql.= " FROM ".MAIN_DB_PREFIX."blockedlog_authority as b";
-
+
if ($id) $sql.= " WHERE b.rowid = ". $id;
else if($signature)$sql.= " WHERE b.signature = '". $this->db->escape( $signature ) ."'" ;
-
+
$resql=$this->db->query($sql);
if ($resql)
{
if ($this->db->num_rows($resql))
{
$obj = $this->db->fetch_object($resql);
-
+
$this->id = $obj->rowid;
$this->ref = $obj->rowid;
-
+
$this->signature = $obj->signature;
$this->blockchain = $obj->blockchain;
-
+
$this->tms = $this->db->jdate($obj->tms);
-
+
return 1;
}
else
@@ -189,9 +189,9 @@ class BlockedLogAuthority
$this->error=$this->db->error();
return -1;
}
-
+
}
-
+
/**
* Create authority in database.
*
@@ -199,17 +199,17 @@ class BlockedLogAuthority
* @return int <0 if KO, >0 if OK
*/
public function create($user) {
-
+
global $conf,$langs,$hookmanager;
-
+
$langs->load('blockedlog');
-
+
$error=0;
-
+
dol_syslog(get_class($this).'::create', LOG_DEBUG);
-
+
$this->db->begin();
-
+
$sql = "INSERT INTO ".MAIN_DB_PREFIX."blockedlog_authority (";
$sql.= " signature,";
$sql.= " blockchain";
@@ -217,18 +217,18 @@ class BlockedLogAuthority
$sql.= "'".$this->db->escape($this->signature)."',";
$sql.= "'".$this->db->escape($this->blockchain)."'";
$sql.= ")";
-
+
$res = $this->db->query($sql);
if ($res)
{
$id = $this->db->last_insert_id(MAIN_DB_PREFIX."blockedlog_authority");
-
+
if ($id > 0)
{
$this->id = $id;
-
+
$this->db->commit();
-
+
return $this->id;
}
else
@@ -243,9 +243,9 @@ class BlockedLogAuthority
$this->db->rollback();
return -1;
}
-
+
}
-
+
/**
* Create authority in database.
*
@@ -253,26 +253,26 @@ class BlockedLogAuthority
* @return int <0 if KO, >0 if OK
*/
public function update($user) {
-
+
global $conf,$langs,$hookmanager;
-
+
$langs->load('blockedlog');
-
+
$error=0;
-
+
dol_syslog(get_class($this).'::create', LOG_DEBUG);
-
+
$this->db->begin();
-
+
$sql = "UPDATE ".MAIN_DB_PREFIX."blockedlog_authority SET ";
$sql.= " blockchain='".$this->db->escape($this->blockchain)."'";
$sql.= " WHERE rowid=".$this->id;
-
+
$res = $this->db->query($sql);
if ($res)
{
$this->db->commit();
-
+
return 1;
}
else
@@ -281,9 +281,9 @@ class BlockedLogAuthority
$this->db->rollback();
return -1;
}
-
+
}
-
+
/**
* For cron to sync to authority.
*
@@ -291,43 +291,43 @@ class BlockedLogAuthority
*/
public function syncSignatureWithAuthority() {
global $conf, $langs;
-
+
//TODO create cron task on activation
-
+
if(empty($conf->global->BLOCKEDLOG_AUTHORITY_URL) || empty($conf->global->BLOCKEDLOG_USE_REMOTE_AUTHORITY)) {
$this->error = $langs->trans('NoAuthorityURLDefined');
return -2;
}
require_once DOL_DOCUMENT_ROOT.'/blockedlog/class/blockedlog.class.php';
-
+
$block_static = new BlockedLog($this->db);
-
- $blocks = $block_static->getLog('not_certified', 0, 0, 1);
-
+
+ $blocks = $block_static->getLog('not_certified', 0, 0, 'rowid', 'ASC');
+
$signature=$block_static->getSignature();
-
+
foreach($blocks as &$block) {
-
+
$url = $conf->global->BLOCKEDLOG_AUTHORITY_URL.'/blockedlog/ajax/authority.php?s='.$signature.'&b='.$block->signature;
-
+
$res = file_get_contents($url);
echo $block->signature.' '.$url. ' '.$res.' '; if($res === 'blockalreadyadded' || $res === 'blockadded') { - + $block->setCertified(); - + } else { - + $this->error = $langs->trans('ImpossibleToContactAuthority ',$url); return -1; } - - + + } - + return 1; } - + } \ No newline at end of file diff --git a/htdocs/blockedlog/class/blockedlog.class.php b/htdocs/blockedlog/class/blockedlog.class.php index 28f4a7e2aa5..323b0430f26 100644 --- a/htdocs/blockedlog/class/blockedlog.class.php +++ b/htdocs/blockedlog/class/blockedlog.class.php @@ -495,7 +495,7 @@ class BlockedLog /** * Check if current signature still correct compare to the chain * - * @return boolean + * @return boolean True if OK, False if KO */ public function checkSignature() { @@ -512,8 +512,8 @@ class BlockedLog $res = ($signature === $this->signature); - if(!$res) { - $this->error++; + if (!$res) { + $this->error = 'Signature KO'; } return $res; @@ -578,10 +578,11 @@ class BlockedLog * @param string $element element to search * @param int $fk_object id of object to search * @param int $limit max number of element, 0 for all - * @param string $order sort of query + * @param string $sortfield sort field + * @param string $sortorder sort order * @return array array of object log */ - public function getLog($element, $fk_object, $limit = 0, $order = -1) + public function getLog($element, $fk_object, $limit = 0, $sortfield = '', $sortorder = '') { global $conf, $cachedlogs; @@ -609,7 +610,8 @@ class BlockedLog WHERE element='".$element."' AND fk_object=".(int) $fk_object; } - $sql.=($order<0 ? ' ORDER BY rowid DESC ' : ' ORDER BY rowid ASC '); + $sql.=$this->db->order($sortfield, $sortorder); + //($order<0 ? ' ORDER BY rowid DESC ' : ' ORDER BY rowid ASC '); if($limit > 0 )$sql.=' LIMIT '.$limit; diff --git a/htdocs/blockedlog/lib/blockedlog.lib.php b/htdocs/blockedlog/lib/blockedlog.lib.php index cffac7cbff9..d377384f1c4 100644 --- a/htdocs/blockedlog/lib/blockedlog.lib.php +++ b/htdocs/blockedlog/lib/blockedlog.lib.php @@ -38,7 +38,7 @@ function blockedlogadmin_prepare_head() $head[$h][2] = 'blockedlog'; $h++; - $head[$h][0] = DOL_URL_ROOT."/blockedlog/admin/fingerprints.php"; + $head[$h][0] = DOL_URL_ROOT."/blockedlog/admin/blockedlog_list.php"; $head[$h][1] = $langs->trans("Fingerprints"); $head[$h][2] = 'fingerprints'; $h++; |