using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
namespace ExWeb
{
public partial class Mod_Inline : Mod
{
public static string Help_Description =
"Inline-Anzeige eines externen Text-Dokumnets";
public static string[][] Help_Attributes = new string[][]
{
// Attribut, Wert, DefaultWert, Optional, Hilfe
new string[] {"Fil", "file", "","opt1","Einzufügendes Dokument","Fil=\"datei.html\""},
new string[] {"Pat","path", "/","opt","Pfad","Pat=\"/meinedokumente\""},
new string[] {"Text", "string", "","opt2","Einzufügender Text","Text=\"<p>Das ist darzustellen</p>\""},
new string[] {"Extension", "ext", "ext","opt2","Format von Text","Extension=\"<p>htm</p>\""},
new string[] {"", "", "","","Entweder Document oder Text+Extension angeben",""},
new string[] {"Title","string","","opt","Titel"},
new string[] {"Mode","raw pre hex high http frame xmltree","pre","opt","none:keine Bearbeitung, pre:ohne html; high: Syntaxhighlighting;"},
new string[] {"Scrolling","yes no auto ","auto","opt","Handhabung größerer Objekte (mode=frame)","Scrolling=\"yes\""},
new string[] {"Expand","0 1","0","opt","TreeView aufklappen oder zuklappen (nur mode=xmltree","expand=\"1\""},
};
string _Fil = "";
public string Fil
{
set
{
_Fil = value;
}
}
string _Pat = "/";
public string Pat
{
set
{
if (!value.EndsWith("/")) value += "/";
_Pat = value;
}
}
string _Text = "";
public string Text
{
set
{
_Text = value;
}
}
string _Extension = "txt";
public string Extension
{
set
{
_Extension = value;
}
}
string _Title = "";
public string Title
{
set
{
_Title = value;
}
}
enum MODE { RAW, PRE, HEX, HIGH, HTTP, FRAME, XML, XMLTREE };
MODE _Mode = MODE.RAW;
public string Mode
{
set
{
switch (value.ToLower())
{
default:
break;
case "frame":
_Mode = MODE.FRAME;
break;
case "hex":
_Mode = MODE.HEX;
break;
case "high":
_Mode = MODE.HIGH;
break;
case "none":
_Mode = MODE.RAW;
break;
case "pre":
_Mode = MODE.PRE;
break;
case "http":
_Mode = MODE.HTTP;
break;
case "xml":
_Mode = MODE.XML;
break;
case "xmltree":
_Mode = MODE.XMLTREE;
break;
}
}
get
{
return _Mode.ToString();
}
}
string _Scrolling = "no";
public string Scrolling
{
set
{
_Scrolling = value;
}
}
bool _Expand = false;
public string Expand
{
set
{
_Expand = (value == "1");
}
}
protected void Page_LoadComplete(object sender, EventArgs e)
{
SetPanelLayout(this.Controls);
object oLoadShScripts = Context.Items["LoadShScripts"];
if (oLoadShScripts == null) return;
string strLoadShScripts = oLoadShScripts.ToString();
if (strLoadShScripts == "1")
{
try
{
Page.Controls.Add(new LiteralControl(LoadShScripts()));
}
catch
{
}
}
Context.Items["LoadShScripts"] = "0";
}
public new void Page_Load(object sender, EventArgs e)
{
Page.LoadComplete += new EventHandler(Page_LoadComplete);
Fil = Mod.GetQs_String("fil", _Fil, this.Page);
Pat = Mod.GetQs_String("pat", _Pat, this.Page);
Mode = Mod.GetQs_String("mode", Mode, this.Page);
switch (_Mode)
{
case MODE.FRAME:
string FileToDisplay = _Pat + _Fil;
string Port = Request.ServerVariables["SERVER_PORT"];
FileToDisplay = "http://" + Request.ServerVariables["SERVEr_NAME"] + (Port == "80" ? "" : ":" + Port) + FileToDisplay;
string Tag = GetIframe(_ID, FileToDisplay, _Width, _Height, _Scrolling);
PlaceHolder_Inline.Controls.Add(new LiteralControl(Tag));
return;
default:
if (((_Fil == "") && (_Text == "")) || ((_Fil != "") && (_Text != "")))
{
Panel_Module.Visible = false;
return;
}
break;
}
string CodeToInsert = "";
switch (_Mode)
{
default:
case MODE.RAW:
case MODE.PRE:
case MODE.HIGH:
{
string TextToDisplay = "";
string Extension = "";
if (_Fil == "")
{
TextToDisplay = _Text;
Extension = _Extension;
}
else
{
string AbsolutePath = Server.MapPath(_Pat);
if (!AbsolutePath.EndsWith("\\")) AbsolutePath += "\\";
Extension = Path.GetExtension(_Fil).ToLower();
if (Extension.StartsWith(".")) Extension = Extension.Substring(1);
if (!File.Exists(AbsolutePath + _Fil))
{
Panel_Module.Controls.Clear();
Panel_Module.Controls.Add(new LiteralControl("Datei " + AbsolutePath + _Fil + " nicht gefunden"));
return;
}
TextToDisplay = File.ReadAllText(AbsolutePath + _Fil);
}
switch (_Mode)
{
default:
case MODE.RAW:
CodeToInsert = TextToDisplay;
break;
case MODE.PRE:
CodeToInsert = GetPreformated(TextToDisplay);
break;
case MODE.HIGH:
CodeToInsert = GetPreformatedBrush(TextToDisplay, Extension);
Context.Items["LoadShScripts"] = "1";
break;
}
CodeToInsert = Regex.Replace(CodeToInsert, "(?i)(pass|passwort|password)=(\"|\').*(\"|\')", "$1=\"**** Dein Passwort ****\"");
CodeToInsert = Regex.Replace(CodeToInsert, "(?i)(key)=([\"\'])(?i)(password)([\"\'])\\s*(?i)(value)=([\"\'])(.*)([\"\'])", "$1=$2$3$4 $5=$6**** Dein Passwort ****$8");
}
break;
case MODE.HEX:
{
if (_Fil == "")
{
CodeToInsert = "\r\n<pre>\r\n" + DumpText(_Text) + "\r\n</pre>\r\n";
}
else
{
string AbsolutePath = Server.MapPath(_Pat);
if (!AbsolutePath.EndsWith("\\")) AbsolutePath += "\\";
string Extension = Path.GetExtension(_Fil).ToLower();
if (Extension.StartsWith(".")) Extension = Extension.Substring(1);
if (!File.Exists(AbsolutePath + _Fil))
{
Panel_Module.Visible = false;
return;
}
CodeToInsert = "\r\n<pre>\r\n" + Dump(AbsolutePath + _Fil) + "\r\n</pre>\r\n";
}
}
break;
case MODE.HTTP:
{
bool _Error = false;
if ((_Fil == "") && (_Pat == ""))
{
_Error = true;
}
else
if ((_Fil != "") && (_Pat != ""))
{
}
else
if (_Pat == "")
{
if (!_Fil.ToLower().StartsWith("http://"))
_Error = true;
}
else // Fil == ""
{
_Error = true;
}
if (_Error)
{
CodeToInsert = "Fil=File&Pat=RelPath | Fil=Url"
+ "<br/>Fil=" + _Fil + " Pat=" + _Pat;
}
else
{
string Url = "";
if (_Fil.ToLower().StartsWith("http://"))
Url = _Fil;
else
{
string ServerPort = Request.ServerVariables["SERVER_PORT"];
Url = "http://" + Request.ServerVariables["SERVER_NAME"] + (ServerPort == "80" ? "" : ":" + ServerPort) + _Pat + _Fil;
}
Stream s = Http.ReadUri(Url);
if (s == null)
{
CodeToInsert = "Error inserting " + Url;
}
else
{
CodeToInsert = Http.GetStream(s);
CodeToInsert = Http.StripHtml(CodeToInsert);
}
}
}
break;
case MODE.XML:
{
string TextToDisplay = "";
string Extension = "";
if (_Fil == "")
{
TextToDisplay = _Text;
Extension = _Extension;
}
else
{
string AbsolutePath = Server.MapPath(_Pat);
if (!AbsolutePath.EndsWith("\\")) AbsolutePath += "\\";
Extension = Path.GetExtension(_Fil).ToLower();
if (Extension.StartsWith(".")) Extension = Extension.Substring(1);
if (!File.Exists(AbsolutePath + _Fil))
{
Panel_Module.Controls.Clear();
Panel_Module.Controls.Add(new LiteralControl("Datei " + AbsolutePath + _Fil + " nicht gefunden"));
return;
}
TextToDisplay = File.ReadAllText(AbsolutePath + _Fil);
}
Stream strm = Mod.GenerateStreamFromString(TextToDisplay);
StreamReader reader = new StreamReader(strm);
XmlDocument myXmlDocument = new XmlDocument();
try
{
myXmlDocument.Load(reader);
Mod_Xsl2TreeView transform = new Mod_Xsl2TreeView(myXmlDocument);
this.Controls.Clear();
TreeView tv = transform.tv;
if (_Expand)
{
tv.ExpandAll();
}
else
{
tv.CollapseAll();
}
this.Controls.Add(tv);
}
catch
{
this.Controls.Clear();
this.Controls.Add(new LiteralControl("XML-Format fehlerhaft"));
}
}
break;
case MODE.XMLTREE:
{
string TextToDisplay = "";
string Extension = "";
if (_Fil == "")
{
TextToDisplay = _Text;
Extension = _Extension;
}
else
{
string AbsolutePath = Server.MapPath(_Pat);
if (!AbsolutePath.EndsWith("\\")) AbsolutePath += "\\";
Extension = Path.GetExtension(_Fil).ToLower();
if (Extension.StartsWith(".")) Extension = Extension.Substring(1);
if (!File.Exists(AbsolutePath + _Fil))
{
Panel_Module.Controls.Clear();
Panel_Module.Controls.Add(new LiteralControl("Datei " + AbsolutePath + _Fil + " nicht gefunden"));
return;
}
TextToDisplay = File.ReadAllText(AbsolutePath + _Fil);
}
Stream strm = Mod.GenerateStreamFromString(TextToDisplay);
StreamReader reader = new StreamReader(strm);
XmlDocument myXmlDocument = new XmlDocument();
try
{
myXmlDocument.Load(reader);
Mod_Xsl2TreeView transform = new Mod_Xsl2TreeView(myXmlDocument);
this.Controls.Clear();
TreeView tv = transform.tv;
if (_Expand)
{
tv.ExpandAll();
}
else
{
tv.CollapseAll();
}
this.Controls.Add(tv);
}
catch
{
this.Controls.Clear();
this.Controls.Add(new LiteralControl("XML-Format fehlerhaft"));
}
}
break;
}
LiteralControl lc = new LiteralControl(CodeToInsert);
PlaceHolder_Inline.Controls.Add(lc);
}
}
}