It would need some hacking. The ?col() functions are just for coloration. The hasauthority() function needs to be replaced with a function to check if someone should be able to siteban. You'd also need to provide a means of running @restart after modifying the list.
@create Site Banninator=5 &META_AUTHOR Site Banninator=Sponge/#4 &META_PURPOSE Site Banninator=Enable people other than #1 to add/remove sitebans &META_UPDATED_BY Site Banninator=Sponge/#4 &META_NEEDS_FLAGS Site Banninator=inherit &META_NEEDS_OBJS Site Banninator=#10 #3 #1774 &DATA_DB Site Banninator=#1774 &CMND_SITEBANS_LIST Site Banninator=$+sitebans/list:@switch [hasauthority(%#,SITEBAN)]=0*,@pemit %#=You do not have the proper authority to manage sitebans.,1,@pemit %#=u(UFUN_LIST_SITEBANS) &UFUN_FMT_RECORD Site Banninator=[setq(I,extract(%0,1,1,|))][setq(U,extract(%0,2,1,|))][setq(T,extract(%0,3,1,|))][setq(C,extract(%0,4,50,|,|))][ljust(IP: %qI, 24)][ljust(By: %qU,25)][ljust(On: [mid(convsecs(%qT),0,11)][mid(convsecs(%qT),20,4)],24)]%rWhy: %qC &UFUN_LIST_SITEBANS Site Banninator=[header(Sitebans)]%r[iter(lattr(v(DATA_DB)/DATA_BAN_*),u(UFUN_FMT_RECORD,get(v(DATA_DB)/##)),\ ,%r)]%r[footer()] &CMND_SITEBANS_REMOVE Site Banninator=$+sitebans/remove *:@switch [hasauthority(%#,SITEBAN)][hasattr(v(DATA_DB),DATA_BAN_[u(UFUN_IP_TO_LABEL,%0)])] &UFUN_IP_TO_LABEL Site Banninator=edit(before(%0,/),.,_) &UFUN_VALIDATE_IP_CHARS Site Banninator=not(strip(%0,0123456789./)) &UFUN_FOLD_OCTET Site Banninator=add(shl(%0,8),%1) &UFUN_VALIDATE_IP_RANGE Site Banninator=[setq(I,u(UFUN_IP_TO_INT,before(%0,/)))]and(gte(%qI,u(UFUN_IP_TO_INT,1.0.0.0)),lt(%qI,u(UFUN_IP_TO_INT,224.0.0.0))) &UFUN_IP_TO_INT Site Banninator=fold(UFUN_FOLD_OCTET,edit(%0,.,%b)) &UFUN_VALIDATE_IP_OCTETS Site Banninator=not(edit(iter(%0,gt(##,255),.),%b,)) &UFUN_IP_VALIDATE Site Banninator=not(strmatch(iter(lattr(me/UFUN_VALIDATE_*),u(##,%0)),*0*)) &UFUN_LIST_BANIPS Site Banninator=iter(lattr(v(DATA_DB)/DATA_BAN_*),before(get(v(DATA_DB)/##),|)) &CMND_SITEBANS_DELETE Site Banninator=$+sitebans/delete *:@switch [hasauthority(%#,SITEBAN)][u(UFUN_IP_BANNED,%0)]=0*,@pemit %#=scol(You do not have the proper authority to manage sitebans.),10*,@pemit %#=scol(No such IP ban found. Try +sitebans/list.),11,{&DATA_BAN_[u(UFUN_IP_TO_LABEL,%0)] [v(DATA_DB)]=;@pemit %#=pcol(Ban for %0 cleared. You'll have to @restart for the changes to take effect.)} &UFUN_IP_BANNED Site Banninator=hasattr(v(DATA_DB),DATA_BAN_[u(UFUN_IP_TO_LABEL,%0)]) &CMND_SITEBANS_ADD Site Banninator=$+sitebans/add *=*:@switch [hasauthority(%#,SITEBAN)][u(UFUN_IP_VALIDATE,%0)]=0*,@pemit %#=scol(You do not have the proper authority to manage sitebans.),10*,@pemit %#=scol('%0' does not appear to be an acceptable IP to ban.),11,{&DATA_BAN_[u(UFUN_IP_TO_LABEL,%0)] [v(DATA_DB)]=[if(strmatch(%0,*/*),%0,%0/32)]|%N/%#|[secs()]|%1;@pemit %#=pcol(Added '%0' to sitebans list. Remember to @restart for changes to take effect.)} &CMND_SITEBANS_ADDPLAYER Site Banninator=$+sitebans/player *=*:@switch [hasauthority(%#,SITEBAN)][t(setr(P,pmatch(%0)))]=0*,@pemit %#=scol(You do not have the proper authority to manage sitebans.),10*,@pemit %#=scol(Couldn't find player '%0'.),11,{@fo %#[setq(I,get(%qP/LASTIP))]=+sitebans/add %qI=%1} @set Site Banninator=INHERIT @set Site Banninator=SAFEand
@Startup Wizard=@dolist u(#1773/UFUN_LIST_BANIPS)=@admin forbid_site=##On NPM/CoH, #1773 is the Site Banninator and #1774 is an arbitrary THING to hold the siteban data.
Crazy spongecode aside, maybe ZONES could help here? I've never played with them.