All Projects → petrsvihlik → Wopihost

petrsvihlik / Wopihost

Licence: other
ASP.NET Core MVC implementation of the WOPI protocol. Enables integration with WOPI clients such as Office Online Server.

Projects that are alternatives of or similar to Wopihost

Raft.net
Implementation of RAFT distributed consensus algorithm among TCP Peers on .NET / .NETStandard / .NETCore / dotnet
Stars: ✭ 112 (-15.15%)
Mutual labels:  dotnet-standard, dotnet-core, dotnetcore
Colore
A powerful C# library for Razer Chroma's SDK
Stars: ✭ 121 (-8.33%)
Mutual labels:  hacktoberfest, dotnet-standard, dotnet-core
Fluentresults
A generalised Result object implementation for .NET/C#
Stars: ✭ 266 (+101.52%)
Mutual labels:  hacktoberfest, dotnet-standard, dotnet-core
Architecture
.NET 6, ASP.NET Core 6, Entity Framework Core 6, C# 10, Angular 13, Clean Code, SOLID, DDD.
Stars: ✭ 2,285 (+1631.06%)
Mutual labels:  aspnet-core, dotnet-core, dotnetcore
Sendgrid Csharp
The Official Twilio SendGrid Led, Community Driven C#, .NetStandard, .NetCore API Library
Stars: ✭ 835 (+532.58%)
Mutual labels:  dotnet-standard, dotnet-core, dotnetcore
Coravel
Near-zero config .NET Core micro-framework that makes advanced application features like Task Scheduling, Caching, Queuing, Event Broadcasting, and more a breeze!
Stars: ✭ 1,989 (+1406.82%)
Mutual labels:  hacktoberfest, dotnetcore, dotnet-core
Sio.core
✔ [ SIOC ] Swastika I/O Core is an all in one platform (e.g CMS, eCommerce, Forum, Q&A, CRM...) ASP.NET Core / Dotnet Core System based on SIOH Framework.
Stars: ✭ 121 (-8.33%)
Mutual labels:  dotnet-standard, dotnet-core, dotnetcore
Dotnet Etcd
A C# .NET (dotnet) GRPC client for etcd v3 +
Stars: ✭ 157 (+18.94%)
Mutual labels:  dotnet-standard, dotnet-core, dotnetcore
Practical Aspnetcore
Practical samples of ASP.NET Core 2.1, 2.2, 3.1, 5.0 and 6.0 projects you can use. Readme contains explanations on all projects.
Stars: ✭ 6,199 (+4596.21%)
Mutual labels:  hacktoberfest, aspnet-core, dotnet-core
Alexa Skills Dotnet
An Amazon Alexa Skills SDK for .NET
Stars: ✭ 412 (+212.12%)
Mutual labels:  dotnet-standard, dotnet-core, dotnetcore
Sharpsnmplib
Sharp SNMP Library- Open Source SNMP for .NET and Mono
Stars: ✭ 247 (+87.12%)
Mutual labels:  dotnet-standard, dotnet-core, dotnetcore
Aspnetcore Practice
ASP.NET Core 專案練習集合,ASP.NET Core Practice Projects
Stars: ✭ 80 (-39.39%)
Mutual labels:  aspnet-core, dotnet-core, dotnetcore
Corehook
A library that simplifies intercepting application function calls using managed code and the .NET Core runtime
Stars: ✭ 191 (+44.7%)
Mutual labels:  dotnet-standard, dotnet-core, dotnetcore
Pixieditor
PixiEditor is a lightweight pixel art editor made with .NET 5
Stars: ✭ 210 (+59.09%)
Mutual labels:  hacktoberfest, dotnet-core, dotnetcore
Rafty
Implementation of RAFT consensus in .NET core
Stars: ✭ 182 (+37.88%)
Mutual labels:  dotnet-standard, dotnet-core, dotnetcore
Simplcommerce
A simple, cross platform, modularized ecommerce system built on .NET Core
Stars: ✭ 3,474 (+2531.82%)
Mutual labels:  dotnet-core, dotnetcore, net-core
Appmetrics
App Metrics is an open-source and cross-platform .NET library used to record and report metrics within an application.
Stars: ✭ 1,986 (+1404.55%)
Mutual labels:  dotnet-standard, dotnet-core, dotnetcore
Awesome Cms Core
Awesome CMS Core is an open source CMS built using ASP.Net Core & ReactJS with module seperation concern in mind and provide lastest trend of technology like .Net Core, React, Webpack, SASS, Background Job, Message Queue.
Stars: ✭ 352 (+166.67%)
Mutual labels:  dotnet-standard, dotnet-core, dotnetcore
Awesome Microservices Netcore
💎 A collection of awesome training series, articles, videos, books, courses, sample projects, and tools for Microservices in .NET Core
Stars: ✭ 865 (+555.3%)
Mutual labels:  aspnet-core, dotnet-core, dotnetcore
Cronscheduler.aspnetcore
Cron Scheduler for AspNetCore 2.x/3.x or DotNetCore 2.x/3.x Self-hosted
Stars: ✭ 100 (-24.24%)
Mutual labels:  aspnet-core, dotnet-core, dotnetcore

