1 /* @(#) $Id: manage_keys.c,v 1.20 2009/08/05 18:02:13 dcid Exp $ */
3 /* Copyright (C) 2009 Trend Micro Inc.
6 * This program is a free software; you can redistribute it
7 * and/or modify it under the terms of the GNU General Public
8 * License (version 3) as published by the FSF - Free Software
11 * License details at the LICENSE file included with OSSEC or
12 * online at: http://www.ossec.net/en/licensing.html
16 #include "manage_agents.h"
19 /* b64 function prototypes */
20 char *decode_base64(const char *src);
21 char *encode_base64(int size, char *src);
25 int k_import(char *cmdimport)
31 char *name; char *ip; char *tmp_key;
33 char line_read[FILE_SIZE +1];
36 /* Parsing user argument. */
39 user_input = cmdimport;
45 user_input = read_from_user();
50 if(strcmp(user_input, QUIT) == 0)
53 b64_dec = decode_base64(user_input);
63 memset(line_read, '\0', FILE_SIZE +1);
64 strncpy(line_read, b64_dec, FILE_SIZE);
67 name = strchr(b64_dec, ' ');
68 if(name && strlen(line_read) < FILE_SIZE)
72 ip = strchr(name, ' ');
78 tmp_key = strchr(ip, ' ');
87 printf(AGENT_INFO, b64_dec, name, ip);
94 user_input = read_from_user();
96 if(user_input[0] == 'y' || user_input[0] == 'Y')
98 fp = fopen(KEYS_FILE,"w");
101 ErrorExit(FOPEN_ERROR, ARGV0, KEYS_FILE);
103 fprintf(fp,"%s\n",line_read);
106 chmod(KEYS_FILE, 0440);
109 /* Removing sender counter. */
110 OS_RemoveCounter("sender");
115 restart_necessary = 1;
118 else if(user_input[0] == 'n' || user_input[0] == 'N')
120 printf("%s", ADD_NOT);
135 /* extract base64 for a specific agent */
136 int k_extract(char *cmdextract)
141 char line_read[FILE_SIZE +1];
142 char n_id[USER_SIZE +1];
147 user_input = cmdextract;
149 if(!IDExist(user_input))
151 printf(NO_ID, user_input);
158 if(!print_agents(0, 0, 0))
170 user_input = read_from_user();
173 if(strcmp(user_input, QUIT) == 0)
176 if(!IDExist(user_input))
177 printf(NO_ID, user_input);
179 } while(!IDExist(user_input));
183 /* Trying to open the auth file */
184 fp = fopen(AUTH_FILE, "r");
187 ErrorExit(FOPEN_ERROR, ARGV0, AUTH_FILE);
190 fsetpos(fp, &fp_pos);
192 memset(n_id, '\0', USER_SIZE +1);
193 strncpy(n_id, user_input, USER_SIZE -1);
196 if(fgets(line_read, FILE_SIZE, fp) == NULL)
205 b64_enc = encode_base64(strlen(line_read),line_read);
208 printf(EXTRACT_ERROR);
213 printf(EXTRACT_MSG, n_id, b64_enc);
216 printf("\n" PRESS_ENTER);