Return to Snippet

Revision: 1301
at September 27, 2006 10:50 by gdonald


Updated Code
#!/usr/bin/env php
<?php

// define some key constants. 
define("ESCAPE_KEY", 27); 
define("ENTER_KEY", 13); 

// get our initial data 
$tr_return = traceroute("destiney.com"); 

$ncurses_session = ncurses_init();

$main = ncurses_newwin(0, 0, 0, 0); // main window 
ncurses_getmaxyx(&$main, $lines, $columns); 
ncurses_border(0,0, 0,0, 0,0, 0,0); 

while(1){ 

        // border the main window 
        ncurses_attron(NCURSES_A_REVERSE); 
        ncurses_mvaddstr(0, 1, "Traceroute example"); 
        ncurses_attroff(NCURSES_A_REVERSE); 

        // create a lower window which is dynamically sized... 
        $lower_frame_window = ncurses_newwin(10, $columns-3, $lines-11, 1); 
        ncurses_wborder($lower_frame_window, 0,0, 0,0, 0,0, 0,0); // border it 
        $lower_main_window = ncurses_newwin(8, $columns-5, $lines-10, 2); 

        $main_list_window = ncurses_newwin($lines-12, $columns-3, 1, 1); 
        ncurses_wborder($main_list_window, 0,0, 0,0, 0,0, 0,0); // border it 

  if($currently_selected == ""){
                $currently_selected = 0;
        } 
        for($a=0;$a<count($tr_return);$a++){ 
                $out = $tr_return[$a]; 
                if($currently_selected == intval($a)){  
                        ncurses_wattron($main_list_window,NCURSES_A_REVERSE); 
                        ncurses_mvwaddstr ($main_list_window, 1+$a, 1, $out); 
                        ncurses_wattroff($main_list_window,NCURSES_A_REVERSE); 
                }else{ 
                        ncurses_mvwaddstr ($main_list_window, 1+$a, 1, $out); 
                } 
        } 
  if($y == ENTER_KEY){     
                $newout = explode(" ", $check_me); 
                $rwhois_return = rwhois(trim($newout[3])); 
                $a=0; 
                while(list($key,$val)=each($rwhois_return)){ 
                        ncurses_mvwaddstr($lower_main_window, 1+$a, 1, $key . " - " . $val); 
                        $a++; 
                } 
        } elseif($y == ESCAPE_KEY){ 
                ncurses_end(); 
                exit; 
        } 
  ncurses_move(-1,1); // toss cursor out of sight. 
  ncurses_wrefresh($lower_frame_window);  
  ncurses_wrefresh($lower_main_window); // show it 
  ncurses_wrefresh($main_list_window);  

  // wait for user to press a key 
  $y = ncurses_getch($lower_main_window); 

  // check for the presence of up-arrow and down-arrow keys 
  if($y == NCURSES_KEY_UP){ 
                $currently_selected--;  
                if($currently_selected < 0){ $currently_selected = 0; } 
        } elseif($y == NCURSES_KEY_DOWN){ 
                $currently_selected++; 
                if($currently_selected >= count($tr_return)){
                        $currently_selected = count($tr_return)-1;
                } 
        } 
}//end main while 

// the following are two helper functions for 
// this ncurses example. 
function traceroute($address){ 
    exec("/usr/sbin/traceroute $address", $trreturn); 
    return $trreturn;
}//end function

