@ -101,6 +101,28 @@ void on_about(){
gtk_widget_show ( window ) ;
gtk_widget_show ( window ) ;
}
}
char * yon_size_get_letter_from_int ( int size ) {
switch ( size ) {
case 0 : return " K " ;
break ;
case 1 : return " M " ;
break ;
case 2 : return " G " ;
break ;
}
}
int yon_size_get_int_from_letter ( char size ) {
switch ( size ) {
case ' K ' : return 0 ;
break ;
case ' M ' : return 1 ;
break ;
case ' G ' : return 2 ;
break ;
}
}
//functions
//functions
void yon_load_proceed ( char * command ) {
void yon_load_proceed ( char * command ) {
@ -481,17 +503,145 @@ void on_logrotate_tab_open(GtkWidget *self, main_window *widgets){
// Journald window
// Journald window
void on_journald_open ( GtkWidget * self , main_window * widgets ) {
void yon_combo_compress_check ( GtkComboBox * self , journald_window * window ) {
if ( gtk_combo_box_get_active ( self ) = = 3 ) {
gtk_widget_set_sensitive ( window - > LogCompressionSizeCombo , 1 ) ;
gtk_widget_set_sensitive ( window - > LogCompressionEntry , 1 ) ;
} else {
gtk_widget_set_sensitive ( window - > LogCompressionSizeCombo , 0 ) ;
gtk_widget_set_sensitive ( window - > LogCompressionEntry , 0 ) ;
}
}
void on_journald_save ( GtkWidget * self , journald_window * window ) {
char * storage ;
int storage_active = gtk_combo_box_get_active ( GTK_COMBO_BOX ( window - > LogStorageCombo ) ) ;
switch ( storage_active ) {
case 0 : storage = " auto " ;
break ;
case 1 : storage = " volatile " ;
break ;
case 2 : storage = " persistent " ;
break ;
case 3 : storage = " none " ;
break ;
}
char * compress ;
int compress_active = gtk_combo_box_get_active ( GTK_COMBO_BOX ( window - > LogCompressionCombo ) ) ;
if ( compress_active = = 1 ) compress = " yes " ;
else if ( compress_active = = 2 ) compress = " no " ;
else if ( compress_active = = 3 ) {
int compress_size_active = gtk_combo_box_get_active ( GTK_COMBO_BOX ( window - > LogCompressionSizeCombo ) ) ;
int compress_size = atoi ( gtk_entry_get_text ( GTK_ENTRY ( window - > LogCompressionEntry ) ) ) ;
compress = yon_char_from_int ( compress_size ) ;
if ( compress_size = = 0 )
compress_active = 0 ;
switch ( compress_size_active ) {
case 0 : compress = yon_char_append ( compress , " K " ) ;
break ;
case 1 : compress = yon_char_append ( compress , " M " ) ;
break ;
case 2 : compress = yon_char_append ( compress , " G " ) ;
break ;
}
}
char * splitmode ;
int splitmode_active = gtk_combo_box_get_active ( GTK_COMBO_BOX ( window - > DivideJournalFilesCombo ) ) ;
if ( splitmode_active = = 1 ) splitmode = " uid " ;
else if ( splitmode_active = = 2 ) splitmode = " none " ;
long interval = - 1 ;
long amount = - 1 ;
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( window - > LogIntervalCheck ) ) ) {
interval = gtk_spin_button_get_value ( GTK_SPIN_BUTTON ( window - > LogIntervalSpin ) ) ;
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( window - > LogIntervalAmountCheck ) ) ) {
amount = gtk_spin_button_get_value ( GTK_SPIN_BUTTON ( window - > LogIntervalAmountSpin ) ) ;
yon_config_register ( JOURNALD ( " RateLimitBurst " ) , " logging " , yon_char_from_long ( amount ) ) ;
}
if ( amount > 0 )
yon_config_register ( JOURNALD ( " RateLimitIntervalSec " ) , " logging " , yon_char_from_long ( interval ) ) ;
}
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( window - > LogSizeMaxCheck ) ) ) {
long logssize = - 1 ;
logssize = gtk_spin_button_get_value ( GTK_SPIN_BUTTON ( window - > LogSizeMaxSpin ) ) ;
int log_size_mod = gtk_combo_box_get_active ( GTK_COMBO_BOX ( window - > LogSizeMaxCombo ) ) ;
for ( int i = 0 ; i < log_size_mod + 1 ; i + + ) {
logssize = logssize * 1024 ;
}
if ( logssize > 0 )
yon_config_register ( JOURNALD ( " SystemMaxUse " ) , " logging " , yon_char_from_long ( logssize ) ) ;
}
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( window - > RotationSizeMaxCheck ) ) ) {
char * rotationMaxSize ;
long maxsize = 0 ;
maxsize = gtk_spin_button_get_value ( GTK_SPIN_BUTTON ( window - > RotationSizeMaxSpin ) ) ;
char * modif = yon_size_get_letter_from_int ( gtk_combo_box_get_active ( GTK_COMBO_BOX ( window - > RotationSizeMaxCombo ) ) ) ;
rotationMaxSize = yon_char_append ( yon_char_from_long ( maxsize ) , modif ) ;
if ( maxsize > 0 )
yon_config_register ( JOURNALD ( " SystemMaxFileSize " ) , " logging " , rotationMaxSize ) ;
}
long storagefree ;
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( window - > LogFreeSpaceCheck ) ) ) {
char * storagespace ;
storagefree = gtk_spin_button_get_value ( GTK_SPIN_BUTTON ( window - > LogFreeSpaceSpin ) ) ;
char * modif = yon_size_get_letter_from_int ( gtk_combo_box_get_active ( GTK_COMBO_BOX ( window - > LogFreeSpaceCombo ) ) ) ;
storagespace = yon_char_append ( yon_char_from_long ( storagefree ) , modif ) ;
if ( storagefree > 0 )
yon_config_register ( JOURNALD ( " SystemKeepFree " ) , " logging " , storagespace ) ;
}
int consoleforwardactive = gtk_combo_box_get_active ( GTK_COMBO_BOX ( window - > RedirectCombo ) ) ;
char * confor = NULL ;
char * TTY = NULL ;
if ( consoleforwardactive = = 1 ) {
confor = " yes " ;
TTY = ( char * ) gtk_entry_get_text ( GTK_ENTRY ( window - > RedirectTTYEntry ) ) ;
if ( yon_char_is_empty ( TTY ) )
consoleforwardactive = 0 ;
}
else if ( consoleforwardactive = = 2 ) {
confor = " no " ;
}
int forwardempty = gtk_combo_box_get_active ( GTK_COMBO_BOX ( window - > ForwardedTypeCombo ) ) ;
yon_config_register ( JOURNALD ( " Storage " ) , " logging " , storage ) ;
if ( compress_active ! = 0 )
yon_config_register ( JOURNALD ( " Compress " ) , " logging " , compress ) ;
else
yon_config_remove_by_key ( JOURNALD ( " Compress " ) ) ;
if ( splitmode_active ! = 0 )
yon_config_register ( JOURNALD ( " SplitMode " ) , " logging " , splitmode ) ;
else
yon_config_remove_by_key ( JOURNALD ( " SplitMode " ) ) ;
if ( consoleforwardactive ! = 0 )
yon_config_register ( JOURNALD ( " ForwardToConsole " ) , " logging " , confor ) ;
else
yon_config_remove_by_key ( JOURNALD ( " ForwardToConsole " ) ) ;
if ( forwardempty ! = 0 )
yon_config_register ( JOURNALD ( " MaxLevelConsole " ) , " logging " , yon_char_from_int ( forwardempty - 1 ) ) ;
else
yon_config_remove_by_key ( JOURNALD ( " MaxLevelConsole " ) ) ;
on_close_subwindow ( window - > MainWindow ) ;
}
journald_window * yon_journald_open ( GtkWidget * self , main_window * widgets ) {
journald_window * window = malloc ( sizeof ( journald_window ) ) ;
journald_window * window = malloc ( sizeof ( journald_window ) ) ;
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_journald_path ) ;
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_journald_path ) ;
window - > MainWindow = yon_gtk_builder_get_widget ( builder , " MainWindow " ) ;
window - > MainWindow = yon_gtk_builder_get_widget ( builder , " MainWindow " ) ;
window - > CancelButton = yon_gtk_builder_get_widget ( builder , " CancelButton " ) ;
window - > CancelButton = yon_gtk_builder_get_widget ( builder , " CancelButton " ) ;
window - > SaveButton = yon_gtk_builder_get_widget ( builder , " SaveButton " ) ;
window - > SaveButton = yon_gtk_builder_get_widget ( builder , " SaveButton " ) ;
window - > LogNameLabel = yon_gtk_builder_get_widget ( builder , " LogNameLabel " ) ;
window - > LogNameLabel = yon_gtk_builder_get_widget ( builder , " LogName Entry " ) ;
window - > LogDescriptionLabel = yon_gtk_builder_get_widget ( builder , " LogDescriptionLabel " ) ;
window - > LogDescriptionLabel = yon_gtk_builder_get_widget ( builder , " LogDescription Entry " ) ;
window - > LogStorageCombo = yon_gtk_builder_get_widget ( builder , " LogStorageCombo " ) ;
window - > LogStorageCombo = yon_gtk_builder_get_widget ( builder , " LogStorageCombo " ) ;
window - > LogCompressionCombo = yon_gtk_builder_get_widget ( builder , " LogCompressionCombo " ) ;
window - > LogCompressionCombo = yon_gtk_builder_get_widget ( builder , " LogCompressionCombo " ) ;
window - > LogCompressionEntry = yon_gtk_builder_get_widget ( builder , " LogCompressionEntry " ) ;
window - > LogCompressionEntry = yon_gtk_builder_get_widget ( builder , " LogCompression Spin " ) ;
window - > LogCompressionSizeCombo = yon_gtk_builder_get_widget ( builder , " LogCompressionSizeCombo " ) ;
window - > LogCompressionSizeCombo = yon_gtk_builder_get_widget ( builder , " LogCompressionSizeCombo " ) ;
window - > DivideJournalFilesCombo = yon_gtk_builder_get_widget ( builder , " DivideJournalFilesCombo " ) ;
window - > DivideJournalFilesCombo = yon_gtk_builder_get_widget ( builder , " DivideJournalFilesCombo " ) ;
window - > LogIntervalCheck = yon_gtk_builder_get_widget ( builder , " LogIntervalCheck " ) ;
window - > LogIntervalCheck = yon_gtk_builder_get_widget ( builder , " LogIntervalCheck " ) ;
@ -511,10 +661,10 @@ void on_journald_open(GtkWidget *self, main_window *widgets){
window - > RedirectTTYEntry = yon_gtk_builder_get_widget ( builder , " RedirectTTYEntry " ) ;
window - > RedirectTTYEntry = yon_gtk_builder_get_widget ( builder , " RedirectTTYEntry " ) ;
window - > ForwardedTypeCombo = yon_gtk_builder_get_widget ( builder , " ForwardedTypeCombo " ) ;
window - > ForwardedTypeCombo = yon_gtk_builder_get_widget ( builder , " ForwardedTypeCombo " ) ;
window - > LogSizeLabel = yon_gtk_builder_get_widget ( builder , " LogSizeLabel " ) ;
window - > LogSizeLabel = yon_gtk_builder_get_widget ( builder , " LogSizeLabel " ) ;
window - > LowerSizeEntry = yon_gtk_builder_get_widget ( builder , " LowerSize Entry " ) ;
window - > LowerSizeEntry = yon_gtk_builder_get_widget ( builder , " LowerSize Spin " ) ;
window - > LowerSizeCombo = yon_gtk_builder_get_widget ( builder , " LowerSizeCombo " ) ;
window - > LowerSizeCombo = yon_gtk_builder_get_widget ( builder , " LowerSizeCombo " ) ;
window - > LowerSizeButton = yon_gtk_builder_get_widget ( builder , " LowerSizeButton " ) ;
window - > LowerSizeButton = yon_gtk_builder_get_widget ( builder , " LowerSizeButton " ) ;
window - > LowerTimeEntry = yon_gtk_builder_get_widget ( builder , " LowerTime Entry " ) ;
window - > LowerTimeEntry = yon_gtk_builder_get_widget ( builder , " LowerTime Spin " ) ;
window - > LowerTimeCombo = yon_gtk_builder_get_widget ( builder , " LowerTimeCombo " ) ;
window - > LowerTimeCombo = yon_gtk_builder_get_widget ( builder , " LowerTimeCombo " ) ;
window - > LowerTimeButton = yon_gtk_builder_get_widget ( builder , " LowerTimeButton " ) ;
window - > LowerTimeButton = yon_gtk_builder_get_widget ( builder , " LowerTimeButton " ) ;
window - > headerTopic = yon_gtk_builder_get_widget ( builder , " headerTopic " ) ;
window - > headerTopic = yon_gtk_builder_get_widget ( builder , " headerTopic " ) ;
@ -522,7 +672,7 @@ void on_journald_open(GtkWidget *self, main_window *widgets){
gtk_window_set_title ( GTK_WINDOW ( window - > MainWindow ) , TITLE_LABEL ) ;
gtk_window_set_title ( GTK_WINDOW ( window - > MainWindow ) , TITLE_LABEL ) ;
g_signal_connect ( G_OBJECT ( window - > CancelButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > CancelButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > SaveButton ) , " clicked " , G_CALLBACK ( on_ close_subwindow) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > SaveButton ) , " clicked " , G_CALLBACK ( on_ journald_save) , window ) ;
g_signal_connect ( G_OBJECT ( window - > LogIntervalCheck ) , " toggled " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > LogIntervalSpin ) ;
g_signal_connect ( G_OBJECT ( window - > LogIntervalCheck ) , " toggled " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > LogIntervalSpin ) ;
g_signal_connect ( G_OBJECT ( window - > LogIntervalCheck ) , " toggled " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > LogIntervalAmountCheck ) ;
g_signal_connect ( G_OBJECT ( window - > LogIntervalCheck ) , " toggled " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > LogIntervalAmountCheck ) ;
@ -539,11 +689,37 @@ void on_journald_open(GtkWidget *self, main_window *widgets){
g_signal_connect ( G_OBJECT ( window - > RedirectCombo ) , " changed " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_combo_box_inversed ) , window - > RedirectTTYEntry ) ;
g_signal_connect ( G_OBJECT ( window - > RedirectCombo ) , " changed " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_combo_box_inversed ) , window - > RedirectTTYEntry ) ;
g_signal_connect ( G_OBJECT ( window - > LogCompressionCombo ) , " changed " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > LogCompressionEntry ) ;
g_signal_connect ( G_OBJECT ( window - > LogCompressionCombo ) , " changed " , G_CALLBACK ( yon_combo_compress_check ) , window ) ;
g_signal_connect ( G_OBJECT ( window - > LogCompressionCombo ) , " changed " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > LogCompressionSizeCombo ) ;
return window ;
gtk_widget_show ( window - > MainWindow ) ;
}
}
void on_journald_open ( GtkWidget * self , main_window * widgets ) {
journald_window * window = yon_journald_open ( self , widgets ) ;
GtkTreeIter iter ;
GtkTreeModel * model ;
GtkWidget * tree_view ;
char * name , * description ;
int name_col , desc_col ;
if ( self = = widgets - > ServicesEditButton ) {
model = GTK_TREE_MODEL ( widgets - > ServicesList ) ;
tree_view = widgets - > ServicesTree ;
name_col = 2 ;
desc_col = 3 ;
} else {
model = GTK_TREE_MODEL ( widgets - > list ) ;
tree_view = widgets - > MainTree ;
name_col = 0 ;
desc_col = 2 ;
}
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( tree_view ) ) , & model , & iter ) ) {
gtk_tree_model_get ( model , & iter , name_col , & name , desc_col , & description , - 1 ) ;
gtk_entry_set_text ( GTK_ENTRY ( window - > LogDescriptionLabel ) , description ) ;
gtk_entry_set_text ( GTK_ENTRY ( window - > LogNameLabel ) , name ) ;
}
int jsize ;
config_str journald_parameters = yon_config_get_all_by_key ( " JOURNALD[ " , & jsize ) ;
gtk_widget_show ( window - > MainWindow ) ;
}
// Log adding menu
// Log adding menu
@ -569,7 +745,6 @@ add_log_window *on_add_open(){
gtk_window_set_title ( GTK_WINDOW ( window - > MainWindow ) , TITLE_LABEL ) ;
gtk_window_set_title ( GTK_WINDOW ( window - > MainWindow ) , TITLE_LABEL ) ;
g_signal_connect ( G_OBJECT ( window - > CancelButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > CancelButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > SaveButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > SaveButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > SaveButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
return window ;
return window ;
}
}
@ -661,7 +836,7 @@ void on_log_edit(GtkWidget *self,main_window *widgets){
yon_dictionary_add_or_create_if_exists_with_data ( dict , " window " , window ) ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " window " , window ) ;
g_signal_connect ( G_OBJECT ( window - > LogrotateButton ) , " clicked " , G_CALLBACK ( on_log_edit_logrotate_settings ) , dict ) ;
g_signal_connect ( G_OBJECT ( window - > LogrotateButton ) , " clicked " , G_CALLBACK ( on_log_edit_logrotate_settings ) , dict ) ;
// g_signal_connect(G_OBJECT(window->MetalogButton),"clicked", G_CALLBACK(on_log),widgets);
// g_signal_connect(G_OBJECT(window->MetalogButton),"clicked", G_CALLBACK(on_log),widgets);
// g_signal_connect(G_OBJECT(window->SyslogButton),"clicked", G_CALLBACK( on_journald_open),widgets);
// g_signal_connect(G_OBJECT(window->SyslogButton),"clicked", G_CALLBACK( y on_journald_open),widgets);
}
}
window - > log_name = name ;
window - > log_name = name ;
gtk_entry_set_text ( GTK_ENTRY ( window - > LogDescriptionEntry ) , description ) ;
gtk_entry_set_text ( GTK_ENTRY ( window - > LogDescriptionEntry ) , description ) ;
@ -697,6 +872,7 @@ void on_log_remove(GtkWidget *self, main_window *widgets){
// Main window
// Main window
void on_service_edit ( GtkWidget * self , main_window * widgets ) {
void on_service_edit ( GtkWidget * self , main_window * widgets ) {
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > ServicesList ) ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > ServicesList ) ;
GtkTreeIter iter ;
GtkTreeIter iter ;
@ -704,7 +880,7 @@ void on_service_edit(GtkWidget *self,main_window *widgets){
char * name ;
char * name ;
gtk_tree_model_get ( model , & iter , 2 , & name , - 1 ) ;
gtk_tree_model_get ( model , & iter , 2 , & name , - 1 ) ;
if ( ! strcmp ( name , " journald " ) ) {
if ( ! strcmp ( name , " journald " ) ) {
on_journald_open ( NULL , widgets ) ;
on_journald_open ( self , widgets ) ;
} else {
} else {
on_logrotate_tab_open ( NULL , widgets ) ;
on_logrotate_tab_open ( NULL , widgets ) ;
}
}
@ -809,11 +985,13 @@ main_window *setup_window(){
}
}
config_str services = yon_file_open ( services_list_path , & service_size ) ;
config_str services = yon_file_open ( services_list_path , & service_size ) ;
for ( int i = 0 ; i < service_size ; i + + ) {
for ( int i = 0 ; i < service_size ; i + + ) {
int log_size ;
if ( services [ i ] [ 0 ] ! = ' # ' ) {
services [ i ] = yon_char_divide_search ( services [ i ] , " \n " , - 1 ) ;
int log_size ;
config_str log = yon_char_parse ( services [ i ] , & log_size , " ; " ) ;
services [ i ] = yon_char_divide_search ( services [ i ] , " \n " , - 1 ) ;
gtk_list_store_append ( widgets - > ServicesList , & iter ) ;
config_str log = yon_char_parse ( services [ i ] , & log_size , " ; " ) ;
gtk_list_store_set ( widgets - > ServicesList , & iter , 0 , 0 , 1 , 0 , 2 , log [ 0 ] , 3 , log [ 1 ] , - 1 ) ;
gtk_list_store_append ( widgets - > ServicesList , & iter ) ;
gtk_list_store_set ( widgets - > ServicesList , & iter , 0 , 0 , 1 , 0 , 2 , log [ 0 ] , 3 , log [ 1 ] , - 1 ) ;
}
}
}
config_str dirs = yon_config_load ( logrotate_config_command , & dirs_size ) ;
config_str dirs = yon_config_load ( logrotate_config_command , & dirs_size ) ;
for ( int i = 0 ; i < dirs_size ; i + + ) {
for ( int i = 0 ; i < dirs_size ; i + + ) {