WordPress All In One Wp Security (AIOS) locking cloudflare out

I’m going on a trip tomorrow and not gonna bring my computer, so I decided to take one last check at my WordPress site making sure everything is doing fine. Then I saw recently all the bot like high count visitors are from a narrow range of IP from Singapore. I thought it’s just some good old crawler draining up my server, so I casually added the range to All In One Wp Security (AIOS)’s blacklist manager.

Then, without refreshing, I realized I recently setup cloudflare for all my site cuz my other site was DDoS’ed the other day. Couldn’t this happen to be cloudflare’s proxy server right? So I hit refresh. 403. At the same time, my Better Uptime incident alert came.

Bummed by my own stupidity, I think I should just be able to ssh into the server, disable all the plugins as usual, and back to the game. Well, after renaming both all-in-one-wp-security-and-firewall and all plugins at /var/www/html/wp-content/plugins/, I’m still getting 403. Usually all the plugin related issue got solved at this step without needing to restart service, I’m not sure why this time it didn’t work.

So I start to Google something like AIOS self lockout, trying to find where does it store the blacklist that I can quickly manually edit by command line. No luck.

I tried to disable cloudflare proxy at cloudflare dashboard, no luck. And I’m too lazy to switch DNS provider back to where I was using before.

I started to poke around more in the plugin’s folder, and eventually found the file that did the trick: /var/www/html/wp-content/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-locked-ip.php.Seems like the IPs are stored at a table called AIOWPSEC_TBL_PERM_BLOCK. I just commented out the entire line here in the prepare_items() function. Refresh, back online, removed the IP range from blacklist, uncomment the line.

So, that was just a small stupid incident on a random Thursday night 9pm before a trip. 乁། * ❛ ͟ʖ ❛ * །ㄏ


If you find this blog useful and want to support my blog, feel free to:

Become a Patron!

真•小白友好美国理财 101 第二版

我之前随手写过一篇(懒惰的)在美国年轻人的第一份理财计划,没想到后来流传还挺广的。但是也有很多朋友先像我反映其中一些概念和用词还是不够小白友好,对没有理财基础的人来说看起来很费劲。一翻那篇文章发现已经过去 3 年了,市场环境和我自己的理财观念(并没有)也早已有了很大的变化,因此觉得是时候再写一篇真·小白友好的美国理财 101 了。

本文是 9 月 patreon 金主们票选出来的内容,也是在我 restructure patreon 会员福利(没错,我搞了一些 pay to win 的无耻氪金玩法)之后的第一期,非常恰好地投票就平票了(另一个选项是时间管理系统,我也挺想写的,说不定哪天就自己写了),又非常恰好的投票的金主中有两位有双倍计票的特权,因此加权之后本文力压时间管理方法那篇胜出。夏天过去了,十月选一些居家话题,欢迎金主们踊跃投票

  • 恢复独居渐入佳境的中年社畜健康习惯
  • 割以永治——我跟月经战斗的二十年
  • 厨渣的吃饭糊弄学
  • 提升生活质量的居家小物
Continue Reading

高效、async 的信息流才是好的信息流:我的 RSS setup

简单来说,RSS 是一个内容生产规范,使阅读者可以跨平台、无干扰地在自己选择的阅读器上阅读各个订阅源集成、统一的内容,而无需专门去发布平台(各个播客、新闻网站、社交媒体、email newsletter 等) 查看。

像我一样从 RSS 盛行年代的过来的网民可能会把很多 RSS 带来的好处 take for granted,而这个流量至上的年代很多内容生产者会以其他不提供原生 RSS 支持的方式创作内容(mail list, notion, telegram channel,social platform post 等等),造成对习惯了 RSS 的读者而言 aggregation 困难和信息摄入效率低下,以至于这个无利可图的形式在跟很多新朋友提起都有点难以安利出去。

我在之前的一篇如何利用 Zapier 给 notion blog 生成 RSS feed 的教程里提到过 RSS 在现在这个年代对阅读者和创作者都仍有许多优势:

  • 没有平台插入的、伪装成用户内容的广告
  • 无需担心平台自作聪明的算法干扰导致你不在第一时间阅读 post 就错过内容
  • 因为是生成一个标准规范的静态 feed 阅读而非直接访问对方网站所以像广播一样不可追踪
  • 可以自选阅读器来控制阅读体验(界面、分类等)
  • 创作者的内容更有机会被读者看到,而非被第三方平台算法裹挟
  • 创作者的服务器压力更小,因为阅读器通常会在本地缓存一个版本,而无需每个读者都单独访问

