@ -1,6 +1,7 @@
package main
import (
"reflect"
//"./timer"
"time"
"fmt"
@ -14,6 +15,7 @@ import (
var tcp_data string = read_tcp_file ( "/proc/net/tcp" )
func main ( ) {
var loops int = 0
// How to split on space-delimited fields, then colon-delimited fields?
// How to turn this byte into a string?
@ -21,20 +23,28 @@ func main() {
// and then converted byte by byte (2 char at a time)
//fmt.Println(convert_address(reverse_string(reverse_bytes("0100007F"))))
// tensec := timer.New(10, "Second")
// onemin := timer.New(1, "Minute")
// tensec.Reset(
tensec := time . NewTimer ( 10 * time . Second )
onemin := time . NewTimer ( 1 * time . Minute )
// if !tensec.Stop() {
// fmt.Println("Done waiting 10 seconds!")
// }
fmt . Println ( "Waiting 10 seconds..." )
<- tensec . C
tcp_rows ( tcp_data )
fmt . Println ( "Waiting 1 minute..." )
<- onemin . C
tcp_rows ( tcp_data )
for _ = range time . Tick ( 10 * time . Second ) {
fmt . Println ( "Waiting 10 seconds..." )
for num , row := range get_tcp_rows ( tcp_data ) {
row_type := reflect . TypeOf ( row )
fmt . Println ( num , " " , row_type )
}
// if loops modulo 6 (1min) then
// for address in address_list do
// if (grep address address_list | wc -l >=3) then
// This is a port scan!
// fi
// done
// elseif (wc -l old_tcp_file > wc -l tcp_file) then
// for i in (wc -l tcp_file - wc -l old_tcp_flle) do
// print New Connection! reverse_strng(reverse_bytes(tcp_file[i])) // This oversimplifies row value selection for the sake
// // of pseudocode
// done
// else
// "No new connections. Waiting another 10 seconds..."
// fi
loops ++
}
}
func check ( e error ) {
@ -43,17 +53,21 @@ func check(e error) {
}
}
func tcp_rows ( connections_file string ) {
regexpression := regexp . MustCompile ( ` [\r\n\t\v]+ ` )
tcp_lines := strings . Split ( connections_file , "\n" )
// Aiming for an array of [string]string maps
// Am I looking for a map[string]interface here?
func get_tcp_rows ( connections_file string ) [ ] string {
tcp_lines := strings . Split ( connections_file , "\n" )
regexpression := regexp . MustCompile ( ` [\r\n\t\f\v]+ ` )
tcp_columns := regexpression . Split ( tcp_lines [ 0 ] , - 1 )
var tcp_values map [ string ] string
for _ , line := range tcp_lines {
trim_line := strings . TrimSpace ( line )
values := regexpression . Split ( trim_line , - 1 )
// Debug
// fmt.Println("New Line ==========")
fmt . Println ( values )
for i , line := range tcp_lines [ 1 : ] {
trim_line := strings . TrimSpace ( line )
values := regexpression . Split ( trim_line , - 1 )
column := tcp_columns [ i ]
tcp_values [ column ] = values
}
return tcp_values
}
// Take a string, create a rune slice, and use a loop to reverse it character-wise.