HackSystem.Intermediary.Abstractions
                              
                            
                                1.0.0.5
                            
                        
                    dotnet add package HackSystem.Intermediary.Abstractions --version 1.0.0.5
NuGet\Install-Package HackSystem.Intermediary.Abstractions -Version 1.0.0.5
<PackageReference Include="HackSystem.Intermediary.Abstractions" Version="1.0.0.5" />
<PackageVersion Include="HackSystem.Intermediary.Abstractions" Version="1.0.0.5" />
<PackageReference Include="HackSystem.Intermediary.Abstractions" />
paket add HackSystem.Intermediary.Abstractions --version 1.0.0.5
#r "nuget: HackSystem.Intermediary.Abstractions, 1.0.0.5"
#:package HackSystem.Intermediary.Abstractions@1.0.0.5
#addin nuget:?package=HackSystem.Intermediary.Abstractions&version=1.0.0.5
#tool nuget:?package=HackSystem.Intermediary.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 project- HackSystem.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 of- HackSystem.WebAPIproject's- appsettings.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- MediatR (>= 9.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
 
NuGet packages (5)
Showing the top 5 NuGet packages that depend on HackSystem.Intermediary.Abstractions:
| Package | Downloads | 
|---|---|
| HackSystem.Intermediary Intermediary component of Hack System. | |
| HackSystem.Web.Component.Abstractions Web Component Abstractions component of Hack System. | |
| HackSystem.Web.ProgramPlatform.Abstractions Web Program Platform abstraction component of Hack System. | |
| HackSystem.Web.ProgramPlatform Web Program Platform component of Hack System. | |
| HackSystem.Web.ProgramSchedule.Abstractions Program Schedule Abstractions component of Hack System. | 
GitHub repositories
This package is not used by any popular GitHub repositories.