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

📄 gauthinfo.c

📁 网络爬虫程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************//*    This code is part of WWW grabber called pavuk                        *//*    Copyright (c) 1997 - 2001 Stefan Ondrejicka                          *//*    Distributed under GPL 2 or later                                     *//***************************************************************************/#include "config.h"#ifdef GTK_FACE#include <stdio.h>#include <string.h>#include "authinfo.h"#include "gauthinfo.h"#include "gui.h"#include "icons/ok.xpm"#include "icons/cancel.xpm"#include "icons/append.xpm"#include "icons/apply.xpm"#include "icons/clear.xpm"#include "icons/delete.xpm"#include "icons/modify.xpm"#include "icons/save.xpm"#include "icons/load.xpm"static GtkWidget *list;static GtkWidget *topl = NULL;static GtkWidget *w_prot;static GtkWidget *w_host;static GtkWidget *w_user;static GtkWidget *w_pass;static GtkWidget *w_base;static GtkWidget *w_realm;static GtkWidget *w_type[4];static void fill_list(GtkWidget * clist){  dllist *ptr;  LOCK_AUTHINFO;  ptr = authdata;  while(ptr)  {    authinfo *ai = (authinfo *) ptr->data;    char *ad[7];    char pom[10];    char host[100];    ad[0] = prottable[ai->prot].urlid;    snprintf(host, sizeof(host), "%s:%d", ai->host, ai->port);    ad[1] = host;    ad[2] = ai->user ? ai->user : "";    ad[3] = ai->pass ? ai->pass : "";    ad[4] = ai->base ? ai->base : "";    ad[5] = ai->realm ? ai->realm : "";    sprintf(pom, "%d", ai->type);    ad[6] = pom;    gtk_clist_append(GTK_CLIST(clist), ad);    ptr = ptr->next;  }  UNLOCK_AUTHINFO;}static void PopdownW(GtkObject * object, gpointer func_data){  gtk_widget_destroy(GTK_WIDGET(func_data));}static void SaveAI(GtkWidget * w, gpointer data){  char *fn =    (gchar *) gtk_file_selection_get_filename(GTK_FILE_SELECTION(data));  if(authinfo_save(fn))  {    gdk_beep();  }  else    gtk_widget_destroy(GTK_WIDGET(data));}static void Save(GtkWidget * w, gpointer data){  static GtkWidget *fn = NULL;  if(fn)  {    gtk_widget_show_all(fn);    if(GTK_WIDGET_REALIZED(fn))      gdk_window_raise(fn->window);    return;  }  fn = gtk_file_selection_new(gettext("Pavuk: Save auth. info file"));  gtk_signal_connect(GTK_OBJECT(fn), "destroy",    GTK_SIGNAL_FUNC(gtk_widget_destroyed), &fn);  gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fn)->ok_button),    "clicked", GTK_SIGNAL_FUNC(SaveAI), fn);  gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fn)->cancel_button),    "clicked", GTK_SIGNAL_FUNC(PopdownW), fn);  if(cfg.auth_file)    gtk_file_selection_set_filename(GTK_FILE_SELECTION(fn), cfg.auth_file);  gtk_widget_show_all(fn);}static void LoadAI(GtkWidget * w, gpointer data){  char *fn =    (gchar *) gtk_file_selection_get_filename(GTK_FILE_SELECTION(data));  if(authinfo_load(fn))  {    gdk_beep();  }  else  {    gtk_clist_freeze(GTK_CLIST(list));    gtk_clist_clear(GTK_CLIST(list));    fill_list(list);    gtk_clist_thaw(GTK_CLIST(list));    gtk_widget_destroy(GTK_WIDGET(data));  }}static void Load(GtkWidget * w, gpointer data){  static GtkWidget *fn = NULL;  if(fn)  {    gtk_widget_show_all(fn);    if(GTK_WIDGET_REALIZED(fn))      gdk_window_raise(fn->window);    return;  }  fn = gtk_file_selection_new(gettext("Pavuk: Load auth. info file"));  gtk_signal_connect(GTK_OBJECT(fn), "destroy",    GTK_SIGNAL_FUNC(gtk_widget_destroyed), &fn);  gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fn)->ok_button),    "clicked", GTK_SIGNAL_FUNC(LoadAI), fn);  gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fn)->cancel_button),    "clicked", GTK_SIGNAL_FUNC(PopdownW), fn);  if(cfg.auth_file)    gtk_file_selection_set_filename(GTK_FILE_SELECTION(fn), cfg.auth_file);  gtk_widget_show_all(fn);}static void Apply(GtkObject * object, gpointer func_data){  int i, j;  LOCK_AUTHINFO;  while(authdata)  {    authinfo *ai = (authinfo *) authdata->data;    free_deep_authinfo(ai);    authdata = dllist_remove_entry(authdata, authdata);  }  for(i = 0; i < GTK_CLIST(func_data)->rows; i++)  {    char *ld[7];    char *p;    authinfo *ai;    for(j = 0; j < 7; j++)      gtk_clist_get_text(GTK_CLIST(func_data), i, j, &ld[j]);    ai = _malloc(sizeof(authinfo));    for(j = 0; j < NUM_ELEM(prottable); j++)    {      if(prottable[j].urlid && !strcmp(ld[0], prottable[j].urlid))      {        ai->prot = j;        break;      }    }    p = strchr(ld[1], ':');    ai->host = p ? new_n_string(ld[1], p - ld[1]) : new_string(ld[1]);    ai->port = p ? atoi(p + 1) : prottable[ai->prot].default_port;    ai->user = new_string(ld[2]);    ai->pass = new_string(ld[3]);    ai->base = ld[4] && *ld[4] ? new_string(ld[4]) : NULL;    ai->realm = ld[5] && *ld[5] ? new_string(ld[5]) : NULL;    ai->type = atoi(ld[6]);    authdata = dllist_append(authdata, (dllist_t)ai);  }  UNLOCK_AUTHINFO;}static void CopyFromList(GtkObject * object, int row, int col,  GdkEvent * event, gpointer data){  char *p;  int i, j;  if(GTK_CLIST(object)->selection)  {    gtk_clist_get_text(GTK_CLIST(object), row, 0, &p);    for(i = 0, j = 0; i < NUM_ELEM(prottable); i++)    {      if(prottable[i].urlid && !strcmp(p, prottable[i].urlid))      {        gtk_option_menu_set_history(GTK_OPTION_MENU(w_prot), j);        break;      }      if(prottable[i].supported)        j++;    }    gtk_clist_get_text(GTK_CLIST(object), row, 1, &p);    gtk_entry_set_text(GTK_ENTRY(w_host), p);    gtk_clist_get_text(GTK_CLIST(object), row, 2, &p);    gtk_entry_set_text(GTK_ENTRY(w_user), p);    gtk_clist_get_text(GTK_CLIST(object), row, 3, &p);    gtk_entry_set_text(GTK_ENTRY(w_pass), p);    gtk_clist_get_text(GTK_CLIST(object), row, 4, &p);    gtk_entry_set_text(GTK_ENTRY(w_base), p);    gtk_clist_get_text(GTK_CLIST(object), row, 5, &p);    gtk_entry_set_text(GTK_ENTRY(w_realm), p);    gtk_clist_get_text(GTK_CLIST(object), row, 6, &p);    gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(w_type[atoi(p) ? atoi(p) -          1 : 1]), TRUE);  }}static void NewRow(int row, GtkWidget * list){  char *ad[7];  char pom[10];  ad[0] =    prottable[(long)    gtk_object_get_user_data(GTK_OBJECT(GTK_OPTION_MENU(w_prot)->menu_item))].    urlid;  ad[1] = (gchar *) gtk_entry_get_text(GTK_ENTRY(w_host));  ad[2] = (gchar *) gtk_entry_get_text(GTK_ENTRY(w_user));  ad[3] = (gchar *) gtk_entry_get_text(GTK_ENTRY(w_pass));  ad[4] = (gchar *) gtk_entry_get_text(GTK_ENTRY(w_base));  ad[5] = (gchar *) gtk_entry_get_text(GTK_ENTRY(w_realm));#ifdef ENABLE_NTLM  sprintf(pom, "%d",    GTK_TOGGLE_BUTTON(w_type[0])->active ? 1 : (GTK_TOGGLE_BUTTON(w_type[1])->      active ? 2 : (GTK_TOGGLE_BUTTON(w_type[2])->active ? 3 : 4)));#else  sprintf(pom, "%d",    GTK_TOGGLE_BUTTON(w_type[0])->active ? 1 : (GTK_TOGGLE_BUTTON(w_type[1])->      active ? 2 : 3));#endif  ad[6] = pom;  if(ad[1] && *ad[1] && ad[2] && *ad[2] && ad[3] && *ad[3])  {    if(row < 0)      gtk_clist_append(GTK_CLIST(list), ad);    else    {      int i;      for(i = 0; i < 7; i++)        gtk_clist_set_text(GTK_CLIST(list), row, i, ad[i]);    }  }  else

⌨️ 快捷键说明

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