[horde] Horde_History has boolean auth() -> Re: in horde_histories history_who = 'f'
Steffen
skhorde at smail.inf.fh-bonn-rhein-sieg.de
Wed Mar 26 06:26:15 UTC 2014
On Tue, 25 Mar 2014, Michael M Slusarz wrote:
> Quoting Michael J Rubinsky <mrubinsk at horde.org>:
>
>> Quoting Steffen <skhorde at smail.inf.fh-bonn-rhein-sieg.de>:
>>
>>> On Thu, 20 Mar 2014, Jan Schneider wrote:
>>>
>>>> Zitat von "Jens-U. Mozdzen" <jmozdzen at nde.ag>:
>>>>
>>>>> Hi Steffen,
>>>>>
>>>>> Zitat von Steffen <skhorde at smail.inf.fh-bonn-rhein-sieg.de>:
>>>>>> if an user adds/deletes/... events via CalDAV or ActiveSync or Mnemos
>>>>>> or Tasks via "Task & notes" for Android, horde_histories gets an entry
>>>>>> where history_who is 'f'. I do not have no user 'f' and the users in
>>>>>> question do not configured this user 'f', but their own.
>>>>>>
>>>>>> I've created a backtrace for one issue, when prefs_init() called user
>>>>>> data for the non-existing user 'f'. Here _buildNote() called
>>>>>> getUserName(), which queried horde_histories, which returned 'f'. The
>>>>>> note is located in my notepad and I've setup the app to use my account.
>>>>>>
>>>>>> If I add a new note with "Task& notes" for Android, I get a new entry
>>>>>> in horde_histories with history_who = 'f'. The same applies, if I add a
>>>>>> new event with CalDAV clients in KDE and Android.
>>>>>>
>>>>>> Shouldn't history_who contain the username used to make the changes?
>>>>>> Besides the fact, that there might exist the user "f".
>>>>>> Or might there a configuration mistake?
>>>>
>>>> Cannot reproduce, my history table looks fine.
>>>>
>>>>> I just checked our according table - while most of the entries do have
>>>>> the user's email address in the history_who field, some do have "0".
>>>>> These entries seem to be spread access all applications - object_uid
>>>>> does start with "imp:", "turba:", "nag:", "kronolith:" and so on.
>>>>> "history_action" is "add, "modify", "delete" - so again spread.
>>>>
>>>> I see this on exactly 6 records, which I can lightheartedly justify with
>>>> some development reminiscence.
>>>>
>>>>> The first occurrence of such an extraordinary entry was at time stamp
>>>>> "1357325373" (Jan 4, 2013), mod_seq 382 - almost one year after the
>>>>> first history entry (Feb 2012) on this installation. The latest
>>>>> occurrence is from yesterday, so it happens with current code, too.
>>>
>>> In Horde/History.php
>>>
>>> // here $attributes contains only "action"
>>>
>>> if (!isset($attributes['who'])) {
>>> $attributes['who'] = $this->_auth;
>>> }
>>>
>>> // $this->_auth is "false", I mean:
>>> if(!is_string($attributes['who'])) {
>>> my_dump("Log User \$attr=".var_export($attributes,
>>> true)."\n");
>>> // overwrite boolean value
>>> $attributes['who'] = $GLOBALS['registry']->getAuth();
>>> }
>>>
>>> produces:
>>> Log User $attr=array (
>>> 'action' => 'add',
>>> 'who' => false,
>>> )
>>
>> Looks like this may be a chicken-egg problem with getting the history
>> driver from the injector. A quick grep shows there are places in the code
>> where we grab the history driver through the injector before we are
>> authenticated (like in Horde_Core_Factory_Auth, for instance). Since the
>> injector acts like a singleton when calling ->getInstance(), the history
>> driver will never have the current user's username.
>
> Possible solution: clear the Injector binding map after authentication?
> Although there is currently no way of doing this. Although... I guess we
> could destroy the global $injector variable and re-create. No idea whether
> this would cause problems elsewhere though.
>
> Or else don't log entries without 'who' information. History information is
> probably not useful for non-authenticated users.
The information to be logged stems from an _authentificated_ CalDAV or
ActiveSync session. So maybe the http authentification is not correctly
passed from rpc.php to Horde?
In prefs_init() hooks I also have requests for user "f", even if I
prevent that the Horde_History logs an entry with who=="f". So there is
some other spot that uses the wrong authentification as well.
--
Steffen
More information about the horde
mailing list