(Please keep the list as recipient or CC.)

That error seems to imply that Mercurial isn't compatible with gearbox --log-file . That can perhaps be fixed or worked around, but for now just don't use that option.

The --debug and -v options to gearbox will just control output from gearbox. They will do anything for the logging from the Kallithea app. Kallithea logging is controlled inside the .ini .

Please just use a simple 'gearbox serve -c my.ini' as described on https://kallithea.readthedocs.io/en/stable/setup.html . You can find the relevant lines on the console, or redirect by adding ' 2> gb.log ' .

/Mads



On 3/5/20 7:22 PM, Reuben Popp wrote:
Hi Mads,

Still having trouble here.  I stopped the existing instance from supervisord, activated the kallithea-venv and then ran: ./kalliteha-venv/bin/gearbox --debug -vvvv --log-file gb.log serve -c kallithea/my.ini

The instance fails to start at all.  gb.log has a sizable stack trace, with the main fault showing:

File "/srv/kallithea-venv/lib64/python3.6/site-packages/mercurial/pycompat.py", line 148, in <module>
     stdout = sys.stdout.buffer
AttributeError: 'LazyWriter' object has no attribute 'buffer'

On Thu, Mar 5, 2020 at 11:36 AM Mads Kiilerich <[email protected] <mailto:[email protected]>> wrote:

    I'm not familiar with supervisord. I would expect the print output
    to show up in your stdout_logfile ... but only after a restart of
    supervisord (or your Kallithea service).

    Do you see other output in the log? What?
    Perhaps instead try
    log.error('Got ldap DN response %s: %r', user_dn, ldap_attrs)

    Perhaps also try temporarily running gearbox in the foreground as
    the Kallithea user, just for testing.

    (Others with a working AD/LDAP setup can perhaps also help out
    testing.)

    /Mads



    On 3/5/20 5:41 PM, Reuben Popp wrote:
    Okay, so I added that line, along with an additional line above
    it to print my name as a placeholder, but I'm not seeing this in
    the stdout file (I'm running kallithea using supervisord).  Is
    there something else I need to do or add to my.ini?

    Thanks again

    On Thu, Mar 5, 2020 at 9:48 AM Mads Kiilerich <[email protected]
    <mailto:[email protected]>> wrote:

        On 3/5/20 4:29 PM, Reuben Popp wrote:
        Good morning Mads (or afternoon as the case may be where
        you're at).

        My apologies that the report was so sparse. When I wrote it,
        I was neck deep in the middle of trying to get things set up
        for our architects to trial Kallithea.

        Yes, this was the default branch downloaded from the
        bitbucket mirror on February 25th.

        My original report and fix were incorrect.  With it in
        place, what I noticed was that while an Active Directory
        account could log in, it would prevent me from logging in
        using the (local) kallithea admin account.  My best guess
        here, being a relatively new python noob is that in the case
        of the kallithea admin account, the email was a string
        literal, which would then fail because there was no decode()
        method.  On the other hand, it would work for a byte string
        such as that coming from AD.

        That said, the following works for both AD and the local
        kallithea account:

        --- lib/helpers.py 2020-02-25 11:18:44.000000000 -0600

        +++ lib/helpers.py.new 2020-03-05 09:11:30.394700849 -0600

        @@ -951,6 +951,9 @@

             if email_address == _def:

                 return default

        +    if isinstance(email_address, bytes):

        +        email_address = email_address.decode('utf-8')

        +

             parsed_url =
        urllib.parse.urlparse(url.current(qualified=True))

             url = (c.visual.gravatar_url or
        User.DEFAULT_GRAVATAR_URL) \

                      .replace('{email}', email_address) \


        One thing of note though, and I think this is a deeper
        issue, as you said, and that's when I look at any AD user
        account in kallithea, each field (eg, first, last, etc) is
        enclosed in the byte (?) field delimiter.  eg:  b'Reuben'
        b'Popp'


        Yes, the problem seems to be that values retrieved from LDAP
        are byte encoded. They should be decoded in auth_ldap. But
        probably only some of the values. I would thus still need



            Can you try this and report back when it prints out when
            you log in
            using AD/LDAP?

            --- kallithea/lib/auth_modules/auth_ldap.py
            +++ kallithea/lib/auth_modules/auth_ldap.py
            @@ -326,6 +326,7 @@ class KallitheaAuthPlugin(auth_modules.K
                          aldap = AuthLdap(**kwargs)
                          (user_dn, ldap_attrs) =
            aldap.authenticate_ldap(username,
            password)
                          log.debug('Got ldap DN response %s', user_dn)
            +            print(ldap_attrs)

                          def get_ldap_attr(k):
                              return ldap_attrs.get(settings.get(k),
            [''])[0]


        /Mads



    _______________________________________________
    kallithea-general mailing list
    [email protected]
    <mailto:[email protected]>
    https://lists.sfconservancy.org/mailman/listinfo/kallithea-general


_______________________________________________
kallithea-general mailing list
[email protected]
https://lists.sfconservancy.org/mailman/listinfo/kallithea-general

Reply via email to