I’d like to suggest that FOG auto-activate computers after imaging. In my current environment there are many different models each with a unique product key, meaning each computer must be activated manually. This automation would be accomplished with the hostname changer used in the FOG Client. Below is the current code that I have been using.
[B]Edit 1[/B] – List all changes made and switch to hosts table instead of inventory
– Made this proposal similair to a guide, but it is still a feature request
[SIZE=4][B]Client[/B][/SIZE]
[B]…\FOG Service\src\FOG_HostNameChanger\MOD_HostNameChanger.cs[/B] (if you have not made any other changes to this file, you may download a compiled version of it in the attachments)
Once this change is completed you must compile the dll (or use the attached one) and give it to every instance of the client, or use the Client updater in FOG.
~line 362
[CODE]
if (arData.Length == 7)
{
strHostName = strHostResults.Remove(0, 5);
String strUseAD = arData[1];
String strD = arData[2];
String strOU = arData[3];
String strU = arData[4];
String strP = arData[5];
String strKey = arData[6];
if (strKey != null)
{
strKey = strKey.Trim();
if (strKey.StartsWith("#Key=")) {
strKey = strKey.Replace("#Key=", "");
Process scriptProc = new Process();
scriptProc.StartInfo.FileName = @"cscript";
scriptProc.StartInfo.Arguments =@"//B //Nologo c:\windows\system32\slmgr.vbs /ipk " + strKey;
scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
scriptProc.Start();
scriptProc.WaitForExit();
scriptProc.Close();
scriptProc.StartInfo.Arguments =@"//B //Nologo c:\windows\system32\slmgr.vbs /ato";
scriptProc.Start();
scriptProc.WaitForExit();
scriptProc.Close();
}
}
[/CODE]
[SIZE=4][B]SQL Database[/B][/SIZE]
Using phpmyadmin or the terminal, add a column to the hosts table with the following attributes:
[CODE]
Column: hostProductKey
Type: varchar(50)
Collation: latin1_swedish_ci
Null: No
Default: None
[/CODE]
[SIZE=4][B]FOG Web Server[/B][/SIZE]
[B]/var/www/fog/service/hostname.php[/B]
[PHP]
print ‘#ADPass=’.$Host->get(‘ADPass’).“\n”;
print ‘#Key=’.$Host->get(‘productKey’);
[/PHP]
[B]/var/www/fog/lib/fog/Host.class.php[/B]
line ~#9
[PHP]
public $databaseFields = array(
‘id’=> ‘hostID’,
‘name’=> ‘hostName’,
'productKey => ‘hostProductKey’,
[/PHP]
[B]/var/www/fog/lib/pages/HostManagementPage.class.php[/B]
line ~#177 AND ~#373
[PHP]
_(‘Host Description’) => ‘<textarea name=“description” rows=“5” cols=“40”>${host_desc}</textarea>’,
_(‘Product Key’) => ‘<input type=“text” name=“key” value=“${host_key}” />’,
[/PHP]
line ~#206
[PHP]
‘host_devs’ => $_REQUEST[‘dev’],
‘host_key’ => $_REQUEST[‘key’],
[/PHP]
line ~#277
[PHP]
‘host_devs’ => $_REQUEST[‘dev’],
‘host_key’ => $_REQUEST[‘key’],
[/PHP]
line ~#401
[PHP]
‘host_devs’ => $Host->get(‘kernelDevice’),
‘host_key’ => $Host->get(‘productKey’),
[/PHP]
/[B]var/www/fog/service/key.register.php[/B] (Optional if you want to be able to update a host’s product key at boot after being registered)
–See Attachments
[SIZE=4][B]Host Registration[/B][/SIZE]
See [url]http://www.fogproject.org/wiki/index.php/Create_Custom_Fog_Registration_menu[/url]
Note that the wiki’s instructions are not up to date below are the changes, in the format old_command => new_command
You may also have authentication issues if you try and unzip the init.xz file where it resides, if so move it to another folder and move it back when finished)
[CODE]
gunzip init.gz => xz --decompress init.xz
gzip init => xz -z -9 -C crc32 init
[/CODE]
[B]…/bin/fog.key.reg[/B] (Optional if you want to be able to update a host’s product key at boot after being registered)
–See Attachments, remove the .txt ending on it. I am unable to upload files that end in .reg
[B]…/bin/fog.man.reg[/B]
line ~#76
[CODE]
ip=“”;
productKey=“”;
[/CODE]
line ~#231
[CODE]
esac
fi
echo
echo -n " Enter the product key for this computer: ";
read productKey;
productKey=echo $productKey | base64
;
echo
[/CODE]
line ~#302
[CODE]
res=“”;
while [ “${res}” = “” ]
do
res=wget -O - --post-data="mac=$mac&advanced=1&host=$host&imageid=$imageid&productKey=$productKey&primaryuser=$primaryuser&other1=$other1&other2=$other2&doimage=$realdoimage&doad=$blDoAD&location=$locationid&username=$user64&groupid=$group64" "http://${web}service/auto.register.php" 2>/dev/null
echo “${res}”;
sleep 2;
done;
[/CODE]
[B]…/etc/init.d/S99fog[/B] (Optional if you want to be able to update a host’s product key at boot after being registered)
line ~#56
[CODE]
elif [ “$mode” == “manreg” ]; then
run=“/bin/fog.man.reg”;
after=$afterActionTerm;
elif [ “$mode” == “keyreg” ]; then
run=“/bin/fog.key.reg”;
after=$afterActionTerm;
[/CODE]
[SIZE=4][B]Boot Menu[/B][/SIZE] (Optional if you want to be able to update a host’s product key at boot after being registered)
[B]/var/www/fog/lib/fog/BootMenu.class.php[/B]
line ~#79
[PHP]
‘fog.reginput’ => ‘Perform Full Host Registration and Inventory’,
‘fog.keyreg’ => ‘Update Product Key’,
[/PHP]
line ~#529
[PHP]
if (!$this->Host || !$this->Host->isValid())
{
if ($option != ‘fog.quickdel’ && $option != ‘fog.keyreg’ &&$option != ‘fog.quickimage’ && ( $showDebug || $option != ‘fog.debug’ ) )
$this->menuItem($option, $desc);
}
[/PHP]
line ~#560
[PHP]
if ($option == ‘fog.sysinfo’)
$this->menuOpt($option, “mode=sysinfo”);
else if ($option == ‘fog.keyreg’)
$this->menuOpt($option, “mode=keyreg”);
[/PHP]
[url=“/_imported_xf_attachments/1/1000_HostnameChange.dll?:”]HostnameChange.dll[/url][url=“/_imported_xf_attachments/1/1001_key.register.php?:”]key.register.php[/url][url=“/_imported_xf_attachments/1/1003_fog.key.reg.txt?:”]fog.key.reg.txt[/url]