⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wizserver.c

📁 Linux 上的socket嗅探器
💻 C
📖 第 1 页 / 共 3 页
字号:
            GtkHexView_SetBufferData(&wizspy_areaa2,(unsigned char *)(retinsert->data),retinsert->length,0);
            GtkHexView_SetSelOption(&wizspy_areaa2, 0,0,1);
        }
    }
}


GtkWidget* wizserv_areaa1_create(GtkWidget *window)
{
    listctrl_createnew(NULL,&wizserv_areaa1list,3,wizserv_areaa1_defaulttitles);
    gtk_widget_set_size_request (GTK_WIDGET (wizserv_areaa1list.scrolled_window), 400, 150);
    gtk_clist_set_column_width (GTK_CLIST(wizserv_areaa1list.ctrl),0,80);
    gtk_clist_set_column_width (GTK_CLIST(wizserv_areaa1list.ctrl),1,120);
    gtk_clist_set_column_width (GTK_CLIST(wizserv_areaa1list.ctrl),2,120);
    gtk_clist_column_titles_show(GTK_CLIST(wizserv_areaa1list.ctrl));

    g_signal_connect (G_OBJECT (wizserv_areaa1list.ctrl), "select_row",
                      G_CALLBACK (wizserv_areaa1_selection),
                      NULL);

    return wizserv_areaa1list.scrolled_window;
}


/* list ctrl for area E */

GtkScrollCtrl wizserv_areaelist={0,0,0};

gchar *wizserv_areae_defaulttitles[]=
{
        "Socket",  "IP",  "Paket-in",  "Packet-out",  "Flow-in",  "Flow-out"
};

void wizserv_areae_selection( GtkWidget      *clist,
                     gint            row,
                     gint            column,
                     GdkEventButton *event,
                     gpointer        data )
{
    REQLIST *lpuser=NULL;

    if(row>=0)
    {
        lpuser= (REQLIST *)gtk_clist_get_row_data (GTK_CLIST(clist), row);
        if(lpuser!=NULL&&lpuser!=curClient)
        {
            int index=0;
            struct tm *lptm=0;;
            time_t ctimet;
            char itemsg[256];
            ClientDataInfo *retinsert=0;
            /* set data to this areaa1 list*/
            curClient=lpuser;
            gtk_clist_clear(GTK_CLIST(wizserv_areaa1list.ctrl));
            if(CheckConnectClient(lpuser)!=NULL)
            {
                int count=GetClientDataCount(lpuser);
                retinsert=GetClientFirstData(lpuser);
                areaa1_packetrownum=0;
                if(retinsert!=NULL) do
                {
                    index=gtk_clist_insert(GTK_CLIST(wizserv_areaa1list.ctrl),0,wizserv_areaa1_defaulttitles);
                    gtk_clist_set_row_data (GTK_CLIST(wizserv_areaa1list.ctrl), index    ,(gpointer)retinsert);
                    areaa1_packetrownum++;
                    sprintf(itemsg,"%ld",retinsert->nID);
                    gtk_clist_set_text(GTK_CLIST(wizserv_areaa1list.ctrl),index,0,(gchar *)itemsg);
                    ctimet=retinsert->dtime;
                    lptm=gmtime(&ctimet);
                    sprintf(itemsg,"%04d-%02d-%02d %02d:%02d:%02d",
                        lptm->tm_year+1900,lptm->tm_mon+1,lptm->tm_mday,
                        lptm->tm_hour+8,lptm->tm_min,lptm->tm_sec);
                    gtk_clist_set_text(GTK_CLIST(wizserv_areaa1list.ctrl),index,1,(gchar *)itemsg);
                        sprintf(itemsg,"%d",retinsert->length);
                    gtk_clist_set_text(GTK_CLIST(wizserv_areaa1list.ctrl),index,2,(gchar *)itemsg);

                    retinsert=GetClientNextData(lpuser);
                 }while(areaa1_packetrownum<count&&retinsert!=NULL);
            }//if(retinsert!=BULL)
        }//if(lpuser!=NULL&&lpuser!=curClient)
    }//if(row>=0)
}

