Changeset 6868


Ignore:
Timestamp:
Feb 19, 2018, 1:04:06 PM (18 months ago)
Author:
mabarracus
Message:

Whitelist configurator implementation

Location:
lliurex-analytics-server/trunk/fuentes/lliurex-analytics-server/usr/lib/analytics-server/analytics
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • lliurex-analytics-server/trunk/fuentes/lliurex-analytics-server/usr/lib/analytics-server/analytics/db.php

    r6850 r6868  
    535535         }
    536536     }
    537 
     537    function get_whitelist_form(){
     538        $sql = "select distinct `string` from `RecvPackages`";
     539        $sql2 = "select `name`,`status` from `PackagesWhitelist`";
     540        $result=$this->dbconn->query($sql);
     541        $all_items=false;
     542        if ($result){
     543            $all_items=$result->fetch_all(MYSQLI_ASSOC);
     544        }
     545        $whitelist=false;
     546        $result = $this->dbconn->query($sql2);
     547        if ($result){
     548            $whitelist = $result->fetch_all(MYSQLI_ASSOC);
     549        }
     550        if ($all_items === false or $whitelist === false){
     551            return false;
     552        }
     553        $classify = ['in'=> array(), 'out'=>array(), 'unk' => array()];
     554        $clasified = array();
     555        foreach ($whitelist as $tmp){
     556            if ($tmp['status'] == '0'){
     557                $classify['out'][]=$tmp['name'];
     558                $clasified[] = $tmp['name'];
     559            }else if($tmp['status'] == '1'){
     560                $classify['in'][]=$tmp['name'];
     561                $clasified[] = $tmp['name'];
     562            }
     563        }
     564        foreach ($all_items as $tmp){
     565            if (! in_array($tmp['string'],$clasified)){
     566                $classify['unk'][] = $tmp['string'];
     567            }
     568        }
     569        return $classify;
     570    }
    538571}
    539572
  • lliurex-analytics-server/trunk/fuentes/lliurex-analytics-server/usr/lib/analytics-server/analytics/functions.php

    r6850 r6868  
    4545}
    4646function modify_whitelist(){
     47    return function($request,$response,$service){
     48        $data=$request->status;
     49        if ($data){
     50            $data = json_decode($data,true);
     51        }
     52        $sql = 'insert into `PackagesWhitelist` (`name`,`status`) values ';
     53        $str = '';
     54        foreach ($data['out'] as $item){
     55            $str .= "('$item',0),";
     56        }
     57        foreach ($data['into'] as $item){
     58            $str .= "('$item',1),";
     59        }
     60        foreach ($data['unk'] as $item){
     61            $str .= "('$item',NULL),";
     62        }
     63        $l=strlen($str);
     64        if ($l < 1)
     65            return;
     66        $str[$l-1]=' ';
     67        $sql .= $str;
     68        $sql .= 'on duplicate key update status=VALUES(status);';
     69        $db = new DB;
     70        $db->connect();
     71        try{
     72            $db->dbconn->query($sql);
     73        }catch(Exception $e){
     74            return 'NOK';
     75        }
     76        $db->disconnect();
     77        return 'OK';
     78    };
     79}
     80
     81function get_whitelist_data(){
    4782        return function($request,$response,$service){
    48                 $data=$request->status;
    49                 error_log($data);
    50                 return;
    51                 $db = new DB;
    52                 $db->connect();
    53                 try{
    54                         if (isset($data['vers'])){
    55                             $version=trim($data['vers']);
    56                         }else{
    57                             return 'NOK';
    58                         }
    59                         if (isset($data['sab'])){
    60                             $sabor=trim($data['sab']);
    61                         }else{
    62                             return 'NOK';
    63                         }
    64                         if (isset($data['uid'])){
    65                             $uid=trim($data['uid']);
    66                         }else{
    67                             return 'NOK';
    68                         }
    69                         if ($version == '' or $sabor == '' or $uid == ''){
    70                             return 'NOK';
    71                         }
    72                         if (isset($data['specs'])){
    73                             $specs=$data['specs'];
    74                         }else{
    75                             $specs=false;
    76                         }
    77                         if (isset($data['date'])){
    78                             $db->send_data($uid,$version,$sabor,json_decode($data['stats'],true),$specs,$data['date']);
    79                         }else{
    80                             $db->send_data($uid,$version,$sabor,json_decode($data['stats'],true),$specs);
    81                         }
    82                 }catch (Exception $e){
    83                         //error_log($e);
    84                         $db->disconnect();
    85                         return 'NOK';
    86                 }
    87                 $db->disconnect();
    88                 return 'OK';
    89         };
    90 }
     83                $db = new DB;
     84                $db->connect();
     85                $res=$db->get_whitelist_form();
     86                $db->disconnect();
     87                return json_encode($res);
     88        };
     89}
     90
    9191function call_get_stats(){
    9292        return function($request,$reponse,$service){
  • lliurex-analytics-server/trunk/fuentes/lliurex-analytics-server/usr/lib/analytics-server/analytics/reports.php

    r6850 r6868  
    2222$klein->respond('GET','/ConfigureWhitelist',call_configure_whitelist());
    2323$klein->respond('POST','/PutWhitelist',modify_whitelist());
     24$klein->respond('GET','/GetWhitelistItems',get_whitelist_data());
    2425$klein->respond('POST','/notify',call_bd());
    2526
  • lliurex-analytics-server/trunk/fuentes/lliurex-analytics-server/usr/lib/analytics-server/analytics/whitelist.js

    r6850 r6868  
    1 function put_elements(){
    2     var elem = ['denied','nonselected','accepted']
    3     for (var e=0;e<elem.length;e++){
    4         var r=Math.floor(Math.random()*10)
    5         if (r == 0){
    6              r=1
     1function put_elements(data){
     2    var items = data
     3    if (items != undefined){
     4        if (! (items.hasOwnProperty('out') && items.hasOwnProperty('in') && items.hasOwnProperty('unk'))){
     5            return
    76        }
    8         for(var i=0;i<r;i++){
    9             var v=Math.floor(Math.random()*10)
    10             $('select[name="'+elem[e]+'"]').append('<option value="option'+v+'">option'+v+'</option>')
     7        for (var e=0;e<items['out'].length;e++){
     8            $('select[name="denied"]').append('<option value="'+items['out'][e]+'">'+items['out'][e]+'</option>')
     9        }
     10        for (var e=0;e<items['in'].length;e++){
     11            $('select[name="accepted"]').append('<option value="'+items['in'][e]+'">'+items['in'][e]+'</option>')
     12        }
     13        for (var e=0;e<items['unk'].length;e++){
     14            $('select[name="nonselected"]').append('<option value="'+items['unk'][e]+'">'+items['unk'][e]+'</option>')
    1115        }
    1216    }
     17    put_triggers()
    1318}
    1419
     
    5257function send_items(){
    5358    var state = get_items()
    54     $.post('PutWhitelist', {'status':state}, function(data){
    55         console.log(data)
    56         alert('Sending succeded')
     59    $.post('PutWhitelist', {'status': JSON.stringify(state)}, function(data){
     60        data = data.toLowerCase()
     61        if (data == 'ok'){
     62            alert('Sending succeded')
     63        }else{
     64            alert('Sending succeded but result was Nok, '+data)
     65        }
    5766    })
    5867    .fail(function(data){
     
    6170    })
    6271}
     72
     73function get_dbitems(){
     74    $.getJSON('GetWhitelistItems',function(data){
     75        put_elements(data)
     76    })
     77    .fail(function(data){
     78        alert('Can\'t fetch whitelist data')
     79        return undefined
     80    })
     81}
     82
    6383
    6484function put_triggers(){
     
    7191
    7292function start(){
    73     put_elements()
    74     put_triggers()
     93    get_dbitems()
    7594}
Note: See TracChangeset for help on using the changeset viewer.