commit
d3f135a9c7
2
.deployment
Normal file
2
.deployment
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
[config]
|
||||||
|
project = Oqtane.Server/Oqtane.Server.csproj
|
|
@ -1,13 +1,13 @@
|
||||||
using System.Reflection;
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
using Microsoft.Extensions.Hosting;
|
using System.Reflection;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using Oqtane.Shared;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using System;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using Microsoft.Extensions.Caching.Memory;
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
using Oqtane.Shared;
|
||||||
|
|
||||||
namespace Oqtane.Infrastructure
|
namespace Oqtane.Infrastructure
|
||||||
{
|
{
|
||||||
|
@ -27,7 +27,7 @@ namespace Oqtane.Infrastructure
|
||||||
public void InstallPackages(string folders, bool restart)
|
public void InstallPackages(string folders, bool restart)
|
||||||
{
|
{
|
||||||
var webRootPath = _environment.WebRootPath;
|
var webRootPath = _environment.WebRootPath;
|
||||||
|
|
||||||
var install = InstallPackages(folders, webRootPath);
|
var install = InstallPackages(folders, webRootPath);
|
||||||
|
|
||||||
if (install && restart)
|
if (install && restart)
|
||||||
|
@ -101,6 +101,11 @@ namespace Oqtane.Infrastructure
|
||||||
filename = Path.Combine(webRootPath, Utilities.PathCombine(entry.FullName.Replace($"wwwroot{Path.DirectorySeparatorChar}", "").Split(Path.DirectorySeparatorChar)));
|
filename = Path.Combine(webRootPath, Utilities.PathCombine(entry.FullName.Replace($"wwwroot{Path.DirectorySeparatorChar}", "").Split(Path.DirectorySeparatorChar)));
|
||||||
ExtractFile(entry, filename);
|
ExtractFile(entry, filename);
|
||||||
break;
|
break;
|
||||||
|
case "runtimes":
|
||||||
|
var destSubFolder = Path.GetDirectoryName(entry.FullName);
|
||||||
|
filename = Path.Combine(binFolder, destSubFolder, filename);
|
||||||
|
ExtractFile(entry, filename);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -121,9 +126,24 @@ namespace Oqtane.Infrastructure
|
||||||
{
|
{
|
||||||
Directory.CreateDirectory(Path.GetDirectoryName(filename));
|
Directory.CreateDirectory(Path.GetDirectoryName(filename));
|
||||||
}
|
}
|
||||||
entry.ExtractToFile(filename, true);
|
if (FileInUse(filename) == false)
|
||||||
|
entry.ExtractToFile(filename, true);
|
||||||
|
}
|
||||||
|
private static bool FileInUse(string path)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate))
|
||||||
|
{
|
||||||
|
var flag = fs.CanWrite;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch (IOException ex)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpgradeFramework()
|
public void UpgradeFramework()
|
||||||
{
|
{
|
||||||
string folder = Path.Combine(_environment.WebRootPath, "Framework");
|
string folder = Path.Combine(_environment.WebRootPath, "Framework");
|
||||||
|
@ -131,7 +151,7 @@ namespace Oqtane.Infrastructure
|
||||||
{
|
{
|
||||||
// get package with highest version and clean up any others
|
// get package with highest version and clean up any others
|
||||||
string packagename = "";
|
string packagename = "";
|
||||||
foreach(string package in Directory.GetFiles(folder, "Oqtane.Framework.*.nupkg"))
|
foreach (string package in Directory.GetFiles(folder, "Oqtane.Framework.*.nupkg"))
|
||||||
{
|
{
|
||||||
if (packagename != "")
|
if (packagename != "")
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
# Oqtane Framework
|
# Oqtane Framework
|
||||||
Oqtane is a Modular Application Framework for Blazor
|
Oqtane is a Modular Application Framework for Blazor
|
||||||
|
|
||||||
|
[](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Foqtane%2Foqtane.framework%2Fmaster%2Fazuredeploy.json)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Oqtane uses Blazor, an open source and cross-platform web UI framework for building single-page apps using .NET and C# instead of JavaScript. Blazor apps are composed of reusable web UI components implemented using C#, HTML, and CSS. Both client and server code is written in C#, allowing you to share code and libraries.
|
Oqtane uses Blazor, an open source and cross-platform web UI framework for building single-page apps using .NET and C# instead of JavaScript. Blazor apps are composed of reusable web UI components implemented using C#, HTML, and CSS. Both client and server code is written in C#, allowing you to share code and libraries.
|
||||||
|
|
197
azuredeploy.json
Normal file
197
azuredeploy.json
Normal file
|
@ -0,0 +1,197 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
||||||
|
"contentVersion": "1.0.0.1",
|
||||||
|
"parameters": {
|
||||||
|
"sqlServerName": {
|
||||||
|
"type": "string",
|
||||||
|
"metadata": {
|
||||||
|
"description": "The name of the sql server. It has to be unique."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"databaseName": {
|
||||||
|
"type": "string",
|
||||||
|
"metadata": {
|
||||||
|
"description": "The name of the sql databaseName. It has to be unique."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sqlAdministratorLogin": {
|
||||||
|
"type": "string",
|
||||||
|
"metadata": {
|
||||||
|
"description": "The admin user of the SQL Server"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sqlAdministratorLoginPassword": {
|
||||||
|
"type": "securestring",
|
||||||
|
"metadata": {
|
||||||
|
"description": "The password of the admin user of the SQL Server"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BlazorWebsiteName": {
|
||||||
|
"type": "string",
|
||||||
|
"metadata": {
|
||||||
|
"description": "The name of the website. It has to be unique."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BlazorSKU": {
|
||||||
|
"type": "string",
|
||||||
|
"allowedValues": [
|
||||||
|
"Free",
|
||||||
|
"Shared",
|
||||||
|
"Basic",
|
||||||
|
"Standard"
|
||||||
|
],
|
||||||
|
"defaultValue": "Standard"
|
||||||
|
},
|
||||||
|
"BlazorWorkerSize": {
|
||||||
|
"type": "string",
|
||||||
|
"allowedValues": [
|
||||||
|
"0",
|
||||||
|
"1",
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"defaultValue": "0"
|
||||||
|
},
|
||||||
|
"location": {
|
||||||
|
"type": "string",
|
||||||
|
"defaultValue": "[resourceGroup().location]",
|
||||||
|
"metadata": {
|
||||||
|
"description": "Location for all resources."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"variables": {
|
||||||
|
"hostingPlanName": "[concat('Oqtane-hostingplan-', uniqueString(resourceGroup().id))]",
|
||||||
|
"databaseEdition": "Standard",
|
||||||
|
"databaseCollation": "SQL_Latin1_General_CP1_CI_AS",
|
||||||
|
"databaseServiceObjectiveName": "Standard"
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"name": "[parameters('sqlServerName')]",
|
||||||
|
"type": "Microsoft.Sql/servers",
|
||||||
|
"apiVersion": "2014-04-01",
|
||||||
|
"location": "[resourceGroup().location]",
|
||||||
|
"tags": {
|
||||||
|
"displayName": "SqlServer"
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"administratorLogin": "[parameters('sqlAdministratorLogin')]",
|
||||||
|
"administratorLoginPassword": "[parameters('sqlAdministratorLoginPassword')]",
|
||||||
|
"version": "12.0"
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"name": "[parameters('databaseName')]",
|
||||||
|
"type": "databases",
|
||||||
|
"apiVersion": "2015-01-01",
|
||||||
|
"location": "[resourceGroup().location]",
|
||||||
|
"tags": {
|
||||||
|
"displayName": "Database"
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"edition": "[variables('databaseEdition')]",
|
||||||
|
"collation": "[variables('databaseCollation')]",
|
||||||
|
"requestedServiceObjectiveName": "[variables('databaseServiceObjectiveName')]"
|
||||||
|
},
|
||||||
|
"dependsOn": [
|
||||||
|
"[parameters('sqlServerName')]"
|
||||||
|
],
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"comments": "Transparent Data Encryption",
|
||||||
|
"name": "current",
|
||||||
|
"type": "transparentDataEncryption",
|
||||||
|
"apiVersion": "2014-04-01-preview",
|
||||||
|
"properties": {
|
||||||
|
"status": "Enabled"
|
||||||
|
},
|
||||||
|
"dependsOn": [
|
||||||
|
"[parameters('databaseName')]"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "AllowAllMicrosoftAzureIps",
|
||||||
|
"type": "firewallrules",
|
||||||
|
"apiVersion": "2014-04-01",
|
||||||
|
"location": "[resourceGroup().location]",
|
||||||
|
"properties": {
|
||||||
|
"endIpAddress": "0.0.0.0",
|
||||||
|
"startIpAddress": "0.0.0.0"
|
||||||
|
},
|
||||||
|
"dependsOn": [
|
||||||
|
"[parameters('sqlServerName')]"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "[variables('hostingPlanName')]",
|
||||||
|
"type": "Microsoft.Web/serverfarms",
|
||||||
|
"location": "[resourceGroup().location]",
|
||||||
|
"apiVersion": "2014-06-01",
|
||||||
|
"dependsOn": [],
|
||||||
|
"tags": {
|
||||||
|
"displayName": "Blazor"
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"name": "[variables('hostingPlanName')]",
|
||||||
|
"sku": "[parameters('BlazorSKU')]",
|
||||||
|
"workerSize": "[parameters('BlazorWorkerSize')]",
|
||||||
|
"numberOfWorkers": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2018-02-01",
|
||||||
|
"name": "[parameters('BlazorWebsiteName')]",
|
||||||
|
"type": "Microsoft.Web/sites",
|
||||||
|
"location": "[parameters('location')]",
|
||||||
|
"dependsOn": [
|
||||||
|
"[variables('hostingPlanName')]"
|
||||||
|
],
|
||||||
|
"tags": {
|
||||||
|
"[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName')))]": "empty",
|
||||||
|
"displayName": "Website"
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"name": "[parameters('BlazorWebsiteName')]",
|
||||||
|
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
|
||||||
|
"siteConfig": {
|
||||||
|
"webSocketsEnabled": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"type": "sourcecontrols",
|
||||||
|
"apiVersion": "2018-02-01",
|
||||||
|
"name": "web",
|
||||||
|
"location": "[parameters('location')]",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Web/sites', parameters('BlazorWebsiteName'))]",
|
||||||
|
"[resourceId('Microsoft.Web/Sites/config', parameters('BlazorWebsiteName'), 'connectionstrings')]"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"RepoUrl": "https://github.com/oqtane/oqtane.framework.git",
|
||||||
|
"branch": "master",
|
||||||
|
"IsManualIntegration": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2018-02-01",
|
||||||
|
"type": "config",
|
||||||
|
"name": "connectionstrings",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Web/sites', parameters('BlazorWebsiteName'))]"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"DefaultConnection": {
|
||||||
|
"value": "[concat('Data Source=tcp:', reference(concat('Microsoft.Sql/servers/', parameters('sqlserverName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('databaseName'), ';User Id=', parameters('sqlAdministratorLogin'), '@', reference(concat('Microsoft.Sql/servers/', parameters('sqlserverName'))).fullyQualifiedDomainName, ';Password=', parameters('sqlAdministratorLoginPassword'), ';')]",
|
||||||
|
"type": "SQLAzure"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user