GtkWidget* wizserv_areae_create(GtkWidget *window)
{

    listctrl_createnew(NULL,&wizserv_areaelist,6,wizserv_areae_defaulttitles);
    gtk_widget_set_size_request (GTK_WIDGET (wizserv_areaelist.scrolled_window), -1, 150);

    gtk_clist_set_column_width (GTK_CLIST(wizserv_areaelist.ctrl),0,120);
    gtk_clist_set_column_width (GTK_CLIST(wizserv_areaelist.ctrl),1,120);
    gtk_clist_set_column_width (GTK_CLIST(wizserv_areaelist.ctrl),2,120);
    gtk_clist_set_column_width (GTK_CLIST(wizserv_areaelist.ctrl),3,120);
    gtk_clist_set_column_width (GTK_CLIST(wizserv_areaelist.ctrl),4,120);
    gtk_clist_set_column_width (GTK_CLIST(wizserv_areaelist.ctrl),5,120);
    gtk_clist_column_titles_show(GTK_CLIST(wizserv_areaelist.ctrl));

    g_signal_connect (G_OBJECT (wizserv_areaelist.ctrl), "select_row",
                      G_CALLBACK (wizserv_areae_selection),
                      NULL);

    return wizserv_areaelist.scrolled_window;
}



/* The Widgets list for setting :

1.dialog preview:
 ______________________________________________________
/v|                                                _ X \
--------------------------------------------------------
|  populor  port list :                                |
|                                                      |
|                                                      |
|                                                      |
|                                                      |
|                                                      |
|------------------------------------------------------|
|     current port:      |                |            |
|------------------------------------------------------|
|       |X|    auto send                               |
|       |X|    auto disconnect                         |
|------------------------------------------------------|
|   __________     ___________          _______        |
|  | Open now |   | Close now |        |  O K  |       |
|   ----------     -----------          -------        |
-------------------------------------------------------



2.main gtk ctrl relations :

  +vbox
   |-list ctrl, populor port
   |+hbox
   | |-label

   | |-entry
   |+vbox
   | |-check button, auto send
   | |-check button, auto disconnect
   |+hbox
     |-button, open now
     |-button, close now   
*/


gint ifwizserv_setting_autosend=0;
gint ifwizserv_setting_autodisconnect=0;
gushort wizserv_setting_port=0;

gint ifwizserv_setting_open=0;
void wizserv_setting_ondestroy(GtkWidget *window)
{
	  gtk_grab_remove(window);
    gtk_widget_destroy(window);
    ifwizserv_setting_open=0;
}

void wizserv_setting_portselection( GtkWidget      *clist,
                     gint            row,
                     gint            column,
                     GdkEventButton *event,
                     gpointer        data )

{
    gchar itemsg[60];
    GtkWidget *entryctrl= (GtkWidget *)data;
    if(GTK_IS_ENTRY(entryctrl)&&row>=0)     
    wizserv_setting_port=(gulong)gtk_clist_get_row_data(GTK_CLIST(clist),row);
    sprintf(itemsg,"%d",wizserv_setting_port);
    gtk_entry_set_text (GTK_ENTRY (entryctrl), (gchar *)(itemsg));      
}



void wizserv_setting_clickautosend(GtkWidget *window, gpointer fundata)
{
    ifwizserv_setting_autosend=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window));
}

void wizserv_setting_clickautodisconnect(GtkWidget *window, gpointer fundata)
{
    ifwizserv_setting_autodisconnect=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window));
}

void wizserv_setting_clickopen(GtkWidget *window, gpointer fundata)
{
    ifwizserv_autosend=ifwizserv_setting_autosend;
    ifwizserv_autodisconnect=ifwizserv_setting_autodisconnect;
    Server_SetPort(wizserv_setting_port);
    Server_Open();    
} 

void wizserv_setting_clickclose(GtkWidget *window, gpointer fundata)
{
    Server_Close();    
}

void wizserv_setting_clickok(GtkWidget *window, gpointer fundata)
{                  
    ifwizserv_autosend=ifwizserv_setting_autosend;
    ifwizserv_autodisconnect=ifwizserv_setting_autodisconnect;
    Server_SetPort(wizserv_setting_port);
    wizserv_setting_ondestroy((GtkWidget *)fundata);
}

