1
0
mirror of https://github.com/newnius/YAO-portal.git synced 2025-06-06 07:11:54 +00:00
YAO-portal/ajax.php

282 lines
7.2 KiB
PHP
Raw Permalink Normal View History

2019-01-15 02:02:28 +00:00
<?php
require_once('util4p/util.php');
require_once('util4p/CRObject.class.php');
2020-04-13 09:25:24 +00:00
require_once('util4p/Random.class.php');
2019-01-15 02:02:28 +00:00
require_once('Code.class.php');
require_once('Securer.class.php');
require_once('user.logic.php');
require_once('job.logic.php');
require_once('agent.logic.php');
2019-01-15 12:25:37 +00:00
require_once('workspace.logic.php');
2019-07-30 07:53:41 +00:00
require_once('cluster.logic.php');
2020-04-12 16:38:21 +00:00
require_once('debug.logic.php');
2019-01-15 02:02:28 +00:00
require_once('config.inc.php');
require_once('init.inc.php');
function csrf_check($action)
{
/* check referer, just in case I forget to add the method to $post_methods */
$referer = cr_get_SERVER('HTTP_REFERER', '');
$url = parse_url($referer);
$host = isset($url['host']) ? $url['host'] : '';
$host .= isset($url['port']) && $url['port'] !== 80 ? ':' . $url['port'] : '';
if ($host !== cr_get_SERVER('HTTP_HOST')) {
return false;
}
$post_methods = array(
'signout',
'oauth_get_url'
);
if (in_array($action, $post_methods)) {
return Securer::validate_csrf_token();
}
return true;
}
function print_response($res)
{
if (!isset($res['msg']))
$res['msg'] = Code::getErrorMsg($res['errno']);
$json = json_encode($res);
header('Content-type: application/json');
echo $json;
}
$res = array('errno' => Code::UNKNOWN_REQUEST);
$action = cr_get_GET('action');
if (!csrf_check($action)) {
$res['errno'] = 99;
$res['msg'] = 'invalid csrf_token';
print_response($res);
exit(0);
}
switch ($action) {
case 'job_list':
$rule = new CRObject();
$rule->set('who', cr_get_GET('who', 'self'));
$rule->set('offset', cr_get_GET('offset'));
$rule->set('limit', cr_get_GET('limit'));
$rule->set('order', 'latest');
$res = job_list($rule);
break;
case 'job_submit':
$job = new CRObject();
2020-07-01 03:14:22 +00:00
$job->set('name', cr_get_POST('name', 'jobName'));
2019-01-15 02:02:28 +00:00
$job->set('virtual_cluster', cr_get_POST('cluster'));
$job->set('workspace', cr_get_POST('workspace'));
2020-09-11 03:12:07 +00:00
$job->set('model_dir', cr_get_POST('model_dir'));
$job->set('output_dir', cr_get_POST('output_dir'));
2019-01-15 02:02:28 +00:00
$job->set('priority', cr_get_POST('priority'));
$job->set('run_before', cr_get_POST('run_before'));
2020-05-01 04:49:32 +00:00
$job->set('locality', cr_get_POST('locality'));
2019-01-15 02:02:28 +00:00
$job->set('tasks', cr_get_POST('tasks'));
$res = job_submit($job);
break;
case 'job_stop':
$job = new CRObject();
$job->set('id', cr_get_POST('id'));
2019-01-15 12:25:37 +00:00
$res = job_stop($job);
2019-01-15 02:02:28 +00:00
break;
case 'job_describe':
$job = new CRObject();
$job->set('id', cr_get_POST('id'));
$res = job_describe($job);
break;
2019-03-25 07:40:28 +00:00
case 'job_status':
$job = new CRObject();
$job->set('name', cr_get_GET('name'));
$res = job_status($job);
break;
2020-06-21 05:05:22 +00:00
case 'job_predict_req':
$job = new CRObject();
2020-06-30 15:35:43 +00:00
$job->set('name', cr_get_POST('name', 'jobName'));
2020-06-24 14:46:56 +00:00
$job->set('virtual_cluster', cr_get_POST('cluster'));
$job->set('workspace', cr_get_POST('workspace'));
$job->set('priority', cr_get_POST('priority'));
$job->set('run_before', cr_get_POST('run_before'));
$job->set('locality', cr_get_POST('locality'));
$job->set('tasks', cr_get_POST('tasks'));
$role = cr_get_GET('role');
$res = job_predict_req($job, $role);
2020-06-21 05:05:22 +00:00
break;
2020-07-01 02:52:31 +00:00
case 'job_predict_time':
$job = new CRObject();
$job->set('name', cr_get_POST('name', 'jobName'));
$job->set('virtual_cluster', cr_get_POST('cluster'));
$job->set('workspace', cr_get_POST('workspace'));
$job->set('priority', cr_get_POST('priority'));
$job->set('run_before', cr_get_POST('run_before'));
$job->set('locality', cr_get_POST('locality'));
$job->set('tasks', cr_get_POST('tasks'));
$res = job_predict_time($job, $role);
break;
2019-04-03 12:26:25 +00:00
case 'summary_get':
$res = summary_get();
break;
2019-04-29 13:04:19 +00:00
case 'summary_get_pool_history':
$res = summary_get_pool_history();
break;
2019-03-25 07:40:28 +00:00
case 'task_logs':
$task = new CRObject();
$task->set('job', cr_get_GET('job'));
$task->set('task', cr_get_GET('task'));
$res = task_logs($task);
break;
2019-01-15 02:02:28 +00:00
case 'agent_list':
$rule = new CRObject();
$rule->set('offset', cr_get_GET('offset'));
$rule->set('limit', cr_get_GET('limit'));
$res = agent_list($rule);
break;
case 'agent_add':
$agent = new CRObject();
$agent->set('ip', cr_get_POST('ip'));
$agent->set('alias', cr_get_POST('alias'));
$agent->set('cluster', cr_get_POST('cluster'));
$res = agent_add($agent);
break;
case 'agent_remove':
$job = new CRObject();
$job->set('id', cr_get_POST('id'));
$res = agent_remove($job);
break;
2019-04-23 08:57:15 +00:00
case 'resource_list':
$res = resource_list();
break;
2019-01-15 12:25:37 +00:00
case 'workspace_list':
$rule = new CRObject();
$rule->set('offset', cr_get_GET('offset'));
$rule->set('limit', cr_get_GET('limit'));
$res = workspace_list($rule);
break;
case 'workspace_add':
$workspace = new CRObject();
$workspace->set('name', cr_get_POST('name'));
2019-04-23 08:57:15 +00:00
$workspace->set('type', cr_get_POST('type'));
$workspace->set('git_repo', cr_get_POST('git_repo'));
2019-01-15 12:25:37 +00:00
$res = workspace_add($workspace);
break;
case 'workspace_update':
$workspace = new CRObject();
$workspace->set('id', cr_get_POST('id'));
$workspace->set('name', cr_get_POST('name'));
2019-04-23 08:57:15 +00:00
$workspace->set('type', cr_get_POST('type'));
$workspace->set('git_repo', cr_get_POST('git_repo'));
2019-01-15 12:25:37 +00:00
$res = workspace_update($workspace);
break;
case 'workspace_remove':
$workspace = new CRObject();
$workspace->set('id', cr_get_POST('id'));
$res = workspace_remove($workspace);
break;
2019-07-30 07:49:09 +00:00
case 'cluster_list':
$rule = new CRObject();
$rule->set('offset', cr_get_GET('offset'));
$rule->set('limit', cr_get_GET('limit'));
$rule->set('order', 'latest');
$res = cluster_list($rule);
break;
case 'cluster_add':
$cluster = new CRObject();
$cluster->set('name', cr_get_POST('name'));
$cluster->set('weight', cr_get_POST('weight'));
$cluster->set('reserved', cr_get_POST('reserved'));
$cluster->set('quota_cpu', cr_get_POST('quota_cpu'));
$cluster->set('quota_mem', cr_get_POST('quota_mem'));
$cluster->set('quota_gpu', cr_get_POST('quota_gpu'));
$cluster->set('quota_gpu_mem', cr_get_POST('quota_gpu_mem'));
$res = cluster_add($cluster);
break;
case 'cluster_update':
$cluster = new CRObject();
$cluster->set('name', cr_get_POST('name'));
$cluster->set('weight', cr_get_POST('weight'));
$cluster->set('reserved', cr_get_POST('reserved'));
$cluster->set('quota_cpu', cr_get_POST('quota_cpu'));
$cluster->set('quota_mem', cr_get_POST('quota_mem'));
$cluster->set('quota_gpu', cr_get_POST('quota_gpu'));
$cluster->set('quota_gpu_mem', cr_get_POST('quota_gpu_mem'));
$res = cluster_update($cluster);
break;
case 'cluster_remove':
$cluster = new CRObject();
$cluster->set('name', cr_get_POST('name'));
$res = cluster_remove($cluster);
break;
2020-04-12 16:38:21 +00:00
case 'get_counter':
$res = debug_get_counter();
break;
case 'get_bindings':
$res = debug_get_bindings();
break;
2020-07-11 05:29:10 +00:00
case 'conf_update':
$option = cr_get_POST('option', '');
$value = cr_get_POST('value', '');
$res = conf_update($option, $value);
break;
case 'conf_list':
$res = conf_list();
break;
2019-01-15 02:02:28 +00:00
case 'user_signout':
$res = user_signout();
break;
case 'log_gets':
$rule = new CRObject();
$rule->set('who', cr_get_GET('who', 'self'));
$rule->set('offset', cr_get_GET('offset'));
$rule->set('limit', cr_get_GET('limit'));
$rule->set('order', 'latest');
$res = log_gets($rule);
break;
case 'oauth_get_url':
$res = oauth_get_url();
break;
2019-04-23 08:57:15 +00:00
case 'user_login':
$user = new CRObject();
$res = user_login($user);
break;
2019-01-15 02:02:28 +00:00
default:
break;
}
print_response($res);