class IpInterceptor extends AbstractInterceptor<AuthIp> {
    @Override
    public Class<AuthIp> type() {
        return AuthIp.class;
    }

    @Override
    public Result verify(AuthIp anno) throws Exception {<FILL_FUNCTION_BODY>}
}

        Context ctx = Context.current();

        if (ctx == null) {
            return Result.succeed();
        } else {
            String ip = ctx.realIp();

            if (AuthUtil.verifyIp(ip)) {
                return Result.succeed();
            } else {
                return AuthStatus.OF_IP.toResult(ip);
            }
        }
    
<methods>public non-sealed void <init>() ,public java.lang.Object doIntercept(org.noear.solon.core.aspect.Invocation) throws java.lang.Throwable,public abstract Class<org.noear.solon.auth.annotation.AuthIp> type() ,public abstract Result#RAW verify(org.noear.solon.auth.annotation.AuthIp) throws java.lang.Exception<variables>