// reverse whois 
function rwhois($query){ 
        $fp = fsockopen ("rwhois.arin.net", 4321, $errno, $errstr, 30);
        if(!$fp){
                $ret[] = "$errstr ($errno)\n";
        } else {
                fputs($fp, "$query

");
                $count=1;
                while(!feof($fp) && $count < 17){ 
                        $back = fgets ($fp,128);
                        $data = explode(":",$back);
                        $ret[$data[1]] = $data[2];
                        $count++;
                }//wend 
                fclose ($fp);
        }//fi 
        return $ret; 
}//end function 

?>

Revision: 1300
at September 27, 2006 10:50 by gdonald


Initial Code
#!/usr/bin/env php
<?php

// define some key constants. 
define("ESCAPE_KEY", 27); 
define("ENTER_KEY", 13); 

// get our initial data 
$tr_return = traceroute("destiney.com"); 

$ncurses_session = ncurses_init();

$main = ncurses_newwin(0, 0, 0, 0); // main window 
ncurses_getmaxyx(&$main, $lines, $columns); 
ncurses_border(0,0, 0,0, 0,0, 0,0); 

while(1){ 

        // border the main window 
        ncurses_attron(NCURSES_A_REVERSE); 
        ncurses_mvaddstr(0, 1, "Traceroute example"); 
        ncurses_attroff(NCURSES_A_REVERSE); 

        // create a lower window which is dynamically sized... 
        $lower_frame_window = ncurses_newwin(10, $columns-3, $lines-11, 1); 
        ncurses_wborder($lower_frame_window, 0,0, 0,0, 0,0, 0,0); // border it 
        $lower_main_window = ncurses_newwin(8, $columns-5, $lines-10, 2); 

        $main_list_window = ncurses_newwin($lines-12, $columns-3, 1, 1); 
        ncurses_wborder($main_list_window, 0,0, 0,0, 0,0, 0,0); // border it 

  if($currently_selected == ""){
                $currently_selected = 0;
        } 
        for($a=0;$a<count($tr_return);$a++){ 
                $out = $tr_return[$a]; 
                if($currently_selected == intval($a)){  
                        ncurses_wattron($main_list_window,NCURSES_A_REVERSE); 
                        ncurses_mvwaddstr ($main_list_window, 1+$a, 1, $out); 
                        ncurses_wattroff($main_list_window,NCURSES_A_REVERSE); 
                }else{ 
                        ncurses_mvwaddstr ($main_list_window, 1+$a, 1, $out); 
                } 
        } 
  if($y == ENTER_KEY){     
                $newout = explode(" ", $check_me); 
                $rwhois_return = rwhois(trim($newout[3])); 
                $a=0; 
                while(list($key,$val)=each($rwhois_return)){ 
                        ncurses_mvwaddstr($lower_main_window, 1+$a, 1, $key . " - " . $val); 
                        $a++; 
                } 
        } elseif($y == ESCAPE_KEY){ 
                ncurses_end(); 
                exit; 
        } 
  ncurses_move(-1,1); // toss cursor out of sight. 
  ncurses_wrefresh($lower_frame_window);  
  ncurses_wrefresh($lower_main_window); // show it 
  ncurses_wrefresh($main_list_window);  

  // wait for user to press a key 
  $y = ncurses_getch($lower_main_window); 

  // check for the presence of up-arrow and down-arrow keys 
  if($y == NCURSES_KEY_UP){ 
                $currently_selected--;  
                if($currently_selected < 0){ $currently_selected = 0; } 
        } elseif($y == NCURSES_KEY_DOWN){ 
                $currently_selected++; 
                if($currently_selected >= count($tr_return)){
                        $currently_selected = count($tr_return)-1;
                } 
        } 
}//end main while 

// the following are two helper functions for 
// this ncurses example. 
function traceroute($address){ 
    exec("/usr/sbin/traceroute $address", $trreturn); 
    return $trreturn;
}//end function

// reverse whois 
function rwhois($query){ 
        $fp = fsockopen ("rwhois.arin.net", 4321, $errno, $errstr, 30);
        if(!$fp){
                $ret[] = "$errstr ($errno)\n";
        } else {
                fputs($fp, "$query

");
                $count=1;
                while(!feof($fp) && $count < 17){ 
                        $back = fgets ($fp,128);
                        $data = explode(":",$back);
                        $ret[$data[1]] = $data[2];
                        $count++;
                }//wend 
                fclose ($fp);
        }//fi 
        return $ret; 
}//end function 

?>


Initial URL


Initial Description


Initial Title
PHP ncurses traceroute

Initial Tags


Initial Language
PHP