了解了 RSS 是什么和其优势之后,另一个阻碍新用户的门槛往往是无从下手。第三方社交平台可以给新用户推送 influencer 来平缓地 cold start,但 RSS 这种完全依赖订阅源的形式,即便很多阅读器能推荐 feeds to follow,但往往只有大媒体和非常有名的 post 才会被推送,少了许多 personal touch。本文旨在分享我自己的 RSS setup 来帮助没有接触过 RSS 的朋友快速入坑。

本文是 8 月 patreon 金主们票选出来的内容(我竟然在月内完成了我好骄傲)。欢迎大家点进 9 月的投票选择下个月的博客

Continue Reading

美国码农前半段职业发展道路(career ladder)

很多自己经历过的东西觉得是常识,但偶尔被问起才会发现除了部分特别积极寻找这些信息有特别明确的职业发展目标的人之外,很多人对这方面的信息还是一知半解。我一直觉得提前过度 over optimize 不是什么好事,毕竟计划赶不上变化很多时候人生道路职业发展要看运气和很多个人掌控之外的东西,但是如果不把所谓的走直线或者标准路线当作主要目标和压力来源的话,随便看大致有个了解也好,也可以省去一些不必要的焦虑和被公司/老板 gaslight。

因为不是很想写这个无聊的话题所以这个七月的 patreon 选出来的命题拖到现在才写,谁让我提供了这个选项给自己挖了这个坑呢。八月坚决不给自己挖这个坑了,来一些 fun topic 欢迎大家投票:

  • 高效、async 的信息流才是好的信息流:我的 RSS setup
  • Summer of Gaming:最近我在玩什么游戏
  • 恢复独居渐入佳境的中年社畜健康习惯
  • 我看过的流媒体脱口秀 tier list
Continue Reading

如何制作一款简单的 chrome 插件

短短几年时间,Chrome 作为一款在主流桌面操作系统(Windows,Mac)不内置的第三方浏览器,短短几年时间击败了所有竞争对手,以压倒性优势 67% 的市场份额稳居桌面端浏览器头把交椅。虽然近年来对其隐私方面顾虑层出不穷,一些 power user 也会试图寻找替代品(Brave,Duckduckgo 之类),但对于绝大多数网民来说还是浏览器的默认选择。

在前端技术越来强大的今天,普通 desktop 用户很多客户端操作都能被网页版替代。拥有庞大的潜在客户群,javascript 上手难度低,浏览器作为运行环境无需担心与系统交互与测试,有 chrome store 管理分发,安装过程也比客户端简单很多,chrome extension(插件)就成了一个对开发者和使用者都轻量、便捷的实用平台。

与此同时,chrome 插件的使用门槛也比让看到代码就头大的用户自己安装油猴 script 低很多,就像跟人安利 app 直接甩 play store 链接肯定比让人下载 apk 容易一样。还有同步的便利(我收到过好几次“为什么不写成油猴 script”的评论……代码就开源在那里,不想走 chrome store 且会用 script 的自然可以去用 script 嘛,反之 store 用户又不能从油猴 script 里轻易变出一个能同步的插件)。

这是拖后了半个月的作业六月 patreon 博客票选胜出的命题(说实话我完全没想到会有这么多人想看开发相关,论我的读者到底有多少码农)。欢迎金主们去七月的投票选出接下来的命题:

  • 我的信息摄取探索 2.0
  • 老年码农合理摸鱼经验总结
  • 非程序员掌握了也很有用的小 hack
  • 美国码农前半段职业发展道路(career ladder)

其实我不知道为什么大家会选这个主题,因为 Chrome 官方的 Developer Guide 写的还蛮清楚的,也给了现成的例子可以抄。不过既然金主们投了,我就来试图给平时不那么经常写程序,但是对自己开发插件有点兴趣的朋友们 TLDR 一下,用我写过的一个简单插件做为例子手把手走一遍开发简单 chrome 插件的过程。

Continue Reading