浏览代码

luci: fix some issue.

Nick Peng 1 年之前
父节点
当前提交
9ee27e7ba2

+ 1 - 2
package/luci-compat/files/luci/i18n/smartdns.zh-cn.po

@@ -400,8 +400,7 @@ msgid ""
 "rule. You can enter an IP address, such as 1.2.3.4, or a MAC address, "
 "such as aa:bb:cc:dd:ee:ff."
 msgstr ""
-"如果指定了客户端地址,则只有该客户端将应用此规则。您可以输入IP地址,"
-"例如: 1.2.3.4, 或MAC地址,例如: aa:bb:cc:dd:ee:ff。"
+"如果指定了客户端,那么对应的客户端会应用相应的规则,可以输入IP地址,如:1.2.3.4,或MAC地址,如:aa:bb:cc:dd:ee:ff。"
 
 msgid "If you like this software, please buy me a cup of coffee."
 msgstr "如果本软件对你有帮助,请给作者加个蛋。"

+ 4 - 1
package/luci-lite/files/luci/i18n/smartdns-lite.zh-cn.po

@@ -43,6 +43,9 @@ msgstr "DNS服务器端口号"
 msgid "Dnsmasq Forwarded To Smartdns Failure"
 msgstr "设置smartdns为dnsmasq上游失败"
 
+msgid "Dnsmasq Upstream Server"
+msgstr "Dnsmasq上游服务器"
+
 msgid "Domain List File"
 msgstr "域名列表文件"
 
@@ -92,7 +95,7 @@ msgid ""
 "If a client address is specified, only that client will apply this rule. You "
 "can enter an IP address, such as 1.2.3.4, or a MAC address, such as aa:bb:cc:"
 "dd:ee:ff."
-msgstr "如果指定了客户端,那么对应的客户端会应用相应的规则,可以输IP地址,如:1.2.3.4,或MAC地址,如:aa:bb:cc:dd:ee:ff。"
+msgstr "如果指定了客户端,那么对应的客户端会应用相应的规则,可以输IP地址,如:1.2.3.4,或MAC地址,如:aa:bb:cc:dd:ee:ff。"
 
 msgid "Invalid server address: %s"
 msgstr "无效的服务器地址:%s"

+ 8 - 3
package/luci-lite/files/root/etc/init.d/smartdns-lite

@@ -238,7 +238,7 @@ load_service()
 	args=""
 	local device=""
 	local adblock_set_name=""
-	local is_auto_set="0"
+	local auto_set_dnsmasq="0"
 
 	mkdir -p $SMARTDNS_VAR_CONF_DIR
 	rm -f $SMARTDNS_CONF_TMP
@@ -246,18 +246,23 @@ load_service()
 	config_get_bool enabled "$section" "enabled" '0'
 	[ "$enabled" != "1" ] && {
 		uci -q set smartdns.@smartdns[0].enabled="0"
+		uci -q del_list smartdns.@smartdns[0].conf_files="$SMARTDNS_CONF"
 		uci commit smartdns
+		clear_tproxy_rules
 		/etc/init.d/smartdns reload
 		return
 	}
 
 	config_get port "$section" "port" "53"
-	config_get server_mode "$section" "server_mode" "tcp_only"
-	config_get auto_set_dnsmasq "$section" "auto_set_dnsmasq" "0"
+	config_get server_mode "$section" "server_mode" "main"
 
 	[ "$server_mode" = "main" ] && {
 		port="53"
 	}
+
+	[ "$server_mode" = "dnsmasq_upstream" ] && {
+		auto_set_dnsmasq="1"
+	}
 	
 	config_list_foreach "$section" "servers" servers_append
 

+ 2 - 0
package/luci-lite/files/root/www/luci-static/resources/view/smartdns-lite/smartdns-lite.js

