Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
929ae02
Add .NET SDK build infrastructure and untrack IDE files
gfraiteur Sep 17, 2026
0f1bf80
Rename project folders ahead of the .NET 10 migration
gfraiteur Sep 17, 2026
fc9705e
Port the licensing engine to .NET 10 and EF Core
gfraiteur Sep 17, 2026
864b26f
Cover the licensing rules with tests
gfraiteur Sep 17, 2026
a50ba05
Replace the WebForms front end with Razor Pages
gfraiteur Sep 17, 2026
f0033bd
Make the database engine selectable and test the application end to end
gfraiteur Sep 17, 2026
da6b975
Package the release, port the simulator and document the upgrade
gfraiteur Sep 17, 2026
aa4f530
Hold the model to the schema existing installations already have
gfraiteur Sep 17, 2026
1337f49
Apply the PostSharp brand to the license server
gfraiteur Sep 17, 2026
5edfba5
Make the license server run away from Windows
gfraiteur Sep 17, 2026
0be4f7f
Address the review findings
gfraiteur Sep 17, 2026
8ffb841
Hash the names written to the slow-request log
gfraiteur Sep 17, 2026
e544dd2
Revert "Hash the names written to the slow-request log"
gfraiteur Sep 17, 2026
20febb7
Rename the projects after the product they become
gfraiteur Sep 17, 2026
68a5b7a
Rename the product to SharpCrafters.Backstage.LicenseServer
gfraiteur Sep 17, 2026
0a1011c
Build the license server with PostSharp.Engineering
gfraiteur Sep 17, 2026
05ceefd
Parse license keys with SharpCrafters.Backstage
gfraiteur Sep 17, 2026
d14c29e
Make the container image carry the release archive
gfraiteur Sep 17, 2026
9f069f2
Sign only the assemblies of this product in the release archive
gfraiteur Sep 17, 2026
4bee8d7
Sign the test license keys with the Backstage test authority
gfraiteur Sep 17, 2026
1c36bd0
Link the signature key workaround to the issue it works around
gfraiteur Sep 17, 2026
b16f68c
Let a development server accept a test licensing authority
gfraiteur Sep 17, 2026
3993894
Fix the two failures an accelerated simulation found
gfraiteur Sep 17, 2026
6f83755
Document the license server protocol
gfraiteur Sep 17, 2026
984704a
Draw the usage graph in users rather than in seats
gfraiteur Sep 17, 2026
6f4aad3
Define the seat and count it from machines rather than from leases
gfraiteur Sep 17, 2026
a4c241a
State on the details page what a seat is
gfraiteur Sep 17, 2026
424e4bb
Sample the series as lines in the chart legend
gfraiteur Sep 17, 2026
c2ce400
Rewrite the definition of a seat
gfraiteur Sep 17, 2026
fb26834
Stop the manage panel from rendering as an empty box
gfraiteur Sep 17, 2026
6444349
Answer the review on the two documents
gfraiteur Sep 17, 2026
6404354
Make the container a deployment, and keep its data out of it
gfraiteur Sep 17, 2026
474780e
Put the management actions in a menu, behind a confirmation
gfraiteur Sep 17, 2026
70de594
Add a health endpoint and a version endpoint
gfraiteur Sep 17, 2026
aeaf8b0
Rewrite the prose against the copywriting rules
gfraiteur Sep 18, 2026
da77f1b
Remove the signature of the audit log
gfraiteur Sep 18, 2026
ab6f85d
Answer the review on the configuration document
gfraiteur Sep 18, 2026
97cc811
Take the lease lock in the database, and test on SQL Server
gfraiteur Sep 18, 2026
aacc0c8
Support PostgreSQL
gfraiteur Sep 18, 2026
c1413f7
Answer the review
gfraiteur Sep 18, 2026
cbb8964
Write explicit constructors, and wire the shared code style
gfraiteur Sep 18, 2026
d40cad2
Reformat the code with the shared style, and add the license
gfraiteur Sep 18, 2026
0c04278
Put one type in one file, and hold the distribution open while the te…
gfraiteur Sep 18, 2026
39f2fc8
Move the database tests to the Docker test harness
gfraiteur Sep 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .claude/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"version": "0.0.1",
"configurations": [
{
"name": "SharpCrafters.Backstage.LicenseServer",
"runtimeExecutable": "dotnet",
"runtimeArgs": ["run", "--project", "src/SharpCrafters.Backstage.LicenseServer.Web"],
"port": 44670,
"url": "http://localhost:44670"
},
{
"name": "SharpCrafters.Backstage.LicenseServer (accelerated)",
"runtimeExecutable": "dotnet",
"runtimeArgs": [
"run",
"--project",
"src/SharpCrafters.Backstage.LicenseServer.Web",
"--",
"--LicenseServer:TimeAcceleration=1440",
"--LicenseServer:BuildServers=server",
"--Authentication:Scheme=None"
],
"port": 44670,
"url": "http://localhost:44670"
}
]
}
19 changes: 19 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
**/bin
**/obj
**/.vs
.git
.idea
.teamcity
eng
src
tests
docs
packages
*.db
*.db-shm
*.db-wal
App_Data

# Everything the build produces, except the unpacked release archive, which is what the image runs.
artifacts/*
!artifacts/app
1 change: 1 addition & 0 deletions .editorconfig
26 changes: 26 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Normalize line endings, so that the repository is the same on every platform.
* text=auto

*.cs text diff=csharp
*.cshtml text
*.csproj text
*.props text
*.slnx text
*.json text
*.md text
*.css text
*.js text
*.sql text
*.ps1 text eol=crlf

# The launcher of the Docker tests is generated with Unix line endings by `Build.ps1 generate-scripts`. Without
# this line the rule above rewrites the whole file at every regeneration.
eng/RunDockerTests.ps1 text eol=lf
*.sh text eol=lf
Dockerfile text eol=lf
*.yml text eol=lf

*.png binary
*.ico binary
*.woff binary
*.woff2 binary
26 changes: 26 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,34 @@
/packages
/artifacts
/*.suo
bin
obj
/.build
**/.vs
.idea/
*.slnLaunch.user
*.csproj.user
*.DotSettings.user
*.db
*.db-shm
*.db-wal
# The directory the server writes its own files to. It holds the key pair of the test licensing
# authority, which a development server signs its own license keys with. The pattern is not anchored,
# because the directory is created next to whichever project is being run.
App_Data/

# Generated by PostSharp.Engineering. `./Build.ps1 prepare` writes them from the product definition
# and from the resolved dependencies, so they carry machine-local paths and must not be committed.
global.json
nuget.config
*.g.props
*.g.ps1
*.g.json
*.Import.props
/source-dependencies/
/eng/tools/
/.config/dotnet-tools.json

# The local tool manifest that `Build.ps1 codestyle format` writes when it installs the JetBrains
# command line tools. It pins a version per machine and is not part of the product.
/dotnet-tools.json
13 changes: 0 additions & 13 deletions .idea/.idea.PostSharp.LicenseServer/.idea/.gitignore

This file was deleted.

4 changes: 0 additions & 4 deletions .idea/.idea.PostSharp.LicenseServer/.idea/encodings.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/.idea.PostSharp.LicenseServer/.idea/indexLayout.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/.idea.PostSharp.LicenseServer/.idea/vcs.xml

This file was deleted.

Loading
Loading