mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-14 03:09:08 +00:00
9bc219ee14
About Shared Library (shared) and Module Library (module) type of cmake target INSTALL command has different behaviour for ARCHIVE LIBRARY RUNTIME depending on the platform
106 lines
4.3 KiB
PHP
106 lines
4.3 KiB
PHP
<?php
|
|
|
|
/* Copyright (C) 2012 Winch Gate Property Limited
|
|
*
|
|
* This file is part of ryzom_app.
|
|
* ryzom_api is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* ryzom_api is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with ryzom_api. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/***
|
|
* List of web egs commands
|
|
*
|
|
* - give_item sheet quality quantity inventory
|
|
* - recv_item sheet quality quantity inventory
|
|
* - check_item sheet quality quantity inventory
|
|
* - check_position min_x min_y max_x max_y
|
|
* - check_fame faction_name "below"|"above" value
|
|
* - check_target "sheet"|"bot_name"|"player_name" name
|
|
* - check_brick brick_name
|
|
* - set_brick "add"|"del" brick_name
|
|
* - check_outpost name "attacker"|"defender"|"attack"|"defend" (attacker/defender : check if guild of player is attacker/defender, attack/defend : check if OP is in state atttack/defend)
|
|
* - create_group number sheet [ dispersion "self"|"random"|orientation bot_name x y ]
|
|
* - group_script bot_name command1 [ command2 ... ]
|
|
* - change_vpx player_name property value
|
|
* - set_title title
|
|
*
|
|
***/
|
|
|
|
include_once(RYAPI_PATH.'/common/dfm.php');
|
|
|
|
class ryHmagic {
|
|
|
|
function __construct() {
|
|
$this->dfm = new ryDataFileManager(_user()->id);
|
|
}
|
|
|
|
function getWebCommand($web_app_url, $command, $is_next=false, $need_callback=false, $old_sep=false, $replace_space=true) {
|
|
$command = str_replace('#player', ryzom_get_param('player_eid'), $command);
|
|
if ($replace_space)
|
|
$command = str_replace(' ', chr(160), $command);
|
|
|
|
$last_connected_date = strtotime($_SESSION['last_played_date']);
|
|
$index_infos = $this->dfm->loadUserDataFromApp('hmagic.index', 'app_profile');
|
|
if ($index_infos == null) {
|
|
$index_infos['last_played_date'] = $last_connected_date;
|
|
$index_infos['time'] = array();
|
|
$index_infos['index'] = 0;
|
|
}
|
|
|
|
if ($index_infos['last_played_date'] != $last_connected_date) {
|
|
$index_infos['last_played_date'] = $last_connected_date;
|
|
$index_infos['time'] = array();
|
|
$index_infos['index'] = 0;
|
|
}
|
|
if (!is_array($index_infos['time']))
|
|
$index_infos['time'] = array();
|
|
|
|
$index_infos['index']++;
|
|
$index_infos['time'][strval($index_infos['index'])] = strval($index_infos['index']).'_'.strval(time());
|
|
$index_infos['url'][strval($index_infos['index'])] = $web_app_url;
|
|
$tid = 'tid='.$index_infos['time'][strval($index_infos['index'])];
|
|
$this->dfm->saveUserDataFromApp('hmagic.index', 'app_profile', $index_infos);
|
|
$eid = ryzom_get_param('datasetid');
|
|
$checksum = $web_app_url.'&'.$tid . $last_connected_date . $index_infos['index'] . $command . $eid;
|
|
$hmac = strtoupper(hash_hmac('sha1', $checksum, RYAPI_EGS_SALT));
|
|
return ' local command = \''.str_replace("'", '\\\'',str_replace('&', '&', $command)).'\''."\n\t".
|
|
(RYAPI_HMAGIC_DEBUG?'runCommand("a","webExecCommand","debug", "1", command, "hmac", "2","'.($is_next?'1':'0').'","'.($need_callback?'1':'0').'")':'runCommand("a","webExecCommand","'.str_replace('&', '&', $web_app_url).'&'.$tid.'","'.$index_infos['index'].'",command,"'.$hmac.'","'.($old_sep?'1':'3').'","'.($is_next?'1':'0').'","'.($need_callback?'1':'0').'")');
|
|
}
|
|
|
|
function validateCallback() {
|
|
$index_infos = $this->dfm->loadUserDataFromApp('hmagic.index', 'app_profile');
|
|
$playerEid = ryzom_get_param('player_eid');
|
|
$event = ryzom_get_param('event');
|
|
$desc_error = ryzom_get_param('desc');
|
|
$desc = '';
|
|
if ($desc_error)
|
|
$desc = '&desc='.$desc_error;
|
|
list($index, $tid) = explode('_', ryzom_get_param('tid'));
|
|
$web_app_url = $index_infos['url'][$index];
|
|
|
|
if ($index.'_'.$tid != $index_infos['time'][$index])
|
|
return false;
|
|
$trans_id = '';
|
|
if ($tid)
|
|
$trans_id = '&tid='.$index.'_'.$tid;
|
|
$hmac = ryzom_get_param('hmac');
|
|
$checksum = $web_app_url.$trans_id.'&player_eid='.$playerEid.'&event='.$event.$desc;
|
|
$real_hmac = strtoupper(hash_hmac('sha1', $checksum, RYAPI_EGS_SALT));
|
|
if ($real_hmac != $hmac)
|
|
return false;
|
|
else
|
|
return true;
|
|
}
|
|
}
|
|
|
|
?>
|