Merge pull request 'Fixed checking of domain status before interface data loading' (#42) from YanTheKaller/ubl-settings-system:master into master

Reviewed-on: #42
pull/69/head^2 v2.15
Dmitry Razumov 2 years ago
commit 926236c662

@ -464,7 +464,7 @@ domain_info_window *yon_information_window_new(){
yon_gtk_widget_set_scroll_window_for_scroll(window->Window,GTK_SCROLLBAR(window->TerminalScroll)); yon_gtk_widget_set_scroll_window_for_scroll(window->Window,GTK_SCROLLBAR(window->TerminalScroll));
GdkRGBA rgba; GdkRGBA rgba;
vte_terminal_get_color_background_for_draw(VTE_TERMINAL(window->ExecuteTerminal),&rgba); vte_terminal_get_color_background_for_draw(VTE_TERMINAL(window->ExecuteTerminal),&rgba);
// vte_terminal_set_color_cursor(VTE_TERMINAL(window->ExecuteTerminal),&rgba); vte_terminal_set_color_cursor(VTE_TERMINAL(window->ExecuteTerminal),&rgba);
yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,TITLE_LABEL,"com.ublinux.ubl-settings-system","InfoWindow"); yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,TITLE_LABEL,"com.ublinux.ubl-settings-system","InfoWindow");
return window; return window;
@ -488,24 +488,32 @@ void on_domain_connect(GtkWidget *self, dictionary *dict){
client = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ClientCombo)); client = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ClientCombo));
} }
char *final = yon_char_unite(!yon_char_is_empty(kerberos)?kerberos_addition_command(kerberos):"",!yon_char_is_empty(kerberos)?" ":"",!yon_char_is_empty(dns)?dns_addition_command(dns):"",!yon_char_is_empty(dns)?" ":"",!yon_char_is_empty(client)?client_addition_command(client):"",!yon_char_is_empty(client)?" ":"",NULL); char *final = yon_char_unite(!yon_char_is_empty(kerberos)?kerberos_addition_command(kerberos):"",!yon_char_is_empty(kerberos)?" ":"",!yon_char_is_empty(dns)?dns_addition_command(dns):"",!yon_char_is_empty(dns)?" ":"",!yon_char_is_empty(client)?client_addition_command(client):"",!yon_char_is_empty(client)?" ":"",NULL);
yon_debug_output(domain_connect_command(adress,login,password,final)); yon_debug_output("%s\n",domain_connect_command(adress,login,password,final));
yon_debug_output(terminal_command_start(TITLE_LABEL,domain_connect_command(adress,login,password,final))); domain_info_window *dialog = yon_information_window_new();
yon_launch_app_with_arguments(terminal_command_start(TITLE_LABEL,domain_connect_command(adress,login,password,final)),""); yon_terminal_integrated_start(dialog->ExecuteTerminal,domain_connect_command(adress,login,password,final));
gtk_window_set_transient_for(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->Window));
gtk_widget_show(dialog->Window);
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress); gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress);
} }
void on_status_clicked(GtkWidget *self, connection_window *window){ void on_status_clicked(GtkWidget *self, connection_window *window){
char *target = (char*)gtk_entry_get_text(GTK_ENTRY(window->AdressEntry)); char *target = (char*)gtk_entry_get_text(GTK_ENTRY(window->AdressEntry));
if (!yon_char_is_empty(target)){ if (!yon_char_is_empty(target)){
yon_debug_output(domain_info(target)); yon_debug_output("%s\n",domain_info(target));
yon_launch_app_with_arguments(terminal_command_start(TITLE_LABEL,domain_info(target)),""); domain_info_window *dialog = yon_information_window_new();
yon_terminal_integrated_start(dialog->ExecuteTerminal,domain_info(target));
gtk_window_set_transient_for(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->Window));
gtk_widget_show(dialog->Window);
} }
} }
void on_find_domains_clicked(GtkWidget *self, connection_window *window){ void on_find_domains_clicked(GtkWidget *self, connection_window *window){
yon_debug_output(domains_seek_command); yon_debug_output("%s\n",domains_seek_command);
yon_launch_app_with_arguments(terminal_command_start(TITLE_LABEL,domains_seek_command),""); domain_info_window *dialog = yon_information_window_new();
yon_terminal_integrated_start(dialog->ExecuteTerminal,domains_seek_command);
gtk_window_set_transient_for(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->Window));
gtk_widget_show(dialog->Window);
} }
@ -513,8 +521,11 @@ void on_main_window_domain_status_clicked(GtkWidget *self, GtkEntryIconPosition
if (icon_pos==GTK_ENTRY_ICON_SECONDARY&&main_config.domain_connected){ if (icon_pos==GTK_ENTRY_ICON_SECONDARY&&main_config.domain_connected){
char *target = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->DomainEntry)); char *target = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->DomainEntry));
if (!yon_char_is_empty(target)){ if (!yon_char_is_empty(target)){
yon_debug_output(get_domain_info_command); yon_debug_output("%s\n",get_domain_info_command);
yon_launch_app_with_arguments(terminal_command_start(TITLE_LABEL,get_domain_info_command),""); domain_info_window *dialog = yon_information_window_new();
yon_terminal_integrated_start(dialog->ExecuteTerminal,get_domain_info_command);
gtk_window_set_transient_for(GTK_WINDOW(dialog->Window),GTK_WINDOW(widgets->Window));
gtk_widget_show(dialog->Window);
} }
} }
} }
@ -563,7 +574,6 @@ connection_window *yon_connection_window_new(){
g_signal_connect(G_OBJECT(window->FindEntry),"clicked",G_CALLBACK(on_find_domains_clicked),window); g_signal_connect(G_OBJECT(window->FindEntry),"clicked",G_CALLBACK(on_find_domains_clicked),window);
g_signal_connect(G_OBJECT(window->AdressEntry),"focus-out-event",G_CALLBACK(yon_update_thread),window); g_signal_connect(G_OBJECT(window->AdressEntry),"focus-out-event",G_CALLBACK(yon_update_thread),window);
yon_update_thread(NULL,NULL,window); yon_update_thread(NULL,NULL,window);
return window; return window;
} }
@ -578,8 +588,11 @@ void on_domain_disconnect(GtkWidget *self, dictionary *dict){
yon_ubl_status_highlight_incorrect(window->AdressEntry); yon_ubl_status_highlight_incorrect(window->AdressEntry);
return; return;
} }
yon_debug_output(domain_disconnect_command(adress,login,password)); yon_debug_output("%s\n",domain_disconnect_command(adress,login,password));
yon_launch_app_with_arguments(terminal_command_start(TITLE_LABEL,domain_disconnect_command(adress,login,password)),""); domain_info_window *dialog = yon_information_window_new();
yon_terminal_integrated_start(dialog->ExecuteTerminal,domain_disconnect_command(adress,login,password));
gtk_window_set_transient_for(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->Window));
gtk_widget_show(dialog->Window);
gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress); gtk_entry_set_text(GTK_ENTRY(widgets->DomainEntry),adress);
} }
@ -649,6 +662,7 @@ void on_domain_opened(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->SaveButton),"clicked",G_CALLBACK(on_domain_connect),dict); g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_domain_connect),dict);
g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_check_domain_connected),widgets); g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_check_domain_connected),widgets);
yon_update_thread(NULL,NULL,window);
gtk_widget_show(window->Window); gtk_widget_show(window->Window);
} }

