<?xml version="1.0" encoding="utf-8" ?>
<packagegui>
	<title>Services: UPnP &amp; NAT-PMP</title>
	<name>miniupnpd</name>
	<version>20100712</version>
	<savetext>Change</savetext>
	<include_file>/usr/local/pkg/miniupnpd.inc</include_file>
	<menu>
		<name>UPnP &amp; NAT-PMP</name>
		<tooltiptext>Set UPnP &amp; NAT-PMP settings such as interfaces to listen on.</tooltiptext>
		<section>Services</section>
		<url>/pkg_edit.php?xml=miniupnpd.xml&amp;id=0</url>
	</menu>
	<additional_files_needed>
		<item>https://packages.pfsense.org/packages/config/miniupnpd/miniupnpd.inc</item>
	    <prefix>/usr/local/pkg/</prefix>
	    <chmod>0755</chmod>
	</additional_files_needed>
	<additional_files_needed>
		<item>https://packages.pfsense.org/packages/config/miniupnpd/status_upnp.php</item>
	    <prefix>/usr/local/www/</prefix>
	    <chmod>0755</chmod>
	</additional_files_needed>
	<additional_files_needed>
		<prefix>/usr/local/sbin/</prefix>
		<chmod>0755</chmod>
		<item>https://packages.pfsense.org/packages/config/miniupnpd/sbin/miniupnpd</item>
	</additional_files_needed>
	<service>
		<name>miniupnpd</name>
		<rcfile>miniupnpd.sh</rcfile>
		<executable>miniupnpd</executable>
	</service>
	<fields>
		<field>
			<name>UPnP &amp; NAT-PMP Settings</name>
			<type>listtopic</type>
			<enablefields>enable_upnp,enable_natpmp,iface_array,overridewanip,upnpqueue,logpackets,sysuptime,permdefault,permuser1,permuser2,permuser3,permuser4</enablefields>
		</field>
		<field>
			<fielddescr>Enable UPnP &amp; NAT-PMP</fielddescr>
			<fieldname>enable</fieldname>
			<type>checkbox</type>
			<enablefields>enable_upnp,enable_natpmp,iface_array,overridewanip,upnpqueue,logpackets,sysuptime,permdefault,permuser1,permuser2,permuser3,permuser4</enablefields>
		</field>			
		<field>
			<fielddescr>Allow UPnP Port Mapping</fielddescr>
			<fieldname>enable_upnp</fieldname>
			<type>checkbox</type>
			<description>This protocol is often used by Microsoft-compatible systems.</description>
		</field>
		<field>
			<fielddescr>Allow NAT-PMP Port Mapping</fielddescr>
			<fieldname>enable_natpmp</fieldname>
			<type>checkbox</type>
			<description>This protocol is often used by Apple-compatible systems.</description>
		</field>
		<field>
			<fielddescr>External Interface (generally WAN)</fielddescr>
			<fieldname>ext_iface</fieldname>
			<default_value>wan</default_value>
			<size>3</size>
			<type>select_source</type>
			<source><![CDATA[get_pkg_interfaces_select_source(false)]]></source>
			<source_name>name</source_name>
			<source_value>value</source_value>
			<description>Select only your primary WAN interface (interface with your default route). Only one interface is allowed here, not multiple.</description>
			<required/>
		</field>
		<field>
			<fielddescr>Interfaces (generally LAN)</fielddescr>
			<fieldname>iface_array</fieldname>
			<default_value>lan</default_value>
			<multiple>true</multiple>
			<size>3</size>
			<type>select_source</type>
			<source><![CDATA[get_pkg_interfaces_select_source(true)]]></source>
			<source_name>name</source_name>
			<source_value>value</source_value>
			<description>You can use the CTRL or COMMAND key to select multiple interfaces.</description>
			<required/>
		</field>
		<field>
			<fielddescr>Maximum Download Speed (Kbits/second)</fielddescr>
			<fieldname>download</fieldname>
			<type>input</type>
		</field>
		<field>
			<fielddescr>Maximum Upload Speed (Kbits/second)</fielddescr>
			<fieldname>upload</fieldname>
			<type>input</type>
		</field>
		<field>
			<fielddescr>Override WAN address</fielddescr>
			<fieldname>overridewanip</fieldname>
			<type>input</type>
		</field>
		<field>
			<fielddescr>Traffic Shaping Queue</fielddescr>
			<fieldname>upnpqueue</fieldname>
			<type>input</type>
		</field>
		<field>
			<fielddescr>Log packets handled by UPnP &amp; NAT-PMP rules?</fielddescr>
			<fieldname>logpackets</fieldname>
			<type>checkbox</type>
		</field>
		<field>
			<fielddescr>Use system uptime instead of UPnP &amp; NAT-PMP service uptime?</fielddescr>
			<fieldname>sysuptime</fieldname>
			<type>checkbox</type>
		</field>
		<field>
			<fielddescr>By default deny access to UPnP &amp; NAT-PMP?</fielddescr>
			<fieldname>permdefault</fieldname>
			<type>checkbox</type>
		</field>
		<field>
			<fielddescr>User specified permissions 1</fielddescr>
			<fieldname>permuser1</fieldname>
			<description>Format: [allow or deny] [ext port or range] [int ipaddr or ipaddr/cdir] [int port or range]
			&lt;br /&gt;Example: allow 1024-65535 192.168.0.0/24 1024-65535</description>
			<type>input</type>
			<size>60</size>
		</field>
		<field>
			<fielddescr>User specified permissions 2</fielddescr>
			<fieldname>permuser2</fieldname>
			<description>Format: [allow or deny] [ext port or range] [int ipaddr or ipaddr/cdir] [int port or range]</description>
			<type>input</type>
			<size>60</size>
		</field>
		<field>
			<fielddescr>User specified permissions 3</fielddescr>
			<fieldname>permuser3</fieldname>
			<description>Format: [allow or deny] [ext port or range] [int ipaddr or ipaddr/cdir] [int port or range]</description>
			<type>input</type>
			<size>60</size>
		</field>
		<field>
			<fielddescr>User specified permissions 4</fielddescr>
			<fieldname>permuser4</fieldname>
			<description>Format: [allow or deny] [ext port or range] [int ipaddr or ipaddr/cdir] [int port or range]</description>
			<type>input</type>
			<size>60</size>
		</field>	
	</fields>
	<custom_php_command_before_form>
		before_form_miniupnpd($pkg);
	</custom_php_command_before_form>
	<custom_php_validation_command>
		validate_form_miniupnpd($_POST, $input_errors);
	</custom_php_validation_command>
	<custom_php_resync_config_command>
		sync_package_miniupnpd();
	</custom_php_resync_config_command>
</packagegui>
