HackSystem.Web.ProgramPlatform.Abstractions
1.0.0.5
dotnet add package HackSystem.Web.ProgramPlatform.Abstractions --version 1.0.0.5
NuGet\Install-Package HackSystem.Web.ProgramPlatform.Abstractions -Version 1.0.0.5
<PackageReference Include="HackSystem.Web.ProgramPlatform.Abstractions" Version="1.0.0.5" />
<PackageVersion Include="HackSystem.Web.ProgramPlatform.Abstractions" Version="1.0.0.5" />
<PackageReference Include="HackSystem.Web.ProgramPlatform.Abstractions" />
paket add HackSystem.Web.ProgramPlatform.Abstractions --version 1.0.0.5
#r "nuget: HackSystem.Web.ProgramPlatform.Abstractions, 1.0.0.5"
#addin nuget:?package=HackSystem.Web.ProgramPlatform.Abstractions&version=1.0.0.5
#tool nuget:?package=HackSystem.Web.ProgramPlatform.Abstractions&version=1.0.0.5
HackSystem
<p align="center"> <img src="https://raw.github.com/CuteLeon/HackSystem/master/src/HackSystem.Web/wwwroot/LogoImage.png" align="center"/> <h2 align="center">Hack System</h2> <p align="center">A Hack System based on ASP.NET Core and Blazor WebAssembly.</p> <p align="center">Design and implement your program and Execute it in Hack System!</p> </p>
Status
<p align="center"> <a href="https://github.com/CuteLeon/HackSystem/actions/workflows/dotnet-core.yml"> <img border="0" src="https://github.com/CuteLeon/HackSystem/workflows/.Net%20Build/badge.svg" /> </a> <a href="https://github.com/CuteLeon/HackSystem/blob/master/LICENSE"> <img border="0" src="https://img.shields.io/github/license/CuteLeon/HackSystem" /> </a> <a href="https://github.com/CuteLeon/HackSystem/search?l=c%23"> <img border="0" src="https://img.shields.io/github/languages/top/CuteLeon/HackSystem" /> </a> <a href="https://github.com/CuteLeon/HackSystem"> <img border="0" src="https://img.shields.io/github/directory-file-count/CuteLeon/HackSystem" /> </a> <a href="https://github.com/CuteLeon/HackSystem/archive/refs/heads/master.zip"> <img border="0" src="https://img.shields.io/github/repo-size/CuteLeon/HackSystem" /> </a> <a href="https://github.com/CuteLeon/HackSystem/issues?q=is%3Aopen+is%3Aissue"> <img border="0" src="https://img.shields.io/github/issues/CuteLeon/HackSystem" /> </a> <a href="https://github.com/CuteLeon/HackSystem/network/members"> <img border="0" src="https://img.shields.io/github/forks/CuteLeon/HackSystem" /> </a> <a href="https://github.com/CuteLeon/HackSystem/stargazers"> <img border="0" src="https://img.shields.io/github/stars/CuteLeon/HackSystem" /> </a> <a href="https://github.com/CuteLeon/HackSystem/watchers"> <img border="0" src="https://img.shields.io/github/watchers/CuteLeon/HackSystem" /> </a> <a href="https://github.com/CuteLeon/HackSystem/releases"> <img border="0" src="https://img.shields.io/github/v/release/CuteLeon/HackSystem?include_prereleases" /> </a> <a href="https://github.com/CuteLeon/HackSystem/releases"> <img border="0" src="https://img.shields.io/github/release-date-pre/CuteLeon/HackSystem" /> </a> <a href="https://github.com/CuteLeon/HackSystem/archive/refs/heads/master.zip"> <img border="0" src="https://img.shields.io/github/downloads/CuteLeon/HackSystem/total" /> </a> <a href="https://github.com/CuteLeon/HackSystem/tags"> <img border="0" src="https://img.shields.io/github/v/tag/CuteLeon/HackSystem" /> </a> <a href="https://github.com/CuteLeon/HackSystem/releases"> <img border="0" src="https://img.shields.io/github/commits-since/CuteLeon/HackSystem/latest/master?include_prereleases" /> </a> <a href="https://github.com/CuteLeon/HackSystem/commits/master"> <img border="0" src="https://img.shields.io/github/last-commit/CuteLeon/HackSystem/master" /> </a> </p>
Nuget Packages
<p align="center"> <a href="https://www.nuget.org/packages/HackSystem.Intermediary/"> <img border="0" src="https://img.shields.io/nuget/vpre/HackSystem.Intermediary?label=HackSystem.Intermediary&style=flat-square" /> </a> <a href="https://www.nuget.org/packages/HackSystem.Intermediary.Abstractions/"> <img border="0" src="https://img.shields.io/nuget/vpre/HackSystem.Intermediary.Abstractions?label=HackSystem.Intermediary.Abstractions&style=flat-square" /> </a> <a href="https://www.nuget.org/packages/HackSystem.Web.Authentication.Abstractions/"> <img border="0" src="https://img.shields.io/nuget/vpre/HackSystem.Web.Authentication.Abstractions?label=HackSystem.Web.Authentication.Abstractions&style=flat-square" /> </a> <a href="https://www.nuget.org/packages/HackSystem.Web.Component.Abstractions/"> <img border="0" src="https://img.shields.io/nuget/vpre/HackSystem.Web.Component.Abstractions?label=HackSystem.Web.Component.Abstractions&style=flat-square" /> </a> <a href="https://www.nuget.org/packages/HackSystem.Web.CookieStorage/"> <img border="0" src="https://img.shields.io/nuget/vpre/HackSystem.Web.CookieStorage?label=HackSystem.Web.CookieStorage&style=flat-square" /> </a> <a href="https://www.nuget.org/packages/HackSystem.Web.ProgramPlatform/"> <img border="0" src="https://img.shields.io/nuget/vpre/HackSystem.Web.ProgramPlatform?label=HackSystem.Web.ProgramPlatform&style=flat-square" /> </a> <a href="https://www.nuget.org/packages/HackSystem.Web.ProgramPlatform.Abstractions/"> <img border="0" src="https://img.shields.io/nuget/vpre/HackSystem.Web.ProgramPlatform.Abstractions?label=HackSystem.Web.ProgramPlatform.Abstractions&style=flat-square" /> </a> <a href="https://www.nuget.org/packages/HackSystem.Web.ProgramSchedule.Abstractions/"> <img border="0" src="https://img.shields.io/nuget/vpre/HackSystem.Web.ProgramSchedule.Abstractions?label=HackSystem.Web.ProgramSchedule.Abstractions&style=flat-square" /> </a> </p>
How to launch?
- Install .Net 6.0 SDK.
- Download source code and open in Visual Studio 2019 (16.8+).
- Set
HackSystem.WebHost
andHackSystem.WebAPI
as startup projects. - Press F5 to run.
- Navigate to https://localhost:2473
- Enjoy it.
How to deploy?
- Edit
hosting.json
file ofHackSystem.WebHost
andHackSystem.WebAPI
projects to config the port to listen. - Edit
wwwroot/appsettings.json
file ofHackSystem.Web
so thatAPIConfiguration.APIURL
equalsurls
ofHackSystem.WebHost
to config the address of Web API. - Edit
JwtConfiguration
section ofHackSystem.WebAPI
project'sappsettings.json
, it is Important for security! - Publish
HackSystem.WebHost
andHackSystem.WebAPI
projects.HackSystem.WebHost
is just a fake host of core projectHackSystem.Web
.
- Navigate to Hack System:
- Open browser and navigate to the address which you just configured for
HackSystem.WebHost
. - Or you can use the
HackSystem.Host
project to visit Hack System.- Before you launch
HackSystem.Host
, editHostConfigs.json
file so thatRemoteURL
equals the address which you just configured forHackSystem.WebHost
. - Just run
HackSystem.Host.exe
.
- Before you launch
- Open browser and navigate to the address which you just configured for
- Enjoy it.
How to develop customized programs
Something may change with platform developing.
Create a new Razor Class Library project.
Install above nuget pakcages to this project.
Add a new image file named as Index.png in root folder of this project, and copy to output directory if newer.
Create a new Razor Component as entry component, and inherits ProgramComponentBase class.
- Design and Implement it.
Create a new static Launcher class and return the type of entry component from static Launch method.
-
public static class Launcher { // Launch Parameter is not mandatory. public static Type Launch(LaunchParameter parameter) { return typeof(TaskSchedulerComponent); } }
-
How to deploy customized programs
Something may change with platform developing.
Insert a new record in database of new program.
-
INSERT INTO ProgramDetails (Id,Name,Enabled,SingleInstance,EntryAssemblyName,EntryTypeName,EntryParameter,Mandatory) VALUES ('program0-icon-0828-hack-system000006','TaskServer',1,1,'HackSystem.Web.TaskSchedule','HackSystem.Web.TaskSchedule.Launcher','{ "Developer": "Leon" }',1);
-
Edit
ProgramAssetConfiguration
section ofHackSystem.WebAPI
project'sappsettings.json
to config program asset folder path.Create new filder named as new program ID in program asset folder.
Build program project and copy all files into above folder.
- Post-build event to copy program files into WebAPI's out directory automatically.
set assetFolder=$(SolutionDir)HackSystem.WebAPI\$(OutDir)ProgramAssets\ MKDIR assetFolder set assetFolder=%assetFolder%program0-icon-0828-hack-system000006\ MKDIR assetFolder XCOPY $(TargetDir)* %assetFolder% /Y /S /H
- Post-build event to copy program files into WebAPI's out directory automatically.
Insert a new record in database to map releationship between user and program.
-
INSERT INTO UserProgramMaps (UserId,ProgramId,PinToDesktop,PinToDock,PinToTop,"Rename") VALUES ('msaspnet-core-user-hack-system000001','program0-icon-0828-hack-system000006',1,0,0,NULL);
-
Launch Hack System and login above user, should see the new program launch and enjoy it.
Video
Click image below to watch video.
Main Desktop (2020-09-27)
<p align="center"> <a href="https://www.bilibili.com/video/BV1di4y177TH/"> <img border="0" src="https://raw.github.com/CuteLeon/HackSystem/master/readme/VideoSplash.jpg" /> </a> </p>
Multiple Windows Scheduler (2021-10-24)
<p align="center"> <a href="https://www.bilibili.com/video/BV16r4y117Fz/"> <img border="0" src="https://raw.github.com/CuteLeon/HackSystem/master/readme/MultipleWindowsScheduler.jpg" /> </a> </p>
Screen
Start Up
Register
Login
Desktop Demo
Task Scheduler
Database Migration
Setup
- Select
HackSystem.WebAPI
as Startup project; - Open Package Manager Console in Visual Studio;
- Select
HackSystem.WebAPI.Infrastructure
as Default project in Package Manager Console; - Input commands and execute;
Commands
Command | Description |
---|---|
Get-Help entityframework | Displays information about entity framework commands. |
Add-Migration | Creates a migration by adding a migration snapshot. |
Remove-Migration | Removes the last migration snapshot. |
Update-Database | Updates the database schema based on the last migration snapshot. |
Script-Migration | Generates a SQL script using all the migration snapshots. |
Scaffold-DbContext | Generates a DbContext and entity type classes for a specified database. This is called reverse engineering. |
Get-DbContext | Gets information about a DbContext type. |
Drop-Database | Drops the database. |
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net6.0
- HackSystem.Intermediary.Abstractions (>= 1.0.0.5)
- HackSystem.Web.Component.Abstractions (>= 1.0.0.5)
- HackSystem.Web.ProgramSchedule.Abstractions (>= 1.0.0.5)
- Microsoft.AspNetCore.Components (>= 6.0.0)
- Microsoft.AspNetCore.Components.WebAssembly (>= 6.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on HackSystem.Web.ProgramPlatform.Abstractions:
Package | Downloads |
---|---|
HackSystem.Web.ProgramPlatform
Web Program Platform component of Hack System. |
GitHub repositories
This package is not used by any popular GitHub repositories.