示例#1
0
void start_igmp_proxy(void)
{
	int ret = 0;
	pid_t pid;
	char name[80], *next, *svbuf;
	char *argv[] = { "igmprt", "/tmp/igmpproxy.conf", NULL };

	int ifcount = 0;

	FILE *fp = fopen("/tmp/igmpproxy.conf", "wb");

	if (nvram_match("dtag_vlan8", "1") && nvram_match("wan_vdsl", "1")) {
		fprintf(fp, "quickleave\nphyint %s upstream  ratelimit 0  threshold 1\n", nvram_safe_get("tvnicfrom"));
		fprintf(fp, "phyint %s disabled\n", get_wan_face());
	} else {
		fprintf(fp, "quickleave\nphyint %s upstream  ratelimit 0  threshold 1\n", get_wan_face());
	}
	if (nvram_match("block_multicast", "0")) {
		fprintf(fp, "phyint %s downstream  ratelimit 0  threshold 1\n", nvram_safe_get("lan_ifname"));
		ifcount++;
	} else {
		fprintf(fp, "phyint %s disabled\n" "phyint %s:0 disabled\n", nvram_safe_get("lan_ifname"), nvram_safe_get("lan_ifname"));
	}
	char ifnames[256];

	getIfLists(ifnames, 256);
	foreach(name, ifnames, next) {
		if (strcmp(get_wan_face(), name)
		    && strcmp(nvram_safe_get("lan_ifname"), name)
		    && strcmp(nvram_safe_get("tvnicfrom"), name)) {
			if (nvram_nmatch("0", "%s_bridged", name)
			    && nvram_nmatch("1", "%s_multicast", name)) {
				fprintf(fp, "phyint %s downstream  ratelimit 0  threshold 1\n", name);
				ifcount++;
			} else
				fprintf(fp, "phyint %s disabled\n", name);
		}
	}
	fprintf(fp, "phyint lo disabled\n");
	fclose(fp);
	if (nvram_match("wan_proto", "disabled"))	// todo: add upstream 
		// config
	{
		// ret = _evalpid (igmp_proxybr_argv, NULL, 0, &pid);
		return;
	} else {
		if (ifcount) {
			if (pidof("igmprt") < 1)
				ret = _evalpid(argv, NULL, 0, &pid);
			dd_syslog(LOG_INFO, "igmprt : multicast daemon successfully started\n");
		}
	}

	cprintf("done\n");
	return;
}
示例#2
0
void start_upnp(void)
{
    if (nvram_match("wan_proto", "disabled"))
        return;
    char *wan_ifname = get_wan_face();
    int ret;

    if (nvram_match("upnp_enable", "0")) {
        stop_upnp();
        return;
    }
    /*
     * Make sure its not running first
     */
    ret = killall("upnp", SIGUSR1);
    if (ret != 0) {
        /*	ret = eval( "upnp", "-D",
        		    "-L", nvram_safe_get( "lan_ifname" ),
        		    "-W", wan_ifname,
        		    "-S", "0",
        		    "-I", nvram_safe_get( "upnp_ssdp_interval" ),
        		    "-A", nvram_safe_get( "upnp_max_age" ) );*/
        ret = eval("upnp", "-D", "-W", wan_ifname);
        dd_syslog(LOG_INFO, "upnp : upnp daemon successfully started\n");
    }

    cprintf("done\n");
    return;
}
示例#3
0
static char *get_wanface(void)
{
	char *dev = get_wan_face();

	if (!strcmp(dev, "br0"))
		dev = NULL;
	return dev;
}
示例#4
0
void start_apserv(void)
{
	char *wan_ifname = get_wan_face();
	int ret;

	if (nvram_match("apserv_enable", "0")) {
		stop_apserv();
		return;
	}
	/*
	 * Make sure its not running first 
	 */
	ret = killall("ap_serv", SIGUSR1);
	ret = eval("ap_serv", "-i", nvram_safe_get("lan_ifname"));
	dd_syslog(LOG_INFO, "ap_serv : ap_serv daemon successfully started\n");
	cprintf("done\n");
	return;
}
示例#5
0
// unfinished. do not use
void start_wifidog(void)
{
	if (nvram_match("wd_enable", "1")) {
		insmod("ipt_mark");
		insmod("ipt_mac");
		insmod("xt_mark");
		insmod("xt_mac");
		mkdir("/tmp/wifidog/", 0744);
		FILE *fp = fopen("/tmp/wifidog/wifidog.conf", "wb");

		if (!strlen(nvram_safe_get("wd_gwid")))
			fprintf(fp, "GatewayID %s\n", nvram_safe_get("router_name"));
		else
			fprintf(fp, "GatewayID %s\n", nvram_safe_get("wd_gwid"));
		if (nvram_invmatch("wan_proto", "disabled"))	//WIP
			fprintf(fp, "ExternalInterface %s\n", get_wan_face());
		else
			fprintf(fp, "ExternalInterface %s\n", nvram_safe_get("wd_extiface"));
		fprintf(fp, "GatewayInterface %s\n", nvram_safe_get("wd_iface"));
		// fprintf (fp, "Portal %s\n", nvram_safe_get ("wd_url"));
		fprintf(fp, "GatewayPort %s\n", nvram_safe_get("wd_gwport"));
		fprintf(fp, "HTTPDMaxConn %s\n", nvram_safe_get("wd_httpdcon"));
		fprintf(fp, "HTTPDName %s\n", nvram_safe_get("wd_httpdname"));
		fprintf(fp, "CheckInterval %s\n", nvram_safe_get("wd_interval"));
		fprintf(fp, "ClientTimeout %s\n", nvram_safe_get("wd_timeout"));
		fprintf(fp, "TrustedMACList %s\n", nvram_safe_get("wd_maclist"));
		fprintf(fp, "AuthServer {\n");
		fprintf(fp, "Hostname %s\n", nvram_safe_get("wd_hostname"));
		fprintf(fp, "SSLAvailable %s\n", nvram_match("wd_sslavailable", "1") ? "yes" : "no");
		fprintf(fp, "SSLPort %s\n", nvram_safe_get("wd_sslport"));
		fprintf(fp, "HTTPPort %s\n", nvram_safe_get("wd_httpport"));
		if (strlen(nvram_safe_get("wd_messagefile")) > 0) {
			fprintf(fp, "HtmlMessageFile %s\n", nvram_safe_get("wd_messagefile"));
		}
		if (nvram_match("wd_auth", "1")) {
			if (strlen(nvram_safe_get("wd_realm")) > 0)
				fprintf(fp, "HTTPDRealm %s\n", nvram_safe_get("wd_realm"));
			fprintf(fp, "HTTPDUserName %s\n", nvram_safe_get("wd_username"));
			fprintf(fp, "HTTPDPassword %s\n", nvram_safe_get("wd_password"));
		}
		fprintf(fp, "Path %s\n", nvram_safe_get("wd_path"));
		fprintf(fp, "}\n");
		if (strlen(nvram_safe_get("wd_config")) > 0) {
			fwritenvram("wd_config", fp);
		} else {
			fprintf(fp, "FirewallRuleSet validating-users {\n");
			fprintf(fp, "FirewallRule allow to 0.0.0.0/0\n");
			fprintf(fp, "}\n");
			fprintf(fp, "FirewallRuleSet known-users {\n");
			fprintf(fp, "FirewallRule allow to 0.0.0.0/0\n");
			fprintf(fp, "}\n");
			fprintf(fp, "FirewallRuleSet unknown-users {\n");
			fprintf(fp, "FirewallRule allow udp port 53\n");
			fprintf(fp, "FirewallRule allow tcp port 53\n");
			fprintf(fp, "FirewallRule allow udp port 67\n");
			fprintf(fp, "FirewallRule allow tcp port 67\n");
			fprintf(fp, "}\n");
			fprintf(fp, "FirewallRuleSet locked-users {\n");
			fprintf(fp, "FirewallRule block to 0.0.0.0/0\n");
			fprintf(fp, "}\n");
		}
		fclose(fp);
		eval("wifidog");
		dd_syslog(LOG_INFO, "wifidog successfully started\n");
		eval("iptables", "-D", "FORWARD", "-i", nvram_safe_get("wd_iface"), "-d", nvram_safe_get("wd_hostname"), "-j", "ACCEPT");
		eval("iptables", "-I", "FORWARD", "-i", nvram_safe_get("wd_iface"), "-d", nvram_safe_get("wd_hostname"), "-j", "ACCEPT");
	}
#ifdef HAVE_TIEXTRA2
	start_mwifidog();
#endif
}