aboutsummaryrefslogtreecommitdiff
path: root/Mono.Nat/Upnp/Messages/Requests/CreatePortMappingMessage.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-10-27 21:07:40 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-10-27 21:07:40 -0400
commitce043225c4096b2082bdf351bd5d59848f4eb533 (patch)
tree2978843a59e7df933451a438226c7a91497e9bce /Mono.Nat/Upnp/Messages/Requests/CreatePortMappingMessage.cs
parent8e57296f6986f13578f37647640fcaf49c9981f1 (diff)
update port mapper
Diffstat (limited to 'Mono.Nat/Upnp/Messages/Requests/CreatePortMappingMessage.cs')
-rw-r--r--Mono.Nat/Upnp/Messages/Requests/CreatePortMappingMessage.cs20
1 files changed, 20 insertions, 0 deletions
diff --git a/Mono.Nat/Upnp/Messages/Requests/CreatePortMappingMessage.cs b/Mono.Nat/Upnp/Messages/Requests/CreatePortMappingMessage.cs
index da650fb41..2d128f8e7 100644
--- a/Mono.Nat/Upnp/Messages/Requests/CreatePortMappingMessage.cs
+++ b/Mono.Nat/Upnp/Messages/Requests/CreatePortMappingMessage.cs
@@ -29,6 +29,7 @@ using System.IO;
using System.Globalization;
using System.Text;
using System.Xml;
+using MediaBrowser.Common.Net;
namespace Mono.Nat.Upnp
{
@@ -51,6 +52,25 @@ namespace Mono.Nat.Upnp
}
#endregion
+ public override HttpRequestOptions Encode()
+ {
+ CultureInfo culture = CultureInfo.InvariantCulture;
+
+ StringBuilder builder = new StringBuilder(256);
+ XmlWriter writer = CreateWriter(builder);
+
+ WriteFullElement(writer, "NewRemoteHost", string.Empty);
+ WriteFullElement(writer, "NewExternalPort", this.mapping.PublicPort.ToString(culture));
+ WriteFullElement(writer, "NewProtocol", this.mapping.Protocol == Protocol.Tcp ? "TCP" : "UDP");
+ WriteFullElement(writer, "NewInternalPort", this.mapping.PrivatePort.ToString(culture));
+ WriteFullElement(writer, "NewInternalClient", this.localIpAddress.ToString());
+ WriteFullElement(writer, "NewEnabled", "1");
+ WriteFullElement(writer, "NewPortMappingDescription", string.IsNullOrEmpty(mapping.Description) ? "Mono.Nat" : mapping.Description);
+ WriteFullElement(writer, "NewLeaseDuration", mapping.Lifetime.ToString());
+
+ writer.Flush();
+ return CreateRequest("AddPortMapping", builder.ToString());
+ }
public override WebRequest Encode(out byte[] body)
{