[1] Daemon uses etree list

[2]  lib/mfrc522 -> feature/rfid-read
[3] rfid-read logs to DATA/rfid-read
[4] api/fetch checks for DATA/* according to etree
[5] api/deploy deploys etrees truncates
[6] more updates...
This commit is contained in:
xdrm-brackets 2017-09-26 10:26:02 +02:00
parent 4fd7197cc6
commit 9a62d404fa
10 changed files with 72 additions and 64 deletions

9
daemon
View File

@ -2,9 +2,16 @@
ABSPATH=$( dirname $(realpath $0) );
source $ABSPATH/include/bash/const;
source $ABSPATH/include/bash/func;
# (1) Check synchronization done #
if [ ! -e /target/sync ]; then
slog "[!] not synced yet, aborting" - "daemon" && exit 127;
fi;
$ABSPATH/lib/mfrc522/loop;
# (2) Get the list of etrees #
cat $ETREE_CONF | \
while read etree; do
sudo systemctl restart sats-feature@$ETREE_CONF.service;
done;

View File

@ -2,7 +2,7 @@
<?php
require_once __DIR__.'/../../include/php/const';
require_once __DIR__.'/../../lib/include/php/const';
$f_auth;
$f_accesslog;
@ -13,6 +13,8 @@
$last_user = null;
$timeout = 0;
$FEATURE = basename(dirname(__DIR__));
@ -265,7 +267,7 @@
$f_actions = new SplFileObject(ACTIONS_CONF, 'r');
/* (2) Append accesses (logs) */
$f_accesslog = new SplFileObject(DEFAULT_DATA, 'a');
$f_accesslog = new SplFileObject(DATA_DIR."/$FEATURE", 'a');

View File

@ -130,6 +130,26 @@
$f = null;
/* [6] Get etrees list
=========================================================*/
/* (1) Check data */
if( !isset($arr_r['etrees']) || !is_array($arr_r['etrees']) ){
slog('No \'etree\' found in api.response file', 'api:deploy', 'update');
return 127;
}
/* (2) Reset file */
file_put_contents(ETREE_CONF, '');
/* (3) Replace content */
$f = new SplFileObject(ETREE_CONF, 'w');
foreach($arr_r['etrees'] as $etree)
$f->fwrite( $etree.PHP_EOL );
$f = null;
/* [6] Remove history entries
=========================================================*/
@ -178,24 +198,22 @@
return 0;
}
/* (1) Check history entries count */
if( !isset($arr_r['saved']) || !is_array($arr_r['saved']) ){
slog('No \'saved\' found in api.response file', 'api:deploy', 'update');
return 127;
}
if( isset($arr_r['saved']) && is_array($arr_r['saved']) ){
foreach($arr_r['saved'] as $feat_name=>$count){
/* (2) Check history count */
if( !isset($arr_r['saved']['history']) || !is_numeric($arr_r['saved']['history']) ){
slog('No \'actions\'.\'history\' found in api.response file', 'api:deploy', 'update');
if( !is_numeric($count) ){
slog("No \'history\' found for '$feat_name' in api.response file", 'api:deploy', 'update');
return 127;
}
/* (3) Fetch number of entries */
$saved = intval($arr_r['saved']['history']);
$saved = intval($count);
$saved = $saved < 0 ? 0 : $saved; // prevent negative
/* (4) Truncate the log file */
$truncated = syscall(SOURCE_DIR."/lib/file/truncate mfrc522 {$saved}");
$truncated = syscall(SOURCE_DIR."/lib/file/truncate $feat_name {$saved}");
/* (5) Manage error */
if( $truncated === false ){
@ -204,7 +222,9 @@
}
slog('History succesfully truncated', 'api:deploy', 'update');
slog("History '$feat_name' succesfully truncated", 'api:deploy', 'update');
}
return 0;
}

View File

@ -4,57 +4,41 @@
function api_fetch(){
/* [1] Fetch & generate useful data from features
$data = [];
/* [1] Get the list of daemons (features)
=========================================================*/
/* (1) Initialize dataset
---------------------------------------------------------*/
$data = [
'default' => [],
'feature' => [],
'identity' => [
'ap' => syscall(SOURCE_DIR.'/lib/netid/ap'),
'ip' => syscall(SOURCE_DIR.'/lib/netid/ip')
]
];
/* (2) Fetch DEFAULT data log
---------------------------------------------------------*/
$f = new SplFileObject(DEFAULT_DATA, 'r');
$f = new SplFileObject(ETREE_CONF, 'r');
while( !$f->eof() ){
/* (1) Try to parse each line */
$parsed = json_decode($f->fgets(), true);
$etree = $f->fgets();
/* (2) Manage error */
if( is_null($parsed) )
if( is_null($etree) )
continue;
/* (3) Add entry to log */
$data['default'][] = $parsed;
$data['feature'][$etree] = [];
}
/* (3) Fetch for each feature which generates data
/* [2] Fetch & generate useful data from features
=========================================================*/
/* (1) Get identity
---------------------------------------------------------*/
foreach(scandir(SOURCE_DIR.'/feature') as $feat_name){
$data['identity'] = [
'ap' => syscall(SOURCE_DIR.'/lib/netid/ap'),
'ip' => syscall(SOURCE_DIR.'/lib/netid/ip')
];
/* (1) Ignore . and .. entries */
if( in_array($feat_name, ['.', '..']) )
continue;
/* (2) Get absolute path */
$abs_path = SOURCE_DIR."/feature/$feat_name";
/* (3) Check if it is a directory */
if( !file_exists($abs_path) || !is_dir($abs_path) )
continue;
/* (4) Store the feature entry (empty) */
$data['feature'][$feat_name] = [];
/* (2) Fetch for each feature which generates data
---------------------------------------------------------*/
foreach($data['feature'] as $feat_name=>$feat_data){
/* (5) Check for feature access log */
if( !file_exists(DATA_DIR."/$feat_name") )

View File

@ -26,6 +26,7 @@ export AUTH_CONF="$CONF_DIR/auth.list";
export STATES_CONF="$CONF_DIR/states.list";
export CHIPS_CONF="$CONF_DIR/chips.list";
export ACTIONS_CONF="$CONF_DIR/actions.list";
export ETREE_CONF="$CONF_DIR/etree.list";
# LOG FILES
@ -35,10 +36,6 @@ export INSTALL_LOG="$LOG_DIR/install-source.log";
export UPDATE_LOG="$LOG_DIR/update.log";
# DATA FILES
export DEFAULT_DATA="$DATA_DIR/mfrc522";
# SETTINGS
export SECRET_SIZE=250;

View File

@ -25,6 +25,7 @@
define('STATES_CONF', CONF_DIR.'/states.list');
define('CHIPS_CONF', CONF_DIR.'/chips.list');
define('ACTIONS_CONF', CONF_DIR.'/actions.list');
define('ETREE_CONF', CONF_DIR.'/etree.list');
# LOG FILES
define('BOOT_LOG', LOG_DIR.'/boot.log');
@ -32,9 +33,6 @@
define('INSTALL_LOG', LOG_DIR.'/install-source.log');
define('UPDATE_LOG', LOG_DIR.'/update.log');
# DATA FILES
define('DEFAULT_DATA', DATA_DIR.'/mfrc522');
# SETTINGS
define('SECRET_SIZE', 250);