New server not updating inventory



  • So I built a server a few days ago in our test lab. When registering a machine it works great. So today I built a server in production. When I went to do a full registration, I noticed the host name did not stick. When I clicked the host I saw that the inventory said there was no data, but the host exists. I decided to try a new machine but this time using quick reg. Same result. It gets more strange, in the host list it has a green marker next to it. I then tried to capture an image. It started the image capture and in the FOG GUI it then had a red marker saying “no device or address”. the second machine did the same thing. Yet I could deploy an image to it.
    I am not sure where to begin. What kind of information do you all need? I did just update to the latest SVN as of tonight which was 6951?? I think.

    Thanks a bunch



  • Just wanted to say I updated to SVN 6955 and inventory is running great. Thanks Sebastian and Tom for the hard work.


  • Senior Developer

    @adukes40 This should now be fixed.

    I added all the suggestions in this thread.



  • Ok, thanks Sebastian. I appreciate the quick responses.


  • Developer

    @adukes40 No, please stay tuned. You found a bug and we are discussing how we are going to fix this “the best way”. Will let you know when you can pull the latest update.



  • Did you need me to provide anything? I’m new to Linux, but learning. I can try to pull things if you need, but might need a little step by step if so… Thanks again


  • Developer

    Sorry, forgot about the other values…

    diff --git a/src/buildroot/package/fog/scripts/bin/fog.man.reg b/src/buildroot/package/fog/scripts/bin/fog.man.reg
    index 6c3a013..6afdadb 100755
    --- a/src/buildroot/package/fog/scripts/bin/fog.man.reg
    +++ b/src/buildroot/package/fog/scripts/bin/fog.man.reg
    @@ -249,7 +249,7 @@ while [[ -z $askme ]]; do
                 askme="N"
                 ;;
             [Yy]|[Yy][Ee][Ss])
    -            blDoAD=1
    +            blDoAD=$(echo -n "1" | base64)
                 askme="Y"
                 ;;
             *)
    @@ -293,7 +293,7 @@ while [[ -z $askme ]]; do
                         '#!ok')
                             echo " * This host will reboot and imaging will start!"
                             ret=$tmp
    -                        realdoimage=1
    +                        realdoimage=$(echo -n "1" | base64)
                             break
                             ;;
                         '#!il')
    @@ -313,7 +313,7 @@ done
     dots "Attempting to register host"
     res=""
     while [[ -z $res ]]; do
    -    res=$(wget --post-data="mac=$mac&advanced=1&host=$host&imageid=$imageid&primaryuser=$primaryuser&other1=$other1&other2=$other2&doimage=$realdoimage&doad=$blDoAD&location=$locationid&username=$user64&groupid=$group64&snapinid=$snapin64&productKey=$productKey" -qO - http://${web}service/auto.register.php 2>/dev/null)
    +    res=$(wget --post-data="mac=$mac&advanced=$(echo -n "1" | base64)&host=$host&imageid=$imageid&primaryuser=$primaryuser&other1=$other1&other2=$other2&doimage=$realdoimage&doad=$blDoAD&location=$locationid&username=$user64&groupid=$group64&snapinid=$snapin64&productKey=$productKey" -qO - http://${web}service/auto.register.php 2>/dev/null)
         echo "$res"
         usleep 2000000
     done
    

  • Developer

    Seams like a recent change is causing this. en/decoding of values being the problem. Here is a tested patch proposal:

    diff --git a/packages/web/lib/fog/fogbase.class.php b/packages/web/lib/fog/fogbase.class.php
    index ad5d778..b9c99b4 100644
    --- a/packages/web/lib/fog/fogbase.class.php
    +++ b/packages/web/lib/fog/fogbase.class.php
    @@ -552,9 +552,8 @@ abstract class FOGBase {
         public static function stripAndDecode(&$item) {
             $item = (array)$item;
             foreach($item AS $key => &$val) {
    -            $val = urlencode($val);
                 $tmp = trim(base64_decode(preg_replace('#[[:space:]]#','+',$val)));
    -            if ($tmp && mb_detect_encoding($tmp,'utf-8',true)) $val = $tmp;
    +            if (isset($tmp) && mb_detect_encoding($tmp,'utf-8',true)) $val = $tmp;
                 unset($tmp);
                 $val = trim(htmlentities(urldecode($val),ENT_QUOTES,'utf-8'));
             }
    diff --git a/packages/web/service/inventory.php b/packages/web/service/inventory.php
    index 2c92d5e..1846655 100644
    --- a/packages/web/service/inventory.php
    +++ b/packages/web/service/inventory.php
    @@ -2,7 +2,7 @@
     require('../commons/base.inc.php');
     FOGCore::stripAndDecode($_REQUEST);
     try {
    -    $Host = $FOGCore->getHostItem(false,true);
    +    $Host = $FOGCore->getHostItem(false,false);
         $Inventory = $Host->get('inventory')
             ->set('hostID',$Host->get('id'));
         foreach ($_REQUEST AS $var => &$val) {
    

    @Tom-Elliott And I am wondering if we need all the ‘preg_replace’, ‘urldecode’, ‘htmlentities’ stuff at all?!?


Log in to reply
 

396
Online

38748
Users

10575
Topics

100103
Posts

Looks like your connection to FOG Project was lost, please wait while we try to reconnect.