欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > gliffy-confluence-plugin-9.1.2插件教程詳解

gliffy-confluence-plugin-9.1.2插件教程詳解

熱門標簽:北京外呼系統咨詢電話 廊坊地圖標注申請入口 怎么去掉地圖標注文字 海南人工外呼系統哪家好 慶陽外呼系統定制開發 高德地圖標注公司位置需要錢嗎 合肥阿里辦理400電話號 襄陽外呼增值業務線路解決方案 地圖標注資源分享注冊

1、下載gliffy-confluence-plugin-9.1.2.obr

2、解壓后找到GliffyLicenseManager.class

3、反編譯GliffyLicenseManager.class,替換原來的實現,重新編譯成class后替換進去

package com.gliffy.plugin.confluence.license;
 
import com.atlassian.confluence.setup.BootstrapManager;
import com.atlassian.confluence.setup.settings.CoreFeaturesManager;
import com.atlassian.upm.api.license.PluginLicenseManager;
import com.atlassian.upm.api.license.entity.LicenseError;
import com.atlassian.upm.api.license.entity.LicenseType;
import com.atlassian.upm.api.license.entity.PluginLicense;
import com.atlassian.upm.api.util.Option;
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.ReadableInstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
public class GliffyLicenseManager {
 private static final Logger logger = LoggerFactory.getLogger(GliffyLicenseManager.class);
 private PluginLicenseManager licenseManager;
 private CoreFeaturesManager coreFeaturesManager;
 private BootstrapManager bootstrapManager;
 
 public GliffyLicenseManager(PluginLicenseManager licenseManager, CoreFeaturesManager coreFeaturesManager, BootstrapManager bootstrapManager) {
 this.licenseManager = licenseManager;
 this.coreFeaturesManager = coreFeaturesManager;
 this.bootstrapManager = bootstrapManager;
 }
 
 /*private PluginLicense fetchLicense() {
 PluginLicense license = null;
 OptionPluginLicense> licenseOption = this.licenseManager.getLicense();
 if (licenseOption.isDefined()) {
 license = (PluginLicense)licenseOption.get();
 } else {
 logger.debug("no Gliffy license found");
 }
 return license;
 }*/
 
 public boolean isValid() {
 /*PluginLicense license = this.fetchLicense();
 return license != null ? license.isValid() : false;*/
 
 return true;
 }
 
 public boolean isSupported() {
 /*PluginLicense license = this.fetchLicense();
 if (license != null) {
 return !license.isMaintenanceExpired();
 } else {
 return false;
 }*/
 
 return true;
 }
 
 public boolean isEvaluation() {
 /*PluginLicense license = this.fetchLicense();
 return license != null ? license.isEvaluation() : false;*/
 
 return false;
 }
 
 public String getLicenseError() {
 /*PluginLicense license = this.fetchLicense();
 if (license != null) {
 OptionLicenseError> errorOption = license.getError();
 if (errorOption.isDefined()) {
 return ((LicenseError)errorOption.get()).toString();
 }
 }
 return null;*/
 
 return null;
 }
 
 public String getSEN() {
 /*PluginLicense license = this.fetchLicense();
 if (license != null) {
 OptionString> customerIdOption = license.getSupportEntitlementNumber();
 if (customerIdOption.isDefined()) {
 return (String)customerIdOption.get();
 }
 }
 return null;*/
 
 return null;
 }
 
 public boolean isCloud() {
 return this.coreFeaturesManager.isOnDemand();
 }
 
 public LicenseType getLicenseType() {
 /*PluginLicense license = this.fetchLicense();
 return license != null ? license.getLicenseType() : null;*/
 
 return LicenseType.COMMERCIAL;
 }
 
