thumbnail
Docker快速搭建Firefox Send
1、安装Docker 此命令我在debian中运行没问题,其他系统自测~ wget -qO- https://get.docker.com/ | sh 2、创建docker网络 请参考此文章 https://blog.curlc.com/archives/618.html 3、Docker安装Redis 其中的 --net 参数,就是刚刚建立的docker网络(内网) docker run --name docker-redis-server --restart=always --net=my_network -d redis redis-server --appendonly yes 3、docker安装启动Firedox Send docker run --net=my_network --restart=always -e 'REDIS_HOST=docker-redis-server' -e 'NODE_ENV=production' -p 1443:1443 -d mozilla/send:latest 4、Nginx反向代理 这一步网上有很多教程,就不重复的写了。 需要注意的是,必须启用https。 # 配置反向代理 location / { proxy_pass http://127.0.0.1:1443; proxy_set_header Connection "upgrade"; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }  
thumbnail
Fiddler无法解密https请求解决方法
The selected session is a HTTP CONNECT Tunnel. 所选的会话是 HTTP CONNECT 隧道。 该隧道使客户端能够通过 HTTP.......   https抓包出现这个标识无法解密https会话,证书存储区中可能有一些旧的Fiddler证书,由于某些原因(比如升级版本,更换版本后重新生成证书),这些证书在重置期间未清除,所以需要手动进行清除旧证书。   请确保未选中Fiddler的HTTPS选项中的“解密HTTPS通信”复选框,然后关闭Fiddler。 然后在Windows的任务栏搜索框中,键入“管理用户证书”,然后按Enter。当前用户的证书管理器将打开。 找到所有颁发者:DO_NOT_TRUST_FiddlerRoot并删除它们。请小心不要删除任何其他证书。 如果您具有管理权限,请在Windows的任务栏搜索框中键入“管理计算机证书”。本地计算机的证书管理器将打开。 找到所有颁发者:DO_NOT_TRUST_FiddlerRoot并删除它们。请小心不要删除任何其他证书。 打开Fiddler,然后选中“解密HTTPS流量”复选框。将会出现一些提示,要求信任新生成的CA证书。信任证书,然后重新启动Fiddler。 大概由3个地方需要进行删除,注意点别删到其他证书就好~ 参考文章: https://www.telerik.com/forums/system-security-cryptography-cryptographicexception#FayHvD9zcUGARfM-gi4pyA https://www.telerik.com/forums/https-decryption-does-not-work
thumbnail
红米K20 Pro 刷Pixel Experience
看见k20 pro 有pixel的包了,刷了后感觉还不错,比小米要各种权限好多了,还会后台自动刷新权限。 网上的教程很多,参考了下,有个地方要注意的是,用国内的miui做底包不行,会导致卡在 mi logo界面。 先刷 twrp 双清及格式化data 刷国际版的miui 11(Android 10 版本的) Wipe Cache/Dalvik 再刷Pixel Experience Wipe Cache/Dalvik 刷机完成后需要 ke xue 上网,不然会卡在登录页面。   欧盟版 miui 11 下载地址: https://nchc.dl.sourceforge.net/project/xiaomi-eu-multilang-miui-roms/xiaomi.eu/MIUI-STABLE-RELEASES/MIUIv11/xiaomi.eu_multi_HMK20ProMI9TPro_V11.0.8.0.QFKCNXM_v11-10.zip Pixel Experience  下载地址:https://download.pixelexperience.org/changelog/raphael/PixelExperience_Plus_raphael-10.0-20200407-0636-OFFICIAL.zip   2020-05-18: 发现个非常严重得问题,那就4g上网特别差,看了网上说是美国lte频段和国内不同?只能连一个频段?还是刷成国际版用吧。 发现问题是,是系统选择的apn不对,自己手动选下就可以了。 对了,快充也没了。 2020-06-04: 在体验了半个月后,发现个特别严重的问题,如果在信号差的地方到信号好的地方,网络一样的慢,而且得手动切换apn才能解决。 更新时间为:May 16, 2020 23:01 参考教程:https://blog.kangkang.org/index.php/archives/424
rabbitMQ rabbitmq_delayed_message_exchange 清空延时消息
最近也遇到这个问题,在安装了这个延时插件后不能清空已加入的消息,删除和重新创建交换是不够的,延迟的消息仍将传递。 解决办法: 禁用并重新启用插件: rabbitmq-plugins disable rabbitmq_delayed_message_exchange rabbitmq-plugins enable rabbitmq_delayed_message_exchange   github问题说明: https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/issues/16
ubuntu 循环登陆(闪退,登陆成功后又跳回登陆界面)
表现为在图形登陆界面能够正常验证密码正误,在正确输入密码后,出现命令行下的自检界面,然后立即闪回到登陆界面。而且这个问题一般是出现在某些账户下,其他账户尤其是guest账户不受影响。而且命令行登陆也不受影响。 这个问题存在于ubuntu的多个版本中:ubuntu 12.04 ,ubuntu 12.10,ubuntu 13.04,ubuntu 13.10 (勾引搜索引擎用^-^) 一个最常见的原因是该账户下的的.Xauthority文件的对当前用户没有读写权限。这个文件是用来记录Xserver登陆情况的,而且默认权限限制地很严(只有owner有rw权限),由于某些意外,所有者变成了root,导致我们用当前账号登陆的时候无法完成完整的登陆程序,而被退出。 修改的方法很简单,通过命令行登陆(Ctrl+Alt+F1),将拥有者(和组)改为当前用户。 例如我的用户名为 abc 使用命令: cd ~ ls -a (会看到.Xauthority的所有者和组是root) sudo chown abc:abc .Xauthority *返回图形界面:Ctrl+Alt+F7   本文转载至:http://blog.csdn.net/yanxiangtianji
常用内网穿透工具
1. frp FRP 功能完整,主要采用 GO 语言实现,重量级的工具,服务端界面样式风格一般。 配置繁琐,不同的协议需要配置不同的参数,采用文件存放数据,不支持数据库管理数据。 https://github.com/fatedier/frp 2. holer 轻量级的内网穿透工具,holer 服务端采用 Java 语言实现,服务端界面漂亮简洁。 Holer 客户端采用了 Java 语言和 GO 语言实现了两种版本,支持几乎所有的 OS 平台。 用到流行的微服务框架 springboot 和 Java 网络框架 netty。 配置很简单,针对所有 TCP 协议只需在客户端设置一个 holer access key 即可。 采用 MySQL 数据库统一管理数据。 https://github.com/wisdom-projects/holer 3. nps 轻量级的内网穿透工具,完全采用 GO 语言实现,服务端界面漂亮简洁。 支持的协议最广泛,配置稍简单,采用文件存放数据,不支持数据库管理数据。 https://github.com/ehang-io/nps 4. lanproxy 轻量级的内网穿透工具,客户端采用 GO 语言和 Java 语言实现两种版本,采用了 Java 网络框架 netty,服务端界面体验较差。 配置稍繁琐,采用文件存放数据,不支持数据库管理数据。 https://github.com/ffay/lanproxy    
Unexpected AOP exception; nested exception is java.lang.IllegalStateException:
很奇怪的一个bug,在本机上运行没问题,丢到服务器中就会报这个错。 原因 spring-aop版本与 aspectjweaver 包版本冲突 解决办法 我的maven项目的spring-aop版本是5.1.9,其他的spring版本是5.2.1,aspectjweaver 版本是1.8.3,将spring-aop的版本改成5.2.1,运行正常。 由于我的项目中并没有用到spring-aop包,用的是aspectjweaver ,直接将spring-aop删掉,运行正常 原文链接:https://blog.csdn.net/qq_40301107/article/details/103290420
thumbnail
E5 自动订阅程序[已开源]
由于我前端是废的,界面将就看看就行了,不影响程序~ 申请office E5 开发者试用的教程 新版可续签的Office 365开发者试用订阅!E5(附自动续订的方法) Onedrive容量 1T 修改 为5T,老帐号不删除重建 说明 此程序部署在我的服务器上,每隔2小时会自动调用outlook api 获取邮件列表 对于信息: 只会保存必要的 client_id、client_secret,其他任何内容都不会保存, 会读取授权的outlook账号邮箱邮件,但不会保存任何信息,仅仅是调用api。 请单独创建一个同域 E5 子账号进行授权,不要使用此账号进行发送、接收个人邮件,以免发生误会。 ...
thumbnail
AdGuard Home 搭建一个无广告DNS
上次说到 简书移动端Web劫持、跳转app问题 我个人原本是是在dnsmasq里面屏蔽ad.lflucky.com这个域名,刚好今天评论里有位读者说AdGuard Home也不错,所以就尝试了下,可视化界面配合起来用着也是很爽~ 我是用的软路由 x86 的openwrt,刚好可以安装替换原本的dnsmasq,命令有些区别但是也不太大。 可以使用docker,在内网中用着超级爽~ AdGuard Home 是一款全网广告拦截与反跟踪软件。在您将其安装完毕后,它将保护您所有家用设备,同时您不再需要安装任何客户端软件。随着物联网与连接设备的兴起,掌控您自己的整个网络环境变得越来越重要。 项目主页: https://github.com/AdguardTeam/AdGuardHome   AdGuard Home主要功能 拦截随处可见的广告 注重隐私保护 家庭保护模式 自定义过滤 CentOS 7 X64安装 AdGuard Home二进制文件位于https://github.com/AdguardTeam/AdGuardHome/releases 可根据自己的平台下载最新版本。 安装在openwrt的路由中倒也是可以,下载 AdGuardHome_linux_mips.tar.gz 这个包安装。在操作上都差不多,只是防火墙配置这一块需要自行去改一下。   CentOS 7安装方法如下: #下载AdGuard Home wget http://soft.xiaoz.org/linux/AdGuardHome_v0.93_linux_amd64.tar.gz #解压 tar -zxvf AdGuardHome_v0.93_linux_amd64.tar.gz #进入AdGuardHome目录 cd AdGuardHome #放行3000端口(AdGuardHome初始化需要使用) #firewalld放行3000端口 firewall-cmd --zone=public --add-port=3000/tcp --permanent firewall-cmd --reload #iptables放行3000端口 iptables -A INPUT -p tcp --dport 3000 -j ACCEPT service iptables save #启动AdGuard Home ./AdGuardHome 运行AdGuardHome后,会提示打开http://IP:3000端口进行初始化。 web管理端口建议不要设置80端口,以免冲突~ 设置上游DNS AdGuard Home默认使用Cloudflare DNS作为上游服务器,如果您服务器在国内可能请求上游DNS延迟比较高,在后台 - 设定 - 可以设置为国内的DNS,如腾讯的119.29.29.29,但坏处是不支持DNS over TLS 过滤器 在后台 - 过滤器,可以看到AdGuardHome内置了部分广告过滤规则,但在中国有点水土不服,如果要想更完美的实现广告屏蔽还需要自己添加规则。 推荐一个规则: https://anti-ad.win/   额外设置 为了方便管理,可以继续输入命令./AdGuardHome -s install安装为服务,然后就可以使用下面的命令来进行管理。 #启动 systemctl start AdGuardHome #开机自启 systemctl enable AdGuardHome #重启 systemctl restart AdGuardHome #停止 systemctl stop AdGuardHome DNS默认使用53(TCP/UDP)端口进行通信,因此别忘记放行53端口,否则DNS无法正常使用。 同时还有web管理端口 #firewalld放行53端口 firewall-cmd --zone=public --add-port=53/tcp --permanent firewall-cmd --zone=public --add-port=53/udp --permanent firewall-cmd --reload #iptables放行53端口 iptables -A INPUT -p tcp --dport 53 -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT service iptables save 拦截效果 参考文章: https://www.xiaoz.me/archives/12318
RabbitMQ double ack 报错
16:50:10.134 ERROR 17788 --- o.s.a.r.c.CachingConnectionFactory : Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 1, class-id=60, method-id=80)   在设置手动确认ACK后老是会出现这个错误,虽然不影响消息接收,但是每次报错都会重连。 除了在配置文件中设置手动ack以外,还需要在RabbitMQConfig中设置,按照参考文章上说的是 被注解注入的SimpleRabbitListenerContainerFactory覆盖,而它默认使用了自动签收。但是消费消息的时候又手动进行channel.basicAck(deliveryTag, false),于是导致了两次ack,所以报错。 因为需要手动设置ack的话,那么在消费端需要@RabbitListener注解放到方法上,同时指定containerFactory,不然会出现无限循环错误。官方解释 而刚好设置了 rabbitListenerContainerFactory ,返回类型是SimpleRabbitListenerContainerFactory,刚好被覆盖了,所以得再次手动设置一次。 @RabbitHandler @RabbitListener(queues = "DirectQueue", containerFactory = "rabbitListenerContainerFactory") public void listen(Message message, Channel channel) { //........................... }   #消费者最小数量 spring.rabbitmq.listener.simple.concurrency=1 #消费之最大数量 spring.rabbitmq.listener.simple.max-concurrency=10 #设置消费端手动 ack # 被注解注入的SimpleRabbitListenerContainerFactory覆盖,而它默认使用了自动签收。但是消费消息的时候又手动进行channel.basicAck(deliveryTag, false),于是导致了两次ack,所以报错。 spring.rabbitmq.listener.simple.acknowledge-mode=manual # 限流 #spring.rabbitmq.listener.simple.prefetch=1   @Bean public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) { RabbitTemplate template = new RabbitTemplate(connectionFactory); template.setMessageConverter(new Jackson2JsonMessageConverter()); return template; } @Bean public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); //此处也设置为手动ack factory.setAcknowledgeMode(AcknowledgeMode.MANUAL); factory.setConnectionFactory(connectionFactory); factory.setMessageConverter(new Jackson2JsonMessageConverter()); return factory; }   参考文章:https://blog.csdn.net/more_try/article/details/82804387