Compare commits

..

113 Commits

Author SHA1 Message Date
Sipke Schoorstra
71e57df1d1 Fixed incorrect namespace in Slides tutorial module. 2015-06-24 12:44:21 +03:00
Sipke Schoorstra
c498a5ab4c Added Lines slides provider to the tutorial module. 2015-06-22 22:45:51 +03:00
Sipke Schoorstra
feee784469 Added Cycle demo project. 2015-06-22 18:49:55 +03:00
Sipke Schoorstra
aad8f0ee15 Explicitly provided display name to prevent Orchard from inserting a space between 'J' and 'Carousel'. 2015-06-22 12:38:43 +03:00
Sipke Schoorstra
3d815d8a13 Updated assembly version. 2015-06-22 12:37:52 +03:00
Sipke Schoorstra
a3bbf4ef49 Added default Prefix implementation. 2015-06-22 12:32:41 +03:00
Sipke Schoorstra
9187d5f4ae Fixed a typo. 2015-06-22 11:51:50 +03:00
Sipke Schoorstra
64692415f2 Refactor renamed namespace 'Providers' to 'SlidesProviders' and slide show player engine shape prefix from 'Engines' to 'SlideshowPlayerEngines'. 2015-06-22 11:11:50 +03:00
Sipke Schoorstra
61e704c297 Reduced confuser preset from maximum to aggressive.
The maximum preset causes the Orchard.exe CLI to fail.
2015-06-20 22:18:27 +03:00
Sipke Schoorstra
a791145693 Renamed SlideShow to Slideshow, minor code cleanup and added some comments. 2015-06-20 21:15:24 +03:00
Daniel Stolt
8c6219f460 Changed LicenseValidator to only skip validation in debug mode. 2015-06-20 14:38:59 +03:00
Daniel Stolt
40ec14dd2a Made license hostname matching more robust. 2015-06-20 14:25:48 +03:00
Daniel Stolt
46cc5609a3 Fixed assembly metadata compilation. 2015-06-20 13:37:45 +03:00
Sipke Schoorstra
00e977a74c Showing product version on Licenses screen. 2015-06-20 12:38:15 +03:00
Sipke Schoorstra
3bb87f54e1 Restored skip local validation value. 2015-06-19 12:54:35 +03:00
Sipke Schoorstra
1a9c51795e Updated version numbers. 2015-06-19 12:54:13 +03:00
Sipke Schoorstra
ce74a0e223 Added support for perpetual license keys. 2015-06-18 23:19:39 +03:00
Daniel Stolt
28c5214273 Made settings for Logentries and ApplicationInsights configurable in AppSettings and overridable in Azure portal. 2015-06-18 01:20:43 +03:00
Daniel Stolt
b7c3fc796f Changed text of retry link to "try again". 2015-06-17 23:48:41 +03:00
Daniel Stolt
4fb9768edf Added Logentries logging to licensing service. Made licensing service issue verification tokens in blanco on communication issues with SendOwl. 2015-06-17 23:22:21 +03:00
Sipke Schoorstra
0fd0956f02 Added assembly reference to Orchard.Layouts. 2015-06-17 14:07:03 +03:00
Sipke Schoorstra
4626b85129 Fixed profile name update bug. 2015-06-17 14:06:37 +03:00
Sipke Schoorstra
2992e41d09 Included correct view. 2015-06-17 14:06:20 +03:00
Daniel Stolt
fb9f45f6cc Merge branch '1.9.x' of https://ideliverable.visualstudio.com/defaultcollection/_git/IDeliverable.Star 2015-06-17 01:54:19 +03:00
Daniel Stolt
4e351c4d0b Removed logging from LicenseVerificationTokenStore. 2015-06-17 01:51:08 +03:00
Daniel Stolt
c852a88084 Fixed potential YSOD when reading corrupted license verification token from store. 2015-06-17 01:43:35 +03:00
Sipke Schoorstra
7e071beba4 Increased obfuscation strength. 2015-06-15 23:11:03 +03:00
Daniel Stolt
25f1047922 Added a bit of cleanup to the packaging script. 2015-06-15 22:58:16 +03:00
Daniel Stolt
34155919a6 Adding missing file. 2015-06-15 21:32:25 +03:00
Daniel Stolt
ca94b09e91 Merge branch '1.9.x' of https://ideliverable.visualstudio.com/defaultcollection/_git/IDeliverable.Star 2015-06-15 21:22:27 +03:00
Daniel Stolt
ceed3c27d8 Made merging work once again, with minimum confusion of the result. 2015-06-15 21:22:08 +03:00
Sipke Schoorstra
65e23d5859 Added missing TranslationManager dependencies. 2015-06-15 21:00:35 +03:00
Daniel Stolt
e245dd5ce1 Merge branch '1.9.x' of https://ideliverable.visualstudio.com/defaultcollection/_git/IDeliverable.Star 2015-06-15 20:36:57 +03:00
Daniel Stolt
14b13c026a Fixed AutoFuck fucking fuck. 2015-06-15 20:36:33 +03:00
Sipke Schoorstra
0169fa68ee Added PO files. 2015-06-15 20:31:28 +03:00
Sipke Schoorstra
cf9c6040d3 Merge branch '1.9.x' of https://ideliverable.visualstudio.com/DefaultCollection/_git/IDeliverable.Star into 1.9.x 2015-06-15 20:20:08 +03:00
Daniel Stolt
88e39407ef Integrated confusion into the publishing workflow. 2015-06-15 20:14:07 +03:00
Daniel Stolt
3ef5499d94 Merge branch '1.9.x' of https://ideliverable.visualstudio.com/defaultcollection/_git/IDeliverable.Star 2015-06-15 19:16:46 +03:00
Daniel Stolt
81503f4363 Corrected build action for some asset files. 2015-06-15 19:16:12 +03:00
Sipke Schoorstra
f194614296 Added Vandelay.TranslationManager. 2015-06-15 18:13:06 +03:00
Sipke Schoorstra
76af70e21d Implemented "Refresh" link on license key validation banner. 2015-06-15 15:56:43 +03:00
Sipke Schoorstra
a70b51eee0 Added Confuser to solution. 2015-06-15 13:49:36 +03:00
Sipke Schoorstra
d3249afaca Removed merge conflict artifacts. 2015-06-15 13:48:57 +03:00
Daniel Stolt
ee2e8c7a6d Improved licensing service to read signing certificate from both stores to increase portability. 2015-06-15 13:14:34 +03:00
Sipke Schoorstra
f9cf0b7fef Implemented subscription validity checking. 2015-06-15 13:10:21 +03:00
Daniel Stolt
21cf463c3b Made a bunch of non-exposed types internal. 2015-06-14 22:44:24 +03:00
Daniel Stolt
838fb79411 Improved styling of player engines. 2015-06-14 22:21:14 +03:00
Daniel Stolt
997a9cda0c Reformatted a bunch of inconsistently formatted code. 2015-06-14 21:42:26 +03:00
Daniel Stolt
94d87ff0eb Added API key authorization to licensing service. 2015-06-14 21:07:51 +03:00
Daniel Stolt
be01a7dac4 Merge branch '1.9.x' of https://ideliverable.visualstudio.com/defaultcollection/_git/IDeliverable.Star 2015-06-14 20:47:49 +03:00
Daniel Stolt
0c758b5492 Added ApplicationInsights to the licensing service. 2015-06-14 20:47:35 +03:00
Sipke Schoorstra
c5dcf58022 Set dependency references copy local = true for the obfuscation tool to be able to resolve dependencies. 2015-06-14 20:39:27 +03:00
Sipke Schoorstra
5facde1aee Fixed lifetime scope mismatch issue. 2015-06-14 20:38:37 +03:00
Daniel Stolt
7e07f2771f Fixed development recipe. 2015-06-14 19:15:33 +03:00
Daniel Stolt
8bab0d66ef Made verification token accessor logic more robust. 2015-06-14 18:36:16 +03:00
Daniel Stolt
5d28589afe Changed verification token store to clear existing token when license key changes. 2015-06-14 18:23:24 +03:00
Daniel Stolt
5e4518119f Added logging to LicenseValidationHelper. 2015-06-14 16:35:24 +03:00
Daniel Stolt
3c13172dea Added token age validation (with an allowable clock skew). 2015-06-14 16:17:05 +03:00
Daniel Stolt
efb70627fb Introduced static field for license validation cache duration. 2015-06-14 15:59:28 +03:00
Daniel Stolt
b88fc651f8 Removed unnecessary using statement. 2015-06-14 15:56:15 +03:00
Daniel Stolt
7b7b640e8d Fixed a couple of issues with the license validation result caching code. 2015-06-14 15:55:54 +03:00
Daniel Stolt
9f5db40605 Extended LicenseService to read signing certificate from either CurrentUser or LocalMachine stores for portability. 2015-06-14 15:48:01 +03:00
Sipke Schoorstra
8baf0ca550 Added support for caching exceptions and caching verification token. 2015-06-14 14:01:30 +03:00
Sipke Schoorstra
016cdc4489 Fixed serialization to exclude calculated properties, preventing signature validation from failing. 2015-06-14 13:41:22 +03:00
Sipke Schoorstra
e4e0f657f6 Fixed certificate base64 string, thumbprint and added exception handler condition. 2015-06-14 13:21:49 +03:00
Daniel Stolt
b301e04fe5 Merged Sipke's stuff. 2015-06-14 12:38:25 +03:00
Daniel Stolt
a3294affd2 Refactored validation error banner. 2015-06-14 12:35:38 +03:00
Sipke Schoorstra
0832e344d7 Fixed Slides license key banner. 2015-06-14 12:29:52 +03:00
Sipke Schoorstra
50db6acf45 Merged Daniel's refactoring and implemented Slides license key setting storage. 2015-06-14 12:09:07 +03:00
Daniel Stolt
3df91b51de Refactored module licensing code. 2015-06-14 12:00:27 +03:00
Daniel Stolt
d5ac015c12 Refactored a little more. 2015-06-14 01:13:02 +03:00
Daniel Stolt
07b11ecaab Merged Sipke's stuff. 2015-06-14 00:04:56 +03:00
Daniel Stolt
9154ecdf67 Refactored licensing framework. A little. 2015-06-13 23:56:35 +03:00
Sipke Schoorstra
d621232812 Simplified sample theme settings file. 2015-06-13 23:40:19 +03:00
Sipke Schoorstra
e7209d308b Added Widgets and ThemeSettings modules. 2015-06-13 20:21:07 +03:00
Sipke Schoorstra
e510b179f5 Merge branch '1.9.x' of https://ideliverable.visualstudio.com/DefaultCollection/_git/IDeliverable.Star into 1.9.x 2015-06-13 16:14:14 +03:00
Sipke Schoorstra
134b5e83a0 Implemented Import/Export for Slides. 2015-06-13 16:12:37 +03:00
Sipke Schoorstra
7f6672861b Fixed service factory.
The order of static properties is important when first accessing the Current static property.
2015-06-13 16:11:16 +03:00
Daniel Stolt
f0aa1aebc8 Removed unused stuff from licensing service. 2015-06-13 11:41:31 +03:00
Daniel Stolt
849a41df6c Removed and disabled the use of solution-specific applicationHost.config file. 2015-06-13 11:16:55 +03:00
Sipke Schoorstra
4462746c43 Merge branch '1.9.x' of https://ideliverable.visualstudio.com/DefaultCollection/_git/IDeliverable.Star into 1.9.x 2015-06-13 00:38:21 +03:00
Sipke Schoorstra
1ebc5a6f78 Refactored licensing code.
- Seperated license retrieval from license validation logic.
- Removed dependency on AutoFac injected services to avoid mocking attacks.
2015-06-13 00:37:08 +03:00
Sipke Schoorstra
5221c01ae3 Refactored licensing code.
- Separated license retrieval from license validation logic.
- Removed dependency on AutoFac injected services to avoid mocking attacks.
2015-06-13 00:01:19 +03:00
Daniel Stolt
88e7378165 Added an IDeliverable.Slides development recipe (not quite complete, needs import/export of profiles and slideshow items). 2015-06-12 21:23:21 +03:00
Daniel Stolt
80744b1633 Made licensing service more configurable. 2015-06-12 19:54:01 +03:00
Daniel Stolt
56315b92d1 Merge branch '1.9.x' of https://ideliverable.visualstudio.com/defaultcollection/_git/IDeliverable.Star 2015-06-12 17:54:10 +03:00
Daniel Stolt
bf9651e332 Fixed support for nested carousels. 2015-06-12 17:53:57 +03:00
Sipke Schoorstra
d721a0189b Renamed 'Engine' to 'SlideShowPlayerEngine'. 2015-06-12 17:13:39 +03:00
Daniel Stolt
75e5a5ee1c Merge branch '1.9.x' of https://ideliverable.visualstudio.com/defaultcollection/_git/IDeliverable.Star 2015-06-12 14:51:17 +03:00
Daniel Stolt
bc27d3d673 Added test action to licensing service for monitoring purposes. 2015-06-12 14:51:01 +03:00
Sipke Schoorstra
94c1e6b7b9 Pulled from orchard/1.9.x. 2015-06-12 14:35:23 +03:00
Daniel Stolt
0d23e58f03 Improved styling of JCarousel player engine. 2015-06-12 13:14:46 +03:00
Sipke Schoorstra
a5196b4940 Implemented invalid license key banner. 2015-06-12 01:31:03 +03:00
Daniel Stolt
e209571315 Merged Sipkes stuff. 2015-06-12 01:07:23 +03:00
Daniel Stolt
8a180b8b8f Gulpified all client-side assets in IDeliverable.Slides. 2015-06-12 01:04:16 +03:00
Sipke Schoorstra
3cc5c3b4c3 Included font files. 2015-06-12 00:26:26 +03:00
Sipke Schoorstra
acbf738327 Gulpified Slides and made Bootstrap engine work without requiring a bootstrap enabled theme. 2015-06-11 23:51:54 +03:00
Daniel Stolt
50e4e5635f Fixed a incorrect assembly references. 2015-06-11 18:00:52 +03:00
Sipke Schoorstra
c648e5b2ae Merge branch '1.9.x' of https://ideliverable.visualstudio.com/DefaultCollection/_git/IDeliverable.Star into 1.9.x 2015-06-11 17:52:53 +03:00
Sipke Schoorstra
35f941cf4e Fixed Newtonsoft.Json references. 2015-06-11 17:50:51 +03:00
Daniel Stolt
d63703903c Added applicationHost.config. 2015-06-11 17:43:17 +03:00
Daniel Stolt
ea68f07d81 Merge branch '1.9.x' of https://github.com/OrchardCMS/Orchard into 1.9.x 2015-06-11 17:24:59 +03:00
Sipke Schoorstra
042d87c309 Merge branch 'master' into 1.9.x
Conflicts:
	src/Orchard.Web/Modules/IDeliverable.Slides/Views/License/Index.cshtml