@ -65,18 +65,18 @@
#define check_domain_access_command(targeet) yon_char_append("adcli info --domain ",target) #define check_domain_access_command(targeet) yon_char_append("adcli info --domain ",target)
#define get_domain_info_command "ubdomain-client list " #define get_domain_info_command "ubdomain-client list "
#define domains_seek_command "ubdomain-client discover" #define domains_seek_command "ubdomain-client discover"
#define domain_connect_command(target,user,password, addition) yon_char_unite("ubdomain-client join",!yon_char_is_empty(user)?" --user \"":"",!yon_char_is_empty(user)?user:"",!yon_char_is_empty(user)?"\"":"",!yon_char_is_empty(password)?" --password \"":"",!yon_char_is_empty(password)?password:"",!yon_char_is_empty(password)?"\"":""," --domain \"",target,"\"", addition,NULL) #define domain_connect_command(target,user,password, addition) yon_char_unite("ubdomain-client join",!yon_char_is_empty(user)?" --user ":"",!yon_char_is_empty(user)?user:"",!yon_char_is_empty(password)?" --password ":"",!yon_char_is_empty(password)?password:""," --domain ",target, addition,NULL)
#define domain_disconnect_command(target,user,password) yon_char_unite("ubdomain-client leave",!yon_char_is_empty(user)?" --user \"":"",!yon_char_is_empty(user)?user:"",!yon_char_is_empty(user)?"\"":"",!yon_char_is_empty(password)?" --password \"":"",!yon_char_is_empty(password)?password:"",!yon_char_is_empty(password)?"\"":""," --domain \"",target,"\"",NULL) #define domain_disconnect_command(target,user,password) yon_char_unite("ubdomain-client leave",!yon_char_is_empty(user)?" --user ":"",!yon_char_is_empty(user)?user:"",!yon_char_is_empty(password)?" --password ":"",!yon_char_is_empty(password)?password:""," --domain ",target,NULL)
#define kerberos_addition_command(target) yon_char_unite(" --domain_server \"",target,"\"",NULL) #define kerberos_addition_command(target) yon_char_unite(" --domain_server ",target,"",NULL)
#define dns_addition_command(target) yon_char_unite(" --dns \"",target,"\"",NULL) #define dns_addition_command(target) yon_char_unite(" --dns ",target,"",NULL)
#define client_addition_command(target) yon_char_unite(" --domain_client \"",target,"\"",NULL) #define client_addition_command(target) yon_char_unite(" --domain_client ",target,"",NULL)
#define domain_info(target) yon_char_unite("ubdomain-client discover --domain \"",target,"\"",NULL) #define domain_info(target) yon_char_unite("ubdomain-client discover --domain ",target,"",NULL)
#define domain_connected_icon "com.ublinux.ubl-settings-system.plug-connected-symbolic" #define domain_connected_icon "com.ublinux.ubl-settings-system.plug-connected-symbolic"
#define domain_disconnected_icon "com.ublinux.ubl-settings-system.plug-disconnected-symbolic" #define domain_disconnected_icon "com.ublinux.ubl-settings-system.plug-disconnected-symbolic"
#define domain_connect_check "ubdomain-client list|grep -q \"configured\"" #define domain_connect_check "ubdomain-client list|grep -q 'configured'"
#define domain_check_alive(target) yon_char_unite("timeout --kill-after=0.1 2 dig +time=1 +tries=1 +noall -t SRV _ldap._tcp.",target," @",target," &>/dev/null",NULL) #define domain_check_alive(target) yon_char_unite("timeout --kill-after=0.1 2 dig +time=1 +tries=1 +noall -t SRV _ldap._tcp.",target," @",target," &>/dev/null",NULL)

@ -13,6 +13,7 @@
<property name="width-request">800</property> <property name="width-request">800</property>
<property name="height-request">600</property> <property name="height-request">600</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property> <property name="icon-name">com.ublinux.ubl-settings-repomanager</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">

@ -4,9 +4,11 @@
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-system.css --> <!-- interface-css-provider-path ubl-settings-system.css -->
<object class="GtkApplicationWindow" id="MainWindow"> <object class="GtkApplicationWindow" id="MainWindow">
<property name="width-request">450</property>
<property name="height-request">240</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="modal">True</property> <property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property> <property name="icon-name">com.ublinux.ubl-settings-system</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>

Loading…
Cancel
Save