273 строки
7.8 KiB
PHP
Executable File
273 строки
7.8 KiB
PHP
Executable File
<?php
|
|
// vim: set ts=4 sw=4 tw=99 et:
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
session_start();
|
|
session_write_close();
|
|
|
|
class Config {
|
|
// MySQL config
|
|
public $mysql_host;
|
|
public $mysql_username;
|
|
public $mysql_password;
|
|
public $mysql_db_name;
|
|
|
|
// General Config
|
|
public $data_folder;
|
|
|
|
function __construct($config_file_path)
|
|
{
|
|
$this->init($config_file_path);
|
|
}
|
|
|
|
function init($config_file_path)
|
|
{
|
|
// Read & Parse config file
|
|
$config_array = parse_ini_file($config_file_path, true);
|
|
$this->mysql_host = $config_array["mysql"]["host"];
|
|
$this->mysql_username = $config_array["mysql"]["user"];
|
|
$this->mysql_password = $config_array["mysql"]["pass"];
|
|
$this->mysql_db_name = $config_array["mysql"]["db_name"];
|
|
$this->data_folder = $config_array["general"]["data_folder"];
|
|
$this->slack_webhook = $config_array["general"]["slack_webhook"];
|
|
}
|
|
}
|
|
|
|
function throw_exception($exception) {
|
|
throw new Exception($exception);
|
|
}
|
|
|
|
function init_database()
|
|
{
|
|
global $config;
|
|
mysql_connect($config->mysql_host, $config->mysql_username, $config->mysql_password) or die("ERROR: " . mysql_error());
|
|
mysql_select_db($config->mysql_db_name) or die("ERROR: " . mysql_error());
|
|
}
|
|
|
|
function username()
|
|
{
|
|
if (!isset($_SESSION['persona']))
|
|
return "guest";
|
|
else
|
|
return $_SESSION['persona'];
|
|
}
|
|
|
|
function has_permissions()
|
|
{
|
|
if (!isset($_SESSION['persona']))
|
|
return false;
|
|
|
|
# Test here which persons have permission to see all benchmarks
|
|
if ($_SESSION['persona'] == "hv1989@gmail.com")
|
|
return true;
|
|
if (preg_match("/^[0-9A-Za-z.]*@mozilla\.com$/", $_SESSION['persona']))
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
function GET_bool($name)
|
|
{
|
|
if (isset($_GET[$name]))
|
|
return $_GET[$name] === "true" || $_GET[$name] === '1';
|
|
return false;
|
|
}
|
|
|
|
function GET_int($name)
|
|
{
|
|
if (isset($_GET[$name]))
|
|
return intval($_GET[$name]);
|
|
return 0;
|
|
}
|
|
|
|
function GET_string($name)
|
|
{
|
|
if (isset($_GET[$name]))
|
|
return $_GET[$name];
|
|
return "";
|
|
}
|
|
|
|
function find_vendor_of_mode_id($mode_id)
|
|
{
|
|
$query = "SELECT vendor_id FROM awfy_mode
|
|
WHERE id = $mode_id";
|
|
$results = mysql_query($query);
|
|
if (!$results || mysql_num_rows($results) < 1)
|
|
return 0;
|
|
$row = mysql_fetch_array($results);
|
|
return intval($row[0]);
|
|
}
|
|
|
|
function find_mode($mode)
|
|
{
|
|
$query = "SELECT id FROM awfy_mode
|
|
WHERE mode = '" . mysql_real_escape_string($mode) . "'";
|
|
$results = mysql_query($query);
|
|
if (!$results || mysql_num_rows($results) < 1)
|
|
return -1;
|
|
$row = mysql_fetch_array($results);
|
|
return intval($row[0]);
|
|
}
|
|
|
|
function find_build($run_id, $mode_id)
|
|
{
|
|
$query = "SELECT id FROM awfy_build
|
|
WHERE run_id = $run_id and mode_id = $mode_id";
|
|
$results = mysql_query($query);
|
|
if (!$results || mysql_num_rows($results) < 1)
|
|
return 0;
|
|
$row = mysql_fetch_array($results);
|
|
return intval($row[0]);
|
|
}
|
|
|
|
function find_suite($suite)
|
|
{
|
|
$query = "SELECT id FROM awfy_suite
|
|
WHERE name = '" . mysql_real_escape_string($suite) . "'";
|
|
$results = mysql_query($query);
|
|
if (!$results || mysql_num_rows($results) < 1)
|
|
return -1;
|
|
$row = mysql_fetch_array($results);
|
|
return intval($row[0]);
|
|
}
|
|
|
|
function normalize($string)
|
|
{
|
|
return preg_replace("/[^a-zA-Z0-9\s\.-]/", "", $string);
|
|
}
|
|
|
|
function find_or_add_suite_version($suite, $version)
|
|
{
|
|
$suite = normalize($suite);
|
|
$version = normalize($version);
|
|
|
|
$suite_id = find_suite($suite);
|
|
if ($suite_id == -1)
|
|
return -1;
|
|
if ($suite == "octane" && $version == "octane")
|
|
$version = "octane 2.0.1";
|
|
if ($suite == "ss" && $version == "ss")
|
|
$version = "ss 1.0.1";
|
|
if ($suite == "kraken" && $version == "kraken")
|
|
$version = "kraken 1.1";
|
|
$query = "select id from awfy_suite_version where suite_id = $suite_id and name = '$version'";
|
|
$results = mysql_query($query);
|
|
if (!$results || mysql_num_rows($results) < 1) {
|
|
$query = "insert into awfy_suite_version (suite_id, name) values($suite_id, '$version')";
|
|
mysql_query($query);
|
|
return mysql_insert_id();
|
|
}
|
|
$row = mysql_fetch_array($results);
|
|
return intval($row[0]);
|
|
}
|
|
|
|
function find_or_add_test($suite_version_id, $name)
|
|
{
|
|
$name = normalize($name);
|
|
|
|
$name = mysql_real_escape_string($name);
|
|
$query = "select id from awfy_suite_test where suite_version_id = $suite_version_id and name = '$name'";
|
|
$results = mysql_query($query);
|
|
if (!$results || mysql_num_rows($results) < 1) {
|
|
$query = "insert into awfy_suite_test (suite_version_id, name) values($suite_version_id, '$name')";
|
|
mysql_query($query);
|
|
return mysql_insert_id();
|
|
}
|
|
$row = mysql_fetch_array($results);
|
|
return intval($row[0]);
|
|
}
|
|
|
|
function awfy_query($query)
|
|
{
|
|
$result = mysql_query($query) or die(mysql_error());
|
|
return $result;
|
|
}
|
|
|
|
if (!function_exists("mysql_connect")){
|
|
/* warning: fatal error "cannot redeclare" if a function was disabled in php.ini with disable_functions:
|
|
disable_functions =mysql_connect,mysql_pconnect,mysql_select_db,mysql_ping,mysql_query,mysql_fetch_assoc,mysql_num_rows,mysql_fetch_array,mysql_error,mysql_insert_id,mysql_close,mysql_real_escape_string,mysql_data_seek,mysql_result
|
|
*/
|
|
|
|
function mysql_connect($host, $username, $password){
|
|
global $dbconnect;
|
|
$dbconnect = mysqli_connect($host, $username, $password);
|
|
return $dbconnect;
|
|
}
|
|
function mysql_pconnect($host, $username, $password){
|
|
global $dbconnect;
|
|
$dbconnect = mysqli_connect("p:".$host, $username, $password);
|
|
return $dbconnect;
|
|
}
|
|
function mysql_select_db($db){
|
|
global $dbconnect;
|
|
return mysqli_select_db ( $dbconnect,$db );
|
|
}
|
|
function mysql_ping($dbconnect){
|
|
return mysqli_ping ( $dbconnect );
|
|
}
|
|
function mysql_query($stmt){
|
|
global $dbconnect;
|
|
return mysqli_query ($dbconnect, $stmt );
|
|
}
|
|
function mysql_fetch_assoc($erg){
|
|
return mysqli_fetch_assoc ($erg );
|
|
}
|
|
function mysql_num_rows($e){
|
|
return mysqli_num_rows ($e );
|
|
}
|
|
function mysql_affected_rows($e=NULL){
|
|
return mysqli_affected_rows ($e );
|
|
}
|
|
function mysql_fetch_array($e){
|
|
return mysqli_fetch_array ($e );
|
|
}
|
|
function mysql_error(){
|
|
global $dbconnect;
|
|
return mysqli_error ($dbconnect);
|
|
}
|
|
function mysql_insert_id(){
|
|
global $dbconnect;
|
|
return mysqli_insert_id ($dbconnect);
|
|
}
|
|
function mysql_close(){
|
|
return true;
|
|
}
|
|
function mysql_escape_string($s){
|
|
global $dbconnect;
|
|
return mysqli_real_escape_string($dbconnect,$s);
|
|
}
|
|
function mysql_real_escape_string($s){
|
|
global $dbconnect;
|
|
return mysqli_real_escape_string($dbconnect,$s);
|
|
}
|
|
function mysql_data_seek($re,$row){
|
|
return mysqli_data_seek($re,$row);
|
|
}
|
|
function mysql_result($res,$row=0,$col=0){
|
|
$numrows = mysqli_num_rows($res);
|
|
if ($numrows && $row <= ($numrows-1) && $row >=0){
|
|
mysqli_data_seek($res,$row);
|
|
$resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
|
|
if (isset($resrow[$col])){
|
|
return $resrow[$col];
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
function mysql_get_server_info() {
|
|
global $dbconnect;
|
|
return mysqli_get_server_info($dbconnect);
|
|
}
|
|
function mysql_set_charset($csname) {
|
|
global $dbconnect;
|
|
return mysqli_set_charset($dbconnect,$csname);
|
|
}
|
|
function mysql_fetch_object($result) {
|
|
return mysqli_fetch_object($result);
|
|
}
|
|
}
|
|
|
|
// Init
|
|
$config = new Config("/etc/awfy-server.config");
|