Coder Social home page Coder Social logo

aegif / cmissync Goto Github PK

View Code? Open in Web Editor NEW
162.0 39.0 123.0 67.84 MB

Synchronize content between a CMIS repository and your desktop. Like Dropbox for Enterprise Content Management!

Home Page: http://CmisSync.com

C# 95.35% Shell 1.26% HTML 0.63% XSLT 0.06% PowerShell 0.23% Makefile 1.19% Batchfile 0.04% M4 1.25%
cmis alfresco sharepoint synchronization documentum nuxeo filenet mobility offline document-management

cmissync's Introduction

CmisSync logo

CmisSync allows you to keep in sync with your CMIS repository. It is like Dropbox for Enterprise Content Management!
See: http://CmisSync.com

Git branches

  • renditions: Download CMIS renditions (typically thumbnails of images) while synchronizing
  • mac-refactor-demo-2019: Major refactoring for enhanced maintainability

License

CmisSync is Open Source software and licensed under the GNU General Public License version 3 or later. You are welcome to change and redistribute it under certain conditions. For more information see the legal/LICENSE file.

Development

We are looking for volunteers!
See how to get started developing CmisSync

cmissync's People

Contributors

alexhudson avatar alshopov avatar bl8 avatar carlosmn avatar chezyann avatar deejay1 avatar felfert avatar froth avatar hbons avatar jamelrom avatar kristi avatar lelmarir avatar magnunleno avatar matthid avatar mlettner avatar more0401 avatar moritakasoma avatar myii avatar nicolas-raoul avatar nicolaslazartekaqui avatar pierrearonnax avatar rodrigopereyradiaz avatar sandyarmstrong avatar serras avatar shish avatar soneyworld avatar spither avatar thelightmaker avatar travisghansen avatar ways avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cmissync's Issues

adding repo fails on linux

When validating data filled in the wizard I get the error below ("Add" project button at the end of the wizard):

FullPath:/home/alxgomz/.config/cmissync/config.xml
21:42:23 | Config | Wrote to '/home/alxgomz/.config/cmissync/config.xml'
21:42:23 | Config | Updated option notifications:True
21:42:31 | Config | Wrote to '/home/alxgomz/.config/cmissync/config.xml'
Cmis SparkleFetcher constructor
21:43:40 | Fetcher | /home/alxgomz/SparkleShare/.tmp/cmissync | Fetching folder: http://172.16.0.2:8080/alfresco/cmisatom
21:43:40 | Auth | Skipping fingerprint check
21:43:40 | Auth | Accepted host key for 172.16.0.2
21:43:40 | Fetcher | Failed creating fingerprint: Array index is out of range. at SparkleLib.SparkleFetcherBase.GetFingerprint (System.String public_key) [0x00000] in :0
Cmis SparkleFetcher Fetch
21:43:41 | Fetcher | Finished
Cmis SparkleFetcher IsFetchedRepoEmpty
Cmis SparkleFetcher Complete
Cmis SparkleFetcher IsFetchedRepoEmpty
21:43:41 | Config | Wrote to '/home/alxgomz/.config/cmissync/config.xml'

Unhandled Exception: System.TypeLoadException: A type load exception has occurred.
at SparkleShare.SparkleControllerBase.FinishFetcher () [0x00000] in :0
at SparkleShare.SparkleControllerBase.m__1D (Boolean repo_is_encrypted, Boolean repo_is_empty, System.String[] warnings) [0x00000] in :0
at (wrapper delegate-invoke) :invoke_void__this___bool_bool_string
at SparkleLib.SparkleFetcherBase.m__4 () [0x00000] in :0
at System.Threading.Thread.StartInternal () [0x00000] in :0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: A type load exception has occurred.
at SparkleShare.SparkleControllerBase.FinishFetcher () [0x00000] in :0
at SparkleShare.SparkleControllerBase.m__1D (Boolean repo_is_encrypted, Boolean repo_is_empty, System.String[] warnings) [0x00000] in :0
at (wrapper delegate-invoke) :invoke_void__this___bool_bool_string
at SparkleLib.SparkleFetcherBase.m__4 () [0x00000] in :0
at System.Threading.Thread.StartInternal () [0x00000] in :0

