(X)Net autoboot.net

 

#### Autoboot.net Hier komen de attach commandos. ####

#### Ax25 kiss poorten
attach sdev0 kiss 0 1 9600 /dev/ttyUSB0 # 2m
attach sdev1 kiss 1 1 9600 /dev/ttyUSB1 # 70cm
#attach sdev2 kiss 2 1 9600 /dev/ttyUSB2 # hf
attach sdev3 kiss 3 1 115200 /dev/pts/2
attach sdev4 kiss 4 1 115200 /dev/pts/4
#attach sdev5 kiss 5 1 19200 /dev/com8  # Cluster
#### AXIP - Ports
# Link pi1lap
#attach ip0 axudp 0 1 l10093 d93 (ip-adres link local)
# Link pi1dxc-15
attach ip0 axudp 6 1 l93 d93 (ip-adres pi1dxc)
# Link pi1snk
attach ip1 axudp 7 1  l93 d93 (ip-adres pi1snk)
# Link pi1dec-14
attach ip2 axudp 8 1 l93 d10093 (ip-adres pi1dec)
# Link pi1bdg
attach ip3 axudp 9 1 l93 d10093 (ip-adres pi1bdg)
# Link pi1cdr
attach ip4 axudp 10 1 l93 d93 (ip-adres pi1cdr)
#
#### Slip port
attach sdev6 slip 38400 /dev/pts/6

#po 0 baud 115200
#po 0 dup 0
#po 0 win 7
#po 0 quality 255
#po 0 name pi1lap
#r bc ad 0 pi1lap
#r bc ad 0 nodes

#### 2m
po 0 acon 1 
po 0 baud 1200
po 0 dup 0
po 0 win 4
po 0 dama 0
po 0 quality 192
po 0 name 2m-1k2
#r bc ad 0 pe1plm-14
#r bc ad 0 nodes
#### 70cm
po 1 acon 1
po 1 baud 1200
po 1 dup 0
po 1 win 4
po 1 dama 0
po 1 quality 192
po 1 name 70cm-1k2
#r bc ad 1 pe1plm-14
#r bc ad 1 nodes
#### HF
#po 2 baud 9600
#po 2 dup 1
#po 2 win 2
#po 2 quality 0
#po 2 name hf
#### F6fbb bbs
po 3 baud 115200
po 3 dup 0
po 3 win 4
po 3 name pi8lap
#### Convers
#po 4 acon 1
po 4 baud 115200
po 4 dup 0
po 4 win 4
po 4 name pi8lap-8
#r bc ad 1 pi1lap-15
#r bc ad 1 nodes
#### Cluster
#po 5 baud 19200
#po 5 dup 1
#po 5 win 7
#po 5 name Cluster
#### ip0 Link pi1dxc-15
po 6 baud 76800
po 6 dup 0
po 6 win 7
#po 6 quality 255
po 6 name pi1dxc-15
r f add 6 pi1dxc-15
r bc ad 6 pi1dxc-15
r bc ad 6 nodes
#### ip1 Link pi1snk
po 7 baud 76800
po 7 dup 0
po 7 win 7
#po 7 quality 255
po 7 name pi1snk
r bc ad 7 pi1snk
r bc ad 7 nodes
#### ip2 Link pi1dec-14
po 8 baud 76800
po 8 dup 0
po 8 win 7
#po 8 quality 255
po 8 name pi1dec-14
r bc ad 8 pi1dec-14
r bc ad 8 nodes
#### ip3 Link pi1bdg
po 9 baud 76800
po 9 dup 0
po 9 win 7
#po 9 quality 255
po 9 name pi1bdg
r bc ad 9 pi1bdg
r bc ad 9 nodes
#### ip4 Link pi1cdr
po 10 baud 38400
po 10 dup 0
po 10 win 7
po 10 quality 255
po 10 name pi1cdr
r bc ad 10 pi1cdr
r bc ad 10 nodes

Start (X)Net/kissattach/slip at boot

I have written the startup script below so that all services are started. Now of course it is nice if this also happens when booting the server. First the start script.

#!/bin/sh
#
tmpfile="/tmp/$$.startax0.pts"
#
kissnetd -p 2 > "$tmpfile" &
#
sleep 2
#
attachthem () {
        read PTS1 PTS2
        echo "Starting PTS gekloot voor poort AX0 :)"
        kissattach -l $PTS1 ax0 192.168.1.113
	ifconfig ax0 netmask 255.255.255.0
        sleep 1
        sed -i "s,attach sdev3 kiss 3 1 115200 /dev/.*$,attach sdev3 kiss 3 1 115200 $PTS2," /usr/local/xnet/AUTOBOOT.NET
}

tail -n 1 $tmpfile | attachthem
rm $tmpfile
#
tmpfile="/tmp/$$.startax1.pts"
#
kissnetd -p 2 > "$tmpfile" &
#
sleep 2

