Openwrt 默认LAN和WAN的顺序

只要你刷了Openwrt的官方镜像或者L大或者Lean大的程序,那么默认的话只有两个网卡,都是先lan,然后wan

换句话说,如果你买的是工控机软路由,那么无论是几个口,肯定eth0 是lan,eth1是wan,如果有eth2 和eth3的话,默认是没有是用的

如果你是在hyper-v上虚拟的软路由,那么你先添加的是哪个网卡,那个网卡就是lan,添加的第二个网卡就是wan,默认的说

内地居民临港开通银行账户的攻略

这个忘了是在哪看到的了,转过来做个记录,虽然大部分银行账户我都有了

本文仅介绍在香港和内地有影响力的大行,中资马甲行如民生、信银等在内地就能以一个很低的成本见证开到,无非就是没有什么服务,各种费用高,作为临时或短期使用完全可以,本文不再介绍。

本文用★的个数对各银行及其户口做综合评估,5星级银行★★★★★,这类银行及户口,一般具有往来汇款手续费低廉(免费),或两地转账秒到,或网银功能强大易用,或内地用户在线申请信用卡易批核等难以复制的优点,对于某项具体业务有需求的,强烈建议先开立5星银行户口。

第一类:非常好开的
这类银行没啥好说的,完全是中资银行的马甲,主要客群就是内地人,比较缺客户,所以开户非常容易,先预约,直接去开就行了,不过服务就非常一般了,多数银行还有账户最低结余的收费。

代表银行:永隆银行★★★(独特优势:银证转账功能强大;给香港AE信用卡还款,次日即到),招行银行香港分行★★等。

开户姿势:先预约(可以是网银或APP上预约,也可以电话预约,预约时可以提前填资料),亲临分行直接开,不过要做好排队的心理准备。

第二类:比较好开的
这类银行服务比较好,中资外资都有,可以选择没有最低结余的户口开立。不过可能是由于不太缺客户,所以多半要求买理财或保险产品,不过不要求立即买。套路也是一样,先预约,直接去开就行了,然后和理财经理聊天,开立户口。

代表银行:中银香港(自在/智盈理财)★★★★★【五星理由:本地网银转账免费、中港两地同名转账手续费全免】、工银亚洲★★★★(综合账户/e时代)、恒生银行★★★(优进理财)、南洋商业银行★★★(自在/智盈理财)等。

开户姿势:先预约,亲临分行和理财经理沟通后,直接开。

第三类:不算难开,但需要聊天比较久的
这类银行规模很大,往往具有全球布局,服务比较好,可以选择没有最低结余的户口开立。不算难开,不过可能是由于完全不缺客户,所以多半要求买理财或保险产品,通常聊天比较久的,并且他们要感觉在你身上能发现利润的点,这类银行你需要准备一个上午或下午的时间过去,往往会对你进行尽职调查和理财分析,不过不要求立即买。套路也是一样,先预约,直接去开就行了,然后和理财经理深入聊天,让他感觉你能带来利润,随之开立户口。

代表银行:汇丰银行(One综合户口)★★★★★【五星理由:本地网银转账免费、海外电汇、本地外币CHATS转入均不收落地费、网银功能丰富强大、全球汇款7*24汇款免费秒到(卓越用户)、投资户口开立、内地用户网银申请信用卡可秒批并直邮国内……】、渣打银行(快易/premium理财)★★★★★等【五星理由:本地网银转账免费、全球取现免费(premium理财)】。

开户姿势:先预约,亲临分行和理财经理沟通后,直接开。

第四类:比较难开
这类银行服务比较好,可以选择没有最低结余的户口开立。不过这类银行估计是不太喜欢内地游客客户,所以会对你进行比较详细的尽职调查和理财分析。聊天时间会更久,同样他们要感觉在你身上能发现利润的点,这类银行你同样需要准备一个上午或下午的时间过去,有可能叫你立即买,否则就不开户。不过这类银行在程序上也不是铁板一块,完全有商量的余地,例如以后再存款,以后再购买。套路也是一样,先预约,直接去开就行了,然后和理财经理深入聊天,让他感觉你能带来利润,随之开立户口,口才不好的可能需要做好被拒绝的心理准备。

代表银行:东亚银行★★★★★(i-account户口)【五星理由:中港两地转账转他人实时到账,落地费仅65HKD或免费(至尊或卓显理财)】、大新银行★★★(i-account户口)、永亨银行★★★(综合理财户口)等。

开户姿势:先预约,亲临分行和理财经理沟通后,直接开。

第五类:非常难开
这类银行要么就是服务非常好、门槛非常高,要么就是银行里有不成文的政策一般不给内地游客开户。当然,规章制度既然没有明文写一定不能开,那就是仍有开立的可能,值得各位飞友发挥和探索。去这类银行开户,首先应仔细学习银行香港开户政策,然后借鉴已成功开户朋友的经验,结合自己的情况,制定个性化的方案,各个击破,达到成功开立户口的目的。

代表银行:花旗银行★★★★★(原则上对内地用户仅开立citigold户口)——原则上开户需准备不低于150万港币一次性存入,并购买产品;【优势:母公司在美国,美国业务优势,大量费用减免】星展银行★★★★★(原则上对内地用户仅开立丰盛理财户口)——原则上开户需准备不低于100万港币一次性存入,并购买产品;【优势:如涉及与敏感的国家、敏感行业往来的合规交易,(敏感国家:马来西亚,泰国,菲律宾,俄罗斯,迪拜,朝鲜,中东国家,印度哥伦比亚),星展银行有一定的处理经验。】交银香港★★★★(中资)——原则上不允许内地人开户;【优势:各项费用较低。】上海商业银行★★★★(两岸三地)——原则上不允许内地人开户;【优势:两岸三地业务优势,协助开立台湾户口。】富邦香港★★★★(台资)——原则上不允许内地人开户。【优势:台湾本土业务优势,协助开立台湾户口。】等

Username is not in the sudoers file. This incident will be reported

最近在研究openwrt的编译.

因为openwrt的编译不能使用root用户,所以必须得自己添加一个用户:

adduser openwrt

然后在openwrt用户下使用sudo:

sudo apt update

会报这个错误:

openwrt is not in the sudoers file. This incident will be reported

这是因为openwrt 不在管理组,没有sudo的权限.

解决的办法也很简单,在root用户下把openwrt加入sudo组即可

usermod -aG sudo openwrt 
# a stands for append, G stands for Group, usually use aG together

再或者使用visudo命令,这个命令其实就是编辑/etc/sudoers

往下拉,看到这一行

#User privilege specification

root ALL=(ALL:ALL) ALL

在root的下面添加上自己的用户名:

#User privilege specification

root ALL=(ALL:ALL) ALL

username ALL=(ALL:ALL) ALL

保存退出即可

 

Oracle 云主机默认镜像ubuntu 18.04的坑

开了一台甲骨文的San Jose 数据中心的Cloud VM,默认支持的系统中没有debian,因此退而求其次选择了ubuntu 18.04 minimum.

按照习惯,把SSH端口从22改成了一个其他的端口,但是确发现SSH始终都连不上了.  检查了这个VM的security list,所有的端口都打开了,没有问题,看来问题只能出在ubuntu的默认防火墙上了.

默认的ubuntu 18.04的防火墙是iptables, 默认没有安装ufw,而且oracle 官方也不推荐使用ufw(这是后来才知道的)

可是按照ubuntu/debian的默认安装,防火墙iptables虽然是默认开启的,但是里面没有任何的规则. google了半天才发现原来是Oracle给他的默认的linux 的OS 都写入了默认的规则,路径在/etc/iptables/rules.v4 和rules.v6.

把rules.v4的规则里的两条reject 规则给他comment out,就可以了.

#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited

 

Discuz开发 discuz 论坛注册,登录流程整理

