// Elements const droneName = document.getElementById("name"); const address = document.getElementById("address"); const container = document.getElementById("container"); const upstream = document.getElementById("upstream"); const ssid = document.getElementById("ssid"); const camera = document.getElementById("camera"); const devices = document.getElementById("devices"); // Load page + drone settings document.onload = initPage(); // Function to initialize the page function initPage() { // Populate table with drone name, drone IP address, and drone docker containers that are running // Name corresponds to host computer's name, IP address is host computer's address // and docker containers are all those displayed by docker container ls const command1 = "hostname" const command2 = "hostname -I" const command3 = "docker container ls" const command4 = "ping google.com -c 1" const command5 = "iwgetid -r" const command6 = "ls /dev/video*" // Commands for listing all Connected Devices const command7 = "ls /dev/block/*" const command8 = "ls /dev/bus/*" const command9 = "ls /dev/char/*" const command10 = "ls /dev/cpu/*" const command11 = "ls /dev/disk/*" const command12 = "ls /dev/dma_heap/*" const command13 = "ls /dev/dri/*" const command14 = "ls /dev/fd/*" const command15 = "ls /dev/hugepages/*" const command16 = "ls /dev/input/*" const command17 = "ls /dev/mapper/*" const command18 = "ls /dev/mqueue/*" const command19 = "ls /dev/net/*" const command20 = "ls /dev/pts/*" const command21 = "ls /dev/shm/*" const command22 = "ls /dev/snd/*" const command23 = "ls /dev/v4l/*" const command24 = "ls /dev/vfio/*" const devices_commands = [command7, command8, command9, command10, command11, command12, command13, command14, command15, command16, command17, command18, command19, command20, command21, command22, command23, command24 ]; cockpit.spawn(["bash", "-c", command1]) .then((data) => { droneName.innerHTML = data.split(" ")[0]; }) .catch((error) => console.log(error)); cockpit.spawn(["bash", "-c", command2]) .then((data) => { address.innerHTML = data.split(" ")[0]; }) .catch((error) => console.log(error)); cockpit.spawn(["bash", "-c", command3]) .then((data) => { const datalist = data.split("\n"); if (datalist[1].split(" ")[0] == ""){ container.className = "p-3 mb-2 bg-danger text-white"; container.innerHTML += "Error: No Docker Containers to Display"; } else { for (let i = 0; i < datalist.length - 2; i++) { container.innerHTML += datalist[i + 1].split(" ")[0]; container.innerHTML += "
"; } container.innerHTML += datalist[datalist.length - 1].split(" ")[0]; } }) .catch((error) => console.log(error)); cockpit.spawn(["bash", "-c", command4]) .then((data) => { const datalist = data.split(" "); if (datalist[0] == "ping:"){ upstream.innerHTML = "Connection LIMITED - No upstream"; } else if (datalist[0] == "PING") { upstream.innerHTML = "Connection OK"; } else { upstream.innerHTML = "Connection DOWN"; } }) .catch((error) => console.log(error)); cockpit.spawn(["bash", "-c", command5]) .then((data) => { if (data.length == 0) { ssid.innerHTML = "None"; } else { ssid.innerHTML = data } }) .catch((error) => console.log(error)); cockpit.spawn(["bash", "-c", command6]) .then((data) => { if (data.length == 0) { camera.innerHTML = "No Camera Devices Detected"; } else { const datalist = data.replaceAll("\n", "
"); camera.innerHTML += datalist; } }) .catch((error) => console.log(error)); count = 0; for (let i = 0; i < devices_commands.length; i++) { cockpit.spawn(["bash", "-c", devices_commands[i]]) .then((data) => { if (data.length != 0) { devices.innerHTML += data.replaceAll("\n", "
"); devices.innerHTML += "
"; count++ } }) .catch((error) => console.log(error)); } if (count > 0) { devices.innerHTML -= "
" } }