2015-06-11 15:08:19 +03:00
Sipke Schoorstra
55790a606f Updated Slides module code to latest. 2015-06-11 15:07:04 +03:00
Sipke Schoorstra
e942437481 Manually registering services. 2015-06-11 14:55:44 +03:00
Sipke Schoorstra
7d95f1184d Merge branch 'master' into 1.9.x 2015-06-11 14:22:50 +03:00
Sipke Schoorstra
32cd707bd0 Restructured IDeliverable Licensing folders a bit. 2015-06-11 14:22:26 +03:00
Sipke Schoorstra
abdb83a9c3 Merge branch '1.9.x' of https://github.com/OrchardCMS/Orchard into 1.9.x 2015-06-11 13:56:36 +03:00
Sipke Schoorstra
82daedee80 Fixed compilation errors and split Licensing Framework files into separate projects. 2015-06-11 13:54:44 +03:00
Daniel Stolt
add2e1c3b9 Added initial IDeliverable.Star projects. 2015-06-11 12:38:20 +03:00
Daniel Stolt
6ee3b0d2eb Removed bogus file. 2015-06-11 12:12:11 +03:00
Daniel Stolt
b1fb3900d9 Merge branch 'master' of https://github.com/OrchardCMS/Orchard 2015-06-11 11:59:41 +03:00
Daniel Stolt
cef0022df3 Added bogus file. 2015-06-11 11:51:17 +03:00
2407 changed files with 91032 additions and 69370 deletions

View File

@@ -1,3 +0,0 @@
[config]
command = deploy.cmd
SCM_COMMAND_IDLE_TIMEOUT = 3600

15
.gitignore vendored
View File

@@ -96,7 +96,6 @@ publish/
# Publish Web Output
*.Publish.xml
*.pubxml
# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
@@ -165,14 +164,13 @@ build/
/buildtasks
/artifacts
*.sln.cache
src/Orchard.Web/Media/*
#src/Orchard.Web/Media/*
log.xml
profiling/
*.orig
src/Orchard.Web/Modules-temp/*
src/Backup/*
src/packages/*
src/node_modules
src/UpgradeLog.*
*.itrace.csdef
*.build.csdef
@@ -184,7 +182,14 @@ src/Orchard.Web/Orchard.Web.Publish.xml
src/TestResults/*
src/Orchard.Web/Properties/PublishProfiles
src/Orchard.Azure/Orchard.Azure.CloudService/Staging/
node_modules/
#enable all /lib artifacts
# Enable all /lib artifacts
!lib/*/*.*
*/.vs/*
# Enable version control of some IDeliverable specifics.
src/Orchard.Web/Media/Default/RecipeJournal/*
src/Orchard.Web/Media/Default/_Profiles/*
# Enable "IDeliverable/Packaging/" folder.
!src/IDeliverable/Packaging/*/*.*

2
.hgeol
View File

@@ -1,2 +0,0 @@
[patterns]
** = native

View File

