infisical-license-server/lib/infisical_license_server/api/license_server.rb
Alexander Olofsson 243ed398a0
Initial commit
2026-02-23 18:37:34 +01:00

54 lines
1.9 KiB
Ruby

# frozen_string_literal: true
require 'sinatra/base'
module InfisicalLicenseServer::API
class LicenseServerV1 < Sinatra::Base
# https://github.com/Infisical/infisical/blob/main/backend/src/ee/services/license/licence-enums.ts
HEADERS = %w[Allowed Used].freeze
ROWS = [
{ name: "Organization identity limit", field: "identityLimit" },
{ name: "Project limit", field: "workspaceLimit" },
{ name: "Environment limit", field: "environmentLimit" },
{ name: "Secret versioning", field: "secretVersioning" },
{ name: "Point in time recovery", field: "pitRecovery" },
{ name: "RBAC", field: "rbac" },
{ name: "Custom rate limits", field: "customRateLimits" },
{ name: "Custom alerts", field: "customAlerts" },
{ name: "Audit logs", field: "auditLogs" },
{ name: "SAML SSO", field: "samlSSO" },
{ name: "SSH Host Groups", field: "sshHostGroups" },
{ name: "Hardware Security Module (HSM)", field: "hsm" },
{ name: "OIDC SSO", field: "oidcSSO" },
{ name: "Secret approvals", field: "secretApproval" },
{ name: "Secret rotation", field: "secretRotation" },
{ name: "Instance User Management", field: "instanceUserManagement" },
{ name: "External KMS", field: "externalKms" }
].freeze
configure :development do
require 'sinatra/reloader'
register Sinatra::Reloader
end
enable :logging
get '/customers/on-prem-plan/table' do
auth = request.get_header('HTTP_AUTHORIZATION')
error 401 unless InfisicalLicenseServer.config.auth? auth
plan = InfisicalLicenseServer.config.plan_for(auth)
error 500 unless plan
{
head: HEADERS.map { |head| { name: head } },
rows: ROWS.map do |row|
{
name: row[:name],
allowed: row[:field].end_with?('Limit') ? true : (plan['merged'][row[:field]] || false),
}
end
}.to_json
end
end
end