[kronolith] Default external calendar

Gerard Breiner gerard.breiner at ias.u-psud.fr
Mon Mar 19 15:41:45 UTC 2012


Le 19/03/2012 09:36, Jan Schneider a écrit :
>
> Zitat von gerard breiner <gerard.breiner at ias.u-psud.fr>:
>
>> gerard breiner <gerard.breiner at ias.u-psud.fr> a écrit :
>>
>>> Jan Schneider <jan at horde.org> a écrit :
>>>
>>>> Zitat von gerard breiner <gerard.breiner at ias.u-psud.fr>:
>>>>
>>>>> Jan Schneider <jan at horde.org> a écrit :
>>>>>
>>>>>> Zitat von Gerard Breiner <gerard.breiner at ias.u-psud.fr>:
>>>>>>
>>>>>>> Le 14/02/2012 15:37, Jan Schneider a écrit :
>>>>>>>>
>>>>>>>> Zitat von Martin Hochreiter <linuxbox at wavenet.at>:
>>>>>>>>
>>>>>>>>>> You cannot simply replace strings in the value copied from 
>>>>>>>>>> the database, because it is a serialized hash. Using 
>>>>>>>>>> $registry in prefs.local.php is not a good idea either.
>>>>>>>>>> Instead you should create a preference hook that builds the 
>>>>>>>>>> hash, and return it serialized.
>>>>>>>>>>
>>>>>>>>> what a pitty :)  ... ok, thank you I will create a hook for 
>>>>>>>>> that (new world for me...)
>>>>>>>>> What should I use instead of the $registry variable to get the 
>>>>>>>>> credentials - or is it ok
>>>>>>>>> to use it in the hooks?
>>>>>>>>
>>>>>>>> The prefs_init hook already gets the user name passed.
>>>>>>>>
>>>>>>> Hello ,
>>>>>>>
>>>>>>> I'm working on this too... So I followed the above Jan's advice 
>>>>>>>  and as well as read the very good doc 
>>>>>>> /horde/config/hooks.php.dist (many thanks for all the work). The 
>>>>>>> result is that I managed to create the remote calendar by 
>>>>>>> working with prefs and hooks.local.php.
>>>>>>>
>>>>>>> Here is what I've done :
>>>>>>> kronolit/config/prefs.local.php
>>>>>>>
>>>>>>> [CODE]
>>>>>>> // remote calendars
>>>>>>> $_prefs['remote_cals'] = array(
>>>>>>> 'value' => '',
>>>>>>> 'hook' => 'true',
>>>>>>> 'locked' => 'false'
>>>>>>> );
>>>>>>> [/CODE]
>>>>>>>
>>>>>>> [CODE]
>>>>>>> kronolith/config/hooks.local.phpclass Kronolith_Hooks
>>>>>>> {
>>>>>>> public function prefs_init($prefs, $value, $username, $scope_ob)
>>>>>>> {
>>>>>>>    switch ($prefs) {
>>>>>>>         case 'remote_cals':
>>>>>>>              $no_serialize = array(array('name'=>'Calendar',
>>>>>>>                                          
>>>>>>> 'url'=>'https://myurl/caldav.php/' .$username. '/agenda',
>>>>>>>                                          'user'=> $username
>>>>>>>    //                                    'password' => $password
>>>>>>>                                    )
>>>>>>>                             );
>>>>>>>            $value = serialize($no_serialize);
>>>>>>>            return $value;
>>>>>>>    }
>>>>>>> }
>>>>>>> }
>>>>>>> [/CODE]
>>>>>>>
>>>>>>> Nevertheless at this time I don't know how to catch the 
>>>>>>> password... If Jan look at this again I would appreciate a 
>>>>>>> little more hints about this last issue.
>>>>>>
>>>>>> Try $GLOBALS['registry']->getAuthCredential('password')
>>>>>>
>>>>>> Jan.
>>>>>>
>>>>>> -- 
>>>>>> The Horde Project
>>>>>> http://www.horde.org/
>>>>>>
>>>>>>
>>>>>> -- 
>>>>>> Kronolith mailing list
>>>>>> Frequently Asked Questions: http://horde.org/faq/
>>>>>> To unsubscribe, mail: kronolith-unsubscribe at lists.horde.org
>>>>>
>>>>> Many thanks Jan for this advice... This command give the password 
>>>>> without encodage (I tried it in admin/phpshell.php ). 
>>>>> Nevertheless  it seems that username and password are expecting as 
>>>>> something like : 
>>>>> s:4:"user";s:12:"PYnhqb8tbok=";s:8:"password";s:15:"PQ7F+FGnp7t="; .
>>>>
>>>> Sorry?
>>>>
>>>> -- 
>>>> The Horde Project
>>>> http://www.horde.org/
>>>>
>>>>
>>>> -- 
>>>> Kronolith mailing list
>>>> Frequently Asked Questions: http://horde.org/faq/
>>>> To unsubscribe, mail: kronolith-unsubscribe at lists.horde.org
>>>
>>> Probably misunderstanding from me... So followed your idea for 
>>> catching the password, here is what is my code now :
>>>
>>> kronolith/config/hooks.local.php
>>>
>>> [CODE]
>>> class Kronolith_Hooks
>>> {
>>>    public function prefs_init($prefs, $value, $username, $scope_ob)
>>>    {
>>>      switch ($prefs) {
>>>          case 'remote_cals':
>>>              $no_serialize = array(array('name'=>'Calendar',
>>>                                          
>>> 'url'=>'https://calendar.ias.u-psud.fr/caldav.php/' .$username. 
>>> '/calendar',
>>>                                          'user'=> $username,
>>>                                          'password' => 
>>> $GLOBALS['registry']->getAuthCredential('password')
>>>                                        )
>>>                                   );
>>>              $value = serialize($no_serialize);
>>>              return $value;
>>>        }
>>>   }
>>> }
>>> [/CODE]
>>>
>>> The remote calendar show up in the kronolith's interface but 
>>> credentials are still requested despite the user and password in 
>>> hooks.local.php.
>>>
>>> Best regards
>>>
>>> Gerard Breiner
>>>
>>> -- 
>>> Kronolith mailing list
>>> Frequently Asked Questions: http://horde.org/faq/
>>> To unsubscribe, mail: kronolith-unsubscribe at lists.horde.org
>>
>> Hello
>> Just for tests I added a few lines in the above code so that to save 
>> the $value variable in a file. We can see that each keys has 
>> respectively their values and the password is do catching.
>>
>> a:1:{i:0;a:4:{s:4:"name";s:10:"MyCalendar";s:3:"url";s:59:"https://davicalserver/caldav.php/gbreiner/calendar";s:4:"user";s:8:"gbreiner";s:8:"password";s:7:"1testpass2";}} 
>>
>>
>> Having said When I click on agenda (kronolith) and then click on 
>> "MyCalendar" I get the message (color red) saying that login and 
>> password are requested.
>> So I read again the docs into which it is said : "This hook is ONLY 
>> executed on login and preferences are cached during a user's 
>> session". So I'm wondering why I have to put again login and password 
>> in the form of "MyCalendar".
>>
>> I'm wondering where am I wrong....
>
> User name and password need to be encrypted with the user's password 
> and base64 encoded. See Kronolith::subscribeRemoteCalendar(). Or even 
> better: *use* subscribeRemoteCalendar().
>
> Jan.
>
Many thanks Jan!  Works very fine now .....
The code is now :

kronolith/config/hooks.local.php

[CODE]
namespace Kronolith\subscribeRemoteCalendar;
use Kronolith\subscribeRemoteCalendar;
class Kronolith_Hooks
{
     public function prefs_init($prefs, $value, $username, $scope_ob)
     {
         switch ($prefs) {
              case 'remote_cals':
                    $password = 
$GLOBALS['registry']->getAuthCredential('password');
                    $info = array(array('name'=>'MyCalendar',
                                               
'url'=>'https://calendar.ias.u-psud.fr/caldav.php/' .$username. '/calendar',
                                               'user'=> $user,
                                               'password' => $password
                                         )
                                  );
                $value =  subscribeRemoteCalendar($info);
                 return $value;
         }
    }
}
[/CODE]

kronolith/config/prefs.local.php

[CODE]
$_prefs['remote_cals'] = array(
     'value' => '',
     'hook' => 'true'
);

Best regards.

Gérard Breiner
[/CODE]




More information about the kronolith mailing list