The Alfresco server (Community 4.0e) doesn't receives any request from the client. However the config file seems to be written properly as shown below:

<?xml version="1.0" encoding="UTF-8"?>
<sparkleshare>
  <user>
    <name>Alexandre Chapellon</name>
    <email>[email protected]</email>
  </user>
  <notifications>True</notifications>
  <folder>
    <name>cmisatom</name>
    <identifier>bd0b841a7aa23429c1571d349a50c886984abaf8</identifier>
    <url>http://172.16.0.2:8080/alfresco/cmisatom</url>
    <backend>Cmis</backend>
    <repository>7080820c-bdea-4398-8693-b05aea8aadb0</repository>
    <remoteFolder>/cmissync</remoteFolder>
    <user>admin</user>
    <password>admin</password>
  </folder>
</sparkleshare>

When server down, tell the user

Right now, CmisSync complains in the log file, but most users probably do not read it.
Should show a UI notification or something instead. See how SparkleShare does this when a Git server is down.

compilation fails on Linux

I have tried to compil the latest git tree on my Debian wheezy.
It's shipped with mono 2.10.8.1 GNU make 3.8.1and autotools 2.69.
To compil I used the usual steps:

  • ./autogen.sh
  • make

autogen runs properly, but make throws:

Making all in build
Making all in m4
Making all in SparkleLib
MCS ../bin/SparkleLib.dll
warning CS2002: Source file ./Defines.cs' specified multiple times Compilation succeeded - 1 warning(s) Making all in SparkleLib/Cmis MCS ../../bin/SparkleLib.Cmis.dll ./SparkleRepoCmis.cs(122,17): warning CS0162: Unreachable code detected ./SparkleRepoCmis.cs(141,20): warning CS0219: The variableid' is assigned but its value is never used
./SparkleFetcherCmis.cs(31,24): warning CS0414: The private field SparkleLib.Cmis.SparkleFetcher.crypto_salt' is assigned but its value is never used Compilation succeeded - 3 warning(s) Making all in SparkleShare Making all in Linux Making all in Nautilus Making all in Pixmaps Making all in icons Making all in ubuntu-mono-dark Making all in ubuntu-mono-light MCS ../../bin/SparkleShare.exe ./../SparkleControllerBase.cs(27,18): error CS0234: The type or namespace nameCmis' does not exist in the namespace `SparkleLib'. Are you missing an assembly reference?
Compilation failed: 1 error(s), 0 warnings
make[3]: *** [../../bin/SparkleShare.exe] Erreur 1
make[2]: *** [all-recursive] Erreur 1
make[1]: *** [all-recursive] Erreur 1
make: *** [all-recursive] Erreur 1

Use remoteFolder.GetFolderTree instead of recursion

Use remoteFolder.GetFolderTree instead of recursion, if it is more efficient in terms of bandwidth/latency.
It is probably also safer, for instance in cases where a remote directory is deleted while crawling.

Dialog to select the repository/folder interactively

Right now user has to type:

  • the CMIS URL
  • the repository id
  • the path inside the repository

We could just ask for the CMIS URL, then:

  • connect and fetch the list of repositories
  • ask the user to select among those repositories
  • let the user browse inside the hierarchy of folders inside that repository, and choose the one they want

Tell the user how much data will be downloaded

If no info is given, users might select their whole company's folder, could be several terabytes.

So, when the user selects a folder for checkout, we should display something like:

"Size of the local copy will be 3.5TB. On an average Internet connection it will take 900 hours. Are you sure?"

File status icon in Nautilus

FIle status icon overlay does not show up in my Nautilus.
(it does not display with SparkleShare either)
Is there any trick to make it work?

FileSystemWatcher

SparkleWatcher implements FileSystemWatcher.

We should use it to efficiently detect local changes.

It does not replace local crawling, which we must be once at startup, to check which files have changed while CmisSync was not running.

WebException during recursive download

System.Net.WebException was unhandled
Message=The operation has timed out.
Source=System
StackTrace:
at System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count)
at SparkleLib.Cmis.SparkleRepo.RecursiveFolderCopy(IFolder remoteFolder, String localFolder) in C:\Users\nico\src\CmisSync\SparkleLib\Cmis\SparkleRepoCmis.cs:line 115
at SparkleLib.Cmis.SparkleRepo.RecursiveFolderCopy(IFolder remoteFolder, String localFolder) in C:\Users\nico\src\CmisSync\SparkleLib\Cmis\SparkleRepoCmis.cs:line 94
at SparkleLib.Cmis.SparkleRepo.Sync() in C:\Users\nico\src\CmisSync\SparkleLib\Cmis\SparkleRepoCmis.cs:line 73
at SparkleLib.Cmis.SparkleRepo..ctor(String path, SparkleConfig config) in C:\Users\nico\src\CmisSync\SparkleLib\Cmis\SparkleRepoCmis.cs:line 63
at SparkleShare.SparkleControllerBase.AddRepository(String folder_path) in C:\Users\nico\src\CmisSync\SparkleShare\SparkleControllerBase.cs:line 264
at SparkleShare.SparkleControllerBase.CheckRepositories() in C:\Users\nico\src\CmisSync\SparkleShare\SparkleControllerBase.cs:line 368
at SparkleShare.SparkleControllerBase.b__1c() in C:\Users\nico\src\CmisSync\SparkleShare\SparkleControllerBase.cs:line 244
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()

Slash in database name

If a sub-folder is chosen, the database name becomes something like "Sites/cmissync.s3db"
which fails to be created.

Possible solution: transform slashes to underscores

Template for various CMIS servers in server addition dialog

SparkleShare has templates for Github/etc.
They are helpful to:

  • Prevent typos
  • Show what is supported

Similarly, we should have templates for various CMIS servers.

However, the left part should not become un-editable, as each user needs to change the server name.

Crash on Vista

Reported by Alex:

SparkleShare crashes just after launch, before even showing any wizard.
The tray icon appears briefly but disappears as soon as the mouse is hovered above.

remotePath not taken into account

  1. Use "Add CMIS folder" wizard, configure for instance "daves" as the remotePath.
  2. Complete the wizard.
  3. CmisSync starts downloading everything, not just the content of "daves"

Copy third-party DLLs to /usr/lib/sparkleshare/

The build process should be modified so that DotCMIS.dll is automatically copied to /usr/lib/sparkleshare/ (or equivalents on Mac/Windows) when running make install or when installing a distributable.

The workaround right now is to manually run:

sudo cp SparkleLib/Cmis/lib/* /usr/lib/sparkleshare/

Crash at WebBrowser.NavigateToString

Sometimes I get this exception in Program.Main

I have no idea why there even is a WebBrowser in the first place.

Value cannot be null. Parameter name: text
at System.Windows.Controls.WebBrowser.NavigateToString(String text)
at SparkleShare.SparkleEventLog.<>c__DisplayClass26.b__25() in C:\Users\nico\src\CmisSync\SparkleShare\Windows\SparkleEventLog.cs:line 286
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run()
at SparkleShare.SparkleUI.Run() in C:\Users\nico\src\CmisSync\SparkleShare\Windows\SparkleUI.cs:line 49 // Code: Application.Run();
at SparkleShare.Program.Main(String[] args) in C:\Users\nico\src\CmisSync\SparkleShare\Program.cs:line 73 // Code: UI.Run();

Error CS0433: The imported type `SparkleLib.Defines' is defined multiple times

