|
|
|
|
@ -121,8 +121,8 @@ void on_additional_settings_changed(GtkWidget *self, ubl_settings_usergroups_add
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_additional_settings_group_sync_add(GtkWidget *, ubl_settings_usergroups_additional_settings_window *){
|
|
|
|
|
|
|
|
|
|
void on_additional_settings_group_sync_add(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window){
|
|
|
|
|
on_useradd_sync_changed(window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_additional_settings_group_sync_remove(GtkWidget *, ubl_settings_usergroups_additional_settings_window *window){
|
|
|
|
|
@ -135,6 +135,7 @@ void on_additional_settings_changed(GtkWidget *self, ubl_settings_usergroups_add
|
|
|
|
|
gtk_list_store_remove(window->GroupsShutdownList,&iter);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
on_useradd_sync_changed(window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_additional_settings_cell_toggled(GtkCellRenderer *self, char *path, ubl_settings_usergroups_additional_settings_window *window){
|
|
|
|
|
@ -162,6 +163,7 @@ void on_additional_settings_cell_toggled(GtkCellRenderer *self, char *path, ubl_
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
on_useradd_sync_changed(window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_additional_settings_cell_edited(GtkCellRenderer *self, char *path, char *new_text, ubl_settings_usergroups_additional_settings_window *window){
|
|
|
|
|
@ -200,6 +202,7 @@ GtkTreeIter iter;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
gtk_list_store_set(GTK_LIST_STORE(model),&iter,place_to_set,new_text,place_to_set==2?3:2,old_val,-1);
|
|
|
|
|
on_useradd_sync_changed(window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_adiitional_settings_tree_selection_changed(GtkWidget *self, ubl_settings_usergroups_additional_settings_window *window){
|
|
|
|
|
@ -227,6 +230,105 @@ void on_adiitional_settings_tree_selection_changed(GtkWidget *self, ubl_settings
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_useradd_sync_changed(ubl_settings_usergroups_additional_settings_window *window){
|
|
|
|
|
char *useradd_sync = "";
|
|
|
|
|
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck))){
|
|
|
|
|
useradd_sync = yon_char_new("boot");
|
|
|
|
|
}
|
|
|
|
|
if (gtk_switch_get_active(GTK_SWITCH(window->UsersShutdownSwitch))){
|
|
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
for_iter(window->UsersShutdownList,&iter){
|
|
|
|
|
int active;
|
|
|
|
|
char *min_str, max_str;
|
|
|
|
|
int sensitive;
|
|
|
|
|
char *parameter;
|
|
|
|
|
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->UsersShutdownList),&iter,0,&active,2,&min_str,3,&max_str,6,&sensitive,9,¶meter,-1);
|
|
|
|
|
if (active&&sensitive){
|
|
|
|
|
if (!strcmp(parameter,"shutdown@all")){
|
|
|
|
|
char *temp = yon_char_unite(useradd_sync,!yon_char_is_empty(useradd_sync)?",":"",parameter,NULL);
|
|
|
|
|
if(!yon_char_is_empty(useradd_sync)) free(useradd_sync);
|
|
|
|
|
useradd_sync = temp;
|
|
|
|
|
} else if (!strcmp(parameter,"shutdown@users")){
|
|
|
|
|
char *temp = yon_char_unite(useradd_sync,!yon_char_is_empty(useradd_sync)?",":"",parameter,NULL);
|
|
|
|
|
if(!yon_char_is_empty(useradd_sync)) free(useradd_sync);
|
|
|
|
|
useradd_sync = temp;
|
|
|
|
|
|
|
|
|
|
} else if (!strcmp(parameter,"shutdown@systems")){
|
|
|
|
|
char *temp = yon_char_unite(useradd_sync,!yon_char_is_empty(useradd_sync)?",":"",parameter,NULL);
|
|
|
|
|
if(!yon_char_is_empty(useradd_sync)) free(useradd_sync);
|
|
|
|
|
useradd_sync = temp;
|
|
|
|
|
|
|
|
|
|
} else if (!strcmp(parameter,"shutdown@min-max")){
|
|
|
|
|
char *temp = yon_char_unite(useradd_sync,!yon_char_is_empty(useradd_sync)?",":"","shutdown@",min_str,"-",max_str,NULL);
|
|
|
|
|
if(!yon_char_is_empty(useradd_sync)) free(useradd_sync);
|
|
|
|
|
useradd_sync = temp;
|
|
|
|
|
|
|
|
|
|
} else if (!strcmp(parameter,"shutdown@uid")){
|
|
|
|
|
char *temp = yon_char_unite(useradd_sync,!yon_char_is_empty(useradd_sync)?",":"","shutdown@",min_str,NULL);
|
|
|
|
|
if(!yon_char_is_empty(useradd_sync)) free(useradd_sync);
|
|
|
|
|
useradd_sync = temp;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!yon_char_is_empty(useradd_sync)){
|
|
|
|
|
yon_config_register(USERADD_SYNC_parameter,USERADD_SYNC_get_command,useradd_sync);
|
|
|
|
|
} else {
|
|
|
|
|
yon_config_remove_by_key(USERADD_SYNC_parameter);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char *groupadd_sync = "";
|
|
|
|
|
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck))){
|
|
|
|
|
groupadd_sync = yon_char_new("boot");
|
|
|
|
|
}
|
|
|
|
|
if (gtk_switch_get_active(GTK_SWITCH(window->UsersShutdownSwitch))){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
for_iter(window->UsersShutdownList,&iter){
|
|
|
|
|
int active;
|
|
|
|
|
char *min_str, max_str;
|
|
|
|
|
int sensitive;
|
|
|
|
|
char *parameter;
|
|
|
|
|
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->UsersShutdownList),&iter,0,&active,2,&min_str,3,&max_str,6,&sensitive,9,¶meter,-1);
|
|
|
|
|
if (active&&sensitive){
|
|
|
|
|
if (!strcmp(parameter,"shutdown@all")){
|
|
|
|
|
char *temp = yon_char_unite(groupadd_sync,!yon_char_is_empty(groupadd_sync)?",":"",parameter,NULL);
|
|
|
|
|
if(!yon_char_is_empty(groupadd_sync)) free(groupadd_sync);
|
|
|
|
|
groupadd_sync = temp;
|
|
|
|
|
} else if (!strcmp(parameter,"shutdown@users")){
|
|
|
|
|
char *temp = yon_char_unite(groupadd_sync,!yon_char_is_empty(groupadd_sync)?",":"",parameter,NULL);
|
|
|
|
|
if(!yon_char_is_empty(groupadd_sync)) free(groupadd_sync);
|
|
|
|
|
groupadd_sync = temp;
|
|
|
|
|
|
|
|
|
|
} else if (!strcmp(parameter,"shutdown@systems")){
|
|
|
|
|
char *temp = yon_char_unite(groupadd_sync,!yon_char_is_empty(groupadd_sync)?",":"",parameter,NULL);
|
|
|
|
|
if(!yon_char_is_empty(groupadd_sync)) free(groupadd_sync);
|
|
|
|
|
groupadd_sync = temp;
|
|
|
|
|
|
|
|
|
|
} else if (!strcmp(parameter,"shutdown@min-max")){
|
|
|
|
|
char *temp = yon_char_unite(groupadd_sync,!yon_char_is_empty(groupadd_sync)?",":"","shutdown@",min_str,"-",max_str,NULL);
|
|
|
|
|
if(!yon_char_is_empty(groupadd_sync)) free(groupadd_sync);
|
|
|
|
|
groupadd_sync = temp;
|
|
|
|
|
|
|
|
|
|
} else if (!strcmp(parameter,"shutdown@uid")){
|
|
|
|
|
char *temp = yon_char_unite(groupadd_sync,!yon_char_is_empty(groupadd_sync)?",":"","shutdown@",min_str,NULL);
|
|
|
|
|
if(!yon_char_is_empty(groupadd_sync)) free(groupadd_sync);
|
|
|
|
|
groupadd_sync = temp;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!yon_char_is_empty(useradd_sync)){
|
|
|
|
|
yon_config_register(GROUPADD_SYNC_parameter,GROUPADD_SYNC_parameter_command,groupadd_sync);
|
|
|
|
|
} else {
|
|
|
|
|
yon_config_remove_by_key(GROUPADD_SYNC_parameter);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(){
|
|
|
|
|
ubl_settings_usergroups_additional_settings_window *window = malloc(sizeof(ubl_settings_usergroups_additional_settings_window));
|
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_additional_settings);
|
|
|
|
|
@ -272,6 +374,164 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
|
|
|
|
|
window->user_shutdown=-1;
|
|
|
|
|
window->user_boot=-1;
|
|
|
|
|
window->password_hash=NULL;
|
|
|
|
|
|
|
|
|
|
char *useradd_sync = yon_config_get_by_key(USERADD_SYNC_parameter);
|
|
|
|
|
char *groupadd_sync = yon_config_get_by_key(GROUPADD_SYNC_parameter);
|
|
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(useradd_sync)){
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(window->UsersShutdownList);
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
int useradd_sync_size;
|
|
|
|
|
config_str parsed = yon_char_parse(useradd_sync,&useradd_sync_size,",");
|
|
|
|
|
if (yon_char_parsed_check_exist(parsed,useradd_sync_size,"shutdown@all")){
|
|
|
|
|
int a=0;
|
|
|
|
|
for_iter(model,&iter){
|
|
|
|
|
if (!a){
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,6,0,-1);
|
|
|
|
|
a++;
|
|
|
|
|
} else {
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,5,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int uid_set=0, maxmin_set=0;
|
|
|
|
|
for (int i=0;i<useradd_sync_size;i++){
|
|
|
|
|
if (!strcmp(parsed[i],"boot")){
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsersBootCheck),1);
|
|
|
|
|
} else if (!strcmp(parsed[i],"shutdown@all")){
|
|
|
|
|
gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,1,-1);
|
|
|
|
|
} else if (!strcmp(parsed[i],"shutdown@users")){
|
|
|
|
|
gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,0,5,0,6,0,-1);
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"1");
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,1,5,1,6,1,-1);
|
|
|
|
|
|
|
|
|
|
} else if (!strcmp(parsed[i],"shutdown@systems")){
|
|
|
|
|
gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,0,5,0,6,0,-1);
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"2");
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,1,5,1,6,1,-1);
|
|
|
|
|
|
|
|
|
|
} else if (strstr(parsed[i],"-")){
|
|
|
|
|
on_additional_settings_cell_toggled(window->UserActiveCell,"0",window);
|
|
|
|
|
if (!maxmin_set){
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"3");
|
|
|
|
|
maxmin_set++;
|
|
|
|
|
} else {
|
|
|
|
|
gtk_list_store_append(window->UsersShutdownList,&iter);
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,1,SHUTDOWN_UID_RANGE_LABEL,5,1,6,1,7,1,8,1,9,"shutdown@uid",10,1,11,1,-1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char *temp = yon_char_new(parsed[i]);
|
|
|
|
|
free(yon_char_divide_search(temp,"@",-1));
|
|
|
|
|
char *min = yon_char_divide_search(temp,"-",-1);
|
|
|
|
|
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,1,2,min,3,temp,-1);
|
|
|
|
|
|
|
|
|
|
} else if (strstr(parsed[i],"shutdown@")) {
|
|
|
|
|
gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,0,5,0,6,0,-1);
|
|
|
|
|
|
|
|
|
|
if (!uid_set){
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"4");
|
|
|
|
|
uid_set++;
|
|
|
|
|
} else {
|
|
|
|
|
gtk_list_store_append(window->UsersShutdownList,&iter);
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,1,SHUTDOWN_UID_LABEL,5,1,6,1,7,1,8,0,9,"shutdown@uid",10,1,11,1,-1);
|
|
|
|
|
}
|
|
|
|
|
char *temp = yon_char_new(parsed[i]);
|
|
|
|
|
free(yon_char_divide_search(temp,"@",-1));
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,1,2,temp,-1);
|
|
|
|
|
} else if (!strcmp(parsed[i],"shutdown")){
|
|
|
|
|
gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,0,-1);
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"1");
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,1,5,1,6,1,-1);
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"2");
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,1,5,1,6,1,-1);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(groupadd_sync)){
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(window->GroupsShutdownList);
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
int useradd_sync_size;
|
|
|
|
|
config_str parsed = yon_char_parse(groupadd_sync,&useradd_sync_size,",");
|
|
|
|
|
if (yon_char_parsed_check_exist(parsed,useradd_sync_size,"shutdown@all")){
|
|
|
|
|
int a=0;
|
|
|
|
|
for_iter(model,&iter){
|
|
|
|
|
if (!a){
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,6,0,-1);
|
|
|
|
|
a++;
|
|
|
|
|
} else {
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,5,1,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int uid_set=0, maxmin_set=0;
|
|
|
|
|
for (int i=0;i<useradd_sync_size;i++){
|
|
|
|
|
if (!strcmp(parsed[i],"boot")){
|
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->GroupsBootCheck),1);
|
|
|
|
|
} else if (!strcmp(parsed[i],"shutdown@all")){
|
|
|
|
|
gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,0,1,-1);
|
|
|
|
|
} else if (!strcmp(parsed[i],"shutdown@users")){
|
|
|
|
|
gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,0,0,-1);
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"1");
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,1,5,1,6,1,-1);
|
|
|
|
|
|
|
|
|
|
} else if (!strcmp(parsed[i],"shutdown@systems")){
|
|
|
|
|
gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,0,0,-1);
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"2");
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,1,5,1,6,1,-1);
|
|
|
|
|
|
|
|
|
|
} else if (!strstr(parsed[i],"-")){
|
|
|
|
|
gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,0,0,-1);
|
|
|
|
|
if (!maxmin_set){
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"3");
|
|
|
|
|
maxmin_set++;
|
|
|
|
|
} else {
|
|
|
|
|
gtk_list_store_append(window->GroupsShutdownList,&iter);
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,1,SHUTDOWN_GID_RANGE_LABEL,5,1,6,1,7,1,8,1,9,"shutdown@uid",10,1,11,1,-1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char *temp = yon_char_new(parsed[i]);
|
|
|
|
|
free(yon_char_divide_search(temp,"@",-1));
|
|
|
|
|
char *min = yon_char_divide_search(temp,"-",-1);
|
|
|
|
|
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,0,1,2,min,3,temp,-1);
|
|
|
|
|
|
|
|
|
|
} else if (strstr(parsed[i],"shutdown@")){
|
|
|
|
|
gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,0,0,-1);
|
|
|
|
|
|
|
|
|
|
if (!uid_set){
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"4");
|
|
|
|
|
uid_set++;
|
|
|
|
|
} else {
|
|
|
|
|
gtk_list_store_append(window->GroupsShutdownList,&iter);
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,1,SHUTDOWN_GID_LABEL,5,1,6,1,7,1,8,0,9,"shutdown@uid",10,1,11,1,-1);
|
|
|
|
|
}
|
|
|
|
|
char *temp = yon_char_new(parsed[i]);
|
|
|
|
|
free(yon_char_divide_search(temp,"@",-1));
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,0,1,2,temp,-1);
|
|
|
|
|
} else if (!strcmp(parsed[i],"shutdown")){
|
|
|
|
|
gtk_tree_model_get_iter_first(model,&iter);
|
|
|
|
|
gtk_list_store_set(window->GroupsShutdownList,&iter,0,0,-1);
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"1");
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,1,-1);
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,&iter,"2");
|
|
|
|
|
gtk_list_store_set(window->UsersShutdownList,&iter,0,1,-1);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->UserAddButton),"clicked",G_CALLBACK(on_additional_settings_user_sync_add),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->UserRemoveButton),"clicked",G_CALLBACK(on_additional_settings_user_sync_remove),window);
|
|
|
|
|
|