discuz 论坛 用户注册流程
第一步:
/source/class/class_member.php: on_register注册入口
L602 左右
if(!$activation) {//不为空,说明用户已经注册过
//将用户注册到用户中心,调用第二步uc_user_register方法
$uid = uc_user_register(addslashes($username), $password, $email, $questionid, $answer, $_G[‘clientip’]);

第二步:
/uc_client/client.php: uc_user_register 调用将用户注册到用户中心的方法,调用第三步的onregister方法
第三步:
/uc_client/control/user.php: onregister 将用户注册到用中心,调用第四步add_user方法
第四步:
/uc_client/model/user.php:add_user 将用户注册到ucenter返回用户id
第五步:
/source/class/class_member.php:
L685行 左右,会把用户信息写到common_member表。注册结束
C::t(‘common_member’)->insert($uid, $username, $password, $email, $_G[‘clientip’], $groupinfo[‘groupid’], $init_arr);

discuz 论坛 登陆流程
第一步:
/source/class/class_member.php: on_login 登陆入口
87行左右,调用userlogin方法如下:
$result = userlogin($_GET[‘username’], $_GET[‘password’], $_GET[‘questionid’], $_GET[‘answer’], $this->setting[‘autoidselect’] ? ‘auto’ : $_GET[‘loginfield’], $_G[‘clientip’]);
第二步:
/source/function/function_member.php: logincheck
72行左右 调用 logincheck,如下:
if(!($_G[‘member_loginperm’] = logincheck($_GET[‘username’]))) {
showmessage(‘login_strike’);
}
第三步:
/source/function/function_member.php: userlogin 用户登陆查询相关表
第29行-40行左右会用调用uc_user_login方法
if($isuid == 3) {
if(!strcmp(dintval($username), $username) && getglobal(‘setting/uidlogin’)) {
$return[‘ucresult’] = uc_user_login($username, $password, 1, 1, $questionid, $answer, $ip);// uc_client/client.php
} elseif(isemail($username)) {
$return[‘ucresult’] = uc_user_login($username, $password, 2, 1, $questionid, $answer, $ip);// uc_client/client.php
}
if($return[‘ucresult’][0] <= 0 && $return[‘ucresult’][0] != -3) {
$return[‘ucresult’] = uc_user_login(addslashes($username), $password, 0, 1, $questionid, $answer, $ip);
}
} else {
$return[‘ucresult’] = uc_user_login(addslashes($username), $password, $isuid, 1, $questionid, $answer, $ip);
}

/uc_client/client.php: 包含uc_开头的全部方法,例uc_user_login
/uc_client/control/user.php: onlogin 根据条件判断登陆,114-120 判断查询条件查询出ucenter用户信息
/uc_client/model/user.php 包含有get_user_by_uid,get_user_by_username 等方法 第50行左右查询common_member表,如下:
$member = getuserbyuid($return[‘ucresult’][‘uid’], 1);

回到/source/class/class_member.php文件on_login方法

第95-106 行左右会根据条件$result[‘status’]==-1 ,写common_member表,并查询出写入信息
C::t(‘common_member’)->insert($uid, $result[‘ucresult’][‘username’], md5(random(10)), $result[‘ucresult’][’email’], $_G[‘clientip’], $groupid, $init_arr);
$result[‘member’] = getuserbyuid($uid);

————————————————————————————-
ps:以上所有方法都会先执行
/source/class/discuz/discuz_application.php: _init_user
所以如果要自己写checklogin 可以考虑从_init_user 方法入手

如果与自己的平台做bbs的打通。
注册可以考虑在第4步做操作,调用自己平台的注册接口。注册用户,并将用户id返回。写入到ucenter
/uc_client/model/user.php:add_user 方法内

登陆打通可以考虑在 第三步调用 uc_user_login 方法前,
1.调用自己平台接口查询用户相关信息
2.查询ucenter中用户是否存在
3.如果不存在insert一条数据
4.common_member可以写也可以不写 ,如此时不写 $result[‘status’]==-1 会在class_member 95-106 行左右写入

如果在自己平台处于登陆状态,在discuz 也为登陆状态,则可以考虑从_init_user 方法入手。做登录判断

Discuz 3.2, 3.3, 3.4 直接利用SQL创建新用户

我们的网站要和Discuz整合到一起,有个新用户同步的需求,网络上很多的做法是用 UCenter的接口来做,反正最后都是插入SQL,笔者使用了直接操作数据库的方式,把操作的表和SQL整理了下,后面如果有时间做个SSO就省事了

版本:dz 3.2版本 ucenter1.6版本
目标:插入普通用户,最小可用就行了,可以登录

SQL记录:

注意:表名称前缀根据配置可能不同, 一共有8张表

SELECT *FROM pre_ucenter_members;
-- UCenter用户数据表 uid, username, password, email, regip(默认写一个值), regdate(时间戳), salt(随机6位字母数字)

SELECT *FROM pre_ucenter_memberfields;
-- UCenter用户扩展信息数据表 插入 uid

SELECT *FROM pre_common_member;
-- 主用户表 插入的字段 email, username, password, emailstatus, regdate(时间戳)
-- 得到uid再插入其它表

SELECT *FROM pre_common_member_count;
-- 用户数据统计 各种积分,动态等 插入 uid

SELECT *FROM pre_common_member_field_forum;
-- 用户论坛设置数据表 插入 uid

SELECT *FROM pre_common_member_field_home;
-- 用户家园设置数据表 插入 uid

SELECT *FROM pre_common_member_profile;
-- 用户个人资料数据表 插入 uid

SELECT *FROM pre_common_member_status;
-- 用户状态数据表 插入 uid


-- 下面是插入一个普通用户的测试, 这里根据id自增,自己算出了uid,便于sql书写 
-- lzz, 邮箱 [email protected], 密码 xyz2541 
-- 需要计算的密码 pre_common_member 密码为 md5(password) 2cf5c897f58ca21cac9bec93f46f6f53
-- pre_ucenter_members salt yyy111 密码为 md5(md5(password)+salt) 4fab791987738fce5f11504a0fe2a342
-- MYSQL mode 设置的比较严格,所以很多默认值要自己加上。。

INSERT INTO pre_ucenter_members SET uid=7, username='lzz', `password`='4fab791987738fce5f11504a0fe2a342', email='[email protected]', regip='127.0.0.1', regdate=UNIX_TIMESTAMP(), salt='yyy111';

INSERT INTO pre_ucenter_memberfields SET uid=7, blacklist='';

INSERT INTO pre_common_member SET uid=7, username='lzz', `password`='2cf5c897f58ca21cac9bec93f46f6f53', email='[email protected]', emailstatus=1, regdate=UNIX_TIMESTAMP();

INSERT INTO pre_common_member_count SET uid=7;

INSERT INTO pre_common_member_field_forum SET uid=7, `medals`='', `sightml`='', `groupterms`='', `groups`='';

INSERT INTO pre_common_member_field_home SET uid=7, `spacecss`='', `blockposition`='', 
`recentnote`='', `spacenote`='', `privacy`='', `feedfriend`='', `acceptemail`='', `magicgift`='', `stickblogs`='';

INSERT INTO pre_common_member_profile SET uid=7, `bio`='', `interest`='', `field1`='', `field2`='',
`field3`='', `field4`='', `field5`='', `field6`='', `field7`='', `field8`='';

INSERT INTO pre_common_member_status SET uid=7;

在Discuz的数据库中插入到数据库之后,web端就能登录了

Ucenter中的用户批量导入到discuz中的办法

这个代码是搜索到的,主要看一下需要在数据库里更新哪些表格.

将下面的代码复制到一个php中,并在浏览器中输入地址执行:

<?php
$dbserver =’localhost’; //此处改成数据库服务器地址
$dbuser =’root’;//此处写数据库用户名
$dbpwd =’1234′;//数据库密码
$dbname =’disucz’;//数据库名称
$charset =’gbk’;//此处写字符集gbk或者utf8
$uc_pre =’pre_ucenter_’;//UC表前缀
$dx_pre =’pre_’;//Discuz! X2表前缀
//此行开始向下不要改动
set_time_limit(0); //0为无限制
$connect=mysql_connect($dbserver,$dbuser,$dbpwd) or die(“无法连接数据库”);
@mysql_select_db($dbname,$connect);
mysql_query(“set names $charset”);
$query = mysql_query(“SELECT * FROM `{$uc_pre}members` WHERE `uid` not in(select `uid` from `{$dx_pre}common_member`) “,$connect);
while($user = mysql_fetch_array($query)) {
$password=$user[password];
mysql_query(” replace INTO `{$dx_pre}common_member` (uid,username,password,adminid,groupid,regdate,email) VALUES (‘$user[uid]’, ‘$user[username]’, ‘$password’,’0′,’10’,’$user[regdate]’,’$user[email]’) “);
mysql_query(” replace INTO `{$dx_pre}common_member_field_forum` (uid) VALUES (‘$user[uid]’)”);
mysql_query(” replace INTO `{$dx_pre}common_member_field_home` (uid) VALUES (‘$user[uid]’)”);
mysql_query(” replace INTO `{$dx_pre}common_member_count` (uid) VALUES (‘$user[uid]’)”);
mysql_query(” replace INTO `{$dx_pre}common_member_profile` (uid) VALUES (‘$user[uid]’)”);
mysql_query(” replace INTO `{$dx_pre}common_member_status` (uid) VALUES (‘$user[uid]’)”);
}
echo “已从UC批量导入激活成功”;
?>

注释: 连接到数据库后,PHP会比对UC和DZ用户表的数据,发现不存在于DZ但是存在于UC的用户,就会把用户导入到DZ,但是这一注册不会设置其他内容,比如用户填写的详细信息,由于以前是存储在DZ数据库中,所以还是丢失了

这样子用户已经全部导入,用户数也恢复了正常

下一步,将用户的邮箱验证全部设置为已验证

数据库执行:

update pre_common_menber set emailstatus="1";

注释:这是更新数据库中emailstatus字段,1为验证 pre记得改为你的论坛的前缀

 

 

Scaleway (online.net) 服务器在ESXi里面SSD驱动选择问题

目前我的网站架构里面大量使用了scaleway(online.net)的Pro-4-L的服务器. 这种服务器使用的SSD,主要有两个牌子,一个三星的evo850 SSD,一个是美光的M1000 SSD

在安装了ESXi的情况下, evo 850 可以使用ESXi 默认的驱动 vmw-ahci就可以保证满速,但是美光的M1000系列就需要回退到ahci驱动,才能保证满速.

GV和环聊该使用哪个?

Google Voice 有两个app,一个是google voice,一个是hangouts, 这两个app相比较来说肯定是hangouts好用很多

但是这个只是在苹果手机上而言, 在苹果手机上你可以使用hangouts来接发短信和拨收电话,确实很方便

但是在安卓手机上,hangouts 只能接受和发短信,无法拨打电话,需要一个叫做环聊拨号器的app,也是google开发的,但是

环聊拨号器这个app 早在2015年就停止更新了

因此在苹果手机上使用hangouts,在安卓手机上使用GV apps 是最好的选择