国内WordPress启用谷歌验证码(noCaptcha )

众所周知,noCaptcha 的验证接口和css是被屏蔽的,所以可以使用 recaptcha.net 这个google在国内的域名。想着有轮子绝不撸代码的想法,试了几款插件,找到一款对代码修改最小的插件(或者直接不用修改,我目前使用的这款主题需要手动修改)。 1、安装插件 https://cn.wordpress.org/plugins/advanced-nocaptcha-recaptcha/ 2、启用并设置插件 注册 recaptcha 秘钥。https://www.google.com/recaptcha/admin/ 3、修改主题代码(可选) 同理,如果评论的时候没有进行验证,提交没有显示错误信息,那么只需要对提交评论的 g-recaptcha-response 字段就行判断一下就可以了。 每款主题的输错错误方式不一样,所以自己修改~ 同时还需要添加验证代码 1 2 anr_verify_captcha() 成功时返回值为true,否则为false。

2021年3月1日 · 1 分钟 · 浅忆

Spring Boot 通过SMTP发送电子邮件(ssl/tls)

使用的技术: Spring Boot 2.3.2 Java Mail 1.6.2 Maven 3 Java 8 1、添加依赖 1 spring-boot-starter-mail 1 2 3 4 5 <!-- send email --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 2、配置 application.properties 这里得注意下了,除了邮件服务商说明同时支持tls或者ssl,否则需要将tls/ssl分开配置 ,这里我使用得是outlook,所以只支持 tls 587端口,一开始我配置成ssl,走了一个坑。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=username spring.mail.password=password # Other properties spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.connectiontimeout=5000 spring.mail.properties.mail.smtp.timeout=5000 spring.mail.properties.mail.smtp.writetimeout=5000 # 这里是tls的配置项,如果没有使用587,则要注释掉 # TLS , port 587 spring.mail.properties.mail.smtp.starttls.enable=true # 这里是ssl的配置项,如果没有使用465,则要注释掉 # SSL, post 465 #spring.mail.properties.mail.smtp.socketFactory.port = 465 #spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory 1 2 3 4 5 6 7 8 如果是这个错误,那么就是你把tls/ssl的配置弄反了。 nested exception is: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?. Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.com, port: 587; nested exception is: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?; message exceptions (1) are: Failed message 1: javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.com, port: 587; nested exception is: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?] with root cause 3、发送文本邮件 1 2 3 4 5 6 7 8 9 10 11 import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; @Autowired private JavaMailSender javaMailSender; void sendEmail() { SimpleMailMessage msg = new SimpleMailMessage(); msg.setTo("to_1@gmail.com", "to_2@gmail.com", "to_3@yahoo.com"); msg.setSubject("Testing from Spring Boot"); msg.setText("Hello World \n Spring Boot Email"); javaMailSender.send(msg); } 4、发送html格式的邮件 1 2 3 4 5 6 7 8 9 10 @GetMapping("sendMail") void sendMain() throws MessagingException { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true); message.setFrom("浅忆博客(系统)<server@curlc.com>"); message.setTo("xxxxx@qq.com"); message.setSubject("HTML邮件"); message.setText("<h1>Check attachment for image!</h1>", true); mailSender.send(mimeMessage); } 5、发送HTML电子邮件和文件附件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import org.springframework.core.io.ClassPathResource; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; void sendEmailWithAttachment() throws MessagingException, IOException { MimeMessage msg = javaMailSender.createMimeMessage(); // true = multipart message MimeMessageHelper helper = new MimeMessageHelper(msg, true); helper.setTo("to_@email"); helper.setSubject("Testing from Spring Boot"); // default = text/plain //helper.setText("Check attachment for image!"); // true = text/html helper.setText("<h1>Check attachment for image!</h1>", true); // hard coded a file path //FileSystemResource file = new FileSystemResource(new File("path/android.png")); helper.addAttachment("my_photo.png", new ClassPathResource("android.png")); javaMailSender.send(msg); } ...

2021年2月17日 · 2 分钟 · 浅忆

吐槽下贵州电信宽带公网IP问题

