Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

RPCJSON - importer un fichier lss ou lsa

  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 4 months ago - 3 years 4 months ago #209649 by riqcles
Bonjour, tout est dans le titre, je n'y arrive pas.

Je vois dans la documentation qu'on peut importer un fichier lss ou lsa en encodant en Base64 le contenu du fichier (ou en indiquant le contenu du fichier xml pour le lss. pour le lsa..... :( ) en regardant beaucoup de topics sur le sujet en anglais ou en français.

J'ai remarqué celui-ci qui s'approche de ce que je veux faire, mais .... on ne saura jamais si il a réussi...:dry:

je rajoute le fichier que j'ai créé avec plusieurs essais (il peut servir pour d'autres) de différentes méthodes :

list_surveys($sessionKey,null); // pour avoir la liste des questionnaires
list_questions($sessionKey,315627,null); // si vous voulez plutôt la liste des questions d'un questionnaire en particulier, ici le numéro 315627

list_participants($sessionKey,947376,0,50); // si vous voulez plutôt la liste des participants d'un questionnaire en particulier, ici le numéro 947376
list_users($sessionKey,null); // si vous voulez plutôt la liste des utilisateurs de limesurvey


Ah aussi des pré-requis, qui m'ont demandé deux jours avant que cela fonctionne.


1. Ne pas avoir un environnement de développement qui a des fonctionnalités bloqués par son employeur :

Ne pouvant pas installer d'environnement dédié au développement, je me suis focalisé sur des applications portables sans installation....

Erreur ! certaines veulent modifier le fichier host (Laragon), Wamp et dérivé interdit chez moi.
Donc, vous ignorer les messages d'avertissements, les modules sont bien chargés, et ...le RPC ne fonctionne pas.

Après on essaye, sur un pc perso et cela fonctionne :laugh:
Donc, j'ai utilisé Uwamp et cela fonctionne....en local. Pour le réseau on verra plus tard.


2. Prendre les bons fichiers jsonRPCClient

Dans un post, il était indiqué de prendre les fichiers sur site associé à ce fichier : composer.jsonhttps://forums.limesurvey.org/forum/french-forum/115704-tutoriel-remote-control-api

mais pour moi, en indiquant le fichier du zip, cela ne fonctionnait pas.
J'ai pris celui de limesurvey :) et je l'ai mis dans mon installation Uwamp

Fichier présent ici : limesurvey\application\libraries


3. Utiliser le RPC hors du répertoire limesurvey

Le but est de permettre un appel sans agir sur le serveur.
Donc mon fichier se trouve à la racine de mon serveur Uwamp. Je mettrais une capture.


Donc, si une bonne âme voudrait me réaliser un fichier html qui contient un bouton pour choisir le fichier lss ou lsa.....

ou mieux !un ensemble de fichiers, car c'est pour ceci que je souhaite utiliser le RPC : soumettre 10 fichiers par exemple dans une interface, plutot que de réaliser dans limesurvey :
10 clics pour choisir - importer
10 clics pour choisir le fichier
10 clics pour pour appuyer sur OK
et 10 clics pour appuyer sur importer


...et 10 clics pour fermer la boite de dialogue.

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
Last edit: 3 years 4 months ago by riqcles. Reason: c'était pas beau :)
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago #209658 by DenisChenu
Replied by DenisChenu on topic RPCJSON - importer un fichier lss ou lsa
Je n'aurais perso pas fait comme cela :
Les fichiers LSA dans un répertoire
Le scrip PHP scan le répertoire
Importe tous les fichiers du répertoire

ca te va un truc comme cela ?

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The following user(s) said Thank You: riqcles
The topic has been locked.
  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 4 months ago #209659 by riqcles
Replied by riqcles on topic RPCJSON - importer un fichier lss ou lsa
Oui très bien :)

