webhooks php,webhook.php

/**

* Class Main

* @author Xiaobe

* @time 2017

*/

/**

* @param str $msg

*/

function writeLog($msg){

date_default_timezone_set("Asia/Shanghai");

file_put_contents('log.txt',"\r\n".date("h:i:sa").': '.$msg,FILE_APPEND|LOCK_EX);

}

/**

* @see http://php.net/manual/en/function.proc-open.php

*/

$descriptorspec = array(

0 => array(

"pipe",

"r"

), // stdin is a pipe that the child will read from

1 => array(

"pipe",

"w"

), // stdout is a pipe that the child will write to

2 => array(

"file",

__DIR__ . "/error-output.txt",

"a"

) // stderr is a file to write to

);

$post=file_get_contents('php://input');

$postData = json_decode($post,true);

if($postData['password'] !== 'xiaobebe'){

writeLog('un-authorization request:'.$_SERVER['HTTP_HOST']);

die;

}

// http(s)方式如何自动记住密码

// git config --global credential.helper store

$username = 'xiaobe';

$password = 'xxxxxxx';

$cwd = '/var/www/GIT/line2'; //The initial working dir for the command. This must be an absolute directory path

$projectSuffix = 'xiaobe/line.git';

$branch = 'master';

$updateUrl = 'https://'.$username.':'.$password.'@git.oschina.net/'.$projectSuffix;

// change authority

$processes[0] = proc_open('touch log.txt',$descriptorspec,$pipes,__DIR__,NULL);

$processes[1] = proc_open('chmod 777 log.txt',$descriptorspec,$pipes,__DIR__,NULL);

$processes[3] = proc_open('touch error-output.txt',$descriptorspec,$pipes,__DIR__,NULL);

$processes[4] = proc_open('chmod 777 error-output.txt',$descriptorspec,$pipes,__DIR__,NULL);

// update code

$re=shell_exec("cd ".$cwd.' && git pull '.$updateUrl.' '.$branch);

if($re==null){

shell_exec("cd ".$cwd.' && git clone '.$updateUrl.' . && git config core.filemode false');

}

var_dump($re);

// $processes[5] = proc_open('git reset --hard HEAD && git pull '.$updateUrl.' '.$branch,$descriptorspec,$pipes,$cwd,NULL);

// can change the file authority created by itself

// $processes[6] = proc_open('chmod -R 777 '.$cwd,$descriptorspec,$pipes,$cwd,NULL);

$count = count($processes);

for($i = 0; $i < $count; $i ++){

if(is_resource($processes[$i]))

$return_value = proc_close($processes[$i]);

if($return_value == 0){

writeLog('Command '.$i.' success \r\n');

}else

writeLog('Command '.$i.' faild.');

}

?>

一键复制

编辑

Web IDE

原始数据

按行查看

历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值