前文中提到过如何hack本地部署的软件,主题思路是准确的。但是在重新编译代码这块描述的不太清晰,之前自己了解到的处理方法也有限。这次就来说说如何更好地处理重新编译。
思路
提取x-pack的jar包
/usr/share/elasticsearch/plugins/x-pack/x-pack-5.0.0.jar
分析jar中关于license的代码
2.1. 新建java项目,将x-pack-5.0.0.jar引入项目Libraries
2.2. 查找License相关代码(License.class),定位到fromXContent方法
public static License fromXContent(XContentParser parser)
2.3. 复制class内容,新建文件License.java
重写license解析代码
3.1. 重写license.expiryDate和license.type
builder.expiryDate(4070880000000L);
builder.type("platinum");
重新编译java文件
编译java文件,根据报错信息,加入新的lib:
joda-time-2.9.4.jar,lucene-core-6.2.0.jar,elasticsearch-5.0.0.jar
更新jar包
保持License.class的packge层级,更新x-pack-5.0.0.jar
jar uvf x-pack-5.0.0.jar org/elasticsearch/license/License*.class
重启elasticsearch服务,测试结果
curl -u username:password https://127.0.0.1:9200/_xpack/license?pretty