Merge with 6.0.1
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<!--
|
||||
@@ -13,7 +14,45 @@
|
||||
|
||||
<Import Project="..\tools\UmbracoMSBuildTasks\Umbraco.MSBuild.Tasks.Targets" />
|
||||
<Import Project="..\tools\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
|
||||
|
||||
<UsingTask TaskName="GenerateHash" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
|
||||
<ParameterGroup>
|
||||
<InputFiles ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
|
||||
<OutputFile ParameterType="System.String" Required="true" />
|
||||
</ParameterGroup>
|
||||
<Task>
|
||||
<Using Namespace="System.IO" />
|
||||
<Using Namespace="System.Linq" />
|
||||
<Using Namespace="System.Security.Cryptography" />
|
||||
<Code Type="Fragment" Language="cs">
|
||||
<![CDATA[
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
foreach (var item in InputFiles)
|
||||
{
|
||||
string path = item.ItemSpec;
|
||||
|
||||
using (FileStream stream = new FileStream(path, FileMode.Open))
|
||||
{
|
||||
using (var cryptoProvider = new SHA1CryptoServiceProvider())
|
||||
{
|
||||
|
||||
var fileHash = cryptoProvider.ComputeHash(stream);
|
||||
|
||||
using (TextWriter w = new StreamWriter(OutputFile, false))
|
||||
{
|
||||
w.WriteLine(string.Join("", fileHash.Select(b => b.ToString("x2"))));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</Code>
|
||||
</Task>
|
||||
</UsingTask>
|
||||
|
||||
|
||||
<!--
|
||||
****************************************************
|
||||
VARIABLES
|
||||
@@ -74,8 +113,16 @@
|
||||
*****************************************************
|
||||
-->
|
||||
|
||||
<Target Name="Build" DependsOnTargets="ZipWebPiApp">
|
||||
<Target Name="Build" DependsOnTargets="GenerateWebPiHash">
|
||||
<Message Text="Build finished" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateWebPiHash" DependsOnTargets="ZipWebPiApp">
|
||||
<ItemGroup>
|
||||
<WebPiFile Include="$(BuildZipFileNameWebPi)" />
|
||||
</ItemGroup>
|
||||
<Message Text="Calculating hash for $(BuildZipFileNameWebPi)" />
|
||||
<GenerateHash InputFiles="@(WebPiFile)" OutputFile="webpihash.txt" />
|
||||
</Target>
|
||||
|
||||
<Target Name="CleanUp" DependsOnTargets="ZipWebPiApp">
|
||||
|
||||
@@ -158,7 +158,7 @@ namespace Umbraco.Core
|
||||
}
|
||||
else if (databaseProvider.ToLower().Contains("azure"))
|
||||
{
|
||||
connectionString = string.Format("Server=tcp:{0}.database.windows.net;Database={1};User ID={2}@{0};Password={3}", server, databaseName, user, password);
|
||||
connectionString = BuildAzureConnectionString(server, databaseName, user, password);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -169,6 +169,52 @@ namespace Umbraco.Core
|
||||
Initialize(providerName);
|
||||
}
|
||||
|
||||
internal string BuildAzureConnectionString(string server, string databaseName, string user, string password)
|
||||
{
|
||||
if (server.Contains(".") && ServerStartsWithTcp(server) == false)
|
||||
server = string.Format("tcp:{0}", server);
|
||||
|
||||
if (server.Contains(".") == false && ServerStartsWithTcp(server))
|
||||
{
|
||||
string serverName = server.Contains(",")
|
||||
? server.Substring(0, server.IndexOf(",", StringComparison.Ordinal))
|
||||
: server;
|
||||
|
||||
var portAddition = string.Empty;
|
||||
|
||||
if (server.Contains(","))
|
||||
portAddition = server.Substring(server.IndexOf(",", StringComparison.Ordinal));
|
||||
|
||||
server = string.Format("{0}.database.windows.net{1}", serverName, portAddition);
|
||||
}
|
||||
|
||||
if (ServerStartsWithTcp(server) == false)
|
||||
server = string.Format("tcp:{0}.database.windows.net", server);
|
||||
|
||||
if (server.Contains(",") == false)
|
||||
server = string.Format("{0},1433", server);
|
||||
|
||||
if (user.Contains("@") == false)
|
||||
{
|
||||
var userDomain = server;
|
||||
|
||||
if (ServerStartsWithTcp(server))
|
||||
userDomain = userDomain.Substring(userDomain.IndexOf(":", StringComparison.Ordinal) + 1);
|
||||
|
||||
if (userDomain.Contains("."))
|
||||
userDomain = userDomain.Substring(0, userDomain.IndexOf(".", StringComparison.Ordinal));
|
||||
|
||||
user = string.Format("{0}@{1}", user, userDomain);
|
||||
}
|
||||
|
||||
return string.Format("Server={0};Database={1};User ID={2};Password={3}", server, databaseName, user, password);
|
||||
}
|
||||
|
||||
private static bool ServerStartsWithTcp(string server)
|
||||
{
|
||||
return server.ToLower().StartsWith("tcp:".ToLower());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves the connection string as a proper .net ConnectionString and the legacy AppSettings key/value.
|
||||
/// </summary>
|
||||
@@ -232,7 +278,8 @@ namespace Umbraco.Core
|
||||
/// </remarks>
|
||||
internal void Initialize()
|
||||
{
|
||||
if (ConfigurationManager.ConnectionStrings[GlobalSettings.UmbracoConnectionName] != null)
|
||||
var databaseSettings = ConfigurationManager.ConnectionStrings[GlobalSettings.UmbracoConnectionName];
|
||||
if (databaseSettings != null && string.IsNullOrWhiteSpace(databaseSettings.ConnectionString) == false && string.IsNullOrWhiteSpace(databaseSettings.ProviderName) == false)
|
||||
{
|
||||
var providerName = "System.Data.SqlClient";
|
||||
if (!string.IsNullOrEmpty(ConfigurationManager.ConnectionStrings[GlobalSettings.UmbracoConnectionName].ProviderName))
|
||||
@@ -254,8 +301,7 @@ namespace Umbraco.Core
|
||||
{
|
||||
ConfigureEmbeddedDatabaseConnection();
|
||||
}
|
||||
else if (legacyConnString.ToLowerInvariant().Contains("database.windows.net") &&
|
||||
legacyConnString.ToLowerInvariant().Contains("tcp:"))
|
||||
else if (legacyConnString.ToLowerInvariant().Contains("tcp:"))
|
||||
{
|
||||
//Must be sql azure
|
||||
SaveConnectionString(legacyConnString, "System.Data.SqlClient");
|
||||
|
||||
@@ -85,5 +85,31 @@ namespace Umbraco.Tests.Persistence
|
||||
Assert.That(umbracoUserTable, Is.True);
|
||||
Assert.That(cmsTagsTable, Is.True);
|
||||
}
|
||||
|
||||
[TestCase("MyServer", "MyDatabase", "MyUser", "MyPassword")]
|
||||
[TestCase("MyServer", "MyDatabase", "MyUser@MyServer", "MyPassword")]
|
||||
[TestCase("tcp:MyServer", "MyDatabase", "MyUser", "MyPassword")]
|
||||
[TestCase("tcp:MyServer", "MyDatabase", "MyUser@MyServer", "MyPassword")]
|
||||
[TestCase("tcp:MyServer,1433", "MyDatabase", "MyUser", "MyPassword")]
|
||||
[TestCase("tcp:MyServer,1433", "MyDatabase", "MyUser@MyServer", "MyPassword")]
|
||||
[TestCase("tcp:MyServer.database.windows.net", "MyDatabase", "MyUser", "MyPassword")]
|
||||
[TestCase("tcp:MyServer.database.windows.net", "MyDatabase", "MyUser@MyServer", "MyPassword")]
|
||||
[TestCase("tcp:MyServer.database.windows.net,1433", "MyDatabase", "MyUser", "MyPassword")]
|
||||
[TestCase("tcp:MyServer.database.windows.net,1433", "MyDatabase", "MyUser@MyServer", "MyPassword")]
|
||||
public void Build_Azure_Connection_String_Regular(string server, string databaseName, string userName, string password)
|
||||
{
|
||||
var connectionString = _dbContext.BuildAzureConnectionString(server, databaseName, userName, password);
|
||||
Assert.AreEqual(connectionString, "Server=tcp:MyServer.database.windows.net,1433;Database=MyDatabase;User ID=MyUser@MyServer;Password=MyPassword");
|
||||
}
|
||||
|
||||
[TestCase("tcp:kzeej5z8ty.ssmsawacluster4.windowsazure.mscds.com,1433", "MyDatabase", "MyUser", "MyPassword")]
|
||||
[TestCase("tcp:kzeej5z8ty.ssmsawacluster4.windowsazure.mscds.com,1433", "MyDatabase", "MyUser@kzeej5z8ty", "MyPassword")]
|
||||
[TestCase("tcp:kzeej5z8ty.ssmsawacluster4.windowsazure.mscds.com", "MyDatabase", "MyUser", "MyPassword")]
|
||||
[TestCase("tcp:kzeej5z8ty.ssmsawacluster4.windowsazure.mscds.com", "MyDatabase", "MyUser@kzeej5z8ty", "MyPassword")]
|
||||
public void Build_Azure_Connection_String_CustomServer(string server, string databaseName, string userName, string password)
|
||||
{
|
||||
var connectionString = _dbContext.BuildAzureConnectionString(server, databaseName, userName, password);
|
||||
Assert.AreEqual(connectionString, "Server=tcp:kzeej5z8ty.ssmsawacluster4.windowsazure.mscds.com,1433;Database=MyDatabase;User ID=MyUser@kzeej5z8ty;Password=MyPassword");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.PropertyEditors;
|
||||
using Umbraco.Web;
|
||||
@@ -22,6 +24,8 @@ namespace Umbraco.Tests.PublishedContent
|
||||
typeof(YesNoPropertyEditorValueConverter)
|
||||
});
|
||||
|
||||
UmbracoSettings.SettingsFilePath = Core.IO.IOHelper.MapPath(Core.IO.SystemDirectories.Config + Path.DirectorySeparatorChar, false);
|
||||
|
||||
PublishedContentStoreResolver.Current = new PublishedContentStoreResolver(new DefaultPublishedContentStore());
|
||||
|
||||
//need to specify a custom callback for unit tests
|
||||
|
||||
@@ -27,7 +27,6 @@ namespace Umbraco.Tests.Routing
|
||||
return new DefaultRoutesCache(false);
|
||||
}
|
||||
|
||||
|
||||
void InitializeLanguagesAndDomains()
|
||||
{
|
||||
var domains = Domain.GetDomains();
|
||||
|
||||
@@ -121,6 +121,7 @@ namespace Umbraco.Tests.TestHelpers
|
||||
AppDomain.CurrentDomain.SetData("DataDirectory", null);
|
||||
|
||||
PluginManager.Current = null;
|
||||
SettingsForTests.Reset();
|
||||
UmbracoSettings.ResetSetters();
|
||||
|
||||
try
|
||||
@@ -134,8 +135,10 @@ namespace Umbraco.Tests.TestHelpers
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.Error<BaseDatabaseFactoryTest>("Could not remove the old database file", ex);
|
||||
|
||||
|
||||
//We will swallow this exception! That's because a sub class might require further teardown logic.
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,8 +33,7 @@ namespace Umbraco.Tests.TestHelpers
|
||||
string path = TestHelper.CurrentAssemblyDirectory;
|
||||
AppDomain.CurrentDomain.SetData("DataDirectory", path);
|
||||
|
||||
//If the Database Provider is Sql Ce we need to ensure the database
|
||||
if (ProviderName.Contains("SqlServerCe"))
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -54,11 +53,16 @@ namespace Umbraco.Tests.TestHelpers
|
||||
}
|
||||
|
||||
UmbracoSettings.UseLegacyXmlSchema = false;
|
||||
|
||||
//Create the Sql CE database
|
||||
var engine = new SqlCeEngine(ConnectionString);
|
||||
engine.CreateDatabase();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//if this doesn't work we have to make sure everything is reset! otherwise
|
||||
// well run into issues because we've already set some things up
|
||||
TearDown();
|
||||
throw;
|
||||
}
|
||||
|
||||
UmbracoSettings.UseLegacyXmlSchema = false;
|
||||
|
||||
RepositoryResolver.Current = new RepositoryResolver(
|
||||
new RepositoryFactory());
|
||||
|
||||
@@ -52,8 +52,6 @@ namespace Umbraco.Tests.TestHelpers
|
||||
SaveSetting("umbracoReservedPaths");
|
||||
SaveSetting("umbracoReservedUrls");
|
||||
SaveSetting("umbracoConfigurationStatus");
|
||||
|
||||
SaveSetting(GlobalSettings.UmbracoConnectionName);
|
||||
}
|
||||
|
||||
public static bool HideTopLevelNodeFromPath
|
||||
|
||||
@@ -269,6 +269,7 @@
|
||||
<Compile Include="Templates\MasterPageHelperTests.cs" />
|
||||
<Compile Include="TestHelpers\BaseDatabaseFactoryTest.cs" />
|
||||
<Compile Include="TestHelpers\BaseRoutingTest.cs" />
|
||||
<Compile Include="TestHelpers\SettingsForTests.cs" />
|
||||
<Compile Include="GlobalSettingsTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByAliasTests.cs" />
|
||||
<Compile Include="Routing\ContentFinderByIdTests.cs" />
|
||||
|
||||
@@ -79,7 +79,11 @@
|
||||
</mailSettings>
|
||||
</system.net>
|
||||
|
||||
<connectionStrings />
|
||||
<connectionStrings>
|
||||
<remove name="umbracoDbDSN"/>
|
||||
<add name="umbracoDbDSN" connectionString="" providerName="" />
|
||||
<!-- Important: If you're upgrading Umbraco, do not clear the connection string / provider name during your web.config merge. -->
|
||||
</connectionStrings>
|
||||
|
||||
<system.web>
|
||||
<customErrors mode="RemoteOnly" />
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Umbraco.Core.Services;
|
||||
using umbraco.businesslogic;
|
||||
@@ -57,7 +58,7 @@ function openNodeType(id) {
|
||||
|
||||
public override void Render(ref XmlTree tree)
|
||||
{
|
||||
var docTypes = Service.GetContentTypeChildren(base.m_id);
|
||||
var docTypes = Service.GetContentTypeChildren(base.m_id).OrderBy(x => x.Name);
|
||||
|
||||
foreach (var docType in docTypes)
|
||||
{
|
||||
|
||||
@@ -153,7 +153,7 @@ namespace umbraco.providers.members {
|
||||
if (m.getProperty(spv.Name) != null)
|
||||
m.getProperty(spv.Name).Value = spv.PropertyValue;
|
||||
}
|
||||
|
||||
m.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user