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

// Several commands are used by these utilities
// The commands are mocked below with a generic output

if ($argv[1] == 127 && isset($argv[2])) {
    fputs(STDERR, 'sh: 1: ' . $argv[2] . ': not found' . PHP_EOL);
    exit(127);
}

if ($argv[1] == 1 && isset($argv[2])) {
    fputs(STDERR, 'sh: 1: ' . $argv[2] . ': returned an error' . PHP_EOL);
    exit(1);
}

unset($argv[0]);
$cmd = implode(' ', $argv);

if ($cmd == 'ifconfig') {
    echo 'eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500' . PHP_EOL;
    echo '        inet 172.18.0.8  netmask 255.255.0.0  broadcast 172.18.255.255' . PHP_EOL;
    echo '        ether 02:42:ac:12:00:08  txqueuelen 0  (Ethernet)' . PHP_EOL;
    echo '        RX packets 55139  bytes 254952301 (243.1 MiB)' . PHP_EOL;
    echo '        RX errors 0  dropped 0  overruns 0  frame 0' . PHP_EOL;
    echo '        TX packets 61591  bytes 33229639 (31.6 MiB)' . PHP_EOL;
    echo '        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0' . PHP_EOL;
    echo '' . PHP_EOL;
    echo 'lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536' . PHP_EOL;
    echo '        inet 127.0.0.1  netmask 255.0.0.0' . PHP_EOL;
    echo '        loop  txqueuelen 1000  (Local Loopback)' . PHP_EOL;
    echo '        RX packets 8186  bytes 447115 (436.6 KiB)' . PHP_EOL;
    echo '        RX errors 0  dropped 0  overruns 0  frame 0' . PHP_EOL;
    echo '        TX packets 8186  bytes 447115 (436.6 KiB)' . PHP_EOL;
    echo '        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0' . PHP_EOL;
    echo '' . PHP_EOL;
    exit(0);
}

if ($cmd == 'ip addr') {
    echo '1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000' . PHP_EOL;
    echo '    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00' . PHP_EOL;
    echo '    inet 127.0.0.1/8 scope host lo' . PHP_EOL;
    echo '       valid_lft forever preferred_lft forever' . PHP_EOL;
    echo '2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000' . PHP_EOL;
    echo '    link/ipip 0.0.0.0 brd 0.0.0.0' . PHP_EOL;
    echo '3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000' . PHP_EOL;
    echo '    link/tunnel6 :: brd ::' . PHP_EOL;
    echo '21: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default' . PHP_EOL;
    echo '    link/ether 02:42:ac:12:00:08 brd ff:ff:ff:ff:ff:ff link-netnsid 0' . PHP_EOL;
    echo '    inet 172.18.0.8/16 brd 172.18.255.255 scope global eth0' . PHP_EOL;
    echo '       valid_lft forever preferred_lft forever' . PHP_EOL;
    echo '' . PHP_EOL;
    exit(0);
}

