@@ -37,6 +37,34 @@ def get_release():
37
37
except (FileNotFoundError , KeyError ):
38
38
return "NA" # Default: not available
39
39
40
+ class SecretFileValue (values .Value ):
41
+ file_suffix = 'FILE'
42
+
43
+ def setup (self , name ):
44
+ value = self .default
45
+ if self .environ :
46
+ full_environ_name = self .full_environ_name (name )
47
+ full_environ_name_file = f'{ full_environ_name } _{ self .file_suffix } '
48
+ if full_environ_name_file in os .environ :
49
+ filename = os .environ [full_environ_name_file ]
50
+ if not os .path .exists (filename ):
51
+ raise ValueError ('Path {0!r} does not exist.' .format (filename ))
52
+ try :
53
+ file = open (filename , 'r' )
54
+ value = self .to_python (file .read ().removesuffix ("\n " ))
55
+ file .close ()
56
+ except :
57
+ raise ValueError ('Path {0!r} cannot be read.' .format (filename ))
58
+ elif full_environ_name in os .environ :
59
+ value = self .to_python (os .environ [full_environ_name ])
60
+ elif self .environ_required :
61
+ raise ValueError ('Value {0!r} is required to be set as the '
62
+ 'environment variable {1!r} or {2!r}'
63
+ .format (name , full_environ_name_file , full_environ_name ))
64
+ self .value = value
65
+ return value
66
+
67
+
40
68
41
69
class Base (Configuration ):
42
70
"""
@@ -65,7 +93,7 @@ class Base(Configuration):
65
93
66
94
# Security
67
95
ALLOWED_HOSTS = values .ListValue ([])
68
- SECRET_KEY = values . Value (None )
96
+ SECRET_KEY = SecretFileValue (None )
69
97
SERVER_TO_SERVER_API_TOKENS = values .ListValue ([])
70
98
71
99
# Application definition
@@ -84,7 +112,7 @@ class Base(Configuration):
84
112
"impress" , environ_name = "DB_NAME" , environ_prefix = None
85
113
),
86
114
"USER" : values .Value ("dinum" , environ_name = "DB_USER" , environ_prefix = None ),
87
- "PASSWORD" : values . Value (
115
+ "PASSWORD" : SecretFileValue (
88
116
"pass" , environ_name = "DB_PASSWORD" , environ_prefix = None
89
117
),
90
118
"HOST" : values .Value (
@@ -122,10 +150,10 @@ class Base(Configuration):
122
150
AWS_S3_ENDPOINT_URL = values .Value (
123
151
environ_name = "AWS_S3_ENDPOINT_URL" , environ_prefix = None
124
152
)
125
- AWS_S3_ACCESS_KEY_ID = values . Value (
153
+ AWS_S3_ACCESS_KEY_ID = SecretFileValue (
126
154
environ_name = "AWS_S3_ACCESS_KEY_ID" , environ_prefix = None
127
155
)
128
- AWS_S3_SECRET_ACCESS_KEY = values . Value (
156
+ AWS_S3_SECRET_ACCESS_KEY = SecretFileValue (
129
157
environ_name = "AWS_S3_SECRET_ACCESS_KEY" , environ_prefix = None
130
158
)
131
159
AWS_S3_REGION_NAME = values .Value (
@@ -378,7 +406,7 @@ class Base(Configuration):
378
406
EMAIL_BRAND_NAME = values .Value (None )
379
407
EMAIL_HOST = values .Value (None )
380
408
EMAIL_HOST_USER = values .Value (None )
381
- EMAIL_HOST_PASSWORD = values . Value (None )
409
+ EMAIL_HOST_PASSWORD = SecretFileValue (None )
382
410
EMAIL_LOGO_IMG = values .Value (None )
383
411
EMAIL_PORT = values .PositiveIntegerValue (None )
384
412
EMAIL_USE_TLS = values .BooleanValue (False )
@@ -401,7 +429,7 @@ class Base(Configuration):
401
429
COLLABORATION_API_URL = values .Value (
402
430
None , environ_name = "COLLABORATION_API_URL" , environ_prefix = None
403
431
)
404
- COLLABORATION_SERVER_SECRET = values . Value (
432
+ COLLABORATION_SERVER_SECRET = SecretFileValue (
405
433
None , environ_name = "COLLABORATION_SERVER_SECRET" , environ_prefix = None
406
434
)
407
435
COLLABORATION_WS_URL = values .Value (
@@ -470,7 +498,7 @@ class Base(Configuration):
470
498
OIDC_RP_CLIENT_ID = values .Value (
471
499
"impress" , environ_name = "OIDC_RP_CLIENT_ID" , environ_prefix = None
472
500
)
473
- OIDC_RP_CLIENT_SECRET = values . Value (
501
+ OIDC_RP_CLIENT_SECRET = SecretFileValue (
474
502
None ,
475
503
environ_name = "OIDC_RP_CLIENT_SECRET" ,
476
504
environ_prefix = None ,
@@ -565,7 +593,7 @@ class Base(Configuration):
565
593
AI_FEATURE_ENABLED = values .BooleanValue (
566
594
default = False , environ_name = "AI_FEATURE_ENABLED" , environ_prefix = None
567
595
)
568
- AI_API_KEY = values . Value (None , environ_name = "AI_API_KEY" , environ_prefix = None )
596
+ AI_API_KEY = SecretFileValue (None , environ_name = "AI_API_KEY" , environ_prefix = None )
569
597
AI_BASE_URL = values .Value (None , environ_name = "AI_BASE_URL" , environ_prefix = None )
570
598
AI_MODEL = values .Value (None , environ_name = "AI_MODEL" , environ_prefix = None )
571
599
AI_ALLOW_REACH_FROM = values .Value (
@@ -586,7 +614,7 @@ class Base(Configuration):
586
614
}
587
615
588
616
# Y provider microservice
589
- Y_PROVIDER_API_KEY = values . Value (
617
+ Y_PROVIDER_API_KEY = SecretFileValue (
590
618
environ_name = "Y_PROVIDER_API_KEY" ,
591
619
environ_prefix = None ,
592
620
)
0 commit comments