uconfig.c

来自「网络爬虫程序」· C语言 代码 · 共 1,533 行 · 第 1/3 页

C
1,533
字号
  ptr = NULL;\  if (p && *p)\  {\    if (*p == '\"')\    {\      ptr = make_re_list(p);\      if (!ptr)\      {\        _free(p);\        _MT_CFGSTAMP;\        UNLOCK_GCFG;\        return -1;\      }\    }\    else\    {\      re_entry *ree = re_make(p);\      if (ree)\      {\        ptr = dllist_append(ptr, (dllist_t) ree);\      }\      else\      {\        _free(p);\        _MT_CFGSTAMP;\        UNLOCK_GCFG;\        return -1;\      }\    }\  }\  while(l)\  {\    re_free((re_entry *)l->data);\    l = dllist_remove_entry(l, l);\  }\        l = ptr;\  _free(p);\}#endif /* GTK_FACE */void xset_cfg_values_lim(void){  char pom[2048];  struct tm *ltime;  time_t t;  SET_HTML_TAGS;  SET_BOOL(gui_cfg.ftp_html, cfg.ftp_html);  SET_BOOL(gui_cfg.leaved_sw, cfg.condition.dont_leave_dir);  SET_BOOL(gui_cfg.leaves_sw, cfg.condition.dont_leave_site);  SET_BOOL(gui_cfg.dont_leave_site_dir, cfg.condition.dont_leave_site_dir);  SET_BOOL(gui_cfg.singlepage, cfg.singlepage);  SET_BOOL(gui_cfg.limit_inlines, cfg.condition.limit_inlines);  SET_BOOL(gui_cfg.ftpd_sw, cfg.condition.ftpdir);  SET_BOOL(gui_cfg.cgi_sw, cfg.condition.cgi);  SET_BOOL(gui_cfg.allow_ports, cfg.condition.allow_ports);  SET_BOOL(gui_cfg.hosts_sw, cfg.condition.allow_site);  SET_BOOL(gui_cfg.domain_sw, cfg.condition.allow_domain);  SET_BOOL(gui_cfg.mime_sw, cfg.condition.allow_mime);  SET_BOOL(gui_cfg.prefix_sw, cfg.condition.allow_prefix);  SET_BOOL(gui_cfg.sufix_sw, cfg.condition.allow_sufix);  SET_BOOL(gui_cfg.robots_sw, cfg.condition.allow_robots);  SET_NUM(gui_cfg.maxlev_label, cfg.condition.max_levels);  SET_NUM(gui_cfg.maxdoc_label, cfg.condition.max_documents);  SET_NUM(gui_cfg.leave_level, cfg.condition.leave_level);  SET_NUM(gui_cfg.site_level, cfg.condition.site_level);  SET_NUM(gui_cfg.maxsize_label, cfg.condition.max_size);  SET_NUM(gui_cfg.min_size, cfg.condition.min_size);  SET_NUMLIST(gui_cfg.ports, cfg.condition.ports);  SET_PAT(gui_cfg.pattern_label, cfg.condition.pattern);  SET_PAT(gui_cfg.skip_pattern, cfg.condition.skip_pattern);  SET_PAT(gui_cfg.url_pattern_label, cfg.condition.url_pattern);  SET_PAT(gui_cfg.skip_url_pattern, cfg.condition.skip_url_pattern);#ifdef HAVE_REGEX  SET_REPAT(gui_cfg.rpattern, cfg.condition.rpattern);  SET_REPAT(gui_cfg.skip_rpattern, cfg.condition.rskip_pattern);  SET_REPAT(gui_cfg.url_rpattern, cfg.condition.rurl_pattern);  SET_REPAT(gui_cfg.url_skip_rpattern, cfg.condition.rskip_url_pattern);#endif  SET_TEXT(gui_cfg.en_uexit, cfg.condition.uexit);  SET_TEXT(gui_cfg.follow_cmd, cfg.condition.follow_cmd);  SET_LIST(gui_cfg.hosts_list, cfg.condition.sites);  SET_LIST(gui_cfg.domain_list, cfg.condition.domains);  SET_LIST(gui_cfg.sufixlist, cfg.condition.sufix);  SET_LIST(gui_cfg.prefixlist, cfg.condition.dir_prefix);  SET_LIST(gui_cfg.amimelist, cfg.condition.mime);  SET_DOUBLE(gui_cfg.max_time, cfg.max_time);  SET_BOOL(gui_cfg.btime_sw, !(cfg.condition.btime == 0));  t = time(NULL);  LOCK_TIME;  if(cfg.condition.btime)    ltime = new_tm(localtime(&cfg.condition.btime));  else    ltime = new_tm(localtime(&t));  UNLOCK_TIME;  ltime->tm_year += 1900;  SET_CALENDAR(gui_cfg.btime_cal, ltime);  SET_NUM(gui_cfg.btime_h_entry, ltime->tm_hour);  SET_NUM(gui_cfg.btime_min_entry, ltime->tm_min);  _free(ltime);  SET_BOOL(gui_cfg.etime_sw, !(cfg.condition.etime == 0));  LOCK_TIME;  if(cfg.condition.etime)    ltime = new_tm(localtime(&cfg.condition.etime));  else    ltime = new_tm(localtime(&t));  UNLOCK_TIME;  ltime->tm_year += 1900;  SET_CALENDAR(gui_cfg.etime_cal, ltime);  SET_NUM(gui_cfg.etime_h_entry, ltime->tm_hour);  SET_NUM(gui_cfg.etime_min_entry, ltime->tm_min);  _free(ltime);  SET_PATH(gui_cfg.subdir_label, cfg.subdir);}void xset_cfg_values_comm(void){  dllist *ptr;  char pom[PATH_MAX];  SET_PATH(gui_cfg.cdir_label, cfg.cache_dir);  SET_TEXT(gui_cfg.default_prefix, cfg.default_prefix);  SET_PATH(gui_cfg.info_dir, cfg.info_dir);#ifdef HAVE_BDB_18x  SET_PATH(gui_cfg.ns_cache_dir, cfg.ns_cache_dir);  SET_PATH(gui_cfg.moz_cache_dir, cfg.moz_cache_dir);#endif  SET_PATH(gui_cfg.en_cookie_file, cfg.cookie_file);  SET_TEXT(gui_cfg.index_name, cfg.index_name);  SET_TEXT(gui_cfg.store_name, cfg.store_name);  SET_BOOL(gui_cfg.check_size, cfg.check_size);  SET_BOOL(gui_cfg.store_index, cfg.store_index);  SET_BOOL(gui_cfg.unique_doc, cfg.unique_doc);  SET_BOOL(gui_cfg.del_after, cfg.del_after);  SET_BOOL(gui_cfg.preserve_perm, cfg.preserve_perm);  SET_BOOL(gui_cfg.preserve_links, cfg.preserve_links);  SET_BOOL(gui_cfg.retrieve_slink, cfg.retrieve_slink);  SET_BOOL(gui_cfg.ftp_list, cfg.ftp_list);  SET_BOOL(gui_cfg.fix_wuftpd, cfg.fix_wuftpd);  SET_BOOL(gui_cfg.use_http11, cfg.use_http11);  SET_FTPHSLIST(gui_cfg.ftp_login_hs, cfg.ftp_login_hs);  SET_BOOL(gui_cfg.sw_cookie_send, cfg.send_cookies);  SET_BOOL(gui_cfg.sw_cookie_recv, cfg.recv_cookies);  SET_BOOL(gui_cfg.sw_cookie_update, cfg.update_cookies);  SET_BOOL(gui_cfg.cookie_check_domain, cfg.cookie_check_domain);  SET_BOOL(gui_cfg.ptime, cfg.preserve_time);  SET_BOOL(gui_cfg.oldrm_sw, cfg.remove_old);  SET_BOOL(gui_cfg.cache_sw, cfg.cache);  SET_BOOL(gui_cfg.ftp_sw, cfg.condition.ftp);  SET_BOOL(gui_cfg.http_sw, cfg.condition.http);#ifdef USE_SSL  SET_BOOL(gui_cfg.https_sw, cfg.condition.https);  SET_BOOL(gui_cfg.ftps_sw, cfg.condition.ftps);#endif  SET_BOOL(gui_cfg.gopher_sw, cfg.condition.gopher);  SET_BOOL(gui_cfg.gopher_httpgw, cfg.gopher_via_http);  SET_BOOL(gui_cfg.ftp_httpgw, cfg.ftp_via_http);  SET_BOOL(gui_cfg.ftp_dirtyp, cfg.ftp_dirtyp);  SET_BOOL(gui_cfg.freget_sw, cfg.freget);  SET_BOOL(gui_cfg.noreloc_sw, cfg.rewrite_links);  SET_BOOL(gui_cfg.url_to_local, TRUE);  SET_BOOL(gui_cfg.all_to_local, cfg.all_to_local);  SET_BOOL(gui_cfg.all_to_remote, cfg.all_to_remote);  SET_BOOL(gui_cfg.sel_to_local, cfg.sel_to_local);  SET_BOOL(gui_cfg.post_update, cfg.post_update);  SET_BOOL(gui_cfg.read_css, cfg.read_css);  SET_BOOL(gui_cfg.enable_js, cfg.enable_js);  SET_BOOL(gui_cfg.enable_info, cfg.enable_info);  SET_BOOL(gui_cfg.auto_referer, cfg.auto_referer);  SET_BOOL(gui_cfg.referer, cfg.referer);  SET_BOOL(gui_cfg.enc_sw, cfg.use_enc);  SET_BOOL(gui_cfg.auth_reuse_nonce, cfg.auth_reuse_nonce);  SET_BOOL(gui_cfg.auth_reuse_proxy_nonce, cfg.auth_reuse_proxy_nonce);  SET_BOOL(gui_cfg.send_if_range, cfg.send_if_range);  SET_BOOL(gui_cfg.show_time, cfg.show_time);  SET_ENUM(gui_cfg.http_auth_scheme, cfg.auth_scheme);  SET_ENUM(gui_cfg.http_proxy_auth_scheme, cfg.proxy_auth_scheme);#ifdef ENABLE_NTLM  SET_TEXT(gui_cfg.auth_ntlm_domain, cfg.auth_ntlm_domain);  SET_TEXT(gui_cfg.auth_proxy_ntlm_domain, cfg.auth_proxy_ntlm_domain);#endif  SET_C_EXTRAS;  SET_SSL_VER;#ifdef WITH_TREE  SET_TEXT(gui_cfg.browser_label, cfg.browser);#endif  SET_TEXT(gui_cfg.remind_cmd, cfg.remind_cmd);  SET_TEXT(gui_cfg.post_cmd, cfg.post_cmd);  SET_TEXT(gui_cfg.identity, cfg.identity);  SET_TEXT(gui_cfg.ftp_proxyh_label, cfg.ftp_proxy);  SET_NUM(gui_cfg.ftp_proxyp_label, cfg.ftp_proxy_port);  SET_TEXT(gui_cfg.gopher_proxyh_label, cfg.gopher_proxy);  SET_NUM(gui_cfg.gopher_proxyp_label, cfg.gopher_proxy_port);#ifdef USE_SSL  SET_TEXT(gui_cfg.ssl_proxyh_label, cfg.ssl_proxy);  SET_NUM(gui_cfg.ssl_proxyp_label, cfg.ssl_proxy_port);  SET_TEXT(gui_cfg.ssl_cert_passwd_en, cfg.ssl_cert_passwd);  SET_TEXT(gui_cfg.ssl_cipher_list, cfg.ssl_cipher_list);  SET_BOOL(gui_cfg.unique_sslid, cfg.unique_sslid);#ifdef USE_SSL_IMPL_OPENSSL  SET_PATH(gui_cfg.ssl_cert_file_en, cfg.ssl_cert_file);  SET_PATH(gui_cfg.ssl_key_file_en, cfg.ssl_key_file);#ifdef HAVE_RAND_EGD  SET_PATH(gui_cfg.egd_socket, cfg.egd_socket);#endif#endif#ifdef USE_SSL_IMPL_NSS  SET_PATH(gui_cfg.nss_cert_dir, cfg.nss_cert_dir);  SET_BOOL(gui_cfg.nss_accept_unknown_cert, cfg.nss_accept_unknown_cert);  SET_BOOL(gui_cfg.nss_domestic_policy, cfg.nss_domestic_policy);#endif#endif  SET_TEXT(gui_cfg.local_ip, cfg.local_ip);  memset(&cfg.local_ip_addr, '\0', sizeof(cfg.local_ip_addr));  if(cfg.local_ip && net_host_to_in_addr(cfg.local_ip, &cfg.local_ip_addr))  {    xherror(cfg.local_ip);  }  ptr = cfg.http_headers;  pom[0] = '\0';  while(ptr)  {    httphdr *hdr = (httphdr *) ptr->data;    char pom2[PATH_MAX];    char *p1, *p2;    p1 = escape_str(hdr->name, "\\\"");    p2 = escape_str(hdr->val, "\\\"");    sprintf(pom2, "\"%s%s %s\" ", hdr->all ? "+" : "", p1, p2);    _free(p1);    _free(p2);    strcat(pom, pom2);    ptr = ptr->next;  }  SET_TEXT(gui_cfg.http_headers, pom);  SET_TEXT(gui_cfg.ftp_list_options, cfg.ftp_list_options);  SET_NUM(gui_cfg.en_cookie_max, cfg.cookies_max);  SET_NUM(gui_cfg.base_level_label, cfg.base_level);  SET_DOUBLE(gui_cfg.timeout_label, cfg.ctimeout);  SET_NUM(gui_cfg.retry_label, cfg.nretry);  SET_NUM(gui_cfg.redir_label, cfg.nredir);  SET_NUM(gui_cfg.reget_label, cfg.nreget);  SET_NUM(gui_cfg.sleep_label, cfg.sleep);  SET_BOOL(gui_cfg.rsleep, cfg.rsleep);  SET_NUM(gui_cfg.xloglen_label, cfg.xlogsize);  SET_NUM(gui_cfg.bufsize, cfg.bufsize);#ifdef HAVE_MT  SET_NUM(gui_cfg.nthr, cfg.nthr);#endif#ifdef HAVE_FSTATFS  SET_NUM(gui_cfg.fs_quota, cfg.fs_quota);#endif  SET_NUM(gui_cfg.file_quota, cfg.file_quota);  SET_NUM(gui_cfg.trans_quota, cfg.trans_quota);  SET_DOUBLE(gui_cfg.maxrate, cfg.maxrate);  SET_DOUBLE(gui_cfg.minrate, cfg.minrate);  SET_BOOL(gui_cfg.gen_logname, cfg.gen_logname);  SET_PATH(gui_cfg.log_label, cfg.logfile);  SET_PATH(gui_cfg.slog_label, cfg.short_logfile);  SET_TEXT(gui_cfg.auth_label, cfg.name_auth);  SET_TEXT(gui_cfg.pass_label, cfg.passwd_auth);  SET_TEXT(gui_cfg.proxy_auth_label, cfg.http_proxy_user);  SET_TEXT(gui_cfg.proxy_pass_label, cfg.http_proxy_pass);  SET_TEXT(gui_cfg.ftp_proxy_user, cfg.ftp_proxy_user);  SET_TEXT(gui_cfg.ftp_proxy_pass, cfg.ftp_proxy_pass);  SET_BOOL(gui_cfg.send_from, cfg.send_from);  SET_TEXT(gui_cfg.from_label, cfg.from);  SET_NUM(gui_cfg.rollback_label, cfg.rollback);  SET_NUM(gui_cfg.ddays_label, cfg.ddays);  SET_NUM(gui_cfg.hash_size, cfg.hash_size);  SET_LIST(gui_cfg.alanglist, cfg.accept_lang);  SET_LIST(gui_cfg.acharset_list, cfg.accept_chars);  SET_LIST(gui_cfg.cookie_domain_list, cfg.cookies_disabled_domains);  SET_TEXT(gui_cfg.tr_del_chr, cfg.tr_del_chr);  SET_TEXT(gui_cfg.tr_str_s1, cfg.tr_str_s1);  SET_TEXT(gui_cfg.tr_str_s2, cfg.tr_str_s2);  SET_TEXT(gui_cfg.tr_chr_s1, cfg.tr_chr_s1);  SET_TEXT(gui_cfg.tr_chr_s2, cfg.tr_chr_s2);  SET_COMBO_IDX(gui_cfg.scheduling_strategie, cfg.scheduling_strategie);  SET_PAT(gui_cfg.dont_touch_url_pattern, cfg.dont_touch_url_pattern);#ifdef HAVE_REGEX  SET_REPAT(gui_cfg.dont_touch_url_rpattern, cfg.dont_touch_url_rpattern);  SET_REPAT(gui_cfg.dont_touch_tag_rpattern, cfg.dont_touch_tag_rpattern);  SET_BOOL(gui_cfg.remove_adv, cfg.remove_adv);  {    dllist *ptr2 = cfg.advert_res;    ptr = NULL;    while(ptr2)    {      ptr = dllist_append(ptr, (dllist_t) ((re_entry *) ptr2->data)->pattern);      ptr2 = ptr2->next;    }    SET_DLLIST(gui_cfg.advert_res, ptr);    while(ptr)      ptr = dllist_remove_entry(ptr, ptr);    ptr2 = cfg.js_patterns;    ptr = NULL;    while(ptr2)    {      ptr = dllist_append(ptr, (dllist_t) ((re_entry *) ptr2->data)->pattern);      ptr2 = ptr2->next;    }    SET_DLLIST(gui_cfg.js_patterns, ptr);    while(ptr)      ptr = dllist_remove_entry(ptr, ptr);  }#endif#ifdef GTK_FACE  {    char *ld[3];    ptr = cfg.lfnames;    gtk_clist_freeze(GTK_CLIST(gui_cfg.rules_list));    gtk_clist_clear(GTK_CLIST(gui_cfg.rules_list));    while(ptr)    {      lfname *lf = (lfname *) ptr->data;      ld[0] = (lf->type == LFNAME_FNMATCH) ? "F" : "R";      ld[1] = lf->matchstr;      ld[2] = lf->transstr;      gtk_clist_append(GTK_CLIST(gui_cfg.rules_list), ld);      ptr = ptr->next;    }    gtk_clist_thaw(GTK_CLIST(gui_cfg.rules_list));  }#endif  SET_URLLIST(gui_cfg.url_list, cfg.request);  SET_URLLIST(gui_cfg.formdata_list, cfg.formdata);  SET_PROXYLIST(gui_cfg.http_proxy_list, cfg.http_proxy);  SET_JST(gui_cfg.js_transform, cfg.js_transform);}#ifdef HAVE_REGEXstatic dllist *make_re_list(char *str){  dllist *retv = NULL;  char *p;  bool_t err = FALSE;  for(p = get_1qstr(str); p; p = get_1qstr(NULL))  {    re_entry *ree;    ree = re_make(p);    if(!ree)    {      err = TRUE;      break;    }    else    {      retv = dllist_append(retv, (dllist_t) ree);    }  }  if(err)  {    while(retv)    {      re_free((re_entry *) retv->data);      retv = dllist_remove_entry(retv, retv);    }  }  return retv;}#endif

⌨️ 快捷键说明

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