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"
#:package 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.WebHostandHackSystem.WebAPIas startup projects. - Press F5 to run.
- Navigate to https://localhost:2473
- Enjoy it.
How to deploy?
- Edit
hosting.jsonfile ofHackSystem.WebHostandHackSystem.WebAPIprojects to config the port to listen. - Edit
wwwroot/appsettings.jsonfile ofHackSystem.Webso thatAPIConfiguration.APIURLequalsurlsofHackSystem.WebHostto config the address of Web API. - Edit
JwtConfigurationsection ofHackSystem.WebAPIproject'sappsettings.json, it is Important for security! - Publish
HackSystem.WebHostandHackSystem.WebAPIprojects.HackSystem.WebHostis 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.Hostproject to visit Hack System.- Before you launch
HackSystem.Host, editHostConfigs.jsonfile so thatRemoteURLequals 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
ProgramAssetConfigurationsection ofHackSystem.WebAPIproject'sappsettings.jsonto 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.WebAPIas Startup project; - Open Package Manager Console in Visual Studio;
- Select
HackSystem.WebAPI.Infrastructureas 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. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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.