Quick Tip: After renaming hostname of Sametime server, DB2 doesn't start anymore

Category: Quick-Tipp, IBM Sametime, IBM DB2

Quick-TippIBM Sametime
I recently changed the name of a IBM Sametime server, i.e. the hostname of the (virtual) machine. On the same box runs the IBM DB2 server, which is used by the system console server and by the proxy server. Everything runs on top of Microsoft Windows 2008 R2.

After the necessary reboot, DB2 greeted me with a "SQL1042C An unexpected system error occurred" and would not start - neither as a service, neither manually. Even the DB2 command console exited immediately.
In the details of the logs I found a - more or less - informative message: "SQL1022C There is not enough memory available to process the command."
But more than 6 GB physical and about 20 GB of logical RAM were free!?!

After a long time and thorough research I found out that the error message was completely misleading.

DB2 on Windows stores some information about local users (in the form ServerName\UserName) and the hostname in the Windows registry, namely under the key HKEY_LOCAL_MACHINE\SOFTWARE\IBM\DB2\InstalledCopies\DB2COPY1\GLOBAL_PROFILE. (change "DB2COPY1" if your instance has another name).

I should have followed this document from the start: Changing hostname of the DB2 server, but I didn't like the idea to change back the hostname just to do the renaming the "right" way.

In the blog entry How do you rename the Windows machine name for a DB2 v9.1.x database? and its comments I found a faster, easier and more direct way to repair the DB2 installation:

Since it was an workgroup server edition (WSE) of DB2, there was no db2nodes.cfg to modifiy.

In a command prompt started as an adminstrator I executed:
  •  db2extsec -r
  •  db2extsec /a DB2ADMNS /u DB2USERS
  •  db2set -g DB2SYSTEM={NewHostName}
rebooted the machine and DB2 was up and running once more. Yay!  


Sicherheitslücke im Android Standardbrowser

Category: Administration, Android

Bereits Anfang September wurde offenbar eine nicht unbedingt kleine Sicherheitslücke im Android Standardbrowser AOSP entdeckt. Damals ist mir das leider entgangen. Ich wurde erst jetzt wieder darauf aufmerksam als golem erneut berichtete und feststellte, dass ca. 60% der deutschen Android-Nutzer davon betroffen sein dürften.
Betroffen sind nämlich Android Versionen < 4.4, die weltweit auf immer noch ca. 75% der Geräte kursieren.

Der Fehler betrifft die "Same-Origin-Policy", die verhindern soll, dass Webseiten über den Browser auf Inhalte anderer Webseiten zugreifen können. Durch die Lücke ist es präparierten Webseiten nun möglich, auch zum Beispiel auf die Cookies oder Inhalte anderer geöffneter Webseiten zuzugreifen. Nachrichteninhalte oder gar Anmeldedaten können so ausgespäht werden.
Es wurde bereits ein Patch veröffentlicht. Allerdings kommt hier der große Nachteil der hohen Fragmentierung der Android-Welt zum Tragen: die jeweiligen Hersteller müssen diesen Patch wiederum in ihr Betriebssystem einbauen und dann selbst ein Update veranlassen. Das wird höchstwahrscheinlich nicht bei allen Anbietern bzw. auch nicht bei allen Geräten selbst der fleißigsten Anbieter passieren.
Aus diesem Grund bleibt wohl vorerst als Lösung nur noch die Nutzung anderer Browser.

Kann man den AOSP-Browser ohne Nachteile deinstallieren?
Das wäre vermutlich die sicherste Variante, allerdings bin ich mir nicht sicher, ob das nicht ggf. große Nachteile nach sich zieht, weil der Browser evtl von anderen Android Apps benötigt wird o.ä.
Was sagen unsere Leser dazu?


IBM SmartCloud wird zu IBM Connections Cloud

Category: IBM Connections, IBM SmartCloud

IBM Connections
IBM hat angekündigt, die IBM SmartCloud zu „rebranden“, also auf gut Deutsch: umzubenennen.

Die neue Bezeichnung ist ab sofort IBM Connections Cloud. Weitere dazugehörige Produkte wurden ebenfalls umbenannt.

Hier die neuen Bezeichnungen der IBM Connections Cloud:

