Giter Club home page Giter Club logo

corso's Introduction

Corso Logo

Corso

Go Report Card Discord License Contributor Covenant

Corso is the first open-source tool that aims to assist IT admins with the critical task of protecting their Microsoft 365 data. It provides a reliable, secure, and efficient data protection engine. Admins decide where to store the backup data and have the flexibility to perform backups of their desired service through an intuitive interface. As Corso evolves, it can become a great building block for more complex data protection workflows.

Corso is currently in Beta.

Corso supports M365 Exchange and OneDrive with SharePoint and Teams support in active development. Coverage for more services, possibly beyond M365, will expand based on the interest and needs of the community.

Getting Started

See the Corso Quickstart on our docs page.

Building Corso

To learn more about working with the project source core and building Corso, see the Developer section of the Corso Documentation.

Roadmap

You can learn more about the Corso roadmap and how to interpret it here.

If you have feature requests, please file a GitHub issue and attach the enhancement label to the issue.

Contribution Guidelines

Code of Conduct

It's important that our community is inclusive and respectful of everyone. We ask that all Corso users and contributors take a few minutes to review our Code of Conduct.

License

Corso is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

corso's People

Contributors

aartij17 avatar ahmedcoolprojects avatar ashmrtn avatar bchex avatar dependabot[bot] avatar enothereska avatar github-actions[bot] avatar gmatev avatar hiteshrepo avatar infraowner avatar juleslasarte avatar meain avatar meuchels avatar neha-gupta1 avatar ntolia avatar orhantozan avatar pandeyabs avatar ryanfkeepers avatar serverless-mom avatar snyk-bot avatar uncledru avatar vkamra avatar wlan0 avatar zackrossman 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

corso's Issues

kopia data layout

Determine the data layout for corso data in kopia. Things to hash out:

  • structure of data items for each user
  • data encoding (json, binary, etc)
  • where to store data like attachmens

virtual stream directory for kopia

Create a new kopia interface that allows one to incrementally return children of the current directory and wire it up to the uploader

repo cmd - validate presence of required properties

corso repo init s3 requires a handful of configuration and credential properties to succeed. Some of these requirements can be enforced by the cobra cli package (ex: the s3 --bucket flag). Others, especially env-sourced credentials (and config file sourced properties, later), must be validated within corso code.

  • Validate presence of required config properties in storage configurations.

Code Check-In

Create a standard GitHub action for code check-in

  • Checks Markdown for spelling, typos, grammar
  • Checks code for adhering to gofmt standard or ensures that all code is put into that standard at check-in
  • Annotates code coverage onto root directory READMe

Setup AWS S3 test environment

This tracks setup of AWS S3 environment (bucket(s), credentials) that we can use in our test pipeline (Github actions).

https://github.com/aws-actions/configure-aws-credentials appears to be the way to go here.

This will involve:

  • Creating an AWS account that will be used for Corso testing
  • Setup a OIDC provider in that AWS account configured to allow the Corso repository GH actions to authenticate
  • Create an AWS IAM role that the Corso Github action can be configured to assume and provision temporary session credentials as environment variables (AWS_ACCESS_KEY, AWS_SECRET_KEY, AWS_SESSION_TOKEN) that our tests can use

An alternative is to deploy and use MinIO but I'd like to explore if we can leverage S3 (assuming we can keep things locked down and avoid any credential leaks, etc via rouge PRs).

Data Connect Application with application

Create a Data Connect prototype to compare to the msgraph api

  • Install the application with permissions to our developer environment
  • Create a document that shows the current way to create a new application as current documentation is confusing
  • Demo should be simple to see how the level of granularity that Connect exposes.

Email generator for Test Developers

Related to Issue #17
Create an automated process to increase email traffic between team development accounts.
The ticket can be closed when the following is complete:

  • Messages being sent should not trigger the spam folder
  • Generated messages should not be hardcoded to a single user
  • Increase total tenant emails to 100
  • Increase total tentant emails to 1000
  • Increase total tenant emails to 3000
  • Test Suite included

run integration tests from local machines

Developers should be able to run integration tests from their local machines. Currently they can't.

Options:

  1. Figure out how to get nektos/act to play nice with aws-actions/configure-aws-credentials.
  2. Curate a new github action yml file that allows devs to run integration tests using local credentials.
  3. (preferred) Run all integration tests with go test ./.... This also requires object cleanup to occur with *_test.go files, as opposed to the aws cli commands currently in github action ymls.

Throttling Verification

MSFT document discusses that throttling limits the number of concurrent calls to resources. For engineering purposes, a concrete understanding of the limiters that are placed on the application needs to be investigated.
This overall ticket can be closed when the following tickets are closed.

Event generator for Development Environment

Related to Issue #17
Create an automated process to increase event occurrences for team development accounts.
The ticket can be closed when the following is complete:

  • Events should be made in the future
  • Generated events should include several different members to check for corner casess
  • Increase total tenant events to 100
  • Increase total tenant events to 1000
  • Increase total tenant events to 5000
  • Test Suite included

minimal kopia backup/restore

Create a minimal program that can backup two in-memory data items to a remote kopia repository as a single snapshot and then retrieve them

Design & Document Corso CLI

Produce the initial design of the Corso CLI. The document should declare which commands are usable in the initial release, what analogous properties are supported (config files, env vars, etc), and provide clear description of the command and their usage. This document is not intended to duplicate or replace internal documentation such as the terminal help output or man page.

Upon completion, the finalized CLI.md document will be added to the /docs directory.

Move demo project from to Version 21

Msgraph-sdk-go recently updated to new version. Upgrades break most of our object stores. Upgrade is important to us as it solves several bugs and does add more functionality to the library.

  • Switch core, abstractions, and msgraph to the newest versions -> Go.mod, go.sum
  • Resolve library failures
  • Freeze versioning until next stable release

Corso documentation platform changes

There are a bunch of misc. changes that need to be made to the Coros docs system:

  • Add a logo for dark mode
  • Set up dark mode to auto-detect system settings and remove selector
  • Add site metadata for SEO
  • Add Mermaid for diagrams - https://github.com/sjwall/mdx-mermaid
  • Swap link from Discourse to GitHub Discussion
  • Add style/spell/format checks for platform README
  • Add development requirements in the platform README

`corso backup create exchange` CLI

Adds the following to the CLI:

  • backup command set.
  • create subcommand for backup.
  • exchange application subcommands for backup create.
  • Able to automatically connect to a previously connected repo.

first pass at BackupCollections code

Take a first pass at the BackupWriter code. The code should:

  • connect to a remote s3 kopia repo
  • use mock data
  • have fake emails and attachments in the proper directory structure in kopia

add repo cli usage docs

Request

Ensure that corso CLI documentation is automatically maintained as a CI action. Changes to CLI structure should automatically result in an update to any relevant markdown files or other documentation. Example: a new CLI command is added- as a result a new markdown file documenting that command should be auto-generated and added to the commit changes.

Any markdown document changes, upon merger, should then automatically generate a new docusaurus release, so that the online corso documentation stays up to date.

Requirements

  • Ensure help is available/displayed as expected.
  • Auto-generate CLI markdown as a CI action.
  • New MR for changes instead of inline commit
  • Docusaurus docs build.

Create Demonstration of Corsito Goals

For clarity, the team will create a visualization of Corsito goals for the initial release. Visualizations of use cases.
It could be as simple as deleting a few emails and events to show what the user/administrator will be attempting to achieve.

  • Should show potential CLI interface
  • Show the interface
    • List messages system-wide
    • List of events
  • Visualization can be Powerpoint or Whiteboard sketch

Parse Node Documentation

The ParseNode is the abstraction that all Outlook objects are transformed into. Document the creation process as well as how to retrieve individual fields from this object.

  • Create Documentation in repo
  • Code snippet for writing streamed data into object
  • Document the test cases and why regular failures do not necessarily show up with this object

Create GraphConnector Skeleton

At the time of initialization, the GraphConnector component should initialize.

  • Intake configuration params set to clientId, tenantId, and client_secret
  • Component design created
    Related to Issue #25

Go testing framework

The testing package provided by Go give us a lot of functionality and we want to be able to use go test ... to run our tests because that allows integration with other systems (e.g. VS code)

In addition to that - what is typically useful is:

  • Assertion/Compare utilities to validate results
  • The ability to group tests into suites which allows for easy suite selection and shared setup/teardown for a set of tests

Determine where design docs live

We need to figure out where Corso design docs/discussion should go.

We could put this in a docs directory in the repo (in markdown) for example. It's also worth looking into what Github functionality can be used here.

Perform Throttling Checks

Create an automated process to evaluate the amount of throttling that exists from the vantage point of our tenant.

This issue can be closed when the following have been tasks have been completed:

  • Create a generic application that can pull mail from all of the members in the tenant dev account.
  • Expand the application to pull events from all of the members in the tenant dev account.
  • Application should display basic telemetry data.
    • messages per second
    • average wait time between responses
    • any forced disconnects from the server

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.