Introduction

Build & Test codecov Maintainability CodeFactor FOSSA Status Gitter .NET Core

This project is a sample implementation of a WOPI host. Basically, it allows developers to integrate custom datasources with Office Online Server (formerly Office Web Apps) or any other WOPI client by implementing a bunch of interfaces.

Features / improvements compared to existing samples on the web

  • clean WebAPI built with ASP.NET Core MVC (no references to System.Web)
  • uses new ASP.NET Core features (configuration, etc.)
  • can be self-hosted or run under IIS
  • file manipulation is extracted to own layer of abstraction (there is no dependency on System.IO)
    • example implementation included (provider for Windows file system)
    • file identifiers can be anything (doesn't have to correspond with the file's name in the file system)
  • custom token authentication middleware
  • DI used everywhere
  • URL generator
    • based on a WOPI discovery module
  • all references are NuGets

Usage

Prerequisites

Building the app

The WopiHost app targets net5.0 exclusively. This is due to the announced discontinuation of .NET Framework and .NET Core and replacement of .NET Standard.

If you need a version that's targeting an older version of .NET, check out the releases:

If you get errors saying that Microsoft.CobaltCore.*.nupkg can't be found, then just remove the reference or see the chapter Cobalt below.

Configuration

WopiHost

WopiHost\appSettings.json

Parameter Sample value Description
Wopi:StorageProviderAssemblyName "WopiHost.FileSystemProvider" Name of assembly containing implementation of WopiHost.Abstractions interfaces
Wopi:StorageProviderOptions:RootPath ".\\wopi-docs" Provider-specific setting used by WopiHost.FileSystemProvider (which is an implementation of IWopiStorageProvider working with System.IO)
Wopi:UseCobalt true Whether or not to use MS-FSSHTTP for file synchronization. More details at Cobalt

WopiHost.Web

WopiHost.Web\appSettings.json

Parameter Sample value Description
Wopi:HostUrl "http://wopihost:5000" URL pointing to a WopiHost instance (above). It's used by the URL generator.
Wopi:ClientUrl "http://owaserver" Base URL of your WOPI client - typically, Office Online Server - used by the discovery module to load WOPI client URL templates
Wopi:StorageProviderOptions:RootPath "..\\..\\WopiHost\\wwwroot\\wopi-docs" Provider-specific setting used by WopiHost.FileSystemProvider (which is an implementation of IWopiStorageProvider working with System.IO)

Additionally, you can use the secret storage to configure both of the apps.

Running the application

Once you've successfully built the app you can:

  • run it directly from the Visual Studio using IIS Express or self-hosted.
    • make sure you run both WopiHost and WopiHost.Web. You can set them both as startup projects
  • run it from the cmd
    • navigate to the WopiHost folder and run dotnet run
  • run it in IIS (tested in IIS 8.5)
    • TODO

Compatible WOPI Clients

Running the application only makes sense with a WOPI client as its counterpart. WopiHost is compatible with the following clients:

Note that WopiHost will always be compatible only with the latest version of OOS because Microsoft also supports only the latest version.

The deployment of OOS/OWA requires the server to be part of a domain. If your server is not part of any domain (e.g. you're running it in a VM sandbox) it can be overcame e.g. by installing DC role. After it's deployed you can safely remove the role and the OWA server will remain functional. To test your OWA server follow the instructions here. To remove the OWA instance use Remove-OfficeWebAppsMachine.

Cobalt

In the past (in Office Web Apps 2013), some HTTP actions required support of MS-FSSHTTP protocol (also known as "cobalt"). This is no longer true with Office Online Server 2016. However, if the WOPI client discovers (via SupportsCobalt property) that the WOPI host supports cobalt, it'll take advantage of it as it's more efficient.

If you need or want your project to use Cobalt, you'll need to create a NuGet package called Microsoft.CobaltCore.nupkg containing Microsoft.CobaltCore.dll. This DLL is part of Office Web Apps 2013 / Office Online Server 2016 and its license doesn't allow public distribution and therefore it's not part of this repository. Please always make sure your OWA/OOS server and user connecting to it have valid licenses before you start using it.

Using in your web project

TODO

Extending

TODO

Known issues / TODOs

There is plenty of space for improvements in the overall architecture, implementation of the [MS-*] protocols or just finishing the TODOs in the code. Lot of refactoring still needs to be done and also the code style has to be unified. So please feel free to help me out with it :)

Contributing

https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/

License

Supporters

If this project helped you and you want to support its further development, please consider donating an amount of your choice. Thank you!

Donate with PayPal
Donate with BitCoin 3PuqLrSsV4EFFr55brj9cSJVoaRoc23b3p

Useful resources

Building WOPI Host

MS-FSSHTTP (Cobalt)

Building WOPI Client

FOSSA Status

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].