Project

General

Profile

« Previous | Next » 

Revision 0d33f1fc

Added by Renato Botelho almost 12 years ago

When block a MAC address, add it to a DB to make it possible to redirect it to a URL

View differences:

etc/inc/captiveportal.inc
952 952
		$rules = "add {$ruleno} pipe {$pipeup} ip from any to any MAC any {$macent['mac']}\n";
953 953
		$ruleno++;
954 954
		$rules .= "add {$ruleno} pipe {$pipedown} ip from any to any MAC {$macent['mac']} any\n";
955
	} else
955
	} else {
956 956
		$rules = "add {$ruleno} deny ip from any to any MAC {$macent['mac']} any\n";
957
		$blockedmacs = captiveportal_read_blockedmacs_db();
958
		$blockedmacs[] = $macent['mac'];
959
		captiveportal_write_blockedmacs_db($blockedmacs);
960
	}
957 961

  
958 962
	return $rules;
959 963
}
......
979 983
			$rules .= "pipe delete " . $pipeno . "\n";
980 984
			$rules .= "pipe delete " . ++$pipeno . "\n";
981 985
		}
986
	} else {
987
		$blockedmacs = captiveportal_read_blockedmacs_db();
988
		foreach ($blockedmacs as $idx => $blockedmac)
989
			if ($blockedmac == $macent['mac'])
990
				unset($blockedmacs[$idx]);
991
		captiveportal_write_blockedmacs_db($blockedmacs);
982 992
	}
983 993

  
984 994
	return $rules;
......
2087 2097
	unlock($cpumaclck);
2088 2098
}
2089 2099

  
2100
function captiveportal_read_blockedmacs_db() {
2101
	global $g, $cpzone;
2102

  
2103
	$cpumaclck = lock("captiveblockedmacs{$cpzone}");
2104
	if (file_exists("{$g['vardb_path']}/captiveportal_blockedmacs_{$cpzone}.db")) {
2105
		$blockedmacs = file("{$g['vardb_path']}/captiveportal_blockedmacs_{$cpzone}.db", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
2106
		if (!$blockedmacs)
2107
			$blockedmacs = array();
2108
	} else
2109
		$blockedmacs = array();
2110

  
2111
	unlock($cpumaclck);
2112
	return $blockedmacs;
2113
}
2114

  
2115
function captiveportal_write_blockedmacs_db($blockedmacs) {
2116
	global $g, $cpzone;
2117

  
2118
	$cpumaclck = lock("captiveblockedmacs{$cpzone}", LOCK_EX);
2119
	@file_put_contents("{$g['vardb_path']}/captiveportal_blockedmacs_{$cpzone}.db", implode("\n", $blockedmacs));
2120
	unlock($cpumaclck);
2121
}
2122

  
2090 2123
function captiveportal_send_server_accounting($off = false) {
2091 2124
	global $cpzone, $config;
2092 2125

  

Also available in: Unified diff