omeka-s-modules/Scripto

Issues getting Scripto to recognize MediaWiki API endpoint

Closed this issue · 1 comments

Omeka-S Team,

I'm attempting to get Scripto working with a mediawiki installation on the same box.

Scripto module version 1.4.1
Omeka S version 4.0.2
Mediawiki version 1.31.7

https://urexhibits.lib.rochester.edu/
https://mediawiki.urexhibits.lib.rochester.edu/

As you can see, both sites are accessible from the open internet, and have valid certs. Despite that, when I look to add the mediawiki URL [https://mediawiki.urexhibits.lib.rochester.edu/api.php] to the scripto configuration, I get

Invalid MediaWiki API. The URL must resolve to a MediaWiki API endpoint and the MediaWiki version must be 1.30.0 or greater.

There was a problem during configuration

As part of troubleshooting, I found this forum post
https://forum.omeka.org/t/omeka-s-and-module-scripto-error/12264

I first tried changing /config/local.config.php to reflect

'http_client' => [
        'adapter' => \Zend\Http\Client\Adapter\Curl::class,

        'sslcapath' => null,

        'sslcafile' => null,

    ],

as per Jim's post in that thread. After that failed, I realized that Zend is no more, and tried both

'http_client' => [
        'adapter' => \Laminas\Http\Client\Adapter\Curl::class,

        'sslcapath' => null,

        'sslcafile' => null,

    ],

and

'http_client' => [
        'adapter' => \laminas\Http\Client\Adapter\Curl::class,

        'sslcapath' => null,

        'sslcafile' => null,

    ],

to no avail. With all 3 versions of the config file, I also tried modifying my php.ini file in accordance with this stackoverflow post, as I was able to identify (through steps explained later) that this is indeed an SSL error, https://stackoverflow.com/questions/71909552/still-same-error-display-curl-error-60-ssl-certificate-problem-unable-to-get
With no change in stack trace.

Speaking of stack traces, in the Omeka Forums thread linked above, Jim later asks the user to modify /module/Scripto/src/Form/ModuleConfigForm.php to generate a stack trace on failure. With all configurations outlined here, my stack trace was as follows:

Laminas\Http\Client\Adapter\Exception\RuntimeException: Error in cURL request: SSL certificate problem: unable to get local issuer certificate in /var/www/html/vendor/laminas/laminas-http/src/Client/Adapter/Curl.php:546 Stack trace: #0 /var/www/html/vendor/laminas/laminas-http/src/Client.php(1477): Laminas\Http\Client\Adapter\Curl->write() #1 /var/www/html/vendor/laminas/laminas-http/src/Client.php(965): Laminas\Http\Client->doRequest() #2 /var/www/html/modules/Scripto/src/Mediawiki/ApiClient.php(1019): Laminas\Http\Client->send() #3 /var/www/html/modules/Scripto/src/Mediawiki/ApiClient.php(865): Scripto\Mediawiki\ApiClient->request() #4 /var/www/html/modules/Scripto/src/Form/ModuleConfigForm.php(77): Scripto\Mediawiki\ApiClient->querySiteInfo() #5 /var/www/html/vendor/laminas/laminas-validator/src/Callback.php(139): Scripto\Form\ModuleConfigForm->apiIsValid() #6 /var/www/html/vendor/laminas/laminas-validator/src/ValidatorChain.php(242): Laminas\Validator\Callback->isValid() #7 /var/www/html/vendor/laminas/laminas-inputfilter/src/Input.php(410): Laminas\Validator\ValidatorChain->isValid() #8 /var/www/html/vendor/laminas/laminas-inputfilter/src/BaseInputFilter.php(273): Laminas\InputFilter\Input->isValid() #9 /var/www/html/vendor/laminas/laminas-inputfilter/src/BaseInputFilter.php(226): Laminas\InputFilter\BaseInputFilter->validateInputs() #10 /var/www/html/vendor/laminas/laminas-form/src/Form.php(481): Laminas\InputFilter\BaseInputFilter->isValid() #11 /var/www/html/modules/Scripto/Module.php(140): Laminas\Form\Form->isValid() #12 /var/www/html/application/src/Controller/Admin/ModuleController.php(280): Scripto\Module->handleConfigForm() #13 /var/www/html/vendor/laminas/laminas-mvc/src/Controller/AbstractActionController.php(71): Omeka\Controller\Admin\ModuleController->configureAction() #14 /var/www/html/vendor/laminas/laminas-eventmanager/src/EventManager.php(319): Laminas\Mvc\Controller\AbstractActionController->onDispatch() #15 /var/www/html/vendor/laminas/laminas-eventmanager/src/EventManager.php(179): Laminas\EventManager\EventManager->triggerListeners() #16 /var/www/html/vendor/laminas/laminas-mvc/src/Controller/AbstractController.php(97): Laminas\EventManager\EventManager->triggerEventUntil() #17 /var/www/html/vendor/laminas/laminas-mvc/src/DispatchListener.php(132): Laminas\Mvc\Controller\AbstractController->dispatch() #18 /var/www/html/vendor/laminas/laminas-eventmanager/src/EventManager.php(319): Laminas\Mvc\DispatchListener->onDispatch() #19 /var/www/html/vendor/laminas/laminas-eventmanager/src/EventManager.php(179): Laminas\EventManager\EventManager->triggerListeners() #20 /var/www/html/vendor/laminas/laminas-mvc/src/Application.php(325): Laminas\EventManager\EventManager->triggerEventUntil() #21 /var/www/html/index.php(21): Laminas\Mvc\Application->run() #22 {main}

Any advice received is appreciated.

The server that runs your Omeka S installation cannot connect to your MediaWiki installation due to a problem with the SSL certificate.

I get this error when I attempt to connect using the socket adapter:

ErrorException: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed

I get this error when I attempt to connect using the curl adapter (same as your above):

Laminas\Http\Client\Adapter\Exception\RuntimeException: Error in cURL request: SSL certificate problem: unable to get local issuer certificate

Your MediaWiki API endpoint is accessible from my browser, but browsers are more tolerant of irregularities than other means of connectivity. Looking at your MediaWiki installation's SSL analysis, your server's certificate chain is incomplete. That may be the culprit. You'll have to speak with your server administrator to adjust the server's SSL configuration.