#! /bin/sh

# Script generates device specific token based on wlan or eth address and company id
# Comapny id is 4 digits hex number generated on authentication server
# Please contact authentication server administrator for company id

if [ $# -ne 1 -o ${#1} -ne 4 ]; then
	echo "Usage $0 [company_id]" 1>&2
	exit 1
fi

id="$1"

fw_printconst 'token' &>/dev/null
if [ $? -eq 0 ]; then
	echo "Token is already set"
	exit 1
fi

mac=`cat /sys/class/net/wlan0/address`
if [ -z "$mac" ]; then
	mac=`cat /sys/class/net/eth0/address`
fi

if [ -z "$mac" ]; then
	echo "Cannot retrieve mac address from wlan0 nor eth0" 1>&2
	exit 1
fi

a=`echo -n "$mac" | tr -d ':'`
b=`dd if=/dev/urandom bs=20 count=1 2> /dev/null | hexdump | sed 's:^[^ $]*::g' | tr -d ' \n'`;

fw_setconst 'token' "$id$a$b" &>/dev/null
if [ $? -eq 0 ]; then
	echo "Token stored"
else
	echo "Device doesn't have const partition, token generated for this device"
fi

echo "Token: $id$a$b"
