ProTech's home page

ProTech-Online.com

Microsoft C# ASPX code example http input filter and http output of hidden content.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
/// <summary>
/// Summary description for SANSReplaceHTML
/// </summary>
public class SANSReplaceHTML : Stream
{
       Stream          responseStream;
    long            position;
    public SANSReplaceHTML (Stream inputStream)
    {
        responseStream = inputStream;
    }
    public override bool CanRead
    {
        get { return true;}
    }
    public override bool CanSeek
    {
        get { return true; }
    }
    public override bool CanWrite
    {
        get { return true; }
    }
    public override void Close()
    {
        responseStream.Close ();
    }
    public override void Flush()
    {
        responseStream.Flush ();
    }
    public override long Length
    {
        get { return 0; }
    }
    public override long Position
    {
        get { return position; }
        set { position = value; }
    }
    public override long Seek(long offset, SeekOrigin origin)
    {
        return responseStream.Seek (offset, origin);
    }
    public override void SetLength(long length)
    {
        responseStream.SetLength (length);
    }
    public override int Read(byte[] buffer, int offset, int count)
    {
        return responseStream.Read (buffer, offset, count);
    }
    public override void Write(byte[] buffer, int offset, int count)
    {
        string responseHtml = "";
        string strBuffer = Convert.ToBase64String(buffer);
        string tmpStr = System.Text.Encoding.UTF8.GetString(buffer);
        byte[] tmpHtml = System.Text.Encoding.UTF8.GetBytes("<h1>Hidden Content</h1>");
        byte[] tmpBuffer = new byte[buffer.Length + tmpHtml.Length];
        Array.Copy(buffer, tmpBuffer, buffer.Length);
        Array.Copy(tmpHtml, 0, tmpBuffer, buffer.Length, tmpHtml.Length);
        string changedResponse = Convert.ToBase64String(tmpBuffer);
        // ---------------------------------
        // Wait for the closing </html> tag
        // ---------------------------------
        Regex eof = new Regex("<html", RegexOptions.IgnoreCase);
        if (!eof.IsMatch(tmpStr))
        {
            responseHtml = changedResponse;
            byte[] data = Convert.FromBase64String(responseHtml);
            responseStream.Write(data, 0, data.Length);
        }
        else
        {
            responseStream.Write(buffer, 0, buffer.Length);
        }
    }
}


Copyright © 2013 ProTechs-Online.com; All rights reserved.