背景 自从贵州在搞大数据后,大概在18年还是17年底,贵州电信就回收了所有的家庭公网ip,当时我家里宽带的也被回收了,刚了2天,贵州电信一直把这个责任推给办宽带的营业厅和安装师傅,我所在的地区欠发达,人家安装师傅和营业厅工作人员也不知道怎么弄,一直好言好语给我打了好几次电话,最后成功拿到公网IP最关键的一句话是“以前我的宽带都有公网IP”,我就让安装师傅就把问题再反馈到上一级,后面机房的人给我打电话说弄好了,重启光猫后确实有公网了(中间有变成内网过1次,又是刚了2天)。 2021-02-16 我在贵阳又办了一根千兆的宽带,可笑的是千兆上传还是30Mbps(这30Mbps还是当年工信部强制出了个文件,才开始从20Mbps升级到30Mbps),光猫也不给万兆或者2.5G光猫,速度也不达标(白天还好,能跑930Mbps,晚上高峰期就只有650Mbps了),公网ip?更别想了,客服回复永远只有这几句话 目前暂未提供IP地址更改服务 目前我公司提供的IP地址多数都是100开头的,只要您能正常登录QQ、访问网站,即表示宽带网络正常。同时IP地址是我公司宽带接入服务器动态分配的,暂未提供IP地址更改服务。 所以现在是bt下载没速度,NAS不能玩,为了所谓的大数据把ip资源给某些公司,不得已去华为云买了台贵阳地区5Mpbs 的vps做内网穿透,把摄像头和NAS映射出去,延迟倒是和内网一样,但是5Mbps的上传能做啥,卡的一批。不过有点欣慰的是可能也知道回收公网IP 搞得大家都不高兴,IPV6推进倒是蛮快得,电信和联通都分配了/60 的ipv6(手机数据也给了),但现在v6的路由瞎跳,开了反而影响正常上网,哎…… 2021-2-20 09:30: 昨天投诉后,10000号回访,说ip资源有限,无法给新用户公网ip,老用户可以ip回退,说到要工信部投诉,回复是“这是您的权益”,看来真的挺刚的…… 中间我打4008810000投诉过当地电信,然而更牛,直接说这是业务问题,请打10000号,然后直接挂了,这个投诉电话也是摆设?emm……???要是有用我打这个投诉电话做啥???我投诉当地电信居然说这是业务问题,又推给10000号?真的把我气笑了。 然而又能怎么办呢,只能将就用ipv6了,不过对这贵州电信真的是一生黑,过段时间携号转网了…… 附图 这里借用这个链接的图片,我问的回答也是一样的 https://zhidao.baidu.com/question/1772589045169142300.html 收集关于贵州电信公网IP的链接: https://tieba.baidu.com/p/6112677755

2021年2月16日 · 1 分钟 · 浅忆

PVE 常用命令

将lvm转换为qcow2 1 qemu-img convert -O qcow2 -c /dev/mapper/pve-vm--103--disk--1 13103.qcow2 将备份后的vma转为qcow2(备份时选择不压缩,得到vma文件,再解压,再转换为qcow2,文件比较大) 1 2 3 4 vma extract vzdump-qemu-100-2019_01_31-13_11_02.vma temp/ qemu-img convert -f raw temp/disk-drive-scsi0.raw -O qcow2 myvm-disk1.qcow2 #如果需要esxi导入则需要加水-o参数 qemu-img convert -f raw temp/disk-drive-ide0.raw -o adapter_type=lsilogic,subformat=streamOptimized,compat6 -O vmdk 100.vmdk 直通 1 qm set 100 -sata0 /dev/disk/by-id/ata-Colorful_xxxxxxxxxxxxxxxxxxx

2021年2月5日 · 1 分钟 · 浅忆

IKOULA C-StorageII 5折机器

