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; }
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; }
static char *get_wanface(void) { char *dev = get_wan_face(); if (!strcmp(dev, "br0")) dev = NULL; return dev; }
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; }
// 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 }