!7 cmodule ClearBlockedIPs > DynSingleFunction { transient Set blockedIPs; transient JList list; start { // do it on boot because, sadly, during Eleu startup // legitimate clients may be blocked doIt(); dm_doEveryAndNow(10.0, r getBlockedIPs); } void doIt { call(mainMainClass(), 'clearBlockedIPs); print("Done!"); } visual centerAndSouthWithMargins(jCenteredSection("Blocked IPs", list = jlist()), super); void getBlockedIPs { setField(blockedIPs := sortInPlace(cloneList((Cl) getOpt(mainMainClass(), "blockedIPs")))); fillListWithStrings(list, blockedIPs); } }