Importing the important

January 2018 · 2 minute read

We are back from our exams and our Christmas break and we are back in full swing. We have been discussing where we are going with our project and we have decided that the last thing we want in our project is to make large configs for no reason. We didn’t want to hardcode in what modules panoptes uses and what is does not. So we have created a generator what takes all the python modules in a submodule called plugins and imports them and starts them on by one.


def lst_plugins(directory='plugins'):
    for file in os.listdir(directory):
        if file.startswith('_'):
            continue
        if not file.endswith('.py'):
            continue
        path = os.path.join(directory, file)
        yield imp.load_source(file, path)

This is where we plan to keep all the daemons that panoptes will start when run. At the moment the functionality is limited in that panoptes can start all modules, restart them all or stop them all. This is not ideal as we get more and more modules, but we only have one module created at the moment so that problem is on the back burner to solve. It is a feature that we need to start working on sooner rather than later though and we plan to have a good few modules making the debugging process slow and tedious to start them all and stop them all every time.

Speaking also of the first monitoring daemon we have created. We have created and module that reads from the config ssids that it does not want anyone to have other than the list of mac addresses that have been granted rights to have it. This prevents against people spoofing trusted mac addresses in organisations such a edurome or anything with the name dcu in it. These can be customised in the config and multiple addresses can be given for the one ssid to allow for organisations that every ssid of an access point is the same. At this current moment the ssid detection does not regex for things containing banned words but this could be a possibility if we have time to extend the project, e.g “free” && “wifi” | “by” && “dcu”