0
I Use This!
Very Low Activity

News

Analyzed about 3 hours ago. based on code collected about 18 hours ago.
Posted about 10 years ago by Cédric Bosdonnat
Last week at SUSE we had a hackweek... For those who don't know what it is, the idea is to have us developers work during one work week on any project we want. Earlier in the year the idea has been raised to implement a LibreOffice connector for ... [More] Alfresco as our documentation team uses it. We even had a meeting with Alfresco people, but the conclusion was obvious: LibreOffice needs to handle the CMIS interface... that's what I started during that hackweek. Of course I didn't have time to have a feature-complete support of CMIS in only one week, but at least I managed to read some document on an Apache Chemistry InMemory test server at the end of the week. To make it easier, I started to write a C++ library to handle CMIS that can be found on http://sf.net/p/libcmis/. In order for LibreOffice to handle CMIS, I started writing a new Universal Content Provider (UCP) and created a fake URL scheme to access the documents. For example on master, you can open the content of the node #133 using the AtomPub CMIS binding with that kind of URL: cmis+atom://localhost:8080/inmemory/atom/?repo-id=A1&id=133. The only way to get a CMIS document that works for sure at the moment is to provide the URL to the soffice.bin process... but of course this will need some more love to get a proper UI for it. [Less]
Posted about 10 years ago by Cédric Bosdonnat
Since already a few weeks I am hacking on getting LibreOffice to integrate as smoothly as possible with ECMs. First Martin Richard and Julien Levesy - students at INSA Lyon - reworked the LibreOffice internal file picker dialog to integrate a places ... [More] list. After a few more work on it we had a useable file picker to access local files, but also FTP, WebDAV and Windows Shares. Together with that, a big effort on libcmis and the Universal Content Provider using it made it possible to connect also to CMIS enabled servers from the file picker. What works now: Connection to a CMIS server using the internal file picker Navigating in the CMIS server using the file picker like on a local file system Open, Save and Save As files on a CMIS server Even if this work has already nicely progressed it is still not ready for end users and is thus enabled only with experimental features in LibreOffice 3.6. Among the main problems: Getting the repository id to paste in the CMIS new place dialog is not obvious. This is already fixed in the master branch and will be available for 3.7 Check-in, Check-out and Cancel Check-out still need to be integrated somehow in the UI in order to handle all cases. For example, saving on a non-checked out document in SharePoint is not permitted. Add WebService binding support as this would ease the SharePoint connection configuration to the user Get NTLM authentication to work with the curl and libcmis built with LibreOffice. This is already partly fixed in master branch. Dave Largo, wrote a nice blog to help users configure the CMIS connection on 3.6, I won't be copying his work... but if you want to connect to a SharePoint server using CMIS, you should read this documentation first as it shows how to setup and enable CMIS on SharePoint 2010 and what the binding URLs are. Brave people can get a daily build or build master, but here are a few screenshots of what is in the master branch for the inpatients. [Less]
Posted about 10 years ago by Cédric Bosdonnat
Libcmis 0.3.0 just hatched and will bring a whole lot of change to the way you connect to your ECM. Here is are the cool new features that were added in this version: WebService binding is implemented at the same level than the Atom binding The ... [More] session factory has been improved to auto-guess the binding to use based on the provided URL libcmis-c provides a C wrapper API - Thanks to SUSE hackweek Object move method has been implemented - Thanks to Grau Data Versions handling has been implemented with the checkOut, checkIn, cancelCheckout and getAllVersions methods This new version of libcmis also comes with quite some fixes to support XCMIS and Cloudoku (thanks to GrauData) and SharePoint. You can download libcmis 0.3.0 on SourceForge.net as usual, or get it for your beloved openSuse on http://software.opensuse.org. [Less]
Posted about 10 years ago by Cédric Bosdonnat
Since the last blog post, quite some nice things happened: I moved to a new house, we released LibreOffice 4.0.0 fantastic release and Markus helped me write better unit tests for libcmis.In this post, I’ld like to give some details on these new unit ... [More] tests. To understand the need of changing unit tests, you need to know that libcmis test script was downloading, setting up and starting an Apache Chemistry InMemory server to interact with. This system had several drawbacks like slow unit tests and dependency on the test server features and bugs for inventing new test cases. To work this around, Markus helped me to setup a libcurl mockup library. The principle is pretty simple: replace the normal libcurl used to send the HTTP requests to the server by a mockup library. The mockup can then store the sent requests and provide the responses we want (either valid ones or invalid ones). The code of the mockup is still evolving and can be found in the qa/mockup folder of libcmis source tree. One of the key functions to get it working is curl_mockup_addResponse: it tells the mockup what response to provide under which circumstances. This function may still need some more parameters to cover all cases, but it will associate a response (body, headers, status) with a request (URL, HTTP method). The other important function for testing is curl_mockup_getRequest: it gives back the request content for a URL and HTTP method. It helps making sure that our code sent the proper request. As always, a small code snippet helps a lot to understand. Let’s take one derived from libcmis unit tests. void AtomTest::createDocumentTest( ) { // Reset the mockup configuration to avoid keeping other tests config curl_mockup_reset( ); // Add a response to match. In this case, a POST request with a URL like // http://mockup/mock/children?id=root-folder&somethingelse will fit // The response will have: // - the body: "Response body up to server" // - the HTTP status: 201 // - the HTTP Headers with Location defined curl_mockup_addResponse( "http://mockup/mock/children", "id=root-folder", "POST", "Response body up to server", 201, false, "Location: http://mockup/mock/id?id=create-document\r\n" ); // Set the authentication credentials needed to fake the server curl_mockup_setCredentials( SERVER_USERNAME, SERVER_PASSWORD ); // Create the CURL handle (in the session for libcmis) AtomPubSession session = getTestSession( SERVER_USERNAME, SERVER_PASSWORD ); // Do something with the CURL handle (the session for libcmis) ... // You can check that your code worked fine (thanks to the response you provided) ... // You can also check that the request was the expected one // or matched some important criteria (beware of timestamps // and variable bits in the requests) string request( curl_mockup_getRequest( "http://mockup/mock/children", "id=root-folder", "POST" ) ); CPPUNIT_ASSERT_EQUAL_MESSAGE( "Wrong request sent", expectedRequest, request ); } I hope this testing experience can help others testing their HTTP client application based on libcurl. Of course, something similar can be done with other HTTP client libraries. [Less]
Posted about 10 years ago by Cédric Bosdonnat
At SUSE, we recently had a Hackweek. It’s one week for all developers employed by SUSE to hack on any innovative open source project they want. Last years, I worked on libcmis and libcmis-c. And this year, I started implementing a GVFS backend for ... [More] CMIS using libcmis-c. GVFS is the one of the low-level layers of GNOME to access files. A backend is a set of features like mount, unmount, read a document, writ a document, navigate in folders, etc. Currently GVFS has backends for FTP, SSH, WebDAV, Trash, Audio CDs, and quite a lot of other useful things. Having a CMIS backend would allow any Gnome application to access documents stored on a CMIS-enabled server. What I achieved in one week: mount and unmount a CMIS repository read a document provide the content of the folders and repositories provide some of the CMIS properties To have a complete backend to upstream, I will need to implement: creating / writing files deleting / moving items creating folders setting properties The code can be found on a gvfs git clone in my freedesktop home. I want to thank the Gnome hackers who kindly answered my beginner questions during this week. [Less]
Posted about 10 years ago by Cédric Bosdonnat
Michael asked me this week to provide some screenshots of my hackweek work on a GVFS backend for CMIS. Sadly I had none and switched to openSUSE Factory in the mean time so I had to update my code for gvfs master branch. I also had an annoying bug ... [More] when browsing a CMIS repository in Nautilus... so I had to fix that. After quite some hours searching, debugging, adding g_print in nautilus, gtk+ and glib, I finally found the culprit: g_vfs_encode_uri was leaving the ':' unencoded in the hostname. Now I have screenshots to show here: One from an Alfresco server: One showing the SharePoint 2013 repositories: [Less]
Posted about 10 years ago by Cédric Bosdonnat
After quite a long time alternating intensive hacking and inactivity, libcmis 0.4.0 is finally out and brings quite a number of great new features. The hightlight of this release is of course the introduction of the Google Drive protocol as a CMIS ... [More] binding by Cao Cuong Ngo for his Google Summer of Code project with LibreOffice. This allows to connect to your Google Drive documents in the same way than with any CMIS server. However there are quite some other important improvements: Support for OAuth2 authentication for the CMIS servers. This allows libcmis to connect to Alfresco cloud. Most of this feature comes from Cao Cuong Ngo's work. Allow to provide custom HTTP proxy configuration. Handle invalid SSL certificates instead of simply failing them. This feature depends if libcurl was built with OpenSSL or not. Provide repository capabilities Implement renditions support And it's not a feature, but a great improvements from libcmis hackers: I removed the Atom binding unit tests depending on Apache Chemistry InMemory server and switched them to a unit test framework using a libcurl mockup. It heavily reduced the unit test execution time, but the WebService binding unit test still have to be migrated to completely get rid of the InMemory server. You can download libcmis 0.4.0 on SourceForge.net as usual. The package for openSuse will shortly available on software.opensuse.org [Less]
Posted about 10 years ago by Cédric Bosdonnat
I just rebased the feature/cmis branch hosting Cuong's great work and some other interesting improvements of the existing CMIS feature. Concretely, this means that with master builds you can now: Connect to Google Drive through the CMIS feature. The ... [More] UI for the connection may still need to be improved See and edit the CMIS properties of your documents. Decide what to do with invalid SSL certificates when initiating a CMIS connection [Less]
Posted about 10 years ago by Cédric Bosdonnat
LibreOffice CMIS server connection feature suffered a severe disease since the begining: it was not able to connect to servers using HTTPS. First a workaround was added for invalid certificates, but the problem also existed for valid ones as ... [More] described by fdo#72277. After several months of inactivity, I finally managed to grab enough courage to dive into curl and NSS. From 4.3.1, LibreOffice built with internal curl library, will be able to use the mozilla certificates database to validate CMIS connections. For those wanting to know the gore details, LibreOffice internal curl library is built with NSS support. To read the certificates database, curl needs to find libnssckbi: so NSSInitializer UNO service was here to do that job. But using that service is not enought: curl doesn't know how to read the PKCS certificates stored in the database... and needs libnsspem to do that. After some digging, I uncovered it on fedorahosted and added it as a patch to LibreOffice internal NSS library. Thanks Caolan and Michael Stahl for pointing me to the right direction to fix that one. [Less]
Posted almost 12 years ago by Cédric Bosdonnat