IBM SmartCloud Engage Advanced IBM Connections Cloud S1
IBM SmartCloud Engage Standard IBM Connections Cloud S2
IBM SmartCloud iNotes IBM Web Mail Cloud
IBM SmartCloud Archive Essentials IBM Connections Archive Essentials Cloud
IBM SmartCloud Connections IBM Connections Social Cloud
IBM SmartCloud Docs IBM Connections Docs Cloud
IBM SmartCloud Meetings IBM Connections Meetings Cloud
IBM Audio Services for SmartCloud Meetings IBM Connections Meeting Audio Cloud
Ganz neu, jetzt auch Chat-Angebote IBM Connections Chat Cloud

Mehr dazu finden Sie unter:


AdminCamp 2014: Probier's mal mit Gemütlichkeit

Category: AdminCamp, Konferenzen, Administration, Lotus Domino

Es war wieder einmal ein unwahrscheinliches Erlebnis. Weit über hundert Domino-Administratoren und jeder ist engagiert, interessiert und hoch motiviert. Das ist das Admin Camp!

Alles war toll: Die Leute, die hochklassigen Vorträge, die Verpflegung, die Abendveranstaltungen, ... Ich werde schon ganz wehmütig.

Aber nach dem AdminCamp ist vor dem EntwicklerCamp, nächstes Jahr vom 2. bis 4. März, wieder hier in Gelsenkirchen. Ich freue mich schon darauf.

Die Präsentation zu meinem heutigen Vortrag in Track 1, Session 8: Probier's mal mit Gemütlichkeit:


Quick Tip: Validate current user by enforcing him to enter his password

Category: Quick-Tipp, AdminCamp, Entwicklung, IBM Notes, LotusScript, Sicherheit, C-API

Quick-TippIBM Notes
I had a "small" request from a customer last week: He'd be interested in the extended commercial version of our assono Password-Safe. But his internal audit team had the requirement that a user should have to re-enter his Notes client password when opening a document or copying it directly to the clipboard from a view.

There is a @Command for this: ToolsUserLogoff. It just logs the user off, thus you have to combine it with some kind of server access to get the password input dialog to appear, like described here: Forcing user re-entry of passwords for electronic signatures in script.

This approach has three drawbacks:
1. It doesn't work offline, i.e. on a local replica, because it depends on the server contact for the  password input dialog to be opened.
2. I need it to protect the opening of existing documents. When the user just cancels the password input dialog, the document continues to be opened.
3. The formula code must be placed in the QueryOpen event of the form. But I really need to put some LotusScript there.

Thus I had to search further for a solution working in LotusScript. And I found one by Eknori from 2004: @Command(ToolsUserLogoff) in Lotus Script.
It had to be adopted for the current versions of Notes, because the log out key had been changed from F5 to Ctrl-F5.

I still wasn't convinced this would be the best possible solution. Its strictly Windows only and the user keeps logged out, when he cancels the dialog, I don't know, it would work locally etc.

I looked further and found a great idea: Use the Notes C api to access privat portions of the user's ID file, namely the REGGetIDInfoString function with REGIDGetPrivateKey as infoType.
  • This would bring up the password input dialog, but doesn't log off the user.
  • It would work locally without any server contact.
  • I even could determine, if the user cancelled the dialog box, and react, if necessary.
Thank you, Davy Vanherbergen, for your OpenNTF Code Bin post (from 2003!): Call notes password prompt from lotusscript 

I took the idea and implemented it "my way", using my C api helper functions and letting the user choose another ID file, if the configured ID file is not his own.

