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

📄 wizserver.c

📁 Linux 上的socket嗅探器
💻 C
📖 第 1 页 / 共 3 页
字号:
    ctrl=gtk_button_new_from_stock(GTK_STOCK_OK);
    g_signal_connect (G_OBJECT (ctrl), "clicked",G_CALLBACK (wizserv_setting_clickok), window);
    gtk_box_pack_start (GTK_BOX (box), ctrl, TRUE, TRUE, 0);
    
    /* add code end  */
    if(window!=NULL)
        gtk_container_add (GTK_CONTAINER (window), vbox);
    gtk_widget_show_all (vbox);
    return vbox;   
} 




GtkWidget* wizserv_setting_show(void)
{
    GtkWidget *hWin;
    
    if(ifwizserv_setting_open)
        return NULL;
    ifwizserv_setting_open=1;
    /* Create a new window */
    hWin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_widget_set_size_request (GTK_WIDGET(hWin), 580, 350);
    gtk_window_set_title (GTK_WINDOW (hWin), "Setting");
    /* Here we connect the "destroy" event to a signal handler */
    gtk_window_set_position(GTK_WINDOW(hWin),GTK_WIN_POS_CENTER);
    g_signal_connect(GTK_OBJECT(hWin), "delete_event",
        GTK_SIGNAL_FUNC(wizserv_setting_ondestroy),

        GTK_OBJECT(hWin));
	  gtk_grab_add(hWin);
    /* Sets the border width of the window. */
    gtk_container_set_border_width (GTK_CONTAINER(hWin), 10);
    /* ------------------- add extra code here --------------------- */
    wizserv_setting_create(hWin);    
    /* ------------------------------------------------------------- */
    gtk_widget_show_all(hWin);
    return  hWin;
}

  




/* add for server function running ... */

#include <stdarg.h>
void Serv_OnDebugMessage( char * pszMsg, ... )
{
    static char pszErr[ 1024 ];
    char *msgstart=NULL;
    static int count=0;
    sprintf(pszErr,"%05d:",++count);
    msgstart=pszErr+strlen(pszErr);
    va_list args;
    va_start( args, pszMsg );
    vsprintf( msgstart, pszMsg, args );  pszErr[ 1023 ] = '\0';
    va_end( args );
    if(count%50==0)
        wizserv_areac_settext(pszErr);
    else
        wizserv_areac_addtext(pszErr);

}

guint areae_packetrownum=0;
int Serv_OnClientConnected(REQLIST *lpuser)
{
    int index;
    char itemsg[256];

    if(GetConnectClient(lpuser)==NULL)
    {
        Serv_OnDebugMessage("GetConnectClient failed !");
        return -1;
    }

    index=gtk_clist_find_row_from_data (GTK_CLIST(wizserv_areaelist.ctrl),(gpointer)lpuser);
    if(index<0)
    {
        index=gtk_clist_insert(GTK_CLIST(wizserv_areaelist.ctrl),0,wizserv_areae_defaulttitles);
        gtk_clist_set_row_data (GTK_CLIST(wizserv_areaelist.ctrl), index    ,(gpointer)lpuser);
        areae_packetrownum++;
    }

    // SOCKET,?,??,?,??,??
    sprintf(itemsg,"%d",lpuser->sd_accept);
    gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,0,(gchar *)itemsg);
    sprintf(itemsg,"%s",lpuser->ClientAddr);
    gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,1,(gchar *)itemsg);
    sprintf(itemsg,"%u",(unsigned int)lpuser->rpcount);
    gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,2,(gchar *)itemsg);
    sprintf(itemsg,"%u",(unsigned int)lpuser->wpcount);
    gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,3,(gchar *)itemsg);
    sprintf(itemsg,"%u",(unsigned int)lpuser->rcount);
    gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,4,(gchar *)itemsg);
    sprintf(itemsg,"%u",(unsigned int)lpuser->wcount);
    gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,5,(gchar *)itemsg);

    if(areae_packetrownum>=200)
    {
        gtk_clist_remove(GTK_CLIST(wizserv_areaelist.ctrl),areae_packetrownum-1);
        areae_packetrownum=areae_packetrownum-1;
    }

    return  index;
}


int Serv_OnClientDisconnected(REQLIST *lpuser)
{
    int index=0;
    if(lpuser==NULL)
         return -1;


    if(GetDisconnectClient(lpuser)<=0)
    {
         Serv_OnDebugMessage("No Clients or segment fault !");
         return 0;
    }

    index=gtk_clist_find_row_from_data (GTK_CLIST(wizserv_areaelist.ctrl),(gpointer)lpuser);
    if(index>=0)
    {
        if(lpuser==curClient)
        {
            curClient=0;
            gtk_clist_clear(GTK_CLIST(wizserv_areaa1list.ctrl));
        }
        gtk_clist_remove(GTK_CLIST(wizserv_areaelist.ctrl),index);
    }

    return index;
}



