Cloudflare IP地址范围

如果网站套了cloudflare,可以将cloudflare的IP地址加入防火墙白名单,防止被防火墙拦截。

Cloudflare IP地址范围为

IPv4:

173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/13
104.24.0.0/14
172.64.0.0/13
131.0.72.0/22

将上述IP转换为IP段,即:

173.245.48.0 ~ 173.245.63.255
103.21.244.0 ~ 103.21.247.255
103.22.200.0 ~ 103.22.200.203.255
103.31.4.0 ~ 103.31.7.255
141.101.64.0 ~ 141.101.127.255
108.162.192.0 ~ 108.162.255.255
190.93.240.0 ~ 190.93.255.255
188.114.96.0 ~ 188.114.111.255
188.114.96.0 ~ 188.114.243.255
198.41.128.0 ~ 198.41.255.255
162.158.0.0 ~ 162.159.255.255
104.16.0.0 ~ 104.23.255.255
104.24.0.0 ~ 104.27.255.255
172.64.0.0 ~ 172.71.255.255
131.0.72.0 ~ 131.0.75.255

IPv6:

2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32

Cloudflare最新IP地址:https://www.cloudflare.com/zh-cn/ips/

IP地址写法及十进制与二进制

转载自51cto,原文链接在文章结尾处。

IP地址是一个32位的二进制数,通常被分割为4个“8位 二进制数”(也就是4个字节)。IP地址通常用“ 点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。

继续阅读

开源的图床程序收集整理

1. 兰空图床 lsky-pro

项目地址:https://github.com/wisp-x/lsky-pro

  •  支持第三方云储存,本地、阿里云 OSS、腾讯云 COS、七牛云、又拍云、FTP
  •  多图上传、拖拽上传、粘贴上传、上传预览、全屏预览、页面响应式布局
  •  简洁的图片管理功能,支持鼠标右键、单选多选、重命名等操作
  •  全局配置用户初始剩余储存空间、设置指定用户剩余储存空间
  •  一键复制图片外链、二维码扫描链接、图片鉴黄功能
  •  设置上传文件、文件夹路径命名规则、文件夹分类功能
  •  接口上传、图片软删除
  •  OTA 在线升级系统
  •  (Dark)暗黑主题
  •  IP 封禁功能(支持通配符)
  •  自定义链接参数
  •  单用户模式
  •  图片广场(画廊)
  •  上传图片自动增加水印(支持图片或文字)

2. Chevereto

官网:https://chevereto.com/

免费版项目地址:https://github.com/rodber/chevereto-free

有收费版和免费版,功能强大。

3. PicUploader

项目地址:https://github.com/xiebruce/PicUploader

  • 支持Mac和Windows(也可用于Linux服务器端)、理论上也支持Linux桌面版,只要你能添加右键菜单或者用快捷键调用上传命令的话;
  • 支持图片压缩后上传(支持jpg/png/webp,gif/bmp不支持压缩);
  • 支持添加水印后上传(支持文字水印、图片水印、自定义水印颜色/透明度/角度/位置,支持jpg/png/bmp/webp,gif不支持水印);
  • 返回的链接可自定义(如原始链接、Markdown格式链接、可点击的Markdown格式链接、完全自定义的链接);
  • 完全自定义上传文件名(可选变量有当前年、月、日、当前时间戳,随机字符串(可调长度));
  • 上传过的文件直接返回历史记录(防止重复上传,仅限在不添加水印不压缩的情况下);
  • 可作为MWeb/Typora的API使用,可作为PicGo/ShareX/uPic等的自定义图床使用;
  • 支持快捷键上传剪贴板中的图片(配合Alfred/WinHotKey使用);
  • 支持Web端拖放、粘贴、或直接选择上传图片;
  • 支持Web端设置所有参数;
  • 支持上传任意格式文件(除了图片,还可以上传任意格式文件,只要你的存储端支持就行);
  • 目前支持的图床:七牛、腾讯、网易、百度、京东、阿里、又拍、sm.ms、Imgur、Ucloud、青云、Nextcloud、Github、Gitee(码云)、Cloudinary、Chevereto、Minio、Aws s3、金山、华为、DropBox、OneDrive、GoogleDrive、Azure、Gitlab、图速云、个人服务器(sftp)、本地(即PicUploader所在机器)。
  • 注:之前支持的coding.net由于封了token方式授权的接口,所以现在暂时不支持coding.net。

4. PicGo

项目地址:https://github.com/Molunerfinn/PicGo

github上star的人很多的一款图床。

PicGo 本体支持如下图床:

  • 七牛图床 v1.0
  • 腾讯云 COS v4\v5 版本 v1.1 & v1.5.0
  • 又拍云 v1.2.0
  • GitHub v1.5.0
  • SM.MS V2 v2.3.0-beta.0
  • 阿里云 OSS v1.6.0
  • Imgur v1.6.0

特色功能:

  • 支持拖拽图片上传
  • 支持快捷键上传剪贴板里第一张图片
  • Windows 和 macOS 支持右键图片文件通过菜单上传 (v2.1.0+)
  • 上传图片后自动复制链接到剪贴板
  • 支持自定义复制到剪贴板的链接格式
  • 支持修改快捷键,默认快速上传快捷键:command+shift+p(macOS)| control+shift+p(Windows\Linux)
  • 支持插件系统,已有插件支持 Gitee、青云等第三方图床
    • 更多第三方插件以及使用了 PicGo 底层的应用可以在 Awesome-PicGo 找到。欢迎贡献!
  • 支持通过发送 HTTP 请求调用 PicGo 上传(v2.2.0+)

5. imgurl

项目地址:https://github.com/helloxz/imgurl

作者已经很久没有更新了。

  • 支持拽拖上传、多图上传、Ctrl + V粘贴上传、URL上传
  •  支持图片裁剪,自动生成缩略图
  •  限制访客上传数量
  •  图片压缩/批量压缩
  •  图片鉴黄/批量鉴黄
  •  API支持
  •  在线更新
  •  外部存储

6. EasyImage 简单图床

项目地址:https://github.com/icret/EasyImages2.0

  • 支持仅登录后上传
  •  支持设置图片质量
  •  支持上传图片转换为指定格式
  •  支持文字/图片水印
  •  支持设置图片指定宽/高
  •  支持限制最低宽度/高度上传
  •  支持设置广告
  •  图片监黄
  •  支持开启/关闭api上传
  •  在线管理图片(增、删、改、查)
  •  支持网站统计 请将统计代码放入:public/static/hm.js
  •  更多·····

网盘挂载目录列表程序收集整理

收集整理常用的网盘目录列表程序。

平时常用的网盘有:微软OneDrive,Google Drive,阿里云盘,天翼云盘,等等。

1. Sharelist

项目地址:https://github.com/reruin/sharelist

支持Google Drive、 OneDrive 国际版 、 OneDrive世纪互联版 、 天翼云盘、阿里云盘、GitHub、蓝奏云、h5ai、WebDAV 等,支持插件拓展,提供虚拟目录、流量中转、负载均衡等多种功能;

支持Docker、Heroku。

说明文档:https://reruin.github.io/sharelist/docs/#/zh-cn/

安装参考:https://www.daniao.org/9004.html

2. OneManager

项目地址: https://github.com/qkqpttgf/OneManager-php

支持Onedrive、阿里网盘、Google Drive等网盘,可以直接在线预览图片、在线播放视频,也可以对文件夹或者目录设置密码,限制共享权限。

可以安装在任意PHP空间上,支持Heroku、Vercel、腾讯无服务器云函数、华为云函数工作流、阿里云函数计算、百度云函数计算。

安装参考:https://wzfou.com/onemanager/

3. ZFile

项目地址: https://github.com/zhaojun1998/zfile

基于 Java 的在线网盘程序,支持对接 S3、OneDrive、SharePoint、又拍云、本地存储、FTP 等存储源,支持在线浏览图片、播放音视频,文本文件等文件类型。

4. Cloudreve

项目地址: https://github.com/cloudreve/Cloudreve

官网: https://cloudreve.org/

支持本机、从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDrive (包括世纪互联版) 作为存储端。

5. CTList

地址:https://www.moerats.com/archives/1028/

貌似已经删了。

一个可以绑定多个天翼云网盘的目录列表程序,支持视频播放。

6. Alist

项目地址:https://github.com/Xhofe/alist/

一款阿里云网盘的目录文件列表程序,后端基于golang最好的http框架gin,前端使用vue和ant design。
更新:Alist已经支持多种网盘

Alist已被卖,建议用Openlist代替https://github.com/OpenListTeam/OpenList

说明文档:https://alist-doc.nn.ci/docs/intro

安装:https://www.nn.ci/archives/alist.html

本地存储

阿里云盘

OneDrive / Sharepoint(国际版, 世纪互联,de,us)

天翼云盘

GoogleDrive

123云盘

蓝奏云

Alist

FTP

PikPak

闪电盘

S3

WebDav

wordpress批量删除指定分类所有文章

文章数量不多,可以直接后台手动删除,如果数量很多,需要执行SQL:

delete
from
wp_posts
using
wp_posts,
wp_term_relationships,
wp_term_taxonomy
where
wp_posts.id = wp_term_relationships.object_id
and
wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
and
wp_term_relationships.term_taxonomy_id = 18(分类ID)

如果还需删除分类:

delete FROM `wp_term_relationships` where term_taxonomy_id = 18(分类ID)

如果需要删除指定post_type所有文章,执行:

DELETE FROM wp_posts WHERE post_type='post_type';
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT id FROM wp_posts);
DELETE FROM wp_term_relationships WHERE object_id NOT IN (SELECT id FROM wp_posts)

另外,update更新内容的用法:

UPDATE wp_posts SET post_content = replace( post_content, '原内容','新内容') WHERE option_name = 'home' OR option_name ='siteurl';

wordpress自动给旧文章生成别名

用wordpress遇到一个需求,需要重新修改网站固定连接格式,以前是以post id为url,现在需要修改为别名。

为了不影响原来的post的url结构,需要给原来的post批量生成别名,即slug_name=post_id

有以下几种方法。

注意,如果是安装了Opcache和Memcached缓存扩展,更新文章url结构后,一定要刷新下缓存。

方法一:在模板函数 functions.php 文件中添加代码实现批量修改旧文章别名

使用方法:将下边的代码添加到到当前主题目录下 functions.php 文件,在php结束标记 ?> 前 即可。

// 修改WordPress旧文章别名为文章IDfunction Bing_post_name_id(){query_posts( 'posts_per_page=-1' );while( have_posts() ){the_post();$post_id = $GLOBALS['post']->ID;wp_update_post( array('ID' => $post_id,'post_name' => $post_id) );}wp_reset_query();}if( $_GET['post_name_id'] == 'yes' ) add_action( 'init', 'Bing_post_name_id' );

放置好代码后,访问一下下边的网站,注意替换成你的域名,访问前注意一定要备份数据,以免出错。

http://www.aszhi.com?post_name_id=yes

文章多的话网页加载会比较慢,因为正在一篇文章一篇文章的修改别名,要耐心等到网页完全加载好才可以。

PS:加载好后,删除之前添加的代码,修改完成,所有文章的别名都会变成自身的ID。

方法二:在配置文件 wp-config.php 中添加代码实现批量修改旧文章别名

使用方法:将下面的代码添加到网站 根目录的 wp-config.php 的最底部,保存后,访问一次网站首页(你将看到浏览器一直都在努力打开网页,不要急,耐心等待,直到网页真正打开,所需时间看文章数和网络情况而定)。等网页打开后,删除刚刚添加到 wp-config.php 的代码!(删除代码是为了防止下次打开网站首页缓慢的情况发生)

/** 批量更改旧文章的别名为文章ID */// 添加一个变量来包容文章标题数组,防止重复操作$slug_done = array();// 查询所有文章$posts = $wpdb->get_results( "SELECT`ID`,`post_title`FROM`" . $wpdb->posts . "`WHERE`post_type` = 'post'" );// 输出文章foreach( $posts AS $single ) {$this_slug = $single->ID;$slug_done[] = $this_slug;// 使用文章ID替换文章原来的别名$wpdb->query( "UPDATE`" . $wpdb->posts . "`SET`post_name` = '" . $this_slug . "'WHERE`ID` = '" . $single->ID . "'LIMIT 1" );}

方法三:直接替换SQL数据库里的 post_name 字段的方法

进入 mysql 命令【 选择你所创建的数据库的命令:mysql> USE MYSQLDATA; (注:MYSQLDATA是数据库的名称。按回车键出现 Database changed 时说明操作成功!) 】或者 phpmyadmin 的 SQL (登录后打开数据库管理系统,找到网站对应的wordpress数据库,点击后,在上方有个SQL按钮) ,执行如下SQL命令修改即可:

update wp_posts set post_name=ID where post_status='publish' and post_type='post';

PS:wp_posts 是 WordPress 的文章数据表,wp_ 是默认的前缀,如果自定义更改过,请根据实际修改即可。

方法四:使用新建一个 PHP 文件批量修改旧文章别名

操作方法:将以下代码保存为 php 文件,比如 uppostname.php,并上传到网站根目录,执行即可,成功后记得删除!

<?php/*** 将所以已发布的文章别名修改成对应ID,让文章以别名完美连续* PS:备份网站数据库后,请放到WordPress根目录执行,成功后请记得删除!**/require('./wp-blog-header.php');global $wpdb;$wpdb->query("UPDATE $wpdb->posts SET post_name = ID WHERE post_status = 'publish' AND post_type = 'post'");echo 'Update Success!';?>

任选其中一种方法,成功执行之后,你之前发布的文章的别名就全部变成了对应的 ID 了!

新文章自动使用文章ID作为文章的别名的方法,看之前的文章:

继续阅读

details和summary标签实现折叠效果

多层折叠:

<details>
          <summary>Season1</summary>
              <details>
                <summary>Episode1</summary>
                <p>剧情简介</p>
              </details>
            <details>
              <summary>Episode2</summary>
              <p>剧情2</p>
            </details>
			
		  <summary>Season2</summary>
              <details>
                <summary>Episode1</summary>
                <p>剧情简介</p>
              </details>
            <details>
              <summary>Episode2</summary>
              <p>剧情2</p>
            </details>