GtkWidget* wizserv_setting_create(GtkWidget *window)
{
    guint freei,index;
    GtkWidget *ctrl, *vbox, *box;    
    GtkScrollCtrl listctrl;
    gchar itemsg[60];
    gchar *listitle[]=
    {"name","port","describe"};

    /* create new vbox for main */
    vbox = gtk_vbox_new (FALSE, 0);
    /* add code here */

    ifwizserv_setting_autosend=ifwizserv_autosend;
    ifwizserv_setting_autodisconnect=ifwizserv_autodisconnect;
    wizserv_setting_port=Server_GetPort();
    // add list ctrl
    ctrl=listctrl_createnew(NULL,&listctrl,3,listitle);
    gtk_widget_set_size_request (GTK_WIDGET (ctrl), 500, 160);
    gtk_clist_set_column_width (GTK_CLIST(listctrl.ctrl),0,60);
    gtk_clist_set_column_width (GTK_CLIST(listctrl.ctrl),1,60);
    gtk_clist_set_column_width (GTK_CLIST(listctrl.ctrl),2,300);
    
    gtk_box_pack_start (GTK_BOX (vbox), ctrl, TRUE, TRUE, 0);
    
    for(freei=0;freei<MAX_POPULERPORT;freei++)
    {
        index=gtk_clist_insert(GTK_CLIST(listctrl.ctrl),freei,listitle);         
        gtk_clist_set_text(GTK_CLIST(listctrl.ctrl),index,0,(gchar *)populer_port[freei].name);
        sprintf(itemsg,"%d",populer_port[freei].type);   
        gtk_clist_set_text(GTK_CLIST(listctrl.ctrl),index,1,(gchar *)itemsg);
        gtk_clist_set_text(GTK_CLIST(listctrl.ctrl),index,2,(gchar *)populer_port[freei].info);
        gtk_clist_set_row_data(GTK_CLIST(listctrl.ctrl),index,(gpointer)((gulong)populer_port[freei].type));
    }
    // add labal and entry
    box = gtk_hbox_new (FALSE, 10);
    gtk_container_set_border_width (GTK_CONTAINER (box), 10);
    gtk_box_pack_start (GTK_BOX (vbox), box, TRUE, TRUE, 0); 

    ctrl=gtk_label_new("Current port:");
    gtk_box_pack_start (GTK_BOX (box), ctrl, TRUE, TRUE, 0);
    
    ctrl=gtk_entry_new ();
    gtk_entry_set_max_length (GTK_ENTRY (ctrl),10);
    gtk_widget_set_size_request (GTK_WIDGET (ctrl), 80, 22);
    sprintf(itemsg,"%d",wizserv_setting_port);   
    gtk_entry_set_text (GTK_ENTRY (ctrl), (gchar *)itemsg);
    gtk_box_pack_start (GTK_BOX (box),ctrl, TRUE, TRUE, 1);
    g_signal_connect (G_OBJECT (listctrl.ctrl), "select_row",
                      G_CALLBACK (wizserv_setting_portselection),
                      ctrl);

    // add auto buttons

    ctrl = gtk_hseparator_new ();
    gtk_box_pack_start (GTK_BOX (vbox), ctrl, FALSE, TRUE, 0);

    box = gtk_hbox_new (FALSE, 10);
    gtk_container_set_border_width (GTK_CONTAINER (box), 10);
    gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);

    ctrl = gtk_check_button_new_with_label ("Auto send when receive packet");
    g_signal_connect (G_OBJECT (ctrl), "clicked",G_CALLBACK (wizserv_setting_clickautosend), window);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ctrl), ifwizserv_setting_autosend);
    gtk_box_pack_start (GTK_BOX (box), ctrl, TRUE, TRUE, 0);

    ctrl = gtk_check_button_new_with_label ("Auto disconnect when sucessfully send ");
    g_signal_connect (G_OBJECT (ctrl), "clicked",G_CALLBACK (wizserv_setting_clickautodisconnect), window);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ctrl), ifwizserv_setting_autodisconnect);
    gtk_box_pack_start (GTK_BOX (box), ctrl, TRUE, TRUE, 0);

    ctrl = gtk_hseparator_new ();
    gtk_box_pack_start (GTK_BOX (vbox), ctrl, FALSE, TRUE, 0);

    box = gtk_hbox_new (FALSE, 10);
    gtk_container_set_border_width (GTK_CONTAINER (box), 10);
    gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);

    ctrl = gtk_button_new_with_label ("Open Now");
    g_signal_connect (G_OBJECT (ctrl), "clicked",G_CALLBACK (wizserv_setting_clickopen), window);
    gtk_box_pack_start (GTK_BOX (box), ctrl, TRUE, TRUE, 0);

    ctrl = gtk_button_new_with_label ("Close Now");
    g_signal_connect (G_OBJECT (ctrl), "clicked",G_CALLBACK (wizserv_setting_clickclose), window);
    gtk_box_pack_start (GTK_BOX (box), ctrl, TRUE, TRUE, 0);
    
    ctrl = gtk_vseparator_new ();
    gtk_widget_set_size_request (GTK_WIDGET (ctrl), 60, 22);
    gtk_box_pack_start (GTK_BOX (box), ctrl, FALSE, TRUE, 0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -