コード例 #1
0
ファイル: ipban.php プロジェクト: NicolasLoew/DevAAC
 */
use DevAAC\Models\IpBan;
$meta = array('name' => 'IP Ban', 'description' => 'Disallows access to users who are IP banned. APC user cache is recommended for performance.', 'version' => '0.1', 'author' => 'Don Daniello', 'link' => 'https://github.com/DevelopersPL/DevAAC');
/*
 * This plugin strongly benefits from APC user cache!
 */
if (!in_array(basename(__FILE__), $DevAAC->enabled_plugins)) {
    return array_merge($meta, array('enabled' => false));
}
// http://docs.slimframework.com/#How-to-Use-Hooks
$DevAAC->hook('slim.before', function () use($DevAAC) {
    $req = $DevAAC->request;
    $apc = false;
    if (extension_loaded('apc') && ini_get('apc.enabled')) {
        $apc = true;
        $objname = 'ipban_' . $req->getIp();
    }
    if ($apc && apc_fetch($objname)) {
        $DevAAC->halt(403, 'Your IP address is banned.');
    } else {
        $ipban = IpBan::find(ip2long($req->getIp()));
        if ($ipban) {
            $DevAAC->halt(403, 'Your IP address is banned.');
            if ($apc) {
                apc_store($objname, true, 10 * 60);
            }
            // THE INFORMATION WILL BE IN CACHE FOR 10 MINUTES SO WE CAN REJECT REQUESTS WITHOUT RUNNING ANY SQL QUERIES
        }
    }
});
return array_merge($meta, array('enabled' => true));
コード例 #2
0
ファイル: server.php プロジェクト: NicolasLoew/DevAAC
 *      @SWG\Parameter( name="ip",
 *                      description="IP to lift ban",
 *                      paramType="path",
 *                      required=true,
 *                      type="string"),
 *      @SWG\ResponseMessage(code=403, message="Permission denied"),
 *      @SWG\ResponseMessage(code=404, message="IP is not banned")
 *   )
 *  )
 * )
 */
$DevAAC->delete(ROUTES_API_PREFIX . '/server/ipBans/:ip', function ($ip) use($DevAAC) {
    if (!$DevAAC->auth_account || !$DevAAC->auth_account->isGod()) {
        throw new InputErrorException('You are not an admin', 403);
    }
    $ipban = IpBan::find(ip2long($ip));
    if (!$ipban) {
        throw new InputErrorException('This IP is not banned.', 404);
    }
    $ipban->delete();
    $DevAAC->response->headers->set('Content-Type', 'application/json');
    $DevAAC->response->setBody(json_encode(null, JSON_PRETTY_PRINT));
});
/**
 * @SWG\Resource(
 *  basePath="/api/v1",
 *  resourcePath="/server",
 *  @SWG\Api(
 *    path="/server/info",
 *    description="Operations on server",
 *    @SWG\Operation(