Management Console Login fails due to Leap Year


#1

Hello,
At the moment it is possible that the login to the Management Console fails without an error message or with a misleading error. In the Console Log there appears the following Traceback:

29.02.16 00:42:31.533 MAIN ( PROCESS ) : SessionClient(0x4478f50): _authenticated: success=True status=200 message=None 29.02.16 00:42:31.534 MAIN ( ERROR ) : Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/cherrypy/_cprequest.py", line 656, in respond response.body = self.handler() File "/usr/lib/python2.7/dist-packages/cherrypy/lib/encoding.py", line 188, in __call__ self.body = self.oldhandler(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/cherrypy/_cpdispatch.py", line 34, in __call__ return self.callable(*self.args, **self.kwargs) File "/usr/sbin/univention-management-console-web-server", line 1010, in default return self._auth_request(req, sessionid) File "/usr/sbin/univention-management-console-web-server", line 1035, in _auth_request self.set_session(sessionid, username) File "/usr/sbin/univention-management-console-web-server", line 699, in set_session self.set_cookies(('UMCSessionId', sessionid), ('UMCUsername', username)) File "/usr/sbin/univention-management-console-web-server", line 678, in set_cookies expires = expires.replace(year=expires.year + 5) ValueError: day is out of range for month

This Problem is due to a leap year and can be fixed by using the following commands:

sed -i 's|expiration.year + 5)|expiration.year + 4)|' /usr/sbin/univention-management-console-web-server sed -i 's|expires.year + 5)|expires.year + 4)|' /usr/sbin/univention-management-console-web-server /etc/init.d/univention-management-console-web-server restart

Additionally, we will provide an Erratum today, that will fix this behaviour.

Kind Regards,
Jens Thorp-Hansen


Starting Univention Directory Policy failed
#2

UCS 4.1 installation using the ISO seems to be impossible. The UMC domain setup wizard that follows after the packages installation is stuck and returns error message:

If I press Alt+F4 I get terminal (unassigned-hostname login) where I can login only as root, not as Administrator. If I run

sed -i 's|expires.year + 5)|expires.year + 4)|' /usr/sbin/univention-management-console-web-server[/code] and [code]/etc/init.d/univention-management-console-web-server restart

I receive error message:

[info] Restarting Univention Management Console Web Server. File "/usr/sbin/univention-management-console-web-server", line 679 cookie = cherrypy.response.cookie ^ SyntaxError: invalid syntax done.

Also connection through SSH returns

Reboot didn’t help. What would you recommend to do to fix it?


#3

It looks like something went wrong with the sed command. Maybe you missed the ) at the end?

Can you post the output of the following command?

grep -A 2 -B 2 "cookie =" /usr/sbin/univention-management-console-web-server

#4

I’ve just tested it. For me it worked in the following way:
[ul]
[li] Starting the installation via ISO image[/li]
[li] When the UMC error message is shown, I pressed --F3 and typed the following commands

chroot /target bash sed -i 's|expires.year + 5)|expires.year + 4)|' /usr/sbin/univention-management-console-web-server /etc/init.d/univention-management-console-web-server restart [/li]
[li] Switch back with -F5[/li]
[li] Reload UMC with F5[/li]
[li] Run the setup wizard and select “update system after setup” at the end of the installation which is pre-selected[/li][/ul]

Afterwards, I was able to reboot UCS and I could login into UMC. Sorry, for this really complicated way.

Tomorrow, it will work out-of-the-box again.


#5

I’ve double checked this and you are absolutely right. I fixed the typo by running

sed -i 's|expires.year + 4|expires.year + 4)|' /usr/sbin/univention-management-console-web-server

and

/etc/init.d/univention-management-console-web-server restart

Then rebooted and the domain setup wizard opened.

[quote=“Gohmann”]Can you post the output of the following command?

grep -A 2 -B 2 "cookie =" /usr/sbin/univention-management-console-web-server

[code]root@unassigned-hostname:~# grep -A 2 -B 2 “cookie =” /usr/sbin/univention-management-console-web-server
expires = datetime.datetime.now()
expires = expires.replace(year=expires.year + 4
cookie = cherrypy.response.cookie
for name, value in cookies:
name = self.suffixed_cookie_name(name)
__

    def get_cookie(self, name):
            cookie = cherrypy.request.cookie.get
            morsel = cookie(self.suffixed_cookie_name(name)) or cookie(name)
            if morsel:[/code]

Thank you Stefan for the command to troubleshoot the issue. The line expires = expires.replace(year=expires.year + 4 has now the missing ). :slight_smile: