[RCD] Plugin - AJAX GET request to cross domain

Thomas Bruederli thomas at roundcube.net
Mon Sep 26 21:45:33 CEST 2016


On Wed, Sep 21, 2016 at 3:03 AM, Joogl <jooglnetz at posteo.uk> wrote:
> Thank you Thomas,

Please try to reply to the mailinglist and not to me privately.
Otherwise you might wait for days until you get a response :-)
>
> I very appreciate it.
> Since I have to query an external API, I am calling it with cURL.
> But whenever I do this, I get an Internal Server Error Message. But I
> can't find any logs about it. When I try it in my local workspace,
> everything works fine.
> Does Roundcube forbid cURL?

Roundcube does not forbid anything. curl needs to be installed with
PHP on your server.

Fatal errors are logged into Roundcube's error log or the error log
file of your webserver.

~Thomas


> function sendCurl($url)
> {
>     $ch = curl_init($url);
>     $curlResult["msg"] = curl_exec($ch);
>     $curlResult["http"] = curl_getinfo($ch, CURLINFO_HTTP_CODE);
>     curl_close($ch);
>     return $curlResult;
> }
>
> Am 18.09.2016 um 23:20 schrieb Thomas Bruederli:
>> On Sun, Sep 18, 2016 at 10:53 AM, Joogl <jooglnetz at posteo.uk> wrote:
>>> Thanks a lot Thomas,
>>> was not too hard to be honest.
>>>
>>> But I still have problems with my values I want to transfer.
>>> Do I really have to use $_POST? I mean, for what reason do I have the
>>> $args variable?
>>
>> Actually, the $args variable is empty in this case.
>> In order to access request data, you should use the dedicated function [1]:
>>
>>   rcube_utils::get_input_value('someparam', rcube_utils::INPUT_GPC);
>>
>> This does proper input sanitization like html tag stripping and
>> charset conversion.
>> Use rcube_utils::INPUT_GET or rcube_utils::INPUT_POST to access GET or
>> POST parameters specifically.
>>
>> Regards,
>> Thomas
>>
>>
>> [1] https://github.com/roundcube/roundcubemail/blob/master/program/lib/Roundcube/rcube_utils.php#L252
>>
>>
>>> Am 17.09.2016 um 00:56 schrieb Thomas Bruederli:
>>>> On Mon, Sep 12, 2016 at 11:21 AM, Jakob Bachhuber <jakob-b at posteo.de> wrote:
>>>>> [...]
>>>>>
>>>>> Of course, I have read the documentation. I also analysed some other
>>>>> plugins, but it is still just random guessing for me.
>>>>
>>>> The relevant part for you is probably here:
>>>> https://github.com/roundcube/roundcubemail/wiki/Plugin-API#ajax-requests-and-callbacks
>>>>
>>>>> In my php I do:
>>>>> $this->register_action('plugin.someaction', array($this, 'actions'));
>>>>>
>>>>> and
>>>>>
>>>>> function actions($args)
>>>>> {
>>>>>        echo '<script type="text/javascript">alert("' . $args .
>>>>> '")</script>';
>>>>>        echo '<script type="text/javascript">alert("' . $args['value'] .
>>>>> '")</script>';
>>>>>        $this->rc->ouput->send();
>>>>> }
>>>>
>>>> The way to pass data back to the client is not using `echo` but send
>>>> it a "command" for which your plugin has already registered an event
>>>> listener:
>>>>
>>>>   $rcmail->output->command('plugin.somecallback', $args);
>>>>
>>>> Makes sense?
>>>>
>>>> ~Thomas
>>>>


More information about the dev mailing list