if ($cmd == 'ipconfig') {
    echo '' . PHP_EOL;
    echo 'Windows IP Configuration' . PHP_EOL;
    echo '' . PHP_EOL;
    echo '' . PHP_EOL;
    echo 'Ethernet adapter Ethernet 2:' . PHP_EOL;
    echo '' . PHP_EOL;
    echo '   Media State . . . . . . . . . . . : Media disconnected' . PHP_EOL;
    echo '   Connection-specific DNS Suffix  . : dynamic.ziggo.nl' . PHP_EOL;
    echo '' . PHP_EOL;
    echo 'Wireless LAN adapter Local Area Connection* 1:' . PHP_EOL;
    echo '' . PHP_EOL;
    echo '   Media State . . . . . . . . . . . : Media disconnected' . PHP_EOL;
    echo '   Connection-specific DNS Suffix  . :' . PHP_EOL;
    echo '' . PHP_EOL;
    echo 'Wireless LAN adapter Local Area Connection* 2:' . PHP_EOL;
    echo '' . PHP_EOL;
    echo '   Media State . . . . . . . . . . . : Media disconnected' . PHP_EOL;
    echo '   Connection-specific DNS Suffix  . :' . PHP_EOL;
    echo '' . PHP_EOL;
    echo 'Wireless LAN adapter Wi-Fi:' . PHP_EOL;
    echo '' . PHP_EOL;
    echo '   Connection-specific DNS Suffix  . :' . PHP_EOL;
    echo '   Link-local IPv6 Address . . . . . : fe80::f9ac:4080:6415:e1c%21' . PHP_EOL;
    echo '   IPv4 Address. . . . . . . . . . . : 192.168.20.98' . PHP_EOL;
    echo '   Subnet Mask . . . . . . . . . . . : 255.255.255.0' . PHP_EOL;
    echo '   Default Gateway . . . . . . . . . : 192.168.20.254' . PHP_EOL;
    echo '' . PHP_EOL;
    echo 'Ethernet adapter Bluetooth Network Connection:' . PHP_EOL;
    echo '' . PHP_EOL;
    echo '   Media State . . . . . . . . . . . : Media disconnected' . PHP_EOL;
    echo '   Connection-specific DNS Suffix  . :' . PHP_EOL;
    echo '' . PHP_EOL;
    echo 'Ethernet adapter vEthernet (Default Switch):' . PHP_EOL;
    echo '' . PHP_EOL;
    echo '   Connection-specific DNS Suffix  . :' . PHP_EOL;
    echo '   Link-local IPv6 Address . . . . . : fe80::9119:8de5:f581:2d81%26' . PHP_EOL;
    echo '   IPv4 Address. . . . . . . . . . . : 192.168.208.1' . PHP_EOL;
    echo '   Subnet Mask . . . . . . . . . . . : 255.255.240.0' . PHP_EOL;
    echo '   Default Gateway . . . . . . . . . :' . PHP_EOL;
    echo '' . PHP_EOL;
    exit(0);
}

if ($cmd == 'arp -an') {
    echo '? (172.18.0.2) at 02:42:ac:12:00:02 [ether] on eth0' . PHP_EOL;
    echo '? (172.18.0.4) at 02:42:ac:12:00:04 [ether] on eth0' . PHP_EOL;
    echo '? (172.18.0.1) at 02:42:ab:2e:83:3b [ether] on eth0' . PHP_EOL;
    echo '? (172.18.0.11) at 02:42:ac:12:00:0b [ether] on eth0' . PHP_EOL;
    echo '' . PHP_EOL;
    exit(0);
}

if ($cmd == 'arp -a') {
    echo '' . PHP_EOL;
    echo 'Interface: 192.168.20.98 --- 0x15' . PHP_EOL;
    echo '  Internet Address      Physical Address      Type' . PHP_EOL;
    echo '  192.168.20.193        02-42-ac-12-00-02     dynamic' . PHP_EOL;
    echo '  192.168.20.254        02-42-ab-2e-83-3b     dynamic' . PHP_EOL;
    echo '' . PHP_EOL;
    exit(0);
}

if ($cmd == 'ip neigh show') {
    echo '172.18.0.1 dev eth0 lladdr 02:42:7c:9a:d5:b7 REACHABLE' . PHP_EOL;
    exit(0);
}

if ($cmd == 'ping -c 1 -s 1 -W 1 -b 172.18.255.255') {
    fputs(STDERR, 'WARNING: pinging broadcast address' . PHP_EOL);
    echo 'PING 172.18.255.255 (172.18.255.255) 1(29) bytes of data.' . PHP_EOL;
    echo '' . PHP_EOL;
    echo '--- 172.18.255.255 ping statistics ---' . PHP_EOL;
    echo '1 packets transmitted, 0 received, 100% packet loss, time 0ms' . PHP_EOL;
    echo '' . PHP_EOL;
    exit(1);
}

if ($cmd == 'ping -c 1 -s 1 -W 1 172.18.0.4') {
    echo '    PING 192.168.20.193 (172.18.0.4) 1(29) bytes of data.' . PHP_EOL;
    echo '    9 bytes from 172.18.0.4: icmp_seq=1 ttl=64' . PHP_EOL;
    echo '' . PHP_EOL;
    echo '        --- 172.18.0.4 ping statistics ---' . PHP_EOL;
    echo '    1 packets transmitted, 1 received, 0% packet loss, time 0ms' . PHP_EOL;
    echo '' . PHP_EOL;
}

echo 'Parameter ' . $argv[1] . ' unknown' . PHP_EOL;
exit(1);
