Hi,
Way cool :)
ty :)
I noticed a couple of differences between Grandstream's GAPSLITE tool and your tool:
1) GS ignores multiple occurrences of a parameter, only using the last. For example:
P30=time.nist.gov P30=clock1.redhat.com
GS's tool only puts "P30=clock1.redhat.com" in the cfg file while yours puts both.
I didn't know that.. Will keep it in mind for a next version.
2) GS keeps spaces in a parameter. For example:
P3=George W Bush
GS puts "P3=George W Bush" in the cfg file while yours puts "P3=GeorgeWBush"
You're right.. It was just my laziness to remove all spaces, as we don't use spaces in any field.
3) GS lets you specify the MAC, input, and output files on the command line while yours is "in the code."
This is probably the most important difference as it would allow easy scripting to support a bunch of devices.
Agreed, I'm now trying to get Net::TFTPd to work, but haven't had much success yet. This way it'll be possible to
generate a new config at the moment the file is requested by the useragent.
Regards,
Leon de Rooij
On Wed, 22 Sep 2004, Leon de Rooij wrote:
Hi,
I needed to create config files for downloading to Grandstream devices and made a little script for it. It seems to work fine for the HT486.
The script needs a config file (cfg.in) which is in this format:
P2 = blah P10 = hrm ...etc...
The configfile may contain comments (starting with '#') and empty lines. Mind that the 'gnkey=0b82' shouldn't be in the configfile, as it's already appended by the script.
Hope it's useful..
Thanks to Stephen R. Besch for information about the format of this file !
(One thing I am not 100% sure of: do I have to append zeros to the end of the body until it has an even amount of bytes, or an even amount of words ? Right now, I do both.)
Regards,
Leon de Rooij
--------------
#!/usr/bin/perl -w use strict;
my $h_mac = '000b82014e20'; # hexadecimal mac address
my $f_in = 'cfg.in'; # file body, configfile containing all parameters
my $f_out = 'cfg.txt'; # the configfile that will be written to
my $h_crlf = '0d0a'; # hexadecimal crlf
# convert some things to binary my $b_mac = pack("H12", $h_mac); # convert 12 hex numbers to bin my $b_crlf = pack("H4", $h_crlf); # convert 4 hex numbers to bin
# open configfile and make body in ascii (a_body) my $a_body; open F,$f_in; while (<F>) { chomp; # remove trailing lf s/\#.*$//g; # remove comments s/\s//g; # remove all whitespace $a_body .= $_.'&' if length > 0; } close F; $a_body .='gnkey=0b82';
# add an extra byte to make the body even (bytewise) $a_body .= "\0" if ((length($a_body) % 2) ne 0);
# add an extra word ( = two bytes) to make the body even (wordwise) $a_body .= "\0\0" if ((length($a_body) % 4) ne 0);
# generate a d_length (length of the complete message, counting words, in dec)
# ( header is always 8 words lang ) + ( body in ascii (bytes) / 2 = in words )
my $d_length = 8 + (length($a_body)/2);
# make that a binary dword my $b_length = pack("N", $d_length);
# generate a checksum my $d_checksum; foreach ($b_length,$b_mac,$b_crlf,$b_crlf,$a_body) { $d_checksum += unpack("%16n*", $_); } #$d_checksum %= 65536;
$d_checksum = 65536-$d_checksum;
# and make a binary word of that my $b_checksum = pack("n", $d_checksum);
# and write the config back to disk, in a grandstream readable format open F,">$f_out"; binmode F; print F $b_length; print F $b_checksum; print F $b_mac; print F $b_crlf; print F $b_crlf; print F $a_body; close F;
_______________________________________________ Asterisk-Users mailing list [EMAIL PROTECTED] http://lists.digium.com/mailman/listinfo/asterisk-users To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
Thanks in advance, ------------------------------------------------------------------------ Steve Edwards [EMAIL PROTECTED] Voice: +1-760-468-3867 PST Newline [EMAIL PROTECTED] Fax: +1-760-731-3000
_______________________________________________ Asterisk-Users mailing list [EMAIL PROTECTED] http://lists.digium.com/mailman/listinfo/asterisk-users To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
