站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Gallery:如何从命令行呼叫一个视图或控制器
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
=如何从命令行呼叫一个视图或控制器?= 另见:[[Gallery:How_To_Write_Scripts|如何编写与Gallery互作的脚本]] 要求: * Wget: [http://www.gnu.org/software/wget/wget.html wget] 是一个unix/linux命令行用户代理(user agent),用以自命令行抓取网站。[http://www.interlog.com/~tcharron/wgetwin.html Windows的Wget]同样可用。 此脚本示例首先登入G2,接着运行建立所有缩略图和重设图片维护的任务。 要运行另一个控制器或请求一个视图的话,只要浏览G2中的页面,并复制该页面(视图)或是手工控制器带有所有必要参数的URL(查看一下某页面的HTML源代码找到<form>元素以及论坛输入字段)。接着将所有input field name=value pairs复制到你手动创建的URL中。 wget --cookies=on --save-cookies mycookies <nowiki>"http://example.com/gallery2/main.php?g2_controller=core.UserLogin&g2_form[formName]=UserLogin&g2_form[username]=admin&g2_form[password]=mysecret&g2_form[action][login]=Login"</nowiki> wget --cookies=on --load-cookies mycookies <nowiki>"http://example.com/gallery2/main.php?g2_controller=core.AdminMaintenance&g2_form%5Baction%5D%5BrunTask%5D=1&g2_taskId=BuildDerivativesTask"</nowiki> 将'''mysecret'''替换为你的密码,可能也需要将'''admin'''替换为你的管理员帐户的用户名。并将'''example.com/gallery2/'''替换为你真实的G2地址。 你可以在一个bash脚本中执行上述呼叫 #!/bin/bash 在此写入你的命令… 而且你可以周期性地将此bash脚本做为一个cron脚本来执行。 == Caveat == 自G2.2版本以来,如不做增补的话,'''上述指导就不再适用了'''。鉴于安全性考虑,Gallery不但要求你要登入,而且还要在所有控制器请求中包含一个有效的''authToken''(认证标记)。 这里有一些变通办法:: === 创建一个Wrapper脚本 === * 参见[[Gallery:How_To_Write_Scripts|如何编写与Gallery互作的脚本]] 你可以编写一个buildDerivatives.php脚本: <pre> <?php /* 调整路径,使其指向你的gallery2文件夹 */ require_once('../gallery2/embed.php'); /* * 初始化G2(包括所有必要的类别, * 让G2处于可随时处理呼叫的准备状态) */ $ret = GalleryEmbed::init(array('fullInit' => true)); check($ret); /* 抓取authToken */ global $gallery; $session =& $gallery->getSession(); $authToken = $session->getAuthToken(); GalleryUtilities::putRequestVariable('authToken', $authToken); /* 在此我们可以呼叫任何API方法或声明控制器请求参量 */ GalleryUtilities::putRequestVariable('controller', 'core.AdminMaintenance'); GalleryUtilities::putRequestVariable('form[action][runTask]', 1); GalleryUtilities::putRequestVariable('taskId', 'BuildDerivativesTask'); /* 执行上面所定义的控制器请求 */ $data = GalleryEmbed::handleRequest(); /* $data['bodyHtml']包含有结果HTML */ function check($ret) { if ($ret) die($ret->getAsHtml()); } ?> </pre> 你可以由命令行(比如使用cron)呼叫该脚本或者通过<nowiki>http://example.com/gallery2/buildDerivatives.php</nowiki>浏览它。 '''安全性警告:''' 你不应当将此类型的脚本放置在网络可访(web-accessible)的文件夹中(比如你的gallery2/文件夹),因为此脚本会回避auth-token安全机制,而此机制是用于保护你不受恶意网站的攻击的(跨站请求伪造保护,Cross Site Request Forgery Protection)。 === 抓取Auth Token后将其包括 === * 在首次请求登入后,再请求一个包括有表单的视图并分析/检索HTML的g2_authToken字串。 * 接着将auth token前置到你的控制器请求(&g2_authToken=...)。 你可以使用grep或脚本语言将authToken从返回的HTML中解析出来。 [[Category:Gallery 2:Administration and Maintenance]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)