数据库过期提示框源码分析
好多人私信问我,如何破解企业版数据库过期时间,这个不能讲。
尊重正版,破解违法。详见:
https://www.cnblogs.com/aitong/p/10727505.html
我们今天可以讲讲数据库过期提示框,因为我想了解一下数据库过期天数它是如何计算的,点击按钮会触发什么,此篇为扩展性学习。
定位
我们怎么在源代码中定位到提示框中“注册您的订阅”和“购买订阅”按钮
注意浏览器F12的使用
之前我们讲过如何通过类名快速定位到源代码中,如本次我们可以通过查找oe_instance_buy
类名定位到源代码中:
再提供一个新的查找方式,你可以将系统语言切换为英文,因为源代码中都是英文的提示语。搜索This database will expire in
也能准确定位:
最终定位到web_enterprise
模块,企业版主要的样式也在其中。
分类分析
从源码中可以看到整个过期提示框使用的是Owl Templates
。Owl模板怎么继承修改,有知道的可以私信告诉我啊
我们可以将DatabaseExpirationPanel
模板简单分为三块:
开头是到期天数的提示语
中间是购买/延长过期时间相关按钮
最后是点击按钮后的相关提示
我们贴出中间代码块,因为我们关注的是系统如何延长过期时间。
<t t-if="warning === 'admin'">
<t t-if="notYetRegistered">
<a class="oe_instance_register_show" href="#" t-on-click.prevent="_onClickRegister">Register your subscription</a>
or
<a class="oe_instance_buy" href="#" t-on-click.prevent="_onBuy">buy a subscription</a>.
</t>
<t t-if="expirationReason === 'renewal'">
<a class="oe_instance_renew" href="#" t-on-click.prevent="_onRenew">Renew your subscription</a>
<a class="check_enterprise_status" href="#"
title="Refresh subscription status"
aria-label="Refresh subscription status"
t-on-click.prevent="_onCheckStatus"
>
<i class="fa fa-refresh"/>
</a>
</t>
<t t-elif="expirationReason === 'upsell'">You have more users or more apps installed than your subscription allows.<br/>
<a class="oe_instance_upsell" href="#" t-on-click.prevent="_onUpsell">Upgrade your subscription</a>
<a class="check_enterprise_status" href="#"
title="Refresh subscription status"
aria-label="Refresh subscription status"
t-on-click.prevent="_onCheckStatus"
>
<i class="fa fa-refresh"/>
</a>
</t>
</t>
系统如何延长过期时间
当我们输入激活码,点击确认时,会触发什么
此处代码:
<button class="btn btn-primary" t-on-click.prevent="_onCodeSubmit" >
<t t-esc="state.buttonText"/></button>
由上看到t-on-click.prevent="_onCodeSubmit""
搜索js_onCodeSubmit
方法。
开启odoo调试模式,使用浏览器断点,了解_onCodeSubmit
函数逻辑。
此函数比较长,简单说一下逻辑:
先判断输入值是否为空,为空直接结束
将输入的激活码存入系统参数
database.enterprise_code
中调用
publisher_warranty.contract
模型中的update_notification
函数进行激活码处理将过期时间从系统参数中取出与老过期时间对比,如果不同则返回成功,相同则激活失败
此处我们主要关注一下update_notification
函数,他是判断激活码是否正确的主函数。
讲一下此函数的作用:
向Odoo的发行商服务器发送消息,以检查合同的有效性(即激活码是否正确),获得通知等。
这里就不深入去讲了,有兴趣的可以自行了解。
希望大家周末愉快!