#!/usr/bin/perl -w
#
# Sample of how to generate a Dash911 URL to update E911 addresses
# This is sample code only, and should be modified to suit
use strict;
use Digest::MD5;
use Digest::HMAC qw( hmac hmac_hex );
our $company_id = 1234;
our $key = 'qwertyuiop';
our $url = 'https://e911update.telefinity.com/Default.aspx';
my $number = $ARGV[0] || '';
$number or die "Syntax: $0 <number>\n";
my ( $sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst ) = gmtime( time() );
my $date = sprintf( '%.4d%.2d%.2d%.2d%.2d', $year + 1900, $mon + 1, $mday, $hour, $min );
my $hmac = Digest::HMAC->new( $key, 'Digest::MD5' );
$hmac->add( $number . $date );
my $auth = $hmac->b64digest();
$auth =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
printf( "%s?cid=%s&kn=0&tn=%s&date=%s&auth=%s%%3d%%3d\n", $url, $company_id, $number, $date, $auth );
exit( 0 );