attachthem () {
	read PTS1 PTS2
	echo "Starting PTS gekloot voor poort AX1 :)"
        kissattach -l $PTS1 ax1 192.168.1.113
        ifconfig ax1 netmask 255.255.255.0
        sleep 1
        sed -i "s,attach sdev4 kiss 4 1 115200 /dev/.*$,attach sdev4 kiss 4 1 115200 $PTS2," /usr/local/xnet/AUTOBOOT.NET
}

tail -n 1 $tmpfile | attachthem
rm $tmpfile
################## Klote slip link ###################################
XNET_DIR=/usr/local/xnet
LINIP=192.168.1.200     # LINUX-IP   address
XNET=192.168.1.201  # XNET  address
#
cd /usr/local/xnet
./dev &
#
sleep 2
#
attachthem () {
        read PTS1 PTS2
        echo "Starting PTS gekloot voor de slip link :)"
        slattach -s 38400 -p slip $PTS1 &
        sleep 1
        ifconfig sl0 $LINIP netmask 255.255.255.255 pointopoint $XNET mtu 236 up
        sleep 1
        sed -i "s,attach sdev6 slip 38400 /dev/.*$,attach sdev6 slip 38400 $PTS2," /usr/local/xnet/AUTOBOOT.NET
}

tail -n 1 /tmp/slip | attachthem
rm /tmp/slip

cd /usr/local/sbin
./ppconversd &
sleep 3
#
cd /usr/local/xnet
./rstatrxd /var/www/cgi-bin/postat/ &
sleep 2
#
  /sbin/modprobe netrom
  /usr/local/sbin/nrattach -i 192.168.1.113 -m 512 netrom
  /usr/local/sbin/nrattach -i 192.168.1.113 -m 512 netcon
  /usr/local/sbin/nrattach -i 192.168.1.113 -m 512 netbbs
# Init Netrom
   /usr/local/sbin/netromd -i -l -t 30
# Enable External Logons
  /usr/local/sbin/ax25d &
  /bin/sleep 2
# Start Mheard daemon
 /usr/local/sbin/mheardd
# start fbb
 /usr/local/sbin/fbb &
# Nu dan eindelijk Xnet
./linuxnet < /dev/tty2 > /dev/tty2 2>&1 &

Now I have created the following file in /etc/init.d with the name xnet.

#!/bin/sh
### BEGIN INIT INFO
# Provides:          xnet
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Run /usr/local/xnet/xnet if it exist
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin

. /lib/init/vars.sh
. /lib/lsb/init-functions

do_start() {
        if [ -x /usr/local/xnet/xnet ]; then
                [ "$VERBOSE" != no ] && log_begin_msg "Running pi1lap)"
                /usr/local/xnet/xnet
                ES=$?
                [ "$VERBOSE" != no ] && log_end_msg $ES
                return $ES
        fi
}

case "$1" in
    start)
        do_start
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

Now it has to be added.
update-rc.d xnet defaults
update-rc.d xnet enable

Well, reboot and see if everything is alright.

(X)Net slip link linux

Well here I have been working on it for a while. Because (new) Linux works with master /dev/pmtx and slave /dev/pts/? it is not always easy to find out which slave you will be assigned. Custom programs such as kissattach that give the slave with stdout. Now slattach does not suffer from it unfortunately. Oh well in Debian than.

I use the following program to create a master and slave.

/*compile with : gcc -Wall -O2 -D_GNU_SOURCE tty0tty.c -o tty0tty */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>


int
ptym_open(char *pts_name, char *pts_name_s , int pts_namesz)
{
char *ptr;
int fdm;

strncpy(pts_name, "/dev/ptmx", pts_namesz);
pts_name[pts_namesz - 1] = '\0';

fdm = posix_openpt(O_RDWR | O_NONBLOCK);
if (fdm < 0)
return(-1);
if (grantpt(fdm) < 0) 
{
close(fdm);
return(-2);
}
if (unlockpt(fdm) < 0) 
{
close(fdm);
return(-3);
}
if ((ptr = ptsname(fdm)) == NULL) 
{
close(fdm);
return(-4);
}

strncpy(pts_name_s, ptr, pts_namesz);
pts_name[pts_namesz - 1] = '\0';

return(fdm); 
}


int main(void)
{
char master1[1024];
char slave1[1024];
char master2[1024];
char slave2[1024];

int fd1;
int fd2;

char c1,c2;

fd1=ptym_open(master1,slave1,1024);

fd2=ptym_open(master2,slave2,1024);

{
  FILE *fp;

  printf("%s <-> %s\n",slave1,slave2);

  if((fp=freopen("/tmp/slip", "w" ,stdout))==NULL) {
    printf("Cannot open file.\n");
    exit(1);
}

  printf("%s %s\n",slave1,slave2);

  fclose(fp);

}
while(1)
{
if(read (fd1,&c1,1) == 1) write(fd2,&c1,1);
usleep(20);
if(read (fd2,&c2,1) == 1) write(fd1,&c2,1);
usleep(20);
};

close(fd1);
close(fd2);

return EXIT_SUCCESS;
}

