##|*IDENT=page-services-igmpproxy
##|*NAME=Services: IGMP Proxy
##|*DESCR=Allow access to the 'Services: IGMP Proxy' page.
##|*MATCH=services_igmpproxy.php*
##|-PRIV
require "guiconfig.inc";
if (!is_array($config['igmpproxy']['igmpentry'])) {
    $config['igmpproxy']['igmpentry'] = array();
}
//igmpproxy_sort();
$a_igmpproxy =& $config['igmpproxy']['igmpentry'];
if ($_POST) {
    $pconfig = $_POST;
    $retval = 0;
    /* reload all components that use igmpproxy */
    $retval = services_igmpproxy_configure();
    if (stristr($retval, "error") != true) {
        $savemsg = get_std_save_message($retval);
    } else {
        $savemsg = $retval;
    }
    clear_subsystem_dirty('igmpproxy');
}
if ($_GET['act'] == "del") {
    if ($a_igmpproxy[$_GET['id']]) {
        unset($a_igmpproxy[$_GET['id']]);
        write_config();
        mark_subsystem_dirty('igmpproxy');
        header("Location: services_igmpproxy.php");
        exit;
    }
function service_control_restart($name, $extras)
{
    switch ($name) {
        case 'radvd':
            services_radvd_configure();
            break;
        case 'ntpd':
            system_ntp_configure();
            break;
        case 'apinger':
            killbypid("/var/run/apinger.pid");
            setup_gateways_monitor();
            break;
        case 'bsnmpd':
            services_snmpd_configure();
            break;
        case 'dhcrelay':
            services_dhcrelay_configure();
            break;
        case 'dhcrelay6':
            services_dhcrelay6_configure();
            break;
        case 'dnsmasq':
            services_dnsmasq_configure();
            break;
        case 'unbound':
            services_unbound_configure();
            break;
        case 'dhcpd':
            services_dhcpd_configure();
            break;
        case 'igmpproxy':
            services_igmpproxy_configure();
            break;
        case 'miniupnpd':
            upnp_action('restart');
            break;
        case 'ipsec':
            vpn_ipsec_force_reload();
            break;
        case 'sshd':
            configd_run("sshd restart");
            break;
        case 'openvpn':
            $vpnmode = htmlspecialchars($extras['vpnmode']);
            if ($vpnmode == "server" || $vpnmode == "client") {
                $id = htmlspecialchars($extras['id']);
                $configfile = "/var/etc/openvpn/{$vpnmode}{$id}.conf";
                if (file_exists($configfile)) {
                    openvpn_restart_by_vpnid($vpnmode, $id);
                }
            }
            break;
        case 'relayd':
            relayd_configure(true);
            break;
        case 'squid':
            configd_run("proxy restart");
            break;
        case 'suricata':
            configd_run("ids restart");
            break;
        default:
            log_error(sprintf(gettext("Could not restart unknown service `%s'"), $name));
            break;
    }
    return sprintf(gettext("%s has been restarted."), htmlspecialchars($name));
}
     break;
 case 'ntpd':
 case 'openntpd':
     system_ntp_configure();
     break;
 case 'bsnmpd':
     services_snmpd_configure();
     break;
 case 'dnsmasq':
     services_dnsmasq_configure();
     break;
 case 'dhcpd':
     services_dhcpd_configure();
     break;
 case 'igmpproxy':
     services_igmpproxy_configure();
     break;
 case 'miniupnpd':
     upnp_action('start');
     break;
 case 'racoon':
     vpn_ipsec_force_reload();
     break;
 case 'openvpn':
     $vpnmode = $_GET['vpnmode'];
     if ($vpnmode == "server" || $vpnmode == "client") {
         $id = $_GET['id'];
         $configfile = "{$g['varetc_path']}/openvpn/{$vpnmode}{$id}.conf";
         if (file_exists($configfile)) {
             mwexec_bg("/usr/local/sbin/openvpn --config {$configfile}");
         }