@@ -173,12 +173,14 @@ return view.extend({
 		o.rmempty = false;
 		o.value("main", _("Main DNS Server"));
 		o.value("upstream", _("Upstream DNS Server"));
+		o.value("dnsmasq_upstream", _("Dnsmasq Upstream Server"));
 
 		o = s.taboption("settings", form.Value, "port", _("DNS Server Port"), _("Smartdns server port."));
 		o.rmempty = true
 		o.default = 6053;
 		o.datatype = "port";
 		o.depends("server_mode", "upstream");
+		o.depends("server_mode", "dnsmasq_upstream");
 
 		o = s.taboption("parental", form.Flag, "pc_enabled", _("Enable"), _("Enable or disable smartdns server"));
 		o.rmempty = false;

+ 1 - 2
package/luci/files/luci/i18n/smartdns.zh-cn.po

@@ -403,8 +403,7 @@ msgid ""
 "rule. You can enter an IP address, such as 1.2.3.4, or a MAC address, "
 "such as aa:bb:cc:dd:ee:ff."
 msgstr ""
-"如果指定了客户端地址,则只有该客户端将应用此规则。您可以输入IP地址,"
-"例如: 1.2.3.4, 或MAC地址,例如: aa:bb:cc:dd:ee:ff。"
+"如果指定了客户端,那么对应的客户端会应用相应的规则,可以输入IP地址,如:1.2.3.4,或MAC地址,如:aa:bb:cc:dd:ee:ff。"
 
 msgid "If you like this software, please buy me a cup of coffee."
 msgstr "如果本软件对你有帮助,请给作者加个蛋。"

+ 1 - 0
src/dns_cache.c

@@ -96,6 +96,7 @@ static void _dns_cache_delete(struct dns_cache *dns_cache)
 	pthread_mutex_lock(&dns_cache_head.lock);
 	hash_del(&dns_cache->node);
 	list_del_init(&dns_cache->list);
+	dns_timer_del(&dns_cache->timer);
 	pthread_mutex_unlock(&dns_cache_head.lock);
 	atomic_dec(&dns_cache_head.num);
 	atomic_sub(sizeof(*dns_cache), &dns_cache_head.mem_size);

+ 23 - 31
src/dns_conf.c

@@ -194,6 +194,8 @@ static int _config_nftset_setvalue(struct dns_nftset_names *nftsets, const char
 static int _config_client_rule_flag_set(const char *ip_cidr, unsigned int flag, unsigned int is_clear);
 static int _config_client_rule_group_add(const char *client, const char *group_name);
 
+#define group_member(m) ((void *)offsetof(struct dns_conf_group, m))
+
 static __attribute__((unused)) int _dns_conf_group_int(int value, int *data)
 {
 	struct dns_conf_group *conf_group = _config_current_rule_group();
@@ -5926,12 +5928,10 @@ static struct config_item _config_item[] = {
 	CONF_CUSTOM("srv-record", _config_srv_record, NULL),
 	CONF_CUSTOM("https-record", _config_https_record, NULL),
 	CONF_CUSTOM("proxy-server", _config_proxy_server, NULL),
-	CONF_YESNO_FUNC("ipset-timeout", _dns_conf_group_yesno,
-					(void *)offsetof(struct dns_conf_group, ipset_nftset.ipset_timeout_enable)),
+	CONF_YESNO_FUNC("ipset-timeout", _dns_conf_group_yesno, group_member(ipset_nftset.ipset_timeout_enable)),
 	CONF_CUSTOM("ipset", _config_ipset, NULL),
 	CONF_CUSTOM("ipset-no-speed", _config_ipset_no_speed, NULL),
-	CONF_YESNO_FUNC("nftset-timeout", _dns_conf_group_yesno,
-					(void *)offsetof(struct dns_conf_group, ipset_nftset.nftset_timeout_enable)),
+	CONF_YESNO_FUNC("nftset-timeout", _dns_conf_group_yesno, group_member(ipset_nftset.nftset_timeout_enable)),
 	CONF_YESNO("nftset-debug", &dns_conf_nftset_debug_enable),
 	CONF_CUSTOM("nftset", _config_nftset, NULL),
 	CONF_CUSTOM("nftset-no-speed", _config_nftset_no_speed, NULL),
@@ -5942,20 +5942,18 @@ static struct config_item _config_item[] = {
 	CONF_CUSTOM("cache-file", _config_option_parser_filepath, (char *)&dns_conf_cache_file),
 	CONF_YESNO("cache-persist", &dns_conf_cache_persist),
 	CONF_INT("cache-checkpoint-time", &dns_conf_cache_checkpoint_time, 0, 3600 * 24 * 7),
-	CONF_YESNO_FUNC("prefetch-domain", _dns_conf_group_yesno, (void *)offsetof(struct dns_conf_group, dns_prefetch)),
-	CONF_YESNO_FUNC("serve-expired", _dns_conf_group_yesno, (void *)offsetof(struct dns_conf_group, dns_serve_expired)),
-	CONF_INT_FUNC("serve-expired-ttl", _dns_conf_group_int,
-				  (void *)offsetof(struct dns_conf_group, dns_serve_expired_ttl), 0, CONF_INT_MAX),
-	CONF_INT_FUNC("serve-expired-reply-ttl", _dns_conf_group_int,
-				  (void *)offsetof(struct dns_conf_group, dns_serve_expired_reply_ttl), 0, CONF_INT_MAX),
-	CONF_INT_FUNC("serve-expired-prefetch-time", _dns_conf_group_int,
-				  (void *)offsetof(struct dns_conf_group, dns_serve_expired_prefetch_time), 0, CONF_INT_MAX),
-	CONF_YESNO_FUNC("dualstack-ip-selection", _dns_conf_group_yesno,
-					(void *)offsetof(struct dns_conf_group, dualstack_ip_selection)),
+	CONF_YESNO_FUNC("prefetch-domain", _dns_conf_group_yesno, group_member(dns_prefetch)),
+	CONF_YESNO_FUNC("serve-expired", _dns_conf_group_yesno, group_member(dns_serve_expired)),
+	CONF_INT_FUNC("serve-expired-ttl", _dns_conf_group_int, group_member(dns_serve_expired_ttl), 0, CONF_INT_MAX),
+	CONF_INT_FUNC("serve-expired-reply-ttl", _dns_conf_group_int, group_member(dns_serve_expired_reply_ttl), 0,
+				  CONF_INT_MAX),
+	CONF_INT_FUNC("serve-expired-prefetch-time", _dns_conf_group_int, group_member(dns_serve_expired_prefetch_time), 0,
+				  CONF_INT_MAX),
+	CONF_YESNO_FUNC("dualstack-ip-selection", _dns_conf_group_yesno, group_member(dualstack_ip_selection)),
 	CONF_YESNO_FUNC("dualstack-ip-allow-force-AAAA", _dns_conf_group_yesno,
-					(void *)offsetof(struct dns_conf_group, dns_dualstack_ip_allow_force_AAAA)),
+					group_member(dns_dualstack_ip_allow_force_AAAA)),
 	CONF_INT_FUNC("dualstack-ip-selection-threshold", _dns_conf_group_int,
-				  (void *)offsetof(struct dns_conf_group, dns_dualstack_ip_selection_threshold), 0, 1000),
+				  group_member(dns_dualstack_ip_selection_threshold), 0, 1000),
 	CONF_CUSTOM("dns64", _config_dns64, NULL),
 	CONF_CUSTOM("log-level", _config_log_level, NULL),
 	CONF_CUSTOM("log-file", _config_option_parser_filepath, (char *)dns_conf_log_file),
@@ -5973,23 +5971,17 @@ static struct config_item _config_item[] = {
 	CONF_YESNO("audit-console", &dns_conf_audit_console),
 	CONF_YESNO("audit-syslog", &dns_conf_audit_syslog),
 	CONF_YESNO("acl-enable", &dns_conf_acl_enable),
-	CONF_INT_FUNC("rr-ttl", _dns_conf_group_int, (void *)offsetof(struct dns_conf_group, dns_rr_ttl), 0, CONF_INT_MAX),
-	CONF_INT_FUNC("rr-ttl-min", _dns_conf_group_int, (void *)offsetof(struct dns_conf_group, dns_rr_ttl_min), 0,
-				  CONF_INT_MAX),
-	CONF_INT_FUNC("rr-ttl-max", _dns_conf_group_int, (void *)offsetof(struct dns_conf_group, dns_rr_ttl_max), 0,
-				  CONF_INT_MAX),
-	CONF_INT_FUNC("rr-ttl-reply-max", _dns_conf_group_int,
-				  (void *)offsetof(struct dns_conf_group, dns_rr_ttl_reply_max), 0, CONF_INT_MAX),
-	CONF_INT_FUNC("local-ttl", _dns_conf_group_int, (void *)offsetof(struct dns_conf_group, dns_local_ttl), 0,
-				  CONF_INT_MAX),
-	CONF_INT_FUNC("max-reply-ip-num", _dns_conf_group_int,
-				  (void *)offsetof(struct dns_conf_group, dns_max_reply_ip_num), 1, CONF_INT_MAX),
+	CONF_INT_FUNC("rr-ttl", _dns_conf_group_int, group_member(dns_rr_ttl), 0, CONF_INT_MAX),
+	CONF_INT_FUNC("rr-ttl-min", _dns_conf_group_int, group_member(dns_rr_ttl_min), 0, CONF_INT_MAX),
+	CONF_INT_FUNC("rr-ttl-max", _dns_conf_group_int, group_member(dns_rr_ttl_max), 0, CONF_INT_MAX),
+	CONF_INT_FUNC("rr-ttl-reply-max", _dns_conf_group_int, group_member(dns_rr_ttl_reply_max), 0, CONF_INT_MAX),
+	CONF_INT_FUNC("local-ttl", _dns_conf_group_int, group_member(dns_local_ttl), 0, CONF_INT_MAX),
+	CONF_INT_FUNC("max-reply-ip-num", _dns_conf_group_int, group_member(dns_max_reply_ip_num), 1, CONF_INT_MAX),
 	CONF_INT("max-query-limit", &dns_conf_max_query_limit, 0, CONF_INT_MAX),
-	CONF_ENUM_FUNC("response-mode", _dns_conf_group_enum, (void *)offsetof(struct dns_conf_group, dns_response_mode),
+	CONF_ENUM_FUNC("response-mode", _dns_conf_group_enum, group_member(dns_response_mode),
 				   &dns_conf_response_mode_enum),
-	CONF_YESNO_FUNC("force-AAAA-SOA", _dns_conf_group_yesno, (void *)offsetof(struct dns_conf_group, force_AAAA_SOA)),
-	CONF_YESNO_FUNC("force-no-CNAME", _dns_conf_group_yesno,
-					(void *)offsetof(struct dns_conf_group, dns_force_no_cname)),
+	CONF_YESNO_FUNC("force-AAAA-SOA", _dns_conf_group_yesno, group_member(force_AAAA_SOA)),
+	CONF_YESNO_FUNC("force-no-CNAME", _dns_conf_group_yesno, group_member(dns_force_no_cname)),
 	CONF_CUSTOM("force-qtype-SOA", _config_qtype_soa, NULL),
 	CONF_CUSTOM("blacklist-ip", _config_blacklist_ip, NULL),
 	CONF_CUSTOM("whitelist-ip", _conf_whitelist_ip, NULL),