Commit: c02b488ca09b5f896be5278c86988de0821c9681
Author: Matt Ficken <[email protected]> Tue, 1 Jan 2013
21:07:55 -0800
Parents: b2ebf385f0613cd92ec2b1e73a43c0a03afebbcf
Branches: master
Link:
http://git.php.net/?p=pftt2.git;a=commitdiff;h=c02b488ca09b5f896be5278c86988de0821c9681
Log:
scenario changes
Former-commit-id: a7e6afbe5189f9b21c9f975ff566f47e57452cce
Changed paths:
A app/appleseedproj-appleseed-faf8b52.zip
A app/atrium-1-1.zip
A app/limesurvey200plus-build121220.zip.REMOVED.git-id
A app/moodle-2.4.zip.REMOVED.git-id
A app/phpMyAdmin-3.4.9-all-languages.zip
A app/phpPgAdmin-5.0.3.zip
A app/phpTickets-1_1_0.zip
A conf/app/appleseed.groovy
D conf/app/eyeos.groovy
A conf/app/hello_world.groovy
A conf/app/lime_survey.groovy
A conf/app/moodle.groovy
A conf/app/open_atrium.groovy
A conf/app/phpmyadmin.groovy
A conf/app/phppgadmin.groovy
A conf/app/phptickets.groovy
A conf/app/xos.groovy
M src/com/mostc/pftt/host/Host.java
M src/com/mostc/pftt/main/PfttMain.java
M src/com/mostc/pftt/model/phpt/PhpDebugPack.java
M src/com/mostc/pftt/results/ConsoleManager.java
M src/com/mostc/pftt/runner/PhptTestPackRunner.java
M src/com/mostc/pftt/scenario/AbstractFileSystemScenario.java
M src/com/mostc/pftt/scenario/AbstractINIScenario.java
M src/com/mostc/pftt/scenario/AbstractSAPIScenario.java
M src/com/mostc/pftt/scenario/AbstractWebServerScenario.java
A src/com/mostc/pftt/scenario/AppleseedScenario.java
A src/com/mostc/pftt/scenario/DrupalScenario.groovy
D src/com/mostc/pftt/scenario/DrupalScenario.java
A src/com/mostc/pftt/scenario/HelloWorldScenario.groovy
A src/com/mostc/pftt/scenario/JoomlaScenario.groovy
D src/com/mostc/pftt/scenario/JoomlaScenario.java
A src/com/mostc/pftt/scenario/LimeSurveyScenario.java
A src/com/mostc/pftt/scenario/MoodleScenario.java
A src/com/mostc/pftt/scenario/OpenAtriumScenario.java
A src/com/mostc/pftt/scenario/PhpMyAdminScenario.java
A src/com/mostc/pftt/scenario/PhpPgAdminScenario.java
A src/com/mostc/pftt/scenario/PhpTicketsScenario.java
A src/com/mostc/pftt/scenario/PliggScenario.groovy
D src/com/mostc/pftt/scenario/PliggScenario.java
M src/com/mostc/pftt/scenario/ScenarioSet.java
A src/com/mostc/pftt/scenario/SquirrelMailScenario.groovy
D src/com/mostc/pftt/scenario/SquirrelMailScenario.java
A src/com/mostc/pftt/scenario/WordpressScenario.groovy
D src/com/mostc/pftt/scenario/WordpressScenario.java
M src/com/mostc/pftt/scenario/ZipApplication.java
M src/com/mostc/pftt/util/DebuggerManager.java
M src/com/mostc/pftt/util/WindowsSnapshotDownloadUtil.groovy
diff --git a/app/appleseedproj-appleseed-faf8b52.zip
b/app/appleseedproj-appleseed-faf8b52.zip
new file mode 100644
index 0000000..275de81
Binary files /dev/null and b/app/appleseedproj-appleseed-faf8b52.zip differ
diff --git a/app/atrium-1-1.zip b/app/atrium-1-1.zip
new file mode 100644
index 0000000..aa35b0f
Binary files /dev/null and b/app/atrium-1-1.zip differ
diff --git a/app/limesurvey200plus-build121220.zip.REMOVED.git-id
b/app/limesurvey200plus-build121220.zip.REMOVED.git-id
new file mode 100644
index 0000000..6eacc2e
--- /dev/null
+++ b/app/limesurvey200plus-build121220.zip.REMOVED.git-id
@@ -0,0 +1 @@
+0c7fadba6cc53e0f5685895367aa9fbbfc7eef67
\ No newline at end of file
diff --git a/app/moodle-2.4.zip.REMOVED.git-id
b/app/moodle-2.4.zip.REMOVED.git-id
new file mode 100644
index 0000000..f61e54e
--- /dev/null
+++ b/app/moodle-2.4.zip.REMOVED.git-id
@@ -0,0 +1 @@
+e8726441d4f4e9a77301ea09157e8d1f76fa552b
\ No newline at end of file
diff --git a/app/phpMyAdmin-3.4.9-all-languages.zip
b/app/phpMyAdmin-3.4.9-all-languages.zip
new file mode 100644
index 0000000..a86f465
Binary files /dev/null and b/app/phpMyAdmin-3.4.9-all-languages.zip differ
diff --git a/app/phpPgAdmin-5.0.3.zip b/app/phpPgAdmin-5.0.3.zip
new file mode 100644
index 0000000..a6cd100
Binary files /dev/null and b/app/phpPgAdmin-5.0.3.zip differ
diff --git a/app/phpTickets-1_1_0.zip b/app/phpTickets-1_1_0.zip
new file mode 100644
index 0000000..7e87667
Binary files /dev/null and b/app/phpTickets-1_1_0.zip differ
diff --git a/conf/app/appleseed.groovy b/conf/app/appleseed.groovy
new file mode 100644
index 0000000..a495676
--- /dev/null
+++ b/conf/app/appleseed.groovy
@@ -0,0 +1,4 @@
+
+def scenarios() {
+ [new AppleseedScenario()]
+}
diff --git a/conf/app/eyeos.groovy b/conf/app/eyeos.groovy
deleted file mode 100644
index 0ef17ab..0000000
--- a/conf/app/eyeos.groovy
+++ /dev/null
@@ -1,4 +0,0 @@
-
-def scenarios() {
- [new EyeOSScenario()]
-}
diff --git a/conf/app/hello_world.groovy b/conf/app/hello_world.groovy
new file mode 100644
index 0000000..a3dec39
--- /dev/null
+++ b/conf/app/hello_world.groovy
@@ -0,0 +1,4 @@
+
+def scenarios() {
+ [new HelloWorldScenario()]
+}
diff --git a/conf/app/lime_survey.groovy b/conf/app/lime_survey.groovy
new file mode 100644
index 0000000..7aa3b6f
--- /dev/null
+++ b/conf/app/lime_survey.groovy
@@ -0,0 +1,4 @@
+
+def scenarios() {
+ [new LimeSurveyScenario()]
+}
diff --git a/conf/app/moodle.groovy b/conf/app/moodle.groovy
new file mode 100644
index 0000000..cffb5a7
--- /dev/null
+++ b/conf/app/moodle.groovy
@@ -0,0 +1,4 @@
+
+def scenarios() {
+ [new MoodleScenario()]
+}
diff --git a/conf/app/open_atrium.groovy b/conf/app/open_atrium.groovy
new file mode 100644
index 0000000..7d185c4
--- /dev/null
+++ b/conf/app/open_atrium.groovy
@@ -0,0 +1,4 @@
+
+def scenarios() {
+ [new OpenAtriumScenario()]
+}
diff --git a/conf/app/phpmyadmin.groovy b/conf/app/phpmyadmin.groovy
new file mode 100644
index 0000000..8735645
--- /dev/null
+++ b/conf/app/phpmyadmin.groovy
@@ -0,0 +1,4 @@
+
+def scenarios() {
+ [new PhpMyAdminScenario()]
+}
diff --git a/conf/app/phppgadmin.groovy b/conf/app/phppgadmin.groovy
new file mode 100644
index 0000000..6c9ef24
--- /dev/null
+++ b/conf/app/phppgadmin.groovy
@@ -0,0 +1,4 @@
+
+def scenarios() {
+ [new PhpPgAdminScenario()]
+}
diff --git a/conf/app/phptickets.groovy b/conf/app/phptickets.groovy
new file mode 100644
index 0000000..604d1dc
--- /dev/null
+++ b/conf/app/phptickets.groovy
@@ -0,0 +1,4 @@
+
+def scenarios() {
+ [new PhpTicketsScenario()]
+}
diff --git a/conf/app/xos.groovy b/conf/app/xos.groovy
new file mode 100644
index 0000000..7d11ec7
--- /dev/null
+++ b/conf/app/xos.groovy
@@ -0,0 +1,4 @@
+
+def scenarios() {
+ [new XOSScenario()]
+}
diff --git a/src/com/mostc/pftt/host/Host.java
b/src/com/mostc/pftt/host/Host.java
index 552715d..0467530 100644
--- a/src/com/mostc/pftt/host/Host.java
+++ b/src/com/mostc/pftt/host/Host.java
@@ -890,21 +890,27 @@ public abstract class Host {
/** unzips .ZIP file into base_dir
*
+ * @param cm
* @param zip_file
* @param base_dir
* @return
*/
- public boolean unzip(String zip_file, String base_dir) {
- mkdirs(base_dir);
- return exec("unzip "+zip_file+" "+base_dir,
ONE_HOUR).isSuccess();
- }
-
public boolean unzip(ConsoleManager cm, String zip_file, String
base_dir) {
- if (unzip(zip_file, base_dir))
- return true;
- cm.println(getClass(), "Unable to unzip: "+zip_file);
+ try {
+ mkdirs(base_dir);
+ if (exec("unzip "+zip_file+" "+base_dir,
ONE_HOUR).isSuccess())
+ return true;
+ else
+ cm.println(getClass(), "Unable to unzip:
"+zip_file);
+ } catch ( Exception ex ) {
+ cm.printStackTrace(ex);
+ }
return false;
}
+
+ public boolean unzip(String zip_file, String base_dir) {
+ return unzip(null, zip_file, base_dir);
+ }
/** ensures that name is unique by adding a number to the end of it if
* it already exists... returns unqiue name.
diff --git a/src/com/mostc/pftt/main/PfttMain.java
b/src/com/mostc/pftt/main/PfttMain.java
index 25f5bc1..4595de8 100644
--- a/src/com/mostc/pftt/main/PfttMain.java
+++ b/src/com/mostc/pftt/main/PfttMain.java
@@ -41,6 +41,7 @@ import com.mostc.pftt.results.PhptResultPackReader;
import com.mostc.pftt.results.PhptResultPackWriter;
import com.mostc.pftt.runner.PhpUnitTestPackRunner;
import com.mostc.pftt.runner.PhptTestPackRunner;
+import com.mostc.pftt.scenario.AbstractSAPIScenario;
import com.mostc.pftt.scenario.Scenario;
import com.mostc.pftt.scenario.ScenarioSet;
import com.mostc.pftt.util.DownloadUtil;
@@ -108,7 +109,7 @@ public class PfttMain {
// on Windows, missing .DLLs from a php build
will cause a blocking winpop dialog msg to appear
// in such a case, the test will timeout after
1 minute and then fail (stopping at that point is important)
// @see PhpBuild#getExtensionList
- if (test.test(build, cm, host,
ScenarioSet.getSAPIScenario(scenario_set).getSAPIType())==ESmokeTestStatus.FAIL)
{
+ if (test.test(build, cm, host,
AbstractSAPIScenario.getSAPIScenario(scenario_set).getSAPIType())==ESmokeTestStatus.FAIL)
{
// if this test fails,
RequiredFeaturesSmokeTest will fail for sure
cm.println("Main", "Failed smoke test:
"+test.getName());
break;
@@ -184,7 +185,7 @@ public class PfttMain {
//
{
RequiredExtensionsSmokeTest test = new
RequiredExtensionsSmokeTest();
- if (test.test(build, cm, host,
ScenarioSet.getSAPIScenario(scenario_set).getSAPIType())==ESmokeTestStatus.FAIL)
{
+ if (test.test(build, cm, host,
AbstractSAPIScenario.getSAPIScenario(scenario_set).getSAPIType())==ESmokeTestStatus.FAIL)
{
cm.println("Main", "Failed smoke test:
"+test.getName());
break;
}
@@ -369,7 +370,7 @@ public class PfttMain {
}
protected static void cmd_release_get(ConsoleManager cm, boolean force,
Host host, URL url) {
- download_release_and_decompress(cm, force, true, host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host, url), url);
+ download_release_and_decompress(cm, force, "build", host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host, url), url);
}
protected static void cmd_release_get_previous(ConsoleManager cm,
boolean force, Host host, EBuildBranch branch, EBuildType build_type) {
@@ -379,8 +380,9 @@ public class PfttMain {
System.err.println("PFTT: release_get: unable to find
previous build of "+branch+" of type "+build_type);
return;
}
- download_release_and_decompress(cm, force, true, host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host, find_pair.getBuild()),
find_pair.getBuild());
- download_release_and_decompress(cm, force, false, host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host,
find_pair.getTest_pack()), find_pair.getTest_pack());
+ download_release_and_decompress(cm, force, "build", host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host, find_pair.getBuild()),
find_pair.getBuild());
+ download_release_and_decompress(cm, force, "test-pack", host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host,
find_pair.getTest_pack()), find_pair.getTest_pack());
+ download_release_and_decompress(cm, force, "debug-pack", host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host,
find_pair.getDebug_pack()), find_pair.getDebug_pack());
}
protected static void cmd_release_get_newest(ConsoleManager cm, boolean
force, Host host, EBuildBranch branch, EBuildType build_type) {
@@ -390,8 +392,9 @@ public class PfttMain {
System.err.println("PFTT: release_get: unable to find
newest build of "+branch+" of type "+build_type);
return;
}
- download_release_and_decompress(cm, force, true, host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host, find_pair.getBuild()),
find_pair.getBuild());
- download_release_and_decompress(cm, force, false, host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host,
find_pair.getTest_pack()), find_pair.getTest_pack());
+ download_release_and_decompress(cm, force, "build", host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host, find_pair.getBuild()),
find_pair.getBuild());
+ download_release_and_decompress(cm, force, "test-pack", host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host,
find_pair.getTest_pack()), find_pair.getTest_pack());
+ download_release_and_decompress(cm, force, "debug-pack", host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host,
find_pair.getDebug_pack()), find_pair.getDebug_pack());
}
protected static void cmd_release_get_revision(ConsoleManager cm,
boolean force, Host host, EBuildBranch branch, EBuildType build_type, String
revision) {
@@ -403,9 +406,11 @@ public class PfttMain {
}
if (find_pair.getBuild()!=null)
- download_release_and_decompress(cm, force, true, host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host, find_pair.getBuild()),
find_pair.getBuild());
+ download_release_and_decompress(cm, force, "build",
host, WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host,
find_pair.getBuild()), find_pair.getBuild());
if (find_pair.getTest_pack()!=null)
- download_release_and_decompress(cm, force, false, host,
WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host,
find_pair.getTest_pack()), find_pair.getTest_pack());
+ download_release_and_decompress(cm, force, "test-pack",
host, WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host,
find_pair.getTest_pack()), find_pair.getTest_pack());
+ if (find_pair.getDebug_pack()!=null)
+ download_release_and_decompress(cm, force,
"debug-pack", host, WindowsSnapshotDownloadUtil.snapshotURLtoLocalFile(host,
find_pair.getDebug_pack()), find_pair.getDebug_pack());
}
protected static boolean confirm(String msg) {
@@ -418,7 +423,7 @@ public class PfttMain {
}
}
- protected static void download_release_and_decompress(ConsoleManager
cm, boolean force, boolean is_build, Host host, File local_dir, URL url) {
+ protected static void download_release_and_decompress(ConsoleManager
cm, boolean force, String download_type, Host host, File local_dir, URL url) {
if (!force && local_dir.exists()) {
if (!confirm("Overwrite existing folder
"+local_dir+"?"))
return;
@@ -426,15 +431,9 @@ public class PfttMain {
System.out.println("PFTT: release_get: downloading "+url+"...");
if (DownloadUtil.downloadAndUnzip(cm, host, url,
local_dir.getAbsolutePath())) {
- if (is_build)
- cm.println("release_get", "build INSTALLED:
"+local_dir);
- else
- cm.println("release_get", "test-pack INSTALLED:
"+local_dir);
+ cm.println("release_get", download_type+" INSTALLED:
"+local_dir);
} else {
- if (is_build)
- cm.println("release_get", "unable to decompress
build");
- else
- cm.println("release_get", "unable to decompress
test-pack");
+ cm.println("release_get", "unable to decompress
"+download_type);
}
} // end protected static void download_release_and_decompress
@@ -534,12 +533,12 @@ public class PfttMain {
return null; // build not found/readable error
}
- protected static PhptSourceTestPack newTestPack(Host host, String path)
{
+ protected static PhptSourceTestPack newTestPack(ConsoleManager cm, Host
host, String path) {
PhptSourceTestPack test_pack = new PhptSourceTestPack(path);
- if (test_pack.open(host))
+ if (test_pack.open(cm, host))
return test_pack;
test_pack = new PhptSourceTestPack(host.getPhpSdkDir() + "/" +
path);
- if (test_pack.open(host))
+ if (test_pack.open(cm, host))
return test_pack;
else
return null; // test-pack not found/readable error
@@ -576,7 +575,8 @@ public class PfttMain {
Config config = null;
boolean is_uac = false, windebug = false, show_gui = false,
force = false, disable_debug_prompt = false, results_only = false,
dont_cleanup_test_pack = false, phpt_not_in_place = false;
- String source_pack = null, debug_pack = null;
+ String source_pack = null;
+ PhpDebugPack debug_pack = null;
LinkedList<File> config_files = new LinkedList<File>();
int stress_all = 0, stress_each = 0;
@@ -690,9 +690,10 @@ public class PfttMain {
} else if (args[args_i].equals("-src_pack")) {
source_pack = args[args_i++];
} else if (args[args_i].equals("-debug_pack")) {
- debug_pack = args[args_i++];
-
- PhpDebugPack.open();
+ if (null == ( debug_pack =
PhpDebugPack.open(rt.host, args[args_i++]))) {
+ System.err.println("PFTT: debug-pack
not found: "+args[args_i-1]);
+ System.exit(-250);
+ }
} else if (args[args_i].startsWith("-")) {
System.err.println("User Error: unknown option
"+args[args_i]);
@@ -756,7 +757,7 @@ public class PfttMain {
return;
}
- PhptSourceTestPack test_pack =
newTestPack(rt.host, args[args_i+2]);
+ PhptSourceTestPack test_pack = newTestPack(cm,
rt.host, args[args_i+2]);
if (test_pack==null) {
System.err.println("IO Error: can not
open php test pack: "+test_pack);
System.exit(-255);
@@ -794,7 +795,7 @@ public class PfttMain {
return;
}
- PhptSourceTestPack test_pack =
newTestPack(rt.host, args[args_i+2]);
+ PhptSourceTestPack test_pack = newTestPack(cm,
rt.host, args[args_i+2]);
if (test_pack == null) {
System.err.println("IO Error: can not
open php test pack: "+test_pack);
System.exit(-255);
@@ -837,7 +838,7 @@ public class PfttMain {
return;
}
- PhptSourceTestPack test_pack =
newTestPack(rt.host, args[args_i+2]);
+ PhptSourceTestPack test_pack = newTestPack(cm,
rt.host, args[args_i+2]);
if (test_pack == null) {
System.err.println("IO Error: can not
open php test pack: "+test_pack);
System.exit(-255);
diff --git a/src/com/mostc/pftt/model/phpt/PhpDebugPack.java
b/src/com/mostc/pftt/model/phpt/PhpDebugPack.java
index 483846c..8a6ca68 100644
--- a/src/com/mostc/pftt/model/phpt/PhpDebugPack.java
+++ b/src/com/mostc/pftt/model/phpt/PhpDebugPack.java
@@ -1,7 +1,30 @@
package com.mostc.pftt.model.phpt;
+import com.mostc.pftt.host.Host;
import com.mostc.pftt.model.DebugPack;
+import com.mostc.pftt.util.StringUtil;
public class PhpDebugPack extends DebugPack {
+ protected final String path;
+
+ protected PhpDebugPack(String path) {
+ this.path = path;
+ }
+
+ public String getPath() {
+ return path;
+ }
-}
+ public static PhpDebugPack open(Host host, String path) {
+ if (StringUtil.endsWithIC(path, ".zip")) {
+ // automatically decompress
+ String zip_file = path;
+ path =
host.uniqueNameFromBase(Host.removeFileExt(path));
+
+ if (!host.unzip(zip_file, path))
+ return null;
+ }
+ return new PhpDebugPack(path);
+ }
+
+} // end public class PhpDebugPack
diff --git a/src/com/mostc/pftt/results/ConsoleManager.java
b/src/com/mostc/pftt/results/ConsoleManager.java
index 71588ee..4907d34 100644
--- a/src/com/mostc/pftt/results/ConsoleManager.java
+++ b/src/com/mostc/pftt/results/ConsoleManager.java
@@ -5,6 +5,7 @@ import java.awt.Container;
import javax.swing.JFrame;
import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpDebugPack;
import com.mostc.pftt.model.phpt.PhptTestCase;
import com.mostc.pftt.model.phpt.EPhptTestStatus;
import com.mostc.pftt.runner.PhptTestPackRunner;
@@ -13,10 +14,11 @@ import com.mostc.pftt.util.ErrorUtil;
public class ConsoleManager {
protected final boolean force, windebug, results_only, show_gui,
disable_debug_prompt, dont_cleanup_test_pack, phpt_not_in_place;
- protected String source_pack, debug_pack;
+ protected String source_pack;
+ protected PhpDebugPack debug_pack;
protected PhptDebuggerFrame gui;
- public ConsoleManager(String source_pack, String debug_pack, boolean
force, boolean windebug, boolean results_only, boolean show_gui, boolean
disable_debug_prompt, boolean dont_cleanup_test_pack, boolean
phpt_not_in_place) {
+ public ConsoleManager(String source_pack, PhpDebugPack debug_pack,
boolean force, boolean windebug, boolean results_only, boolean show_gui,
boolean disable_debug_prompt, boolean dont_cleanup_test_pack, boolean
phpt_not_in_place) {
this.source_pack = source_pack;
this.debug_pack = debug_pack;
this.force = force;
@@ -106,7 +108,7 @@ public class ConsoleManager {
return phpt_not_in_place;
}
- public String getDebugPack() {
+ public PhpDebugPack getDebugPack() {
return debug_pack;
}
diff --git a/src/com/mostc/pftt/runner/PhptTestPackRunner.java
b/src/com/mostc/pftt/runner/PhptTestPackRunner.java
index 7a57efa..f35eaf2 100644
--- a/src/com/mostc/pftt/runner/PhptTestPackRunner.java
+++ b/src/com/mostc/pftt/runner/PhptTestPackRunner.java
@@ -89,8 +89,8 @@ public class PhptTestPackRunner extends
AbstractTestPackRunner {
//
runner_state.set(ETestPackRunnerState.RUNNING);
- sapi_scenario = ScenarioSet.getSAPIScenario(scenario_set);
- file_scenario = ScenarioSet.getFileSystemScenario(scenario_set);
+ sapi_scenario =
AbstractSAPIScenario.getSAPIScenario(scenario_set);
+ file_scenario =
AbstractFileSystemScenario.getFileSystemScenario(scenario_set);
// ensure all scenarios are implemented
if (!scenario_set.isImplemented()) {
diff --git a/src/com/mostc/pftt/scenario/AbstractFileSystemScenario.java
b/src/com/mostc/pftt/scenario/AbstractFileSystemScenario.java
index dc62346..62d773a 100644
--- a/src/com/mostc/pftt/scenario/AbstractFileSystemScenario.java
+++ b/src/com/mostc/pftt/scenario/AbstractFileSystemScenario.java
@@ -4,6 +4,11 @@ import com.mostc.pftt.host.Host;
import com.mostc.pftt.results.ConsoleManager;
public abstract class AbstractFileSystemScenario extends
AbstractSerialScenario {
+
+ public static AbstractFileSystemScenario
getFileSystemScenario(ScenarioSet scenario_set) {
+ return
scenario_set.getScenario(AbstractFileSystemScenario.class,
DEFAULT_FILESYSTEM_SCENARIO);
+ }
+
@Override
public Class<?> getSerialKey() {
return AbstractFileSystemScenario.class;
diff --git a/src/com/mostc/pftt/scenario/AbstractINIScenario.java
b/src/com/mostc/pftt/scenario/AbstractINIScenario.java
index febb0d3..d239834 100644
--- a/src/com/mostc/pftt/scenario/AbstractINIScenario.java
+++ b/src/com/mostc/pftt/scenario/AbstractINIScenario.java
@@ -21,7 +21,7 @@ public abstract class AbstractINIScenario extends
AbstractSerialScenario {
@Override
public boolean setup(ConsoleManager cm, Host host, PhpBuild build,
ScenarioSet scenario_set) {
try {
- ESAPIType sapi_type =
ScenarioSet.getSAPIScenario(scenario_set).getSAPIType();
+ ESAPIType sapi_type =
AbstractSAPIScenario.getSAPIScenario(scenario_set).getSAPIType();
PhpIni ini = build.getDefaultPhpIni(host, sapi_type);
if (setup(cm, host, build, ini)) {
diff --git a/src/com/mostc/pftt/scenario/AbstractSAPIScenario.java
b/src/com/mostc/pftt/scenario/AbstractSAPIScenario.java
index 14867fe..099e0f3 100644
--- a/src/com/mostc/pftt/scenario/AbstractSAPIScenario.java
+++ b/src/com/mostc/pftt/scenario/AbstractSAPIScenario.java
@@ -27,6 +27,10 @@ import com.mostc.pftt.runner.PhptTestPackRunner.PhptThread;
public abstract class AbstractSAPIScenario extends AbstractSerialScenario {
+ public static AbstractSAPIScenario getSAPIScenario(ScenarioSet
scenario_set) {
+ return scenario_set.getScenario(AbstractSAPIScenario.class,
DEFAULT_SAPI_SCENARIO);
+ }
+
@Override
public Class<?> getSerialKey() {
return AbstractSAPIScenario.class;
diff --git a/src/com/mostc/pftt/scenario/AbstractWebServerScenario.java
b/src/com/mostc/pftt/scenario/AbstractWebServerScenario.java
index 8268c71..b1cbe3d 100644
--- a/src/com/mostc/pftt/scenario/AbstractWebServerScenario.java
+++ b/src/com/mostc/pftt/scenario/AbstractWebServerScenario.java
@@ -32,6 +32,10 @@ public abstract class AbstractWebServerScenario extends
AbstractSAPIScenario {
public final WebServerManager smgr; // TODO protected
protected final PhptHttpClient http_client;
+ public static AbstractWebServerScenario
getWebServerScenario(ScenarioSet scenario_set) {
+ return
scenario_set.getScenario(AbstractWebServerScenario.class, null);
+ }
+
protected AbstractWebServerScenario(WebServerManager smgr) {
this.smgr = smgr;
diff --git a/src/com/mostc/pftt/scenario/AppleseedScenario.java
b/src/com/mostc/pftt/scenario/AppleseedScenario.java
new file mode 100644
index 0000000..1606f9a
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/AppleseedScenario.java
@@ -0,0 +1,36 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** The Appleseed Project - The First Open Source+Distributed Social
Networking Platform
+ *
+ * @see http://github.com/appleseedproj/appleseed/
+ *
+ */
+
+public class AppleseedScenario extends ZipDbApplication {
+
+ @Override
+ protected String getZipAppFileName() {
+ return "appleseedproj-appleseed-faf8b52.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public String getName() {
+ return "Appleseed";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/DrupalScenario.groovy
b/src/com/mostc/pftt/scenario/DrupalScenario.groovy
new file mode 100644
index 0000000..76fad29
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/DrupalScenario.groovy
@@ -0,0 +1,84 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** A free and open-source content management framework (CMF) written in PHP
and distributed under
+ * the GNU General Public License. It is used as a back-end system for at
least 2.1% of
+ * all websites worldwide ranging from personal blogs to corporate, political,
and government
+ * sites including whitehouse.gov and data.gov.uk. It is also used for
knowledge management and
+ * business collaboration.
+ *
+ * @see https://drupal.org/
+ *
+ */
+
+public class DrupalScenario extends ZipDbApplication {
+
+ @Override
+ public String getName() {
+ return "Drupal";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+ @Override
+ protected String getZipAppFileName() {
+ return "drupal-7.18.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+
+ host.open("drupal/web.config");
+ def xml = """
+<?xml version="1.0" encoding="UTF-8"?>
+ <configuration>
+ <system.webServer>
+ <!-- Don't show directory listings for URLs which map to a
directory. -->
+ <directoryBrowse enabled="false" />
+ <rewrite>
+ <rules>
+ <rule name="Protect files and directories from prying
eyes" stopProcessing="true">
+ <action type="CustomResponse" statusCode="403"
subStatusCode="0" statusReason="Forbidden" statusDescription="Access is
forbidden." />
+ </rule>
+ <rule name="Force simple error message for requests for
non-existent favicon.ico" stopProcessing="true">
+ <match url="favicon\\.ico" />
+ <action type="CustomResponse" statusCode="404"
subStatusCode="1" statusReason="File Not Found" statusDescription="The
requested file favicon.ico was not found" />
+ </rule>
+ <!-- Rewrite URLs of the form 'x' to the form
'index.php?q=x'. -->
+ <rule name="Short URLs" stopProcessing="true">
+ <conditions>
+ <add input="{REQUEST_FILENAME}" matchType="IsFile"
ignoreCase="false" negate="true" />
+ <add input="{REQUEST_FILENAME}"
matchType="IsDirectory" ignoreCase="false" negate="true" />
+ </conditions>
+ <action type="Rewrite" url="index.php?q={R:1}"
appendQueryString="true" />
+ </rule>
+ </rules>
+ </rewrite>
+
+ <httpErrors>
+ <remove statusCode="404" subStatusCode="-1" />
+ <error statusCode="404" prefixLanguageFilePath=""
path="/index.php" responseMode="ExecuteURL" />
+ </httpErrors>
+
+ <defaultDocument>
+ <!-- Set the default document -->
+ <files>
+ <remove value="index.php" />
+ <add value="index.php" />
+ </files>
+ </defaultDocument>
+ </system.webServer>
+ </configuration>
+"""
+
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/DrupalScenario.java
b/src/com/mostc/pftt/scenario/DrupalScenario.java
deleted file mode 100644
index c279ab5..0000000
--- a/src/com/mostc/pftt/scenario/DrupalScenario.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.mostc.pftt.scenario;
-
-import com.mostc.pftt.host.Host;
-import com.mostc.pftt.model.phpt.PhpBuild;
-import com.mostc.pftt.results.ConsoleManager;
-
-/** A free and open-source content management framework (CMF) written in PHP
and distributed under
- * the GNU General Public License. It is used as a back-end system for at
least 2.1% of
- * all websites worldwide ranging from personal blogs to corporate, political,
and government
- * sites including whitehouse.gov and data.gov.uk. It is also used for
knowledge management and
- * business collaboration.
- *
- * @see https://drupal.org/
- *
- */
-
-public class DrupalScenario extends ZipDbApplication {
-
- @Override
- public String getName() {
- return "Drupal";
- }
-
- @Override
- public boolean isImplemented() {
- return false;
- }
-
- @Override
- protected String getZipAppFileName() {
- return "drupal-7.18.zip";
- }
-
- @Override
- protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
- // TODO Auto-generated method stub
- return false;
- }
-
-}
diff --git a/src/com/mostc/pftt/scenario/HelloWorldScenario.groovy
b/src/com/mostc/pftt/scenario/HelloWorldScenario.groovy
new file mode 100644
index 0000000..400dc32
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/HelloWorldScenario.groovy
@@ -0,0 +1,40 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** Simple PHP script that just prints 'Hello World'
+ *
+ * @author Matt Ficken
+ *
+ */
+
+public class HelloWorldScenario extends ApplicationScenario {
+
+ @Override
+ public boolean setup(ConsoleManager cm, Host host, PhpBuild build,
ScenarioSet scenario_set) {
+ def php_code = """
+<?php
+
+echo "Hello World";
+
+?>
+"""
+
+ host.saveTextFile("helloworld.php", php_code)
+
+ return true;
+ }
+
+ @Override
+ public String getName() {
+ return "HelloWorld";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return true;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/JoomlaScenario.groovy
b/src/com/mostc/pftt/scenario/JoomlaScenario.groovy
new file mode 100644
index 0000000..b4cb1ce
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/JoomlaScenario.groovy
@@ -0,0 +1,94 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** Joomla is a free and open source content management system (CMS) for
publishing content on the
+ * World Wide Web and intranets and a model�view�controller (MVC) Web
application framework that can
+ * also be used independently.
+ *
+ * @see http://www.joomla.org/
+ *
+ */
+
+public class JoomlaScenario extends ZipDbApplication {
+
+ @Override
+ public String getName() {
+ return "Joomla";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+ @Override
+ protected String getZipAppFileName() {
+ return "Joomla_3.0.2-Stable-Full_Package.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+
+ host.open("joomla/joomla.xml");
+ def xml = """
+ <?xml version="1.0" encoding="UTF-8" ?>
+ - <extension version="3.0" type="file" method="upgrade">
+ <name>files_joomla</name>
+ <author>Joomla! Project</author>
+ <authorEmail>[email protected]</authorEmail>
+ <authorUrl>www.joomla.org</authorUrl>
+ <copyright>(C) 2005 - 2012 Open Source Matters. All rights
reserved</copyright>
+ <license>GNU General Public License version 2 or later; see
LICENSE.txt</license>
+ <version>3.0.2</version>
+ <creationDate>November 2012</creationDate>
+ <description>FILES_JOOMLA_XML_DESCRIPTION</description>
+
<scriptfile>administrator/components/com_admin/script.php</scriptfile>
+ - <update>
+ - <!-- Runs on update; New in 1.7
+ -->
+ - <schemas>
+ <schemapath
type="mysql">administrator/components/com_admin/sql/updates/mysql</schemapath>
+ <schemapath
type="sqlsrv">administrator/components/com_admin/sql/updates/sqlsrv</schemapath>
+ <schemapath
type="sqlazure">administrator/components/com_admin/sql/updates/sqlazure</schemapath>
+ <schemapath
type="postgresql">administrator/components/com_admin/sql/updates/postgresql</schemapath>
+ </schemas>
+ </update>
+ - <fileset>
+ - <files>
+ <folder>administrator</folder>
+ <folder>cache</folder>
+ <folder>cli</folder>
+ <folder>components</folder>
+ <folder>images</folder>
+ <folder>includes</folder>
+ <folder>language</folder>
+ <folder>layouts</folder>
+ <folder>libraries</folder>
+ <folder>logs</folder>
+ <folder>media</folder>
+ <folder>modules</folder>
+ <folder>plugins</folder>
+ <folder>templates</folder>
+ <folder>tmp</folder>
+ <file>htaccess.txt</file>
+ <file>web.config.txt</file>
+ <file>LICENSE.txt</file>
+ <file>README.txt</file>
+ <file>index.php</file>
+ </files>
+ </fileset>
+ - <updateservers>
+ <server
type="collection">http://update.joomla.org/core/list.xml</server>
+ <server
type="collection">http://update.joomla.org/jed/list.xml</server>
+ </updateservers>
+ </extension>
+ """
+
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/JoomlaScenario.java
b/src/com/mostc/pftt/scenario/JoomlaScenario.java
deleted file mode 100644
index e11b278..0000000
--- a/src/com/mostc/pftt/scenario/JoomlaScenario.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.mostc.pftt.scenario;
-
-import com.mostc.pftt.host.Host;
-import com.mostc.pftt.model.phpt.PhpBuild;
-import com.mostc.pftt.results.ConsoleManager;
-
-/** Joomla is a free and open source content management system (CMS) for
publishing content on the
- * World Wide Web and intranets and a model�view�controller (MVC) Web
application framework that can
- * also be used independently.
- *
- * @see http://www.joomla.org/
- *
- */
-
-public class JoomlaScenario extends ZipDbApplication {
-
- @Override
- public String getName() {
- return "Joomla";
- }
-
- @Override
- public boolean isImplemented() {
- return false;
- }
-
- @Override
- protected String getZipAppFileName() {
- return "Joomla_3.0.2-Stable-Full_Package.zip";
- }
-
- @Override
- protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
- // TODO Auto-generated method stub
- return false;
- }
-
-}
diff --git a/src/com/mostc/pftt/scenario/LimeSurveyScenario.java
b/src/com/mostc/pftt/scenario/LimeSurveyScenario.java
new file mode 100644
index 0000000..b5794a9
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/LimeSurveyScenario.java
@@ -0,0 +1,39 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** LimeSurvey (formerly PHPSurveyor) is an free and open source online survey
application
+ * written in PHP based on a MySQL, PostgreSQL or MSSQL database, distributed
under the GNU
+ * General Public License.[1] Designed for ease of use, it enables users to
develop and
+ * publish surveys, and collect responses, without doing any programming.
+ *
+ * @see http://www.limesurvey.org/
+ *
+ */
+
+public class LimeSurveyScenario extends ZipDbApplication {
+
+ @Override
+ protected String getZipAppFileName() {
+ return "limesurvey200plus-build121220.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public String getName() {
+ return "LimeSurvey";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/MoodleScenario.java
b/src/com/mostc/pftt/scenario/MoodleScenario.java
new file mode 100644
index 0000000..de5587b
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/MoodleScenario.java
@@ -0,0 +1,38 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** Moodle is a Course Management System (CMS), also known as a Learning
Management System (LMS)
+ * or a Virtual Learning Environment (VLE). It is a Free web application that
educators can use
+ * to create effective online learning sites.
+ *
+ * @see http://moodle.org/
+ *
+ */
+
+public class MoodleScenario extends ZipDbApplication {
+
+ @Override
+ protected String getZipAppFileName() {
+ return "moodle-2.4.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public String getName() {
+ return "Moodle";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/OpenAtriumScenario.java
b/src/com/mostc/pftt/scenario/OpenAtriumScenario.java
new file mode 100644
index 0000000..6fe1759
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/OpenAtriumScenario.java
@@ -0,0 +1,39 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** Open Atrium is an open source platform designed specifically to make great
teams
+ * communicate better. An intranet in a box with: a blog, a wiki, a calendar,
a to do
+ * list, a shoutbox, and a dashboard to manage it all. Let�s not forget that
it�s also
+ * completely customizable.
+ *
+ * @see http://openatrium.com/
+ *
+ */
+
+public class OpenAtriumScenario extends ZipDbApplication {
+
+ @Override
+ protected String getZipAppFileName() {
+ return "atrium-1-1.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public String getName() {
+ return "OpenAtrium";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/PhpMyAdminScenario.java
b/src/com/mostc/pftt/scenario/PhpMyAdminScenario.java
new file mode 100644
index 0000000..03c3640
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/PhpMyAdminScenario.java
@@ -0,0 +1,39 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** phpMyAdmin is a free and open source tool written in PHP intended to
handle the
+ * administration of MySQL with the use of a Web browser. It can perform
various tasks
+ * such as creating, modifying or deleting databases, tables, fields or rows;
executing
+ * SQL statements; or managing users and permissions.
+ *
+ * @see http://www.phpmyadmin.net/
+ *
+ */
+
+public class PhpMyAdminScenario extends ZipApplication {
+
+ @Override
+ protected String getZipAppFileName() {
+ return "phpMyAdmin-3.4.9-all-languages.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public String getName() {
+ return "PhpMyAdmin";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/PhpPgAdminScenario.java
b/src/com/mostc/pftt/scenario/PhpPgAdminScenario.java
new file mode 100644
index 0000000..6144457
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/PhpPgAdminScenario.java
@@ -0,0 +1,37 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** phpPgAdmin is a web-based administration tool for PostgreSQL. It is
perfect for
+ * PostgreSQL DBAs, newbies and hosting services.
+ *
+ * @see http://phppgadmin.sourceforge.net/
+ *
+ */
+
+public class PhpPgAdminScenario extends ZipApplication {
+
+ @Override
+ protected String getZipAppFileName() {
+ return "phpPgAdmin-5.0.3.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public String getName() {
+ return "PhpPgAdmin";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/PhpTicketsScenario.java
b/src/com/mostc/pftt/scenario/PhpTicketsScenario.java
new file mode 100644
index 0000000..33528bb
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/PhpTicketsScenario.java
@@ -0,0 +1,38 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** phpTickets is a trouble ticket support system written in PHP and utilizes
a mySQL
+ * database for storage. Tickets can be entered manually or can also be pulled
in
+ * automatically from any POP account.
+ *
+ * @see http://www.phptickets.org/
+ *
+ */
+
+public class PhpTicketsScenario extends ZipDbApplication {
+
+ @Override
+ protected String getZipAppFileName() {
+ return "phpTickets-1_1_0.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public String getName() {
+ return "PhpTickets";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/PliggScenario.groovy
b/src/com/mostc/pftt/scenario/PliggScenario.groovy
new file mode 100644
index 0000000..837ab54
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/PliggScenario.groovy
@@ -0,0 +1,237 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** Pligg is an open source CMS (Content Management System) that you can
download and use for free.
+ * Pligg CMS provides social publishing software that encourages visitors to
register on your website
+ * so that they can submit content and connect with other users. Our software
creates websites where
+ * stories are created and voted on by members, not website editors. Use Pligg
content management
+ * system to start your own social publishing community in minutes.
+ *
+ * @see http://pligg.com/
+ *
+ */
+
+public class PliggScenario extends ZipDbApplication {
+
+ @Override
+ public String getName() {
+ return "Pligg";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+ @Override
+ protected String getZipAppFileName() {
+ return "Pligg_CMS 1.2.2.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+ host.open("pligg/config.php");
+
+
+ def php = """
+ <?php
+ // The source code packaged with this file is
Free Software, Copyright (C) 2005 by
+ // Ricardo Galli <gallir at uib dot es>.
+ // It's licensed under the AFFERO GENERAL
PUBLIC LICENSE unless stated otherwise.
+ // You can get copies of the licenses here:
+// http://www.affero.org/oagpl.html
+ // AFFERO GENERAL PUBLIC LICENSE is also
included in the file called "COPYING".
+
+ ini_set('include_path', '.');
+
+ define('LOG_FILE','cache/log.php');
+ error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
+ ini_set('display_errors','Off');
+ ini_set('error_log','cache/log.php');
+
+ // experimental caching
+ // 0 = off
+ // 1 = on
+ define('caching', 1);
+
+ define('summarize_mysql', 1);
+
+ if (get_magic_quotes_gpc()) {
+ function stripslashes_deep($value)
+ {
+ $value = is_array($value) ?
+
array_map('stripslashes_deep', $value) :
+ stripslashes($value);
+
+ return $value;
+ }
+
+ $_POST = array_map('stripslashes_deep',
$_POST);
+ $_GET = array_map('stripslashes_deep',
$_GET);
+ $_COOKIE = array_map('stripslashes_deep',
$_COOKIE);
+ $_REQUEST = array_map('stripslashes_deep',
$_REQUEST);
+ }
+
+ // Sanitize GET variables used in templates
+ if ($main_smarty)
+ {
+ $get = array();
+ foreach ($_GET as $k => $v)
+ $get[$k] =
stripslashes(htmlentities(strip_tags($v),ENT_QUOTES,'UTF-8'));
+ $get['return'] = addslashes($get['return']);
+ $main_smarty->assign('get',$get);
+ }
+
+ // CSFR/XSFR protection
+ if(!isset($_SESSION)) @session_start();
+ if ($_SESSION['xsfr'])
+ $xsfr_first_page = 0;
+ else
+ {
+ $xsfr_first_page = 1;
+ $_SESSION['xsfr'] = 1;
+ }
+
+ // DO NOT EDIT THIS FILE. USE THE ADMIN PANEL
(logged in as "god") TO MAKE CHANGES
+ // IF YOU MUST MAKE CHANGES MANUALLY, EDIT
SETTINGS.PHP
+
+
+ define("mnmpath", dirname(__FILE__).'/');
+ define("mnminclude",
dirname(__FILE__).'/libs/');
+ define("mnmmodules",
dirname(__FILE__).'/modules/');
+
+ include_once mnminclude .
'pre_install_check.php';
+
+ include_once 'settings.php';
+ function sanit($var){
+ return
addslashes(htmlentities(strip_tags($var),ENT_QUOTES,'UTF-8'));
+ }
+ if ($my_base_url == ''){
+ define('my_base_url', "http://" .
$_SERVER["HTTP_HOST"]);
+ if(isset($_REQUEST['action'])){$action
= sanit($_REQUEST['action']);}else{$action="";}
+
+ $pos = strrpos($_SERVER["SCRIPT_NAME"],
"/");
+ $path = substr($_SERVER["SCRIPT_NAME"],
0, $pos);
+ if ($path == "/"){$path = "";}
+
+ define('my_pligg_base', $path);
+ $my_pligg_base = $path;
+ } else {
+ define('my_base_url', $my_base_url);
+ define('my_pligg_base', $my_pligg_base);
+ }
+
+ define('urlmethod', $URLMethod);
+
+ if(isset($_COOKIE['template'])){
+ $thetemp =
str_replace('..','',sanit($_COOKIE['template']));
+ }
+
+ // template check
+ $file = dirname(__FILE__) . '/templates/' .
$thetemp . "/pligg.tpl";
+ unset($errors);
+ if (!file_exists($file)) { $errors[]='You may
have typed the template name wrong or "'. $thetemp . '" does not exist. Click
<a href = "admin/admin_config.php?page=Template">here</a> to fix it.'; }
+ if (isset($errors)) {
+ $thetemp = "wistie";
+ $file = dirname(__FILE__) .
'/templates/' . $thetemp . "/pligg.tpl";
+ if (!file_exists($file)) {echo 'The
default Wistie template does not exist anymore. Please fix this by reuploading
the Wistie template!'; die();}
+
+ foreach ($errors as $error) {
+ $output.="<p><b>Error:</b>
$error</p>\n";
+ }
+
+ if (strpos($_SERVER['SCRIPT_NAME'],
"admin_config.php") == 0 && strpos($_SERVER['SCRIPT_NAME'], "login.php") == 0){
+ echo "<p><b>Error:</b>
$error</p>\n";
+ die();
+ }
+ }
+
+
+ define('The_Template', $thetemp);
+
+ if(Enable_Extra_Fields){include
mnminclude.'extra_fields.php';}
+
+ // Don't touch behind this
+ $local_configuration =
$_SERVER['SERVER_NAME'].'-local.php';
+ @include($local_configuration);
+
+ include_once mnminclude.'define_tables.php';
+
+ //
+ // start summarization and caching of mysql data
+ //
+
+ // added to replace 55 redundant
queries with 1
+ // used with the following functions in
/lib/link.php
+ // function category_name() {
+ // function category_safe_name() {
+ // cache the data if caching is enabled
+
+ if(caching == 1){
+ $db->cache_dir =
mnmpath.'cache';
+ $db->use_disk_cache =
true;
+ $db->cache_queries =
true;
+ }
+
+ // if this query changes, be
sure to change the 'clear the cache' code in admin_categories.php
+ $the_cats =
loadCategoriesForCache();
+ $cached_categories = $the_cats;
+
+ $db->cache_queries = false;
+
+ // a simple cache type system for the
users table
+ // used in the read() function of
/libs/user.php
+ $cached_users = array();
+
+ // a simple cache type system for the
totals table
+ // functions related to this are in
/libs/html1.php
+ $cached_totals = array();
+
+ $cached_votes = array();
+
+ $cached_links = array();
+
+ $cached_comments = array();
+
+ $cached_saved_links = array();
+ //
+ // end summarization and caching of mysql data
+ //
+
+ ob_start();
+ include_once mnminclude.'db.php';
+ include mnminclude.'utils.php';
+ if(!isset($include_login) || $include_login !==
false){
+ // if $include_login is set to false
(like in jspath.php and xmlhttp.php), then we don't
+ // include login, because login will
run a query right away to check user credentials
+ // and these two files don't require
that.
+ include_once mnminclude.'login.php';
+ }
+ if (!file_exists(dirname(__FILE__) .
'/languages/lang_'.$language.'.conf')) {$language = 'english';}
+ define('pligg_language', $language);
+ if (!file_exists(dirname(__FILE__) .
'/languages/lang_'.$language.'.conf')) {die('The language file
/languages/lang_' . $language . '.conf does not exist. Either this file is
missing or you did not rename lang.conf after an upgrade. Try renaming
/languages/lang.conf to /languages/lang_' . $language . '.conf.');}
+
+ include_once(mnmmodules . 'modules_init.php');
+ include mnminclude.'utf8/utf8.php';
+ include_once(mnminclude.'dbtree.php');
+
+
+ function loadCategoriesForCache($clear_cache =
false) {
+ global $db;
+ $sql = "select * from
".table_categories." ORDER BY lft ASC;";
+ if ($clear_cache)
+ $db->un_cache($sql);
+ return $db->get_results($sql);
+ }
+
+ ?>
+"""
+
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/PliggScenario.java
b/src/com/mostc/pftt/scenario/PliggScenario.java
deleted file mode 100644
index 058afdd..0000000
--- a/src/com/mostc/pftt/scenario/PliggScenario.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.mostc.pftt.scenario;
-
-import com.mostc.pftt.host.Host;
-import com.mostc.pftt.model.phpt.PhpBuild;
-import com.mostc.pftt.results.ConsoleManager;
-
-/** Pligg is an open source CMS (Content Management System) that you can
download and use for free.
- * Pligg CMS provides social publishing software that encourages visitors to
register on your website
- * so that they can submit content and connect with other users. Our software
creates websites where
- * stories are created and voted on by members, not website editors. Use Pligg
content management
- * system to start your own social publishing community in minutes.
- *
- * @see http://pligg.com/
- *
- */
-
-public class PliggScenario extends ZipDbApplication {
-
- @Override
- public String getName() {
- return "Pligg";
- }
-
- @Override
- public boolean isImplemented() {
- return false;
- }
-
- @Override
- protected String getZipAppFileName() {
- return "Pligg_CMS 1.2.2.zip";
- }
-
- @Override
- protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
- // TODO Auto-generated method stub
- return false;
- }
-
-}
diff --git a/src/com/mostc/pftt/scenario/ScenarioSet.java
b/src/com/mostc/pftt/scenario/ScenarioSet.java
index 4344a10..e411f84 100644
--- a/src/com/mostc/pftt/scenario/ScenarioSet.java
+++ b/src/com/mostc/pftt/scenario/ScenarioSet.java
@@ -164,28 +164,16 @@ public class ScenarioSet extends ArrayList<Scenario> {
return true;
}
- /** finds the SAPI Scenario in the ScenarioSet or returns the default
SAPI scenario (CLI) in case the ScenarioSet doesn't specify one.
- *
- * @see AbstractSAPIScenario
- * @param set
- * @return
- */
- public static AbstractSAPIScenario getSAPIScenario(ScenarioSet set) {
- for (Scenario s:set) {
- if (s instanceof AbstractSAPIScenario) {
- return (AbstractSAPIScenario) s;
- }
- }
- return Scenario.DEFAULT_SAPI_SCENARIO;
+ public <S extends Scenario> S getScenario(Class<S> clazz) {
+ return getScenario(clazz, null);
}
- public static AbstractFileSystemScenario
getFileSystemScenario(ScenarioSet set) {
- for (Scenario s:set) {
- if (s instanceof AbstractFileSystemScenario) {
- return (AbstractFileSystemScenario) s;
- }
+ public <S extends Scenario> S getScenario(Class<S> clazz, S def) {
+ for (Scenario scen : this) {
+ if (clazz.isAssignableFrom(scen.getClass()))
+ return (S) scen;
}
- return Scenario.DEFAULT_FILESYSTEM_SCENARIO;
+ return def;
}
/** determines if this set of scenarios can be executed on the given
host
@@ -208,7 +196,9 @@ public class ScenarioSet extends ArrayList<Scenario> {
return (ScenarioSet) super.clone();
}
- /**
+ /** checks if Scenario or Scenario class is contained in set.
+ *
+ * if class given, checks for superclasses, inheritance, etc... of
Scenario class.
*
*/
@Override
@@ -218,7 +208,7 @@ public class ScenarioSet extends ArrayList<Scenario> {
for ( Object a : this ) {
if (clazz.isAssignableFrom(a.getClass()))
return true;
- }
+ }
}
return super.contains(o);
}
diff --git a/src/com/mostc/pftt/scenario/SquirrelMailScenario.groovy
b/src/com/mostc/pftt/scenario/SquirrelMailScenario.groovy
new file mode 100644
index 0000000..2375266
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/SquirrelMailScenario.groovy
@@ -0,0 +1,1107 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** SquirrelMail is an Open Source project that provides both a web-based
email application and
+ * an IMAP proxy server.
+ *
+ * @see http://squirrelmail.org/
+ *
+ */
+
+public class SquirrelMailScenario extends ZipDbApplication {
+
+ @Override
+ public String getName() {
+ return "SquirrelMail";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+ @Override
+ protected String getZipAppFileName() {
+ return "squirrelmail-webmail-1.4.22.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+ host.open("squirel-webmail/config/config_default.php");
+
+ def php = """
+ <?php
+
+ /**
+ * Default SquirrelMail configuration file
+ *
+ * BEFORE EDITING THIS FILE!
+ *
+ * Don't edit this file directly. Copy it to
config.php before you
+ * edit it. However, it is best to use the
configuration script
+ * conf.pl if at all possible. That is the
easiest and cleanest way
+ * to configure.
+ *
+ * Note on SECURITY: some options require
putting a password in this file.
+ * Please make sure that you adapt its
permissions appropriately to avoid
+ * passwords being leaked to e.g. other system
users. Take extra care when
+ * the webserver is shared with untrusted users.
+ *
+ * @copyright 2000-2011 The SquirrelMail
Project Team
+ * @license
http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @version $Id: config_default.php 14084
2011-01-06 02:44:03Z pdontthink
+ * @package squirrelmail
+ * @subpackage config
+ */
+
+ /* Do not change this value. */
+ global $version;
+ global $config_version;
+ $config_version = '1.4.0';
+
+ /*** Organization preferences ***/
+ /**
+ * Organization's name
+ * @global string $org_name
+ */
+ $org_name = "SquirrelMail";
+
+ /**
+ * Organization's logo picture (blank if none)
+ * @global string $org_logo
+ */
+ $org_logo = SM_PATH . 'images/sm_logo.png';
+
+ /**
+ * The width of the logo (0 for default)
+ * @global string $org_logo_width
+ */
+ $org_logo_width = '308';
+
+ /**
+ * The height of the logo (0 for default)
+ * @global string $org_logo_height
+ */
+ $org_logo_height = '111';
+
+ /**
+ * Webmail Title
+ *
+ * This is the web page title that appears at
the top of the browser window.
+ * @global string $org_title
+ */
+ $org_title = "SquirrelMail $version";
+
+ /**
+ * Signout page
+ *
+ * Rather than going to the signout.php page
(which only allows you
+ * to sign back in), setting signout_page
allows you to sign the user
+ * out and then redirect to whatever page you
want. For instance,
+ * the following would return the user to your
home page:
+ * $signout_page = '/';
+ * Set to the empty string to continue to use
the default signout page.
+ * @global string $signout_page
+ */
+ $signout_page = '';
+
+ /**
+ * Top frame
+ *
+ * By default SquirrelMail takes up the whole
browser window,
+ * this allows you to embed it within sites
using frames. Set
+ * this to the frame you want it to stay in.
+ * @global string $frame_top
+ */
+ $frame_top = '_top';
+
+ /**
+ * Provider name
+ *
+ * Here you can set name of the link displayed
on the right side of main page.
+ *
+ * Link will be displayed only if you have
$hide_sm_attributions
+ * option set to true.
+ * @global string $provider_name
+ */
+ $provider_name = 'SquirrelMail';
+
+ /**
+ * Provider URI
+ *
+ * Here you can set URL of the link displayed
on the right side of main page.
+ *
+ * Link will be displayed only if you have
$hide_sm_attributions
+ * option set to true.
+ * @global string $provider_uri
+ */
+ $provider_uri = 'http://squirrelmail.org/';
+
+ /*** Server Settings ***/
+ /**
+ * Default Domain
+ *
+ * The domain part of local email addresses.
+ * This is for all messages sent out from
this server.
+ * Reply address is generated by
$username@$domain
+ * Example: In [email protected], example.com is
the domain.
+ * @global string $domain
+ */
+ $domain = 'example.com';
+
+ /**
+ * Time offset inversion
+ *
+ * If you are running on a machine that doesn't
have the tm_gmtoff
+ * value in your time structure and if you are
in a time zone that
+ * has a negative offset, you need to set this
value to 1. This is
+ * typically people in the US that are running
Solaris 7.
+ * @global bool $invert_time
+ */
+ $invert_time = false;
+
+ /**
+ * Default send transport
+ *
+ * What should be used when sending email.
+ * If it is set to false, SquirrelMail will use
SMTP server settings.
+ * If it is set to true, SquirrelMail will use
program defined in
+ * $sendmail_path
+ * @global bool $useSendmail
+ */
+ $useSendmail = false;
+
+ /**
+ * Your SMTP server (usually the same as the
IMAP server).
+ * @global string $smtpServerAddress
+ */
+ $smtpServerAddress = 'localhost';
+ /**
+ * Your SMTP port number (usually 25).
+ * @global integer $smtpPort
+ */
+ $smtpPort = 25;
+
+ /**
+ * SquirrelMail header encryption
+ *
+ * Encryption key allows to hide SquirrelMail
Received: headers
+ * in outbound messages. Interface uses
encryption key to encode
+ * username, remote address and proxied
address, then stores encoded
+ * information in X-Squirrel-* headers.
+ *
+ * Warning: used encryption function is not
bulletproof. When used
+ * with static encryption keys, it provides
only minimal security
+ * measures and information can be decoded
quickly.
+ *
+ * Encoded information can be decoded with
decrypt_headers.php script
+ * from SquirrelMail contrib/ directory.
+ * @global string $encode_header_key
+ * @since 1.5.1 and 1.4.5
+ */
+ $encode_header_key = '';
+
+ /**
+ * Path to Sendmail
+ *
+ * Program that should be used when sending
email. SquirrelMail expects that
+ * this program will follow options used by
original sendmail
+ * (http://www.sendmail.org).
+ * @global string $sendmail_path
+ */
+ $sendmail_path = '/usr/sbin/sendmail';
+
+ /**
+ * Extra sendmail command arguments.
+ *
+ * Sets additional sendmail command arguments.
Make sure that arguments are
+ * supported by your sendmail program. -f
argument is added automatically by
+ * SquirrelMail scripts. Variable defaults to
standard /usr/sbin/sendmail
+ * arguments. If you use qmail-inject, nbsmtp
or any other sendmail wrapper,
+ * which does not support -t and -i arguments,
set variable to empty string
+ * or use arguments suitable for your mailer.
+ * @global string $sendmail_args
+ * @since 1.5.1 and 1.4.8
+ */
+ $sendmail_args = '-i -t';
+
+ /**
+ * IMAP server address
+ *
+ * The dns name (or IP address) for your imap
server.
+ * @global string $imapServerAddress
+ */
+ $imapServerAddress = 'localhost';
+
+ /**
+ * IMAP server port
+ *
+ * Port used by your imap server. (Usually 143)
+ * @global integer $imapPort
+ */
+ $imapPort = 143;
+
+ /**
+ * IMAP server type
+ *
+ * The type of IMAP server you are running.
+ * Valid type are the following (case is
important):
+ * courier
+ * cyrus
+ * exchange
+ * uw
+ * macosx
+ * hmailserver
+ * other
+ *
+ * Please note that this changes only some of
server settings.
+ *
+ * In order to set everything correctly, you
need to adjust several
+ * squirrelmail options. These options are
listed in doc/presets.txt
+ * @global string $imap_server_type
+ */
+ $imap_server_type = 'other';
+
+ /**
+ * Advanced IMAP authentication options control
+ *
+ * CRAM-MD5, DIGEST-MD5, Plain, and TLS
+ * Set reasonable defaults - you'd never know
this was there unless you ask for it
+ * @global bool $use_imap_tls
+ */
+ $use_imap_tls = false;
+
+ /**
+ * Advanced SMTP authentication options control
+ *
+ * CRAM-MD5, DIGEST-MD5, Plain, and TLS
+ * Set reasonable defaults - you'd never know
this was there unless you ask for it
+ * @global bool $use_smtp_tls
+ */
+ $use_smtp_tls = false;
+
+ /**
+ * SMTP authentication mechanism
+ *
+ * auth_mech can be either 'none',
'login','plain', 'cram-md5', or 'digest-md5'
+ * @global string $smtp_auth_mech
+ */
+ $smtp_auth_mech = 'none';
+
+ /**
+ * Custom SMTP Authentication Username
+ *
+ * IMAP username is used if variable is set to
an empty string. Variable is included in
+ * the main configuration file only in 1.4.11+
and 1.5.2+.
+ * @global string $smtp_sitewide_user
+ * @since 1.4.11
+ */
+ $smtp_sitewide_user = '';
+
+ /**
+ * Custom SMTP Authentication Password
+ *
+ * IMAP password is used if variable is set to
an empty string. Variable is included in
+ * the main configuration file in 1.4.11+ and
1.5.2+
+ * @global string $smtp_sitewide_pass
+ * @since 1.4.11
+ */
+ $smtp_sitewide_pass = '';
+
+ /**
+ * IMAP authentication mechanism
+ *
+ * auth_mech can be either 'login','plain',
'cram-md5', or 'digest-md5'
+ * @global string $imap_auth_mech
+ */
+ $imap_auth_mech = 'login';
+
+ /**
+ * IMAP folder delimiter
+ *
+ * This is the delimiter that your IMAP server
uses to distinguish between
+ * folders. For example, Cyrus uses '.' as the
delimiter and a complete
+ * folder would look like 'INBOX.Friends.Bob',
while UW uses '/' and would
+ * look like 'INBOX/Friends/Bob'. Normally
this should be left at 'detect'
+ * but if you are sure you know what delimiter
your server uses, you can
+ * specify it here.
+ *
+ * To have it autodetect the delimiter, set it
to 'detect'.
+ * @global string $optional_delimiter
+ */
+ $optional_delimiter = 'detect';
+
+ /**
+ * POP before SMTP setting
+ *
+ * Do you wish to use POP3 before SMTP? Your
server must
+ * support this in order for SquirrelMail to
work with it.
+ * @global bool $pop_before_smtp
+ */
+ $pop_before_smtp = false;
+
+
+ /**
+ * POP before SMTP server address
+ *
+ * When using POP3 before SMTP, if the POP
server address is
+ * not the same as the SMTP server address,
specify it here.
+ * If this is left empty, the SMTP server
address will be
+ * used by default.
+ * @global bool $pop_before_smtp_host
+ */
+ $pop_before_smtp_host = '';
+
+
+ /*** Folder Settings ***/
+ /**
+ * Default IMAP folder prefix
+ *
+ * Many servers store mail in your home
directory. With this, they
+ * store them in a subdirectory: mail/ or
Mail/, etc. If your server
+ * does this, please set this to what the
default mail folder should
+ * be. This is still a user preference, so they
can change it if it
+ * is different for each user.
+ *
+ * Example:
+ * $default_folder_prefix = 'mail/';
+ * -- or --
+ * $default_folder_prefix = 'Mail/folders/';
+ *
+ * If you do not use this, set it to the empty
string.
+ * @global string $default_folder_prefix
+ */
+ $default_folder_prefix = '';
+
+ /**
+ * User level prefix control
+ *
+ * If you do not wish to give them the option
to change this, set it
+ * to false. Otherwise, if it is true, they can
change the folder prefix
+ * to be anything.
+ * @global bool $show_prefix_option
+ */
+ $show_prefix_option = false;
+
+ /**
+ * The following are related to deleting
messages.
+ * $default_move_to_trash
+ * If this is set to 'true', when 'delete'
is pressed, it
+ * will attempt to move the selected
messages to the folder
+ * named $trash_folder. If it's set to
'false', we won't even
+ * attempt to move the messages, just
delete them.
+ * $default_move_to_sent
+ * If this is set to 'true', sent messages
will be stored in
+ * $sent_folder by default.
+ * $default_save_as_draft
+ * If this is set to 'true', users are
able to use $draft_folder
+ * to store their unfinished messages.
+ * $trash_folder
+ * This is the path to the default trash
folder. For Cyrus
+ * IMAP, it would be 'INBOX.Trash', but
for UW it would be
+ * 'Trash'. We need the full path name
here.
+ * $draft_folder
+ * This is the patch to where Draft
messages will be stored.
+ * $auto_expunge
+ * If this is true, when a message is
moved or copied, the
+ * source mailbox will get expunged,
removing all messages
+ * marked 'Deleted'.
+ * $sent_folder
+ * This is the path to where Sent messages
will be stored.
+ * $delete_folder
+ * If this is true, when a folder is
deleted then it will
+ * not get moved into the Trash folder.
+ * @global bool $default_move_to_trash
+ * @global bool $default_move_to_sent
+ * @global bool $default_save_as_draft
+ * @global string $trash_folder
+ * @global string $sent_folder
+ * @global string $draft_folder
+ * @global bool $auto_expunge
+ * @global bool $delete_folder
+ */
+ $default_move_to_trash = true;
+ $default_move_to_sent = true;
+ $default_save_as_draft = true;
+ $trash_folder = 'INBOX.Trash';
+ $sent_folder = 'INBOX.Sent';
+ $draft_folder = 'INBOX.Drafts';
+ $auto_expunge = true;
+ $delete_folder = false;
+
+ /**
+ * Special Folder Color Control
+ *
+ * Whether or not to use a special color for
special folders. If not,
+ * special folders will be the same color as
the other folders.
+ * @global bool $use_special_folder_color
+ */
+ $use_special_folder_color = true;
+
+ /**
+ * Create Special Folders Control
+ *
+ * Should I create the Sent and Trash folders
automatically for
+ * a new user that doesn't already have them
created?
+ * @global bool $auto_create_special
+ */
+ $auto_create_special = true;
+
+ /**
+ * List Special Folders First Control
+ *
+ * Whether or not to list the special folders
first (true/false).
+ * @global bool $list_special_folders_first
+ */
+ $list_special_folders_first = true;
+
+ /**
+ * Subfolder Layout Control
+ *
+ * Are all your folders subfolders of INBOX
(i.e. cyrus IMAP server).
+ * If you are unsure, set it to false.
+ * @global bool $default_sub_of_inbox
+ */
+ $default_sub_of_inbox = true;
+
+ /**
+ * Subfolder Format Control
+ *
+ * Some IMAP daemons (UW) handle folders weird.
They only allow a
+ * folder to contain either messages or other
folders, not both at
+ * the same time. This option controls whether
or not to display an
+ * option during folder creation. The option
toggles which type of
+ * folder it should be.
+ *
+ * If this option confuses you, just set it to
'true'. You can not hurt
+ * anything if it's true, but some servers will
respond weird if it's
+ * false. (Cyrus works fine whether it's true
OR false).
+ * @global bool $show_contain_subfolders_option
+ */
+ $show_contain_subfolders_option = false;
+
+ /**
+ * These next two options set the defaults for
the way that the
+ * users see their folder list.
+ * $default_unseen_notify
+ * Specifies whether or not the users
will see the number of
+ * unseen in each folder by default and
also which folders to
+ * do this to. Valid values are: 1=none,
2=inbox, 3=all.
+ * $default_unseen_type
+ * Specifies the type of notification to
give the users by
+ * default. Valid choice are: 1=(4),
2=(4,25).
+ * @global integer $default_unseen_notify
+ * @global integer $default_unseen_type
+ */
+ $default_unseen_notify = 2;
+ $default_unseen_type = 1;
+
+ /**
+ * NoSelect Fix Control
+ *
+ * This enables the no select fix for Cyrus
when subfolders
+ * exist but parent folders do not
+ * @global bool $noselect_fix_enable
+ */
+ $noselect_fix_enable = false;
+
+ /*** General options ***/
+ /**
+ * Path to the data/ directory
+ *
+ * It is a possible security hole to have a
writable directory
+ * under the web server's root directory (ex:
/home/httpd/html).
+ * It is possible to put the data directory
anywhere you would like;
+ * it is strongly advised that it is NOT
directly web-accessible.
+ *
+ * The path name can be absolute or relative
(to the config directory).
+ * If it is relative, it must use the SM_PATH
constant.
+ * Here are two examples:
+ *
+ * Absolute:
+ * $data_dir =
'/var/local/squirrelmail/data/';
+ *
+ * Relative (to main SM directory):
+ * $data_dir = SM_PATH . 'data/';
+ * (NOT recommended: you need to secure
apache to make sure these
+ * files are not world readable)
+ *
+ * @global string $data_dir
+ */
+ $data_dir = '/var/local/squirrelmail/data/';
+
+ /**
+ * Attachments directory
+ *
+ * Path to directory used for storing
attachments while a mail is
+ * being sent. There are a few security
considerations regarding
+ * this directory:
+ * + It should have the permission 733
(rwx-wx-wx) to make it
+ * impossible for a random person with
access to the webserver to
+ * list files in this directory.
Confidential data might be laying
+ * around there.
+ * + Since the webserver is not able to list
the files in the content
+ * is also impossible for the webserver to
delete files lying around
+ * there for too long.
+ * + It should probably be another directory
than data_dir.
+ * @global string $attachment_dir
+ */
+ $attachment_dir =
'/var/local/squirrelmail/attach/';
+
+ /**
+ * Hash level used for data directory.
+ *
+ * This option allows spliting file based
squirrelmail user
+ * data storage directory into several
subfolders. Number from
+ * 0 to 4 allows allows having up to four
subfolder levels.
+ *
+ * Hashing should speed up directory access if
you have big number
+ * of users (500 and more).
+ * @global integer $dir_hash_level
+ */
+ $dir_hash_level = 0;
+
+ /**
+ * Default Size of Folder List
+ *
+ * This is the default size of the folder list.
Default
+ * is 150, but you can set it to whatever you
wish.
+ * @global string $default_left_size
+ */
+ $default_left_size = '150';
+
+ /**
+ * Username Case Control
+ *
+ * Some IMAP servers allow a username (like
'bob') to log in if they use
+ * uppercase in their name (like 'Bob' or
'BOB'). This creates extra
+ * preference files. Toggling this option to
true will transparently
+ * change all usernames to lowercase.
+ * @global bool $force_username_lowercase
+ */
+ $force_username_lowercase = false;
+
+ /**
+ * Email Priority Control
+ *
+ * This option enables use of email priority
flags by end users.
+ * @global bool $default_use_priority
+ */
+ $default_use_priority = true;
+
+ /**
+ * SquirrelMail Attributions Control
+ *
+ * This option disables display of "created by
squirrelmail developers"
+ * strings and provider link
+ * @global bool $hide_sm_attributions
+ */
+ $hide_sm_attributions = false;
+
+ /**
+ * Delivery Receipts Control
+ *
+ * This option enables use of read/delivery
receipts by end users.
+ * @global bool $default_use_mdn
+ */
+ $default_use_mdn = true;
+
+ /**
+ * Identity Controls
+ *
+ * If you don't want to allow users to change
their email address
+ * then you can set $edit_identity to false, if
you want them to
+ * not be able to change their full name too
then set $edit_name
+ * to false as well. $edit_name has no effect
unless $edit_identity
+ * is false;
+ * @global bool $edit_identity
+ * @global bool $edit_name
+ */
+ $edit_identity = true;
+ $edit_name = true;
+
+ /**
+ * SquirrelMail adds username information to
every sent email.
+ * It is done in order to prevent possible
sender forging when
+ * end users are allowed to change their email
and name
+ * information.
+ *
+ * You can disable this header, if you think
that it violates
+ * user's privacy or security. Please note,
that setting will
+ * work only when users are not allowed to
change their identity.
+ *
+ * See SquirrelMail bug tracker #847107 for
more details about it.
+ * @global bool $hide_auth_header
+ * @since 1.5.1 and 1.4.5
+ */
+ $hide_auth_header = false;
+
+ /**
+ * Server Side Threading Control
+ *
+ * If you want to enable server side thread
sorting options
+ * Your IMAP server must support the THREAD
extension for
+ * this to work.
+ * @global bool $allow_thread_sort
+ */
+ $allow_thread_sort = false;
+
+ /**
+ * Server Side Sorting Control
+ *
+ * to use server-side sorting instead of SM
client side.
+ * Your IMAP server must support the SORT
extension for this
+ * to work.
+ * @global bool $allow_server_sort
+ */
+ $allow_server_sort = false;
+
+ /**
+ * IMAP Charset Use Control
+ *
+ * This option allows you to choose if SM uses
charset search
+ * Your imap server should support SEARCH
CHARSET command for
+ * this to work.
+ * @global bool $allow_charset_search
+ */
+ $allow_charset_search = true;
+
+ /**
+ * IMAP UID control
+ *
+ * This option allows you to enable unique
identifier (UID) support.
+ * @global bool $uid_support
+ */
+ $uid_support = true;
+
+ /**
+ * PHP session name.
+ *
+ * Leave this alone unless you know what you
are doing.
+ * @global string $session_name
+ */
+ $session_name = 'SQMSESSID';
+
+
+ /**
+ * Location base
+ *
+ * This is used to build the URL to the
SquirrelMail location.
+ * It should contain only the protocol and
hostname/port parts
+ * of the URL; the full path will be appended
automatically.
+ *
+ * If not specified or empty, it will be
autodetected.
+ *
+ * Examples:
+ * http://webmail.example.org
+ * http://webmail.example.com:8080
+ * https://webmail.example.com:6691
+ *
+ * To be clear: do not include any of the path
elements, so if
+ * SquirrelMail is at
http://example.net/web/mail/src/login.php, you
+ * write: http://example.net
+ *
+ * @global string $config_location_base
+ * @since 1.4.8
+ */
+ $config_location_base = '';
+
+
+
+ /**
+ * Themes
+ * You can define your own theme and put it
in this directory.
+ * You must call it as the example below. You
can name the theme
+ * whatever you want. For an example of a
theme, see the ones
+ * included in the config directory.
+ *
+ * To add a new theme to the options that users
can choose from, just
+ * add a new number to the array at the bottom,
and follow the pattern.
+ *
+ * $theme_default sets theme that will be used
by default
+ * $theme_css sets stylesheet (from theme/css
directory) that will be
+ * used by default.
+ * @global integer $theme_default
+ * @global string $theme_css
+ */
+ $theme_default = 0;
+ $theme_css = '';
+
+ /**
+ * Listing of installed themes
+ * @global array $theme
+ */
+ $theme[0]['PATH'] = SM_PATH .
'themes/default_theme.php';
+ $theme[0]['NAME'] = 'Default';
+
+ $theme[1]['PATH'] = SM_PATH .
'themes/plain_blue_theme.php';
+ $theme[1]['NAME'] = 'Plain Blue';
+
+ $theme[2]['PATH'] = SM_PATH .
'themes/sandstorm_theme.php';
+ $theme[2]['NAME'] = 'Sand Storm';
+
+ $theme[3]['PATH'] = SM_PATH .
'themes/deepocean_theme.php';
+ $theme[3]['NAME'] = 'Deep Ocean';
+
+ $theme[4]['PATH'] = SM_PATH .
'themes/slashdot_theme.php';
+ $theme[4]['NAME'] = 'Slashdot';
+
+ $theme[5]['PATH'] = SM_PATH .
'themes/purple_theme.php';
+ $theme[5]['NAME'] = 'Purple';
+
+ $theme[6]['PATH'] = SM_PATH .
'themes/forest_theme.php';
+ $theme[6]['NAME'] = 'Forest';
+
+ $theme[7]['PATH'] = SM_PATH .
'themes/ice_theme.php';
+ $theme[7]['NAME'] = 'Ice';
+
+ $theme[8]['PATH'] = SM_PATH .
'themes/seaspray_theme.php';
+ $theme[8]['NAME'] = 'Sea Spray';
+
+ $theme[9]['PATH'] = SM_PATH .
'themes/bluesteel_theme.php';
+ $theme[9]['NAME'] = 'Blue Steel';
+
+ $theme[10]['PATH'] = SM_PATH .
'themes/dark_grey_theme.php';
+ $theme[10]['NAME'] = 'Dark Grey';
+
+ $theme[11]['PATH'] = SM_PATH .
'themes/high_contrast_theme.php';
+ $theme[11]['NAME'] = 'High Contrast';
+
+ $theme[12]['PATH'] = SM_PATH .
'themes/black_bean_burrito_theme.php';
+ $theme[12]['NAME'] = 'Black Bean Burrito';
+
+ $theme[13]['PATH'] = SM_PATH .
'themes/servery_theme.php';
+ $theme[13]['NAME'] = 'Servery';
+
+ $theme[14]['PATH'] = SM_PATH .
'themes/maize_theme.php';
+ $theme[14]['NAME'] = 'Maize';
+
+ $theme[15]['PATH'] = SM_PATH .
'themes/bluesnews_theme.php';
+ $theme[15]['NAME'] = 'BluesNews';
+
+ $theme[16]['PATH'] = SM_PATH .
'themes/deepocean2_theme.php';
+ $theme[16]['NAME'] = 'Deep Ocean 2';
+
+ $theme[17]['PATH'] = SM_PATH .
'themes/blue_grey_theme.php';
+ $theme[17]['NAME'] = 'Blue Grey';
+
+ $theme[18]['PATH'] = SM_PATH .
'themes/dompie_theme.php';
+ $theme[18]['NAME'] = 'Dompie';
+
+ $theme[19]['PATH'] = SM_PATH .
'themes/methodical_theme.php';
+ $theme[19]['NAME'] = 'Methodical';
+
+ $theme[20]['PATH'] = SM_PATH .
'themes/greenhouse_effect.php';
+ $theme[20]['NAME'] = 'Greenhouse Effect
(Changes)';
+
+ $theme[21]['PATH'] = SM_PATH .
'themes/in_the_pink.php';
+ $theme[21]['NAME'] = 'In The Pink (Changes)';
+
+ $theme[22]['PATH'] = SM_PATH .
'themes/kind_of_blue.php';
+ $theme[22]['NAME'] = 'Kind of Blue (Changes)';
+
+ $theme[23]['PATH'] = SM_PATH .
'themes/monostochastic.php';
+ $theme[23]['NAME'] = 'Monostochastic (Changes)';
+
+ $theme[24]['PATH'] = SM_PATH .
'themes/shades_of_grey.php';
+ $theme[24]['NAME'] = 'Shades of Grey (Changes)';
+
+ $theme[25]['PATH'] = SM_PATH .
'themes/spice_of_life.php';
+ $theme[25]['NAME'] = 'Spice of Life (Changes)';
+
+ $theme[26]['PATH'] = SM_PATH .
'themes/spice_of_life_lite.php';
+ $theme[26]['NAME'] = 'Spice of Life - Lite
(Changes)';
+
+ $theme[27]['PATH'] = SM_PATH .
'themes/spice_of_life_dark.php';
+ $theme[27]['NAME'] = 'Spice of Life - Dark
(Changes)';
+
+ $theme[28]['PATH'] = SM_PATH .
'themes/christmas.php';
+ $theme[28]['NAME'] = 'Holiday - Christmas';
+
+ $theme[29]['PATH'] = SM_PATH .
'themes/darkness.php';
+ $theme[29]['NAME'] = 'Darkness (Changes)';
+
+ $theme[30]['PATH'] = SM_PATH .
'themes/random.php';
+ $theme[30]['NAME'] = 'Random (Changes every
login)';
+
+ $theme[31]['PATH'] = SM_PATH .
'themes/midnight.php';
+ $theme[31]['NAME'] = 'Midnight';
+
+ $theme[32]['PATH'] = SM_PATH .
'themes/alien_glow.php';
+ $theme[32]['NAME'] = 'Alien Glow';
+
+ $theme[33]['PATH'] = SM_PATH .
'themes/dark_green.php';
+ $theme[33]['NAME'] = 'Dark Green';
+
+ $theme[34]['PATH'] = SM_PATH .
'themes/penguin.php';
+ $theme[34]['NAME'] = 'Penguin';
+
+ $theme[35]['PATH'] = SM_PATH .
'themes/minimal_bw.php';
+ $theme[35]['NAME'] = 'Minimal BW';
+
+ $theme[36]['PATH'] = SM_PATH .
'themes/redmond.php';
+ $theme[36]['NAME'] = 'Redmond';
+
+ $theme[37]['PATH'] = SM_PATH .
'themes/netstyle_theme.php';
+ $theme[37]['NAME'] = 'Net Style';
+
+ $theme[38]['PATH'] = SM_PATH .
'themes/silver_steel_theme.php';
+ $theme[38]['NAME'] = 'Silver Steel';
+
+ $theme[39]['PATH'] = SM_PATH .
'themes/simple_green_theme.php';
+ $theme[39]['NAME'] = 'Simple Green';
+
+ $theme[40]['PATH'] = SM_PATH .
'themes/wood_theme.php';
+ $theme[40]['NAME'] = 'Wood';
+
+ $theme[41]['PATH'] = SM_PATH .
'themes/bluesome.php';
+ $theme[41]['NAME'] = 'Bluesome';
+
+ $theme[42]['PATH'] = SM_PATH .
'themes/simple_green2.php';
+ $theme[42]['NAME'] = 'Simple Green 2';
+
+ $theme[43]['PATH'] = SM_PATH .
'themes/simple_purple.php';
+ $theme[43]['NAME'] = 'Simple Purple';
+
+ $theme[44]['PATH'] = SM_PATH .
'themes/autumn.php';
+ $theme[44]['NAME'] = 'Autumn';
+
+ $theme[45]['PATH'] = SM_PATH .
'themes/autumn2.php';
+ $theme[45]['NAME'] = 'Autumn 2';
+
+ $theme[46]['PATH'] = SM_PATH .
'themes/blue_on_blue.php';
+ $theme[46]['NAME'] = 'Blue on Blue';
+
+ $theme[47]['PATH'] = SM_PATH .
'themes/classic_blue.php';
+ $theme[47]['NAME'] = 'Classic Blue';
+
+ $theme[48]['PATH'] = SM_PATH .
'themes/classic_blue2.php';
+ $theme[48]['NAME'] = 'Classic Blue 2';
+
+ $theme[49]['PATH'] = SM_PATH .
'themes/powder_blue.php';
+ $theme[49]['NAME'] = 'Powder Blue';
+
+ $theme[50]['PATH'] = SM_PATH .
'themes/techno_blue.php';
+ $theme[50]['NAME'] = 'Techno Blue';
+
+ $theme[51]['PATH'] = SM_PATH .
'themes/turquoise.php';
+ $theme[51]['NAME'] = 'Turquoise';
+
+ /**
+ * LDAP server(s)
+ * Array of arrays with LDAP server
parameters. See
+ * functions/abook_ldap_server.php for a list
of possible
+ * parameters
+ *
+ * EXAMPLE:
+ * $ldap_server[0] = Array(
+ * 'host' => 'memberdir.netscape.com',
+ * 'name' => 'Netcenter Member Directory',
+ * 'base' =>
'ou=member_directory,o=netcenter.com'
+ * );
+ *
+ * NOTE: please see security note at the top
of this file when
+ * entering a password.
+ */
+ // Add your ldap server options here
+
+ /**
+ * Javascript in Addressbook Control
+ *
+ * Users may search their addressbook via
either a plain HTML or Javascript
+ * enhanced user interface. This option allows
you to set the default choice.
+ * Set this default choice as either:
+ * true = javascript
+ * false = html
+ * @global bool
$default_use_javascript_addr_book
+ */
+ $default_use_javascript_addr_book = false;
+
+ /**
+ * Shared filebased address book
+ * @global string $abook_global_file
+ * @since 1.5.1 and 1.4.4
+ */
+ $abook_global_file = '';
+
+ /**
+ * Writing into shared address book control
+ * @global bool $abook_global_file_writeable
+ * @since 1.5.1 and 1.4.4
+ */
+ $abook_global_file_writeable = false;
+
+ /**
+ * Listing of shared address book control
+ * @global bool $abook_global_file_listing
+ * @since 1.5.1 and 1.4.9
+ */
+ $abook_global_file_listing = true;
+
+ /**
+ * Controls file based address book entry size
+ *
+ * This setting controls space allocated to
file based address book records.
+ * End users will be unable to save address
book entry, if total entry size
+ * (quoted address book fields + 4 delimiters +
linefeed) exceeds allowed
+ * address book length size.
+ *
+ * Same setting is applied to personal and
global file based address books.
+ *
+ * It is strongly recommended to keep default
setting value. Change it only
+ * if you really want to store address book
entries that are bigger than two
+ * kilobytes (2048).
+ * @global integer $abook_file_line_length
+ * @since 1.5.2 and 1.4.9
+ */
+ $abook_file_line_length = 2048;
+
+ /**
+ * MOTD
+ *
+ * This is a message that is displayed
immediately after a user logs in.
+ * @global string $motd
+ */
+ $motd = "";
+
+
+ /**
+ * To install plugins, just add elements to
this array that have
+ * the plugin directory name relative to the
/plugins/ directory.
+ * For instance, for the 'squirrelspell'
plugin, you'd put a line like
+ * the following.
+ * $plugins[0] = 'squirrelspell';
+ * $plugins[1] = 'listcommands';
+ */
+ // Add list of enabled plugins here
+
+
+ /*** Database ***/
+ /**
+ * Read the administrator's manual in order to
get more information
+ * about these settings.
+ */
+ /**
+ * Database-driven private addressbooks
+ * DSN (Data Source Name) for a database
where the private
+ * addressbooks are stored. See the
administrator's manual for more info.
+ * If it is not set, the addressbooks are
stored in files
+ * in the data dir.
+ * The DSN is in the format:
mysql://user:pass@hostname/dbname
+ * The table is the name of the table to use
within the
+ * specified database.
+ *
+ * NOTE: please see security note at the top
of this file when
+ * entering a password.
+ */
+ $addrbook_dsn = '';
+ $addrbook_table = 'address';
+ /**
+ * Database used to store user data
+ */
+ $prefs_dsn = '';
+ $prefs_table = 'userprefs';
+ $prefs_key_field = 'prefkey';
+ $prefs_user_field = 'user';
+ $prefs_val_field = 'prefval';
+
+ /*** Global sql database options ***/
+ /**
+ * DSN of global address book database
+ * @global string $addrbook_global_dsn
+ * @since 1.5.1 and 1.4.4
+ */
+ $addrbook_global_dsn = '';
+ /**
+ * Table used for global database address book
+ * @global string $addrbook_global_table
+ * @since 1.5.1 and 1.4.4
+ */
+ $addrbook_global_table = 'global_abook';
+ /**
+ * Control writing into global database address
book
+ * @global boolean $addrbook_global_writeable
+ * @since 1.5.1 and 1.4.4
+ */
+ $addrbook_global_writeable = false;
+ /**
+ * Control listing of global database address
book
+ * @global boolean $addrbook_global_listing
+ * @since 1.5.1 and 1.4.4
+ */
+ $addrbook_global_listing = false;
+
+ /*** Language settings ***/
+ /**
+ * Default language
+ *
+ * This is the default language. It is used as
a last resort
+ * if SquirrelMail can't figure out which
language to display.
+ * Language names usually consist of language
code, undercore
+ * symbol and country code
+ * @global string $squirrelmail_default_language
+ */
+ $squirrelmail_default_language = 'en_US';
+
+ /**
+ * Default Charset
+ *
+ * This option controls what character set is
used when sending mail
+ * and when sending HTML to the browser. Do not
set this to US-ASCII,
+ * use ISO-8859-1 instead.
+ *
+ * This option is active only when default
language is en_US. In other
+ * cases SquirrelMail uses charset that depends
on default language.
+ * See $squirrelmail_default_language
+ *
+ * @global string $default_charset
+ */
+ $default_charset = 'iso-8859-1';
+
+ /**
+ * Lossy Encoding Control
+ *
+ * This option allows charset conversions when
output charset does not support
+ * all symbols used in original charset.
Symbols unsupported by output charset
+ * will be replaced with question marks.
+ * @global bool $lossy_encoding
+ * @since 1.4.4 and 1.5.1
+ */
+ $lossy_encoding = false;
+
+ /**
+ * Subscribe Listing Control
+ *
+ * this disables listing all of the folders on
the IMAP Server to
+ * generate the folder subscribe listbox (this
can take a long time
+ * when you have a lot of folders). Instead, a
textbox will be
+ * displayed allowing users to enter a specific
folder name to subscribe to
+ *
+ * This option can't be changed by conf.pl
+ * @global bool $no_list_for_subscribe
+ */
+ $no_list_for_subscribe = false;
+
+ /**
+ * Color in config control
+ *
+ * This option is used only by conf.pl script
to generate configuration
+ * menu with some colors and is provided here
only as reference.
+ * @global integer $config_use_color
+ */
+ $config_use_color = 2;
+
+ /**
+ * This option includes special configuration
options
+ */
+ @include SM_PATH . 'config/config_local.php';
+"""
+
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/SquirrelMailScenario.java
b/src/com/mostc/pftt/scenario/SquirrelMailScenario.java
deleted file mode 100644
index 5c577bd..0000000
--- a/src/com/mostc/pftt/scenario/SquirrelMailScenario.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.mostc.pftt.scenario;
-
-import com.mostc.pftt.host.Host;
-import com.mostc.pftt.model.phpt.PhpBuild;
-import com.mostc.pftt.results.ConsoleManager;
-
-/** SquirrelMail is an Open Source project that provides both a web-based
email application and
- * an IMAP proxy server.
- *
- * @see http://squirrelmail.org/
- *
- */
-
-public class SquirrelMailScenario extends ZipDbApplication {
-
- @Override
- public String getName() {
- return "SquirrelMail";
- }
-
- @Override
- public boolean isImplemented() {
- return false;
- }
-
- @Override
- protected String getZipAppFileName() {
- return "squirrelmail-webmail-1.4.22.zip";
- }
-
- @Override
- protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
- // TODO Auto-generated method stub
- return false;
- }
-
-}
diff --git a/src/com/mostc/pftt/scenario/WordpressScenario.groovy
b/src/com/mostc/pftt/scenario/WordpressScenario.groovy
new file mode 100644
index 0000000..d7d059a
--- /dev/null
+++ b/src/com/mostc/pftt/scenario/WordpressScenario.groovy
@@ -0,0 +1,133 @@
+package com.mostc.pftt.scenario;
+
+import com.mostc.pftt.host.Host;
+import com.mostc.pftt.model.phpt.PhpBuild;
+import com.mostc.pftt.results.ConsoleManager;
+
+/** WordPress is a free and open source blogging tool and a content management
system (CMS)
+ * based on PHP and MySQL. It has many features including a plug-in
architecture and a
+ * template system.
+ *
+ * @see http://wordpress.org/
+ *
+ */
+
+public class WordpressScenario extends ZipDbApplication {
+
+ @Override
+ public String getName() {
+ return "Wordpress";
+ }
+
+ @Override
+ public boolean isImplemented() {
+ return false;
+ }
+
+ @Override
+ protected String getZipAppFileName() {
+ return "wordpress-3.5.zip";
+ }
+
+ @Override
+ protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
+ // TODO Auto-generated method stub
+ host.open("wordpress/wp-config.php");
+
+ def php = """
+ <?php
+ /**
+ * The base configurations of the WordPress.
+ *
+ * This file has the following configurations:
MySQL settings, Table Prefix,
+ * Secret Keys, WordPress Language, and
ABSPATH. You can find more information
+ * by visiting {@link
http://codex.wordpress.org/Editing_wp-config.php Editing
+ * wp-config.php} Codex page. You can get the
MySQL settings from your web host.
+ *
+ * This file is used by the wp-config.php
creation script during the
+ * installation. You don't have to use the web
site, you can just copy this file
+ * to "wp-config.php" and fill in the values.
+ *
+ * @package WordPress
+ */
+
+ // ** MySQL settings - You can get this info
from your web host ** //
+ /** The name of the database for WordPress */
+ define('DB_NAME', 'database_name_here');
+
+ /** MySQL database username */
+ define('DB_USER', 'username_here');
+
+ /** MySQL database password */
+ define('DB_PASSWORD', 'password_here');
+
+ /** MySQL hostname */
+ define('DB_HOST', 'localhost');
+
+ /** Database Charset to use in creating
database tables. */
+ define('DB_CHARSET', 'utf8');
+
+ /** The Database Collate type. Don't change
this if in doubt. */
+ define('DB_COLLATE', '');
+
+ /**#@+
+ * Authentication Unique Keys and Salts.
+ *
+ * Change these to different unique phrases!
+ * You can generate these using the {@link
https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
+ * You can change these at any point in time to
invalidate all existing cookies. This will force all users to have to log in
again.
+ *
+ * @since 2.6.0
+ */
+ define('AUTH_KEY', 'put your unique
phrase here');
+ define('SECURE_AUTH_KEY', 'put your unique
phrase here');
+ define('LOGGED_IN_KEY', 'put your unique
phrase here');
+ define('NONCE_KEY', 'put your unique
phrase here');
+ define('AUTH_SALT', 'put your unique
phrase here');
+ define('SECURE_AUTH_SALT', 'put your unique
phrase here');
+ define('LOGGED_IN_SALT', 'put your unique
phrase here');
+ define('NONCE_SALT', 'put your unique
phrase here');
+
+ /**#@-*/
+
+ /**
+ * WordPress Database Table prefix.
+ *
+ * You can have multiple installations in one
database if you give each a unique
+ * prefix. Only numbers, letters, and
underscores please!
+ */
+ $table_prefix = 'wp_';
+
+ /**
+ * WordPress Localized Language, defaults to
English.
+ *
+ * Change this to localize WordPress. A
corresponding MO file for the chosen
+ * language must be installed to
wp-content/languages. For example, install
+ * de_DE.mo to wp-content/languages and set
WPLANG to 'de_DE' to enable German
+ * language support.
+ */
+ define('WPLANG', '');
+
+ /**
+ * For developers: WordPress debugging mode.
+ *
+ * Change this to true to enable the display of
notices during development.
+ * It is strongly recommended that plugin and
theme developers use WP_DEBUG
+ * in their development environments.
+ */
+ define('WP_DEBUG', false);
+
+ /* That's all, stop editing! Happy blogging. */
+
+ /** Absolute path to the WordPress directory. */
+ if ( !defined('ABSPATH') )
+ define('ABSPATH', dirname(__FILE__) .
'/');
+
+ /** Sets up WordPress vars and included files.
*/
+ require_once(ABSPATH . 'wp-settings.php');
+ """
+
+ return false;
+ }
+
+}
diff --git a/src/com/mostc/pftt/scenario/WordpressScenario.java
b/src/com/mostc/pftt/scenario/WordpressScenario.java
deleted file mode 100644
index 7691671..0000000
--- a/src/com/mostc/pftt/scenario/WordpressScenario.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.mostc.pftt.scenario;
-
-import com.mostc.pftt.host.Host;
-import com.mostc.pftt.model.phpt.PhpBuild;
-import com.mostc.pftt.results.ConsoleManager;
-
-/** WordPress is a free and open source blogging tool and a content management
system (CMS)
- * based on PHP and MySQL. It has many features including a plug-in
architecture and a
- * template system.
- *
- * @see http://wordpress.org/
- *
- */
-
-public class WordpressScenario extends ZipDbApplication {
-
- @Override
- public String getName() {
- return "Wordpress";
- }
-
- @Override
- public boolean isImplemented() {
- return false;
- }
-
- @Override
- protected String getZipAppFileName() {
- return "wordpress-3.5.zip";
- }
-
- @Override
- protected boolean configure(ConsoleManager cm, Host host, PhpBuild
build, ScenarioSet scenario_set, String app_dir) {
- // TODO Auto-generated method stub
- return false;
- }
-
-}
diff --git a/src/com/mostc/pftt/scenario/ZipApplication.java
b/src/com/mostc/pftt/scenario/ZipApplication.java
index d367d15..348f839 100644
--- a/src/com/mostc/pftt/scenario/ZipApplication.java
+++ b/src/com/mostc/pftt/scenario/ZipApplication.java
@@ -8,15 +8,14 @@ public abstract class ZipApplication extends
ApplicationScenario {
@Override
public boolean setup(ConsoleManager cm, Host host, PhpBuild build,
ScenarioSet scenario_set) {
- if (!scenario_set.contains(AbstractWebServerScenario.class)) {
+ AbstractWebServerScenario web =
AbstractWebServerScenario.getWebServerScenario(scenario_set);
+ if (web == null) {
cm.println(getClass(), "add a web server (ex: apache)
to -config console option and try again");
return false;
}
String zip_file = getZipAppFileName();
- AbstractWebServerScenario web;
-
String app_dir =
host.joinIntoOnePath(web.getDefaultDocroot(host, build),
Host.removeFileExt(Host.basename(zip_file)));
if (!host.exists(app_dir)) {
diff --git a/src/com/mostc/pftt/util/DebuggerManager.java
b/src/com/mostc/pftt/util/DebuggerManager.java
index 5dde96c..99092d6 100644
--- a/src/com/mostc/pftt/util/DebuggerManager.java
+++ b/src/com/mostc/pftt/util/DebuggerManager.java
@@ -60,13 +60,13 @@ public abstract class DebuggerManager {
if (!host.isWindows()) {
// only PHP on Windows has standard conventions for
naming/locating source and debug packs
this.src_path = cm.getSourcePack();
- this.debug_path = cm.getDebugPack();
+ this.debug_path = cm.getDebugPack().getPath();
return;
}
// use any source and debug packs given on command line
String def_source_path = cm.getSourcePack();
- String def_debug_path = cm.getDebugPack();
+ String def_debug_path = cm.getDebugPack().getPath();
// (in addition to )guessing the source pack and debug pack
from the build (PHP-on-Windows follows conventions that allow this)
try {
diff --git a/src/com/mostc/pftt/util/WindowsSnapshotDownloadUtil.groovy
b/src/com/mostc/pftt/util/WindowsSnapshotDownloadUtil.groovy
index e229352..cdf81aa 100644
--- a/src/com/mostc/pftt/util/WindowsSnapshotDownloadUtil.groovy
+++ b/src/com/mostc/pftt/util/WindowsSnapshotDownloadUtil.groovy
@@ -47,6 +47,8 @@ final class WindowsSnapshotDownloadUtil {
if (local_path==null) {
// fallback: store in directory named after URL:
php-sdk/<url>/<build>
local_path =
url.getHost()+"_"+url.getPath().replaceAll("/", "_");
+ } else if (local_path.toLowerCase().endsWith(".zip")) {
+ local_path = local_path.substring(0,
local_path.length()-".zip".length());
}
return new File(host.getPhpSdkDir()+"/"+local_path);
}
@@ -84,15 +86,15 @@ final class WindowsSnapshotDownloadUtil {
String xml_str = new
SimpleXmlSerializer(cleaner.getProperties()).getXmlAsString(node);
def root = new XmlSlurper(false, false).parseText(xml_str);
- def build_url = null, test_pack_url = null;
+ def build_url = null, test_pack_url = null, debug_pack_url =
null;
root.depthFirst().findAll {
if (it.name() == 'a') {
if
(it.text().endsWith(".zip")&&it.text().toLowerCase().contains("-test-")) {
test_pack_url = it['@href']
+ } else if
(it.text().endsWith(".zip")&&it.text().toLowerCase().contains("-"+build_type.toString().toLowerCase()+"-")&&it.text().toLowerCase().contains("-debug-"))
{
+ debug_pack_url = it['@href']
} else if
(it.text().toLowerCase().contains("-devel-")) {
// ignore
- } else if
(it.text().toLowerCase().contains("-debug-")) {
- // ignore
} else if
(it.text().endsWith(".zip")&&it.text().toLowerCase().contains("-"+build_type.toString().toLowerCase()+"-"))
{
build_url = it['@href'];
}
@@ -106,11 +108,13 @@ final class WindowsSnapshotDownloadUtil {
pair.build = new
URL("http://"+snap_url.getHost()+"/"+build_url);
if (test_pack_url!=null)
pair.test_pack = new
URL("http://"+snap_url.getHost()+"/"+test_pack_url);
+ if (test_pack_url!=null)
+ pair.debug_pack = new
URL("http://"+snap_url.getHost()+"/"+debug_pack_url);
return pair;
}
static class FindBuildTestPackPair {
- URL build, test_pack;
+ URL build, test_pack, debug_pack;
EBuildType build_type;
EBuildBranch branch;
}