Remmina 无法通过tls连接服务器

今天遇到一个很奇怪的问题,我在本地装了一台win10的虚拟机,可以直接通过快速链接栏链接rdp,但服务器不可以,报错,不知为何。甚至那台win10的虚拟机可以正常连接服务器。

快速链接栏

搜索了很多,最后在stackoverflow上看见一个回答[1]说是把高级里的negotiation改成TLS,试了试,并不行,于是抱着死马当活马医的态度,又试了试其它的选项,修改为RDP,很顺利的连上了。

就结果来讲,我推测是系统版本的原因,服务器是windows server,比较旧,虚拟机的RDP是官方的,肯定做了兼容,这样就解释通了

node调取打印机dll输出乱码

背景介绍

最近公司接了一个景区的项目,好巧不巧的分给我一个打票的功能。

过程

这有什么难的呀?

客户有一个一直在运行的系统,我去看了看,就是做一个网页然后预览,调用系统打印。

我求你当个人吧

客户提了一个需求,点击打印直接打印,不要什么预览确认,还要一定要B-S程序,也就是说只能使用IE的ActiveX调用dll。

这个时候我们的讨论结果是:没问题,框架支持IE,我可以用ActiveX开发。

我可求你当个人吧x2

是的你们没有猜错,现代框架哪还有兼容IE ActiveX的。只能用node在本地跑一个websocket server,于是只能重写了,因为涉及到一些高度的计算方法,要重写还挺麻烦的,我采用了一个取巧的方法:node直接接收指令打印,算法依旧在web端完成。

问题出现了

dll提供的似乎是按照GBK进行的解码,所以打印出来全是乱码,也就是说我们要转换一下编码再发送给打印机。

解决方案

iconv库,可以将已知编码转换为另一种编码,此处将UTF-8转换为GBK

年终总结-ver.2020

仅作为个人进行以下总结


- 确立第一个一年计划
- -  考过初级职称【程序员】
- -  小说能一天500字稳定更新
- - 英语口语能够正常交流
- 确定未来发展方向:独立游戏一体机

今年的成果

  • 立项:ECFramework
  • 立项:Lite-erp –> 转移至mongo
  • 完成:Wordpress — 微信 同步插件
  • 完成:主站页面更新,拆分
  • 完成:Gitlab/Openproject 内网穿透部署
  • 完成:整站HTTPS

MySQL localhost禁止访问

遇到这个问题先确认是否创建了账户


use mysql;
select Host,User from user;

我遇到这个问题是在Centos+Mysql 5.6

我创建了一个example_user@%的账户,但使用mysql -u example_user -h 127.0.0.1 -p无法登录,返回信息显示 Access denied for user ‘example_user’@localhost ,我就一直觉得很奇怪,我用的host明明是127.0.0.1,为什么变成localhost了,而且%应该是匹配所有host才对。

后来经过多次测试,发现在这种环境下,127.0.0.1会被识别为localhost,而且%并不会匹配到localhost,因此,我们只需要创建localhost作为host的账户即可


grant all on example_db.* on "example_user"@"localhost" identified by "your password";
flush privileges;

如何远程连接wamp环境下的MySQL

开放端口会导致安全问题,因此,请保证只用于debug或开发环境

相信各位都知道,MySQL远程访问需要新建账户,例如


grant all on example_db.* on "example_user"@"%" identified by "your password";
flush privileges;

所以导致无法访问的罪魁祸首不是mysql,是windows防火墙,我们需要使用下列操作步骤来开放3306端口。

搜索->防火墙->高级安全 Windows Defender 防火墙->入站规则

新建规则->端口->放行3306

使用脚本生成jekyll模板


#!/bin/bash

filename=$(date +"%Y-%m-%d")
header="---\n"
header=$header"layout: post\n"
if [[ $1 ]]
then
    header=$header"title: \""$1"\"\n"
    filename=$filename"-"${1// /-}
else
    header=$header"title:\n"
fi
header=$header"date: "$(date +"%Y-%m-%d %H:%M:%S %:z")"\n"
header=$header"categories: \n- CS\n"
header=$header"tags: \n- Computer Science\n"
header=$header"---"
if [[ $1 ]]
then
    echo -e $header > $filename".markdown"
else
    echo -e $header""
fi

wordpress HTTPS修正

前文:迁移wordpress到HTTPS

前文提到,使用docker部署,因为前后https模式不同步(前面是https后面是http://ip:port)导致需要修改配置文件,所以我决定把wordpress从docker迁移出来,因为docker挂载目录的其实就是wordpress本体在的位置


server {
  listen  443;
  server_name wpdev.endercaster.lan;#记得改掉
 #SSL证书配置参照前文
  root /opt/wordpress;#记得改掉
  location / {
      try_files $uri $uri/ /index.php?$is_args$args; #这里需要注意一下,不要少打
      index index.php;
  }
  # 这里替换为:在设置->固定连接->改为任意一个非朴素型
  #location ~ ^/wp-json/ {
  #    rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
  #}
  location ~ \.php$ {
        fastcgi_pass unix:/run/php/wp-test.sock;
        include fastcgi.conf;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

然后把前文中wp-config.php加的代码都删掉。

配置php-fpm,如果只有这一个项目,可以把上面的fastcgi_pass改掉,跳过这步


[wordpress]#从www改为wordpress
user = www-data
group = www-data
listen = /run/php/wp-test.sock
listen.mode = 0666


# 重启php-fpm
systemctl restart php7.2-fpm
#现在可以重新读取nginx配置文件了
nginx -t 
# 如果上面的输出是successful的话
systemctl reload nginx

然后登录查看工具->站点健康,看看有没有少一些依赖,给它装上。

至此,我的站点终于完美的迁移到https啦!

ElasticSearch 权限不足

可能性一、真的权限不足

这种情况需要使用chown/chmod来对文件夹赋权限,具体要看异常提示中写的是哪一个文件夹。

可能性二、文件目录有空格

这换个文件夹名就行了,大家都会。

可能性三、java版本原因

对,我遇到的就是这个原因,因为我是比较激进的那一派,所以开发环境一般会是我部署的时候最新的版本,比如,JAVA 14。。。这里其实没有什么太完美的解决方式,临时的解决方案是把JAVA_HOME换到ElasticSearch安装目录下的jdk目录。

最后提供一种能解决所有问题的方法:万能的docker镜像


sudo docker run -itd --name es -p 9200:9200 -p 9300:9300 elasticsearch:版本号

如果需要挂载数据卷的话,请参阅官方文档

环境部署踩坑日记

一、lnmp

最近有个项目需要用lnmp环境,于是用一键脚本安装了一下

先是按照一般的nginx部署流程走了一下,结果报500[Laravel项目],很巧,大家都有这个问题,在lnmp官网就能找到,是由于lnmp默认配置禁止跨目录访问,而框架需要读取自动加载脚本[autoload.php],所以我们需要把这个功能停掉

1.编辑/home/wwwroot/default/.user.ini


sudo chattr -i .user.ini
sudo vi .user.ini


open_basedir=$document_root/:/tmp/:/proc/
#改为
#open_basedir=$document_root/:/tmp/:/proc/

2.编辑/usr/local/nginx/conf/fastcgi.conf


fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
# 注释掉
#fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";

二、Nginx

其实这个是我的问题,直接复制原项目的配置文件,通过修改成不符合语法的配置可以看到测试不通过,也就是说这个文件本身是生效了的,但是通过虚拟域名并未访问到,一开始我以为因为”-“字符的原因server_name没有匹配到,后来发现是监听端口写错了。


listen [::]:80;
# 改为
listen 80;