I have added the code below. Because I would like the pts to be written down in a file.

{
  FILE *fp;

  printf("%s <-> %s\n",slave1,slave2);

  if((fp=freopen("/tmp/slip", "w" ,stdout))==NULL) {
    printf("Cannot open file.\n");
    exit(1);
}

  printf("%s %s\n",slave1,slave2);

  fclose(fp);

}
As you can see above, the pts are displayed with printf and they are written in /tmp/slip. Well here I wanted to go. Now I can read the file. Here I use the following in my start script of (X) Net.
#!/bin/sh
XNET_DIR=/usr/local/xnet
LINIP=192.168.1.200 # LINUX-IP address
XNET=192.168.1.201 # XNET address
#
cd /usr/local/xnet
./pts & # Hier worden de ptssen gemaakt ?
#
sleep 2
#
attachthem () {
read PTS1 PTS2
echo “Starting PTS gekloot voor de slip link :)”
slattach -s 38400 -p slip $PTS1 &
sleep 1
ifconfig sl0 $LINIP netmask 255.255.255.255 pointopoint $XNET mtu 236 up
sleep 1
sed -i “s,attach sdev6 slip 38400 /dev/.*$,attach sdev6 slip 38400 $PTS2,” /usr/local/xnet/AUTOBOOT.NET
}

tail -n 1 /tmp/slip | attachthem
#rm /tmp/slip <> Niet weg gooien sukkel, die hebben we nog nodig

With the command “sed” the PTS is adjusted in AUTOBOOT.NET. Now I do not have to worry about what pts I get assigned.

(X)Net – Statd / Rstatd Port Statistieken.

It is possible with (X)net to display the port statistics in a bar chart.
This way you get a nice overview per port. In the file postat.zip the cgi script is what you need to get the statistics from the file * .sta. There is also a postat.txt in which “what” explains how it should and works. I found it fairly unclear, but that can also be my knowledge of the German language 🙂
Here the necessary file…postat.zip

apt-get install libgd2-xpm-dev            “You really need this one”

GD is an open source code library for the dynamic creation of images by programmers. GD is written in C, and “wrappers” are available for Perl, PHP and other languages. GD creates PNG, JPEG, GIF, WebP, XPM, BMP images, among other formats. GD is commonly used to generate charts, graphics, thumbnails, and most anything else, on the fly.

 

 

There are two different ways to achieve this.
The first option described below I use for my port statistics.

In IP.NET the rstatd deamon is started with the IP address of your web server

start rstatd 192.168.1.112    #ip-adres webserver

In the start of (X) Net, I have included the following line. The rstatrxd refers to the directory of your web server in this case /var/www/cgi-bin/postat/

./rstatrxd /var/www/cgi-bin/postat/ &

I use the following to get the statistics from the file pi1lap.sta.
Here I get the data from port 0 with an interval of 10 from the file.
/cgi-bin/postat.cgi?df=pi1lap.sta&port=0&interval=10&cfg=0&l2con=2
The cfg = 0 indicates the size of the bar chart. Give it a try. Option 1 and 2 are also possible. l2con = 1 or 2

Here below with an interval of 60 minutes and 720 minutes.
/cgi-bin/postat.cgi?df=pi1lap.sta&port=0&interval=60&cfg=0&l2con=2
/cgi-bin/postat.cgi?df=pi1lap.sta&port=0&interval=720&cfg=0&l2con=2

Example :
Poort Statistieken

Option 2 actually works the same way. Only a simlink is placed from the file min.sta to the web server directory.

In IP.NET
#### Start statd
start statd
start statd 60 min.sta
start statd 3600 hour.sta
start statd 86400 day.sta

ln -s /usr/local/xnet/min.sta /var/www/cgi-bin/postat/min.sta
ln -s /usr/local/xnet/hour.sta /var/www/cgi-bin/postat/hour.sta
ln -s /usr/local/xnet/day.sta /var/www/cgi-bin/postat/day.sta
ln -s /usr/local/xnet/port.sta /var/www/cgi-bin/postat/port.sta

/cgi-bin/postat.cgi?df=port.sta&port=-1&l2con=1 # Status of all ports
/cgi-bin/postat.cgi?df=min.sta&port=3&l2con=1 # Status of port 3 in 10 minutes
/cgi-bin/postat.cgi?df=hour.sta&port=3&l2con=1 # Status of port 3 in 1 hour
/cgi-bin/postat.cgi?df=day.sta&port=3&l2con=1 # Status of port 3 in 1 day

min.sta is the status for 10 minutes
hour.sta is the status for 1 hour
day.sta is the status for 24 hours
port.sta is the complete status?

This could also suffice with just a simlink to the post.sta and then requesting the status with interval = 10 (60,720).