mirror of
				https://gitea.publichub.eu/oscar.krause/fastapi-dls.git
				synced 2025-11-04 12:56:07 +00:00 
			
		
		
		
	implemented 'LEASE_RENEWAL_PERIOD' variable
This commit is contained in:
		
							
								
								
									
										31
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								README.md
									
									
									
									
									
								
							@@ -282,20 +282,25 @@ After first success you have to replace `--issue` with `--renew`.
 | 
			
		||||
 | 
			
		||||
# Configuration
 | 
			
		||||
 | 
			
		||||
| Variable            | Default                                | Usage                                                                               |
 | 
			
		||||
|---------------------|----------------------------------------|-------------------------------------------------------------------------------------|
 | 
			
		||||
| `DEBUG`             | `false`                                | Toggles `fastapi` debug mode                                                        |
 | 
			
		||||
| `DLS_URL`           | `localhost`                            | Used in client-token to tell guest driver where dls instance is reachable           |
 | 
			
		||||
| `DLS_PORT`          | `443`                                  | Used in client-token to tell guest driver where dls instance is reachable           |
 | 
			
		||||
| `LEASE_EXPIRE_DAYS` | `90`                                   | Lease time in days                                                                  |
 | 
			
		||||
| `DATABASE`          | `sqlite:///db.sqlite`                  | See [official SQLAlchemy docs](https://docs.sqlalchemy.org/en/14/core/engines.html) |
 | 
			
		||||
| `CORS_ORIGINS`      | `https://{DLS_URL}`                    | Sets `Access-Control-Allow-Origin` header (comma separated string) \*               |
 | 
			
		||||
| `SITE_KEY_XID`      | `00000000-0000-0000-0000-000000000000` | Site identification uuid                                                            |
 | 
			
		||||
| `INSTANCE_REF`      | `00000000-0000-0000-0000-000000000000` | Instance identification uuid                                                        |
 | 
			
		||||
| `INSTANCE_KEY_RSA`  | `<app-dir>/cert/instance.private.pem`  | Site-wide private RSA key for singing JWTs                                          |
 | 
			
		||||
| `INSTANCE_KEY_PUB`  | `<app-dir>/cert/instance.public.pem`   | Site-wide public key                                                                |
 | 
			
		||||
| Variable               | Default                                | Usage                                                                                                |
 | 
			
		||||
|------------------------|----------------------------------------|------------------------------------------------------------------------------------------------------|
 | 
			
		||||
| `DEBUG`                | `false`                                | Toggles `fastapi` debug mode                                                                         |
 | 
			
		||||
| `DLS_URL`              | `localhost`                            | Used in client-token to tell guest driver where dls instance is reachable                            |
 | 
			
		||||
| `DLS_PORT`             | `443`                                  | Used in client-token to tell guest driver where dls instance is reachable                            |
 | 
			
		||||
| `LEASE_EXPIRE_DAYS`    | `90`                                   | Lease time in days                                                                                   |
 | 
			
		||||
| `LEASE_RENEWAL_PERIOD` | `0.15`                                 | The percentage of the lease period that must elapse before a licensed client can renew a license \*1 |
 | 
			
		||||
| `DATABASE`             | `sqlite:///db.sqlite`                  | See [official SQLAlchemy docs](https://docs.sqlalchemy.org/en/14/core/engines.html)                  |
 | 
			
		||||
| `CORS_ORIGINS`         | `https://{DLS_URL}`                    | Sets `Access-Control-Allow-Origin` header (comma separated string) \*2                               |
 | 
			
		||||
| `SITE_KEY_XID`         | `00000000-0000-0000-0000-000000000000` | Site identification uuid                                                                             |
 | 
			
		||||
| `INSTANCE_REF`         | `00000000-0000-0000-0000-000000000000` | Instance identification uuid                                                                         |
 | 
			
		||||
| `INSTANCE_KEY_RSA`     | `<app-dir>/cert/instance.private.pem`  | Site-wide private RSA key for singing JWTs                                                           |
 | 
			
		||||
| `INSTANCE_KEY_PUB`     | `<app-dir>/cert/instance.public.pem`   | Site-wide public key                                                                                 |
 | 
			
		||||
 | 
			
		||||
\* Always use `https`, since guest-drivers only support secure connections!
 | 
			
		||||
\*1 For example, if the lease period is one day and the renewal period is 20%, the client attempts to renew its license
 | 
			
		||||
every 4.8 hours. If network connectivity is lost, the loss of connectivity is detected during license renewal and the
 | 
			
		||||
client has 19.2 hours in which to re-establish connectivity before its license expires.
 | 
			
		||||
 | 
			
		||||
\*2 Always use `https`, since guest-drivers only support secure connections!
 | 
			
		||||
 | 
			
		||||
# Setup (Client)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,7 @@ INSTANCE_KEY_RSA = load_key(str(env('INSTANCE_KEY_RSA', join(dirname(__file__),
 | 
			
		||||
INSTANCE_KEY_PUB = load_key(str(env('INSTANCE_KEY_PUB', join(dirname(__file__), 'cert/instance.public.pem'))))
 | 
			
		||||
TOKEN_EXPIRE_DELTA = relativedelta(hours=1)  # days=1
 | 
			
		||||
LEASE_EXPIRE_DELTA = relativedelta(days=int(env('LEASE_EXPIRE_DAYS', 90)))
 | 
			
		||||
LEASE_RENEWAL_PERIOD = float(env('LEASE_RENEWAL_PERIOD', 0.15))
 | 
			
		||||
CORS_ORIGINS = str(env('CORS_ORIGINS', '')).split(',') if (env('CORS_ORIGINS')) else [f'https://{DLS_URL}']
 | 
			
		||||
 | 
			
		||||
jwt_encode_key = jwk.construct(INSTANCE_KEY_RSA.export_key().decode('utf-8'), algorithm=ALGORITHMS.RS256)
 | 
			
		||||
@@ -365,8 +366,7 @@ async def leasing_v1_lessor(request: Request):
 | 
			
		||||
                "ref": scope_ref,
 | 
			
		||||
                "created": cur_time.isoformat(),
 | 
			
		||||
                "expires": expires.isoformat(),
 | 
			
		||||
                # The percentage of the lease period that must elapse before a licensed client can renew a license
 | 
			
		||||
                "recommended_lease_renewal": 0.15,
 | 
			
		||||
                "recommended_lease_renewal": LEASE_RENEWAL_PERIOD,
 | 
			
		||||
                "offline_lease": "true",
 | 
			
		||||
                "license_type": "CONCURRENT_COUNTED_SINGLE"
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user