0

我需要创建一个网页来生成类似于https://django-cms.org/en/demo/的演示。要生成演示,只需单击Get your demo!

我不介意语言、PHP 或任何东西,只要免费和开源。

单击按钮时,它将运行/var/testing/makesite.sh

在里面makesite.sh,它有代码urlnya="$thegeneratedurl"

如果我们运行echo http://$urlnya/,它将显示完整的 URL,如http://site1045.demosite.com/.

演示网站生成后,我需要它显示链接

有一些 PHP 示例可以通过 实现这一点shell_exec,但我害怕它是否真的不安全,而且我不知道如何显示进度并返回演示 URL,就像在 Django CMS 站点中一样。

4

2 回答 2

0

那么在python中你有subprocess并且envoy可以执行GNU/Linux命令。您也可以使用它fabric来执行此操作。

为了实现这一点,您可能需要学习如何使用并为每个应用程序创建virtualenv独特的东西。port no

这值得单独写错。尽管很有趣,但我无法编写完整的源代码。

对于 url 部分,建议您使用随机subdomain或不同的想法。您可能需要将所有先前生成的值的列表存储在数据库中或检查当前运行的演示站点以避免冲突。

References

http://docs.python.org/library/subprocess.html
https://github.com/kennethreitz/envoy
http://pypi.python.org/pypi/virtualenv
http://docs.fabfile.org/en /1.4.2/index.html

于 2012-05-20T08:14:21.987 回答
0

shell_exec() 的可能问题与仅使用它无关。可怕的风险是让您的用户指定输入到它的字符串 - 该字符串可能偶尔会包含各种奇怪的尝试来“欺骗”您的系统并入侵它。但你不需要这样做。只要在自己的代码中构造输入的字符串,就应该没有问题。

该字符串应该与您在 Linux shell 提示符下键入的内容完全相同。根据脚本所需的详细信息,启动脚本的字符串可能只是“/usr/local/bin/makesite.sh”之类的东西。或者它也可能包含一些参数,例如“/usr/local/bin/makesite.sh --ownername clientsname”。如果有参数,请在您编写的代码中自行替换它们,而不是要求用户为您替换它们 - 这样安全风险最小。

makesite.sh 中“echo $urlnya”的结果{以及 shell_exec() 命令的所有其他输出} 将由 shell_exec() 作为文本块交给你,你可以随心所欲地做任何事情。您的代码可以解析它,在您自己的网页中使用它的一部分,在内部跟踪它的一部分,提取某种唯一 ID,等等。例如,您可能希望在您正在制作的网页上放置一个指向该 URL 的超链接,该超链接位于标有 {See Created Web Page} 之类的按钮后面。

对于进度条,获取提供该功能的小部件或库(但请参见后面的几段:-)。实现它的方法有点奇怪,而且跨浏览器问题可能很大,所以进度条是利用其他人的封装和功能测试是一个非常好的主意的事情之一。我相信 Yahoo! 提供了一个库,并且我相信 JQuery 包含该功能。

本地浏览器/客户端将一遍又一遍地操纵进度条,但它会选择几秒钟,然后与服务器“重新同步”,以便显示准确的信息。例如,有时会看到移动的条纹;这种运动可能纯粹是局部的,纯粹是一种“猜测”。但是由于页面将在几秒钟内与服务器“重新同步”以重新调整其长度(或者如果出现问题甚至完全停止条纹),这就足够了。

显示进度条只是问题的一部分。问题的更大部分是要显示什么。系统上的某些东西需要能够说“我完成了 55%”之类的事情。但是我不知道 makesite.sh 是如何(或什至)做到这一点的。我不知道 Linux 内置的任何功能可以帮助生成此类信息。您可能需要自己多次运行该命令以查看需要多长时间以及里程碑是什么,然后创建自己的跟踪程序来自己检查这些里程碑。这可能比它的价值更麻烦。您可能希望创建一些更简单的东西,例如只是一些近乎脑死的文本,如“粗略估计设置完成时间再过 2 分钟”或“设置失败,请重试”。

于 2012-05-22T17:02:45.190 回答