home *** CD-ROM | disk | FTP | other *** search
Wrap
public class FormHandlerComp extends ComponentApp { DMessageBox msg = new DMessageBox(); // $FF: renamed from: db DMessageBox DMessageBox field_0 = new DMessageBox(); // $FF: renamed from: d DMessageBox DMessageBox field_1 = new DMessageBox(); int cpSuccessURL; int cpErrorURL; String StorageDirConst = "assets/webdata"; String CgiBinDirConst = "assets/cgi-bin"; String PCAbsolutePathConst = "C:\\webdata\\"; String useremail = "name@domain.com"; String SubmitName = "Submit"; String outputFile = "webinfo.txt"; String UnixWindows = "Windows"; String PerlPath = "/usr/bin/perl"; String storageDir = "assets/webdata"; String cpCgiBinDir = "assets/cgi-bin"; String PCAbsolutePath; // $FF: renamed from: am DAssetManager DAssetManager field_2; DDrawFormButton cdp; int ImageID; int perlScriptID; String codeBase; static final int MAXASSET = 50; boolean published; boolean[] cpReqField; int reqFieldCount; int[] assetControl; int assetCount; int tAssetCount; int actionCGIAsset; IDRect rect; private String getMacRelativeToRoot(String var1) { String var2 = new String("::"); int var3 = var1.length(); if (var3 == 0) { return ""; } else { String var4 = var1.substring(var3 - 1, var3); if (var4.compareTo("/") == 0) { var1 = var1.substring(0, var3 - 1); var3 = var1.length(); } for(int var5 = 0; var5 < var3; ++var5) { if (var1.substring(var5, var5 + 1).compareTo(":") == 0) { var2 = var2 + ":"; } } return var2; } } public FormHandlerComp() { this.PCAbsolutePath = this.PCAbsolutePathConst; } public String PropertyListener(String var1, String var2, int var3, int var4, IDInspector var5) { if (var3 == 1) { if (var1.compareTo("Button Name") == 0) { return this.SubmitName; } if (var1.compareTo("Success URL") == 0) { return Integer.toString(this.cpSuccessURL); } if (var1.compareTo("Error URL") == 0) { return Integer.toString(this.cpErrorURL); } if (var1.compareTo("Output File") == 0) { return this.outputFile; } if (var1.compareTo("Publish to") == 0) { if (this.UnixWindows == null) { this.UnixWindows = "Windows"; } if (this.UnixWindows.compareTo("Windows") == 0) { return "0"; } if (this.UnixWindows.compareTo("Unix") == 0) { return "1"; } if (this.UnixWindows.compareTo("Mac") == 0) { return "2"; } if (this.UnixWindows.compareTo("Email") == 0) { return "3"; } } else { if (var1.compareTo("Perl Path for Unix") == 0) { return this.PerlPath; } if (var1.compareTo("Email") == 0) { if (this.useremail == null) { this.useremail = "name@domain.com"; } return this.useremail; } if (var1.compareTo("CGI-Bin Directory") == 0) { if (this.cpCgiBinDir == null) { this.cpCgiBinDir = "assets/cgi-bin"; } return this.cpCgiBinDir; } if (var1.compareTo("Storage Directory") == 0) { if (this.storageDir == null) { this.storageDir = "assets/webdata"; } return this.storageDir; } if (var1.compareTo("Abs. Storage Dir") == 0) { if (this.PCAbsolutePath == null) { this.PCAbsolutePathConst = "C:\\webdata\\"; this.PCAbsolutePath = this.PCAbsolutePath; } return this.PCAbsolutePath; } } for(int var6 = 0; var6 < this.countElementsOnSameLayoutAsButton(); ++var6) { if (var1.compareTo(this.getFieldName(var6)) == 0) { if (!this.cpReqField[var6]) { return "1"; } return "0"; } } } else { if (var1.compareTo("Button Name") == 0) { this.SubmitName = var2; this.cdp.setText(this.SubmitName); } else if (var1.compareTo("Success URL") == 0) { this.cpSuccessURL = Integer.parseInt(var2, 10); } else if (var1.compareTo("Error URL") == 0) { this.cpErrorURL = Integer.parseInt(var2, 10); } else if (var1.compareTo("Output File") == 0) { this.outputFile = var2; } else if (var1.compareTo("Publish to") == 0) { if (var2.compareTo("0") == 0) { this.UnixWindows = "Windows"; } else if (var2.compareTo("1") == 0) { this.UnixWindows = "Unix"; } else if (var2.compareTo("2") == 0) { this.UnixWindows = "Mac"; } else if (var2.compareTo("3") == 0) { this.UnixWindows = "Email"; } } else if (var1.compareTo("Perl Path for Unix") == 0) { this.PerlPath = var2; } else if (var1.compareTo("Email") == 0) { this.useremail = var2; } else if (var1.compareTo("CGI-Bin Directory") == 0) { this.cpCgiBinDir = this.StripPrefixes(var2); if (this.cpCgiBinDir.compareTo(var2) != 0) { this.field_0.Warning("This property does not allow the following\r\n" + "strings to precede the filename:\r\n" + " (1) ../ \r\n" + " (2) ./ \r\n" + " (3) / \r\n" + "If present, they are automatically removed.\r\n"); } } else if (var1.compareTo("Storage Directory") == 0) { this.storageDir = this.StripPrefixes(var2); if (this.storageDir.compareTo(var2) != 0) { this.field_0.Warning("This property does not allow the following\r\n" + "strings to precede the filename:\r\n" + " (1) ../ \r\n" + " (2) ./ \r\n" + " (3) / \r\n" + "If present, they are automatically removed.\r\n"); } } else if (var1.compareTo("Abs. Storage Dir") == 0) { int var8 = var2.length(); if (var2.substring(var8 - 1, var8).compareTo("\\") != 0) { this.PCAbsolutePath = var2 + "\\"; } else { this.PCAbsolutePath = var2; } } for(int var9 = 0; var9 < this.countElementsOnSameLayoutAsButton(); ++var9) { if (var1.compareTo(this.getFieldName(var9)) == 0) { if (var2.compareTo("0") == 0) { this.cpReqField[var9] = true; } else { this.cpReqField[var9] = false; } } } } if (var5 != null) { var5.OnPropertyChanged(-1); } return ""; } int max(int var1, int var2) { return var1 > var2 ? var1 : var2; } public void onCopy() { this.SubmitName = new String(this.SubmitName); this.outputFile = new String(this.outputFile); this.PerlPath = new String(this.PerlPath); this.storageDir = new String(this.storageDir); this.codeBase = new String(this.codeBase); this.rect = this.cdp.getObjectRect(); this.cdp = new DDrawFormButton(); boolean[] var1 = new boolean[this.reqFieldCount]; for(int var2 = 0; var2 < this.reqFieldCount; ++var2) { var1[var2] = this.cpReqField[var2]; } this.cpReqField = var1; for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) { this.field_2.CopyAsset(this.assetControl[this.tAssetCount]); } } private String getRelativeToRoot(String var1) { String var2 = new String(); int var3 = var1.length(); if (var3 == 0) { return null; } else { String var4 = var1.substring(0, 2); if (var4.compareTo("./") == 0) { var1 = var1.substring(2, var3 - 1); } var3 = var1.length(); for(int var5 = 0; var5 < var3; ++var5) { if (var1.substring(var5, var5 + 1).compareTo("/") == 0) { var2 = var2 + "../"; } } var3 = var2.length(); String var9 = var2.substring(var3 - 1, var3); if (var9.compareTo("/") != 0) { var2 = var2 + "/"; } return var2; } } String cleanPath(String var1, int var2, int var3) { String var4 = this.field_2.GetAssetLocation(var2, var3, 1); String var5 = "./"; if (var5.compareTo(var4.substring(0, 2)) == 0) { var4 = var4.substring(2); } for(String var8 = "../"; var8.compareTo(var4.substring(0, 3)) == 0; var4 = var4.substring(3)) { } String var6 = this.getRelativeToRoot(var4); return var6 + var1; } private String unixToWinPath(String var1) { String var2 = ""; int var4 = var1.length(); for(int var5 = 0; var5 < var4; ++var5) { String var3 = var1.substring(var5, var5 + 1); if (var3.compareTo("/") == 0) { var2 = var2 + "\\"; } else { var2 = var2 + var3; } } return var2; } String getFieldName(int var1) { int var2 = var1 + 1; return "Required field " + var2; } int countElementsOnSameLayoutAsButton() { IDLayout var1 = this.cdp.getLayout(); int var2 = 1; int var4 = 0; while(true) { String var5 = new String() + var2; if (!var1.IsElementName(var5)) { --var2; if (this.cpReqField == null) { this.cpReqField = new boolean[var2]; for(int var9 = 0; var9 < var2; ++var9) { this.cpReqField[var9] = false; } this.reqFieldCount = var2; return var2; } else { int var10 = this.min(this.reqFieldCount, var2); boolean[] var3 = this.cpReqField; this.cpReqField = new boolean[var2]; for(var4 = 0; var4 < var10; ++var4) { this.cpReqField[var4] = var3[var4]; } if (this.reqFieldCount != this.max(this.reqFieldCount, var2)) { while(var4 < this.max(this.reqFieldCount, var2)) { this.cpReqField[var4] = false; ++var4; } } this.reqFieldCount = var2; return var2; } } ++var2; } } public String onInstall(DAssetManager var1, String var2) { this.field_2 = var1; this.codeBase = var2; return "Form Handler"; } protected void finalize() { if (this.published) { for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) { this.field_2.RemoveAsset(this.assetControl[this.tAssetCount]); } } } public void onPublish(DAssetManager var1, int var2) { boolean var3 = false; this.field_2 = var1; if (this.UnixWindows == null) { this.UnixWindows = "Windows"; } if (this.useremail == null) { this.useremail = "name@domain.com"; } if (this.cpCgiBinDir == null) { this.cpCgiBinDir = "assets/cgi-bin"; } if (this.storageDir == null) { this.storageDir = "assets/webdata"; } if (this.PCAbsolutePathConst == null) { this.PCAbsolutePathConst = "C:\\webdata\\"; this.PCAbsolutePath = this.PCAbsolutePathConst; } this.codeBase = this.cdp.getCodeBase(); String var4 = this.codeBase; IDLayout var5 = this.cdp.getLayout(); String var6 = ""; this.countElementsOnSameLayoutAsButton(); DFile var7 = new DFile(); DFile var8 = new DFile(); DFile var9 = new DFile(); String var10 = var9.GetPathChar(); String var11 = ""; if (this.published) { for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) { var1.RemoveAsset(this.assetControl[this.tAssetCount]); } } this.assetCount = 0; this.published = true; if (this.UnixWindows.compareTo("Windows") == 0) { this.actionCGIAsset = var1.AddAsset(var4 + "Forms" + var10 + "cgi-bin-NT" + var10 + "Forms-Handler.cgi", "CGI\u0000", this.cpCgiBinDir); this.assetControl[this.assetCount] = this.actionCGIAsset; var1.SetPublishAssetMode(this.assetControl[this.assetCount++], 453); this.field_2.GetAssetRelativeLocation(this.actionCGIAsset, var2, 0); this.assetControl[this.assetCount] = var1.AddAsset(var4 + "Forms" + var10 + "cgi-bin-NT" + var10 + "Buf.dll", "CGI\u0000", this.cpCgiBinDir); var1.SetPublishAssetMode(this.assetControl[this.assetCount++], 453); var11 = var4 + "Forms" + var10 + "cgi-bin-NT" + var10 + "Forms-Handler.cgi"; this.cdp.setHTMLBefore(this.ComposeHiddenInputTags(var2, this.actionCGIAsset)); var7.Open(var4 + "Forms" + var10 + "cgi-bin" + var10 + "config", 4097); var7.WriteString(this.PCAbsolutePath, -1); var7.Close(); this.assetControl[this.assetCount] = var1.AddAsset(var4 + "Forms" + var10 + "cgi-bin" + var10 + "config", "CGI\u0000", this.cpCgiBinDir); ++this.assetCount; } else if (this.UnixWindows.compareTo("Mac") == 0) { this.actionCGIAsset = this.field_2.AddAsset(var4 + "Forms" + var10 + "cgi-bin-mac" + var10 + "Forms-Handler.cgi", "CGI\u0000", this.cpCgiBinDir); var1.GetAssetRelativeLocation(this.actionCGIAsset, var2, 0); this.assetControl[this.assetCount] = this.actionCGIAsset; var1.SetPublishAssetMode(this.assetControl[this.assetCount++], 453); int var12 = this.assetControl[this.assetCount] = this.field_2.AddAsset(this.storageDir, "SubDir\u0000", ""); var1.SetPublishAssetMode(this.assetControl[this.assetCount++], 453); var11 = var4 + "Forms" + var10 + "cgi-bin-mac" + var10 + "Forms-Handler.cgi"; this.cdp.setHTMLBefore(this.ComposeHiddenInputTags(var2, this.actionCGIAsset)); var7.Open(var4 + "Forms" + var10 + "cgi-bin" + var10 + "MAC_form.cfg", 4097); var7.WriteString("$STORAGEDIR=\"" + this.getMacRelativeToRoot(this.Unix2MacPath(this.cpCgiBinDir)) + this.Unix2MacPath(this.storageDir) + ":\";", -1); this.assetControl[this.assetCount] = var1.AddAsset(var4 + "Forms" + var10 + "cgi-bin" + var10 + "MAC_form.cfg", "CGI\u0000", this.cpCgiBinDir); var1.SetPublishAssetMode(this.assetControl[this.assetCount++], 453); var7.Close(); } else if (this.UnixWindows.compareTo("Unix") == 0) { this.assetControl[this.assetCount] = var1.AddAsset(this.storageDir + var10 + "", "SubDir\u0000", ""); int var10000 = this.assetControl[this.assetCount]; var1.SetPublishAssetMode(this.assetControl[this.assetCount++], 475); this.actionCGIAsset = var1.AddAsset(var4 + "Forms" + var10 + "cgi-bin" + var10 + "Forms-Handler.cgi", "CGI\u0000", this.cpCgiBinDir); var6 = this.field_2.GetAssetRelativeLocation(this.actionCGIAsset, var2, 0); this.assetControl[this.assetCount] = this.actionCGIAsset; var1.SetPublishAssetMode(this.assetControl[this.assetCount++], 493); var11 = var4 + "Forms" + var10 + "cgi-bin" + var10 + "Forms-Handler.cgi"; var8.Open(var4 + "Forms" + var10 + "cgi-bin-Unix" + var10 + "Forms-Handler.cgi", 0); var7.Open(var4 + "Forms" + var10 + "cgi-bin" + var10 + "Forms-Handler.cgi", 4097); var7.WriteString("#!" + this.PerlPath + "\n", -1); var7.WriteString("$STORAGEDIR=\"" + this.getRelativeToRoot(var6) + this.storageDir + "/\";", -1); var7.WriteString(var8.ReadString(10000), -1); var7.Close(); var8.Close(); this.cdp.setHTMLBefore(this.ComposeHiddenInputTags(var2, this.actionCGIAsset)); } if (this.UnixWindows.compareTo("Email") == 0) { var6 = "mailto:" + this.useremail; var5.setFormAction(var6 + "\" ENCTYPE=\"Text/Plain"); } else { var5.setFormAction(var11); } } public void onDrop(IDLayout var1, IDRect var2, int var3) { if (var3 == 1) { this.assetControl = new int[50]; int var4 = 0; do { this.assetControl[var4] = 0; ++var4; } while(var4 < 50); new DFile(); this.useremail = "name@domain.com"; this.SubmitName = "Submit"; this.outputFile = "webinfo.txt"; this.UnixWindows = "Windows"; this.PerlPath = "/usr/bin/perl"; this.storageDir = "assets/webdata"; this.cpCgiBinDir = "assets/cgi-bin"; this.cdp = new DDrawFormButton(); this.cdp.setText(this.SubmitName); this.cdp.SetPositionRect(var2.getLeft(), var2.getTop(), var2.getRight(), var2.getBottom()); var1.AddObject(this.cdp); } if (var3 == 3) { } if (var3 == 0) { } if (var3 == 4) { } } boolean isExternal(String var1) { for(int var3 = 0; var3 < var1.length() - 1; ++var3) { String var2 = var1.substring(var3, var3 + 1); if (var2.compareTo("/") == 0 && var1.substring(var3 + 1, var3 + 2).compareTo("/") == 0) { return true; } } return false; } int min(int var1, int var2) { return var1 < var2 ? var1 : var2; } private String getNTRelativeToRoot(String var1) { String var2 = new String(); int var3 = var1.length(); if (var3 == 0) { return null; } else { String var4 = var1.substring(0, 2); if (var4.compareTo("./") == 0) { var1 = var1.substring(2, var3 - 1); } var3 = var1.length(); for(int var5 = 0; var5 < var3; ++var5) { if (var1.substring(var5, var5 + 1).compareTo("/") == 0) { var2 = var2 + "..\\"; } } var3 = var2.length(); String var9 = var2.substring(var3 - 1, var3); if (var9.compareTo("\\") != 0) { var2 = var2 + "\\"; } return var2; } } public void onInspect(CStringArray var1, CStringArray var2) { var1.Set("Button Name"); var2.Set("String\u0000"); var1.Set("Publish to"); var2.Set("Set(Windows|Unix|Mac|Email)"); if (this.UnixWindows.compareTo("Email") == 0) { var1.Set("Email"); var2.Set("String\u0000"); } if (this.UnixWindows.compareTo("Email") != 0) { var1.Set("Success URL"); var2.Set("Link\u0000"); var1.Set("Error URL"); var2.Set("Link\u0000"); var1.Set("Output File"); var2.Set("String\u0000"); } if (this.UnixWindows.compareTo("Unix") == 0) { var1.Set("Perl Path for Unix"); var2.Set("String\u0000"); } if (this.UnixWindows.compareTo("Email") != 0) { var1.Set("CGI-Bin Directory"); var2.Set("String\u0000"); } else { if (this.CgiBinDirConst == null) { this.CgiBinDirConst = "assets/cgi-bin"; } this.cpCgiBinDir = this.CgiBinDirConst; } if (this.UnixWindows.compareTo("Email") != 0) { if (this.UnixWindows.compareTo("Windows") == 0) { var1.Set("Abs. Storage Dir"); } else { var1.Set("Storage Directory"); } var2.Set("String\u0000"); } if (this.StorageDirConst == null) { this.StorageDirConst = "assets/webdata"; this.storageDir = this.StorageDirConst; } if (this.PCAbsolutePathConst == null) { this.PCAbsolutePathConst = "C:\\webdata\\"; this.PCAbsolutePath = this.PCAbsolutePathConst; } int var3 = this.countElementsOnSameLayoutAsButton(); for(int var4 = 0; var4 < var3; ++var4) { var1.Set(this.getFieldName(var4)); var2.Set("Set(True|False)"); } } String ComposeHiddenInputTags(int var1, int var2) { String var3 = this.field_2.GetAssetLocation(this.cpSuccessURL, var1, 1); String var4 = this.field_2.GetAssetLocation(this.cpErrorURL, var1, 1); new DMessageBox(); String var5 = "./"; if (var5.compareTo(var3.substring(0, 2)) == 0) { var3 = var3.substring(2); } if (var5.compareTo(var4.substring(0, 2)) == 0) { var4 = var4.substring(2); } String var6; for(var5 = "../"; var5.compareTo(var3.substring(0, 3)) == 0; var3 = var6) { var6 = var3.substring(3); } while(var5.compareTo(var4.substring(0, 3)) == 0) { var6 = var4.substring(3); var4 = var6; } boolean var8 = this.isExternal(var3); boolean var9 = this.isExternal(var4); String var7; if (var8) { var7 = "<INPUT TYPE=\"HIDDEN\" NAME=\"success\" VALUE=\"" + var3 + "\">\n"; } else { var7 = "<INPUT TYPE=\"HIDDEN\" NAME=\"success\" VALUE=\"" + this.cleanPath(var3, var2, var1) + "\">\n"; } if (var9) { var7 = var7 + "<INPUT TYPE=\"HIDDEN\" NAME=\"error\" VALUE=\"" + var4 + "\">\n"; } else { var7 = var7 + "<INPUT TYPE=\"HIDDEN\" NAME=\"error\" VALUE=\"" + this.cleanPath(var4, var2, var1) + "\">\n"; } var7 = var7 + "<INPUT TYPE=\"HIDDEN\" NAME=\"fields\" VALUE=\"" + this.reqFieldCount + "\">\n"; var7 = var7 + "<INPUT TYPE=\"HIDDEN\" NAME=\"filename\" VALUE=\"" + this.outputFile + "\">\n"; for(int var11 = 0; var11 < this.reqFieldCount; ++var11) { if (this.cpReqField[var11]) { int var10 = var11 + 1; var7 = var7 + "<INPUT TYPE=\"HIDDEN\" NAME=\"" + var10 + "a\" VALUE=\"TRUE\">\n"; } } return var7; } protected String Unix2MacPath(String var1) { String var2 = ""; String var3 = ""; byte var4 = 0; if (var1.length() >= 2 && var1.substring(0, 2).compareTo("./") == 0) { var1 = var1.substring(2, var1.length()); } if (var1.substring(0, 1) == "/") { var1 = var1.substring(1, var1.length()); } for(int var5 = 0; var5 < var1.length(); ++var5) { var3 = var1.substring(var5, var5 + 1); if (var3.compareTo(".") == 0) { if (var4 == 0) { var4 = 1; } else if (var4 == 1) { var4 = 2; } } else if (var3.compareTo("/") == 0) { if (var4 == 2 || var4 == 0) { var2 = var2 + ":"; var4 = 0; } } else { var2 = var2 + var3; } } if (var2.substring(0, 1).compareTo(".") == 0) { var2 = ":" + var2; } return var2; } public String StripPrefixes(String var1) { String var2 = ""; int var3 = 0; if (var1.substring(0, 1).compareTo("/") == 0) { var2 = "/"; } else if (var1.substring(0, 2).compareTo("./") == 0) { var2 = "./"; } else if (var1.substring(0, 3).compareTo("../") == 0) { var2 = "../"; } var3 = var2.length(); if (var3 == 0) { return var1; } else { for(; var2.compareTo(var1.substring(0, var3)) == 0; var3 = var2.length()) { var1 = var1.substring(var3); if (var1.substring(0, 1).compareTo("/") == 0) { var2 = "/"; } else if (var1.substring(0, 2).compareTo("./") == 0) { var2 = "./"; } else if (var1.substring(0, 3).compareTo("../") == 0) { var2 = "../"; } } return var1; } } }