[add] first

This commit is contained in:
建喵 2023-02-21 11:41:03 +08:00
commit b5b085ad3f
3 changed files with 167 additions and 0 deletions

19
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,19 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9010
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9010
}
]
}

58
index.php Normal file
View File

@ -0,0 +1,58 @@
<!DOCTYPE html>
<html>
<head>
<title>更新打包機Slot資源</title>
</head>
<body>
<h1>更新打包機Slot資源</h1>
<form action="." method="post">
SlotID: <input type="test" name="SlotID" value="<?php echo $_POST["SlotID"] ?? ""; ?>">
<input type="hidden" name="action" value="SlotUpdate">
<input type="submit" name="action" value="更新">
<input type="submit" name="action" value="顯示Log">
</form>
<p>PS: <b>更新</b>一次會強制刷新正在使用的碰友們的網頁🥳</p>
</body>
</html>
<?php
if (!$_POST) {
return;
}
$result = "";
$print = "";
if ($_POST["action"] === "更新") {
$SlotID = $_POST["SlotID"] ?? "";
if(!$SlotID) {
echo "請輸入SlotID";
return;
}
//將上面的class檔include進來
include_once("ssh2.php");
//初始化class
$shell = new ssh2("192.168.5.45");
$shell->authPassword("catantech","catan9595");
//執行指令
$result .= "<br>" . $shell->cmdExec(". ~/Desktop/Casino-Core-Type2/gamegitpull.sh " . $SlotID);
$result .= "<br>" . $shell->cmdExec('cd ~/Desktop/Casino-Core-Type2/assets/Game/Game_' . $SlotID . '/;git log -3 --pretty=format:"%h - %an, %s : %ad" --date=format:"%Y-%m-%d %H:%M:%S"');
$print = str_replace("\n", '<br>', $result);
} else if ($_POST["action"] === "顯示Log") {
$SlotID = $_POST["SlotID"] ?? "";
if(!$SlotID) {
echo "請輸入SlotID";
return;
}
//將上面的class檔include進來
include_once("ssh2.php");
//初始化class
$shell = new ssh2("192.168.5.45");
$shell->authPassword("catantech","catan9595");
//執行指令
$result .= "<br>" . $shell->cmdExec('cd ~/Desktop/Casino-Core-Type2/assets/Game/Game_' . $SlotID . '/;git log -3 --pretty=format:"%h - %an, %s : %ad" --date=format:"%Y-%m-%d %H:%M:%S"');
$print = str_replace("\n", '<br>', $result);
}
//印出指令執行結果
echo $print;
?>

90
ssh2.php Normal file
View File

@ -0,0 +1,90 @@
<?php
// ssh protocols
// note: once openShell method is used, cmdExec does not work
class ssh2 {
private $host = '192.168.5.108';
private $user = 'Publisher';
private $port = '22';
private $password = 'Publisher';
private $con = null;
private $shell_type = 'xterm';
private $shell = null;
private $log = '';
function __construct($host='', $port='' ) {
if( $host!='' ) $this->host = $host;
if( $port!='' ) $this->port = $port;
$this->con = ssh2_connect($this->host, $this->port);
if( !$this->con ) {
$this->log .= "Connection failed !";
}
}
function authPassword( $user = '', $password = '' ) {
if( $user!='' ) $this->user = $user;
if( $password!='' ) $this->password = $password;
if( !ssh2_auth_password( $this->con, $this->user, $this->password ) ) {
$this->log .= "Authorization failed !";
}
}
function openShell( $shell_type = '' ) {
if ( $shell_type != '' ) $this->shell_type = $shell_type;
$this->shell = ssh2_shell( $this->con, $this->shell_type );
if( !$this->shell ) $this->log .= " Shell connection failed !";
stream_set_blocking( $this->shell, true );
}
function writeShell( $command = '' ) {
fwrite($this->shell, $command."\n");
}
function cmdExec( ) {
$argc = func_num_args();
$argv = func_get_args();
$cmd = '';
for( $i=0; $i<$argc ; $i++) {
if( $i != ($argc-1) ) {
$cmd .= $argv[$i]." && ";
}else{
$cmd .= $argv[$i];
}
}
// echo $cmd;
$stream = ssh2_exec( $this->con, $cmd );
stream_set_blocking( $stream, true );
return stream_get_contents($stream);
}
function getLog() {
return $this->log;
}
function getResult(){
$contents='';
while (!feof($this->shell)) {
$contents.=fgets($this->shell);
}
return $contents;
}
}
?>