Looking Glass
Modern, simple and fresh looking glass based on Bootstrap 5 and PHP 7. A looking glass is a network utility which is made user-friendly for everyone to use. It allows you to execute network related commands within a remote network, usually that of an ISP.
Demo
Features
- Bootstrap 5 UI.
- Real time command output using JavaScript.
- Supports ping/ping6, traceroute/traceroute6 and mtr/mtr6.
- Easy to customize and to configure.
- DNS checking to prevent unnecessary executions.
Requirements
- Any Linux distribution, this has been tested on RHEL.
- PHP 7.1 or higher.
- IPv6 connectivity if you want to use the v6 equivalents.
- Root access.
Installation
For this installation we will assume that we are working on AlmaLinux 8 OS. Warning: This guide does not cover any security hardening or rate limiting.
- Install the required network tools:
dnf install mtr traceroute -y
. - Install the web server with PHP (by default it will install 7.2):
dnf install httpd mod_ssl php -y
. - Enable and start Apache/PHP-FPM:
systemctl enable httpd; systemctl enable php-fpm
andsystemctl start httpd; systemctl start php-fpm
. - Let's help MTR to work, execute the following command:
ln -s /usr/sbin/mtr /usr/bin/mtr
and also mtr helper called mtr-packet:ln -s /usr/sbin/mtr-packet /usr/bin/mtr-packet
. - You must configure SELinux before this all works, or you can disable SELinux using
setenforce 0
and possibly make it permanent:nano /etc/selinux/config
change toSELINUX=disabled
. - Upload the contents of the ZIP to /var/www/html/.
- Rename config.dist.php to config.php and adjust the settings.
- (Optional) You might want to enable SSL using LetsEncrypt, take a look at acme.sh.
Customization
If you open up config.dist.php you will see that there are some features that allows you to customize the looking glass, this includes a custom CSS override. You may also extend the looking glass with a custom block.
TODO
- Move to Composer;
- Software-based rate limiting;
- Implement a template engine, for advanced customization;
- Switch to WebSockets.
Contribute
We would love to receive code contributions in the form of a pull request. We prefer this over forking, so if you have any code improvements feel free to commit.
Credits
This project is inspired by the LookingGlass project of @telephone and uses his procExecute() function, although slightly modified.
License
Mozilla Public License Version 2.0