Function ValidateCurrentUser As Boolean
        ' * validates current user by letting him enter his password
        ' *
        ' * @return  True, if user has successfully entered his password
        ' *
        ' * @author  Thomas Bahn/assono <tbahn@assono.de>
        ' * @version 2014-09-30
        ' */

        Const MAXOUTBUFRLEN% = 4096
        Dim idFileName As String
        Dim returnCode As Integer
        Dim userNameBuffer As String*MAXUSERNAME
        Dim actualLen As Long
        Dim currentUserName As String                
        Dim outBufrLen As String*MAXOUTBUFRLEN
        If Not IsDebugMode() Then On Error GoTo errorHandler
        ValidateCurrentUser = False
        idFileName = session.GetEnvironmentString("KeyFileName", True)
        returnCode = REGGetIDInfoString(idFileName, REGIDGetName, _
                userNameBuffer, MAXUSERNAME, actualLen)
        Call ShowCAPIErrorIfAnyAndEnd(returnCode, "REGGetIDInfo", _
        currentUserName = Left(userNameBuffer, actualLen - 1)        
        Do While session.UserName <> currentUserName
                ' ID file configured in notes.ini is not the ID file of the
                ' current user
                idFileName = uiws.OpenFileDialog(False, _
                        "Choose your ID file:", "*.ID|", _
                        GetNotesDataDirectory(), idFileName)(0)

                returnCode = REGGetIDInfoString(idFileName, REGIDGetName, _
                        userNameBuffer, MAXUSERNAME, actualLen)
                Call ShowCAPIErrorIfAnyAndEnd(returnCode, "REGGetIDInfo", _
                currentUserName = Left(userNameBuffer, actualLen - 1)
        returnCode = REGGetIDInfoString(idFileName, REGIDGetPrivateKey, _
                        outBufrLen, MAXOUTBUFRLEN, actualLen)
        If returnCode = -32355 Then
                Exit Function ' user cancelled dialog
                Call ShowCAPIErrorIfAnyAndEnd(returnCode, "REGGetIDInfo", _
        End If

        ' when we get here, the user must have entered his password
        ' successfully
        ValidateCurrentUser = True
        Exit Function
        If HandleError() = RESUME_NEXT_LINE Then Resume Next
        Exit Function
End Function

GetNotesDataDirectory() is a helper function to get the name of the Notes data directory. Replace it by your own function or a String constant.
And adopt the error handling code (IsDebugMode() and HandleError()) to your standard.

Read More


AdminCamp 2014: Weil sicher sicher sicher ist - Sicherheit in IBM Domino

Category: AdminCamp, Administration, IBM Domino, IBM Notes, Konferenzen

Der zweite Tag des diesjährigen AdminCamps nähert sich langsam dem Ende. Ich warte noch gespannt auf die Fragestunde nach dem Abendessen. Auf meine Frage gestern habe ich ganz viele wertvolle Antworten bekommen, so dass ich letzte Nacht gleich eine Lösung bauen konnte. Dazu gleich mehr in einem weiteren Blog-Eintrag.

Hier schon mal die Präsentation zu meinem heutigen Vortrag in Track 2, Session 3: Weil sicher sicher sicher ist - Sicherheit in IBM Domino:


IBM Notes Traveler IF7 und 9.0.1 IF6 erschienen

Category: Administration, IBM Notes Traveler

Lotus Notes Traveler
In aller Kürze: IBM hat die Interim Fixes IF7 und 9.0.1 IF6 für IBM Notes Traveler heraus gebracht. Beide Fixes bieten bereits Support für iOS 8.

Für mehr Informationen zum Interim Fix Pack 6 für Traveler 9.0.1:

Für mehr Informationen zum Interim Fix Pack 7 für Traveler

Die Liste der Änderungen gibt es wie immer im IBM Domino-Wiki.


Quick-Tip: Script library prevents execution of agent

Category: Entwicklung, IBM Notes, Quick-Tipp

Quick-TippIBM Notes
Today I solved a mysterious problem, a customer of mine had with an scheduled LotusScript agent: It just didn't ran!

It was executed by the agent manager, e.g. via tell amgr run "some-db.nsf" 'Test':
AMgr: Start executing agent 'Test' in 'some-db.nsf'
AMgr: Agent 'Test' in 'some-db.nsf' completed execution
But event a Print "TEST" as the first line of its Initialize sub didn't work - not to speak of its original "payload".

We checked everything (really), including, but not limited to server security, application properties ("don't execute backend agents"), ACL, agent properties, ...

Then I built another agent copying Use statements and other code - step by step - and tested and retested: it just worked as expected.

Finally I deleted the "corrupt" agent and renamed the new one - and it stoped working! Renamed to its original name - it worked - renamed to the name of the deleted agent - worked not.

I fired up the Domino Administrator and switched on the "God mode" (aka Full-access administration) and searched in the Designer for another "hidden" agent with the same name. Nope, nothing.

But I found a script library with the exact same name. Renamed it ... and ... the ... agent .. worked!!!

Lesson learned: Script libraries with the same name as an agent prevent the execution of this agent.


Fix Pack 2 für IBM Notes und Domino 9.0.1 erschienen

Category: Administration, IBM Domino, IBM Notes

IBM NotesIBM Domino
IBM hat kürzlich das 2. Fix Pack für IBM Notes und Domino 9.0.1 heraus gebracht. Aus meiner Sicht nichts Spektakuläres (nicht zu erwarten), aber es werden neuere Versionen in der "Umgebung" offiziell unterstützt, z. B. Microsoft Internet Explorer 11 für XPages und Citrix XenApp 7.5 für den Client, und einige Fehler korrigiert.

Weitere Informationen:
IBM Notes/Domino 9.0.1 Fix Pack 2 Release Notice
Download Options for Notes & Domino 9.0.1 Fix Packs


Auch mit Firefox 31 nun keine selbstsignierten SSL Zertifikate mehr unterstützt (Update 06.08.)

Category: Administration, IBM Domino, IBM Notes Traveler, Quick-Tipp

Quick-Tipp Lotus Notes Traveler IBM Domino
Die Luft für Nutzer selbstsignierter SSL Zertifikate wird immer dünner.
Schon vor einiger Zeit berichteten wir darüber, dass Windows Phone keine selbst signierten Zertifikate unterstützt. Diese Problem ist nun bei einem anderen Kunden wieder aufgetaucht, der nun auch mit einem Nokia Lumia experimentieren wollte. Erschwerend war hier nun aber, dass auch der Zugriff auf die Traveler-Weboberfläche mit Firefox plötzlich nicht mehr möglich war. Statt der erwarteten Anmeldemaske erschien eine Fehlermeldung, die einem mitteilte, dass das Zertifikat ungültig sei. Keine Möglichkeit mehr, die Meldung zu ignorieren bzw. eine Ausnahme hinzuzufügen.

Dazu gibt es seit gestern eine Technote bei IBM.
Es gibt offenbar mit Firefox 31 einen neuen Validierungsalgorithmus für SSL-Zertifikate, der das neue Verhalten zeigt. Diesen kann man über die Konfiguration (about:config) deaktivieren, um das alte Verhalten zurück zu bekommen. Das ist natürlich aus mehreren Gründen keine langfristige Lösung:
  • Der alte Algorithmus wird mit der Zeit aus Firefox ausgebaut werden (laut Mozilla Wiki), so dass man sich dem Problem mittelfristig wieder wird stellen müssen.
  • Es ist zu viel Aufwand, wenn man das nicht zentral steuern kann - was vermutlich nicht bei allen Unternehmen der Fall ist
  • Es bedeutet einen vermutlich sichereren Algorithmus mutwillig zu deaktivieren, weil man...
  • ...nicht das ohnehin sicherere, aber kostenpflichtige/-günstige, vertrauenswürdige Zertifikat kaufen möchte.
-> Also besser gleich ein Zertifikat einer vertrauenswürdigen CA ausstellen lassen.

BTW: Die von IBM vorgeschlagene "Lösung" funktioniert .

Update vom 06.08.

...zumindest manchmal.
In dem Fall, in dem es funktionierte, hatte ich vorher noch nie mit diesem Browser auf den fraglichen Server zugegriffen.
Jetzt habe ich mit meinem lokalen Testserver noch ein paar Dinge ausprobiert und stellte dabei fest, dass die "Lösung" von IBM eben nicht immer zuverlässig funktioniert.
Erst habe ich noch versucht, die Zertifikate-Datenbank (cert8.db) im Firefox-Profil zu löschen, aber das brachte keine Erleichterung. Erst die Zurücksetzung über about:support hat das Problem gelöst - auf Kosten meiner Einstellungen und Addons. Dabei wird aber auch selbstverständlich die oben beschriebene Einstellung ebenfalls zurückgesetzt und es funktioniert nachher dennoch. Hier muss also offensichtlich noch einiges klargestellt werden.

Offenbar speichert Firefox die temporären Zertifikate besuchter Webseiten noch anderswo als nur in der cert8.db und beim Wechsel des Algorithmus wird die entsprechende Datenbank anscheinend "korrumpiert".

Wenn hier jemand noch weitere Hinweise geben kann. Willkommen

Kalender (Calendar)


Deutsche RSS-Feeds (German)

Custom Button Custom Button

English RSS feeds

Custom Button Custom Button