aboutsummaryrefslogtreecommitdiff
path: root/Mono.Nat/Upnp/Messages/Requests/CreatePortMappingMessage.cs
diff options
context:
space:
mode:
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)
{