sabre-io / baikal Goto Github PK
View Code? Open in Web Editor NEWBaïkal is a Calendar+Contacts server
Home Page: https://sabre.io/baikal/
License: GNU General Public License v3.0
Baïkal is a Calendar+Contacts server
Home Page: https://sabre.io/baikal/
License: GNU General Public License v3.0
Implement Fine grained permission management (shared resources and delegations)
First of all Many Thanks for your Great work !!
I have Installed Baïkal ( http://baikal.codr.fr/ ) at My local server and added user in that.
When I tring to access url for calDav
BASE_URL/baikal/cal.php/
Then its asking for user authentication, after entering correct username and password.
Its giving me following error:
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:exception>Sabre\DAV\Exception\NotImplemented/s:exception
<s:message>GET is only implemented on File objects/s:message
<s:sabredav-version>1.8.0/s:sabredav-version
/d:error
I have searched for this error solution and Baïkal documentation but didn't get success.
Can you pls help me .. how this can be solved out. .. is there any app that i need to insatll in my iphone and android phone to get info from there ..
I am completely new in CalDav implementation ... Waiting for you helpful reply !!
I am Sorry if I am posting my question at Wrong Place
Thanks
Hi,
I am running baikal 0.24 on a Debian Squeeze/partly Wheezy system. t worked fine on an older version, but since I updated to 0.24 I get the apache error:
[Thu Dec 06 14:17:00 2012] [error] [client 10.110.0.10] PHP Fatal error: Call to a member function execute() on a non-object in /mnt/data/var/www/dav/Core/Frameworks/SabreDAV/lib/Sabre/DAVACL/PrincipalBackend/PDO.php on line 161
The admin interface works fine. I am not really sure if it is a bug or if I am missing packages. Any ideas ?
Regards,
Markus
I needed these backticks in the mysql.php on line 56:
$sSql = "SHOW TABLES FROM " . $this->sDbName . "
";
Reason: My hoster uses db names with minus signs e.g. 'db12345-abc'
I would like to congratulate some of my contacts with their birthday, but as I often forget them I could really use a calendar for them! :-)
(I tried to make it work but I couldn't figure out how to make it work using the framework(s). It's also a challenge because Vcards are saved and not the individual Vcard fields)
Hi. I have seen that the CardDAV support does not handle contacts picture.
I have uploaded a contact via iPhone and via Apple's Contacts app, and I have lost the contact picture.
Is this a bug or a missing feature?
I'm trying to install Baikal but I face a 500 Internal Server Error :
I've used the FTP installer (I have no access to my SSH server).
Bonjour,
la configuration d'iCal 4 (OS X.6) semble différente de celle indiquée sur base8.
Je pense que j'ai des problèmes de configuration avec l'adresse et le chemin du serveur, voire le port.
Quelqu'un pourrait-il m'aider?
D'avance merci!
yannis
I found no url that works to sync with baikal. If i use http://dav.domain.com/card.phpaddressbooks without a slash beetween card.php and adressbooks one programm tells me, that a server was found. But sync is not possible.
Do you know, why these slash problem is? Maybe i found on this way my mistake in the config....
Baïkal should be compatible with Heroku hosting.
Problems to solve:
I have a FreeBSD server trying to run Baikal, it has mysql5, php5, all is well it see the database and works.
TILL I try to add a user
I keep getting "Fatal error: Call to undefined function Flake\Util\filter_var() in /usr/web/baikal-flat/Core/Frameworks/Flake/Util/Tools.php on line 230"
From what I could tell it does not like the "sEmail" var, but I could be wrong, can some one HELP.
This machine is a production machine on a customers site and it needs CalDAV to keep the manager happy, since he wants to install a Microsoft server if I can not get it working.
Hey,
i try to run Baikal on a host with multiple domains. each domain is forwarded to an own subfolder (e.g.: xyz.de -> /xyz/). subsequently, baikal which is placed in /xyz/baikal/ would be reachable with xyz.de/baikal. Unfortunately the variable is calculated in a way that each url construction leads to xyz.de/xyz/baikal which results in page not found.
So far the error description. I hard coded the variable $sBaseUrl to the correct value: the install scripts and the admin interface work well now, but i still cannot access the sqlite db via cal.php or card.php.
Could it be that i have to change a second variable?
Thanks a lot
Philipp
btw: curl says GET is only implemented on File objects
Problem - After 1-2 days the permissions on the file Specific/config.php change from 0644 to 0400, and sync fails.
Version - 0.20 flat package
Server - cpanel based shared hosting with mysql support
Directory Permissions - all 755
File premissions - all 644
Enable admin - tested enabled and disabled
clients used - carddav-sync
After installing and setting up everything works well (single user), and contacts sync correctly between two clients - carddav-sync for android and emclient on windows.
I haven't worked out what could be causing the premissions change, and this could be a server problem or related to baikal.
If any futher info is needed, just let me know.
Firstly: A very pretty Admin interface and easy to handle... SabreDAV alone don't work on my server....
If i set a MySQL-DB in the System Settings Tab i receive a white Page with the content of the PHP-File.
Also in the bottom
exception 'Exception' with message 'Parse error in new config file. Aborting, nothing has been changed.' in /var/www/web238/html/baikal/Core/Frameworks/Baikal/Model/Config.php:208
Stack trace:
#0 /var/www/web238/html/baikal/Core/Frameworks/Formal/Form.php(225): Baikal\Model\Config->persist()
#1 /var/www/web238/html/baikal/Core/Frameworks/BaikalAdmin/Controller/Settings/System.php(46): Formal\Form->execute()
#2 /var/www/web238/html/baikal/Core/Frameworks/Flake/Core/Render/Container.php(62): BaikalAdmin\Controller\Settings\System->execute()
#3 /var/www/web238/html/baikal/Core/Frameworks/Flake/Controller/Page.php(79): Flake\Core\Render\Container->execute()
#4 /var/www/web238/html/baikal/admin/index.php(74): Flake\Controller\Page->render()
#5 {main}
This is in the error.log
`[Sun Sep 02 15:44:17 2012] [warn] [client xxx.xxx.xxx.xxx] mod_fcgid: stderr: PHP Parse error: syntax error, unexpected T_NS_SEPARATOR, expecting T_STRING in /var/www/web238/html/baikal/Core/Frameworks/Baikal/Model/Config.php(202) : eval()'d code on line 45, referer: http://dav.xxxxxxxx.xx/admin/?/settings/system/
Authentication support for IMAP or LDAP for these backends makes it earsier to maintain authentication centralized and maybe automatic creation of users can also be implemented on a successfull authentication.
Hi,
I've been trying to connect to my new calendar on Baikal (which I had no problem installing BTW ;)).
I had a problem, Thunderbird would hang, and digging further, I discovered an error : Requested uri /cal.php/XXX is out of base uri ./cal.php/
.
It turns out that PROJECT_BASEURI is set to ./
which caused this error.
I patched the config file to /cal.php/
instead of PROJECT_BASEURI . "cal.php/"
but it seems strange that the default config does not work.
Did I miss something, do you have any clue ?
I've installed Baikal on a Gentoo 64bits, with Apache 2, PHP 5.3.
Thanks !
PS: This is a great piece of software, glad you open sourced it :)
The table definition won't work on my server:
CREATE TABLE IF NOT EXISTS addressbooks (
id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
principaluri VARCHAR(255),
displayname VARCHAR(255),
uri VARCHAR(200),
description TEXT,
ctag INT(11) UNSIGNED NOT NULL DEFAULT '1',
UNIQUE(principaluri, uri)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Solution:
I changed the fieldlengths of 'principaluri' and 'uri' to 100 (like at the 'calendars' definition)
By default, the database name is not configurable. One should be able to change this, notably to work around a bug where database is sometimes not writable by web servers because of the "." prefixed name.
Check line 112 of Core/Frameworks/Flake/Framework.php
Implement read-only exports for calendar events (.ics)
There are duplicate content on the folder
:
Core\Resources\Web\BaikalAdmin
Core\Frameworks\BaikalAdmin\Resources
res\core\BaikalAdmin
Hi,
after getting mad about all the different groupware / caldav / carddav / syncML servers that exist in the wild, i came back to trying baikal. i am running a Zyxel NSA310 /w Fonz Fun Plug (running an ARM5 with 256mb ram)... I installed lighttpd and fastCGI and cloned the latest git sources but i get this:
2012-06-15 15:23:08: (mod_fastcgi.c.2699) FastCGI-stderr: PHP Fatal error: Class 'PDO' not found in /www/html/baikal/CoreVersions/0.2.0/Frameworks/Flake/Core/Database/Sqlite.php on line 39
Any clue how to solve this?
p.s. do you plan supporting ldap as authentication and maybe even backend for the cardDAV server? would be really practical to have ldap and a carddav server accesing the same directory data!
ciao,
t.
Roundcube-CardDAV is a great CardDAV client addon for the popular web based email system roundcube.
https://github.com/graviox/Roundcube-CardDAV
Is Baikal compatible?
If so what would the connecting url be?
Currently, Baikal does a great job storing contacts / calendars and letting us access those resources via Dav (carddav / caldav). What makes Baikal super powerful in my opinion is that it stores this data in a SQL database. This allows 3rd party applications to easily interface to it by inserting new users / contacts / calendar items without using the admin interface. Its as close as you are going to get to an API, and in some cases even easier.
Feature Request.
It would be great if it were also possible to use ActiveSync as an alternative.
There are a few activesync libraries out there which have done a majority of the work:
Z-Push 2 - http://z-push.sourceforge.net/soswp/
Syncroton (New) - http://www.syncroton.org/wiki/Main_Page
Benefits:
Drawbacks:
With the above feature-set, anyone could turn a simple Postfix / Dovecot / Roundcube install into a full exchange alternative!!! This would be a very powerful alternative to Exchange, atmail, icewarp or smarter-mail.
Add views to browse user data
Add interface to help users to configure their cal/card client
http://baikal.codr.fr/ for "Regular package" says "For experimented users"
probably "experienced" was meant there :)
Share calendars with users and set read write permissions trhought the webinterface
Yes, why not also support WebDAV?
That would be awesome, first lightweight full SabreDAV implementation in PHP i think :-)
The "Flat version" installs fine, but the url-rewriting doesn't seem to work (always get "Bad requests" with curl).
After installing the regular version and changing the apache config accordingly (-> html instead of the main directory) I get the following message when i open the browser:
http://dav.mydomain.com/card.php/addressbooks/jerome/default
I was able to install it an a linux server without any problems. This server is a windows machine though. It runs apache with a recent version of PHP.
Hi,
I did setup Baikal on port 8443 running Apache2 with a virtual host. I made some calendars and addressbooks for user "jurek". Now if I try to add the addressbook to my OSX 10.6.8's Addressnook App with:
http://192.168.0.3:8443/cal.php/principals/jurek
It says in OSX 10.6.8: no caldav server found.
I also added the calendar on iPad 4 / iOS6, there it works. Also iOS 4.2 iPhone works. Same with carddav.
I guess iCal and Addressbook 10.6.8 only support GET commands? What is the problem here? Can you fix it please?
Thanks and regards
Hi!
I wanna implement SASL auth, where may I start?
It would be EXTREMELY useful to have a REST JSON api.
The api should be able to access carddav / caldav data in the same way a device does,
Basic crud functions, with the ability to list resources / users.
It would be nice to prefix the tables. This makes it easy to install Baikal in a single database.
hey jerome,
thanks for this nice caldav server. I love the gui and the simplicity to use it. But sadly, I can't get the authentication get working. When I try debuggin via curl curl -so - --digest --user username:password http://domain/cal.php/calendars/usenrame/default
I get the following answer:
<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:exception>Sabre_DAV_Exception_NotAuthenticated</s:exception>
<s:message>No digest authentication headers were found</s:message>
<s:sabredav-version>1.5.7</s:sabredav-version>
</d:error>
I'm using the apache suesex module with php-cgi on debian squeeze. Maybe it's realated to the php-cgi environment variable problems? http://www.besthostratings.com/articles/http-auth-php-cgi.html
But I have seen, that you already implemented the suggested workaround in the .htaccess file. So I have no clue how to go on.
I'd be happy for any hints.
Best,
benni
Hi
I'm using Baikal 0.2.2 and I have been hit by the following SabreDAV bug:
https://code.google.com/p/sabredav/issues/detail?id=172
which has been fixed for some time already, but not in 1.5 branch which is used by Baikal. So I'm wondering if you plan to upgrade SabreDAV in the near future.
I will try to patch this myself as the bug is blocking for me, but I won't be able to do a proper SabreDAV version upgrade as my php knowhow is not good enough.
Thanks for creating this nice peace of software!
Cheers
Right now Baikal does not allow . character or @ character in username.
This makes it difficult to manage user accounts where a user might have an email address as login for IMAP but is not allowed to use email as login name.
Baikal should allow actual email addresses as usernames.
if this causes an issue for principal uri then it should be converted as such:
login: [email protected]
pricinapls/frank-at-flashtopia-dot-com or frank-flashtopia-com
Hi,
I was wondering if anyone had any success installing Baikal on an IIS web server? The admin interface seems to work fine, including writing the user information to the SQLite database. What doesn't seem to be working is verifying the account via my iOS test device. I am working on the assumption this has to do with the URI, but any insight anyone has would be great.
Thank you,
Louis
when adding my first user, I get the following Flake related error, any idea what else I can check?
exception 'Exception' with message '\Flake\Core\Model '0' not found for model Baikal\Model\Principal' in /srv/www/cal.ucn-inter.net/CoreVersions/0.2.0/Frameworks/Flake/Core/Model/Db.php:79
Stack trace:
#0 /srv/www/cal.ucn-inter.net/CoreVersions/0.2.0/Frameworks/Flake/Core/Model/Db.php(94): Flake\Core\Model\Db->initByPrimary('0')
#1 /srv/www/cal.ucn-inter.net/CoreVersions/0.2.0/Frameworks/Baikal/Model/User.php(128): Flake\Core\Model\Db->persist()
#2 /srv/www/cal.ucn-inter.net/CoreVersions/0.2.0/Frameworks/Formal/Form.php(198): Baikal\Model\User->persist()
#3 /srv/www/cal.ucn-inter.net/CoreVersions/0.2.0/Frameworks/BaikalAdmin/Controller/Users.php(57): Formal\Form->execute()
#4 /srv/www/cal.ucn-inter.net/CoreVersions/0.2.0/Frameworks/Flake/Controller/Page.php(98): BaikalAdmin\Controller\Users->execute()
#5 /srv/www/cal.ucn-inter.net/CoreVersions/0.2.0/Frameworks/Flake/Controller/Page.php(79): Flake\Controller\Page->execute()
#6 /srv/www/cal.ucn-inter.net/CoreVersions/0.2.0/Frameworks/BaikalAdmin/WWWRoot/index.php(74): Flake\Controller\Page->render()
#7 {main}
Here's an example nginx stanza that works:
server {
#listen 80; ## listen for ipv4; this line is default and implied
server_name dav.domain.tld;
root /opt/Baikal/html;
index index.php;
location ~ ^(.+\.php)(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
set $document_root2 $document_root;
if ($document_root2 ~ "^(.*\\\\).*?[\\\\|\/]\.\.\/(.*)$") { set $document_root2 $1$2; }
if ($document_root2 ~ "^(.*\\\\).*?[\\\\|\/]\.\.\/(.*)$") { set $document_root2 $1$2; }
if ($document_root2 ~ "^(.*\\\\).*?[\\\\|\/]\.\.\/(.*)$") { set $document_root2 $1$2; }
if ($document_root2 ~ "^(.*\\\\).*?[\\\\|\/]\.\.\/(.*)$") { set $document_root2 $1$2; }
if ($document_root2 ~ "^(.*\\\\).*?[\\\\|\/]\.\.\/(.*)$") { set $document_root2 $1$2; }
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root2$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root2$fastcgi_path_info;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $document_root2;
}
location / {
try_files $uri $uri/;
}
}
The php bit is a tad cargo-culty, and could probably be customized; I don't think there are php scripts multiple directories in.
It seems that baikal is using some sort of digest for encryption of passwords.
To better support intergration with existing systems such as dovecot, postfix, roundcube etc, baikal should support other encryption modes including:
MD5, MD5-SALT, PLAIN TEXT, and if Possible IMAP Authentication where a user is simply authenticated using their IMAP credentials.
SqlLite is great.
We are looking for a CardDav / CalDav server that would support mysql.
The reason for this is that many people use Postfix / DovCot with MySQL to manage user accounts.
Being able to add a few tables to the same database, and then add calendering functionality / vcard storage would be a very valuable project. Add Z-Push as an alternative to pull calendar, vcard, and mail and you have a winner.
Please let me know if you are planning on building a MySQL version.
Frank
If I already have a website with user logins, and also a simple calendar on that website... is it possible to use Baikal as sort of the calendar backend, but use the same user logins and integrate a calendar into the website like I do already? And then use Baikal more as a backend and calendar admin tool.
This is a request for supporting installations which can operate within a path of an existing vhost, as opposed to having to dedicate an entire vhost for baikal.
I'm sure many people would appreciate this, for a variety of reasons. For me, it's being able to reuse my existing SSL certificate, which is pinned to an existing virtual host.
Right now, one has to rebound on sqlite3 mode to be able to setup Baïkal to MySQL.
This has to change, clearly.
On servers where PHP is executed as FastCGI, Basic HTTP Auth headers are not passed to PHP by Apache. Consequently, one is not able to auth to CalDAV nor CardDAV services.
There's is embedded workaround for that in Baïkal, in the .htaccess found at the project root. However, when uploading the Baïkal file to the server using FTP, sometimes the "." prefixed files get skipped, effectively preventing the Baïkal FastCGI auth workaround to be applied.
This situation should be detected / handled by Baïkal at runtime in the admin interface.
A lot of users who already use online calendar use Webcalendar.
The current framework make a smooth upgrade hard:
Considering the above, having a sql -> sql from WC to Baikal may be quite useful.
The current Baikal sqlite implementation consist of a big carddata
blob to store the ICS file. (if this is a bug it should be treated separatly), so in such case an ICS export from WC seems needed anyway.
But the mysql implementation use a calendarobjects
which has some proximity with the WB entry
table making a migration possible.
When I try to install any of the Packages (Flat or Stock) and go to the registered Page, I am redirected to /admin/install/ and get the following error:
Fatal error: Class '\Flake\Util\Router\QuestionMarkRewrite' not found in /usr/share/baikal/http/Core/Frameworks/BaikalAdmin/Framework.php on line 41
When I add the Class manually ( require_once('url/to/class.php');
) I get the Error on the next File.
Hi,
I can't add or modify a contact from an android phone with the CardDav-Sync application : all the fields of the contact page are unusable.
I use the flat package on an Apache Server.
Thank you for your work : it's a good soft
Philippe
Hi, because i want to access baikal server securely i use it with ssl enabled in apache2.
From my iphone, everything is working perfectly for calendar access (i use https://dav.mydomain.com:443/cal.php/principals/username)
But for contact access, whatever settings i fill in my iphone (server : dav.mydomain.com:443/card.php and correct username and password), i always have an error from my iphone saying : impossible to connect using ssl)
in apache2 log i can see :
[02/Nov/2012:18:30:24 +0100] "OPTIONS /.well-known/carddav HTTP/1.1" 200 1450 "-" "DataAccess/1.0 (8J2)"
[02/Nov/2012:18:30:24 +0100] "OPTIONS / HTTP/1.1" 200 836 "-" "DataAccess/1.0 (8J2)"
[02/Nov/2012:18:30:24 +0100] "OPTIONS /principals/ HTTP/1.1" 200 229 "-" "DataAccess/1.0 (8J2)"
Any ideas?
After copying the files on the server, I'm trying to access to the install process. But I only have a 500 Internal Server Error.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.