string *a_banned_sites; /* A class subnet 1.*.*.* */ string *b_banned_sites; /* B class subnet 1.2.*.* */ string *c_banned_sites; /* C class subnet 1.2.3.* */ void create( void ) { mixed *list; list = get_dir( "/data/banned/a/*" ); a_banned_sites = list[0]; list = get_dir( "/data/banned/b/*" ); b_banned_sites = list[0]; list = get_dir( "/data/banned/c/*" ); c_banned_sites = list[0]; } string *query_a_banned_sites( void ) { return( a_banned_sites ); } string *query_b_banned_sites( void ) { return( b_banned_sites ); } string *query_c_banned_sites( void ) { return( c_banned_sites ); } string *query_banned_sites( void ) { string *tmp; tmp = a_banned_sites + b_banned_sites + c_banned_sites; return( tmp ); } int is_a_banned( string name ) { string *tmp; string tmp_name; tmp = explode(name,"."); tmp_name = tmp[0] + ".*.*.*"; if( member_array(tmp_name, a_banned_sites) != -1 ) return( 1 ); return( 0 ); } int is_a_newbanned( string name ) { string *tmp; string tmp_name; if( member_array("new.new.new.new", a_banned_sites) != -1 ) return( 1 ); tmp = explode(name,"."); tmp_name = tmp[0] + ".new.new.new"; if( member_array(tmp_name, a_banned_sites) != -1 ) return( 1 ); return( 0 ); } int is_b_banned( string name ) { string *tmp; string tmp_name; tmp = explode(name,"."); tmp_name = tmp[0]+"."+tmp[1] + ".*.*"; if( member_array(tmp_name, b_banned_sites) != -1 ) return( 1 ); return( 0 ); } int is_b_newbanned( string name ) { string *tmp; string tmp_name; tmp = explode(name,"."); tmp_name = tmp[0]+"."+tmp[1] + ".new.new"; if( member_array(tmp_name, b_banned_sites) != -1 ) return( 1 ); return( 0 ); } int is_c_banned( string name ) { string *tmp; string tmp_name; tmp = explode(name,"."); tmp_name = tmp[0]+"."+tmp[1]+"."+tmp[2]+".*"; if( member_array(tmp_name, c_banned_sites) != -1 ) return( 1 ); return( 0 ); } int is_c_newbanned( string name ) { string *tmp; string tmp_name; tmp = explode(name,"."); tmp_name = tmp[0]+"."+tmp[1]+"."+tmp[2]+".new"; if( member_array(tmp_name, c_banned_sites) != -1 ) return( 1 ); return( 0 ); } int is_banned( string name ) { if( is_a_banned(name) ) { return 1; } else if( is_b_banned(name) ) { return 1; } else if( is_c_banned(name) ) { return 1; } else { return 0; } } int is_newbanned( string name ) { if( is_a_newbanned(name) ) { return 1; } else if( is_b_newbanned(name) ) { return 1; } else if( is_c_newbanned(name) ) { return 1; } else { return 0; } } int siteban (string str) { string *tmp; string tmp_name; int flag; flag = 0; tmp = explode(str,"."); if( (tmp[1] == "*") && (tmp[2] == "*") && (tmp[3] == "*") ) { /* A class siteban */ write_file("/data/banned/a/"+str,ctime(time())+"\tby: "+this_user()->query_name()+"\n"); flag = 1; } else if( (tmp[2] == "*") && (tmp[3] == "*") ) { /* B class siteban */ write_file("/data/banned/b/"+str,ctime(time())+"\tby: "+this_user()->query_name()+"\n"); flag = 1; } else if( tmp[3] == "*") { /* C class siteban */ write_file("/data/banned/c/"+str,ctime(time())+"\tby: "+this_user()->query_name()+"\n"); flag = 1; } else if( (tmp[0] == "new") && (tmp[1] == "new") && (tmp[2] == "new") && (tmp[3] == "new") ) { /* A class newban */ write_file("/data/banned/a/"+str,ctime(time())+"\tnewban by: "+this_user()->query_name()+"\n"); flag = 1; } else if( (tmp[1] == "new") && (tmp[2] == "new") && (tmp[3] == "new") ) { /* A class siteban */ write_file("/data/banned/a/"+str,ctime(time())+"\tnewban by: "+this_user()->query_name()+"\n"); flag = 1; } else if( (tmp[2] == "new") && (tmp[3] == "new") ) { /* B class siteban */ write_file("/data/banned/b/"+str,ctime(time())+"\tnewban by: "+this_user()->query_name()+"\n"); flag = 1; } else if( tmp[3] == "new") { /* C class siteban */ write_file("/data/banned/c/"+str,ctime(time())+"\tnewban by: "+this_user()->query_name()+"\n"); flag = 1; } else { flag = 0; } create(); return flag; } int unsiteban (string str) { string *tmp; string tmp_name; int flag; flag = 0; tmp = explode(str,"."); if( (tmp[1] == "*") && (tmp[2] == "*") && (tmp[3] == "*") ) { /* A class siteban */ remove_file("/data/banned/a/"+str); flag = 1; } else if( (tmp[2] == "*") && (tmp[3] == "*") ) { /* B class siteban */ remove_file("/data/banned/b/"+str); flag = 1; } else if( tmp[3] == "*") { /* C class siteban */ remove_file("/data/banned/c/"+str); flag = 1; } else if( (tmp[0] == "new") && (tmp[1] == "new") && (tmp[2] == "new") && (tmp[3] == "new") ) { /* A class siteban */ remove_file("/data/banned/a/"+str); flag = 1; } else if( (tmp[1] == "new") && (tmp[2] == "new") && (tmp[3] == "new") ) { /* A class siteban */ remove_file("/data/banned/a/"+str); flag = 1; } else if( (tmp[2] == "new") && (tmp[3] == "new") ) { /* B class siteban */ remove_file("/data/banned/b/"+str); flag = 1; } else if( tmp[3] == "new") { /* C class siteban */ remove_file("/data/banned/c/"+str); flag = 1; } else { flag = 0; } create(); return flag; }