</details>

单层折叠:



<details>
          <summary>目录1</summary>
          <p>内容</p>
</details>

免费的网站uptime监控工具

记得我很早以前是用pingdom来监控网站uptime,现在收费了,很少用了,现在大家用的多主要有下面三款:

  1. UptimeRobot
    网站:https://uptimerobot.com/
    应该是用户量最多的uptime监控了吧,以前免费版还可以绑定自定义域名status page,现在不行了,不过也足够用了。
    免费版监控额度:
    Uptime Monitoring 50个
    每5分钟监控一次
  2. HetrixTools
    网站:https://hetrixtools.com/
    功能强大,多种通知方式。
    免费版额度:
    Uptime Monitoring 15个
    Blacklist Monitoring 32个
    最低1分钟监控一次
  3. Uptime Kuma
    地址:https://github.com/louislam/uptime-kuma
    免费开源。
  4. Zabbix
    网站:https://www.zabbix.com/
    免费开源,功能强大,专业!
  5. Nagios
    同样免费开源,不过部署相对较复杂。

2022.12.13日新增:

Prometheus + Grafana

Prometheus 是服务器监控系统的后起之秀,可以和 Kubernetes 完美结合用于监控大量集群和应用。Grafana 是一款数据可视化看板,可指定多个数据源执行查询,将枯燥的数据转化为多维度的面板。两者均为开源项目,通过配置可实现直观强大的监控、报警、分析系统,实属运维神器。

配置参考:

https://yunlzheng.gitbook.io/prometheus-book/

https://learnku.com/articles/22193

https://www.iuskye.com/2021/03/30/prom-s1.html

找出服务器硬盘空间被大量占用的真凶

1、mysql-bin文件

有一台服务器,今天登录上去一看,发现硬盘空间突然被大量占用了。之前只用了不到8G,今天发现陡增到38G,足足多了30G。

先用以下命令,依次查看硬盘占用前5的文件夹:

du -hm / --max-depth=1 | sort -nr | head -5

du -hm /xxxdir --max-depth=1 | sort -nr | head -5

最后发现是/www/server/data目录下,有很多mysql-bin-000000 数字文件,每个文件大小1G,合在一起占用了产不多30G空间。

在MySQL数据库中,mysql-bin.000001、mysql- bin.000002等文件是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。

这样做的目的是为了数据库恢复,或者主从服务器之间同步数据。

我不需要,所以直接注释掉数据库配置文件my.cnf中以下一行即可:

# log-bin=mysql-bin

删除所有 mysql-bin.00000 文件,重启mysql。

updtae:最好不要直接删除mysql-bin.文件,找到英文的解释。

简单来说是:不要直接删除,用mysqld来删除,可以通过修改/etc/my.cnf来设置数据库日志保存时间。

Please do not just delete them in the OS.

You need to let mysqld do that for you. Here is how mysqld manages it:

The file mysql-bin.[index] keeps a list of all binary logs mysqld has generated and auto-rotated. The mechanisms for cleaning out the binlogs in conjunction with mysql-bin.[index] are:

PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';

These will clear all binary logs before the binlog or timestamp you just specified.

For example, if you run

PURGE BINARY LOGS TO 'mysql-bin.000223';

this will erase all binary logs before mysql-bin.000223.

If you run

PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY) + INTERVAL 0 SECOND;

this will erase all binary logs before midnight 3 days ago.

If you want to have binlog rotated away automatically and keep 3 days woth, simply set this:

mysql> SET GLOBAL expire_logs_days = 3;

then add this to /etc/my.cnf

[mysqld]
expire_logs_days=3

and mysqld will delete them logs for you

2、var/log/journal日志文件

系统日志文件,也会占用越来越多的系统空间。

清理所有日志,但是保留最近3天的:

sudo journalctl --vacuum-time=3d

设定journal日志文件不超过100M:

sudo journalctl --vacuum-size=100M

这样就不需要经常清理journal日志了。

update: 早上起来,发现硬盘空间又多了4G,真头疼,继续找。。。

这次发现是/www/server/data/168itw.com目录下wp_wpr_rucss_resources.ibd和 wp_wpr_rucss_unused.ibd两个文件占用了几个G,而且 wp_wpr_rucss_unused.ibd还在一直增大。

Google看到这篇文章:

https://stackoverflow.com/questions/68347966/wp-wpr-rucss-resources-table-with-huge-size

原来是wordpress插件wp rocket惹的祸,不要勾选插件中Optimize CSS delivery选项,保存。

删除上述两个文件,删除数据库中的这两个table。搞定!

文章参考:https://blog.51cto.com/6226001001/1597205

感谢hostloc大佬提供查看命令帮助。