前几天IKOULA 5折活动就上了这款机器,12.99欧的样子,蛮不错的~ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ---------------------------------------------------------------------- CPU Model : Intel(R) Xeon(R) CPU E31220 [url=home.php?mod=space&uid=175]@[/url] 3.10GHz CPU Cores : 4 CPU Frequency : 2530.147 MHz CPU Cache : 8192 KB Total Disk : 3687.4 GB (3.0 GB Used) Total Mem : 7946 MB (836 MB Used) Total Swap : 1023 MB (0 MB Used) System uptime : 0 days, 0 hour 2 min Load average : 0.44, 0.25, 0.10 OS : Debian GNU/Linux 9 Arch : x86_64 (64 Bit) Kernel : 4.15.18-30-pve TCP CC : cubic Virtualization : Dedicated Organization : AS21409 Ikoula Net SAS Location : Paris / FR Region : Île-de-France ---------------------------------------------------------------------- I/O Speed(1st run) : 179 MB/s I/O Speed(2nd run) : 177 MB/s I/O Speed(3rd run) : 173 MB/s Average I/O speed : 176.3 MB/s ---------------------------------------------------------------------- Node Name Upload Speed Download Speed Latency Speedtest.net 939.86 Mbps 940.75 Mbps 3.06 ms Beijing CU 413.42 Mbps 659.80 Mbps 222.46 ms Shanghai CT 0.51 Mbps 450.41 Mbps 211.26 ms Guangzhou CT 2.32 Mbps 13.37 Mbps 227.53 ms Guangzhou CU 0.28 Mbps 255.96 Mbps 300.72 ms Shenzhen CU 0.53 Mbps 856.65 Mbps 191.32 ms Hongkong CN 372.65 Mbps 906.42 Mbps 193.00 ms Singapore SG 0.94 Mbps 748.87 Mbps 249.70 ms Tokyo JP 101.93 Mbps 2.91 Mbps 215.84 ms --------------------------------------------------------------------- 硬盘是新的~ ...

2021年2月2日 · 2 分钟 · 浅忆

cloudflare(cf) ssl 无法部署的一个问题

背景 前几天由于云筏那里把我的域名从cf处删除后,导致解析全部回源,ssl证书异常! 后来用了ion的cfp版本,但是ssl一直处于 待颁发(错误) 状态,将鼠标移到三角感叹号出发现报错 caa error: xxx.x 这才想起申请let’s 通配符证书时加了CAA记录 1 0 issue "letsencrypt.org" 解决方法 所以这里有2种处理方法 将 let’s 的caa 记录删掉 或者将cf的证书颁发机构也加入CAA 0 issue “digicert.com” CAA:允许域所有者指示允许哪些CA为其颁发证书。 所以加了let’s 的CAA记录就会导致其他的CA颁发证书失败,这个时候就需要将带颁发的CA加入CAA。

2021年1月6日 · 1 分钟 · 浅忆

关于OVH或SYS(soyoustart)能不能做邮件服务器问题

老早就想知道了,问了论坛没啥回应,今天就去翻了下sys的tos,其中 https://www.soyoustart.com/ie/termsofservice/version/Special_Conditions_for_So_You_Start_Dedicated_Server_2013-12-05.pdf 第七条就是关于邮件的,机翻如下 1 2 3 4 5 6 7 8 9 10 11 12 13 第7条:防止供应商网络发送垃圾邮件的措施供应商应实施技术措施体系,以防止从其基础设施中发送欺诈性电子邮件和垃圾邮件。 供应商应监视从服务器到互联网上端口25(SMTP服务器)的传出流量,这应包括通过自动工具监视流量。 供应商不得对流出的流量进行过滤或拦截,而应延迟几秒钟。 这些操作应由供应商在服务器和互联网之间并行进行。 对已发送的电子邮件不执行任何操作。 供应商不得对电子邮件进行任何标记,也不得以任何方式修改客户发送的电子邮件。 在供应商进行这些操作期间,除统计数据外,不得存储任何信息。 该操作应由供应商定期且以全自动方式进行,并且客户确认在监视端口25(SMTP端口)的流量期间不涉及人工干预。 如果来自客户服务器的外发流量(包括电子邮件)被识别为垃圾邮件或欺诈性电子邮件,则供应商应通过电子邮件通知客户并阻止服务器的SMTP端口。 即使服务器被识别为垃圾邮件,供应商也不应保留从服务器SMTP端口发送的电子邮件的任何副本。 客户必须通过“开始使用技术协助”请求解除SMTP端口的阻塞。 任何被识别为垃圾邮件的新电子邮件都将导致供应商较长时间重新封锁SMTP端口,具体取决于供应商的合理判断。 如果发生供应商第三次阻塞SMTP端口的情况,则供应商保留拒绝取消SMTP端口的任何新请求的权利。 大概意思是可以做邮件服务器,但是不得发送垃圾邮件,ovh不会保存邮件副本也不会标记,但是如果被程序识别到垃圾邮件会封禁25端口,需要工单解封,超过3次则永久关闭25端口。

2020年12月10日 · 1 分钟 · 浅忆

Angular9 HttpClient设置参数无效问题

初步学习Angular9,在httpclient模块栽了半天。根据官方文档设置ur居然是无效的,比如 1 2 let httpParams = new HttpParams().set('code', 'aaaa');//可以成功设置code httpParams.set('state', 'ccccc'); // 无法设置state 看了stackoverflow的回答后才知道 HttpParams旨在是不可变的。该set和append方法不修改现有的实例。相反,它们返回新实例并应用更改。 所以这里有两种方案: 1、使用 fromString 变量从查询字符串中直接创建 HTTP 参数 1 2 3 4 5 const data = { code: this.subInfo.code, state: this.subInfo.state }; const httpParams = new HttpParams({fromObject: data}); 2、直接传递对象而不是HttpParams 1 http.get(url, {params: data}) 所以直接是用方法2了~ 参考文章: https://stackoverflow.com/questions/45210406/angular-4-3-httpclient-set-params

2020年12月9日 · 1 分钟 · 浅忆

elasticsearch 使用BulkProcessor导入txt大文件

最近在学es,需要导入8亿条数据 手上有一个txt大约有8亿条数据的样子,文件有19G左右,一开始百度搜了下,基本都是重复文章,不过也根据写这些文章的大佬慢慢google到了一些方法。 先说下导入机器配置: cpu: E5 1620V2 内存: 32G(分给es 12G) 硬盘:4x2T raid 0(io大概在600左右) 导入的几种方法: 1、bulk: ES本地支持的批量导入方式,将json文件post到es进行处理。 将需要导入的数据先生成json文件,格式类似这种 1 2 3 4 5 6 7 8 9 #指定 index {"index":{"_index":"suoy","_id":1}} #字段 {"text_entry":"内容"} {"index":{"_index":"suoy","_id":1}} {"text_entry":"内容"} {"index":{"_index":"suoy","_id":1}} {"text_entry":"内容"} ........... 然后使用curl提交 1 curl -H 'Content-Type: application/x-ndjson' -XPOST '127.0.0.1:9200/xxxxxxxx/doc/_bulk?pretty' --data-binary @out.json 一开始我是尝试这种方法,用python将数据重新处理了下,生成的文件有48GB……,还花了3-5个小时的样子,导入的时候直接失败~后面,看了下说是文件大小尽量不能超过200MB???这样的话就要分割文件了,虽然可以shell脚本一个一个的提交小文件json,后面想想直接放弃了(嫌麻烦)……. 2、logstash: ES官方的另一个产品,将数据文本转换为ES的数据源。 我的文本一行只有两个字段,用 “—-” 分割,花了点时间学logstash直接上手开干,但是导入速度只有9000条/s的样子,一个小时导了大概3200w条数据,导了16个小时大概导了5.2亿条数据,这速度完全不行啊,后面手贱不注意按了 Ctrl+c,嗯…..这下好了,不知道怎么断点续传,又得重新来…… 我用的脚本如下,有懂的大佬能否告知下logstash有没有类似BulkProcessor储存到x条数据再执行Bulk的方法? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 input { # 从文件读取日志信息 file { path => "/data/sda3/k/log.txt" type => "text" start_position => "beginning" } } filter { mutate { split => ["message", "----"] } if [message][2] { mutate { add_field => { "title" => "%{[message][1]}" "log" => "%{[message][2]}" } } }else{ if [message][0] { mutate { add_field => { "title" => "%{[message][0]}" } } } if [message][1] { mutate { add_field => { "log" => "%{[message][1]}" } } } } } output { elasticsearch{ hosts => "127.0.0.1:9200" index => "logs" user => "elastic" #password => "xxx" #document_type => "_doc" } # 标准输出 #stdout { codec => rubydebug } } ...

2020年12月3日 · 3 分钟 · 浅忆

pve 安装ifupdown2

其实安装完pve后第一步就是移除企业订阅源,防止后面出现很多问题(由于企业仓库更新源需要购买订阅服务,所以我们需要手动修改到官方的非订阅源)。 由于proxmox VE 的 ifupdown2 到企业版里了,所以…… 删除原来的企业源 1 rm /etc/apt/sources.list.d/pve-enterprise.list 添加官方非订阅免费源 1 echo 'deb http://download.proxmox.com/debian/pve buster pve-no-subscription' >> /etc/apt/sources.list.d/pve-no-subscription.list 注意上边的buster,非其他教程中的stretch,是由于debian版本的问题,具体不解释 更新 1 apt update 安装ifupdown2 1 apt install ifupdown2 参考文章: https://www.d3tt.com/view/119

2020年10月8日 · 1 分钟 · 浅忆