Det ser ut til at samvirke mellom nginx og Nikita kan endre opp med en ugyldig databasetilstand. Jeg testet nettopp import-email av hele testmboxen, og det feilet. Feilen opptrer ikke Når nginx ikke står forran Nikita. Her er importfeilen jeg ser:
% ./import-email --saksmappe --baseurl https://nikita.example.com/noark5v5/ --client_id nikita_client --username user --password prompt --mbox testdata/nikita-noark.mbox --maxinserts 100000 [...] 1.43 s per insert/email (249 inserted, 249 seen) Looking for msgid: VI1PR04MB132731D552E24DB0C554144092F80@VI1PR04MB1327.eurprd04.prod.outlook.com MappeID: dict_keys([]) format ignore for multipart/alternative not known by API, asking API to pick format code format None for text/plain not known by API, asking API to pick format code format None for text/html not known by API, asking API to pick format code Identifiers: [] 1.83 s per insert/email (250 inserted, 250 seen) Looking for msgid: 2fly3tpumnw.fsf@diskless.uio.no Identifiers: [] 0.92 s per insert/email (251 inserted, 251 seen) Looking for msgid: 2flvaotulrs.fsf@diskless.uio.no error: upload threw exception, removing object: HTTP Error 413: Request Entity Too Large Traceback (most recent call last): File "/home/user/noark5-tester/./import-email", line 474, in createDocumentObject (c, res) = self.post(str(newfilehref), content, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/lib/n5core/endpoint.py", line 216, in post return self._post(path, data, mimetype, length, accept, headers); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/lib/n5core/endpoint.py", line 235, in _post response = urlopen(request) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 216, in urlopen return opener.open(url, data, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 525, in open response = meth(req, response) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 634, in http_response response = self.parent.error( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 563, in error return self._call_chain(*args) ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 496, in _call_chain result = func(*args) ^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 643, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 413: Request Entity Too Large
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/home/user/noark5-tester/./import-email", line 871, in <module> exit(main()) ^^^^^^ File "/home/user/noark5-tester/./import-email", line 868, in main return t.load() != True ^^^^^^^^ File "/home/user/noark5-tester/./import-email", line 856, in load return self.loadMbox() ^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./import-email", line 829, in loadMbox if not self.uploadEmail(message): ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./import-email", line 762, in uploadEmail return self.addMessageToFile(threadfile, message) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./import-email", line 678, in addMessageToFile if not self.createDocumentObject(docdescinfo, docobjdata, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./import-email", line 480, in createDocumentObject self.delete(o) File "/home/user/noark5-tester/lib/n5core/endpoint.py", line 341, in delete response = opener.open(request) ^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 525, in open response = meth(req, response) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 634, in http_response response = self.parent.error( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 563, in error return self._call_chain(*args) ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 496, in _call_chain result = func(*args) ^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 643, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 400: %
Loggen fra Nikita viser følgende:
Feb 25 15:00:42 nikitatest.uio.no java[1390091]: 2025-02-25T15:00:42.363+01:00 ERROR 1390091 --- [Nik ita Noark 5 Core (using Postgres)] [.1-8092-exec-10] a.w.s.e.GlobalETAGExceptionHandler : Canno t invoke "String.length()" because "checksum" is null
Dette får så export-all til å feile etter at et dokumentobjekt returneres uten sjekksum:
% ./export-all --xml --baseurl https://nikita.example.com/noark5v5/ --client_id nikita_client --username user --password prompt [...] Traceback (most recent call last): File "/home/user/noark5-tester/./export-all", line 1657, in <module> exit(main()) ^^^^^^ File "/home/user/noark5-tester/./export-all", line 1652, in main return t.recurse_xml() ^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./export-all", line 1434, in recurse_xml self.recurse_xml_save_journal( File "/home/user/noark5-tester/./export-all", line 1385, in recurse_xml_save_journal callback() File "/home/user/noark5-tester/./export-all", line 1435, in <lambda> lambda : self.recurse_xml_save_endringslogg( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./export-all", line 1348, in recurse_xml_save_endringslogg callback() File "/home/user/noark5-tester/./export-all", line 1436, in <lambda> lambda : self.recurse_xml_arkiv(output, arkiv, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./export-all", line 1181, in recurse_xml_arkiv self.recurse_xml_out_ordered(output, 'arkiv', content, sequence, attr=attr, parents=parents) File "/home/user/noark5-tester/./export-all", line 307, in recurse_xml_out_ordered k[1](output, sub, parents=[origcontent,]+parents) File "/home/user/noark5-tester/./export-all", line 1117, in recurse_xml_arkivdel self.recurse_xml_out_ordered(output, 'arkivdel', content, sequence, parents=parents) File "/home/user/noark5-tester/./export-all", line 307, in recurse_xml_out_ordered k[1](output, sub, parents=[origcontent,]+parents) File "/home/user/noark5-tester/./export-all", line 979, in recurse_xml_mappe self.recurse_xml_out_ordered(output, 'mappe', content, sequence, attr=attr, parents=parents) File "/home/user/noark5-tester/./export-all", line 307, in recurse_xml_out_ordered k[1](output, sub, parents=[origcontent,]+parents) File "/home/user/noark5-tester/./export-all", line 887, in recurse_xml_registrering self.recurse_xml_out_ordered(output, 'registrering', content, sequence, attr=attr, parents=parents) File "/home/user/noark5-tester/./export-all", line 307, in recurse_xml_out_ordered k[1](output, sub, parents=[origcontent,]+parents) File "/home/user/noark5-tester/./export-all", line 616, in recurse_xml_dokumentbeskrivelse self.recurse_xml_out_ordered(output, 'dokumentbeskrivelse', content, sequence, parents=parents) File "/home/user/noark5-tester/./export-all", line 307, in recurse_xml_out_ordered k[1](output, sub, parents=[origcontent,]+parents) File "/home/user/noark5-tester/./export-all", line 506, in recurse_xml_dokumentobjekt filename = '%s-%s.%s' % (content['sjekksumAlgoritme'], content['sjekksum'], suffix) ~~~~~~~^^^^^^^^^^^^ KeyError: 'sjekksum' %
Jeg antar utløseren for denne feilen ligger i lav opplastingsgrense i nginx, og kan fikses med "client_max_body_size 20M;" eller tilsvarende, men Nikita bør uansett ikke endre opp med e ugyldig dokumentobjekt-instans når dette skjer.
Hei,
Jeg tror at det kan være et problem med certbot-sertifikatet (mangler tilgang til https://nikitatest.uio.no/) eller lokalt DNS-problem.
Kan dette skyldes at du kaller --baseurl https://nikita.example.com/noark5v5/ i stedet for --baseurl https://nikitatest.uio.no/noark5v5/?
Eller har du satt nikita.example.com i /etc/hosts til å peke mot 129.240.15.244 (nikitatest.uio.no)?
Du finner konfigurasjonsinformasjon for Apache HTTPD og Nikita bak brannmurer med https basert på certbot-auto og Apache-modulen mod_rewrite i https://github.com/arkivarium/book
HTTPD Configuration Install Apache 2 and download the core from gitlab.com in /var/www/html/ cd /var/www/html/ git clone https://gitlab.com/OsloMet-ABI/nikita-noark5-core
Configure Apache 2 in /etc/apache2/sites-available/000-default.conf VirtualHost http://www.arkivarium.no:80 ServerName http://www.arkivarium.no ServerAdmin webmaster@arkivarium.no DocumentRoot /var/www/html/nikita-noark5-core/web/ ErrorLog ${APACHE_LOG_DIR}/http://www.arkivarium.no-error.log CustomLog ${APACHE_LOG_DIR}/http://www.arkivarium.no-access.log combined /VirtualHost
VirtualHost arkivarium.no:80 ServerName arkivarium.no ServerAdmin webmaster@arkivarium.no DocumentRoot /var/www/html/nikita-noark5-core/web/ ErrorLog ${APACHE_LOG_DIR}/arkivarium.no-error.log CustomLog ${APACHE_LOG_DIR}/arkivarium.no-access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =arkivarium.no RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] /VirtualHost
Replace {http://www.}arkivarium.no with your own domain name and configure DNS settings. Add DNS records on the name servers for your domain to the IP address of your web server. arkivarium.no A 178.255.144.179 http://www.arkivarium.no A 178.255.144.179
Remember to replace the domain arkivarium.no and IP address 178.255.144.179 with the actual domain and IP address of your web server running Apache. Enable HTTPD configuration in /etc/apache2/sites-enabled/000-default.conf Download certbot-auto from https://certbot.eff.org/ and run certbot --apache -d arkivarium.no (replace arkivarium.no with your domain). Install the certificates for arkivarium.no and add a redirect to https in certbot. Install the Apache 2 HTTP daemon and enable the modules ssl, proxy and proxy_http: apt-get install apache2-bin a2enmod ssl a2enmod proxy a2enmod proxy_http
Configure the Apache 2 HTTPD proxy and proxy_http module in /etc/apache2/sites-available/000-noark5v4.conf to access http://localhost:8092/noark5v4/ on http://arkivarium.no/noark5v4/ (replace the domain arkivarium.no with your own domain): IfModule mod_proxy.c Location /noark5v4 ProxyPass http://localhost:8092/noark5v4/ ProxyPassReverse http://localhost:8092/noark5v4/ RequestHeader set X-Forwarded-Proto "https" ProxyPreserveHost On /Location /IfModule
Add a symbolic link from /etc/apache2/sites-available/000-noark5v4.conf to /etc/apache2/sites-enabled/000-noark5v4.conf cd /etc/apache2/sites-enabled/ ln -s /etc/apache2/sites-available/000-noark5v4.conf
Restart the HTTPD configuration with service apache2 restart
Lykke til. nginx tror jeg ikke fungerer som frontend til Nikita. Dette oppsettet var det som kjørte og fungerte på nikita.oslomet.no.
Jeg rakk dessverre ikke å sette opp en lokal instans av nikita på NTNU, men er tilbake ved OsloMet til høsten og kan kanskje bistå med
nylig oppdaterte kunnskaper innen cybersikkerhet og datanettverksteknologi med Openstack, webteknologier som HTML, CSS3, Rust og NodeJS/NPM. Hvis du får nginx til å fungere som webfrontend til Nikita, så skriv gjerne oppsettet ned, så kan jeg legge det til i https://github.com/arkivarium/book
Mvh, Ole
On Tuesday, 25 February 2025 at 15:26:22 +01:00, Petter Reinholdtsen <pere@hungry.com> wrote:
Det ser ut til at samvirke mellom nginx og Nikita kan endre opp med en ugyldig databasetilstand. Jeg testet nettopp import-email av hele testmboxen, og det feilet. Feilen opptrer ikke Når nginx ikke står forran Nikita. Her er importfeilen jeg ser:
% ./import-email --saksmappe --baseurl https://nikita.example.com/noark5v5/ --client_id nikita_client --username user --password prompt --mbox testdata/nikita-noark.mbox --maxinserts 100000 [...] 1.43 s per insert/email (249 inserted, 249 seen) Looking for msgid: VI1PR04MB132731D552E24DB0C554144092F80@VI1PR04MB1327.eurprd04.prod.outlook.com MappeID: dict_keys([]) format ignore for multipart/alternative not known by API, asking API to pick format code format None for text/plain not known by API, asking API to pick format code format None for text/html not known by API, asking API to pick format code Identifiers: [] 1.83 s per insert/email (250 inserted, 250 seen) Looking for msgid: <2fly3tpumnw.fsf@diskless.uio.no> Identifiers: [] 0.92 s per insert/email (251 inserted, 251 seen) Looking for msgid: <2flvaotulrs.fsf@diskless.uio.no> error: upload threw exception, removing object: HTTP Error 413: Request Entity Too Large Traceback (most recent call last): File "/home/user/noark5-tester/./import-email", line 474, in createDocumentObject (c, res) = self.post(str(newfilehref), content, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/lib/n5core/endpoint.py", line 216, in post return self._post(path, data, mimetype, length, accept, headers); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/lib/n5core/endpoint.py", line 235, in _post response = urlopen(request) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 216, in urlopen return opener.open(url, data, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 525, in open response = meth(req, response) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 634, in http_response response = self.parent.error( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 563, in error return self._call_chain(*args) ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 496, in _call_chain result = func(*args) ^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 643, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 413: Request Entity Too Large
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/home/user/noark5-tester/./import-email", line 871, in <module> exit(main()) ^^^^^^ File "/home/user/noark5-tester/./import-email", line 868, in main return t.load() != True ^^^^^^^^ File "/home/user/noark5-tester/./import-email", line 856, in load return self.loadMbox() ^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./import-email", line 829, in loadMbox if not self.uploadEmail(message): ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./import-email", line 762, in uploadEmail return self.addMessageToFile(threadfile, message) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./import-email", line 678, in addMessageToFile if not self.createDocumentObject(docdescinfo, docobjdata, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./import-email", line 480, in createDocumentObject self.delete(o) File "/home/user/noark5-tester/lib/n5core/endpoint.py", line 341, in delete response = opener.open(request) ^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 525, in open response = meth(req, response) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 634, in http_response response = self.parent.error( ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 563, in error return self._call_chain(*args) ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 496, in _call_chain result = func(*args) ^^^^^^^^^^^ File "/usr/lib/python3.11/urllib/request.py", line 643, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 400: %
Loggen fra Nikita viser følgende:
Feb 25 15:00:42 nikitatest.uio.no java[1390091]: 2025-02-25T15:00:42.363+01:00 ERROR 1390091 --- [Nik ita Noark 5 Core (using Postgres)] [.1-8092-exec-10] a.w.s.e.GlobalETAGExceptionHandler : Canno t invoke "String.length()" because "checksum" is null
Dette får så export-all til å feile etter at et dokumentobjekt returneres uten sjekksum:
% ./export-all --xml --baseurl https://nikita.example.com/noark5v5/ --client_id nikita_client --username user --password prompt [...] Traceback (most recent call last): File "/home/user/noark5-tester/./export-all", line 1657, in <module> exit(main()) ^^^^^^ File "/home/user/noark5-tester/./export-all", line 1652, in main return t.recurse_xml() ^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./export-all", line 1434, in recurse_xml self.recurse_xml_save_journal( File "/home/user/noark5-tester/./export-all", line 1385, in recurse_xml_save_journal callback() File "/home/user/noark5-tester/./export-all", line 1435, in <lambda> lambda : self.recurse_xml_save_endringslogg( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./export-all", line 1348, in recurse_xml_save_endringslogg callback() File "/home/user/noark5-tester/./export-all", line 1436, in <lambda> lambda : self.recurse_xml_arkiv(output, arkiv, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/noark5-tester/./export-all", line 1181, in recurse_xml_arkiv self.recurse_xml_out_ordered(output, 'arkiv', content, sequence, attr=attr, parents=parents) File "/home/user/noark5-tester/./export-all", line 307, in recurse_xml_out_ordered k[1](output, sub, parents=[origcontent,]+parents) File "/home/user/noark5-tester/./export-all", line 1117, in recurse_xml_arkivdel self.recurse_xml_out_ordered(output, 'arkivdel', content, sequence, parents=parents) File "/home/user/noark5-tester/./export-all", line 307, in recurse_xml_out_ordered k[1](output, sub, parents=[origcontent,]+parents) File "/home/user/noark5-tester/./export-all", line 979, in recurse_xml_mappe self.recurse_xml_out_ordered(output, 'mappe', content, sequence, attr=attr, parents=parents) File "/home/user/noark5-tester/./export-all", line 307, in recurse_xml_out_ordered k[1](output, sub, parents=[origcontent,]+parents) File "/home/user/noark5-tester/./export-all", line 887, in recurse_xml_registrering self.recurse_xml_out_ordered(output, 'registrering', content, sequence, attr=attr, parents=parents) File "/home/user/noark5-tester/./export-all", line 307, in recurse_xml_out_ordered k[1](output, sub, parents=[origcontent,]+parents) File "/home/user/noark5-tester/./export-all", line 616, in recurse_xml_dokumentbeskrivelse self.recurse_xml_out_ordered(output, 'dokumentbeskrivelse', content, sequence, parents=parents) File "/home/user/noark5-tester/./export-all", line 307, in recurse_xml_out_ordered k[1](output, sub, parents=[origcontent,]+parents) File "/home/user/noark5-tester/./export-all", line 506, in recurse_xml_dokumentobjekt filename = '%s-%s.%s' % (content['sjekksumAlgoritme'], content['sjekksum'], suffix)
KeyError: 'sjekksum' % Jeg antar utløseren for denne feilen ligger i lav opplastingsgrense i nginx, og kan fikses med "client_max_body_size 20M;" eller tilsvarende, men Nikita bør uansett ikke endre opp med e ugyldig dokumentobjekt-instans når dette skjer. -- Vennlig hilsen Petter Reinholdtsen _______________________________________________ nikita-noark mailing list -- <nikita-noark@nuug.no> To unsubscribe send an email to <nikita-noark-leave@nuug.no>
Hei,
Jeg tror at det kan være et problem med certbot-sertifikatet (mangler tilgang til https://nikitatest.uio.no/) eller lokalt DNS-problem.
Kan dette skyldes at du kaller --baseurl https://nikita.example.com/noark5v5/ i stedet for --baseurl https://nikitatest.uio.no/noark5v5/?
Eller har du satt nikita.example.com i /etc/hosts til å peke mot 129.240.15.244 (nikitatest.uio.no)?
Du finner konfigurasjonsinformasjon for Apache HTTPD og Nikita bak brannmurer med https basert på certbot-auto og Apache-modulen mod_rewrite i https://github.com/arkivarium/book
Korreksjoner i /etc/apache2/sites-available/000-default.conf
Configure Apache 2 in /etc/apache2/sites-available/000-default.conf
<VirtualHost nikitatest.uio.no:80> ServerName nikitatest.uio.no ServerAdmin pre@usit.uio.no DocumentRoot /var/www/html/nikita-noark5-core/web/ ErrorLog ${APACHE_LOG_DIR}/nikitatest.uio.no-error.log CustomLog ${APACHE_LOG_DIR}/nikitatest.uio.no-access.log combined </VirtualHost>
<VirtualHost nikitatest.uio.no:80
ServerName nikitatest.uio.noServerAdmin pre@usit.uio.no DocumentRoot /var/www/html/nikita-noark5-core/web/ ErrorLog ${APACHE_LOG_DIR}/nikitatest.uio.no-error.log CustomLog ${APACHE_LOG_DIR}/nikitatest.uio.no-access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =nikitatest.uio.no RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
Replace {www.} http://www.}arkivarium.nonikitatest.uio.no with your own domain name and configure DNS settings.
Add DNS records on the name servers for your domain to the IP address of your web server.
nikitatest.uio.no A 178.255.144.179 http://www.nikitatest.uio.no A 178.255.144.179
Remember to replace the domain arkivarium.no and IP address 178.255.144.179 with the actual domain and IP address of your web server running Apache.
Enable HTTPD configuration in /etc/apache2/sites-enabled/000-default.conf
Download certbot-auto from https://certbot.eff.org/ and run certbot --apache -d nikitatest.uio.no (replace nikitatest.uio.no with your domain). Install the certificates for arkivarium.no and add a redirect to https in certbot.
Install the Apache 2 HTTP daemon and enable the modules ssl, proxy and proxy_http:
apt-get install apache2-bin a2enmod ssl a2enmod proxy a2enmod proxy_http
Configure the Apache 2 HTTPD proxy and proxy_http module in /etc/apache2/sites-available/000-noark5v4.conf to access http://localhost:8092/noark5v4/ on http:/(nikitatest.uio.no/noark5v4/ http://arkivarium.no/noark5v4/ (replace the domain nikitatest.uio.no with your own domain): IfModule mod_proxy.c Location /noark5v4 ProxyPass http://localhost:8092/noark5v4/ ProxyPassReverse http://localhost:8092/noark5v4/ RequestHeader set X-Forwarded-Proto "https" ProxyPreserveHost On /Location /IfModule
Add a symbolic link from /etc/apache2/sites-available/000-noark5v4.conf to /etc/apache2/sites-enabled/000-noark5v4.conf cd /etc/apache2/sites-enabled/ ln -s /etc/apache2/sites-available/000-noark5v4.conf
Restart the HTTPD configuration with service apache2 restart
Lykke til. nginx tror jeg ikke fungerer som frontend til Nikita. Dette er oppsettet var det som kjørte og fungerte på nikita.oslomet.no i 2017. Jeg rakk dessverre ikke å sette opp en lokal instans av nikita på NTNU, men er tilbake ved OsloMet til høsten og kan kanskje bistå med nylig oppdaterte kunnskaper innen cybersikkerhet og datanettverksteknologi med Openstack, webteknologier som HTML, CSS3, Rust og NodeJS/NPM.
Hvis du får nginx til å fungere som webfrontend til Nikita, så skriv gjerne oppsettet ned, så kan jeg legge det til i https://github.com/arkivarium/book
Mvh,
Ole Aamot
Det som utløser feilen er lav opplastingsgrense i nginx, som fikses med "client_max_body_size 20M;" i oppsettet av nginx. For å unngå at det vises frem ufullstendige dokumentobjekt-instanser til Nikita-klienter foreslår jeg endringen beskrevet i <URL: https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/pull/317 >.
Selv uten feil ved opplastingen så vil en ved å returnere ufullstendig registrerte dokumentobjekt-instanser hvis følgende hendelser skjer i sekvens:
(1) API-klient 1 oppretter et dokumentobjekt O.
(2) API-klient 2 lister ut dokumentobjekt der nyopprettede instans O er med.
(3) API-klient 1 laster opp fil til dokumentobjekt O.
Dette vil også skje hvis opplasting feiler som beskrevet i trådstarter, men kan altså skje uten at noe har feilet.
Jeg tenker steg (2) bør unngås. Et alternativ er naturligvis å dokumentere bedre i N5TG at en kan få returnert ufullstendig registrerte dokumentobjekt-instanser, forklare hvordan identifisere dem og at disse ikke skal avleveres i et Noark 5-uttrekk.
[Petter Reinholdtsen]
Det som utløser feilen er lav opplastingsgrense i nginx, som fikses med "client_max_body_size 20M;" i oppsettet av nginx. For å unngå at det vises frem ufullstendige dokumentobjekt-instanser til Nikita-klienter foreslår jeg endringen beskrevet i <URL: https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/pull/317 >.
Hm, så vidt jeg kan se fra koden i Nikita, så er det meningen at dette skal være implementert oppførsel. I src/main/java/app/domain/noark5/DocumentDescription.java linje 382 står følgende:
public List<DocumentObject> getReferenceDocumentObject() { /* Filter out incomplete DocumentObject entries, and only * return those with a uploaded file. Include entries are * only available for the one creating it to avoid Noark 5 * breaking hiearcies. */ List<DocumentObject> documentObjects = new ArrayList<DocumentObject>(); for (DocumentObject documentObject : referenceDocumentObject) { if (null != documentObject.getOriginalFilename()) { documentObjects.add(documentObject); } } return documentObjects; }
Men av en eller annen grunn returnerer listen over underliggende dokumentobjekter også de uten filer. Hva går galt her?
Fra det jeg klarer å se så blir ikke den koden gitt muligheten til å filtrere bort dokumentobjektene.
nikita oppretter dokumentobjekt lenkene for et dokumentbeskrivelse ved serialisering i
src/main/java/app/webapp/payload/builder/noark5/DocumentDescriptionLinksBuilder:136
@Override public void addDocumentObject(ISystemId entity, ILinksNoarkObject linksNoarkObject) { --> List<DocumentObject> documentObjects = ((DocumentDescription) entity).getReferenceDocumentObject(); if (! documentObjects.isEmpty()) { linksNoarkObject.addLink(entity, new Link(getOutgoingAddress() + HREF_BASE_DOCUMENT_DESCRIPTION + SLASH + entity.getSystemIdAsString() + SLASH + DOCUMENT_OBJECT, REL_FONDS_STRUCTURE_DOCUMENT_OBJECT, false)); } }
Linjen markert --> brukes for å sjekke om dokumentbeskrivelsen inneholder dokumentobjekter. Dersom du har 2 dokumentobjekter, en der originalFilename == "" og en der originalFilename == null, så vil lenken fra dokumentbeskrivelse til dokumentobjekt skrives ut i nyttelasten.
Lenken som blir produsert er
https://n5.example.com/api/arkivstruktur/dokumentbeskrivelse/9ee41886-bc55-1...
Denne lenken vil da hente alle dokumentobjekter uansett om originalFilename == null fordi det hentes ut her:
I src/main/java/app/domain/noark5/DocumentDescriptionService.java:283 er følgende kode
@Override public DocumentObjectLinks findAllDocumentObjectWithDocumentDescriptionBySystemId( @NotNull final UUID systemId) { getDocumentDescriptionOrThrow(systemId); return (DocumentObjectLinks) processODataQueryGet(); }
Slik det er nå så produserer koden en riktig svar gitt logikken, men det er et annet logikk som er ønsket.
Jeg tror det har vært tenkt at vi har et behov for å kunne legge til serverside OData tillegg, men at vi har aldri tatt det i bruk. Jeg ser i src/main/java/app/service/noark5/odata/ODataService:138;
public LinksNoarkObject processODataQueryGet(String odataAppend)
at det kanskje er mulig å legge til kriteria for søk "$filter=originalFilename ne null"
feks return (DocumentObjectLinks) processODataQueryGet("$filter=originalFilename ne null");
Thomas
________________________________ Fra: Petter Reinholdtsen pere@hungry.com Sendt: fredag 28. februar 2025 10:19 Til: nikita-noark@nuug.no nikita-noark@nuug.no Emne: Re: Problem med import-email etterlater Nikita i ugyldig tilstand
[Petter Reinholdtsen]
Det som utløser feilen er lav opplastingsgrense i nginx, som fikses med "client_max_body_size 20M;" i oppsettet av nginx. For å unngå at det vises frem ufullstendige dokumentobjekt-instanser til Nikita-klienter foreslår jeg endringen beskrevet i <URL: https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com...https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/pull/317 >.
Hm, så vidt jeg kan se fra koden i Nikita, så er det meningen at dette skal være implementert oppførsel. I src/main/java/app/domain/noark5/DocumentDescription.java linje 382 står følgende:
public List<DocumentObject> getReferenceDocumentObject() { /* Filter out incomplete DocumentObject entries, and only * return those with a uploaded file. Include entries are * only available for the one creating it to avoid Noark 5 * breaking hiearcies. */ List<DocumentObject> documentObjects = new ArrayList<DocumentObject>(); for (DocumentObject documentObject : referenceDocumentObject) { if (null != documentObject.getOriginalFilename()) { documentObjects.add(documentObject); } } return documentObjects; }
Men av en eller annen grunn returnerer listen over underliggende dokumentobjekter også de uten filer. Hva går galt her?
-- Vennlig hilsen Petter Reinholdtsen _______________________________________________ nikita-noark mailing list -- nikita-noark@nuug.no To unsubscribe send an email to nikita-noark-leave@nuug.no
On Wednesday, 26 February 2025 at 00:32:46 +01:00, Ole Aamot ole@aamot.software wrote:
Configure the Apache 2 HTTPD proxy and proxy_http module in /etc/apache2/sites-available/000-noark5v4.conf to access http://localhost:8092/noark5v4/ on http:/(nikitatest.uio.no/noark5v4/ http://arkivarium.no/noark5v4/ (replace the domain nikitatest.uio.no with your own domain):
Korreksjoner i /etc/apache2/sites-available/000-noark5v5.conf (nytt filnavn og noark5v5/-prefix):
<IfModule mod_proxy.c> <Location /noark5v5>ProxyPass http://localhost:8092/noark5v5/ http://localhost:8092/noark5v4/ ProxyPassReverse http://localhost:8092/noark5v5/ http://localhost:8092/noark5v4/ RequestHeader set X-Forwarded-Proto "https" ProxyPreserveHost On
</Location> </IfModule> Mvh,
Ole Aamot