我在Github上找到了几个WHMCS对接ConvoyPanel的模块,我全部都试了一遍,这些模块不是这有点问题就是那有点问题。。只有这一个功能是完全正常的:https://github.com/simple-taipei/convoy-for-whmcs。但实际上这个模块也不能做到开箱即用,需要魔改一下WHMCS的产品配置页面。
由于ConvoyPanel的API对创建虚拟机时使用的ROOT密码要求非常严格,至少8位,且要包含一个大写字母,一个小写字母,一个数字,一个特殊符号。而WHMCS默认的ROOT密码输入框没有对用户输入的密码进行强度校验,这导致用户如果输入了一个强度不达标的密码,虚拟机就无法创建成功。
为了解决这个问题,我用AI写了一个WHMCS的Hook,实现的功能就是校验用户输入的ROOT密码是否满足ConvoyPanel的条件,如果不满足条件则阻止表单提交,直到用户输入的ROOT密码满足条件才能下单购买。我顺便还让AI写了一个隐藏WHMCS产品配置页面的NS1/NS2输入框,并填充默认值的Hook。有需要的可以直接从我博客下载。
密码强度校验:validate_rootpw
隐藏NS1/NS2输入框:hidden_nsprefix
使用方法也很简单,把这些PHP文件放到这个目录下:
/var/www/whmcs/includes/hooks
修改文件所有者权限:
chown -R www-data:www-data /var/www/whmcs/includes/hooks/validate_rootpw.php chown -R www-data:www-data /var/www/whmcs/includes/hooks/hidden_nsprefix.php
效果就是这样,用户购买时只需要输入虚拟机的Hostname和ROOT密码:
目前只测试过WHMCS默认的Standard Cart订单模板,其他的模板能不能用不清楚,不能用的话让AI改一下应该也不难。。但是请注意哈,这两个Hook文件都只是做了简单的前端校验,后端是没有校验的,也就是说用户如果懂点技术的话是可以直接篡改(绕过)这些功能的。当然我觉得不会有人那么无聊吧,让设置高强度的密码不要,要去用弱密码然后机子被人黑=-=
现在就可以来配置模块了,在WHMCS如下路径创建一个目录:
mkdir /var/www/whmcs/modules/servers/convoy
把模块克隆到本地:
git clone https://github.com/simple-taipei/convoy-for-whmcs.git cd convoy-for-whmcs
把模块文件都复制到对应的目录下:
cp convoy.php /var/www/whmcs/modules/servers/convoy cp -r lib /var/www/whmcs/modules/servers/convoy cp -r templates /var/www/whmcs/modules/servers/convoy
修改目录所有者权限:
chown -R www-data:www-data /var/www/whmcs/modules/servers/convoy
[可选]如果想要产品开通后,虚拟机自动开机可以编辑convoy.php:
nano /var/www/whmcs/modules/servers/convoy/convoy.php
把这个配置改成true:
'start_on_completion' => true
转到WHMCS后台,先添加一个组,再添加一个服务:
点击如图所示按钮进入完整的配置页面:
Name随便起一个,Hostname填写你的ConvoyPanel域名(不要带http/https前缀),IP Address填写ConvoyPanel所在服务器的公网IP。Password填写ConvoyPanel面板生成的Token,端口使用443,其他没有提到的配置项全部保持默认值不做修改,点击测试连接,确保能够正常连接到ConvoyPanel:
ConvoyPanel创建Token:
转到WHMCS的Products/Services页面,先创建一个产品组,再创建一个产品:
产品类型一定要选择Server/VPS,因为我们刚才的Hook都是针对的这个模板页面,你用其他的就达不到预期效果:
转到模块设置页面,参考下图来配置VPS产品的具体规格,如CPU、内存、硬盘、流量等:
这里面需要注意是Node ID这个ID在ConvoyPanel的如下页面可以找到:
还有Template UUID:
到这里就全部配置完成了,现在可以测试一下用户下单购买以及开通的情况,用户可以在WHMCS通过SSO登录到ConvoyPanel的虚拟机控制面板:
一切正常:
到这里这篇文章就写的差不多了,当然如果想正式营业的话还需要对接一个支付接口,oneman常用的接口不用多说了,肯定是易支付。。易支付可以自己搭,也可以用别人的,俗称平台。用别人的易支付风险很大,因为这些平台随时都可能跑路,做的都是些“你懂的”的业务。。最好还是自己搭一个。。这里就不多说了。。