Syslifters / sysreptor

A customizable and powerful penetration testing reporting platform for offensive security professionals. Simplify, customize, and automate your pentest reports with ease.
https://docs.sysreptor.com
Other
1.5k stars 144 forks source link

[Feature Request] Adding Excalidraw plugin #357

Open danymat opened 3 days ago

danymat commented 3 days ago

Hello,

Thanks for adding the plugins option, I just enabled it and added the Cyberchef plugin to test, works wonderfully.

We would really like the support of a self-hosted excalidraw (https://github.com/excalidraw/excalidraw) plugin that we use daily for taking notes and creating maps of our pentests.

I just saw that you have two options for the plugins:

  1. General plugin (that is to say, plugins in the home directory)
  2. By-project plugins (which is inside each project, such as showed on the call http:///project//plugins/)

Btw, I'm still not sure which excalidraw implementation to consider:

  1. Non real-time collaboration -> easy to install and setup (like cyberchef), data stays in local storage (could be a first approach) (https://docs.excalidraw.com/docs/@excalidraw/excalidraw/installation)
  2. Limited real-time collaboration -> creating a "lock" during editing by users, but other users could edit afterwards
  3. Full realtime colaboration -> more complex to implement, necessitates handling via server (https://docs.excalidraw.com/docs/@excalidraw/excalidraw/faq#does-this-package-support-collaboration-)

What do you think ?

MWedl commented 3 days ago

Great idea. Here are some thoughts on how an excalidraw plugin could be implemented:

  1. Non real-time collaboration: This should be quite easy to implement, because of the existing npm package.
  2. Locking: This would require to add a custom lock mechanism (similar to design/template locks) and a per-project data storage for excalidraw. It would be useful if users can create/manage multiple diagrams per project and not just one diagram.
  3. Full realtime colaboration: Running the default excalidraw collab server via the plugin system is not supported. We would need to implement a custom collab adapter, data storage and multi-page support. For the custom collab integration, the plugin system needs to be extended to allow defining custom websocket handlers in plugins.

I think 2. and 3. will be tricky to implement.

  1. should be easy, but users probably need to export diagrams themselves and manually save them to notes.
danymat commented 3 days ago

Indeed, i share this reasoning.

  1. Should be quite easy and straightforward, but do you agree that each project will have it's own note ? (locally per user). It would be straight useful for each team member, but you lose the "collaboration" feature of excalidraw.
  2. This would be more difficult to implement (because of locking) but it could make excalidraw more useful for teams
  3. This one is, i guess, the most interesting for teams. Indeed, their collaboration server is not easily done, but i think it could be a game changer.

Some considerations however: