So, this will be the last ever update to this blog... shed a tear
No, I'm not going anyway, but I'm changing URLs. I'm moving from my ISP's domain to one I control: both will work for now, but the new one will be the one updated. This is basically because a week today I'm moving house, and will be changing ISP.
So if you're currently using my packages, you need to change the apt source line (more details on my new site) in order to continue to receive updates.
Again, new packages. I still found I was getting problems with the Indexer with the last lot, but Peter seems to have fixed it now :) I still suffered from stale locks though - so, if you have files like:
/tmp/lucene-1f90313e5849e5c2ab12d9f723836364-write.lock
(The number could be all sorts of things)
... you'll want to remove them. Stop Hula, rm
/tmp/lucene*
and be on your merry way.
Other bugs:
You should find that you're able to connect, add events and stuff like that, though. Please let me know if you have any trouble; it's likely that the packages still aren't quite right about getting things up and running for everyone.
I just uploaded my r641 packages. These will automatically upgrade your schema when you install it, and if you install the new .NET agents it will use mdbtool to automatically add the Agents to your tree. It pretty much now mostly works for me; Sunbird is behaving with it fairly well. But, there are some gotchas. Here's what I learned:
deb http://people.debian.org/~formorer/mono backports main
... which is a semi-official backport, I guess. This allows you to run the new
hotness on sarge./var/lib/hula/netmail/index/<username>/
... fixed it up for me.tcpflow
or a similar tool
to capture the network traffic - oftentimes the error is in there. A typical
invocation for the caldav stuff might be:
tcpflow -i lo port 8081
I tend to run it in it's own directory, since it generates a fair few files and
I don't want them overrunning and breeding. The usual error to look for in these
files is some kind of mono back trace in a HTML comment.mono /usr/lib/hula/HulaWeb.exe
If it falls over in a heap, it's a mono version problem, most likely.So, all the new cool calendar stuff we've been drooling about
waiting for has landed in SVN. It's all written for mono, and hence
isn't going to run on some systems, but I've packaged it up.
If you're on Debian testing/unstable, or Ubuntu breezy (maybe hoary too),
you'll find that you can apt-get install hula-cil-agents
to grab
the new stuff. However, it won't work automatically. This is
because there is no schema update yet - version 6 of the schema will come soon,
but not yet ;o)
So, how to try it out? Take a copy of /var/lib/hula
, maybe move
it somewhere safe. Re-run hulasetup
(you might need to mkdir
/var/lib/hula; chown mail:mail /var/lib/hula
), and you'll find on
startup your Hula Web Administrator has some new agents:
None of these are configurable, except for the DAV server (you can turn it on
and off ;), so don't worry about that. But, if you have them, you should find
that ps aux
shows a couple of new processes, both of which are run
by mono. (Portions struck out above are corrected from my original entry; couple of mistakes there :)
Congrats, you're up and running!
Well, kinda. I downloaded a Mozilla Sunbird nightly - this has CalDAV support built in (unlike the 0.2 release). You should be able to add a new calendar of the CalDAV type, and it should kinda work.
Except, it doesn't, for me. First, I'm not totally sure what I should enter
for the account! I currently have set
http://<server>:8081/dav/<username>/calendar/Personal
,
but this might not be right. I'm also getting an error message from the DAV
server:
** (/usr/lib/hula/HulaWeb.exe:17188): WARNING **: Missing method get_CipherStrength in assembly /usr/lib/hula/Mono.WebServer.dll, type Mono.Security.Protocol.Tls.SslStreamBase
System.NullReferenceException: Object reference not set to an instance of an object
in <0x00000>
in <0x00023> Mono.WebServer.XSPWorker:Run (System.Object state)
I have no doubt that this probably means these packages currently don't run for anyone properly, although it might be related to the version of mono installed, or the mono libraries required.
If you have tried these and got them working, please let me know! Drop by on #hula on irc.freenode.net :)
This is the first rev from the 5xx series I've written about, and at the speed we're going will also be the last - scary.
The last couple of revs had the new 'document' interface in NMAP, which is going to be used for a couple of useful things. But, it requires AUTOINCREMENT in SQLite - which, as proby rightly noted on IRC, is a SQLite 3.1+ feature. This gives us a slight problem: Ubuntu Hoary doesn't have that available. So, from now on, these packages won't work on Hoary unless you pull in a better libsqlite3-0 package.
This isn't as bad as it sounds: Breezy is out tomorrow, and is fine, and you can pull the single libsqlite3-0 package from there if you like. So, it should be a pretty temporary problem.
Expo this year was mildly suprising for a number of reasons; mostly, it was a lot busier than last year (maybe even busier than a couple of years ago). Nice to see old friends again, and also meet some new ones.
Hula attracted a fair amount of attention. I'm going to send a slightly longer write-up to the lists, because there was a lot of feedback that kept getting repeated by lots of people: not terribly large jobs in the most part, but specific use cases and features that seem pretty commonly needed.
Lots of people stopped by the booth, users I've seen on the lists or on IRC, lovely to see Michael Meeks even if it was a short visit. Other Novell employees visited; knowledge of Hula varied interestingly. Also, I was a little surprised by the number of people who didn't know what Hula is - since there isn't a "proper" release yet this shouldn't be surprising, but lots of people don't know it exists yet. 1.0 will probably bring a flood of users, I imagine. Debian's Phil Hands did a great job of redirecting people enquiring about mail/groupware options from their stand, and the general confusion about what was happening with Open Exchange at RedHat (and Novell mostly talking about Groupwise) both contributed to people coming to check out the "community alternative".
So, the new debs have been uploaded, and contain my mdbtool. This allows you to munge around your mdb store without playing with the files. Objects can be added and removed, and you can get basic information and attributes from them. I would be interested to hear from those who use it.
Thanks to the help of fatpelt, my problems in the previous post (and a post I made a while ago) are now fixed. The segfault was caused by incorrect argument order, which I should have noticed. The bug getting the right result back was caused by passing an object reference where I should have passed NULL - with a reference, MDB was trying to create a relative name or something. Whatever it was trying to do, it was failing.
So, I've updated the mdbtool source. The manual page is current unwritten, but would look something like:
mdbtool [command] [options]
getattrs [object] [attribute name]
Example: mdbtool getattrs \\Tree\\Context\\Server netmail:messagingserver
Dumps the value of the attribute for a given object. Double-slashes are
used to name the object for shell reasons. The result is of the format:
[attribute name]::[value]
This format may change, given values could contain carriage returns.
setattr [object] [attribute name] [new value]
Example: mdbtool setattr \\Tree\\Context\\test Sname newname
Sets the value of an attribute of the object. Attribute names are prefixed
with 'S' (for attributes that contain strings) or 'D' (for attributes that
contain the names of objects).
addobject [object] [class] [attr1=value1 attr2=value2 ...]
Example: mdbtool addobject \\Tree\\Context\\test User Sname=foo
Creates a new object of any given type, and initialises some of the
attributes. Attribute naming requires 'S'/'D' prefixes (see setattr),
you can have as many initial attributes as you like.
setpassword [object]
Example: mdbtool setpassword \\Tree\\Context\\Admin hula
Set the password for any given object; usually used for User objects. The
example given above resets the password of the admin user.
I have plans for a fair few other commands - we're missing object (re)move, and tree/object introspection in particular - but it seems at least some commands will require work to MDB and the various drivers in order to actually work. Some schema stuff will also be needed at some point. The main thing I next want to achieve is dumping and re-creating complete trees, because I think that's one thing users will really like.
And I can't figure out why, so hopefully lazyweb will help me. So, I have this code:
#include <stdio.h>
#include <stdlib.h>
#include "mdbtool.h" /* this just pulls in mdb.h */
void leave(char *excuse) { printf("ERROR: %s", excuse); exit(1); }
int main (int argc, char *argv[]) {
const unsigned char *attrval;
const unsigned char *object = "\\Tree\\Context\\Server";
const unsigned char *attr = "netmail:messagingserver";
if (!MemoryManagerOpen("mdbtool"))
leave("Could not start memory manager\n");
if (!MDBInit()) leave("Could not initialise MDB\n");
MDBHandle *h = MDBAuthenticate("Hula", NULL, NULL);
if (h == NULL) leave("Could not authenticate to MDB\n");
MDBValueStruct *vs = MDBCreateValueStruct(h, object);
MDBEnumStruct *es = MDBCreateEnumStruct(vs);
while ((attrval = MDBReadEx(object, attr, vs, es)) != NULL) {
printf ("Attribute: %s\n", attrval);
}
MDBDestroyEnumStruct(es, vs);
MDBDestroyValueStruct(vs);
return 0;
}
I run it, and it segfaults:
(gdb) r
Starting program: /home/alex/mdbtool/simple
[Thread debugging using libthread_db enabled]
[New Thread -1210911040 (LWP 28415)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1210911040 (LWP 28415)]
0xb7fccfb9 in MDBReadEx () from /usr/lib/libhulamdb.so.0
(gdb) bt
#0 0xb7fccfb9 in MDBReadEx () from /usr/lib/libhulamdb.so.0
#1 0x080487dc in main (argc=1, argv=0xbf9f48b4) at simple.c:23
According to the API docs, I don't think I'm doing anything particularly wrong. Also, I can't make it work with MDBRead() either - doing something like:
long l = MDBRead(object, attr, vs);
for (i=0; i<l; i++) {
printf ("Attr: %s\n", vs->Value[i]);
}
... returns values, but cut off in bizarre places. Am I doing something remarkably silly, or is there some voodoo dance I need to do?. Frustrating :(
I shall be the first to praise whoever it was at Novell who decided that Hula would be better off being straight GPL. No longer the MPL/LGPL/GPL (with the MPL being noticably missing from files) triumvirate, it's plain and simple. Woo.
© 2005 European Bob, All Rights Reserved