@@ -1,8 +1,4 @@
FOR %%b in (
"%VS140COMNTOOLS%..\..\VC\vcvarsall.bat"
"%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
"%ProgramFiles%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
FOR %%b in (
"%VS120COMNTOOLS%..\..\VC\vcvarsall.bat"
"%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
"%ProgramFiles%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"

View File

@@ -8,7 +8,6 @@
<SrcFolder>$(MSBuildProjectDirectory)\src</SrcFolder>
<BuildFolder>$(MSBuildProjectDirectory)\build</BuildFolder>
<MsBuildTasksFolder>$(MSBuildProjectDirectory)\buildtasks</MsBuildTasksFolder>
<MSBuildCommunityTasksPath>$(LibFolder)\msbuild</MSBuildCommunityTasksPath>
<ArtifactsFolder>$(MSBuildProjectDirectory)\artifacts</ArtifactsFolder>
<SqlCeFolder>$(MSBuildProjectDirectory)\lib\sqlce</SqlCeFolder>
<SourceArtifactFolder>$(ArtifactsFolder)\Source</SourceArtifactFolder>
@@ -28,13 +27,12 @@
<BuildPlatform Condition="$(ProgramW6432) != ''">x64</BuildPlatform>
<BuildPlatform Condition="$(BuildPlatform) == ''">x86</BuildPlatform>
<Configuration Condition="$(Configuration) == ''">Release</Configuration>
<!-- TeamCity build number -->
<Version>$(BUILD_NUMBER)</Version>
</PropertyGroup>
<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets"/>
<Import Project="$(LibFolder)\msbuild\MSBuild.Community.Tasks.Targets"/>
<!-- Coordinating Targets -->
@@ -117,7 +115,7 @@
<MSBuild
Projects="$(SrcFolder)\Orchard.sln"
Targets="Build"
Properties="Configuration=$(Configuration);OutputPath=$(CompileFolder)" />
Properties="Configuration=Release;OutputPath=$(CompileFolder)" />
<!-- Compile to "regular" output folder for devs using VS locally -->
<MSBuild
Projects="$(SrcFolder)\Orchard.sln"
@@ -128,7 +126,7 @@
<MSBuild
Projects="$(SrcFolder)\Tools\MSBuild.Orchard.Tasks\MSBuild.Orchard.Tasks.csproj"
Targets="Build"
Properties="Configuration=$(Configuration);OutputPath=$(MsBuildTasksFolder)" />
Properties="Configuration=Release;OutputPath=$(MsBuildTasksFolder)" />
</Target>
<Target Name="TypeScript" DependsOnTargets="CompileMsBuildTasks">
@@ -157,7 +155,7 @@
<Output TaskParameter="Include" ItemName="TestAssemblies" />
</CreateItem>
<NUnit Assemblies="@(TestAssemblies)" ToolPath="$(LibFolder)\nunit" WorkingDirectory="$(CompileFolder)" OutputXmlFile="$(BuildFolder)\Orchard.Tests.xml" ExcludeCategory="longrunning" />
<NUnit Assemblies="@(TestAssemblies)" ToolPath="$(LibFolder)\nunit" WorkingDirectory="$(CompileFolder)" OutputXmlFile="$(BuildFolder)\Orchard.Tests.xml" />
</Target>
<Target Name ="Spec" DependsOnTargets="Package-Stage">
@@ -275,19 +273,19 @@
<!-- extra processing of the staged config files -->
<TransformXml
Source="$(StageFolder)\Web.Config"
Transform="$(SrcFolder)\Orchard.Web\Web.$(Configuration).Config"
Transform="$(SrcFolder)\Orchard.Web\Web.Release.Config"
Destination="$(StageFolder)\Web.Config"
/>
<TransformXml
Source="$(StageFolder)\Config\HostComponents.Config"
Transform="$(SrcFolder)\Orchard.Web\Config\HostComponents.$(Configuration).Config"
Transform="$(SrcFolder)\Orchard.Web\Config\HostComponents.Release.Config"
Destination="$(StageFolder)\Config\HostComponents.Config"
/>
<TransformXml
Source="$(StageFolder)\Config\log4net.Config"
Transform="$(SrcFolder)\Orchard.Web\Config\log4net.$(Configuration).Config"
Transform="$(SrcFolder)\Orchard.Web\Config\log4net.Release.Config"
Destination="$(StageFolder)\Config\log4net.Config"
/>
@@ -339,7 +337,6 @@
$(MSBuildProjectDirectory)\src\**\bin\**\*;
$(MSBuildProjectDirectory)\src\**\obj\**\*;
$(MSBuildProjectDirectory)\**\App_Data\**\*;
$(MSBuildProjectDirectory)\**\node_modules\**\*;
$(MSBuildProjectDirectory)\**\_ReSharper*\**\*;
$(MSBuildProjectDirectory)\**\*.sln.cache;
$(MSBuildProjectDirectory)\**\*.suo;
@@ -371,8 +368,8 @@
<ZipVersionFileSuffix Condition="$(Version) == ''"></ZipVersionFileSuffix>
</PropertyGroup>
<Zip Files="@(Zip-MsDeploy)" WorkingDirectory="$(MsDeployFolder)" ZipFileName="$(MsDeployArtifactFolder)\Orchard.Web$(ZipVersionFileSuffix).zip" ParallelCompression="false" />
<Zip Files="@(Zip-Source)" WorkingDirectory="$(MSBuildProjectDirectory)" ZipFileName="$(SourceArtifactFolder)\Orchard.Source$(ZipVersionFileSuffix).zip" ParallelCompression="false" />
<Zip Files="@(Zip-MsDeploy)" WorkingDirectory="$(MsDeployFolder)" ZipFileName="$(MsDeployArtifactFolder)\Orchard.Web$(ZipVersionFileSuffix).zip" />
<Zip Files="@(Zip-Source)" WorkingDirectory="$(MSBuildProjectDirectory)" ZipFileName="$(SourceArtifactFolder)\Orchard.Source$(ZipVersionFileSuffix).zip" />
</Target>
<!-- Profiling -->

View File

@@ -1,13 +1,6 @@
# Orchard
Orchard is a free, open source, community-focused Content Management System built on the ASP.NET MVC platform.
[![Join the chat at https://gitter.im/OrchardCMS/Orchard](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/OrchardCMS/Orchard?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
You can try it for free on [DotNest.com](https://dotnest.com) or on Microsoft Azure by clicking on this button
[![Deploy to Azure](https://azuredeploy.net/deploybutton.png)](https://ms.portal.azure.com/#create/OutercurveFoundation.OrchardCMS.0.5.9)
## About The Orchard Project
#### Please visit our website at http://orchardproject.net for the most current information about this project.
@@ -20,29 +13,26 @@ Orchard is delivered under the [.NET Foundation](http://www.dotnetfoundation.org
Our mission is to empower our users and foster a dedicated and diverse community that builds the CMS that we all want to use.
There are many ways you can [contribute to Orchard](http://orchardproject.net/contribution): you can [fix bugs](https://github.com/OrchardCMS/Orchard/issues), contribute modules and themes to [our gallery](http://gallery.orchardproject.net/), [write documentation](https://github.com/OrchardCMS/OrchardDoc), [translate Orchard](http://orchardproject.net/localize), or answer questions [on our forums](http://orchard.codeplex.com/discussions) and [on Stack Overflow](http://stackoverflow.com/questions/tagged/orchardcms).
## Project Status
Orchard is currently in version 1.9.2. We invite participation by the developer community in shaping the projects direction, so that we can publicly validate our designs and development approach.
Our 1.9.2 release is available from our Downloads page, and is easy to [Install Orchard using the Web Platform Installer](http://docs.orchardproject.net/Documentation/Installing-Orchard). We encourage interested developers to check out the source code on the Orchard Github site and get involved with the project.
Orchard is currently in version 1.8.1. We invite participation by the developer community in shaping the projects direction, so that we can publicly validate our designs and development approach.
Our 1.8.1 release is available from our Downloads page, and is easy to [Install Orchard using the Web Platform Installer](http://www.orchardproject.net/docs/Installing-Orchard.ashx). We encourage interested developers to check out the source code on the Orchard Github site and get involved with the project.
* [Download the latest release](https://github.com/OrchardCMS/Orchard/releases)
* [Feature roadmap](http://docs.orchardproject.net/Documentation/feature-roadmap)
* [Feature roadmap](http://www.orchardproject.net/docs/feature-roadmap.ashx)
* [Docs and designs/specs](http://www.orchardproject.net/docs)
* [About us](http://www.orchardproject.net/about)
* [Contact us](mailto:ofeedbk@microsoft.com)
## How To Get Involved
We hope that by engaging with the community we will continue to shape Orchard into a valuable set of tools and applications. The Orchard team is committed to open community participation and accepts code contributions. We encourage community participation at all levels from general project feedback to bug fixes and patches.
There are many ways you can [contribute to Orchard](http://orchardproject.net/contribution):
We hope that by engaging with the community in the very early stages of the project that we will be able to shape Orchard into a valuable set of tools and applications for the community. The Orchard team is committed to open community participation and accepts code contributions today. We encourage community participation at all levels from general project feedback to bug fixes and patches.
* [Check out the code](https://github.com/OrchardCMS/Orchard)
* [Write documentation](https://github.com/OrchardCMS/OrchardDoc)
* [Check out the docs](http://orchardproject.net/docs)
* [Find and file a bug](https://github.com/OrchardCMS/Orchard/issues)
* [Propose a feature idea](http://orchard.uservoice.com)
* [Ask and answer questions in our forums](http://www.orchardproject.net/discussions) and [on Stack Overflow](http://stackoverflow.com/questions/tagged/orchardcms)
* [Participate in our gitter.im chatroom](https://gitter.im/OrchardCMS/Orchard)
* [Ask and answer questions](http://www.orchardproject.net/discussions)
* [Participate in forum discussions](http://orchard.codeplex.com/discussions)
* [Submit a pull request](http://docs.orchardproject.net/Documentation/Contributing-patches)
* [Translate Orchard](http://orchardproject.net/localize)
* [Contribute modules and themes to our gallery](http://gallery.orchardproject.net/)
* [Submit a patch](http://www.orchardproject.net/docs/Contributing-patches.ashx)
* [Send us feedback](mailto:ofeedbk@microsoft.com)

View File

@@ -1,114 +0,0 @@
@if "%SCM_TRACE_LEVEL%" NEQ "4" @echo off
:: ----------------------
:: KUDU Deployment Script
:: Version: 0.1.11
:: ----------------------
:: Prerequisites
:: -------------
:: Verify node.js installed
where node 2>nul >nul
IF %ERRORLEVEL% NEQ 0 (
echo Missing node.js executable, please install node.js, if already installed make sure it can be reached from current environment.
goto error
)
:: Setup
:: -----
setlocal enabledelayedexpansion
SET ARTIFACTS=%~dp0%..\artifacts
IF NOT DEFINED DEPLOYMENT_SOURCE (
SET DEPLOYMENT_SOURCE=%~dp0%.
)
IF NOT DEFINED DEPLOYMENT_TARGET (
SET DEPLOYMENT_TARGET=%ARTIFACTS%\wwwroot
)
IF NOT DEFINED NEXT_MANIFEST_PATH (
SET NEXT_MANIFEST_PATH=%ARTIFACTS%\manifest
IF NOT DEFINED PREVIOUS_MANIFEST_PATH (
SET PREVIOUS_MANIFEST_PATH=%ARTIFACTS%\manifest
)
)
IF NOT DEFINED KUDU_SYNC_CMD (
:: Install kudu sync
echo Installing Kudu Sync
call npm install kudusync -g --silent
IF !ERRORLEVEL! NEQ 0 goto error
:: Locally just running "kuduSync" would also work
SET KUDU_SYNC_CMD=%appdata%\npm\kuduSync.cmd
)
IF NOT DEFINED DEPLOYMENT_TEMP (
SET DEPLOYMENT_TEMP=%temp%\___deployTemp%random%
SET CLEAN_LOCAL_DEPLOYMENT_TEMP=true
)
IF DEFINED CLEAN_LOCAL_DEPLOYMENT_TEMP (
IF EXIST "%DEPLOYMENT_TEMP%" rd /s /q "%DEPLOYMENT_TEMP%"
mkdir "%DEPLOYMENT_TEMP%"
)
IF NOT DEFINED MSBUILD_PATH (
SET MSBUILD_PATH=%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Deployment
:: ----------
echo Handling .NET Web Application deployment.
:: 1. Restore NuGet packages
IF /I "" NEQ "" (
call :ExecuteCmd nuget restore "%DEPLOYMENT_SOURCE%\"
IF !ERRORLEVEL! NEQ 0 goto error
)
:: 2. Build to the temporary path
call :ExecuteCmd "%MSBUILD_PATH%" "%DEPLOYMENT_SOURCE%\Orchard.proj" /t:Precompiled /v:m
IF !ERRORLEVEL! NEQ 0 goto error
:: 3. KuduSync
call :ExecuteCmd "%KUDU_SYNC_CMD%" -v 50 -f "%DEPLOYMENT_SOURCE%\build\Precompiled" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd"
IF !ERRORLEVEL! NEQ 0 goto error
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Post deployment stub
IF DEFINED POST_DEPLOYMENT_ACTION call "%POST_DEPLOYMENT_ACTION%"
IF !ERRORLEVEL! NEQ 0 goto error
goto end
:: Execute command routine that will echo out when error
:ExecuteCmd
setlocal
set _CMD_=%*
call %_CMD_%
if "%ERRORLEVEL%" NEQ "0" echo Failed exitCode=%ERRORLEVEL%, command=%_CMD_%
exit /b %ERRORLEVEL%
:error
endlocal
echo An error has occurred during web site deployment.
call :exitSetErrorLevel
call :exitFromFunction 2>nul
:exitSetErrorLevel
exit /b 1
:exitFromFunction
()
:end
endlocal
echo Finished successfully.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,158 +1,116 @@
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- $Id$ -->
<!-- $Id: MSBuild.Community.Tasks.Targets 368 2007-11-22 18:22:00Z pcpatel $ -->
<PropertyGroup>
<MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildThisFileDirectory)</MSBuildCommunityTasksPath>
<MSBuildCommunityTasksLib>$([MSBUILD]::Unescape($(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.dll))</MSBuildCommunityTasksLib>
</PropertyGroup>
<PropertyGroup>
<!--<MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath)\MSBuildCommunityTasks</MSBuildCommunityTasksPath>-->
<MSBuildCommunityTasksPath>.</MSBuildCommunityTasksPath>
<MSBuildCommunityTasksLib>$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.dll</MSBuildCommunityTasksLib>
</PropertyGroup>
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.AspNet.InstallAspNet" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.AspNet.InstallAspNet" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.AssemblyInfo" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Attrib" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Beep" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.DeleteTree" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.EmbedNativeResource" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SqlExecute" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FileUpdate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FtpUpload" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FxCop" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.GacUtil" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.GetSolutionProjects" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.ILMerge" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Mail" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Merge" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.MV" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.AssemblyInfo" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Attrib" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SqlExecute" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FileUpdate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FtpUpload" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FxCop" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.GacUtil" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.GetSolutionProjects" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.ILMerge" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Mail" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Move" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Ftp.FtpCreateRemoteDirectory" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Ftp.FtpDirectoryExists" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Ftp.FtpUploadDirectoryContent" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Ftp.FtpCreateRemoteDirectory" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Ftp.FtpDirectoryExists" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Ftp.FtpUploadDirectoryContent" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Add" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Divide" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Modulo" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Multiple" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Subtract" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Add" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Divide" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Modulo" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Multiple" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Subtract" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.NDoc" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.NUnit" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.NDoc" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.NUnit" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Oracle.AddTnsName" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Oracle.AddTnsName" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Prompt" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RegistryRead" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RegistryWrite" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RegexMatch" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RegexReplace" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RegexCompiler" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RoboCopy" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Script" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.ServiceController" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.ServiceQuery" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Sleep" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Prompt" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RegistryRead" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RegistryWrite" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RegexMatch" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RegexReplace" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RoboCopy" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Script" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.ServiceController" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.ServiceQuery" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Sleep" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.AppPoolController" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.AppPoolCreate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.AppPoolDelete" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.WebDirectoryCreate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.WebDirectoryDelete" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.WebDirectoryScriptMap" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.WebDirectorySetting" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.AppPoolController" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.AppPoolCreate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.AppPoolDelete" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.WebDirectoryCreate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.WebDirectoryDelete" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.WebDirectoryScriptMap" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.IIS.WebDirectorySetting" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Install.InstallAssembly" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Install.UninstallAssembly" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Install.InstallAssembly" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Install.UninstallAssembly" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Schema.TaskSchema" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Schema.TaskSchema" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Sound" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SqlServer.ExecuteDDL" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssAdd" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssCheckin" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssCheckout" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssClean" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssDiff" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssGet" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssHistory" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssLabel" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssUndoCheckout" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssAdd" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssCheckin" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssCheckout" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssClean" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssDiff" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssGet" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssHistory" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssLabel" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssUndoCheckout" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceServer.SrcTool" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceServer.PdbStr" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceServer.SvnSourceIndex" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceServer.TfsSourceIndex" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SqlServer.ExecuteDDL" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SqlServer.SqlPubWiz" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnCheckout" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnClient" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnCopy" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnCommit" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnExport" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnInfo" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnUpdate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnVersion" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnCheckout" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnClient" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnCopy" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnCommit" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnExport" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnInfo" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnUpdate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnVersion" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnStatus" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Tfs.TfsVersion" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Tfs.TfsClient" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.TemplateFile" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Time" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Unzip" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Version" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.WebDownload" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.TemplateFile" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Time" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Unzip" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Version" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.WebDownload" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.WebUpload" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Xml.XmlMassUpdate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Xml.XmlQuery" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Xml.XmlMassUpdate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Xml.XmlQuery" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.XmlRead" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.XmlUpdate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Xslt" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Zip" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.XmlRead" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.XmlUpdate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Xslt" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Zip" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.JavaScript.JSCompress" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.JavaScript.JSCompress" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.JavaScript.CssCompress" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.User" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Computer" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.User" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Computer" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Sandcastle.BuildAssembler" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Sandcastle.ChmBuilder" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Sandcastle.DBCSFix" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Sandcastle.MRefBuilder" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Sandcastle.Sandcastle" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Sandcastle.XslTransform" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.HtmlHelp.ChmCompiler" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.HtmlHelp.HxCompiler" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SymbolServer.SymStore" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Net.HttpRequest" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.NuGet.NuGetInstall" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.NuGet.NuGetPack" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.NuGet.NuGetPush" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.NuGet.NuGetRestore" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Git.GitClient" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Git.GitVersion" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Git.GitBranch" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Git.GitDescribe" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Git.GitPendingChanges" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Git.GitCommits" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Git.GitCommitDate" />
<ItemGroup>
<FxCopRuleAssemblies Include="UsageRules.dll"/>
<FxCopRuleAssemblies Include="SecurityRules.dll"/>
<FxCopRuleAssemblies Include="PortabilityRules.dll"/>
<FxCopRuleAssemblies Include="PerformanceRules.dll"/>
<FxCopRuleAssemblies Include="MobilityRules.dll"/>
<FxCopRuleAssemblies Include="InteroperabilityRules.dll"/>
<FxCopRuleAssemblies Include="GlobalizationRules.dll"/>
<FxCopRuleAssemblies Include="DesignRules.dll"/>
</ItemGroup>
<ItemGroup>
<FxCopRuleAssemblies Include="UsageRules.dll"/>
<FxCopRuleAssemblies Include="SecurityRules.dll"/>
<FxCopRuleAssemblies Include="PortabilityRules.dll"/>
<FxCopRuleAssemblies Include="PerformanceRules.dll"/>
<FxCopRuleAssemblies Include="MobilityRules.dll"/>
<FxCopRuleAssemblies Include="InteroperabilityRules.dll"/>
<FxCopRuleAssemblies Include="GlobalizationRules.dll"/>
<FxCopRuleAssemblies Include="DesignRules.dll"/>
</ItemGroup>
</Project>

View File

@@ -1,9 +0,0 @@
/**********************************************************************/
/* Install.SQL */
/* Creates a login and makes the user a member of db roles */
/* */
/* Modifications for SQL AZURE - ON MASTER */
/**********************************************************************/
CREATE LOGIN PlaceHolderForUser WITH PASSWORD = 'PlaceHolderForPassword'

View File

@@ -1,15 +0,0 @@
/**********************************************************************/
/* CreateUser.SQL */
/* Creates a user and makes the user a member of db roles */
/* This script runs against the User database and requires connection string */
/* Supports SQL Server and SQL AZURE */
/**********************************************************************/
-- Create database user and map to login
-- and add user to the datareader, datawriter, ddladmin and securityadmin roles
--
CREATE USER PlaceHolderForUser FOR LOGIN PlaceHolderForUser;
GO
EXEC sp_addrolemember 'db_owner', PlaceHolderForUser;
GO

45
lib/msdeploy/install.sql Normal file
View File

@@ -0,0 +1,45 @@
/**********************************************************************/
/* Install.SQL */
/* Creates a login and makes the user a member of db roles */
/* */
/**********************************************************************/
-- Declare variables for database name, username and password
DECLARE @dbName sysname,
@dbUser sysname,
@dbPwd nvarchar(max);
-- Set variables for database name, username and password
SET @dbName = 'PlaceHolderForDb';
SET @dbUser = 'PlaceHolderForUser';
SET @dbPwd = 'PlaceHolderForPassword';
DECLARE @cmd nvarchar(max)
-- Create login
IF( SUSER_SID(@dbUser) is null )
BEGIN
print '-- Creating login '
SET @cmd = N'CREATE LOGIN ' + quotename(@dbUser) + N' WITH PASSWORD ='''+ replace(@dbPwd, '''', '''''') + N''''
EXEC(@cmd)
END
-- Create database user and map to login
-- and add user to the datareader, datawriter, ddladmin and securityadmin roles
--
SET @cmd = N'USE ' + quotename(@DBName) + N';
IF( NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = ''' + replace(@dbUser, '''', '''''') + N'''))
BEGIN
print ''-- Creating user'';
CREATE USER ' + quotename(@dbUser) + N' FOR LOGIN ' + quotename(@dbUser) + N';
print ''-- Adding user'';
EXEC sp_addrolemember ''db_ddladmin'', ''' + replace(@dbUser, '''', '''''') + N''';
print ''-- Adding user'';
EXEC sp_addrolemember ''db_securityadmin'', ''' + replace(@dbUser, '''', '''''') + N''';
print ''-- Adding user'';
EXEC sp_addrolemember ''db_datareader'', ''' + replace(@dbUser, '''', '''''') + N''';
print ''-- Adding user'';
EXEC sp_addrolemember ''db_datawriter'', ''' + replace(@dbUser, '''', '''''') + N''';
END'
EXEC(@cmd)
GO

View File

@@ -1,13 +1,7 @@
<MSDeploy.iisApp>
<iisapp path="Orchard" managedRuntimeVersion="v4.0" />
<iisapp path="Orchard" managedRuntimeVersion="v4.0" />
<setAcl path="Orchard/App_Data" setAclAccess="Modify" />
<setAcl path="Orchard/Media" setAclAccess="Modify" />
<setAcl path="Orchard/bin/HostRestart" setAclAccess="Modify" />
<!-- Runs SQL script to create login and assign permissions, requires transacted="false"
This script runs as the database administrator provided in parameters.xml
-->
<dbfullsql path="createlogin.sql" transacted="false" />
<dbfullsql path="createuser.sql" transacted="false" />
</MSDeploy.iisApp>
<dbFullSql path="install.sql" />
</MSDeploy.iisApp>

View File

@@ -23,20 +23,19 @@
<!-- Prompts for the database name and fills it into the database scripts -->
<parameter name="Database Name" description="Name of the database for Orchard." defaultValue="orchard" tags="SQL, dbName">
<parameterEntry type="TextFile" scope="install.sql" match="PlaceHolderForDb" />
</parameter>
<!-- Prompts for the database username and fills it into the database scripts.
The SQL tag indicates it is a parameter required for SQL, the DbUsername tag indicates this is a Db username -->
<parameter name="Database Username" description="User name to access you application database." defaultValue="orcharduser" tags="SQL, DbUsername">
<parameterEntry type="TextFile" scope="createuser.sql" match="PlaceHolderForUser" />
<parameterEntry type="TextFile" scope="createlogin.sql" match="PlaceHolderForUser" />
<parameterEntry type="TextFile" scope="install.sql" match="PlaceHolderForUser" />
</parameter>
<!-- Prompts for the database password and fills it into the database scripts.
The SQL tag indicates it is a parameter required for SQL, the DbUserPassword tag indicates this is a Db password -->
<parameter name="Database Password" description="Password for the Database Username." tags="New, Password, SQL, DbUserPassword">
<parameterEntry type="TextFile" scope="createlogin.sql" match="PlaceHolderForPassword" />
<parameterEntry type="TextFile" scope="install.sql" match="PlaceHolderForPassword" />
</parameter>
<!-- Prompts for the admin creds and uses it for the administrator connection string. This is used to create a login and assign permissions.
@@ -48,17 +47,19 @@
<!-- Prompts for the admin password and uses it for the administrator connection string.
This is use to create a login and assign permissions. The SQL tag indicates it is a parameter required for SQL.
The DbAdminPassword tag indicates it should be used when the user is creating a new database. If they're not, it can be filled in with the DbUserPassword value. -->
<parameter name="Database Administrator Password" description="Password for the database administrator account." tags="Password, SQL, dbAdminPassword">
<parameter name="Database Administrator Password" description="Password for the database administrator account." tags="New, Password, SQL, dbAdminPassword">
</parameter>
<parameter name="Admin Connection String SqlServer1" tags="SQLConnectionString, sql, Hidden" description="Automatically sets the connection string for the connection request." defaultValue="Data Source={Database Server};Initial Catalog=MASTER;User Id={Database Administrator};Password={Database Administrator Password}">
<parameterEntry type="ProviderPath" scope="dbfullsql" match="createlogin.sql" />
<parameter name="Admin Connection String SqlServer"
tags="SQLConnectionString, AdminConnectionString, Hidden, Validate" description="Automatically sets the connection string for the connection request."
defaultValue="Data Source={Database Server};Initial Catalog={Database Name};User Id={Database Administrator};Password={Database Administrator Password}">
<parameterEntry type="ProviderPath" scope="dbfullsql" match="install.sql" />
</parameter>
<parameter name="Admin Connection String SqlServer2" tags="SQLConnectionString, SQL, Hidden" description="Automatically sets the connection string for the connection request." defaultValue="Data Source={Database Server};Initial Catalog={Database Name};User Id={Database Administrator};Password={Database Administrator Password}">
<parameterEntry type="ProviderPath" scope="dbfullsql" match="createuser.sql" />
<parameter name="Non-Admin Connection String SqlServer"
tags="SQLConnectionString, UserConnectionString, Hidden" description="Automatically sets the connection string for the connection request."
defaultValue="Data Source={Database Server};Initial Catalog={Database Name};User Id={Database Username};Password={Database Password}">
</parameter>
<parameter name="Orchard Connection String" friendlyName="Orchard Connection String" description="Orchard SQL Data Connection String Setting" defaultValue="" tags="Sql, SqlCE, SingleLineConnectionString, Hidden">
<parameterEntry kind="TextFile" scope="\\Settings\.txt$" match="(?&lt;=\s*DataConnectionString:\s+)[^\s].*[^\r\n]" />

View File

@@ -403,17 +403,17 @@
</member>
<member name="M:Newtonsoft.Json.JsonWriter.WriteStartObject">
<summary>
Writes the beginning of a JSON object.
Writes the beginning of a Json object.
</summary>
</member>
<member name="M:Newtonsoft.Json.JsonWriter.WriteEndObject">
<summary>
Writes the end of a JSON object.
Writes the end of a Json object.
</summary>
</member>
<member name="M:Newtonsoft.Json.JsonWriter.WriteStartArray">
<summary>
Writes the beginning of a JSON array.
Writes the beginning of a Json array.
</summary>
</member>
<member name="M:Newtonsoft.Json.JsonWriter.WriteEndArray">
@@ -447,7 +447,7 @@
</member>
<member name="M:Newtonsoft.Json.JsonWriter.WriteEnd">
<summary>
Writes the end of the current JSON object or array.
Writes the end of the current Json object or array.
</summary>
</member>
<member name="M:Newtonsoft.Json.JsonWriter.WriteToken(Newtonsoft.Json.JsonReader)">
@@ -882,17 +882,17 @@
</member>
<member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteStartArray">
<summary>
Writes the beginning of a JSON array.
Writes the beginning of a Json array.
</summary>
</member>
<member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteStartObject">
<summary>
Writes the beginning of a JSON object.
Writes the beginning of a Json object.
</summary>
</member>
<member name="M:Newtonsoft.Json.Bson.BsonWriter.WritePropertyName(System.String)">
<summary>
Writes the property name of a name/value pair on a JSON object.
Writes the property name of a name/value pair on a Json object.
</summary>
<param name="name">The name of the property.</param>
</member>
@@ -1112,12 +1112,7 @@
</member>
<member name="M:Newtonsoft.Json.JsonConverter.GetSchema">
<summary>
<para>
Gets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of the JSON produced by the JsonConverter.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
<returns>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of the JSON produced by the JsonConverter.</returns>
</member>
@@ -2641,13 +2636,13 @@
Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonConverterAttribute"/> class.
</summary>
<param name="converterType">Type of the converter.</param>
<param name="converterParameters">Parameter list to use when constructing the JsonConverter. Can be null.</param>
<param name="converterParameters">Parameter list to use when constructing the JsonConverter. Can be null.</param>
</member>
<member name="P:Newtonsoft.Json.JsonConverterAttribute.ConverterType">
<summary>
Gets the <see cref="T:System.Type"/> of the converter.
Gets the type of the converter.
</summary>
<value>The <see cref="T:System.Type"/> of the converter.</value>
<value>The type of the converter.</value>
</member>
<member name="P:Newtonsoft.Json.JsonConverterAttribute.ConverterParameters">
<summary>
@@ -2678,7 +2673,7 @@
</member>
<member name="T:Newtonsoft.Json.JsonException">
<summary>
The exception thrown when an error occurs during JSON serialization or deserialization.
The exception thrown when an error occurs during Json serialization or deserialization.
</summary>
</member>
<member name="M:Newtonsoft.Json.JsonException.#ctor">
@@ -2887,7 +2882,7 @@
</member>
<member name="T:Newtonsoft.Json.JsonReaderException">
<summary>
The exception thrown when an error occurs while reading JSON text.
The exception thrown when an error occurs while reading Json text.
</summary>
</member>
<member name="M:Newtonsoft.Json.JsonReaderException.#ctor">
@@ -2937,14 +2932,9 @@
</summary>
<value>The path to the JSON where the error occurred.</value>
</member>
<member name="T:Newtonsoft.Json.JsonRequiredAttribute">
<summary>
Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to always serialize the member, and require the member has a value.
</summary>
</member>
<member name="T:Newtonsoft.Json.JsonSerializationException">
<summary>
The exception thrown when an error occurs during JSON serialization or deserialization.
The exception thrown when an error occurs during Json serialization or deserialization.
</summary>
</member>
<member name="M:Newtonsoft.Json.JsonSerializationException.#ctor">
@@ -3045,14 +3035,14 @@
</member>
<member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader)">
<summary>
Deserializes the JSON structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.
Deserializes the Json structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.
</summary>
<param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> that contains the JSON structure to deserialize.</param>
<returns>The <see cref="T:System.Object"/> being deserialized.</returns>
</member>
<member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(System.IO.TextReader,System.Type)">
<summary>
Deserializes the JSON structure contained by the specified <see cref="T:System.IO.StringReader"/>
Deserializes the Json structure contained by the specified <see cref="T:System.IO.StringReader"/>
into an instance of the specified type.
</summary>
<param name="reader">The <see cref="T:System.IO.TextReader"/> containing the object.</param>
@@ -3061,7 +3051,7 @@
</member>
<member name="M:Newtonsoft.Json.JsonSerializer.Deserialize``1(Newtonsoft.Json.JsonReader)">
<summary>
Deserializes the JSON structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>
Deserializes the Json structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>
into an instance of the specified type.
</summary>
<param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the object.</param>
@@ -3070,7 +3060,7 @@
</member>
<member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader,System.Type)">
<summary>
Deserializes the JSON structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>
Deserializes the Json structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>
into an instance of the specified type.
</summary>
<param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the object.</param>
@@ -3079,18 +3069,18 @@
</member>
<member name="M:Newtonsoft.Json.JsonSerializer.Serialize(System.IO.TextWriter,System.Object)">
<summary>
Serializes the specified <see cref="T:System.Object"/> and writes the JSON structure
Serializes the specified <see cref="T:System.Object"/> and writes the Json structure
to a <c>Stream</c> using the specified <see cref="T:System.IO.TextWriter"/>.
</summary>
<param name="textWriter">The <see cref="T:System.IO.TextWriter"/> used to write the JSON structure.</param>
<param name="textWriter">The <see cref="T:System.IO.TextWriter"/> used to write the Json structure.</param>
<param name="value">The <see cref="T:System.Object"/> to serialize.</param>
</member>
<member name="M:Newtonsoft.Json.JsonSerializer.Serialize(Newtonsoft.Json.JsonWriter,System.Object,System.Type)">
<summary>
Serializes the specified <see cref="T:System.Object"/> and writes the JSON structure
Serializes the specified <see cref="T:System.Object"/> and writes the Json structure
to a <c>Stream</c> using the specified <see cref="T:System.IO.TextWriter"/>.
</summary>
<param name="jsonWriter">The <see cref="T:Newtonsoft.Json.JsonWriter"/> used to write the JSON structure.</param>
<param name="jsonWriter">The <see cref="T:Newtonsoft.Json.JsonWriter"/> used to write the Json structure.</param>
<param name="value">The <see cref="T:System.Object"/> to serialize.</param>
<param name="objectType">
The type of the value being serialized.
@@ -3100,10 +3090,10 @@
</member>
<member name="M:Newtonsoft.Json.JsonSerializer.Serialize(System.IO.TextWriter,System.Object,System.Type)">
<summary>
Serializes the specified <see cref="T:System.Object"/> and writes the JSON structure
Serializes the specified <see cref="T:System.Object"/> and writes the Json structure
to a <c>Stream</c> using the specified <see cref="T:System.IO.TextWriter"/>.
</summary>
<param name="textWriter">The <see cref="T:System.IO.TextWriter"/> used to write the JSON structure.</param>
<param name="textWriter">The <see cref="T:System.IO.TextWriter"/> used to write the Json structure.</param>
<param name="value">The <see cref="T:System.Object"/> to serialize.</param>
<param name="objectType">
The type of the value being serialized.
@@ -3113,10 +3103,10 @@
</member>
<member name="M:Newtonsoft.Json.JsonSerializer.Serialize(Newtonsoft.Json.JsonWriter,System.Object)">
<summary>
Serializes the specified <see cref="T:System.Object"/> and writes the JSON structure
Serializes the specified <see cref="T:System.Object"/> and writes the Json structure
to a <c>Stream</c> using the specified <see cref="T:Newtonsoft.Json.JsonWriter"/>.
</summary>
<param name="jsonWriter">The <see cref="T:Newtonsoft.Json.JsonWriter"/> used to write the JSON structure.</param>
<param name="jsonWriter">The <see cref="T:Newtonsoft.Json.JsonWriter"/> used to write the Json structure.</param>
<param name="value">The <see cref="T:System.Object"/> to serialize.</param>
</member>
<member name="E:Newtonsoft.Json.JsonSerializer.Error">
@@ -3140,12 +3130,6 @@
</summary>
<value>The trace writer.</value>
</member>
<member name="P:Newtonsoft.Json.JsonSerializer.EqualityComparer">
<summary>
Gets or sets the equality comparer used by the serializer when comparing references.
</summary>
<value>The equality comparer.</value>
</member>
<member name="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling">
<summary>
Gets or sets how type name writing and reading is handled by the serializer.
@@ -3257,7 +3241,7 @@
</member>
<member name="P:Newtonsoft.Json.JsonSerializer.DateFormatString">
<summary>
Get or set how <see cref="T:System.DateTime"/> and <see cref="T:System.DateTimeOffset"/> values are formatted when writing JSON text, and the expected date format when reading JSON text.
Get or set how <see cref="T:System.DateTime"/> and <see cref="T:System.DateTimeOffset"/> values are formatting when writing JSON text.
</summary>
</member>
<member name="P:Newtonsoft.Json.JsonSerializer.Culture">
@@ -3361,24 +3345,12 @@
</summary>
<value>The contract resolver.</value>
</member>
<member name="P:Newtonsoft.Json.JsonSerializerSettings.EqualityComparer">
<summary>
Gets or sets the equality comparer used by the serializer when comparing references.
</summary>
<value>The equality comparer.</value>
</member>
<member name="P:Newtonsoft.Json.JsonSerializerSettings.ReferenceResolver">
<summary>
Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.IReferenceResolver"/> used by the serializer when resolving references.
</summary>
<value>The reference resolver.</value>
</member>
<member name="P:Newtonsoft.Json.JsonSerializerSettings.ReferenceResolverProvider">
<summary>
Gets or sets a function that creates the <see cref="T:Newtonsoft.Json.Serialization.IReferenceResolver"/> used by the serializer when resolving references.
</summary>
<value>A function that creates the <see cref="T:Newtonsoft.Json.Serialization.IReferenceResolver"/> used by the serializer when resolving references.</value>
</member>
<member name="P:Newtonsoft.Json.JsonSerializerSettings.TraceWriter">
<summary>
Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.ITraceWriter"/> used by the serializer when writing trace messages.
@@ -3405,7 +3377,7 @@
</member>
<member name="P:Newtonsoft.Json.JsonSerializerSettings.DateFormatString">
<summary>
Get or set how <see cref="T:System.DateTime"/> and <see cref="T:System.DateTimeOffset"/> values are formatted when writing JSON text, and the expected date format when reading JSON text.
Get or set how <see cref="T:System.DateTime"/> and <see cref="T:System.DateTimeOffset"/> values are formatting when writing JSON text.
</summary>
</member>
<member name="P:Newtonsoft.Json.JsonSerializerSettings.MaxDepth">
@@ -3572,12 +3544,12 @@
</member>
<member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartObject">
<summary>
Writes the beginning of a JSON object.
Writes the beginning of a Json object.
</summary>
</member>
<member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartArray">
<summary>
Writes the beginning of a JSON array.
Writes the beginning of a Json array.
</summary>
</member>
<member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartConstructor(System.String)">
@@ -3594,7 +3566,7 @@
</member>
<member name="M:Newtonsoft.Json.JsonTextWriter.WritePropertyName(System.String)">
<summary>
Writes the property name of a name/value pair on a JSON object.
Writes the property name of a name/value pair on a Json object.
</summary>
<param name="name">The name of the property.</param>
</member>
@@ -3809,7 +3781,7 @@
</member>
<member name="T:Newtonsoft.Json.JsonToken">
<summary>
Specifies the type of JSON token.
Specifies the type of Json token.
</summary>
</member>
<member name="F:Newtonsoft.Json.JsonToken.None">
@@ -3904,12 +3876,7 @@
</member>
<member name="T:Newtonsoft.Json.JsonValidatingReader">
<summary>
<para>
Represents a reader that provides <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> validation.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
</member>
<member name="M:Newtonsoft.Json.JsonValidatingReader.#ctor(Newtonsoft.Json.JsonReader)">
@@ -4019,7 +3986,7 @@
</member>
<member name="T:Newtonsoft.Json.JsonWriterException">
<summary>
The exception thrown when an error occurs while reading JSON text.
The exception thrown when an error occurs while reading Json text.
</summary>
</member>
<member name="M:Newtonsoft.Json.JsonWriterException.#ctor">
@@ -6467,12 +6434,12 @@
</member>
<member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartObject">
<summary>
Writes the beginning of a JSON object.
Writes the beginning of a Json object.
</summary>
</member>
<member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartArray">
<summary>
Writes the beginning of a JSON array.
Writes the beginning of a Json array.
</summary>
</member>
<member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartConstructor(System.String)">
@@ -6489,7 +6456,7 @@
</member>
<member name="M:Newtonsoft.Json.Linq.JTokenWriter.WritePropertyName(System.String)">
<summary>
Writes the property name of a name/value pair on a JSON object.
Writes the property name of a name/value pair on a Json object.
</summary>
<param name="name">The name of the property.</param>
</member>
@@ -6839,22 +6806,12 @@
</member>
<member name="T:Newtonsoft.Json.Schema.Extensions">
<summary>
<para>
Contains the JSON schema extension methods.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
</member>
<member name="M:Newtonsoft.Json.Schema.Extensions.IsValid(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema)">
<summary>
<para>
Determines whether the <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
<param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param>
<param name="schema">The schema to test with.</param>
@@ -6864,12 +6821,7 @@
</member>
<member name="M:Newtonsoft.Json.Schema.Extensions.IsValid(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema,System.Collections.Generic.IList{System.String}@)">
<summary>
<para>
Determines whether the <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
<param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param>
<param name="schema">The schema to test with.</param>
@@ -6880,24 +6832,14 @@
</member>
<member name="M:Newtonsoft.Json.Schema.Extensions.Validate(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema)">
<summary>
<para>
Validates the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
<param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param>
<param name="schema">The schema to test with.</param>
</member>
<member name="M:Newtonsoft.Json.Schema.Extensions.Validate(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema,Newtonsoft.Json.Schema.ValidationEventHandler)">
<summary>
<para>
Validates the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
<param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param>
<param name="schema">The schema to test with.</param>
@@ -6905,12 +6847,7 @@
</member>
<member name="T:Newtonsoft.Json.Schema.JsonSchema">
<summary>
<para>
An in-memory representation of a JSON Schema.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
</member>
<member name="M:Newtonsoft.Json.Schema.JsonSchema.#ctor">
@@ -7167,12 +7104,7 @@
</member>
<member name="T:Newtonsoft.Json.Schema.JsonSchemaException">
<summary>
<para>
Returns detailed information about the schema exception.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
</member>
<member name="M:Newtonsoft.Json.Schema.JsonSchemaException.#ctor">
@@ -7224,12 +7156,7 @@
</member>
<member name="T:Newtonsoft.Json.Schema.JsonSchemaGenerator">
<summary>
<para>
Generates a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from a specified <see cref="T:System.Type"/>.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
</member>
<member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type)">
@@ -7277,12 +7204,7 @@
</member>
<member name="T:Newtonsoft.Json.Schema.JsonSchemaResolver">
<summary>
<para>
Resolves <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from an id.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
</member>
<member name="M:Newtonsoft.Json.Schema.JsonSchemaResolver.#ctor">
@@ -7305,12 +7227,7 @@
</member>
<member name="T:Newtonsoft.Json.Schema.JsonSchemaType">
<summary>
<para>
The value types allowed by the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/>.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
</member>
<member name="F:Newtonsoft.Json.Schema.JsonSchemaType.None">
@@ -7360,12 +7277,7 @@
</member>
<member name="T:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling">
<summary>
<para>
Specifies undefined schema Id handling options for the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaGenerator"/>.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
</member>
<member name="F:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling.None">
@@ -7385,12 +7297,7 @@
</member>
<member name="T:Newtonsoft.Json.Schema.ValidationEventArgs">
<summary>
<para>
Returns detailed information related to the <see cref="T:Newtonsoft.Json.Schema.ValidationEventHandler"/>.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
</member>
<member name="P:Newtonsoft.Json.Schema.ValidationEventArgs.Exception">
@@ -7413,12 +7320,7 @@
</member>
<member name="T:Newtonsoft.Json.Schema.ValidationEventHandler">
<summary>
<para>
Represents the callback method that will handle JSON schema validation events and the <see cref="T:Newtonsoft.Json.Schema.ValidationEventArgs"/>.
</para>
<note type="caution">
JSON Schema validation has been moved to its own package. See <see href="http://www.newtonsoft.com/jsonschema">http://www.newtonsoft.com/jsonschema</see> for more details.
</note>
</summary>
</member>
<member name="T:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver">
@@ -7591,14 +7493,7 @@
Resolves the name of the property.
</summary>
<param name="propertyName">Name of the property.</param>
<returns>Resolved name of the property.</returns>
</member>
<member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveDictionaryKey(System.String)">
<summary>
Resolves the key of the dictionary. By default <see cref="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolvePropertyName(System.String)"/> is used to resolve dictionary keys.
</summary>
<param name="dictionaryKey">Key of the dictionary.</param>
<returns>Resolved key of the dictionary.</returns>
<returns>Name of the property.</returns>
</member>
<member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.GetResolvedPropertyName(System.String)">
<summary>
@@ -8117,12 +8012,6 @@
</summary>
<value>The property name resolver.</value>
</member>
<member name="P:Newtonsoft.Json.Serialization.JsonDictionaryContract.DictionaryKeyResolver">
<summary>
Gets or sets the dictionary key resolver.
</summary>
<value>The dictionary key resolver.</value>
</member>
<member name="P:Newtonsoft.Json.Serialization.JsonDictionaryContract.DictionaryKeyType">
<summary>
Gets the <see cref="T:System.Type"/> of the dictionary keys.
@@ -8583,7 +8472,6 @@
<summary>
Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.ReflectionAttributeProvider"/> class.
</summary>
<param name="attributeProvider">The instance to get attributes for. This parameter should be a <see cref="T:System.Type"/>, <see cref="T:System.Reflection.MemberInfo"/>, <see cref="T:System.Reflection.ParameterInfo"/> or <see cref="T:System.Reflection.Assembly"/>.</param>
</member>
<member name="M:Newtonsoft.Json.Serialization.ReflectionAttributeProvider.GetAttributes(System.Boolean)">
<summary>
@@ -8693,7 +8581,7 @@
</member>
<member name="M:Newtonsoft.Json.Utilities.CollectionUtils.IndexOf``1(System.Collections.Generic.IEnumerable{``0},``0,System.Collections.Generic.IEqualityComparer{``0})">
<summary>
Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer{TSource}.
Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer.
</summary>
<typeparam name="TSource">The type of the elements of source.</typeparam>
<param name="list">A sequence in which to locate a value.</param>

View File

@@ -1,7 +0,0 @@
Copyright (c) 2002-2013, The Npgsql Development Team
Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.
IN NO EVENT SHALL THE NPGSQL DEVELOPMENT TEAM BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE NPGSQL DEVELOPMENT TEAM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE NPGSQL DEVELOPMENT TEAM SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE NPGSQL DEVELOPMENT TEAM HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -1,52 +0,0 @@
Npgsql - .NET Data Provider for PostgreSQL
=============
###What Is Npgsql?
Npgsql is a .Net Data Provider for PostgreSQL. It allows you to connect and interact with PostgreSQL server using .NET.
###Project Information
+ [Offical Site][1]
+ [Npgsql source code @ GitHub][2]
+ [Available on NuGet Gallery][3]
+ [Wiki - Usage and other information][4]
###Developers
Developers who contributes to Npgsql currently or in past, in no particular order:
+ Brar Piening
+ Francisco Figueiredo Jr.
+ Ben Clewett
+ Daniel Morgan
+ Dave Page
+ Ulrich Sprick
+ Glen Parker
+ Josh Cooley
+ Jon Asher
+ Chris Morgan
+ Thilo Utke
+ Hiroshi Saito
+ Shay Rojansky
###License
Refer LICENSE.txt for more information on license terms.
###Code history
On December 2nd, [we committed a change][5] to restructure Npgsql code. This change modified file locations and unfortunately made the complete modification history of those files to not be available anymore through GitHub interface directly. [This stackoverflow post][6] documents a way to access the history before the rename: You just need to access the object tree **before** the rename and then you can see the rest of the file history.
In the case of this rename, this is the tree: https://github.com/npgsql/Npgsql/tree/2f8928e4dee59275767de0df2ec41a654744a3bc
This will help future searches for the history of the files. Note that you stil can access the complete history of the file through command line: `git log --follow ./newflodername/file`
[1]: http://www.npgsql.org/ "Official site"
[2]: https://github.com/npgsql/Npgsql/ "Npgsql source code @ GitHub"
[3]: http://www.nuget.org/packages/Npgsql/ "Npgsql @ Nuget Gallery"
[4]: https://github.com/npgsql/Npgsql/wiki/ "Wiki"
[5]: https://github.com/npgsql/Npgsql/commit/d7beea23f3407b38747cde05568a59ac87cdd121#diff-3b02da674650ba0f31603c365249f34f
[6]: http://stackoverflow.com/questions/17213046/see-history-in-github-after-folder-rename

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -161,237 +161,6 @@
asynchronous request failed.
</summary>
</member>
<member name="T:Microsoft.Azure.ResourceBase">
<summary>
Resource information.
</summary>
</member>
<member name="M:Microsoft.Azure.ResourceBase.#ctor">
<summary>
Initializes a new instance of the ResourceBase class.
</summary>
</member>
<member name="M:Microsoft.Azure.ResourceBase.#ctor(System.String)">
<summary>
Initializes a new instance of the ResourceBase class with required
arguments.
</summary>
</member>
<member name="P:Microsoft.Azure.ResourceBase.Location">
<summary>
Required. Gets or sets the location of the resource.
</summary>
</member>
<member name="P:Microsoft.Azure.ResourceBase.Tags">
<summary>
Optional. Gets or sets the tags attached to the resource.
</summary>
</member>
<member name="T:Microsoft.Azure.ResourceBaseExtended">
<summary>
Resource information with extended details.
</summary>
</member>
<member name="M:Microsoft.Azure.ResourceBaseExtended.#ctor">
<summary>
Initializes a new instance of the ResourceBaseExtended class.
</summary>
</member>
<member name="M:Microsoft.Azure.ResourceBaseExtended.#ctor(System.String)">
<summary>
Initializes a new instance of the ResourceBaseExtended class with
required arguments.
</summary>
</member>
<member name="P:Microsoft.Azure.ResourceBaseExtended.Id">
<summary>
Optional. Gets or sets the ID of the resource.
</summary>
</member>
<member name="P:Microsoft.Azure.ResourceBaseExtended.Name">
<summary>
Optional. Gets or sets the name of the resource.
</summary>
</member>
<member name="P:Microsoft.Azure.ResourceBaseExtended.Type">
<summary>
Optional. Gets or sets the type of the resource.
</summary>
</member>
<member name="T:Microsoft.Azure.ResourceIdentity">
<summary>
Resource identity.
</summary>
</member>
<member name="M:Microsoft.Azure.ResourceIdentity.#ctor">
<summary>
Initializes a new instance of the ResourceIdentity class.
</summary>
</member>
<member name="M:Microsoft.Azure.ResourceIdentity.#ctor(System.String,System.String,System.String)">
<summary>
Initializes a new instance of the ResourceIdentity class.
</summary>
</member>
<member name="M:Microsoft.Azure.ResourceIdentity.GetProviderFromResourceType(System.String)">
<summary>
Returns provider string from resource type.
</summary>
<param name="resourceType">Resource type.</param>
<returns>Provider</returns>
</member>
<member name="M:Microsoft.Azure.ResourceIdentity.GetTypeFromResourceType(System.String)">
<summary>
Returns type string from resource type.
</summary>
<param name="resourceType">Resource type.</param>
<returns>Type</returns>
</member>
<member name="P:Microsoft.Azure.ResourceIdentity.ParentResourcePath">
<summary>
Optional. Gets or sets parent resource path (optional).
</summary>
</member>
<member name="P:Microsoft.Azure.ResourceIdentity.ResourceName">
<summary>
Required. Gets or sets resource name.
</summary>
</member>
<member name="P:Microsoft.Azure.ResourceIdentity.ResourceProviderApiVersion">
<summary>
Required. Gets or sets API version of the resource provider.
</summary>
</member>
<member name="P:Microsoft.Azure.ResourceIdentity.ResourceProviderNamespace">
<summary>
Required. Gets or sets namespace of the resource provider.
</summary>
</member>
<member name="P:Microsoft.Azure.ResourceIdentity.ResourceType">
<summary>
Required. Gets or sets resource type.
</summary>
</member>
<member name="T:Microsoft.Azure.Common.OData.FilterParameterAttribute">
<summary>
Parameter attribute used with OData filters.
</summary>
</member>
<member name="M:Microsoft.Azure.Common.OData.FilterParameterAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:Microsoft.Azure.Common.OData.FilterParameterAttribute"/> class.
</summary>
<param name="name">Property name to use in the filter.</param>
</member>
<member name="M:Microsoft.Azure.Common.OData.FilterParameterAttribute.#ctor(System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:Microsoft.Azure.Common.OData.FilterParameterAttribute"/> class.
</summary>
<param name="name">Property name to use in the filter.</param>
<param name="format">Format of the value.</param>
</member>
<member name="P:Microsoft.Azure.Common.OData.FilterParameterAttribute.Name">
<summary>
Property name to use in the filter.
</summary>
</member>
<member name="P:Microsoft.Azure.Common.OData.FilterParameterAttribute.Format">
<summary>
Format of the value.
</summary>
</member>
<member name="T:Microsoft.Azure.Common.OData.FilterString">
<summary>
Handles OData filter generation.
</summary>
</member>
<member name="M:Microsoft.Azure.Common.OData.FilterString.Generate``1(System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})">
<summary>
Generates an OData filter from a specified Linq expression.
</summary>
<typeparam name="T">Filter type</typeparam>
<param name="filter">Entity to use for filter generation</param>
<returns></returns>
</member>
<member name="T:Microsoft.Azure.Common.OData.UrlExpressionVisitor">
<summary>
Expression visitor class that generates OData style $filter parameter.
</summary>
</member>
<member name="M:Microsoft.Azure.Common.OData.UrlExpressionVisitor.VisitBinary(System.Linq.Expressions.BinaryExpression)">
<summary>
Visits binary expression like ==, &amp;&amp;, >, etc.
</summary>
<param name="node">Node to visit.</param>
<returns>Original node.</returns>
</member>
<member name="M:Microsoft.Azure.Common.OData.UrlExpressionVisitor.VisitUnary(System.Linq.Expressions.UnaryExpression)">
<summary>
Visits binary expression !foo.
</summary>
<param name="node">Node to visit.</param>
<returns>Original node.</returns>
</member>
<member name="M:Microsoft.Azure.Common.OData.UrlExpressionVisitor.VisitConditional(System.Linq.Expressions.ConditionalExpression)">
<summary>
Visits conditional expression foo == true ? bar : fee. Throws NotSupportedException.
</summary>
<param name="node">Node to visit.</param>
<returns>Throws NotSupportedException.</returns>
</member>
<member name="M:Microsoft.Azure.Common.OData.UrlExpressionVisitor.VisitNew(System.Linq.Expressions.NewExpression)">
<summary>
Visits new object expression like new DateTime().
</summary>
<param name="node">Node to visit.</param>
<returns>Original node.</returns>
</member>
<member name="M:Microsoft.Azure.Common.OData.UrlExpressionVisitor.VisitConstant(System.Linq.Expressions.ConstantExpression)">
<summary>
Visits constants like 'a' or 123.
</summary>
<param name="node">Node to visit.</param>
<returns>Original node.</returns>
</member>
<member name="M:Microsoft.Azure.Common.OData.UrlExpressionVisitor.VisitMember(System.Linq.Expressions.MemberExpression)">
<summary>
Visits object members like p.Foo or dateTime.Hour.
</summary>
<param name="node">Node to visit.</param>
<returns>Original node.</returns>
</member>
<member name="M:Microsoft.Azure.Common.OData.UrlExpressionVisitor.VisitMethodCall(System.Linq.Expressions.MethodCallExpression)">
<summary>
Visits method calls like Contains, StartsWith, etc. Methods that are not supported will throw an exception.
</summary>
<param name="node">Node to visit.</param>
<returns>Original node.</returns>
</member>
<member name="M:Microsoft.Azure.Common.OData.UrlExpressionVisitor.closeUnaryBooleanOperator">
<summary>
Appends 'eq true' to Boolean unary operators.
</summary>
</member>
<member name="M:Microsoft.Azure.Common.OData.UrlExpressionVisitor.PrintConstant(System.Object)">
<summary>
Helper method to print constant.
</summary>
<param name="val">Object to print.</param>
</member>
<member name="M:Microsoft.Azure.Common.OData.UrlExpressionVisitor.GetPropertyName(System.Reflection.PropertyInfo)">
<summary>
Helper method to generate property name.
</summary>
<param name="property">Property to examine.</param>
<returns>Property name or value specified in the FilterParameterAttribute.</returns>
</member>
<member name="M:Microsoft.Azure.Common.OData.UrlExpressionVisitor.GetPropertyFormat(System.Reflection.PropertyInfo)">
<summary>
Helper method to retrieve format from the FilterParameterAttribute.
</summary>
<param name="property">Property to examine.</param>
<returns>Format from FilterParameterAttribute or null.</returns>
</member>
<member name="T:Microsoft.Azure.Common.Properties.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.

View File

@@ -1,114 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Azure.KeyVault.Core</name>
</assembly>
<members>
<member name="T:Microsoft.Azure.KeyVault.Core.IKey">
<summary>
Interface for Keys
</summary>
</member>
<member name="M:Microsoft.Azure.KeyVault.Core.IKey.DecryptAsync(System.Byte[],System.Byte[],System.Byte[],System.Byte[],System.String,System.Threading.CancellationToken)">
<summary>
Decrypts the specified cipher text.
</summary>
<param name="ciphertext">The cipher text to decrypt</param>
<param name="iv">The initialization vector</param>
<param name="authenticationData">The authentication data</param>
<param name="algorithm">The algorithm to use</param>
<param name="token">Cancellation token</param>
<returns>The plain text</returns>
<remarks>If algorithm is not specified, an implementation should use its default algorithm.
Not all algorithms require, or support, all parameters.</remarks>
</member>
<member name="M:Microsoft.Azure.KeyVault.Core.IKey.EncryptAsync(System.Byte[],System.Byte[],System.Byte[],System.String,System.Threading.CancellationToken)">
<summary>
Encrypts the specified plain text.
</summary>
<param name="plaintext">The plain text to encrypt</param>
<param name="iv">The initialization vector</param>
<param name="authenticationData">The authentication data</param>
<param name="algorithm">The algorithm to use</param>
<param name="token">Cancellation token</param>
<returns>A Tuple consisting of the cipher text, the authentication tag (if applicable), the algorithm used</returns>
<remarks>If the algorithm is not specified, an implementation should use its default algorithm.
Not all algorithyms require, or support, all parameters.</remarks>
</member>
<member name="M:Microsoft.Azure.KeyVault.Core.IKey.WrapKeyAsync(System.Byte[],System.String,System.Threading.CancellationToken)">
<summary>
Encrypts the specified key material.
</summary>
<param name="key">The key material to encrypt</param>
<param name="algorithm">The algorithm to use</param>
<param name="token">Cancellation token</param>
<returns>A Tuple consisting of the encrypted key and the algorithm used</returns>
<remarks>If the algorithm is not specified, an implementation should use its default algorithm</remarks>
</member>
<member name="M:Microsoft.Azure.KeyVault.Core.IKey.UnwrapKeyAsync(System.Byte[],System.String,System.Threading.CancellationToken)">
<summary>
Decrypts the specified key material.
</summary>
<param name="encryptedKey">The encrypted key material</param>
<param name="algorithm">The algorithm to use</param>
<param name="token">Cancellation token</param>
<returns>The decrypted key material</returns>
<remarks>If the algorithm is not specified, an implementation should use its default algorithm</remarks>
</member>
<member name="M:Microsoft.Azure.KeyVault.Core.IKey.SignAsync(System.Byte[],System.String,System.Threading.CancellationToken)">
<summary>
Signs the specified digest.
</summary>
<param name="digest">The digest to sign</param>
<param name="algorithm">The algorithm to use</param>
<param name="token">Cancellation token</param>
<returns>A Tuple consisting of the signature and the algorithm used</returns>
<remarks>If the algorithm is not specified, an implementation should use its default algorithm</remarks>
</member>
<member name="M:Microsoft.Azure.KeyVault.Core.IKey.VerifyAsync(System.Byte[],System.Byte[],System.String,System.Threading.CancellationToken)">
<summary>
Verifies the specified signature value
</summary>
<param name="digest">The digest</param>
<param name="signature">The signature value</param>
<param name="algorithm">The algorithm to use</param>
<param name="token">Cancellation token</param>
<returns>A bool indicating whether the signature was successfully verified</returns>
</member>
<member name="P:Microsoft.Azure.KeyVault.Core.IKey.DefaultEncryptionAlgorithm">
<summary>
The default encryption algorithm for this key
</summary>
</member>
<member name="P:Microsoft.Azure.KeyVault.Core.IKey.DefaultKeyWrapAlgorithm">
<summary>
The default key wrap algorithm for this key
</summary>
</member>
<member name="P:Microsoft.Azure.KeyVault.Core.IKey.DefaultSignatureAlgorithm">
<summary>
The default signature algorithm for this key
</summary>
</member>
<member name="P:Microsoft.Azure.KeyVault.Core.IKey.Kid">
<summary>
The key identifier
</summary>
</member>
<member name="T:Microsoft.Azure.KeyVault.Core.IKeyResolver">
<summary>
Interface for key resolvers.
</summary>
</member>
<member name="M:Microsoft.Azure.KeyVault.Core.IKeyResolver.ResolveKeyAsync(System.String,System.Threading.CancellationToken)">
<summary>
Provides an IKey implementation for the specified key identifier.
</summary>
<param name="kid">The key identifier to resolve</param>
<param name="token">Cancellation token</param>
<returns>The resolved IKey implementation or null</returns>
<remarks>Implementations should check the format of the kid to ensure that it is recognized. Null, rather than
an exception, should be returned for unrecognized key identifiers to enable chaining of key resolvers.</remarks>
</member>
</members>
</doc>

View File

@@ -40443,7 +40443,7 @@
<param name="model">The model to use.</param>
<param name="messageReaderSettings">The message reader settings to use.</param>
<param name="version">The version of the payload being read.</param>
<param name="typeKindPeekedFromPayloadFunc">A func to compute the type kind from the payload shape if it could not be determined from the expected type or the payload type.</param>
<param name="typeKindFromPayloadFunc">A func to compute the type kind from the payload shape if it could not be determined from the expected type or the payload type.</param>
<param name="targetTypeKind">The target type kind to be used to read the payload.</param>
<param name="serializationTypeNameAnnotation">Potentially non-null instance of an annotation to put on the value reported from the reader.</param>
<returns>

View File

@@ -4,19 +4,19 @@
<name>Microsoft.WindowsAzure.Configuration</name>
</assembly>
<members>
<member name="T:Microsoft.Azure.CloudConfigurationManager">
<member name="T:Microsoft.WindowsAzure.CloudConfigurationManager">
<summary>
Configuration manager for accessing Microsoft Azure settings.
Configuration manager for accessing Windows Azure settings.
</summary>
</member>
<member name="M:Microsoft.Azure.CloudConfigurationManager.GetSetting(System.String)">
<member name="M:Microsoft.WindowsAzure.CloudConfigurationManager.GetSetting(System.String)">
<summary>
Gets a setting with the given name.
</summary>
<param name="name">Setting name.</param>
<returns>Setting value or null if not found.</returns>
</member>
<member name="P:Microsoft.Azure.CloudConfigurationManager.AppSettings">
<member name="P:Microsoft.WindowsAzure.CloudConfigurationManager.AppSettings">
<summary>
Gets application settings.
</summary>
@@ -42,17 +42,17 @@
Looks up a localized string similar to Argument &quot;{0}&quot; cannot be an empty string..
</summary>
</member>
<member name="T:Microsoft.Azure.AzureApplicationSettings">
<member name="T:Microsoft.WindowsAzure.AzureApplicationSettings">
<summary>
Microsoft Azure settings.
Windows Azure settings.
</summary>
</member>
<member name="M:Microsoft.Azure.AzureApplicationSettings.#ctor">
<member name="M:Microsoft.WindowsAzure.AzureApplicationSettings.#ctor">
<summary>
Initializes the settings.
</summary>
</member>
<member name="M:Microsoft.Azure.AzureApplicationSettings.IsMissingSettingException(System.Exception)">
<member name="M:Microsoft.WindowsAzure.AzureApplicationSettings.IsMissingSettingException(System.Exception)">
<summary>
Checks whether the given exception represents an exception throws
for a missing setting.
@@ -60,14 +60,14 @@
<param name="e">Exception</param>
<returns>True for the missing setting exception.</returns>
</member>
<member name="M:Microsoft.Azure.AzureApplicationSettings.GetSetting(System.String)">
<member name="M:Microsoft.WindowsAzure.AzureApplicationSettings.GetSetting(System.String)">
<summary>
Gets a setting with the given name.
</summary>
<param name="name">Setting name.</param>
<returns>Setting value or null if such setting does not exist.</returns>
</member>
<member name="M:Microsoft.Azure.AzureApplicationSettings.GetValue(System.String,System.String,System.Func{System.String,System.String})">
<member name="M:Microsoft.WindowsAzure.AzureApplicationSettings.GetValue(System.String,System.String,System.Func{System.String,System.String})">
<summary>
Gets setting's value from the given provider.
</summary>
@@ -76,21 +76,21 @@
<param name="getValue">Method to obtain given setting.</param>
<returns>Setting value, or null if not found.</returns>
</member>
<member name="M:Microsoft.Azure.AzureApplicationSettings.GetServiceRuntimeSetting(System.String)">
<member name="M:Microsoft.WindowsAzure.AzureApplicationSettings.GetServiceRuntimeSetting(System.String)">
<summary>
Gets a configuration setting from the service runtime.
</summary>
<param name="name">Setting name.</param>
<returns>Setting value or null if not found.</returns>
</member>
<member name="M:Microsoft.Azure.AzureApplicationSettings.GetServiceRuntimeAssembly">
<member name="M:Microsoft.WindowsAzure.AzureApplicationSettings.GetServiceRuntimeAssembly">
<summary>
Loads and returns the latest available version of the service
runtime assembly.
</summary>
<returns>Loaded assembly, if any.</returns>
</member>
<member name="M:Microsoft.Azure.NativeMethods.GetAssemblyPath(System.String)">
<member name="M:Microsoft.WindowsAzure.NativeMethods.GetAssemblyPath(System.String)">
<summary>
Gets an assembly path from the GAC given a partial name.
</summary>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,197 +0,0 @@
var fs = require("fs"),
glob = require("glob"),
path = require("path-posix"),
merge = require("merge-stream"),
gulpif = require("gulp-if"),
gulp = require("gulp"),
newer = require("gulp-newer"),
plumber = require("gulp-plumber"),
sourcemaps = require("gulp-sourcemaps"),
less = require("gulp-less"),
autoprefixer = require("gulp-autoprefixer"),
minify = require("gulp-minify-css"),
typescript = require("gulp-typescript"),
uglify = require("gulp-uglify"),
rename = require("gulp-rename"),
concat = require("gulp-concat"),
header = require("gulp-header");
/*
** GULP TASKS
*/
// Incremental build (each asset group is built only if one or more inputs are newer than the output).
gulp.task("build", function () {
var assetGroupTasks = getAssetGroups().map(function (assetGroup) {
var doRebuild = false;
return createAssetGroupTask(assetGroup, doRebuild);
});
return merge(assetGroupTasks);
});
// Full rebuild (all assets groups are built regardless of timestamps).
gulp.task("rebuild", function () {
var assetGroupTasks = getAssetGroups().map(function (assetGroup) {
var doRebuild = true;
return createAssetGroupTask(assetGroup, doRebuild);
});
return merge(assetGroupTasks);
});
// Continuous watch (each asset group is built whenever one of its inputs changes).
gulp.task("watch", function () {
var pathWin32 = require("path");
getAssetGroups().forEach(function (assetGroup) {
var watchPaths = assetGroup.inputPaths.concat(assetGroup.watchPaths);
var inputWatcher;
function createWatcher() {
inputWatcher = gulp.watch(watchPaths, function (event) {
var isConcat = path.basename(assetGroup.outputFileName, path.extname(assetGroup.outputFileName)) !== "@";
if (isConcat)
console.log("Asset file '" + event.path + "' was " + event.type + ", rebuilding asset group with output '" + assetGroup.outputPath + "'.");
else
console.log("Asset file '" + event.path + "' was " + event.type + ", rebuilding asset group.");
var doRebuild = true;
var task = createAssetGroupTask(assetGroup, doRebuild);
});
}
createWatcher();
gulp.watch(assetGroup.manifestPath, function (event) {
console.log("Asset manifest file '" + event.path + "' was " + event.type + ", restarting watcher.");
inputWatcher.remove();
inputWatcher.end();
createWatcher();
});
});
});
/*
** ASSET GROUPS
*/
function getAssetGroups() {
var assetManifestPaths = glob.sync("Orchard.Web/{Core,Modules,Themes}/*/Assets.json");
var assetGroups = [];
assetManifestPaths.forEach(function (assetManifestPath) {
var assetManifest = require("./" + assetManifestPath);
assetManifest.forEach(function (assetGroup) {
resolveAssetGroupPaths(assetGroup, assetManifestPath);
assetGroups.push(assetGroup);
});
});
return assetGroups;
}
function resolveAssetGroupPaths(assetGroup, assetManifestPath) {
assetGroup.manifestPath = assetManifestPath;
assetGroup.basePath = path.dirname(assetManifestPath);
assetGroup.inputPaths = assetGroup.inputs.map(function (inputPath) {
return path.resolve(path.join(assetGroup.basePath, inputPath));
});
assetGroup.watchPaths = [];
if (!!assetGroup.watch) {
assetGroup.watchPaths = assetGroup.watch.map(function (watchPath) {
return path.resolve(path.join(assetGroup.basePath, watchPath));
});
}
assetGroup.outputPath = path.resolve(path.join(assetGroup.basePath, assetGroup.output));
assetGroup.outputDir = path.dirname(assetGroup.outputPath);
assetGroup.outputFileName = path.basename(assetGroup.output);
}
function createAssetGroupTask(assetGroup, doRebuild) {
var outputExt = path.extname(assetGroup.output).toLowerCase();
var doConcat = path.basename(assetGroup.outputFileName, outputExt) !== "@";
if (doConcat && !doRebuild) {
// Force a rebuild of this asset group is the asset manifest file itself is newer than the output.
var assetManifestStats = fs.statSync(assetGroup.manifestPath);
var outputStats = fs.existsSync(assetGroup.outputPath) ? fs.statSync(assetGroup.outputPath) : null;
doRebuild = !outputStats || assetManifestStats.mtime > outputStats.mtime;
}
switch (outputExt) {
case ".css":
return buildCssPipeline(assetGroup, doConcat, doRebuild);
case ".js":
return buildJsPipeline(assetGroup, doConcat, doRebuild);
}
}
/*
** PROCESSING PIPELINES
*/
function buildCssPipeline(assetGroup, doConcat, doRebuild) {
assetGroup.inputPaths.forEach(function (inputPath) {
var ext = path.extname(inputPath).toLowerCase();
if (ext !== ".less" && ext !== ".css")
throw "Input file '" + inputPath + "' is not of a valid type for output file '" + assetGroup.outputPath + "'.";
});
var generateSourceMaps = assetGroup.hasOwnProperty("generateSourceMaps") ? assetGroup.generateSourceMaps : true;
return gulp.src(assetGroup.inputPaths)
.pipe(gulpif(!doRebuild,
gulpif(doConcat,
newer(assetGroup.outputPath),
newer({
dest: assetGroup.outputDir,
ext: ".css"
}))))
.pipe(plumber())
.pipe(gulpif(generateSourceMaps, sourcemaps.init()))
.pipe(gulpif("*.less", less()))
.pipe(gulpif(doConcat, concat(assetGroup.outputFileName)))
.pipe(autoprefixer({ browsers: ["last 2 versions"] }))
// TODO: Start using below whenever gulp-header supports sourcemaps.
.pipe(header(
"/*\n" +
"** NOTE: This file is generated by Gulp and should not be edited directly!\n" +
"** Any changes made directly to this file will be overwritten next time its asset group is processed by Gulp.\n" +
//"** For more information, see the Readme.txt file in the Gulp solution folder.\n" +
"*/\n\n"))
.pipe(gulpif(generateSourceMaps, sourcemaps.write()))
.pipe(gulp.dest(assetGroup.outputDir))
.pipe(minify())
.pipe(rename({
suffix: ".min"
}))
.pipe(gulp.dest(assetGroup.outputDir));
}
function buildJsPipeline(assetGroup, doConcat, doRebuild) {
assetGroup.inputPaths.forEach(function (inputPath) {
var ext = path.extname(inputPath).toLowerCase();
if (ext !== ".ts" && ext !== ".js")
throw "Input file '" + inputPath + "' is not of a valid type for output file '" + assetGroup.outputPath + "'.";
});
var generateSourceMaps = assetGroup.hasOwnProperty("generateSourceMaps") ? assetGroup.generateSourceMaps : true;
return gulp.src(assetGroup.inputPaths)
.pipe(gulpif(!doRebuild,
gulpif(doConcat,
newer(assetGroup.outputPath),
newer({
dest: assetGroup.outputDir,
ext: ".js"
}))))
.pipe(plumber())
.pipe(gulpif(generateSourceMaps, sourcemaps.init()))
.pipe(gulpif("*.ts", typescript({
declaration: false,
noImplicitAny: true,
noEmitOnError: true,
sortOutput: true,
}).js))
.pipe(gulpif(doConcat, concat(assetGroup.outputFileName)))
// TODO: Start using below whenever gulp-header supports sourcemaps.
.pipe(header(
"/*\n" +
"** NOTE: This file is generated by Gulp and should not be edited directly!\n" +
"** Any changes made directly to this file will be overwritten next time its asset group is processed by Gulp.\n" +
//"** For more information, see the Readme.txt file in the Gulp solution folder.\n" +
"*/\n\n"))
.pipe(gulpif(generateSourceMaps, sourcemaps.write()))
.pipe(gulp.dest(assetGroup.outputDir))
.pipe(uglify())
.pipe(rename({
suffix: ".min"
}))
.pipe(gulp.dest(assetGroup.outputDir));
}

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{F1467A6B-2397-447B-BE90-766D192EC3D9}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>IDeliverable.Licensing.Orchard</RootNamespace>
<AssemblyName>IDeliverable.Licensing.Orchard</AssemblyName>
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Autofac, Version=3.5.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\autofac\Autofac.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\..\..\lib\newtonsoft.json\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Abstractions" />
<Reference Include="System.Web.Http, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\aspnetwebapi\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\aspnetmvc\System.Web.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ILicensedProductManifest.cs" />
<Compile Include="LicenseValidationControllerBase.cs" />
<Compile Include="LicenseValidationErrorBannerBase.cs" />
<Compile Include="LicenseValidationHelper.cs" />
<Compile Include="LicenseVerificationTokenStore.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="LicenseSettingsPartHandlerBase.cs" />
<Compile Include="LicenseSettingsPartBase.cs" />
<Compile Include="LicenseSettingsPartDriverBase.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\IDeliverable.Licensing\IDeliverable.Licensing.csproj">
<Project>{7e439cb7-1ace-435f-a8f3-5bb929423e34}</Project>
<Name>IDeliverable.Licensing</Name>
</ProjectReference>
<ProjectReference Include="..\..\Orchard\Orchard.Framework.csproj">
<Project>{2d1d92bb-4555-4cbe-8d0e-63563d6ce4c6}</Project>
<Name>Orchard.Framework</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -0,0 +1,15 @@
using Orchard;
using Orchard.Logging;
namespace IDeliverable.Licensing.Orchard
{
public interface ILicensedProductManifest : IDependency
{
string ProductId { get; }
string ProductName { get; }
string ExtensionId { get; }
bool SkipValidationForLocalRequests { get; }
string LicenseKey { get; }
ILogger Logger { get; }
}
}

View File

@@ -0,0 +1,19 @@
using Orchard.ContentManagement;
using Orchard.ContentManagement.Utilities;
namespace IDeliverable.Licensing.Orchard
{
public abstract class LicenseSettingsPartBase : ContentPart
{
public readonly LazyField<string> mProductVersionField = new LazyField<string>();
public abstract string ProductId { get; }
public string LicenseKey
{
get { return this.Retrieve(x => x.LicenseKey); }
set { this.Store(x => x.LicenseKey, value); }
}
public string ProductVersion => mProductVersionField.Value;
}
}

View File

@@ -0,0 +1,28 @@
using System.Collections.Generic;
using System.Linq;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.Environment.Extensions;
namespace IDeliverable.Licensing.Orchard
{
public abstract class LicenseSettingsPartDriverBase<TPart> : ContentPartDriver<TPart> where TPart : LicenseSettingsPartBase, new()
{
protected abstract string EditorShapeName { get; }
protected abstract string EditorShapeTemplateName { get; }
protected override DriverResult Editor(TPart part, dynamic shapeHelper)
{
return Editor(part, null, shapeHelper);
}
protected override DriverResult Editor(TPart part, IUpdateModel updater, dynamic shapeHelper)
{
return ContentShape(EditorShapeName, () =>
{
updater?.TryUpdateModel(part, Prefix, null, null);
return shapeHelper.EditorTemplate(TemplateName: EditorShapeTemplateName, Prefix: Prefix, Model: part);
}).OnGroup("Licenses");
}
}
}

View File

@@ -0,0 +1,37 @@
using System.Collections.Generic;
using System.Linq;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Handlers;
using Orchard.Environment.Extensions;
using Orchard.Localization;
namespace IDeliverable.Licensing.Orchard
{
public abstract class LicenseSettingsPartHandlerBase<TPart> : ContentHandler where TPart : LicenseSettingsPartBase, new()
{
protected LicenseSettingsPartHandlerBase(IEnumerable<ILicensedProductManifest> products, IExtensionManager extensionManager)
{
Filters.Add(new ActivatingFilter<TPart>("Site"));
OnGetContentItemMetadata<TPart>((context, part) => context.Metadata.EditorGroupInfo.Add(new GroupInfo(T("Licenses"))));
OnActivated<TPart>(SetupLazyFields);
mProducts = products;
mExtensionManager = extensionManager;
}
private readonly IEnumerable<ILicensedProductManifest> mProducts;
private readonly IExtensionManager mExtensionManager;
public Localizer T { get; set; } = NullLocalizer.Instance;
private void SetupLazyFields(ActivatedContentContext context, TPart part)
{
part.mProductVersionField.Loader(value =>
{
var productManifest = mProducts.Single(x => x.ProductId == part.ProductId);
var extension = mExtensionManager.GetExtension(productManifest.ExtensionId);
return extension.Version;
});
}
}
}

View File

@@ -0,0 +1,31 @@
using System.Web.Mvc;
using Orchard.Localization;
using Orchard.UI.Notify;
using Orchard.Utility.Extensions;
namespace IDeliverable.Licensing.Orchard
{
public abstract class LicenseValidationControllerBase : Controller
{
protected LicenseValidationControllerBase(INotifier notifier)
{
Notifier = notifier;
T = NullLocalizer.Instance;
}
public Localizer T { get; set; }
protected INotifier Notifier { get; }
protected abstract string ProductId { get; }
public ActionResult VerifyLicenseKey()
{
LicenseValidationHelper.Instance.ClearLicenseValidationResult(ProductId);
if (LicenseValidationHelper.GetLicenseIsValid(ProductId))
Notifier.Information(T("License key succesfully validated."));
var urlReferrer = Request.UrlReferrer?.ToString();
return Redirect(Request.IsLocalUrl(urlReferrer) ? urlReferrer : "~/");
}
}
}

View File

@@ -0,0 +1,71 @@
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using IDeliverable.Licensing.Validation;
using Orchard;
using Orchard.Localization;
using Orchard.Logging;
using Orchard.UI.Admin.Notification;
using Orchard.UI.Notify;
namespace IDeliverable.Licensing.Orchard
{
public abstract class LicenseValidationErrorBannerBase : Component, INotificationProvider
{
protected LicenseValidationErrorBannerBase(IEnumerable<ILicensedProductManifest> products, UrlHelper urlHelper, string productId)
{
mProducts = products;
mUrlHelper = urlHelper;
mProductId = productId;
}
private readonly IEnumerable<ILicensedProductManifest> mProducts;
private readonly UrlHelper mUrlHelper;
private readonly string mProductId;
public IEnumerable<NotifyEntry> GetNotifications()
{
var productManifest = mProducts.Single(x => x.ProductId == mProductId);
var licenseSettingsUrl = mUrlHelper.Action("Index", "Admin", new { area = "Settings", groupInfoId = "Licenses" });
var retryResultUrl = mUrlHelper.Action("VerifyLicenseKey", "LicenseValidation", new { area = productManifest.ProductName });
var retryResultLink = T("<a href=\"{0}\">Try again</a>", retryResultUrl);
LocalizedString message = null;
try
{
LicenseValidationHelper.EnsureLicenseIsValid(productManifest.ProductId);
}
catch (LicenseValidationException ex)
{
switch (ex.Error)
{
case LicenseValidationError.UnknownLicenseKey:
message = T("The <a href=\"{0}\">configured license key</a> for the {1} module is invalid. {2}", licenseSettingsUrl, productManifest.ProductName, retryResultLink);
break;
case LicenseValidationError.HostnameMismatch:
message = T("The <a href=\"{0}\">configured license key</a> for the {1} module is invalid for the current host name. {2}", licenseSettingsUrl, productManifest.ProductName, retryResultLink);
break;
case LicenseValidationError.NoActiveSubscription:
message = T("The <a href=\"{0}\">configured license key</a> for the {1} module has no active subscription. {2}", licenseSettingsUrl, productManifest.ProductName, retryResultLink);
break;
case LicenseValidationError.LicenseRevoked:
message = T("The <a href=\"{0}\">configured license key</a> for the {1} module has been revoked. {2}", licenseSettingsUrl, productManifest.ProductName, retryResultLink);
break;
case LicenseValidationError.TokenAgeValidationFailed:
case LicenseValidationError.TokenSignatureValidationFailed:
case LicenseValidationError.LicensingServiceError:
case LicenseValidationError.LicensingServiceUnreachable:
case LicenseValidationError.UnexpectedError:
default:
message = T("There was an error validating the <a href=\"{0}\">configured license key</a> for the {1} module. {2}", licenseSettingsUrl, productManifest.ProductName, retryResultLink);
break;
}
Logger.Warning(ex, "An error occurred while validating the configured license key for the {0} module. {1}", productManifest.ProductName, retryResultLink);
}
if (message != null)
yield return new NotifyEntry { Message = message, Type = NotifyType.Warning };
}
}
}

View File

@@ -0,0 +1,112 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using IDeliverable.Licensing.Validation;
using IDeliverable.Licensing.VerificationTokens;
using Orchard;
using Orchard.Logging;
using Orchard.FileSystems.AppData;
namespace IDeliverable.Licensing.Orchard
{
public class LicenseValidationHelper
{
public static bool GetLicenseIsValid(string productId)
{
try
{
EnsureLicenseIsValid(productId);
return true;
}
catch
{
return false;
}
}
public static void EnsureLicenseIsValid(string productId)
{
Instance.ValidateLicense(productId);
}
public static LicenseValidationHelper Instance
{
get
{
var workContext = HttpContext.Current.Request.RequestContext.GetWorkContext();
var products = workContext.Resolve<IEnumerable<ILicensedProductManifest>>();
var appDataFolder = workContext.Resolve<IAppDataFolder>();
var instance = new LicenseValidationHelper(products, appDataFolder);
return instance;
}
}
private static readonly TimeSpan _validationResultCachedFor = TimeSpan.FromMinutes(5);
public LicenseValidationHelper(IEnumerable<ILicensedProductManifest> products, IAppDataFolder appDataFolder)
{
var tokenStore = new LicenseVerificationTokenStore(appDataFolder);
var tokenAccessor = new LicenseVerificationTokenAccessor(tokenStore);
mProducts = products;
mLicenseValidator = new LicenseValidator(tokenAccessor);
mCacheService = new CacheService();
}
private readonly IEnumerable<ILicensedProductManifest> mProducts;
private readonly LicenseValidator mLicenseValidator;
private readonly CacheService mCacheService;
public void ValidateLicense(string productId)
{
var productManifest = GetLicensedProductManifest(productId);
productManifest.Logger.Debug("Validating license for product '{0}'...", productId);
try
{
var cacheKey = ComputeCacheKey(productManifest);
mCacheService.GetValue(cacheKey, context =>
{
context.ValidFor = _validationResultCachedFor;
var options = LicenseValidationOptions.Default;
if (productManifest.SkipValidationForLocalRequests)
options = options | LicenseValidationOptions.SkipForLocalRequests;
productManifest.Logger.Debug("Validation result not in cache. Invoking the license validator for product '{0}'...", productId);
mLicenseValidator.ValidateLicense(productManifest.ProductId, productManifest.LicenseKey, options);
return true;
});
productManifest.Logger.Debug("License successfully validated for product '{0}'.", productId);
}
catch (Exception ex)
{
productManifest.Logger.Error(ex, "An error occurred while validating the license for product '{0}'.", productId);
throw;
}
}
public void ClearLicenseValidationResult(string productId)
{
var productManifest = GetLicensedProductManifest(productId);
productManifest.Logger.Debug("Clearing license validation result for product '{0}'...", productId);
var cacheKey = ComputeCacheKey(productManifest);
mCacheService.RemoveValue(cacheKey);
}
private ILicensedProductManifest GetLicensedProductManifest(string productId)
{
return mProducts.Single(x => x.ProductId == productId);
}
private string ComputeCacheKey(ILicensedProductManifest productManifest)
{
return $"ValidateLicenseResult-{productManifest.ProductId}-{productManifest.LicenseKey}-{productManifest.SkipValidationForLocalRequests}";
}
}
}

View File

@@ -0,0 +1,63 @@
using System;
using IDeliverable.Licensing.VerificationTokens;
using Orchard.FileSystems.AppData;
using Orchard.Logging;
namespace IDeliverable.Licensing.Orchard
{
internal class LicenseVerificationTokenStore : ILicenseVerificationTokenStore
{
public LicenseVerificationTokenStore(IAppDataFolder appDataFolder)
{
mAppDataFolder = appDataFolder;
}
private readonly IAppDataFolder mAppDataFolder;
public LicenseVerificationToken Load(string productId)
{
var path = GetRelativeTokenFilePath(productId);
if (!mAppDataFolder.FileExists(path))
return null;
LicenseVerificationToken token = null;
var tokenBase64 = mAppDataFolder.ReadFile(path);
try
{
token = LicenseVerificationToken.FromBase64(tokenBase64);
}
catch
{
// An exception while parsing the token indicates somebody probably
// tampered with it or it got corrupted. In this case, let's clear out
// the store and return nothing.
Clear(productId);
}
return token;
}
public void Save(string productId, LicenseVerificationToken token)
{
Clear(productId);
var path = GetRelativeTokenFilePath(productId);
var tokenBase64 = token.ToBase64();
mAppDataFolder.CreateFile(path, tokenBase64);
}
public void Clear(string productId)
{
var path = GetRelativeTokenFilePath(productId);
if (mAppDataFolder.FileExists(path))
mAppDataFolder.DeleteFile(path);
}
private string GetRelativeTokenFilePath(string productId)
{
return $"IDeliverable.Licensing/{productId}.lic";
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("IDeliverable.Licensing.Orchard.Orchard")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("IDeliverable.Licensing.Orchard.Orchard")]
[assembly: AssemblyCopyright("Copyright © 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("f1467a6b-2397-447b-be90-766d192ec3d9")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
namespace IDeliverable.Licensing.Service
{
internal class ApiKeyAuthorizationAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
var values = new List<string>();
var paramsQuery =
from param in actionContext.Request.GetQueryNameValuePairs()
where String.Equals(param.Key, "ApiKey", StringComparison.OrdinalIgnoreCase)
select param.Value;
values.AddRange(paramsQuery.ToArray());
IEnumerable<string> headers;
actionContext.Request.Headers.TryGetValues("ApiKey", out headers);
if (headers != null)
values.AddRange(headers);
string apiKey = values != null ? values.FirstOrDefault() : null;
if (String.IsNullOrWhiteSpace(apiKey))
actionContext.Response = actionContext.ControllerContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
var expectedApiKey = ConfigurationManager.AppSettings["ApiKey"];
if (apiKey != expectedApiKey)
actionContext.Response = actionContext.ControllerContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
}
}
}

View File

@@ -0,0 +1,24 @@
using System.Web.Http;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace IDeliverable.Licensing.Service
{
internal static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
ConfigSerializationSettings(config);
config.MapHttpAttributeRoutes();
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
}
private static void ConfigSerializationSettings(HttpConfiguration config)
{
var jsonSetting = new JsonSerializerSettings();
jsonSetting.Converters.Add(new StringEnumConverter());
config.Formatters.JsonFormatter.SerializerSettings = jsonSetting;
}
}
}

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<!--
Learn more about Application Insights configuration with ApplicationInsights.config here:
http://go.microsoft.com/fwlink/?LinkID=513840
-->
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCollector.PerformanceCollectorModule, Microsoft.ApplicationInsights.Extensibility.PerfCollector">
<!--
Use the following syntax here to collect additional performance counters:
<Counters>
<Add PerformanceCounter="\Process(??APP_WIN32_PROC??)\Handle Count" ReportAs="Process handle count" />
...
</Counters>
PerformanceCounter must be either \CategoryName(InstanceName)\CounterName or \CategoryName\CounterName
Counter names may only contain letters, round brackets, forward slashes, hyphens, underscores, spaces and dots.
You may provide an optional ReportAs attribute which will be used as the metric name when reporting counter data.
For the purposes of reporting, metric names will be sanitized by removing all invalid characters from the resulting metric name.
The following placeholders are supported as InstanceName:
??APP_WIN32_PROC?? - instance name of the application process for Win32 counters.
??APP_W3SVC_PROC?? - instance name of the application IIS worker process for IIS/ASP.NET counters.
??APP_CLR_PROC?? - instance name of the application CLR process for .NET counters.
-->
</Add>
<Add Type="Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.RemoteDependencyModule, Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryModules.WebApplicationLifecycleModule, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryModules.WebRequestTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryModules.WebExceptionTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryModules.WebSessionTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryModules.WebUserTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web" />
</TelemetryModules>
<TelemetryChannel Type="Microsoft.ApplicationInsights.Channel.PersistenceChannel, Microsoft.ApplicationInsights.PersistenceChannel" />
<ContextInitializers>
<Add Type="Microsoft.ApplicationInsights.Extensibility.BuildInfoConfigComponentVersionContextInitializer, Microsoft.ApplicationInsights" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.DeviceContextInitializer, Microsoft.ApplicationInsights" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.ContextInitializers.AzureRoleEnvironmentContextInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.ContextInitializers.DomainNameRoleInstanceContextInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
</ContextInitializers>
<TelemetryInitializers>
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryInitializers.WebSyntheticTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryInitializers.WebClientIpHeaderTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryInitializers.WebUserAgentTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryInitializers.WebOperationNameTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryInitializers.WebOperationIdTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryInitializers.WebUserTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.TelemetryInitializers.WebSessionTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />
</TelemetryInitializers>
</ApplicationInsights>

View File

@@ -0,0 +1,89 @@
using System;
using System.Configuration;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using IDeliverable.Licensing.Exceptions;
using IDeliverable.Licensing.Service.Services;
using IDeliverable.Licensing.VerificationTokens;
namespace IDeliverable.Licensing.Service.Controllers
{
[RoutePrefix("api/v1")]
public class LicenseController : ApiController
{
[HttpGet]
[Route("license/{licenseKey}/verify")]
[ApiKeyAuthorization]
public LicenseVerificationToken Verify(string licenseKey, string productId, string hostname)
{
var service = GetLicenseService();
try
{
return service.VerifyLicense(licenseKey, productId, hostname, throwOnError: false);
}
catch (LicenseVerificationException ex)
{
switch (ex.Error)
{
case LicenseVerificationError.UnknownLicenseKey:
ThrowHttpResponseException(ex, HttpStatusCode.NotFound);
break;
case LicenseVerificationError.HostnameMismatch:
ThrowHttpResponseException(ex, HttpStatusCode.Forbidden);
break;
case LicenseVerificationError.NoActiveSubscription:
case LicenseVerificationError.LicenseRevoked:
ThrowHttpResponseException(ex, HttpStatusCode.Gone);
break;
default:
throw;
}
}
return null;
}
[HttpGet]
[Route("test")]
[ApiKeyAuthorization]
public HttpResponseMessage Test()
{
var testKey = ConfigurationManager.AppSettings["TestKey"];
var testProductId = ConfigurationManager.AppSettings["TestProductId"];
var testHostname = ConfigurationManager.AppSettings["TestHostname"];
var service = GetLicenseService();
try
{
service.VerifyLicense(testKey, testProductId, testHostname, throwOnError: true);
}
catch (Exception ex)
{
return new HttpResponseMessage(HttpStatusCode.InternalServerError) { ReasonPhrase = $"Verification for a supposedly valid license failed: {ex.Message}." };
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
private static LicenseService GetLicenseService()
{
var sendOwlApiEndpoint = ConfigurationManager.AppSettings["SendOwlApiEndpoint"];
var sendOwlApiKey = ConfigurationManager.AppSettings["SendOwlApiKey"];
var sendOwlApiSecret = ConfigurationManager.AppSettings["SendOwlApiSecret"];
var tokenSigningCertificateThumbprint = ConfigurationManager.AppSettings["TokenSigningCertificateThumbprint"];
return new LicenseService(sendOwlApiEndpoint, sendOwlApiKey, sendOwlApiSecret, tokenSigningCertificateThumbprint);
}
private static void ThrowHttpResponseException(LicenseVerificationException ex, HttpStatusCode httpStatusCode)
{
var response = new HttpResponseMessage(httpStatusCode) { ReasonPhrase = ex.Message };
response.Headers.Add("LicensingErrorCode", ex.Error.ToString());
throw new HttpResponseException(response);
}
}
}

View File

@@ -0,0 +1 @@
<%@ Application Codebehind="Global.asax.cs" Inherits="IDeliverable.Licensing.Service.WebApiApplication" Language="C#" %>

View File

@@ -0,0 +1,22 @@
using System;
using System.Configuration;
using System.Web.Http;
using Microsoft.ApplicationInsights.Extensibility;
namespace IDeliverable.Licensing.Service
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
// Configure ApplicationInsights instrumentation key.
var instrumentationKey = ConfigurationManager.AppSettings["ApplicationInsights.InstrumentationKey"];
if (!String.IsNullOrWhiteSpace(instrumentationKey))
TelemetryConfiguration.Active.InstrumentationKey = instrumentationKey;
else
TelemetryConfiguration.Active.DisableTelemetry = true;
}
}
}

Some files were not shown because too many files have changed in this diff Show More