 public int getDaysToExpiration() {
 /*PluginLicense license = this.fetchLicense();
 if (license != null) {
 OptionDateTime> expiryDateOption = license.getExpiryDate();
 if (expiryDateOption.isDefined()) {
 return Days.daysBetween(new DateTime(), (ReadableInstant)expiryDateOption.get()).getDays();
 }
 }
 return 0;*/
 
 return Integer.MAX_VALUE;
 }
 
 public Integer getUserCount() {
 /*PluginLicense license = this.fetchLicense();
 if (license != null) {
 OptionInteger> qtyUsersOption = license.getEdition();
 if (qtyUsersOption.isDefined()) {
 return (Integer)qtyUsersOption.get();
 }
 }
 return null;*/
 
 return Integer.MAX_VALUE;
 }
 
 public boolean isFree() {
 /*if (this.fetchLicense() == null) {
 return false;
 } else {
 LicenseType type = this.getLicenseType();
 return type.equals(LicenseType.COMMUNITY) || type.equals(LicenseType.NON_PROFIT) || type.equals(LicenseType.OPEN_SOURCE);
 }*/
 
 return false;
 }
 
 public boolean isCommercial() {
 return this.isValid()  this.isSupported()  !this.isEvaluation()  !this.isFree();
 }
 
 public long getLicenseInstallUnixTimestamp() {
 /*PluginLicense license = this.fetchLicense();
 return license != null ? license.getCreationDate().getMillis() / 1000L : 0L;*/
 
 return 0L;
 }
 
 public String getLicenseManagementURL() {
 /*return this.bootstrapManager.getWebAppContextPath() + "/plugins/servlet/upm#manage/com.gliffy.integration.confluence";*/
 
 return "";
 }
 
 public boolean isNonAnalyticsLicenseType() {
 /*LicenseType licenseType = this.getLicenseType();
 boolean isEvalCloudInstance = this.isCloud()  (this.isEvaluation() || licenseType == null);
 return isEvalCloudInstance || LicenseType.DEVELOPER.equals(licenseType) || LicenseType.TESTING.equals(licenseType) || LicenseType.DEMONSTRATION.equals(licenseType);*/
 
 return false;
 }
}

知識點擴展:Gliffy confluence插件的破解

Gliffy是一個在線畫流程圖的工具,或者簡單的說Gliffy就是web版的Visio。Gliffy的用戶體驗非常的好,加打開瀏覽器就可以使用,使用起來非常的方便。Gliffy同時推出了confluence的插件版本。在安裝插件后可在confluence中方便的編輯和插入流程圖。

同事對Gliffy甚為垂涎,只是Gliffy還有些小貴。confluence插件版,500用戶的許可要賣到2000$。

雖然同事的利誘有些不靠譜,但偶爾干干著方面的事也還算有趣,那就動手吧。

注:下面只是簡單的講解一些關鍵點,如果你對java一竅不通,那還是罷手吧。

java應用破解的通常做法是:將文件反編譯,找到認證部分的處理,直接將認證結果返回true。java的反編譯工具推薦Java Decompiler。

Gliffy的jar包比較大,但其中java代碼并不是很多。而且Gliffy采用的是仿君子不防小人的做法,里面的java代碼并未混淆過。在代碼中有個目錄非常的扎眼\src\com\gliffy\core\license\。再做些簡單的分析我們即可找到真正的關鍵點SimpleLicenseManager.java

不得不說Gliffy的命名還是非常規范的。以函數名為線索,很容易就可以找到我們要的函數validLicenseValues。簡單粗暴的將函數返回值改為true。打包并重新安裝插件。

如果問題就這么解決了,那也未免順利的有些不太尋常。雖然可以成功安裝,但運行的時候拋出一堆的異常。試著進入Gliffy的管理界面,依舊是一堆的異常。雖然我們強制的將認證結果設置為了true,但某些地方還需要獲取license的到期日期等信息。由于讀不到相關數據,直接出異常了。

既然如此,那我們需要先將license信息寫入系統。

