On Thu, Mar 20, 2008 at 5:43 PM, Charles Jones <<a href="mailto:jonescr@cisco.com">jonescr@cisco.com</a>> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000">
Henrik,<br>
<br>
I'm talking about the connection protocol, not the message protocol. So
that I can write code that can connect to a BBDISPLAY and send/receive
data, without shelling out and using a bb binary. I've tried
telnetting to port 1984 and typing various commands, and also using
netcat, none of which seem to work, so I suspect that hobbitd is
expecting to see some certain characters before it will accept a
command.<br><font color="#888888">
<br>
-Charles</font></div>
</blockquote></div><br><br>Would bb.pl be of any use to you?? As found on <a href="http://deadcat.net">deadcat.net</a>:<br><br>#!/usr/bin/perl -w<br><br># bb.pl<br>#<br># BIG BROTHER CLIENT PROGRAM<br># Nicolas Chuche <<a href="mailto:chuche@teaser.fr">chuche@teaser.fr</a>><br>
# Version 1<br># Jul 15, 2000<br><br># This program is a remake of bb.c in perl.<br># I've do that to :<br># 1. have a real client for my NT servers<br># 2. see what it done in perl<br><br># I've tried to have full compatibility so i've keep all the error<br>
# messages.<br><br># If you want to use it, just replace the original bb by this file in<br># BBHOME/bin<br><br># The header of bb.c :<br><br># SENDS THE INPUT LINE TO THE DAEMON ON THE BIG BROTHER PORT<br># Format: bb IP-ADDR [<LINE>|-]<br>
#<br># IP-ADDR: IP-ADDR OF THE SERVER<br># LINE: <page|status|summary> <DATA><br># DATA: for page: <NUMERIC MESSAGE><status-msg><br># for status: <machine><color-code><status-msg><br>
# fro summary: <summary name><color-code><http link><br>#<br># - Will read from standard input a one line status<br># message.<br>#<br><br>use strict;<br>use Socket;<br>
<br>my $PORT = 1984; # The bbd port<br>my $PAGELEVELSDEFAULT = "red purple"; # the default page level<br>my $MAXBBLINE = 256; # the max input line length<br>
<br># sub debug { print STDERR shift;}; # debug message : uncomment this line<br>sub debug {}; # and comment this one<br><br>@ARGV == 2 or &Usage;<br>my ($server, $line) = @ARGV or &Usage;<br>
<br># take the standart input if second arg is "-"<br>if ($line eq '-') {<br> debug("bb gets its input from stdin\n");<br> while (<STDIN>) {<br> chomp;<br> $_ = substr($_, 0, $MAXBBLINE - 1);<br>
debug("data came in [$_]\n");<br> bb_notify($server, $_);<br> }<br> debug("Done\n");<br>} else {<br> bb_notify($server, $line);<br>}<br><br>exit(0);<br><br>sub bb_notify {<br> my ($machine, $data) = @_;<br>
my (@bbdisplays, @bbpagers, $bbpage, $pagelevels) = ();<br><br> @bbdisplays = split /\s+/, $ENV{BBDISPLAYS} if defined $ENV{BBDISPLAYS};<br> debug("Sending: ** $data ** to $machine - @bbdisplays\n");<br> bb_send($machine, \@bbdisplays, $data);<br>
<br> $bbpage = $ENV{BBPAGE};# if defined $ENV{BBPAGE};<br> $pagelevels = ((defined $ENV{PAGELEVELS}) && $ENV{PAGELEVELS}) ? $ENV{PAGELEVELS} : $PAGELEVELSDEFAULT;<br><br> # paging or not paging ?<br> if( $bbpage && $pagelevels ) {<br>
my ($type, $machine, $color, $message) = $data =~ /^(\S+)\s+(\S+)\s+(\S+)\s+(.*)$/;<br><br> debug("v1:[$type] v2:[$machine] v3:[$color] v4:[$message]\n");<br><br> if ($type =~ /status/ && $pagelevels =~ /$color/) {<br>
$data =~ s/^(\s*status\S*\s+)/page /; # Change msg type<br> @bbpagers = split /\s+/, $ENV{BBPAGERS} if defined $ENV{BBPAGERS};<br> debug("Sending: ** $data ** to $bbpage - @bbpagers\n");<br>
bb_send($bbpage,\@bbpagers,$data); # SEND IT ACROSS TO BBPAGER<br> }<br> }<br>}<br><br># ##############<br># Send a message<br><br>sub bb_send {<br> my ($bbdisp, $machinelist, $message) = @_;<br> my (%machine, @machinelist) = ();<br>
<br> @machinelist = ($bbdisp ne "<a href="http://0.0.0.0">0.0.0.0</a>") ? ($bbdisp) : @$machinelist;<br><br> debug("BOX: $bbdisp\nBOXES: @machinelist\n");<br><br> for my $server (@machinelist) {<br>
my ($port, $iaddr, $paddr, $proto); # Variable réseau<br><br> # don't send the message twice to the same machine<br> next if $machine{$server};<br> $machine{$server} = 1;<br><br> debug("Host: $server\n");<br>
<br> $iaddr = inet_aton($server) || warn "bb: Unknown host: $server\n", next;<br> $paddr = sockaddr_in($PORT, $iaddr);<br> $proto = getprotobyname('tcp');<br><br> socket(SOCK, PF_INET, SOCK_STREAM, $proto) || warn "bb: Can't open stream socket\n", next;<br>
connect(SOCK, $paddr) || warn "bb: CAN'T CONNECT TO bbd SERVER @ $server", next;<br> # select((select(SOCK), $| = 1)[0]); # unbuffer the socket<br> print SOCK $message;<br>
close (SOCK);<br> }<br> debug("Host list done\n");<br>}<br><br># ###########<br># Print usage<br><br>sub Usage {<br> print STDERR <<EOF;<br>bb: incorrect number of arguments<br>Format: <IP-ADDR> <DATA><br>
EOF<br> exit(1);<br>}<br><br><br>Ralph Mitchell<br>