Интеграция Google reCAPTCHA в feedback форму DSpace/JSPUI

Собственно, данный текст родился в результате того, что DSpace был признан на самом высоком уровне — автор какого-то из скриптов рассылки спам-комментариев обучил своё детище работе в том числе и с формой обратной связи DSpace/JSPUI. Многие репозитории исторически имеют открытую форму обратной связи, доступную без регистрации и авторизации. Этим и обусловлена актуальность данного текста.

 
Научной новизны в тексте нет никакой. Методический источник, в котором я содрал код, доступен по ссылке. Там достаточно много интересных кастомизаций и reCAPTCHA (которую мы возьмём оттуда лишь частично) там интегрирована не только в форму обратной связи, но и в форму запроса копии документа. Вообще, примерно оценить кастомизации на уровне ядра можно потыкавшись тут. Процесс регистрации и настройки Google reCAPTCHA я описывать не буду, там всё очень не сложно. Идем сюда, регистрируемся/логинимся, вписываем домены, получаем ключи. Всё.
 
Собственно для интеграции reCAPTCHA, которую я буду демонстрировать на примере DSpace 5.10, необходимо создать/изменить всего шесть файлов, включая dspace.cfg. Все измененные файлы доступны в одном архиве по ссылке.
 
Модификацию файлов я буду описывать по очереди, прикладывая иллюстрации, и так, начнем!
 
На самом деле, я хотел делать пути в духе своих инструкций по установке, но что-то пошло не так и C:\RUNTIME\dspace-5.10-src-release1\ превратилось в C:\RUNTIME\dspace-5.10-src-release1\dspace-5.10-src-release. Так же, данное изменение я посчитал небольшим, поэтому полностью переустанавливать DSpace мы не будем. По этой причине, для модификаций и был распакован отдельный каталог с исходными кодами — C:\RUNTIME\dspace-5.10-src-release1\dspace-5.10-src-release:
 

 


 
Первое, что нам нужно сделать — отредактировать правила сборки. Модифицируем файл как на картинке, ну или берем готовый из архива с разницей исходников по ссылке выше (пути в архиве сохранены):
 

 


 
Далее, в dspace-api добавляем в правила сборки зависимость:
 

 


 
Точный код, или весь файл, можно опять же взять из архива:
 

 


 
Данный файл берем из архива и помещаем по пути из архива:
 

 


 
Данный файл берем из архива и помещаем по пути из архива, заменяя оригинал, если используется DSpace 5.10. Если что-то другое — строим diff и модифицируем самостоятельно:
 

 


 
Аналогично, файл берем из архива и помещаем по пути из архива, заменяя оригинал, если используется DSpace 5.10. Если что-то другое — строим diff и модифицируем самостоятельно. Что касается jsp файлов, их можно изменять без пересборки.
 

 


 
Правим dspace.cfg (Сразу на боевом инстансе, не в исходниках!) добавляя два параметра со значениями, полученными при регистрации reCAPTCHA:
 

 


 
Собственно, делаем mvn package, причем не в C:\RUNTIME\dspace-5.10-src-release1\dspace-5.10-src-release\dspace, а в C:\RUNTIME\dspace-5.10-src-release1\dspace-5.10-src-release:
 

 


 
Дожидаемся завершения и… думаем о том, что такая не каноническая сборка — ничто по сравнению с неканоничностью установки…
 

 



 
Собственно, я далее просто перешел в директорию C:\RUNTIME\dspace-5.10-src-release1\dspace-5.10-src-release\dspace\target\dspace-installer и без ant последовательно скопировал все изменившиеся файлы в боевой инстанс…. а чо, юниксвей:
 

 


 
javax.json-1.0.2.jar — та самая зависимость, которую мы добавили. Этот файл нужно скопировать в /dspace/lib/ и в /tomcat/webapps/jspui/WEB-INF/lib/. В моём случае это c:\dspace\lib и c:\rutime\tomcat\webapps\ROOT\WEB-INF\lib\:
 

 


 
dspace-api-5.10.jar у нас обновлен. Этот файл нужно скопировать в /dspace/lib/ и в /tomcat/webapps/jspui/WEB-INF/lib/. В моём случае это c:\dspace\lib и c:\rutime\tomcat\webapps\ROOT\WEB-INF\lib\. Так же, из файла можно извлечь директорию pt и добавить в оригинальные dspace-api-5.10.jar по указанным путям. Это может быть полезным, если у вас в dspace-api-5.10.jar уже много кастомизаций.
 

 


 
FeedbackServlet.class у нас тоже собрался с изменениями. Копируем его туда, куда бы его скопировал ant:
 

 


 
Аналогично поступаем с dspace-jspui-5.10-classes.jar, либо подменяем файл FeedbackServlet.class внутри джарбола:
 

 


 
Файл form.jsp тоже был пересобран, копируем его из target в /tomcat/webapps…:
 

 


 
Ну и собственно как-то так оно и работает:
 

 


Я правда понимаю на сколько это не верный способ установки чего-либо, но я так же знаю целевую аудиторию. Кому-то проще так, а кому-то с картинками 🙂

Запись опубликована в рубрике Библиотека с метками , , . Добавьте в закладки постоянную ссылку.

3 комментария на «Интеграция Google reCAPTCHA в feedback форму DSpace/JSPUI»

  1. VeronikaS говорит:

    Добрый день!
    Подскажите пожалуйста как определить какой пользовательский интерфейс Dspace установлен(jspui или xmlui)? В Dspace я новичок, ставила не я и узнать не у кого…
    Dspace 6.0, стоит на сервере с Ubuntu 16.04, когда запрашиваю версию Dspace пишет,что OS Linux(amd64) version 4.4.0-166-generic

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *