📄 netconfig.h
字号:
#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <gdk/gdkkeysyms.h>#include <gtk/gtk.h>#include "mmlib.h" GtkWidget *netcfg_entry_hostname; GtkWidget *netcfg_checkbutton_dhcp; GtkWidget *netcfg_entry_ipv4_addr; GtkWidget *netcfg_entry_ipv4_mask; GtkWidget *netcfg_entry_ipv4_gateway; GtkWidget *netcfg_entry_ipv4_dns; GtkWidget *netcfg_entry_ipv6_addr; GtkWidget *netcfg_entry_ipv6_route; static char net_cfgfile_data[9][80];// not completeint netcfg_valid_check(void){ int ret=0; if (ipadr_check((char*)gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv4_addr)))!=0) { msg_dialog(GTK_MESSAGE_ERROR,_("IP地址输入不合法")); ret=-1; } if (ipadr_check((char*)gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv4_mask)))!=0) { msg_dialog(GTK_MESSAGE_ERROR,_("子网掩码输入不合法")); ret=-1; } if (ipadr_check((char*)gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv4_gateway)))!=0) { msg_dialog(GTK_MESSAGE_ERROR,_("网关地址输入不合法")); ret=-1; } if (ipadr_check((char*)gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv4_dns)))!=0) { msg_dialog(GTK_MESSAGE_ERROR,_("DNS输入不合法")); ret=-1; } if (ipv6adr_check((char*)gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv6_addr)))!=0) {msg_dialog(GTK_MESSAGE_ERROR,_("IPV6地址输入不合法")); ret=-1; } if (ipv6adr_check((char*)gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv6_route)))!=0) {msg_dialog(GTK_MESSAGE_ERROR,_("IP6路由输入不合法")); ret=-1; } return ret; }// save_buttonint netcfg_exec_save(GtkWidget *button, GtkWidget *window){ if (netcfg_valid_check()==0) { if (netcfg_exec() ==0 ) { if (netcfg_save("/.admin/network.conf")==0){ msg_dialog(GTK_MESSAGE_INFO, _("okokokokokokok\n")); mm_widget_destroy(NULL, window); }else return -1; } else return -1; } else return -1; }int netcfg_exec(void){ // if( execl("/etc/rc.d/01","01","reset",0)!=-1) return 0;}int netcfg_save(const char* file){ int fd; int i, ret = 0; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (netcfg_checkbutton_dhcp))) strcpy(strpbrk(net_cfgfile_data[0], "=")+1 , "TRUE"); else strcpy(strpbrk(net_cfgfile_data[0], "=")+1 , "FALSE"); strcpy(strpbrk(net_cfgfile_data[1], "=")+1 , gtk_entry_get_text(GTK_ENTRY(netcfg_entry_hostname))); strcpy(strpbrk(net_cfgfile_data[2], "=")+1 , gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv4_addr))); strcpy(strpbrk(net_cfgfile_data[3], "=")+1 , gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv4_mask))); strcpy(strpbrk(net_cfgfile_data[4], "=")+1 , gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv4_gateway))); strcpy(strpbrk(net_cfgfile_data[5], "=")+1 , gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv4_dns))); strcpy(strpbrk(net_cfgfile_data[6], "=")+1 , gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv6_addr))); strcpy(strpbrk(net_cfgfile_data[7], "=")+1 , gtk_entry_get_text(GTK_ENTRY(netcfg_entry_ipv6_route))); if((fd = open (file, O_WRONLY|O_TRUNC)) == -1){ ret = -1; msg_dialog(GTK_MESSAGE_ERROR,_("打开文件失败")); }else{ for (i = 0; i < 8; i++){ write(fd, net_cfgfile_data[i], strlen(net_cfgfile_data[i])); write(fd, "\n", 1); } close(fd); } return ret; return 0;}int netcfg_read(const char *file, char cfgdata[][80]){ int fd; int offset = 0; char *p = NULL; char *q = NULL; int len, ret = 0; ssize_t n; gchar buffer[400]; if((fd = open(file,O_RDONLY)) == -1){ ret = -1; }else{ while ((n = read(fd, buffer + offset, 400)) > 0){ offset += n; } close(fd); if (n == -1){ ret = -1; }else{ n = 0; p = q = buffer; offset = 0; while ((p = strpbrk(p, "=")) && n < 8){ p = strpbrk(p, " \n"); len = p - q; p = strpbrk(p, "\n"); p++; memcpy (cfgdata[n], q, len); cfgdata[n++][len] = '\0'; q = p; } } } return ret;}int netcfg_check_button(GtkWidget *checkbutton, GtkWidget *entry ){ gtk_entry_set_editable (GTK_ENTRY(netcfg_entry_ipv4_addr), !GTK_TOGGLE_BUTTON (netcfg_checkbutton_dhcp)->active); gtk_entry_set_editable (GTK_ENTRY(netcfg_entry_ipv4_mask), !GTK_TOGGLE_BUTTON (netcfg_checkbutton_dhcp)->active); gtk_entry_set_editable (GTK_ENTRY(netcfg_entry_ipv4_gateway), !GTK_TOGGLE_BUTTON (netcfg_checkbutton_dhcp)->active); gtk_entry_set_editable (GTK_ENTRY(netcfg_entry_ipv4_dns), !GTK_TOGGLE_BUTTON (netcfg_checkbutton_dhcp)->active); }void create_netcfg_window (void){ GtkWidget *netcfg_window; GtkWidget *netcfg_vbox1; GtkWidget *netcfg_hbox1; GtkWidget *netcfg_label_hostname; GtkWidget *netcfg_frame_ipv4; GtkWidget *alignment1; GtkWidget *netcfg_table_ipv4; GtkWidget *netcfg_label_ipv4_addr; GtkWidget *netcfg_label_ipv4_mask; GtkWidget *netcfg_label_ipv4_gateway; GtkWidget *netcfg_label_ipv4_dns; GtkWidget *netcfg_label_frame_ipv4; GtkWidget *netcfg_frame_ipv6; GtkWidget *alignment2; GtkWidget *netcfg_table_ipv6; GtkWidget *netcfg_label_ipv6_addr; GtkWidget *netcfg_label_ipv6_route; GtkWidget *netcfg_label_frame_ipv6; GtkWidget *netcfg_hbuttonbox_bottom; GtkWidget *netcfg_button_ok; GtkWidget *netcfg_button_cancel; gboolean ischecked; netcfg_read("/.admin/network.conf", net_cfgfile_data); if (strcmp(strpbrk(net_cfgfile_data[0], "=")+1,"TRUE") ==0) ischecked=TRUE; else ischecked=FALSE; netcfg_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_return_if_fail(GTK_IS_WINDOW(netcfg_window)); isShow = TRUE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -