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>