Переглянути джерело

(Logical change 1.52)

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@160 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 21 роки тому
батько
коміт
57969a835f
1 змінених файлів з 33 додано та 3 видалено
  1. 33 3
      exec/main.c

+ 33 - 3
exec/main.c

@@ -642,6 +642,31 @@ static void aisexec_mlockall (void)
 	};
 }
 
+void aisexec_keyread (unsigned char *key)
+{
+	int fd;
+	int res;
+
+	fd = open ("/etc/ais/authkey", O_RDONLY);
+	if (fd == -1) {
+		log_printf (LOG_LEVEL_ERROR, "Could not open /etc/ais/authkey: %s\n", strerror (errno));
+		ais_done (1);
+	}
+	res = read (fd, key, 128);
+	if (res == -1) {
+		log_printf (LOG_LEVEL_ERROR, "Could not read /etc/ais/authkey: %s\n", strerror (errno));
+		ais_done (1);
+	}
+	if (res != 128) {
+		log_printf (LOG_LEVEL_ERROR, "Could only read %d bits of 1024 bits from /etc/ais/authkey.\n", res * 8);
+		ais_done (1);
+	}
+
+	close (fd);
+}
+
+
+
 int main (int argc, char **argv)
 {
 	int libais_server_fd;
@@ -649,7 +674,7 @@ int main (int argc, char **argv)
 	struct sockaddr_in sockaddr_in_mcast;
 	struct sockaddr_in sockaddr_in_bindnet;
 	gmi_join_handle handle;
-
+	unsigned char private_key[128];
 
 	char *error_string;
 
@@ -685,10 +710,15 @@ int main (int argc, char **argv)
 
 	aisexec_mlockall ();
 
+	aisexec_keyread (private_key);
+
 	gmi_log_printf_init (internal_log_printf_checkdebug,
-		LOG_LEVEL_ERROR, LOG_LEVEL_WARNING, LOG_LEVEL_NOTICE, LOG_LEVEL_DEBUG);
+		LOG_LEVEL_SECURITY, LOG_LEVEL_ERROR, LOG_LEVEL_WARNING,
+		LOG_LEVEL_NOTICE, LOG_LEVEL_DEBUG);
 	gmi_init (&sockaddr_in_mcast, &sockaddr_in_bindnet,
-		&aisexec_poll_handle, &this_ip);
+		&aisexec_poll_handle, &this_ip,
+		private_key,
+		sizeof (private_key));
 	
 	/*
 	 * Drop root privleges to user 'ais'