first commit
This commit is contained in:
parent
3e5a454807
commit
0c4d7dda33
13 changed files with 28 additions and 406 deletions
|
@ -1,44 +0,0 @@
|
||||||
<?php
|
|
||||||
// include_once('./consql.php');
|
|
||||||
// include_once('./config.php');
|
|
||||||
// MAKE json
|
|
||||||
header("Content-Type: application/json; charset=UTF-8; pageEncoding=UTF-8");
|
|
||||||
|
|
||||||
$ipserv = "82.64.214.194" ; // IP server game
|
|
||||||
$portserv = "3222" ; // Game Server Port
|
|
||||||
$modport = "3232" ; // Mod port omega (+10)
|
|
||||||
$queryport= "27022" ; // Queryport
|
|
||||||
$urlserv = $ipserv.":".$portserv ;
|
|
||||||
|
|
||||||
//echo $InfoGT;
|
|
||||||
//echo "<br><hr>";
|
|
||||||
//$results = json_decode($_GET["x"], false);
|
|
||||||
|
|
||||||
ini_set('display_errors', 'on');
|
|
||||||
//error_reporting(E_ALL); // Display all types of error
|
|
||||||
|
|
||||||
require_once('GameQ/Autoloader.php');
|
|
||||||
$GameQ = new \GameQ\GameQ();
|
|
||||||
$GameQ->addServer([
|
|
||||||
'id' => 'server1',
|
|
||||||
'type' => 'dayz',
|
|
||||||
'host' => $urlserv,
|
|
||||||
'options' => [
|
|
||||||
'query_port' => $queryport,
|
|
||||||
],
|
|
||||||
]);
|
|
||||||
$GameQ->setOption('timeout', 5); // seconds
|
|
||||||
$GameQ->addFilter('normalize');
|
|
||||||
$results = $GameQ->process();
|
|
||||||
|
|
||||||
$expansion_gq = json_encode($results, JSON_INVALID_UTF8_IGNORE | JSON_INVALID_UTF8_SUBSTITUTE | JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR);
|
|
||||||
echo $expansion_gq;
|
|
||||||
|
|
||||||
//$myJSON = json_decode(utf8_encode($results), true);
|
|
||||||
//echo $expansion_gq['gq_numplayers'];
|
|
||||||
//echo "<br>";
|
|
||||||
//print_r($results);
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
<?php
|
|
||||||
ini_set('display_errors', 'on');
|
|
||||||
// include_once('./consql.php');
|
|
||||||
// MAKE json
|
|
||||||
|
|
||||||
header("Content-Type: application/json; charset=UTF-8; pageEncoding=UTF-8");
|
|
||||||
|
|
||||||
include_once('./config.php');
|
|
||||||
$urlserv = $ipserv.":".$portserv ;
|
|
||||||
|
|
||||||
//echo $InfoGT;
|
|
||||||
//echo "<br><hr>";
|
|
||||||
//$results = json_decode($_GET["x"], false);
|
|
||||||
//error_reporting(E_ALL); // Display all types of error
|
|
||||||
|
|
||||||
require_once('GameQ/Autoloader.php');
|
|
||||||
$GameQ = new \GameQ\GameQ();
|
|
||||||
$GameQ->addServer([
|
|
||||||
'id' => 'server1',
|
|
||||||
'type' => 'dayz',
|
|
||||||
'host' => $urlserv,
|
|
||||||
'options' => [
|
|
||||||
'query_port' => $queryport,
|
|
||||||
],
|
|
||||||
]);
|
|
||||||
$GameQ->setOption('timeout', 5); // seconds
|
|
||||||
$GameQ->addFilter('normalize');
|
|
||||||
$results = $GameQ->process();
|
|
||||||
|
|
||||||
$server_gq = json_encode($results, JSON_INVALID_UTF8_IGNORE | JSON_INVALID_UTF8_SUBSTITUTE | JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR);
|
|
||||||
echo $server_gq;
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
|
|
||||||
ini_set('display_errors', 1);
|
|
||||||
error_reporting(E_ALL); // Display all types of error
|
|
||||||
set_time_limit ( 4 ); // Max execution time is set to 4 seconds
|
|
||||||
|
|
||||||
// Read JSON file
|
|
||||||
$readjson = file_get_contents('./server.json');
|
|
||||||
$myJSON = json_decode(utf8_encode($readjson), true);
|
|
||||||
|
|
||||||
/*
|
|
||||||
echo "<h2>var dump: </h2><br>"; var_dump($myJSON);
|
|
||||||
echo "<hr>";
|
|
||||||
|
|
||||||
echo "<h2>JSON ARRAY:</h2><br> ";
|
|
||||||
print_r($myJSON);
|
|
||||||
|
|
||||||
echo "<h2>var_dump(json_decode: </h2><br>";
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
var_dump(json_decode($readjson));
|
|
||||||
|
|
||||||
//$sname = $readjson->{'server1'};
|
|
||||||
//echo $sname;
|
|
||||||
|
|
||||||
/*
|
|
||||||
echo "<hr>";
|
|
||||||
$InfoGT = $Info['GameTags'];
|
|
||||||
echo $InfoGT;
|
|
||||||
|
|
||||||
echo "<br>";
|
|
||||||
$sname = $Info['HostName'] ;
|
|
||||||
$Players = $Info['Players'] ;
|
|
||||||
$MaxPlayers = $Info['MaxPlayers'] ;
|
|
||||||
$Secure = $Info['Secure'] ;
|
|
||||||
$Map = $Info['Map'] ;
|
|
||||||
$Os = $Info['Os'] ;
|
|
||||||
$Version = $Info['Version'] ;
|
|
||||||
$GamePort = $Info['GamePort'] ;
|
|
||||||
|
|
||||||
$game = "Dayz" ;
|
|
||||||
$ping = "666" ;
|
|
||||||
|
|
||||||
echo "Hostname: " .$sname . "<br>";
|
|
||||||
echo "Players: " .$Players . "<br>";
|
|
||||||
echo "MaxPlayers: " .$MaxPlayers . "<br>";
|
|
||||||
echo "Secure: " .$Secure . "<br>";
|
|
||||||
echo "Map: " .$Map . "<br>";
|
|
||||||
echo "Os: " .$Os . "<br>";
|
|
||||||
echo "Version: " .$Version . "<br>";
|
|
||||||
echo "Port: " .$GamePort . "<br><hr>";
|
|
||||||
*/
|
|
||||||
|
|
||||||
//preg_grep('/keywords \z map/', explode("\n", $readjson));
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
BIN
favicon.ico
BIN
favicon.ico
Binary file not shown.
Before Width: | Height: | Size: 17 KiB |
44
json2sql.php
44
json2sql.php
|
@ -1,44 +0,0 @@
|
||||||
#!/usr/bin/php
|
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
* JSON2SQL PHP script
|
|
||||||
* Written by Hay Kranen < http://www.haykranen.nl > < hay at bykr dot org >
|
|
||||||
* Make this executable
|
|
||||||
* $ chmod u+x json2sql
|
|
||||||
* Then invoke it from the command line like this
|
|
||||||
* $ json2sql tablename myfile.json
|
|
||||||
* The script will automatically write the resulting file as myfile.sql
|
|
||||||
*/
|
|
||||||
|
|
||||||
$date = date('Y-m-d H:i:s');
|
|
||||||
|
|
||||||
function quit($msg) {
|
|
||||||
die($msg . "\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
$table = $argv[1];
|
|
||||||
if (!$table) quit("No tablename given!");
|
|
||||||
|
|
||||||
$filename = $argv[2];
|
|
||||||
if (!file_exists($filename)) quit("File does not exist: $filename");
|
|
||||||
|
|
||||||
$file = file_get_contents($filename);
|
|
||||||
if (!$file) quit("File read error with $filanme");
|
|
||||||
|
|
||||||
//echo "Processing $filename... \n";
|
|
||||||
|
|
||||||
$data = json_decode($file, true);
|
|
||||||
$sql = "";
|
|
||||||
foreach($data as $obj) {
|
|
||||||
$keys = implode('`,`', array_map('addslashes', array_keys($obj)));
|
|
||||||
$values = implode("','", array_map('addslashes', array_values($obj)));
|
|
||||||
$sql .= "INSERT INTO `$table` (`$keys`, `Dates`) VALUES ('$values', '$date');\n";
|
|
||||||
}
|
|
||||||
// Create a filename based on the input file
|
|
||||||
$out = pathinfo($filename, PATHINFO_FILENAME) . ".sql";
|
|
||||||
if(!file_put_contents($out, $sql)) quit("Could not write contents to $out");
|
|
||||||
|
|
||||||
quit("Written SQL data to $out");
|
|
||||||
|
|
||||||
|
|
||||||
// php -f json2sql.php StatServer_5 server.json
|
|
30
mod2json.php
30
mod2json.php
|
@ -1,30 +0,0 @@
|
||||||
<?php
|
|
||||||
//$page = $_SERVER['PHP_SELF'];
|
|
||||||
//$sec = "300";
|
|
||||||
|
|
||||||
ini_set('display_errors', 'on');
|
|
||||||
//error_reporting(E_ALL); // Display all types of error
|
|
||||||
|
|
||||||
// include_once('./consql.php');
|
|
||||||
include_once('./config.php');
|
|
||||||
|
|
||||||
// Don't touch below (or you know what you do)
|
|
||||||
// need to fix if mod = 0
|
|
||||||
|
|
||||||
$json = file_get_contents("http://".$ipserv.":".$modport."/");
|
|
||||||
$objhigher=json_decode($json); //converts to an object
|
|
||||||
$objlower = $objhigher[0]; // if the json response its multidimensional this lowers it
|
|
||||||
$objlower=json_decode($json); //converts to an array of objects
|
|
||||||
print_r($objlower);
|
|
||||||
|
|
||||||
echo "<br><hr>";
|
|
||||||
var_dump($json);
|
|
||||||
echo "<br><hr>";
|
|
||||||
$myJSON = json_decode(utf8_encode($json), true);
|
|
||||||
var_dump($myJSON);
|
|
||||||
|
|
||||||
|
|
||||||
echo "<br>";
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
|
@ -1,22 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
include_once('./config.php');
|
|
||||||
|
|
||||||
// Don't touch below (or you know what you do)
|
|
||||||
// need to fix if mod = 0
|
|
||||||
|
|
||||||
$modjson = file_get_contents("http://".$ipserv.":".$modport."/");
|
|
||||||
|
|
||||||
$myJSON = json_decode(utf8_encode($json), true);
|
|
||||||
|
|
||||||
//var dump
|
|
||||||
//print_r($results);
|
|
||||||
|
|
||||||
$array = json_decode($modjson, true);
|
|
||||||
foreach($array as $values) {
|
|
||||||
echo $values['name']." ";
|
|
||||||
echo $values['steamWorkshopId']."<br>";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
|
@ -1,133 +0,0 @@
|
||||||
<?php
|
|
||||||
ini_set('display_errors', 1);
|
|
||||||
//error_reporting(E_ALL); // Display all types of error
|
|
||||||
set_time_limit ( 4 ); // Max execution time is set to 4 seconds
|
|
||||||
|
|
||||||
// Read JSON file
|
|
||||||
$readjson = file_get_contents('statserver.json');
|
|
||||||
|
|
||||||
$data = json_decode($readjson);
|
|
||||||
// class
|
|
||||||
$name = $data->{'name'};
|
|
||||||
$map = $data->{'map'};
|
|
||||||
$password = $data->{'password'};
|
|
||||||
$game = $data->{'raw'}->{'game'};
|
|
||||||
$secure = $data->{'raw'}->{'secure'};
|
|
||||||
$numplayers = $data->{'raw'}->{'numplayers'};
|
|
||||||
$version = $data->{'raw'}->{'version'};
|
|
||||||
$tags = $data->{'raw'}->{'tags'};
|
|
||||||
|
|
||||||
//$dedicated = $data->{'raw'}->{'rules'}->{'dedicated'};
|
|
||||||
//$island = $data->{'raw'}->{'rules'}->{'island'};
|
|
||||||
|
|
||||||
|
|
||||||
$connect = $data->{'connect'};
|
|
||||||
$ping = $data->{'ping'};
|
|
||||||
$time = "$tags[38]$tags[39]:$tags[41]$tags[42]";
|
|
||||||
$battleye = substr($tags,0,8);
|
|
||||||
$hive = substr($tags,18,8);
|
|
||||||
$players = $data->{'players'};
|
|
||||||
|
|
||||||
//if(empty($players))
|
|
||||||
// $players = "0";
|
|
||||||
//if (empty($players)) { "0"; }
|
|
||||||
//$playersuser = substr($players,0,8);
|
|
||||||
//$players = $data->{'array_filter($players)'};
|
|
||||||
//$player = $data->{'players'};
|
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
||||||
<head>
|
|
||||||
<title>Dayz ToX Server: <?php echo"${name}"; ?></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
|
|
||||||
<td>Server Name</td><td> IP server</td> <td> Ping </td><td> Player Info</td> <td> Joueurs</td><td> Version</td>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tr>
|
|
||||||
|
|
||||||
<td><?php print_r($name); ?></td>
|
|
||||||
<td><?php print_r($connect); ?></td><td><?php print_r($ping); ?></td>
|
|
||||||
<!--<td><?php print_r($time); ?></td>-->
|
|
||||||
<td><?php echo "☠ " . count($players);?></td>
|
|
||||||
<td><?php print_r($numplayers); ?></td><td><?php print_r($version); ?></td>
|
|
||||||
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<td_>Player: <?php if(count($players) == 0) { echo " (0 joueurs) "; } else { echo " ☠ ONLINE ☠ " ; } ?></td_>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tr>
|
|
||||||
<!-- <td>Name</td>-->
|
|
||||||
<td><?php
|
|
||||||
if(count($players) == 0)
|
|
||||||
{
|
|
||||||
echo " (En attente de survivants) ";
|
|
||||||
} else {
|
|
||||||
echo " " . $numplayers . " Playing in the server" ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// print_r(str_split("$players",1));
|
|
||||||
// print_r("$players",1);
|
|
||||||
// $uplayer = array(print_r($players));
|
|
||||||
// print_r($uplayer);
|
|
||||||
//print_r($players)[0];
|
|
||||||
// echo print_r($players) . " = " . $numplayers;
|
|
||||||
//ok
|
|
||||||
// echo "</td><td><b>print_r</b> ";print_r($players);
|
|
||||||
|
|
||||||
?>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ? php
|
|
||||||
echo "<hr>";
|
|
||||||
echo "<br><u>Resultat</u><br>";
|
|
||||||
echo "<br><b>Server Name</b>:<i> ${name} </i>\n";echo "<br>";
|
|
||||||
echo "<b>Map</b>: ${map} <br>";
|
|
||||||
echo "<b>Game</b>: ${game}<br>";
|
|
||||||
echo "<b>IP</b>: ${connect}<br>";
|
|
||||||
echo "Secure: ${secure}<br>";
|
|
||||||
echo "<b>Version</b>: ${version}<br>";
|
|
||||||
//echo "<b>Island</b>: ${island}<br>";
|
|
||||||
//echo "<b>dedicated</b>: ${dedicated}<br>";
|
|
||||||
echo "<b>Ping</b>: ${ping}<br>";
|
|
||||||
echo "<b>Time</b>: $time <br>";
|
|
||||||
echo "<b>Nombre Joueurs</b>: ${numplayers}<br>";
|
|
||||||
echo "<b>Players</b>: "; if(count($players) == 1) {echo "il y a des joueurs"; } else {echo "0 player" ;}
|
|
||||||
echo "<br>";
|
|
||||||
echo "<b>Tags:</b> ($tags)"; //printf("[%0.45s]<br>",$tags); //print_r($tags);
|
|
||||||
echo "<br><b>hive</b>: ${hive}<br>";
|
|
||||||
echo "<b>Battleye</b>: ${battleye}";
|
|
||||||
echo "<hr>";
|
|
||||||
? -->
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
if(empty( $arr )) {...} //checks if there are any elements in the array
|
|
||||||
if($arr) {...} //checks if there are any elements in the array
|
|
||||||
if(array_shift( $arr )) {...} //Check the presence of the first element
|
|
||||||
if($arr[0]) {...} //Check the first index
|
|
||||||
-->
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -133,5 +133,33 @@ $fl_array = preg_grep("/[^,entm][0-9][.][0-9]{1}/", $InfoGT);
|
||||||
echo $fl_array;
|
echo $fl_array;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
echo "<hr>";
|
||||||
|
$re = '/[0-9]{1,2}[:][0-9]{1,2}/m';
|
||||||
|
$str = 'battleye,external,privHive,shard,lqs0,etm2.000000,entm5.500000,mod,23:17';
|
||||||
|
|
||||||
|
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
|
||||||
|
|
||||||
|
// Print the entire match result
|
||||||
|
//var_dump($matches);
|
||||||
|
|
||||||
|
echo '<pre>'; print_r($matches); echo '</pre>';
|
||||||
|
|
||||||
|
echo "<br>";
|
||||||
|
|
||||||
|
$encode = json_encode($matches);
|
||||||
|
echo $encode;
|
||||||
|
echo "<br>";
|
||||||
|
|
||||||
|
//echo $matches[0];
|
||||||
|
$output = implode(",", array($str));
|
||||||
|
echo $output;
|
||||||
|
echo "<br>";
|
||||||
|
$output1 = implode(",", array($matches));
|
||||||
|
echo $output1;
|
||||||
|
echo "<br>";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
INSERT INTO `StatServer_5` (`dedicated`,`game_descr`,`game_dir`,`game_id`,`gq_address`,`gq_dedicated`,`gq_gametype`,`gq_hostname`,`gq_joinlink`,`gq_mapname`,`gq_maxplayers`,`gq_mod`,`gq_name`,`gq_numplayers`,`gq_online`,`gq_password`,`gq_port_client`,`gq_port_query`,`gq_protocol`,`gq_transport`,`gq_type`,`hostname`,`keywords`,`map`,`max_players`,`num_bots`,`num_players`,`os`,`password`,`players`,`port`,`protocol`,`secure`,`steam_id`,`steamappid`,`teams`,`version`, `Dates`) VALUES ('d','DayZ','dayz','221100','82.64.214.194','d','DayZ','[ TOX 1 #Expansion ] Chernarus Gloom HeroMOD | Summer | FR/EN','steam://connect/82.64.214.194:3201/','ChernarusPlusGloom','60','dayz','DayZ Standalone','0','1','0','3201','27001','source','udp','dayz','[ TOX 1 #Expansion ] Chernarus Gloom HeroMOD | Summer | FR/EN','battleye,external,privHive,shard,lqs0,etm2.000000,entm5.500000,mod,07:51','ChernarusPlusGloom','60','0','0','w','0','','3201','17','1','90142623158817801','0','','1.10.153598', '2021-02-04 15:32:07');
|
|
|
@ -1 +0,0 @@
|
||||||
{"name":"[TH] F2P SERVER | Chernarus Map | No Mod | F2P.IN.TH |","map":"chernarusplus","password":false,"raw":{"protocol":17,"folder":"dayz","game":"DayZ","steamappid":0,"numplayers":4,"numbots":0,"listentype":"d","environment":"w","secure":1,"version":"1.10.153598","steamid":"90142621100619783","tags":"battleye,external,privHive,shard,lqs0,etm12.000000,entm2.000000,mod,04:36","gameid":"221100","rules":{"\u0001\u0001":"\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0001\u0002<30>>&\u0013Ԓ\u0011\u000bLivonia DLC\u0001\u0001\u0004dayz","allowedBuild":"0","dedicated":"1","island":"chernarusplus","language":"65545","platform":"win","requiredBuild":"0","requiredVersion":"110","timeLeft":"15"}},"maxplayers":60,"players":[{},{},{},{}],"bots":[],"connect":"103.58.149.102:2302","ping":208}
|
|
|
@ -1,6 +0,0 @@
|
||||||
|
|
||||||
INSERT INTO `StatServer_1` (`id`, `date`, `name`, `numplayers`, `timeserver`, `players`, `map`, `game`, `maxplayers`, `requiredVersion`, `version`, `battleye`, `hive`, `connect`, `secure`, `ping`) VALUES
|
|
||||||
(1, '', '', '0', '', '', '', '', '', 'null', '', '', '', '', '', '');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
30
test.php
30
test.php
|
@ -1,30 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
ini_set('display_errors', 'on');
|
|
||||||
error_reporting(E_ALL); // Display all types of error
|
|
||||||
|
|
||||||
$re = '/[0-9]{1,2}[:][0-9]{1,2}/m';
|
|
||||||
$str = 'battleye,external,privHive,shard,lqs0,etm2.000000,entm5.500000,mod,23:17';
|
|
||||||
|
|
||||||
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
|
|
||||||
|
|
||||||
// Print the entire match result
|
|
||||||
//var_dump($matches);
|
|
||||||
|
|
||||||
echo '<pre>'; print_r($matches); echo '</pre>';
|
|
||||||
|
|
||||||
echo "<br>";
|
|
||||||
|
|
||||||
$encode = json_encode($matches);
|
|
||||||
echo $encode;
|
|
||||||
echo "<br>";
|
|
||||||
|
|
||||||
//echo $matches[0];
|
|
||||||
$output = implode(",", array($str));
|
|
||||||
echo $output;
|
|
||||||
echo "<br>";
|
|
||||||
$output1 = implode(",", array($matches));
|
|
||||||
echo $output1;
|
|
||||||
echo "<br>";
|
|
||||||
|
|
||||||
?>
|
|
Loading…
Reference in a new issue