J'ai refait mon test d'execution du rpcjson en local, mais en activant le https pour le site limesurey (j'était en http) et j'ai le même message d'erreur que dans mon environnement réseau :

( ! ) Fatal error: Uncaught Exception: Incorrect response id: (request id: 1) in D:\Programmes\UwAmp\www\jsonrpcphp\jsonRPCClient.php on line 192
( ! ) Exception: Incorrect response id: (request id: 1) in D:\Programmes\UwAmp\www\jsonrpcphp\jsonRPCClient.php on line 192
Call Stack
# Time Memory Function Location
1 0.0005 357352 {main}( ) ...\liste3.php:0
2 0.0010 377624 jsonRPCClient->get_session_key( ) ...\liste3.php:20
3 0.0010 377896 jsonRPCClient->__call( ) ...\liste3.php:20


J'ai appelé mon script en http et https. Toujours la même erreur.
http://localhost:801/liste1.php
https://localhost/liste1.php



J'ai regardé la ligne indiqué dans le fichier jsonRPCClient.php et en remontant un peu je vois ceci :

// performs the HTTP POST
if ($this->enableCurl && is_callable('curl_init')) {
// use curl when available; solves problems with allow_url_fopen
$ch = curl_init($this->url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(


mon serveur sur le réseau réalise automatiquement une rediction http vers https.


Alors, question : le https est bien géré par le fichier jsonRPCClient.php ou je me plante sur ma façon de procéder ?

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago #209660 by DenisChenu
Replied by DenisChenu on topic RPCJSON - importer un fichier lss ou lsa
En mode ligne de commande , c'est plus simple ( blog.emmanuelgautier.fr/configurer-la-li...de-php-sous-windows/ )

Pour le lien à mettre : il faut que tu prenne celui de l'interface. Ce n'est que celui-ci qui sera valide. Mais ton PC local peut y accéder ?


le script : gitlab.com/-/snippets/2051782

Le tout est dans le répertoire. Tu peut tenter de lancer via index.php avec le navigateur, mais il faudra adapter un peu le retour (et en général : le retour HTML ne se fait que à la fin, c'est pour cela que par la ligne de commande c'est mieux (en plus en CLI : pas de limite de temps …)

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The following user(s) said Thank You: riqcles
The topic has been locked.
  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 4 months ago #209662 by riqcles
Replied by riqcles on topic RPCJSON - importer un fichier lss ou lsa
Ok je vais tester ceci.

Par contre la ligne de commande pas d'accès (pas les droits d'admin sur mon poste) car je ne peux pas modifier les paramètres.

L'envie de brancher mon ordi perso est tellement grande, mais il ne fonctionnera pas sur le réseau.

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 4 months ago #209663 by riqcles
Replied by riqcles on topic RPCJSON - importer un fichier lss ou lsa
Pour le lien à mettre : il faut que tu prenne celui de l'interface. Ce n'est que celui-ci qui sera valide. Mais ton PC local peut y accéder ?

Si c'est celui ci en http ou https, oui je peux :

https://localhost/limesurvey/index.php/admin/remotecontrol

Bien qu'en https, j'ai le problème indiqué plus haut.

Bon, un café et je regarde ceci dans la soirée :)

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago #209664 by DenisChenu
Replied by DenisChenu on topic RPCJSON - importer un fichier lss ou lsa
Mais c'est pas sur localhost que tu veux importer test lsa/lss. C'est pour le test ?

un «Uncaught Exception: Incorrect response id» c'est une problème de configuration au niveau du serveur LimeSurvey, oui cela paut être le HTTPS ou autre mais rien de sur.


Sinon : OK tu peux mlancer via index.php ,
Tu peux tenter d'ajouter un set_time_limit(12000); dans la boucle en elle même.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 4 months ago #209665 by riqcles
Replied by riqcles on topic RPCJSON - importer un fichier lss ou lsa
Bon, j'ai pas attendu le soir :).
Oui je commence les tests sur le localhost pour après creuser sur le reseau.

En tout cas il n'aime pas le https, ça ne veux pas fonctionner.
J'ai remis Limesurvey en http dans la config (chose étrange, dans la BDD lorsque du ssl est resté à on).

j'ai modifié temporairement le path pour tester en ligne de commande.

Ah oui, la version en localhost : Version 3.25.4+201215

Voici mes résultats :
en ligne :
D:\Programmes\UwAmp\bin\php\php-7.0.3>set path=%path%;D:\Programmes\UwAmp\bin\php\php-7.0.3

D:\Programmes\UwAmp\bin\php\php-7.0.3>cd ..

D:\Programmes\UwAmp\bin\php>php -v
PHP 7.0.3 (cli) (built: Feb 2 2016 14:41:12) ( ZTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

D:\Programmes\UwAmp\bin\php>cd ../..

D:\Programmes\UwAmp>cd www

D:\Programmes\UwAmp\www>cd RPCImportSurveys

D:\Programmes\UwAmp\www\RPCImportSurveys>php importtSurveys.php

Warning: fopen(http://localhost:801/limesurvey/index.php?r=admin/remotecontrol): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request
in D:\Programmes\UwAmp\www\RPCImportSurveys\vendor\src\org\jsonrpcphp\JsonRPCClient.php on line 175


///////////
Il n'aime pas le ?r (j'ai remis l'url complète)
/////////


Fatal error: Uncaught Exception: Unable to connect to http://localhost:801/limesurvey/index.php?r=admin/remotecontrol in D:\Programmes\UwAmp\www\RPCImportSurveys\vendor\src\org\jsonrpcphp\JsonRPCClient.php:181
Stack trace:
#0 D:\Programmes\UwAmp\www\RPCImportSurveys\importtSurveys.php(11): org\jsonrpcphp\JsonRPCClient->__call('get_session_key', Array)
#1 {main}
thrown in D:\Programmes\UwAmp\www\RPCImportSurveys\vendor\src\org\jsonrpcphp\JsonRPCClient.php on line 181

/////////
Pas mieux, je cherche
////////



D:\Programmes\UwAmp\www\RPCImportSurveys>php importtSurveys.php

Warning: fopen(http://localhost:801/limesurvey/index.phpadmin/remotecontrol): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in D:\Programmes\UwAmp\www\RPCImportSurveys\vendor\src\org\jsonrpcphp\JsonRPCClient.php on line 175

/////////
Une faute de frappe dans index.phpadmin (j'ai oublié le / )
////////


Fatal error: Uncaught Exception: Unable to connect to http://localhost:801/limesurvey/index.phpadmin/remotecontrol in D:\Programmes\UwAmp\www\RPCImportSurveys\vendor\src\org\jsonrpcphp\JsonRPCClient.php:181
Stack trace:
#0 D:\Programmes\UwAmp\www\RPCImportSurveys\importtSurveys.php(12): org\jsonrpcphp\JsonRPCClient->__call('get_session_key', Array)
#1 {main}
thrown in D:\Programmes\UwAmp\www\RPCImportSurveys\vendor\src\org\jsonrpcphp\JsonRPCClient.php on line 181

/////////
La, j'ai compris que le ssl était encore actif dans la BDD
///////


D:\Programmes\UwAmp\www\RPCImportSurveys>php importtSurveys.php

D:\Programmes\UwAmp\www\RPCImportSurveys>

//// donc la plus de problème.

mais je n'ai eu aucun questionnaires importés.

J'ai essayé avec le navigateur et c'est pareil, la page tourne et me rends la main et toujours pas de questionnaires importés.

Je vais regarder pour activer le debug et voir.

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago #209666 by DenisChenu
Replied by DenisChenu on topic RPCJSON - importer un fichier lss ou lsa
Pas de ssl sur localhost : bien sur …

Premier test : arrive tu à aller sur http://localhost:801/limesurvey/index.phpadmin/remotecontrol ?

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The following user(s) said Thank You: riqcles
The topic has been locked.
  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 4 months ago #209680 by riqcles
Replied by riqcles on topic RPCJSON - importer un fichier lss ou lsa
Oui pas de soucis.

Si je passe le serveur (Uwamp) et le site en https aussi.

(? pourquoi pas de ssl sur le localhost ?).

Je me demandais si la librairie jsonRPCClient.php n'est pas un peu ancienne et pourrait être gênée par les nouvelles politiques de sécurité dans les pare-feux.

un ami m'a indiqué cette possibilité :
/////////////
juste avant la ligne 162, le PHP configure curl avec des options. Or il est possible que toutes ces options ne soient pas adaptées.
////////////

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 4 months ago #209684 by riqcles
Replied by riqcles on topic RPCJSON - importer un fichier lss ou lsa

DenisChenu wrote: Mais c'est pas sur localhost que tu veux importer test lsa/lss. C'est pour le test ?

un «Uncaught Exception: Incorrect response id» c'est une problème de configuration au niveau du serveur LimeSurvey, oui cela paut être le HTTPS ou autre mais rien de sur.


Sinon : OK tu peux mlancer via index.php ,
Tu peux tenter d'ajouter un set_time_limit(12000); dans la boucle en elle même.


Bon, j'ai trouvé pourquoi cela ne fonctionne pas.

1. serveur http et site http --> ok c'est bon
2. serveur https et site https --> ok c'est bon
3. serveur https et forcer https dans l'application (ssl dans la BBD) --> KO : Fatal error: Uncaught Exception: Incorrect response id: (request id: 1)


Donc, si le https n'est pas forcé, cela fonctionnera pour une installation standard.

Pour mon réseau cela ne fonctionne pas, mais on a mis plein de sécurité (exemple ceci : Header always set Content-Security-Policy "default-src 'self'; upgrade-insecure-requests; frame-ancestors 'none'")


et comme c'est la sécurité....

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
  • riqcles
  • riqcles's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
More
3 years 4 months ago #209685 by riqcles
Replied by riqcles on topic RPCJSON - importer un fichier lss ou lsa
J'ai aussi résolu mon problème pour le fichier JsonRPCClient.php

Dans la documentation de limesurvey pour le rpc :

manual.limesurvey.org/RemoteControl_2_API#PHP_Example

et plus particulèrement ceci pour le php :
// without composer this line can be used
// require_once 'path/to/your/rpcclient/jsonRPCClient.php';
// with composer support just add the autoloader


donc, si vous téléchargez le fichier du site du composer.json , le fichier contient ceci en ligne 31 :
namespace org\jsonrpcphp;

ceci est inexistant dans le fichier JsonRPCClient.php de LimeSurvey (d'ailleur, le fichier est nommé comme ça : jsonRPCClient.php)

Parfois sur le forum, il y a des solutions avec le deuxième nom.

LimeSurvey version 3.22.19
OS : CentOS 7.9 / PHP 7.2.4
BDD : PostGresql 11.x /

Future LimeSurvey version 6.4.1
OS : CentOS 7.9 / RockyLinux / PHP 8.2
BDD : PostGresql 15.x
The topic has been locked.
Moderators: Nickko

Lime-years ahead

Online-surveys for every purse and purpose