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 + -
显示快捷键?