关于续订程序出现授权出错问题
由于微软将续订程序的回调地址拉黑(会认为使用此回调地址的应用为钓鱼应用),从而将创建的 应用程序 禁用,导致应用无法进行授权。
之前已经授权过的应用暂时不影响(在应用 access_token有效期内),今天会临时加急更新一版,明天下午上线,临时解决这个问题。
同时新版本预计年后上线。
查看应用是否被禁用


由于微软将续订程序的回调地址拉黑(会认为使用此回调地址的应用为钓鱼应用),从而将创建的 应用程序 禁用,导致应用无法进行授权。
之前已经授权过的应用暂时不影响(在应用 access_token有效期内),今天会临时加急更新一版,明天下午上线,临时解决这个问题。
同时新版本预计年后上线。


目前已经使用docker私有部署的为知快2年了,之前用过 onenote、印象笔记、有道笔记、notion、蚂蚁笔记等等,全部用过一段时间后还是选择了为知笔记,一是服务的在自己手里,数据配合脚本实时同步到OneDrive,二是目前重构版的客户端确实好用很多,不像之前要卡半天~
看网上一直在吹这个notion,不得不说操作上确实很爽,但每次打开不嫌慢吗?
下面是为知的docker搭建方式,其实官方写得很清楚了~
docker run --name wiz \
--restart=always \
-it -d \
-v ~/wizdata:/wiz/storage\
-v /etc/localtime:/etc/localtime \
-p 8080:80 \
-p 9269:9269/udp \
wiznote/wizserver location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header x-wiz-real-ip $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://ip:8081;
}
SYS-2-SAT-32 Server - Intel Xeon D1540 - 32GB DDR3 ECC 2133MHz - 4x 2To HDD Soft RAID 250Mbps
cpu升级为 Intel Xeon D1541
硬盘升级为 4x4T
开了3台结果如下:
12-01 21:23 GRA2 d1541 4x4T 250m 硬盘均 120小时
12-02 13:02 GRA1 d1541 4x4T G口 3个硬盘6k小时,1个110小时
12-02 13:30 GRA1 d1541 4x4T 250m 3个新盘,1个1k小时准高配:D-1540+16T硬盘+250Mbps网络
高配:D-1541CPU+16T硬盘+250Mbps网络
顶配:D-1541CPU+16T硬盘+1Gbps网络
反序列化时实体类型为 int/Integer/Long 等等,而json字段为string,如下
#json
{"a":""}
#伪代码
class test {
private Integer a;
}为gson注册一个适配器
import com.google.gson.JsonSyntaxException;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
public class IntTypeAdapter extends TypeAdapter<Integer> {
@Override
public void write(JsonWriter out, Integer value)
throws IOException {
out.value(value);
}
@Override
public Integer read(JsonReader in) throws IOException {
JsonToken peek = in.peek();
if (peek == JsonToken.NULL) {
in.nextNull();
return null;
}
try {
String result = in.nextString();
if ("".equals(result)) {
return null;
}
return Integer.parseInt(result);
} catch (NumberFormatException e) {
throw new JsonSyntaxException(e);
}
}
}private Gson gson = new GsonBuilder()
.registerTypeHierarchyAdapter(Integer.class, new IntTypeAdapter())
//.registerTypeHierarchyAdapter(Long.class, new LongTypeAdapter())
.create();需要注意的是, registerTypeHierarchyAdapter 里的类型一定要准确,一开始百度出来的是用 Number,会无法进入适配器,比如 https://www.jianshu.com/p/081ab69cf9a8 ,注册的是 int和integer,但TypeAdapter 是number。
在测试 javax.mail 中的 imap 协议 idle 时会有olderClosedException异常。
在Messaging对象上调用方法并且拥有该对象的Folder由于某种原因而死亡时,将引发此异常。
由于我没注意看文档,IMAPFolder.idle();是阻塞的而又没有循环读,导致直接关闭了资源~
收件箱中共633封邮件!
收件箱中共78封未读邮件!
收件箱中共0封新邮件!
收件箱中共0封已删除邮件!
------------------------开始解析邮件----------------------------------
支持idle
Got 1 new messages
---------------------------------------------------
-----关闭资源-----
标题: Re:测试邮件推送
javax.mail.FolderClosedException
at com.sun.mail.imap.IMAPMessage.getProtocol(IMAPMessage.java:169)
at com.sun.mail.imap.IMAPMessage.loadBODYSTRUCTURE(IMAPMessage.java:1546)
at com.sun.mail.imap.IMAPMessage.getDataHandler(IMAPMessage.java:808)
at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1508)
at io.qyi.qqBotManage.mail.mail$1.messagesAdded(mail.java:88)
at javax.mail.event.MessageCountEvent.dispatch(MessageCountEvent.java:154)
at javax.mail.EventQueue.run(EventQueue.java:170)
at java.lang.Thread.run(Thread.java:745)import com.sun.mail.imap.IMAPFolder;
import javax.mail.*;
import javax.mail.event.MessageCountAdapter;
import javax.mail.event.MessageCountEvent;
import java.io.IOException;
import java.util.Properties;
/**
* @author LuoYe
* @version 1.0
* @description: TODO
* @date 2021/5/12 3:13
*/
public class mail {
public static void main(String[] args) throws MessagingException, IOException {
init();
}
public static void init() throws MessagingException, IOException {
Properties props = new Properties();
props.setProperty("mail.store.protocol", "imap");
props.setProperty("mail.imap.host", "outlook.office365.com");
props.setProperty("mail.imap.port", "993");
/*tls与https需要增加以下代码*/
props.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.imap.socketFactory.fallback", "false");
props.setProperty("mail.imap.socketFactory.port", "993");
Session session = Session.getInstance(props);
// 创建IMAP协议的Store对象
Store store = session.getStore("imap");
// 连接邮件服务器
store.connect("账户", "密码");
// 获得收件箱
Folder folder = store.getFolder("INBOX");
// 以读写模式打开收件箱
folder.open(Folder.READ_WRITE);
// 获得收件箱的邮件列表
Message[] messages = folder.getMessages();
// 打印不同状态的邮件数量
System.out.println("收件箱中共" + messages.length + "封邮件!");
System.out.println("收件箱中共" + folder.getUnreadMessageCount() + "封未读邮件!");
System.out.println("收件箱中共" + folder.getNewMessageCount() + "封新邮件!");
System.out.println("收件箱中共" + folder.getDeletedMessageCount() + "封已删除邮件!");
System.out.println("------------------------开始解析邮件----------------------------------");
// 解析邮件
/*for (Message message : messages) {
IMAPMessage msg = (IMAPMessage) message;
String subject = MimeUtility.decodeText(msg.getSubject());
System.out.println("[" + subject + "]未读,是否需要阅读此邮件(y/n)?");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String answer = reader.readLine();
if ("y".equalsIgnoreCase(answer)) {
System.out.println(msg.getContent().toString());
// POP3ReceiveMailTest.parseMessage(msg); // 解析邮件
// 第二个参数如果设置为true,则将修改反馈给服务器。false则不反馈给服务器
// msg.setFlag(Flag.SEEN, true); //设置已读标志
}
}*/
folder.addMessageCountListener(new MessageCountAdapter() {
@Override
public void messagesAdded(MessageCountEvent e) {
// super.messagesAdded(e);
Message[] msgs = e.getMessages();
System.out.println("Got " + msgs.length + " new messages");
for (Message msg : msgs) {
System.out.println("---------------------------------------------------");
try {
System.out.println("标题: " + msg.getSubject());
System.out.println("内容: " + msg.getContent().toString());
} catch (MessagingException messagingException) {
messagingException.printStackTrace();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
@Override
public void messagesRemoved(MessageCountEvent e) {
super.messagesRemoved(e);
}
});
if (folder instanceof IMAPFolder) {
System.out.println("支持idle");
IMAPFolder f = (IMAPFolder) folder;
f.idle();
}
System.out.println("-----关闭资源-----");
// 关闭资源
folder.close(false);
store.close();
}
}An HTTP_REFERER was detected other than what is defined in System -> Advanced (http://x.x.x.x/services_dhcp.php). If not needed, this check can be disabled in System -> Advanced -> Admin由于服务器有多个ip,所以我就想装一个软路由来统一控制,刚装上pfSense 就无法在web登录,google搜索了半天才搜到,还是错的……
1、vnc进入 PHP shell + pfSense tools
2、执行 playback disableref erercheck
一开始我搜索到的解决办法是由pfSsh.php执行,也就是
pfSsh.php playback disablereferercheck但是在新版(2.5.0)执行无任何效果,低于这个版本的可以尝试这条命令。