分类 默认分类 下的文章

通过外网访问openwrt管理路由器后台

有时候我们想在公司上班的时候访问一下家里路由器的后台(好多原因拉,比方说下载电影等等等等...)

因为平时确实有这方面的需求存在,查了一下资料,比方说可以通过搭建rpc服务器做内网穿透等等...很开心,本人是电信的宽带,IP是外网IP,正好我自己有好多个域名,可以通过域名商开放的api接口实现dns动态绑定IP.

本人是腾讯云的域名服务商,但是腾讯云的域名开放api网上资料有点少,偶然间发现腾讯云原来就是dnspod域名商.dnspod的域名商接口简单不少,关键是每个接口都有curl的调用示例,非常的方便.附上两个dnspod的api链接:
dnspod Token申请 https://support.dnspod.cn/Kb/showarticle/tsid/227/
dnspod 域名记录修改api https://www.dnspod.cn/docs/records.html#record-modify

连curl的示例都有真的是太简单了,需要做的就是写个shell脚本定时跑就完了.

接下来就是openwrt设置防火墙让外部的访问可以访问到路由器后台:

防火墙基本设置 , 主要是都改成接收,

防火墙基本设置

端口转发 , 外部的80端口被服务商封了,需要用其他端口转发到内部的80端口

防火墙端口转发

恩...到了最后,我又发现了openwrt其实有一个ddns的管理工具,就是帮你把定时更新dns解析的脚本也做好了,叫koolddns ^_^

楼层设备点编辑

项目有需求要将对接过来的设备展示在3d建筑模型内,就涉及到一个后台操作保存设备点的位置的功能.
基于three.js源码中的editor的二次开发,基本实现了想要的需求

github源码地址

demo展示地址

界面展示

界面初始化展示

大概流程为初始化化时加载建筑后显示某一层楼建筑,并且加载设备列表,点击设备列表可添加到楼层场景当中进行调整位置,大小,方向.
设备编辑状态展示

该demo未完成部分为初始化时向后台请求获取楼层列表以及当前楼层下的设备列表,还有点击保存按钮后提交到后台数据库中去等涉及到和后台接口联调的部分.

使threejs中的2d dom元素能够不影响轨道控制器使用

很多时候为了方便,我们会在3d环境中放置dom元素.这样的好处有很多,这里不多说明.
2d元素如何放到3d环境中可以参考
threejs-align-html-elements-to-3d.html

根据上面介绍我自己写了一个基类方便使用
https://github.com/aoobao/bim_test/blob/master/src/assets/js/BaseElement.js

接着碰到一个问题是: 我们希望鼠标在这些dom上时threejs中的轨道控制器的事件也能够响应,一开始找了半天没发现是什么地方阻止了事件传递,突然发现了大部分情况下我们是创建轨道控制器的时候,domelement是传递renderer.domElement的(就是canvas元素),而dom不会放在canvas内部
在这里只要把事件绑定在跟canvas一样大的父元素上,那些2d dom都放在父元素中就可以了.

// var orbitControls = new CameraControls(camera, renderer.domElement)

var orbitControls = new CameraControls(camera, container) // container 为和canvas一样大小的父节点,包裹其余2d元素

debian / ubuntu 安装mysql步骤

1.去官网下载最新的deb package 用来更新apt 源

mysql apt repository

进入链接,just start mydownload 获取链接,下载下来拷贝到服务器或者直接服务器wget下载.

wget https://dev.mysql.com/get/mysql-apt-config_0.8.14-1_all.deb

下载完后运行dpkg命令配置mysql界面(选择mysql版本)

dpkg -i ./mysql-apt-config_0.8.14-1_all.deb

如果缺少安装某些程序会报错,按照提示apt-get install xxx 全部装完就好了.

配置完成后执行update命令,然后安装,中途会输入一个root密码.

apt-get update

apt-get install mysql-server

基本操作

// 开启服务
 service mysql start
// 关闭
service mysql stop
// 重启
service mysql restart
// 状态
service mysql status

配置新用户:

// 登录
mysql -u root -p

// 注册  username和password根据情况改.
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';
// 分配权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
mysql> FLUSH PRIVILEGES;

// 打开mysqld.cnf 修改连接ip
vim /etc/mysql/mysql.conf.d/mysqld.cnf
# By default we only accept connections from localhost
- bind-address    = 127.0.0.1
+ bind-address    = 0.0.0.0

// 修改完后要重新启动一下
service mysql restart

three.js 渲染dom元素在3d场景中.

很多时候我们需要在3d场景中嵌入2d的dom元素去更简单的实现页面上的交互,记录一下开发逻辑:
原理就是建一个mesh对象,设置为透明不可见,然后再建一个dom元素,在全局render中计算出mesh的世界坐标与照相机的相对位置.
然后对dom元素设置left和top

我简单封装了一下基类BaseElement,以及实现了一个demo案例
BaseElement: https://github.com/aoobao/bim_test/blob/master/src/assets/js/BaseElement.js

demo: https://github.com/aoobao/bim_test/tree/master/src/components/Spot

记录一下以做参考