@@ -46,6 +46,8 @@ mapping :: = MAPPING - START(node node) * MAPPING - END
46
46
#define KEY_CERTIFICATE_AUTHORITY_DATA "certificate-authority-data"
47
47
#define KEY_INSECURE_SKIP_TLS_VERIFY "insecure-skip-tls-verify"
48
48
#define KEY_SERVER "server"
49
+ #define KEY_CLIENT_CERTIFICATE "client-certificate"
50
+ #define KEY_CLIENT_KEY "client-key"
49
51
#define KEY_CLIENT_CERTIFICATE_DATA "client-certificate-data"
50
52
#define KEY_CLIENT_KEY_DATA "client-key-data"
51
53
#define KEY_STAUTS "status"
@@ -55,6 +57,31 @@ mapping :: = MAPPING - START(node node) * MAPPING - END
55
57
56
58
#define VALUE_TRUE_LOWERCASE_STRING "true"
57
59
60
+ static char * load_file_content (const char * path ) {
61
+
62
+ static char fname [] = "load_file_content()" ;
63
+
64
+ char * buffer ;
65
+ FILE * fh = fopen (path , "rb" );
66
+
67
+ if (fh == NULL ) {
68
+ fprintf (stderr , "%s: Cannot parse file path: %s\n" , fname , path );
69
+ return NULL ;
70
+ }
71
+
72
+ fseek (fh , 0L , SEEK_END );
73
+ long s = ftell (fh );
74
+ rewind (fh );
75
+ buffer = malloc (s );
76
+ if ( buffer != NULL )
77
+ {
78
+ fread (buffer , s , 1 , fh );
79
+ }
80
+ fclose (fh );
81
+ fh = NULL ;
82
+ return buffer ;
83
+ }
84
+
58
85
static int parse_kubeconfig_yaml_string_sequence (char * * * p_strings , int * p_strings_count , yaml_document_t * document , yaml_node_t * node )
59
86
{
60
87
static char fname [] = "parse_kubeconfig_yaml_string_sequence()" ;
@@ -193,7 +220,11 @@ static int parse_kubeconfig_yaml_property_mapping(kubeconfig_property_t * proper
193
220
property -> insecure_skip_tls_verify = (0 == strcmp (value -> data .scalar .value , VALUE_TRUE_LOWERCASE_STRING )); //libyaml fails to parse true, but it can parse "true"!
194
221
}
195
222
} else if (KUBECONFIG_PROPERTY_TYPE_USER == property -> type ) {
196
- if (0 == strcmp (key -> data .scalar .value , KEY_CLIENT_CERTIFICATE_DATA )) {
223
+ if (0 == strcmp (key -> data .scalar .value , KEY_CLIENT_CERTIFICATE )) {
224
+ property -> client_certificate_data = load_file_content (value -> data .scalar .value );
225
+ } else if (0 == strcmp (key -> data .scalar .value , KEY_CLIENT_KEY )) {
226
+ property -> client_key_data = load_file_content (value -> data .scalar .value );
227
+ } else if (0 == strcmp (key -> data .scalar .value , KEY_CLIENT_CERTIFICATE_DATA )) {
197
228
property -> client_certificate_data = strdup (value -> data .scalar .value );
198
229
} else if (0 == strcmp (key -> data .scalar .value , KEY_CLIENT_KEY_DATA )) {
199
230
property -> client_key_data = strdup (value -> data .scalar .value );
@@ -1090,3 +1121,4 @@ int kubeyaml_save_kubeconfig(const kubeconfig_t * kubeconfig)
1090
1121
1091
1122
return -1 ;
1092
1123
}
1124
+
0 commit comments