When compiling on Linux:

/usr/bin/dmcs -codepage:utf8 -nowarn:0278 -nowarn:0078 -define:HAVE_GTK_2_10 -define:NET_2_0 -debug -target:exe -out:../../bin/SparkleShare.exe -define:HAVE_APP_INDICATOR -define:ENABLE_ATK -r:../../bin/SparkleLib.dll -r:Mono.Posix -r:System -r:/usr/lib/cli/appindicator-sharp-0.1/appindicator-sharp.dll -r:/usr/lib/cli/notify-sharp-0.4/notify-sharp.dll -r:/usr/lib/cli/webkit-sharp-1.1/webkit-sharp.dll -r:/usr/lib/pkgconfig/../../lib/cli/atk-sharp-2.0/atk-sharp.dll -r:/usr/lib/pkgconfig/../../lib/cli/gdk-sharp-2.0/gdk-sharp.dll -r:/usr/lib/pkgconfig/../../lib/cli/glib-sharp-2.0/glib-sharp.dll -r:/usr/lib/pkgconfig/../../lib/cli/gtk-sharp-2.0/gtk-sharp.dll -r:/usr/lib/pkgconfig/../../lib/cli/pango-sharp-2.0/pango-sharp.dll ./../Program.cs ./../SparkleAboutController.cs ./../SparkleBubblesController.cs ./../SparkleControllerBase.cs ./../SparkleEventLogController.cs ./../SparkleExtensions.cs ./../SparkleInvite.cs ./../SparkleKeys.cs ./../SparklePlugin.cs ./../SparkleSetupController.cs ./../SparkleStatusIconController.cs ./SparkleAbout.cs ./SparkleBubbles.cs ./SparkleController.cs ./SparkleEventLog.cs ./SparkleSetup.cs ./SparkleSetupWindow.cs ./SparkleSpinner.cs ./SparkleStatusIcon.cs ./SparkleUI.cs ./SparkleUIHelpers.cs -r:../../bin/SparkleLib.Cmis.dll
./SparkleController.cs(35,40): error CS0433: The imported type `SparkleLib.Defines' is defined multiple times
/home/nico/src/CmisSync/bin/SparkleLib.dll (Location of the symbol related to previous error)
/home/nico/src/CmisSync/bin/SparkleLib.Cmis.dll (Location of the symbol related to previous error)

Can't compile using make on Linux

Trying to compil on Linux using Mono fails with the following error:
Making all in build
Making all in m4
Making all in SparkleLib
MCS ../bin/SparkleLib.dll
warning CS2002: Source file ./Defines.cs' specified multiple times Compilation succeeded - 1 warning(s) Making all in SparkleLib/Cmis MCS ../../bin/SparkleLib.Cmis.dll ./SparkleRepoCmis.cs(43,17): error CS0118:SparkleLib.Cmis' is a namespace' but atype' was expected
./SparkleRepoCmis.cs(35,14): error CS0234: The type or namespace name Data' does not exist in the namespaceSystem'. Are you missing an assembly reference?
./SparkleRepoCmis.cs(36,14): error CS0234: The type or namespace name Data' does not exist in the namespaceSystem'. Are you missing an assembly reference?
Compilation failed: 3 error(s), 0 warnings
make[1]: *** [../../bin/SparkleLib.Cmis.dll] Erreur 1
make: *** [all-recursive] Erreur 1

Crash if wrong credentials

Steps:

  • Install .NET 4.5 on a Windows 7
  • Install CmisSync
  • Launch CmisSync
  • Complete setup wizard
  • Complete folder addition wizard, enter wrong username/password
  • CmisSync crashes, probably at the first connection.

URL is reset to alfresco URL

Steps:

  1. Use wizard to set up for instance a FileNet URL
  2. In config.xml the default Alfresco URL has been written.

Make package name a variable

Make package name a variable, that could be easily set to "SparkleShare", "CmisSync" or other.

Hylke has expressed interest in merging this feature if implemented.

Crash on Windows XP

Reported by Jay:
After it ran and synced against my FileNet (successfully by the way) it kept disappearing from the task panel after it went idle. I would restart it and it would go away a minute or two later.
It was an old bloated XP VM image that I installed it on though so I would not rule out the image being a bit unstable.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.