diff --git a/.env.template b/.env.template index 4237b09f3..db43847b9 100644 --- a/.env.template +++ b/.env.template @@ -1,16 +1,17 @@ # use 'stable' for production deployment -ARACHNE_IMAGE_VERSION=latest -# remove when using external db -COMPOSE_PROFILES=with-db +ARACHNE_FRONTEND_IMAGE_VERSION=latest +ARACHNE_BACKEND_IMAGE_VERSION=latest -# may be set to external db server -DB_SERVER=db DB_ROOT_PASSWORD= DB_PASSWORD= -SERVER_ADDRESS=localhost:8080 +SMTP_USER_NAME= +SMTP_USER_PASSWORD= -ARCHAEOCLOUD_PASSWORD= +SERVER_ADDRESS= +HOST_NAME= + +ARCHAEOCLOUD_PATH=/mnt/cephfs/archaeocloud/ AIAX_VERSION=latest -AIAX_DATA_DIR=./aiax-data \ No newline at end of file +AIAX_DATA_DIR=./aiax-data diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index abc5b5148..7544325e4 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -8,6 +8,8 @@ on: branches: - main - stable + - gwdg_deployment + - cologne_deployment defaults: run: @@ -38,5 +40,5 @@ jobs: with: context: "backend" push: true - tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref == 'refs/heads/stable' && 'stable' || 'latest' }} + tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/frontend-build.yml b/.github/workflows/frontend-build.yml index 3229eda1f..de2deb409 100644 --- a/.github/workflows/frontend-build.yml +++ b/.github/workflows/frontend-build.yml @@ -48,6 +48,6 @@ jobs: with: context: "frontend" push: true - tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref == 'refs/heads/stable' && 'stable' || 'latest' }} + tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }} labels: ${{ steps.meta.outputs.labels }} build-args: BUILD_NO=${{ github.run_number }} diff --git a/.gitignore b/.gitignore index 96567e7d3..7d13ddd8c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .env letsencrypt/ -aiax-data/ \ No newline at end of file +aiax-data/ +db_data/ diff --git a/backend/pom.xml b/backend/pom.xml index 9c0979f49..79e391839 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 de.uni_koeln arachne @@ -18,11 +18,11 @@ 1.7.21 - 5.1.40 - - 5.1.17.Final - - 3.3.1 + 5.1.40 + + 5.1.17.Final + + 3.3.1 7.16.1 @@ -32,35 +32,35 @@ 2.11.0 - 0.7.1 + 0.7.1 - 20.0 - + 20.0 + 3.21.0-GA - 1.4.7 + 1.6.7 3.5 - 2.5 + 2.5 4.5.2 - 2.17.0 + 2.17.0 - - 4.12 - - 1.10.19 - - 1.5.0 - - 2.2.0 + + 4.12 + + 1.10.19 + + 1.5.0 + + 2.2.0 - 0.0.1-RC18 + 0.0.1-RC18 1.11.2 2.0.8 - + 1.11 2.22.1 2.10.4 @@ -101,15 +101,15 @@ - org.springframework.security - spring-security-web - ${org.springframework.security-version} - - - org.springframework.security - spring-security-config - ${org.springframework.security-version} - + org.springframework.security + spring-security-web + ${org.springframework.security-version} + + + org.springframework.security + spring-security-config + ${org.springframework.security-version} + - org.apache.logging.log4j - log4j-core - ${log4j-version} - + org.apache.logging.log4j + log4j-core + ${log4j-version} + - org.apache.logging.log4j - log4j-web - ${log4j-version} - runtime - + org.apache.logging.log4j + log4j-web + ${log4j-version} + runtime + org.apache.logging.log4j - log4j-slf4j-impl + log4j-slf4j-impl ${log4j-version} @@ -239,32 +239,32 @@ - commons-dbcp - commons-dbcp - 1.4 - test - + commons-dbcp + commons-dbcp + 1.4 + test + - - mysql - mysql-connector-mxj - 5.0.12 - test - + + mysql + mysql-connector-mxj + 5.0.12 + test + - - - org.skyscreamer - jsonassert - ${jsonassert-version} - test + + + org.skyscreamer + jsonassert + ${jsonassert-version} + test com.vaadin.external.google android-json - + @@ -276,11 +276,11 @@ - com.jayway.jsonpath - json-path-assert - ${jsonpath-version} - test - + com.jayway.jsonpath + json-path-assert + ${jsonpath-version} + test + @@ -324,10 +324,10 @@ - com.fasterxml.jackson.core - jackson-annotations - ${jackson-version} - + com.fasterxml.jackson.core + jackson-annotations + ${jackson-version} + org.json @@ -335,13 +335,13 @@ 20170516 - - - com.zaxxer - HikariCP - ${hikariCP-version} - compile - + + + com.zaxxer + HikariCP + ${hikariCP-version} + compile + @@ -357,29 +357,30 @@ ${elasticsearch-version} - org.elasticsearch.client - elasticsearch-rest-client + org.elasticsearch.client + elasticsearch-rest-client ${elasticsearch-version} - com.github.davidmoten - geo - ${geo-version} - + com.github.davidmoten + geo + ${geo-version} + - - com.google.guava - guava - ${guava-version} - + + com.google.guava + guava + ${guava-version} + - - javax.mail - mail - ${javax.mail-version} + + + com.sun.mail + jakarta.mail + 1.6.7 @@ -388,11 +389,11 @@ ${commons-lang3-version} - - commons-io - commons-io - ${commons-io-version} - + + commons-io + commons-io + ${commons-io-version} + @@ -402,18 +403,18 @@ - - com.openhtmltopdf - openhtmltopdf-core - ${openhtml-version} - + + com.openhtmltopdf + openhtmltopdf-core + ${openhtml-version} + - - - com.openhtmltopdf - openhtmltopdf-pdfbox - ${openhtml-version} - + + + com.openhtmltopdf + openhtmltopdf-pdfbox + ${openhtml-version} + org.apache.pdfbox @@ -456,19 +457,19 @@ true - + - - - central - Central Repository - https://repo.maven.apache.org/maven2 - default - + + + central + Central Repository + https://repo.maven.apache.org/maven2 + default + @@ -487,9 +488,9 @@ false --> - jitpack.io - https://jitpack.io - + jitpack.io + https://jitpack.io + @@ -636,4 +637,4 @@ - + \ No newline at end of file diff --git a/backend/src/main/java/de/uni_koeln/arachne/config/ExternalLinkResolvers.java b/backend/src/main/java/de/uni_koeln/arachne/config/ExternalLinkResolvers.java index 1904bea0b..4b2ba6fc5 100644 --- a/backend/src/main/java/de/uni_koeln/arachne/config/ExternalLinkResolvers.java +++ b/backend/src/main/java/de/uni_koeln/arachne/config/ExternalLinkResolvers.java @@ -97,8 +97,8 @@ public SimpleExternalLinkResolver teiViewerBook() { result.setLabel("TEI-Viewer"); final Map criteria = ImmutableMap.of("Dataset.TableName", "buch"); result.setCriteria(criteria); - result.setLinkPattern("https://arachne.uni-koeln.de/Tei-Viewer/cgi-bin/teiviewer.php?manifest=%s"); - result.setValidationPattern("https://arachne.uni-koeln.de/TeiDocuments/%s/structure.xml"); + result.setLinkPattern("https://objects.auxiliary.idai.world/Tei-Viewer/cgi-bin/teiviewer.php?manifest=%s"); + result.setValidationPattern("https://objects.auxiliary.idai.world/TeiDocuments/%s/structure.xml"); result.setPatternFields(Arrays.asList("buch.Verzeichnis")); return result; } @@ -116,7 +116,7 @@ public SimpleExternalLinkResolver dfgViewer() { final Map criteria = ImmutableMap.of("Dataset.TableName", "buch"); result.setCriteria(criteria); result.setLinkPattern("http://dfg-viewer.de/show/" - + "?set[mets]=http%%3A%%2F%%2Farachne.uni-koeln.de%%2FMetsDocuments%%2F" + + "?set[mets]=http%%3A%%2F%%2Fobjects.auxiliary.idai.world%%2FMetsDocuments%%2F" + "oai_arachne.uni-koeln.de_buch-%s.xml"); result.setPatternFields(Arrays.asList("Dataset.internalId")); return result; diff --git a/backend/src/main/java/de/uni_koeln/arachne/context/BuchseiteocrtextContextualizer.java b/backend/src/main/java/de/uni_koeln/arachne/context/BuchseiteocrtextContextualizer.java index e70676905..e654f6a64 100644 --- a/backend/src/main/java/de/uni_koeln/arachne/context/BuchseiteocrtextContextualizer.java +++ b/backend/src/main/java/de/uni_koeln/arachne/context/BuchseiteocrtextContextualizer.java @@ -40,7 +40,7 @@ public class BuchseiteocrtextContextualizer extends AbstractContextualizer { private static final Logger LOGGER = LoggerFactory.getLogger(BuchseiteocrtextContextualizer.class); - private final static String XELETOR_ADRESS = "http://arachne.uni-koeln.de:6688"; + private final static String XELETOR_ADRESS = "http://objects.auxiliary.idai.world:6688"; private final static String CONTEXT_TYPE = "Buchseiteocrtext"; diff --git a/backend/src/main/java/de/uni_koeln/arachne/controller/UserManagementController.java b/backend/src/main/java/de/uni_koeln/arachne/controller/UserManagementController.java index 8cc7d490b..76e3d069b 100644 --- a/backend/src/main/java/de/uni_koeln/arachne/controller/UserManagementController.java +++ b/backend/src/main/java/de/uni_koeln/arachne/controller/UserManagementController.java @@ -300,7 +300,7 @@ public Map register(@RequestBody Map formData, Htt + "E-Mail: " + user.getEmail() + newLine + newLine + "Wenn Sie in Arachne eingeloggt sind, können Sie folgenden Link benutzen um den Benutzer " + "freizuschalten:" + newLine - + "https://oneeyedjacks04.dai-cloud.uni-koeln.de/activate_account/" + user.getId(); + + "https://objects.legacy.idai.world/activate_account/" + user.getId(); if (!mailService.sendMail(adminEmail, "Anmeldung bei Arachne", messageBody)) { LOGGER.error("Unable to send registration eMail to admin."); diff --git a/backend/src/main/java/de/uni_koeln/arachne/service/MailService.java b/backend/src/main/java/de/uni_koeln/arachne/service/MailService.java index 75005f5dc..5470d8781 100644 --- a/backend/src/main/java/de/uni_koeln/arachne/service/MailService.java +++ b/backend/src/main/java/de/uni_koeln/arachne/service/MailService.java @@ -1,5 +1,7 @@ package de.uni_koeln.arachne.service; +import java.util.Properties; + import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; @@ -37,7 +39,18 @@ public class MailService { public MailService(final @Value("${mailSMTPServer}") String smtpServer , final @Value("${mailSender}") String sender) { + String smtpUserName = System.getenv("SMTP_USER_NAME"); + String smtpUserPassword = System.getenv("SMTP_USER_PASSWORD"); + + Properties props = new Properties(); + props.put("mail.smtp.auth", true); + props.put("mail.smtp.ssl.enable", true); + + mailSender.setJavaMailProperties(props); mailSender.setHost(smtpServer); + mailSender.setUsername(smtpUserName); + mailSender.setPassword(smtpUserPassword); + mailSender.setPort(465); this.sender = sender; } diff --git a/backend/src/main/resources/config/application.properties.dev b/backend/src/main/resources/config/application.properties.dev index f400bcaa9..314209b0a 100644 --- a/backend/src/main/resources/config/application.properties.dev +++ b/backend/src/main/resources/config/application.properties.dev @@ -35,8 +35,8 @@ imageResolutionHIGH=0 imageCacheDir=/tmp/arachne4ImageCache/ # MailService -mailSMTPServer=smtp.uni-koeln.de -mailSender=arachne@uni-koeln.de +mailSender=idai.objects@dainst.de +mailSMTPServer=mail.dainst.org # transl8 transl8Url=https://arachne.dainst.org/transl8/translation/json?application=arachne4_backend @@ -64,8 +64,8 @@ contactEmail=idai.objects@dainst.de testUserName=e2e_test_user # specialnavigation stuff -teiViewerLink=http://arachne.uni-koeln.de/Tei-Viewer/cgi-bin/teiviewer.php -dfgViewerLink=http://dfg-viewer.de/v1/?set[mets]=http%3A%2F%2Farachne.uni-koeln.de%2FMetsDocuments%2Foai_arachne.uni-koeln.de_buch- +teiViewerLink=http://objects.auxiliary.idai.world/Tei-Viewer/cgi-bin/teiviewer.php +dfgViewerLink=http://dfg-viewer.de/v1/?set[mets]=http%3A%2F%2Fobjects.auxiliary.idai.world%2FMetsDocuments%2Foai_arachne.uni-koeln.de_buch- modelViewerLink=/3d?id= # book browser module @@ -75,4 +75,4 @@ booksPath=/tmp dataExportMaxThreads=4 dataExportMaxTaskLifeTime=30000 dataExportPath=/tmp -dataExportMaxItemsPerExport=1000000 +dataExportMaxItemsPerExport=1000000 \ No newline at end of file diff --git a/database_import.sh b/database_import.sh index 43199038b..3631244a9 100755 --- a/database_import.sh +++ b/database_import.sh @@ -7,4 +7,4 @@ # Read .env file and use as environment variables export $(cat .env | sed 's/#.*//g' | xargs) -gunzip < $1 | docker exec -i arachne4-db-1 mysql -uroot -p${DB_ROOT_PASSWORD} +gunzip < $1 | docker exec -i arachne4_db mariadb -uroot -p${DB_ROOT_PASSWORD} diff --git a/docker-compose.yml b/docker-compose.yml index eec2237b2..f9ba8506a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,10 @@ services: frontend: - build: ./frontend - image: ghcr.io/dainst/arachne4-frontend:${ARACHNE_IMAGE_VERSION} + image: ghcr.io/dainst/arachne4-frontend:${ARACHNE_FRONTEND_IMAGE_VERSION} volumes: - - archaeocloud:/media/archaeocloud - - /mnt/sitemap:/var/www/sitemap + - ${ARCHAEOCLOUD_PATH}:/media/archaeocloud + - /opt/arachne_sitemap:/var/www/sitemap labels: - traefik.enable=true - traefik.http.routers.frontend.rule=Host(`${SERVER_ADDRESS}`) @@ -18,16 +17,18 @@ services: restart: always backend: - build: ./backend - image: ghcr.io/dainst/arachne4-backend:${ARACHNE_IMAGE_VERSION} + image: ghcr.io/dainst/arachne4-backend:${ARACHNE_BACKEND_IMAGE_VERSION} environment: - - "DB_SERVER=${DB_SERVER}" + - "DB_SERVER=${SERVER_ADDRESS}:3306" - "DB_PASSWORD=${DB_PASSWORD}" - "SERVER_ADDRESS=${SERVER_ADDRESS}" + - "SMTP_USER_NAME=${SMTP_USER_NAME}" + - "SMTP_USER_PASSWORD=${SMTP_USER_PASSWORD}" - "IIPIMAGE_SERVER=frontend" - "ELASTICSEARCH_SERVER=elasticsearch" volumes: - - archaeocloud:/media/archaeocloud + - ${ARCHAEOCLOUD_PATH}:/media/archaeocloud + hostname: "${HOST_NAME}" labels: - traefik.enable=true - traefik.http.routers.backend.rule=Host(`${SERVER_ADDRESS}`) && PathPrefix(`/data`) @@ -42,6 +43,7 @@ services: db: image: mariadb:latest + container_name: arachne4_db environment: - "MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}" - "MYSQL_DATABASE=arachne" @@ -52,14 +54,12 @@ services: - ./db_data:/var/lib/mysql ports: - 3306:3306 - profiles: - - with-db restart: always phpmyadmin: image: phpmyadmin:apache environment: - - "PMA_HOST=${DB_SERVER}" + - "PMA_HOST=arachne4_db" - "PMA_ABSOLUTE_URI=https://${SERVER_ADDRESS}/phpmyadmin/" - "MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}" labels: @@ -68,7 +68,7 @@ services: - traefik.http.routers.phpmyadmin.entrypoints=websecure - traefik.http.routers.phpmyadmin.tls.certresolver=myresolver - traefik.http.middlewares.phpmyadmin-strip.stripprefix.prefixes=/phpmyadmin - - traefik.http.middlewares.phpmyadmin-ipwhitelist.ipwhitelist.sourcerange=134.95.0.0/16,172.28.0.0/20 + - traefik.http.middlewares.phpmyadmin-ipwhitelist.ipwhitelist.sourcerange=134.95.0.0/16,172.28.0.0/20,195.37.61.194,195.37.61.201,172.18.0.0/16 - traefik.http.routers.phpmyadmin.middlewares=phpmyadmin-strip,phpmyadmin-ipwhitelist - traefik.port=80 restart: always @@ -78,6 +78,7 @@ services: environment: - discovery.type=single-node - cluster.name=arachne4 + - "ES_JAVA_OPTS=-Xms16g -Xmx16g" volumes: - elasticsearch_data:/usr/share/elasticsearch/data restart: always @@ -85,7 +86,7 @@ services: iipimage: build: ./iipimage volumes: - - archaeocloud:/media/archaeocloud + - ${ARCHAEOCLOUD_PATH}:/media/archaeocloud restart: always aiax: @@ -95,7 +96,7 @@ services: environment: - ARACHNE4_BASE_URL=https://${SERVER_ADDRESS} - BASE_URL=https://${SERVER_ADDRESS} - - DB_SERVER=${DB_SERVER} + - DB_SERVER=arachne4_db - DB_PASSWORD labels: - traefik.enable=true @@ -138,8 +139,3 @@ services: volumes: elasticsearch_data: - archaeocloud: - driver_opts: - type: cifs - o: "user=alc01,file_mode=0777,dir_mode=0777,password=${ARCHAEOCLOUD_PASSWORD}" - device: "//172.17.113.250/archaeocloud" diff --git a/frontend/app/entity/entity.html b/frontend/app/entity/entity.html index cd0a39ae9..1103cd1da 100644 --- a/frontend/app/entity/entity.html +++ b/frontend/app/entity/entity.html @@ -8,7 +8,7 @@
+ href="https://objects.legacy.idai.world/arachne/index.php?view[mode]=edit&view[layout]={{entity.categoryKey}}_item&view[section]=Allgemein&view[category]=overview&search[data]=ALL&search[mode]=detail&search[match]=similar&view[active_tab]=overview&search[constraints][{{entity.categoryKey}}][searchSeriennummer]={{entity.internalId}}"> {{"edit_button"|transl8}} @@ -76,13 +76,15 @@ {{ 'ui_of' | transl8 }} + style="border-top-right-radius: 3px; border-bottom-right-radius:3px; border-left:0;">{{ + 'ui_of' | transl8 }} {{resultSize|number}} + ng-click="goToResultIndex(resultIndexInput)">{{ 'ui_goto' | + transl8}}
@@ -157,9 +159,7 @@

({{contextSize}})

-
+
@@ -170,4 +170,4 @@

- + \ No newline at end of file