External links in the pihole menu

Since the feature request to add external links to the pihole menu has obviously been denied, here is the solution to add it yourself. Unfortunately, pihole -up and pihole -r will kill the change, so you need to implement it every time. To make this less time consuming, a script is included to make the change for you.

TESTED ON Pi-hole Version v4.1.1 Web Interface Version v4.1.1 FTL Version v4.1.2

STEP 1: create a new php script /var/www/html/admin/scripts/pi-hole/php/externalurl.php, content:

<li class="treeview active">
	<a href="#">
		<span class="pull-right-container">
			<i class="fa fa-angle-down pull-right" style="padding-right: 5px;"></i>
		</span>
		<i class="fa fa-folder"></i> <span>External Links</span>
	</a>
    <ul class="treeview-menu">
		<?php
		if(file_exists("/etc/pihole/links.conf")) {
			$file = fopen("/etc/pihole/links.conf", "r") or exit("Unable to open file!");
			while(!feof($file)) {
				$array = explode(',', fgets($file));
				?>
				<li>
					<a href="<?php echo "$array[1]"; ?>" target="_blank">
					<i class="fa fa-newspaper-o"></i> <span><?php echo "$array[0]"; ?></span>
					</a>
				</li>			
			<?php
			}
			fclose($file);
		}
		?>		
	</ul>
</li>				

STEP2: create the configuration file /etc/pihole/links.conf, populated with the links you want. Example:

discourse,https://discourse.pi-hole.net/latest/
reddit,https://www.reddit.com/r/pihole/
docs,https://docs.pi-hole.net/
webmin,https://192.168.2.57:10000/
sql browser,http://192.168.2.57/phpliteadmin.php

Syntax: name, url
The separator is a comma
There should NOT be a new line after the last entry, as it will create an empty menu item.
The webmin installation is explained here , section 4.11
The sql browser installation is explained here .

STEP 3: run this script (sudo) to make the necessary changes to /var/www/html/admin/scripts/pi-hole/php/header.php, content:

#!/bin/bash

file=/var/www/html/admin/scripts/pi-hole/php/header.php
line=$(grep "<!-- External Links -->" $file)
if [ $? -eq 1 ]; then
	echo "added"
	sudo sed -i 's/<!-- Donate -->/<!-- External Links -->\n&/' $file
	sudo sed -i 's/<!-- Donate -->/<?php include "scripts\/pi-hole\/php\/externalurl.php"; ?>\n&/' $file
fi

Done...
The result:

Beware, discourse sometimes changes double quotes into something else, when copy / pasting the content, so check your copy well!!!

edit
the necessary files can now be retrieved from github
/edit

3 Likes