int Serv_OnRequestPro(REQLIST *lpuser,unsigned char *lpbuf,int recvlen)
{
    int index;
    char itemsg[256];
    if(lpuser==NULL)
        return 0;
    if(CheckSocketUser(lpuser)>0)
    {
        ClientDataInfo *retinsert=NULL;
        retinsert=InsertDataToClient(lpuser,lpbuf,recvlen);
        if(retinsert==NULL)
        {
            Serv_OnDebugMessage("InsertDataToClient failure !");
        }
        else if(lpuser == curClient)
        {
            /* add extra code here */
            struct tm *lptm=0;;
            time_t ctimet;

            index=gtk_clist_find_row_from_data (GTK_CLIST(wizserv_areaa1list.ctrl),(gpointer)retinsert);
            if(index<0)
            {
                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);
        }

        index=gtk_clist_find_row_from_data (GTK_CLIST(wizserv_areaelist.ctrl),(gpointer)lpuser);
        if(index>=0)
        {
           /* add code here */
            sprintf(itemsg,"%u",(unsigned int)lpuser->rpcount);
            gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,2,(gchar *)itemsg);
            sprintf(itemsg,"%u",(unsigned int)lpuser->rcount);
            gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,4,(gchar *)itemsg);
        }

        if(ifwizserv_autosend)
        {
            curClient=lpuser;
            wizserv_areab2_clicksend(NULL,NULL);
        }     
    }
    
    return 1;
}

int Serv_OnClientSend(REQLIST *lpuser,unsigned char *lpbuf,int recvlen)
{
    int index;
    char itemsg[256];
    
    if(lpuser==NULL)
         return 0;  

    index=gtk_clist_find_row_from_data (GTK_CLIST(wizserv_areaelist.ctrl),(gpointer)lpuser);
    if(index>=0)
    {
        /* add code here */
        sprintf(itemsg,"%u",(unsigned int)lpuser->wpcount);
        gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,3,(gchar *)itemsg);
        sprintf(itemsg,"%u",(unsigned int)lpuser->wcount);
        gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,5,(gchar *)itemsg);       
    }               
    
    return 1;
}

/* ------------------------ main    dialogs  --------------------------------- */

GtkWidget* get_wizserver_dialog( GtkWidget *window)
{
    GtkWidget *areaA1, *areaA2, *areaB1, *areaB2, *areaC, *areaE;
    GtkWidget *span_ha, *span_hb, *span_va, *span_vc, *span_vd, *frame;

    /* create and link span */
    span_va = gtk_vpaned_new ();
    span_ha = gtk_hpaned_new ();
    span_hb = gtk_hpaned_new ();
    span_vc = gtk_vpaned_new ();
    span_vd = gtk_vpaned_new ();

    gtk_paned_add1 (GTK_PANED (span_va), span_ha);
    gtk_paned_add2 (GTK_PANED (span_va), span_hb);

    frame = gtk_frame_new("Send packet log:");
    gtk_container_add (GTK_CONTAINER (frame), span_vc);
    gtk_paned_add1 (GTK_PANED (span_hb), frame);
    frame = gtk_frame_new("Receive packet log:");
    gtk_container_add (GTK_CONTAINER (frame), span_vd);
    gtk_paned_add2 (GTK_PANED (span_hb), frame);

    /* span_ha.1 = area C */
    areaC= textarea_createlist(NULL,&textarea_c);
    gtk_widget_set_size_request (GTK_WIDGET (areaC), 300, 150);
    frame = gtk_frame_new("Message log:");
    gtk_container_add (GTK_CONTAINER (frame), areaC);
    gtk_paned_add1 (GTK_PANED (span_ha), frame);
    /* span_ha.2 = area E */
    areaE= wizserv_areae_create(NULL);
    gtk_widget_set_size_request (GTK_WIDGET (areaE), 500, 100);
    frame = gtk_frame_new("Connection log:");
    gtk_container_add (GTK_CONTAINER (frame), areaE);
    gtk_paned_add2 (GTK_PANED (span_ha), frame);
    /* span_vd.1 = area A1 */
    areaA1= wizserv_areaa1_create(NULL);
    gtk_paned_add1 (GTK_PANED (span_vd), areaA1);
    gtk_widget_set_size_request (GTK_WIDGET (areaA1), 500, 100);
    /* span_vd.2 = area A2 */

    areaA2= wizserv_areaa2_create(NULL);
    gtk_paned_add2 (GTK_PANED (span_vd), areaA2);
    gtk_widget_set_size_request (GTK_WIDGET (areaA2), 500, 200);
    /* span_vc.1 = area B1 */
    areaB1= textarea_createlist(NULL,&textarea_b1);
    gtk_paned_add1 (GTK_PANED (span_vc), areaB1);
    gtk_widget_set_size_request (GTK_WIDGET (areaB1), 300, 200);
    /* span_vc.2 = area B2 */
    areaB2= wizserv_areab2_create(NULL);
    gtk_paned_add2 (GTK_PANED (span_vc), areaB2);
    gtk_widget_set_size_request (GTK_WIDGET (areaB2), 300, 100);


    if(window!=NULL)
    {
        gtk_container_add (GTK_CONTAINER (window), span_va);
        gtk_widget_show (span_va);
    }
    
    Server_SetClientPro(
           Serv_OnDebugMessage,
           Serv_OnClientConnected,
           Serv_OnClientDisconnected,
           Serv_OnRequestPro,
           Serv_OnClientSend
           );

    return span_va;
}




⌨️ 快捷键说明

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