Commit 71194915 authored by Oleg Dzhimiev's avatar Oleg Dzhimiev
Browse files

scan ports

parent 6a97978c
Loading
Loading
Loading
Loading
+88 −64
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ let MasterNode = "-";
let appData = {
  master: "-",
  slaves: [],
  ips: [],
  slaves_selected: []
}

@@ -24,7 +25,7 @@ function init(){
  update_master_node();

  // init button
  $('#testbutton').on('click', function(e){
  $('#listmasters').on('click', function(e){

    $.ajax({
      url: '/api/nodelist',
@@ -43,9 +44,8 @@ function init(){
        $(".master_nodes").on('click',function(e){
          update_master_node($(this).html());
          $("#nodelist").empty();
          //send_command(appData.slaves,'list', parse_cmd_list_init);
          // go straight with ifconfig
          send_command(appData.slaves,'ifconfig', parse_cmd_ifconfig_init);
          send_command('ifconfig', appData.slaves, parse_cmd_ifconfig_init);
        });

      }
@@ -53,67 +53,76 @@ function init(){

  });

  $('#testbutton1').on('click', function(e){
    send_command(appData.slaves_selected,'list', parse_cmd_list);
  });

  $('#testbutton2').on('click', function(e){
    send_command(appData.slaves_selected,'state', parse_cmd_state);
    send_command('state', appData.slaves_selected, parse_cmd_state);
  });

  // need a post request
  $('#testbutton3').on('click', function(e){

    // examples:
    //let cmd = "wget -qO- -o /dev/null 'http://localhost/parsedit.php?immediate&TRIG'";
    //let cmd = "ifconfig";
    //let cmd = "wget -qO- -o /dev/null 'http://localhost/diagnostics.php'";
    const cmd = "ifconfig";
    send_command(appData.slaves_selected, cmd, parse_cmd_ifconfig);
    //const cmd = "ifconfig";

    let path = "/sys/devices/soc0/elphel393-detect_sensors@0";
    let cmd = [
      'cd '+path,
      'cat port_mux0',
      'cat sensor00',
      'cat sensor01',
      'cat sensor02',
      'cat sensor03',
      'cat port_mux1',
      'cat sensor10',
      'cat sensor11',
      'cat sensor12',
      'cat sensor13',
      'cat port_mux2',
      'cat sensor20',
      'cat sensor21',
      'cat sensor22',
      'cat sensor23',
      'cat port_mux3',
      'cat sensor30',
      'cat sensor31',
      'cat sensor32',
      'cat sensor33'
    ].join(';');

    send_command(cmd, appData.slaves_selected,parse_cmd_testing);

  });

}

function parse_cmd_list_init(res){
function parse_cmd_testing(res){

  $(res).find('target').each(function(){
    const name = $(this).text();
    update_slave_list(name);
  });
  $(res).find('response').each(function(){

  $(".slave_checkbox").on("change",function(e){
    let checked = $(this).prop("checked");
    let name = $(this).parent().find("label").html();
    console.log(checked+" "+name);
    if (!checked) {
      appData.slaves_selected = appData.slaves_selected.filter(item => item!==name);
    const name = $(this).find('node').text();
    let state = $(this).find('state').text();
    const xmlstate = $.parseXML(`<document>${state}</document>`);

    if ($(xmlstate).find("error").length!=0){
      console.log(name+" is not 10393");
      $("."+name).append(" <b style='color:DarkOrange;'>not 10393</b>");
    }else{
      appData.slaves_selected.push(name);
      let sensors = state.trim().split('\n');
      //console.log(sensors);
      for(let i=0;i<4;i++){
        let mux = sensors[5*i];
        console.log("port "+i+" mux is "+mux);
        if (mux==="none"){
          console.log("sensor is "+sensors[5*i+1]);
        }else{
          console.log("warning: mux is not 'none'");
        }
      }
  });

    }

function parse_cmd_list(res){

  let rtab = [
    '<table class="slave_table">',
    '  <tr>',
    '  <th>Slave</th>',
    '  </tr>'
  ];

  $(res).find('target').each(function(){
    const name = $(this).text();
    //update_slave_list(name);
    rtab = rtab.concat([
      '<tr>',
      '  <td class="name">'+name+'</td>',
      '</tr>',
    ]);
  });
  rtab.push('</table>');
  $("#nodelist").empty().append(rtab.join('\n'));

}

@@ -141,29 +150,48 @@ function parse_cmd_state(res){
  $("#nodelist").empty().append(rtab.join('\n'));
}

function parse_cmd_testing(res){
function parse_cmd_ifconfig_init(res){

  $(res).find('response').each(function(){

    const name = $(this).find('node').text();
    const state = $(this).find('state').text();
    console.log(state);
  });
    const ip = get_ipaddr_from_ifconfig(state);

}
    update_slave_list(name);
    update_ip_list(ip);

function parse_cmd_ifconfig(res){
    let html = [
      '<div class=\''+name+'\'>',
      '<input class=\'slave_checkbox\' type=\'checkbox\' checked />',
      '<label class=\'lbl_name\'>'+name+'</label>',
      '(<label class=\'lbl_ip\'>'+ip+'</label>)',
      '</div>'
    ].join('\n');
    $("#slavenodes").append(html);

  $(res).find('response').each(function(){
    const name = $(this).find('node').text();
    const state = $(this).find('state').text();
    const ip = get_ipaddr_from_ifconfig(state);
    console.log(ip);
    $("."+name+" label").html(name+" ("+ip+")");
  });

  $(".slave_checkbox").on("change",function(e){
    let checked = $(this).prop("checked");
    let name = $(this).parent().find("label").html();
    if (!checked) {
      appData.slaves_selected = appData.slaves_selected.filter(item => item!==name);
    }else{
      appData.slaves_selected.push(name);
    }
  });

function send_command(targets, cmd, callback){
}

function send_command(cmd,targets,callback){

    if (callback===undefined) {
      callback = function(res){
        console.log(res);
        //console.log($(res).find('document').html());
      }
    }

    let targets_str = "";
    if (Array.isArray(targets)){
@@ -186,20 +214,16 @@ function send_command(targets, cmd, callback){
      success: callback
    });

    return 0;
}

function update_slave_list(name){
  appData.slaves.push(name);
  appData.slaves_selected.push(name);
  let html = [
    '<div class=\''+name+'\'>',
    '<input class=\'slave_checkbox\' type=\'checkbox\' checked />',
    '<label>'+name+'</label>',
    '</div>'
  ].join('\n');

  $("#slavenodes").append(html);
}

function update_ip_list(ip){
  appData.ips.push(ip);
}

function update_master_node(newvalue){