validLicenseValues還原,然后找到設置license的函數installLicense。在函數中注釋掉license認證相關的代碼,讓系統在忽略認證結果的情況下強行寫入注冊信息。修改后的java文件在執行時還會報getHostedStatus的虛函數錯誤。按理說這個函數應當會在子類中被重寫。不過我們先不管這么多,把它修改為普通函數并直接返回0。

重新打包安裝,然后進入Gliffy的管理界面,license信息隨便填寫,然后保存。保存是成功的,但認證還是失敗。修改validLicenseValues函數,重新打包安裝。這次由于我們有寫入注冊信息,因此就不會再出現先前的空指針異常了。

享受Gliffy吧。

注:Gliffy確實是個好東西,如果喜歡,還是盡量說服公司出錢買吧。

到此這篇關于gliffy-confluence-plugin-9.1.2破解教程詳解的文章就介紹到這了,更多相關gliffy-confluence-plugin-9.1.2內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • gliffy UML工具安裝使用過程

標簽:商丘 鎮江 株洲 平頂山 綿陽 哈密 鶴崗 臺州

巨人網絡通訊聲明:本文標題《gliffy-confluence-plugin-9.1.2插件教程詳解》,本文關鍵詞  gliffy-confluence-plugin-9.1.2,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《gliffy-confluence-plugin-9.1.2插件教程詳解》相關的同類信息!
  • 本頁收集關于gliffy-confluence-plugin-9.1.2插件教程詳解的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    中文字幕一区二区三区精华液| 性活交片大全免费看| 美国黑人一级大黄| 欧美va亚洲va香蕉在线| 欧美a级理论片| 日本不卡123| 久久99精品久久久久久动态图 | 国产精品国产三级国产a| 狠狠色丁香婷婷综合| www在线观看免费视频| 精品国产露脸精彩对白 | 超薄肉色丝袜一二三| www国产成人| 国产毛片一区二区| 污污的视频在线免费观看| 国产精品区一区二区三| 不卡的av网站| 欧洲一区二区三区在线| 一区二区三区日韩| 国产免费a级片| 欧美一区二区三区的| 美腿丝袜亚洲一区| 懂色av蜜桃av| 国产精品另类一区| 国产精品久久久久久久久免费樱桃| 国产在线播放一区三区四| 日本一级片免费| 亚洲日本成人在线观看| 精产国品一区二区三区| 欧美一区二区三区在线观看视频| 免费观看成人av| 色噜噜噜噜噜噜| 最新国产成人在线观看| 成人啪啪18免费游戏链接| 日韩欧美美女一区二区三区| 激情丁香综合五月| 2021亚洲天堂| 性感美女久久精品| 国产成人精品无码免费看夜聊软件| 国产拍揄自揄精品视频麻豆| 成人动漫视频在线| 欧美高清视频一二三区| 久久国产视频网| 91高清免费观看| 一区二区三区在线影院| 亚洲一区二区三区无码久久| 国产亚洲短视频| 丰满少妇中文字幕| 日韩免费高清视频| 国产精品一区在线观看乱码| 欧美综合色免费| 麻豆一区二区在线| 久久精品视频免费在线观看| 午夜精品福利一区二区三区av| 日韩不卡av在线| 日韩理论片网站| 国产成人无码一区二区在线观看| 欧美国产97人人爽人人喊| 男人添女人荫蒂国产| 精品国产一区二区精华| 99久久精品情趣| 精品美女在线播放| 99久久久精品| 欧美精品一区二区蜜臀亚洲| 99久久精品情趣| 精品国产123| 波多野结衣91| 日韩欧美国产系列| av男人天堂一区| 精品久久久网站| 91亚洲精华国产精华精华液| 26uuu亚洲综合色欧美| 免费黄视频在线观看| 欧美激情一区二区三区在线| 精品少妇人妻av一区二区三区| 中文字幕不卡的av| 三级电影在线看| 一区二区三区中文在线| 女性裸体视频网站| 秋霞午夜鲁丝一区二区老狼| 午夜精品福利在线视频| 免费观看一级欧美片| 欧美性欧美巨大黑白大战| 国产乱人伦偷精品视频不卡| 欧美一区二视频| 91麻豆免费视频| 日本一区二区成人| 天天操天天色综合| 中国一级片在线观看| 麻豆91在线看| 欧美一区三区二区| 黑人性生活视频| 中文字幕日韩一区| youjizz亚洲女人| 日本不卡中文字幕| 欧美日韩免费不卡视频一区二区三区 | 国产清纯在线一区二区www| 国产又黄又粗又猛又爽的视频| 亚洲精品伦理在线| 一级片一级片一级片| 久久精品国产精品亚洲综合| 欧美福利一区二区| 日本黄色www| 亚洲欧美激情小说另类| 成人免费视频网站入口::| 国产精品夜夜嗨| 久久久三级国产网站| 醉酒壮男gay强迫野外xx| 亚洲成av人在线观看| 欧美亚州韩日在线看免费版国语版| 丁香一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 免费看日本黄色片| 久久国产乱子精品免费女| 日韩视频免费直播| 黄色网址在线视频| 午夜精品久久久久影视| 欧美日韩专区在线| 久久久久久久久久久影视| 亚洲精选视频在线| 91福利精品视频| 91一区一区三区| 亚洲色图制服诱惑| 色诱视频网站一区| 99视频精品在线| 一区二区三区精密机械公司| 欧美亚洲综合色| 少妇伦子伦精品无吗| 亚洲第一狼人社区| 欧美精品久久一区| 99久久人妻无码中文字幕系列| 日本不卡一区二区三区高清视频| 日韩视频国产视频| 老牛影视av老牛影视av| 久久成人精品无人区| 久久精品视频免费观看| 日本免费网站视频| 成人免费看黄yyy456| 亚洲品质自拍视频网站| 在线看国产一区| 香蕉视频免费网站| 日韩专区一卡二卡| 精品久久国产97色综合| 国产一二三四区在线| 国产成人精品午夜视频免费| 中文字幕亚洲一区二区av在线| 欧美专区亚洲专区| 丰满少妇xbxb毛片日本| 免费成人在线影院| www成人在线观看| 亚洲二区在线播放| 被黑人猛躁10次高潮视频| 午夜a成v人精品| 2023国产精华国产精品| 多男操一女视频| 亚洲精品久久久久久| 日韩不卡一区二区| 久久精品夜夜夜夜久久| 亚洲色婷婷一区二区三区| 久久久久国产免费| 裸体健美xxxx欧美裸体表演| 日本一区二区视频在线| 91成人免费网站| 国产精品jizz| 国产99久久久久| 亚洲动漫第一页| 久久婷婷国产综合精品青草| 国产酒店精品激情| 伊人一区二区三区| 日韩欧美中文字幕制服| 久艹在线观看视频| 91精品人妻一区二区三区蜜桃2 | 国产欧美一区二区三区鸳鸯浴| 在线免费日韩av| xxxx黄色片| 成人一区二区在线观看| 五月天国产精品| 亚洲国产精品av| 欧美高清激情brazzers| 911国产在线| 亚洲妇女无套内射精| 国产在线播放一区| 亚洲一区二区三区激情| 久久一区二区三区四区| 在线观看不卡一区| 精品无码人妻一区二区免费蜜桃| 99久久99久久精品国产片果冻| 美脚の诱脚舐め脚责91| 亚洲欧洲综合另类在线 | 波多野结衣影院| 成人午夜电影网站| 日韩va欧美va亚洲va久久| 亚洲欧美在线高清| 欧美一区二区三区性视频| 国产97免费视频| 蜜乳av中文字幕| 午夜影院福利社| 成人免费视频一区二区| 麻豆精品视频在线观看| 亚洲综合激情另类小说区|