summaryrefslogtreecommitdiffstats
path: root/seaudit/toplevel.h
diff options
context:
space:
mode:
Diffstat (limited to 'seaudit/toplevel.h')
-rw-r--r--seaudit/toplevel.h263
1 files changed, 263 insertions, 0 deletions
diff --git a/seaudit/toplevel.h b/seaudit/toplevel.h
new file mode 100644
index 0000000..448c8ad
--- /dev/null
+++ b/seaudit/toplevel.h
@@ -0,0 +1,263 @@
+/**
+ * @file
+ * Declaration of the main toplevel window for seaudit.
+ *
+ * @author Jeremy A. Mowery jmowery@tresys.com
+ * @author Jason Tang jtang@tresys.com
+ * @author Jeremy Solt jsolt@tresys.com
+ *
+ * Copyright (C) 2003-2007 Tresys Technology, LLC
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef TOPLEVEL_H
+#define TOPLEVEL_H
+
+typedef struct toplevel toplevel_t;
+
+#include "progress.h"
+#include "seaudit.h"
+#include <apol/policy-path.h>
+#include <gtk/gtk.h>
+#include <seaudit/message.h>
+
+/**
+ * Allocate and return an instance of the toplevel window object.
+ * This will create the window, set up the menus and icons, create an
+ * empty notebook, then display the window.
+ *
+ * @param s Main seaudit object that will control the toplevel.
+ *
+ * @return An initialized toplevel object, or NULL upon error. The
+ * caller must call toplevel_destroy() afterwards.
+ */
+toplevel_t *toplevel_create(seaudit_t * s);
+
+/**
+ * Destroy the toplevel window. This function will recursively
+ * destroy all other windows. This does nothing if the pointer is set
+ * to NULL.
+ *
+ * @param top Reference to a toplevel object. Afterwards the pointer
+ * will be set to NULL.
+ */
+void toplevel_destroy(toplevel_t ** top);
+
+/**
+ * Open a log file, destroying any existing logs and views first.
+ * Afterwards, create a new view for the log.
+ *
+ * @param top Toplevel object, used for UI control.
+ * @param filename Name of the log to open.
+ */
+void toplevel_open_log(toplevel_t * top, const char *filename);
+
+/**
+ * Open a policy file, destroying any existing policies upon success.
+ *
+ * @param top Toplevel object, used for UI control.
+ * @param path Path to the policy to open. This function takes
+ * ownership of this object.
+ *
+ * @return 0 on successful open, < 0 on error.
+ */
+int toplevel_open_policy(toplevel_t * top, apol_policy_path_t * path);
+
+/**
+ * Update the status bar to show the current policy, number of log
+ * messages in the current view, range of messages in current view,
+ * and monitor status.
+ *
+ * @param top Toplevel whose status bar to update.
+ */
+void toplevel_update_status_bar(toplevel_t * top);
+
+/**
+ * Update the menu items whenever a message is selected/deselected.
+ * Certain commands are legal only when one or more messages are
+ * selected.
+ *
+ * @param top Toplevel whose menu to update.
+ */
+void toplevel_update_selection_menu_item(toplevel_t * top);
+
+/**
+ * Update the tab names for all views.
+ *
+ * @param top Toplevel whose notebook tabs to update.
+ */
+void toplevel_update_tabs(toplevel_t * top);
+
+/**
+ * Return the current preferences object for the toplevel object.
+ *
+ * @param top Toplevel containing preferences.
+ *
+ * @return Pointer to a preferences object. Do not free() this pointer.
+ */
+preferences_t *toplevel_get_prefs(toplevel_t * top);
+
+/**
+ * Return a seaudit_log_t object used for error reporting by
+ * libseaudit.
+ *
+ * @param top Toplevel containing seaudit log object.
+ *
+ * @return libseaudit reporting object, or NULL if no log exists yet.
+ * Treat this as a const pointer.
+ */
+seaudit_log_t *toplevel_get_log(toplevel_t * top);
+
+/**
+ * Return a vector of strings corresponding to all users found within
+ * the current log file. The vector will be sorted alphabetically.
+ *
+ * @param top Toplevel containing seaudit log object.
+ *
+ * @return Vector of sorted users, or NULL if no log is loaded. The
+ * caller must call apol_vector_destroy() upon the return value.
+ */
+apol_vector_t *toplevel_get_log_users(toplevel_t * top);
+
+/**
+ * Return a vector of strings corresponding to all roles found within
+ * the current log file. The vector will be sorted alphabetically.
+ *
+ * @param top Toplevel containing seaudit log object.
+ *
+ * @return Vector of sorted roles, or NULL if no log is loaded. The
+ * caller must call apol_vector_destroy() upon the return value.
+ */
+apol_vector_t *toplevel_get_log_roles(toplevel_t * top);
+
+/**
+ * Return a vector of strings corresponding to all types found within
+ * the current log file. The vector will be sorted alphabetically.
+ *
+ * @param top Toplevel containing seaudit log object.
+ *
+ * @return Vector of sorted types, or NULL if no log is loaded. The
+ * caller must call apol_vector_destroy() upon the return value.
+ */
+apol_vector_t *toplevel_get_log_types(toplevel_t * top);
+
+/**
+ * Return a vector of strings corresponding to all mls
+ * levels found within the current log file.
+ * The vector will be sorted alphabetically.
+ *
+ * @param top Toplevel containing seaudit log object.
+ *
+ * @return Vector of sorted types, or NULL if no log is loaded. The
+ * caller must call apol_vector_destroy() upon the return value.
+ */
+apol_vector_t *toplevel_get_log_mls_lvl(toplevel_t * top);
+
+/**
+ * Return a vector of strings corresponding to all mls
+ * clearance found within the current log file.
+ * The vector will be sorted alphabetically.
+ *
+ * @param top Toplevel containing seaudit log object.
+ *
+ * @return Vector of sorted types, or NULL if no log is loaded. The
+ * caller must call apol_vector_destroy() upon the return value.
+ */
+apol_vector_t *toplevel_get_log_mls_clr(toplevel_t * top);
+
+/**
+ * Return a vector of strings corresponding to all object classes
+ * found within the current log file. The vector will be sorted
+ * alphabetically.
+ *
+ * @param top Toplevel containing seaudit log object.
+ *
+ * @return Vector of sorted classes, or NULL if no log is loaded. The
+ * caller must call apol_vector_destroy() upon the return value.
+ */
+apol_vector_t *toplevel_get_log_classes(toplevel_t * top);
+
+/**
+ * Return the currently loaded policy.
+ *
+ * @param top Toplevel containing policy.
+ *
+ * @return Current policy, or NULL if no policy is loaded yet. Treat
+ * this as a const pointer.
+ */
+apol_policy_t *toplevel_get_policy(toplevel_t * top);
+
+/**
+ * Return the filename containing seaudit's glade file.
+ *
+ * @param top Toplevel containing glade XML declarations.
+ *
+ * @return Name of the glade file. Do not modify this string.
+ */
+char *toplevel_get_glade_xml(toplevel_t * top);
+
+/**
+ * Return the progress object, so that sub-windows may also show the
+ * threaded progress object.
+ *
+ * @param top Toplevel containing progress object.
+ *
+ * @return Progress object. Do not free() this pointer.
+ */
+progress_t *toplevel_get_progress(toplevel_t * top);
+
+/**
+ * Return the main application window. Sub-windows should be set
+ * transient to this window.
+ *
+ * @param top Toplevel containing main window.
+ *
+ * @return Main window.
+ */
+GtkWindow *toplevel_get_window(toplevel_t * top);
+
+/**
+ * (Re)open a dialog that allows the user to search for TE rules in
+ * the currently opened policy. If message is not NULL then set the
+ * query's initial parameters to the message's source type, target
+ * type, and object class.
+ *
+ * @param top Toplevel containing policy.
+ * @param message If non-NULL, the initial parameters for query.
+ */
+void toplevel_find_terules(toplevel_t * top, seaudit_message_t * message);
+
+/**
+ * Pop-up an error dialog with a line of text and wait for the user to
+ * dismiss the dialog.
+ *
+ * @param top Toplevel window; this message dialog will be centered
+ * upon it.
+ * @param format Format string to print, using syntax of printf(3).
+ */
+void toplevel_ERR(toplevel_t * top, const char *format, ...) __attribute__ ((format(printf, 2, 3)));
+
+/**
+ * Pop-up a warning dialog with a line of text and wait for the user
+ * to dismiss the dialog.
+ *
+ * @param top Toplevel window; this message dialog will be centered
+ * upon it.
+ * @param format Format string to print, using syntax of printf(3).
+ */
+void toplevel_WARN(toplevel_t * top, const char *format, ...) __attribute__ ((format(printf, 2, 3)));
+
+#endif