в centos, debian, docker

Установка и активация Atlassian Confluence 6.3.4


Ранее мы уже рассматривали как устроен механизм защиты в JIRA Software, сегодня немного покопаемся еще в одном полезном инструменте — Atlassian Confluence 6.3.4.

ВНИМАНИЕ! Информация в статье доступна только в образовательных целях, НЕ ИСПОЛЬЗУЙТЕ ее для получения несанкционированного доступа к рассматриваемому ПО!

Для «лицензирования» Atlassian Confluence 6.3.4 необходимо внести изменения в два файла (приведены актуальные версии файлов на момент установки): atlassian-extras-decoder-v2-3.2.jar и atlassian-universal-plugin-manager-plugin-2.22.5.jar.

В стандартной установке на Linux файлы находятся в каталогах /opt/atlassian/confluence/confluence/WEB-INF/lib/ и /opt/atlassian/confluence/confluence/WEB-INF/atlassian-bundled-plugins/ соответственно.

Можно использовать уже пропатченный для Jira Software 7.5.0 atlassian-universal-plugin-manager-plugin-2.22.5.jar или приготовить его «с нуля» — см. здесь.

В данной статье рассмотрим только патч файла atlassian-extras-decoder-v2-3.2.jar.

  • скачиваем на локальный компьютер файлы atlassian-extras-common-3.2.jar, atlassian-extras-decoder-api-3.2.jar, atlassian-extras-api-3.2.jar и atlassian-extras-decoder-v2-3.2.jar из каталога /opt/atlassian/confluence/confluence/WEB-INF/lib/
  • устанавливаем инструмент JD-GUI;
  • открываем atlassian-extras-decoder-v2-3.2.jar с помощью декомпилятора JD-GUI;
  • жмем «File -> Save All Sources» или Ctrl+Alt+S (сохранится архив atlassian-extras-decoder-v2-3.2.jar.src.zip);
  • распаковываем полученный архив с помощью архиватора;
  • в atlassian-extras-decoder-v2-3.2.jar.src/com/atlassian/extras/decoder/v2/Version2LicenseDecoder.java находим метод loadLicenseConfiguration (в моем случае выглядел так):
/*     */   private Properties loadLicenseConfiguration(Reader text)
/*     */   {
/*     */     try
/*     */     {
/* 218 */       Properties props = new Properties();
/* 219 */       new DefaultPropertiesPersister().load(props, text);
/* 220 */       return props;
/*     */     }
/*     */     catch (IOException e)
/*     */     {
/* 224 */       throw new LicenseException("Could NOT load properties from reader", e);
/*     */     }
/*     */   }

и добавляем в данный метод информацию о лицензии:

/*     */   private Properties loadLicenseConfiguration(Reader text)
/*     */   {
/*     */     try
/*     */     {
/* 218 */       Properties props = new Properties();
/* 219 */       new DefaultPropertiesPersister().load(props, text);

                props.setProperty("LicenseExpiryDate", "2099-01-01");
                props.setProperty("MaintenanceExpiryDate", "2099-01-01");
                props.setProperty("Evaluation", "false");
                props.setProperty("NumberOfUsers", "-1");
                props.setProperty("Organisation", "MyCorp");
                props.setProperty("PurchaseDate", "2017-01-01");
                props.setProperty("SEN", "SEN-L10493078");

/* 220 */       return props;
/*     */     }
/*     */     catch (IOException e)
/*     */     {
/* 224 */       throw new LicenseException("Could NOT load properties from reader", e);
/*     */     }
/*     */   }
  • сохраняем файл;
  • копируем файлы atlassian-extras-common-3.2.jar, atlassian-extras-decoder-api-3.2.jar, atlassian-extras-api-3.2.jar и commons-codec-1.9.jar в директорию с исходниками (atlassian-extras-decoder-v2-3.2.jar.src);
  • переходим в каталог с исходниками (atlassian-extras-decoder-v2-3.2.jar.src) и компилируем класс из java-файла, который мы правили с помощью следующей команды:
javac -cp commons-codec-1.9.jar:atlassian-extras-common-3.2.jar:atlassian-extras-decoder-api-3.2.jar:atlassian-extras-api-3.2.jar -sourcepath ./ com/atlassian/extras/decoder/v2/Version2LicenseDecoder.java
  • могут быть ошибки (вызваны “кривостью” декомпиляции исходников), устраняем их и еще раз компилируем класс;
  • после успешного выполнения в каталоге com/atlassian/extras/decoder/v2/ появится файл Version2LicenseDecoder.class
  • полученныей файл копируем с заменой (по такому же пути com/atlassian/extras/decoder/v2/) в архив atlassian-extras-decoder-v2-3.2.jar (проще всего это сделать через mc — Midnight Commander);
  • в общем случае “новый” архив atlassian-extras-decoder-v2-3.2.jar необходимо положить (с заменой) на сервере с Confluence в каталог /opt/atlassian/confluence/confluence/WEB-INF/lib/, удалить содержимое каталогов ${CONFLUENCE_HOME}/plugins-osgi-cache/transformed-plugins/ и ${CONFLUENCE_HOME}/plugins-osgi-cache/felix/ после чего перезапустить confluence. Если вы запускаете Atlassian Confluence 6.3.4 в docker-контейнере, то нужно пересобрать docker-образ согласно инструкциям в Dockerfile

Инструкции по сборке docker-образа (Dockerfile) выглядят так:

FROM cptactionhank/atlassian-confluence:6.3.4

COPY atlassian-extras-decoder-v2-3.2.jar ${CONF_INSTALL}/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.2.jar
COPY atlassian-universal-plugin-manager-plugin-2.22.5.jar ${CONF_INSTALL}/confluence/WEB-INF/atlassian-bundled-plugins/atlassian-universal-plugin-manager-plugin-2.22.5.jar

CMD ["/opt/atlassian/confluence/bin/start-confluence.sh", "-fg"]

Добавить комментарий

  1. А как поправить такое?
    com/atlassian/extras/decoder/v2/Version2LicenseDecoder.java:211: error: variable licenseText might not have been initialized
    /* 211 */ return licenseText;

  2. Как решить такую ошибку?
    com/atlassian/extras/decoder/v2/Version2LicenseDecoder.java:211: error: variable licenseText might not have been initialized
    /* 211 */ return licenseText;

  3. …копируем файлы atlassian-extras-common-3.2.jar, atlassian-extras-decoder-api-3.2.jar, atlassian-extras-api-3.2.jar и commons-codec-1.9.jar в директорию с исходниками (atlassian-extras-decoder-v2-3.2.jar.src);
    переходим в каталог с исходниками (atlassian-extras-3.2.jar.src) …
    Опечатка?