XMPP (Jabber) is used by the assistant as a git remote. This is, technically not a git-annex special remote (large files are not transferred over XMPP; only git commits are sent).
Typically XMPP will be set up using the web app, but here's how a manual set up could be accomplished:
xmpp login credentials need to be stored in
.git/annex/creds/xmpp
. Obviously this file should be mode 600. An example file:XMPPCreds {xmppUsername = "joeyhess", xmppPassword = "xxxx", xmppHostname = "xmpp.l.google.com.", xmppPort = 5222, xmppJID = "joeyhess@gmail.com"}
A git remote is created using a special url, of the form
xmpp::user@host
For the above example, it would beurl = xmpp::joeyhess@gmail.com
The uuid of one of the other clients using XMPP should be configured using the
annex.uuid
setting, the same as is set up for other remotes.
With the above configuration, the assistant will use xmpp remotes much as any other git remote. Since XMPP requires a client that is continually running to see incoming pushes, the XMPP remote cannot be used with git at the command line.
XMPP server support status
Provider | Status | Type | Notes |
---|---|---|---|
Gmail | Working | ? | Google Apps: setup your SRV records or configure .git/annex/creds/xmpp manually |
Coderollers | Working | Openfire | |
jabber.me | Working | Tigase | |
xmpp.ru.net | Working | jabberd2 | |
jabber.org | Working | Isode M-Link | |
- | Working | Prosody | No providers tested. |
- | Working | Metronome | No providers tested. |
- | Failing | ejabberd | Authentication bug: Fixed in debian unstable with version 2.1.10-5 |
- | Failing | jabberd14 | No further information |
List of providers: http://xmpp.net/
See also: xmpp protocol design notes
It would be nice if you could expand the XMPP setup in the assistant to support an "advanced" settings view where a custom server could be defined.
Example: I have a google Apps domain called mytest.com, with the users bla1@mytest.com and bla2@mytest.com. When trying to add either of those accounts to the assistant XMPP will try to use mytest.com as the jabber server, and not googles server.
Yeah, I agree, this would be nice.
For your own domain, you can configure DNS like this: http://support.google.com/a/bin/answer.py?hl=en&answer=34143 to make XMPP find the right server. But for some that's not an option and the "advanced" mode would be useful in that case.
I set up two fresh annexes that can talk via XMPP and no other way. After I fire up the assistants I expect them to sync their metadata, but nothing happens. One log gives me an 'XMPPClient: received: ["Unknown message"]' message every two minutes. The other one doesn't contain the string XMPP at all, not once. So my suspicion is that this particular version of git-annex doesn't support XMPP, which is weird because:
This is the version output from the other machine:
What am I missing? Are there more build flags for XMPP than the one called XMPP? (Also, no, I can't just copy versions between machines b/c the architectures are different. And yep, the one giving me trouble is ARM.)
If you have the XMPP flag in your git-annex build, it will support XMPP. Are you sure you set up the xmpp creds file and the xmpp special remote correctly on the ARM machine? (I assume it has no webapp, so you had to set that up manually..)
Here's how you can do that manually:
Your guess is right, Joey, I'm configuring by hand as the ARM machine has no webapp. And yes, I'm mostly sure I set up everything correctly. The XMPP account is working, and my configuration of git-annex is all but identical to your example.
Here's what I do. First on the machine with the webapp:
I set up XMPP from within the webapp. The file ~/test/.git/annex/creds/xmpp is created with the correct credentials. (BTW: The file's default permissions are 620 instead of 600 - is that a bug?)
I add a file or two to the annex for good measure. Then, on the ARM machine:
The final step is to edit .git/config on the ARM machine. The [remote] section now looks like this:
where aaaaaaaa-bbbb-cccc-dddddddddddd is the return value of
git config --get annex.uuid
on the webapp machine.I then run
git annex assistant
on the ARM machine and expect the two machines to synchronize their metadata, e.g. the number of knownn annex keys in the repo. But it doesn't happen.So I set
debug = true
, restart the assistants and check the log. This is what I get on the webapp machine:And from then on, in two-minute intervals:
The log on the ARM machine is rather unhelpful. Actually it doesn't even contain the string "XMPP". This looks to me like the webapp machine tries to communicate via Jabber but doesn't get any intelligible answer. And this is the reason I wondered whether the problem lies with my self-compiled ARM git-annex binary. I actually spent a while compiling 4.20130909 with all flags but webapp and webdav, but the result is still the same.
Any other ideas what I'm doing wrong here?
I see. Is there a way to check whether the build is corrupt? The build logs gave me nothing.
Anyway, XMPP is not the most important feature to me. It still bugs me though that it doesn't work when it should.
I have the same setup like @RaspberryPie, except that my server is not running on the Pi but on Debian7-amd64. On my client (OSX, self-compiled using cabal) I can see XMPP log entries like @RaspberryPi, however, on the Debian7 machine (also self-compiled) I do not see any XMPP entry in the daemon.log. Setup regarding .git/annex/creds/xmpp and the special xmpp remote is correct (checked a thousand times).
Do you have any idea what could be wrong, Joey? Thanks a lot.
Output of git annex version:
Jörn