mirror of https://github.com/MISP/MISP
Start of documentation concerning REST.
parent
c2975a77a4
commit
87e12448ab
|
@ -52,6 +52,9 @@ class PagesController extends AppController {
|
|||
*/
|
||||
public $uses = array();
|
||||
|
||||
public function isAuthorized($user) {
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Displays a view
|
||||
*
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
<li><?php echo $this->Html->link(__('My Profile', true), array('controller' => 'users', 'action' => 'view', 'me')); ?> </li>
|
||||
<li><?php echo $this->Html->link(__('Members List', true), array('controller' => 'users', 'action' => 'memberslist')); ?> </li>
|
||||
<li><?php echo $this->Html->link(__('Terms & Conditions', true), array('controller' => 'users', 'action' => 'terms')); ?> </li>
|
||||
<li><?php echo $this->Html->link(__('Documentation', true), array('controller' => 'pages', 'action' => 'display', 'documentation')); ?> </li>
|
||||
|
||||
<?php if ('true' == Configure::read('CyDefSIG.sync')): ?>
|
||||
<li> </li>
|
||||
|
|
|
@ -0,0 +1,138 @@
|
|||
<div class="index">
|
||||
<h2>Documentation</h2>
|
||||
<p>
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Export and Import</h2>
|
||||
<p>CyDefSIG has full support for automated data export and import.</p>
|
||||
<h3>IDS and script export</h3>
|
||||
<p>First of all you can export data in formats that are suitable for NIDS or scripts (text, xml,...).<br/>
|
||||
All details about this export can be found on the <?php echo $this->Html->link(__('Export', true), array('controller' => 'events', 'action' => 'export')); ?> page.
|
||||
</p>
|
||||
<h3>REST API</h3>
|
||||
<p>CydefSIG is also <a href="http://en.wikipedia.org/wiki/Representational_state_transfer">RESTfull</a>, so this means you can use structured format (XML) to access Events and Attributes data.</p>
|
||||
<h4>Requests</h4>
|
||||
<p>Use any HTTP compliant library to perform requests. However to make clear you are doing a REST request you need to either specify the <code>Accept</code> type to <code>application/xml</code>, or append <code>.xml</code> to the url.</p>
|
||||
<p>The following table shows the relation of the request type and the resulting action:</p>
|
||||
<table style="width:250px;">
|
||||
<colgroup>
|
||||
<col width="18%">
|
||||
<col width="34%">
|
||||
<col width="48%">
|
||||
</colgroup>
|
||||
<thead valign="bottom">
|
||||
<tr><th class="head">HTTP format</th>
|
||||
<th class="head">URL</th>
|
||||
<th class="head">Controller action invoked</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody valign="top">
|
||||
<tr><td>GET</td>
|
||||
<td>/events</td>
|
||||
<td>EventsController::index() <sup>(1)</sup></td>
|
||||
</tr>
|
||||
<tr><td>GET</td>
|
||||
<td>/events/123</td>
|
||||
<td>EventsController::view(123)</td>
|
||||
</tr>
|
||||
<tr><td>POST</td>
|
||||
<td>/events</td>
|
||||
<td>EventsController::add()</td>
|
||||
</tr>
|
||||
<tr><td>PUT</td>
|
||||
<td>/events/123</td>
|
||||
<td>EventsController::edit(123)</td>
|
||||
</tr>
|
||||
<tr><td>DELETE</td>
|
||||
<td>/events/123</td>
|
||||
<td>EventsController::delete(123)</td>
|
||||
</tr>
|
||||
<tr><td>POST</td>
|
||||
<td>/events/123</td>
|
||||
<td>EventsController::edit(123)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<small>(1) Warning, there's a limit on the number of results when you call <code>index</code>.</small>
|
||||
<br/>
|
||||
|
||||
<h4>Authentication</h4>
|
||||
<p>REST being stateless you need to authenticate your request by using your <?php echo $this->Html->link(__('authkey/apikey', true), array('controller' => 'users', 'action' => 'view', 'me')); ?>. Simply set the <code>Authorization</code> HTTP header.</p>
|
||||
<h4>Example - Get single Event</h4>
|
||||
<p>In this example we fetch the details of a single Event (and thus also his Attributes).<br/>
|
||||
The request should be:</p>
|
||||
<pre>GET <?php echo Configure::read('CyDefSIG.baseurl');?>/events/123</pre>
|
||||
<p>And with the HTTP Headers:</p>
|
||||
<pre>Accept: application/xml
|
||||
Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</pre>
|
||||
<p>The response you're going to get is the following data:</p>
|
||||
<pre><?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<response>
|
||||
<Event>
|
||||
<id>123</id>
|
||||
<date>2012-04-06</date>
|
||||
<risk>Undefined</risk>
|
||||
<info>TEST</info>
|
||||
<published>0</published>
|
||||
<uuid>4f7eff11-4e98-47b7-ae96-6a7fff32448e</uuid>
|
||||
<private>0</private>
|
||||
<Attribute>
|
||||
<id>9577</id>
|
||||
<event_id>123</event_id>
|
||||
<category>Artifacts dropped</category>
|
||||
<type>other</type>
|
||||
<value>test other</value>
|
||||
<to_ids>1</to_ids>
|
||||
<uuid>4f7fe870-e5a4-4b9e-a89c-a45bff32448e</uuid>
|
||||
<revision>1</revision>
|
||||
<private>0</private>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<id>9576</id>
|
||||
<event_id>123</event_id>
|
||||
<category>Payload delivery</category>
|
||||
<type>filename</type>
|
||||
<value>test attribute</value>
|
||||
<to_ids>1</to_ids>
|
||||
<uuid>4f7fe85b-0f78-4e40-91f3-a45aff32448e</uuid>
|
||||
<revision>1</revision>
|
||||
<private>0</private>
|
||||
</Attribute>
|
||||
</Event>
|
||||
</response></pre>
|
||||
|
||||
|
||||
<h4>Example - Add new Event</h4>
|
||||
<p>In this example we want to add a single Event.<br/>
|
||||
The request should be:</p>
|
||||
<pre>POST <?php echo Configure::read('CyDefSIG.baseurl');?>/events
|
||||
Accept: application/xml
|
||||
Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</pre>
|
||||
<p>And the request body:</p>
|
||||
<pre><Event>
|
||||
<date>2012-05-06</date>
|
||||
<risk>Undefined</risk>
|
||||
<info>TEST REST</info>
|
||||
<published>0</published>
|
||||
<private>0</private>
|
||||
<attribute/>
|
||||
</Event></pre>
|
||||
<p>The response you're going to get is the following data:</p>
|
||||
<h2>FIXME </h2>
|
||||
|
||||
|
||||
|
||||
<h4>Example - Requesting an invalid page</h4>
|
||||
<h2>FIXME </h2>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<ul>
|
||||
<?php echo $this->element('actions_menu'); ?>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -1,188 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @copyright Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
* @link http://cakephp.org CakePHP(tm) Project
|
||||
* @package Cake.View.Pages
|
||||
* @since CakePHP(tm) v 0.10.0.1076
|
||||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
||||
*/
|
||||
if (Configure::read('debug') == 0):
|
||||
throw new NotFoundException();
|
||||
endif;
|
||||
App::uses('Debugger', 'Utility');
|
||||
?>
|
||||
<iframe src="http://cakephp.org/bake-banner" width="830" height="160" style="overflow:hidden; border:none;">
|
||||
<p>For updates and important announcements, visit http://cakefest.org</p>
|
||||
</iframe>
|
||||
<h2><?php echo __d('cake_dev', 'Release Notes for CakePHP %s.', Configure::version()); ?></h2>
|
||||
<a href="http://cakephp.org/changelogs/<?php echo Configure::version(); ?>"><?php echo __d('cake_dev', 'Read the changelog'); ?> </a>
|
||||
<?php
|
||||
if (Configure::read('debug') > 0):
|
||||
Debugger::checkSecurityKeys();
|
||||
endif;
|
||||
?>
|
||||
<p id="url-rewriting-warning" style="background-color:#e32; color:#fff;">
|
||||
<?php echo __d('cake_dev', 'URL rewriting is not properly configured on your server.'); ?>
|
||||
1) <a target="_blank" href="http://book.cakephp.org/2.0/en/installation/advanced-installation.html#apache-and-mod-rewrite-and-htaccess" style="color:#fff;">Help me configure it</a>
|
||||
2) <a target="_blank" href="http://book.cakephp.org/2.0/en/development/configuration.html#cakephp-core-configuration" style="color:#fff;">I don't / can't use URL rewriting</a>
|
||||
</p>
|
||||
<p>
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.8', '>=')):
|
||||
echo '<span class="notice success">';
|
||||
echo __d('cake_dev', 'Your version of PHP is 5.2.8 or higher.');
|
||||
echo '</span>';
|
||||
else:
|
||||
echo '<span class="notice">';
|
||||
echo __d('cake_dev', 'Your version of PHP is too low. You need PHP 5.2.8 or higher to use CakePHP.');
|
||||
echo '</span>';
|
||||
endif;
|
||||
?>
|
||||
</p>
|
||||
<p>
|
||||
<?php
|
||||
if (is_writable(TMP)):
|
||||
echo '<span class="notice success">';
|
||||
echo __d('cake_dev', 'Your tmp directory is writable.');
|
||||
echo '</span>';
|
||||
else:
|
||||
echo '<span class="notice">';
|
||||
echo __d('cake_dev', 'Your tmp directory is NOT writable.');
|
||||
echo '</span>';
|
||||
endif;
|
||||
?>
|
||||
</p>
|
||||
<p>
|
||||
<?php
|
||||
$settings = Cache::settings();
|
||||
if (!empty($settings)):
|
||||
echo '<span class="notice success">';
|
||||
echo __d('cake_dev', 'The %s is being used for core caching. To change the config edit APP/Config/core.php ', '<em>'. $settings['engine'] . 'Engine</em>');
|
||||
echo '</span>';
|
||||
else:
|
||||
echo '<span class="notice">';
|
||||
echo __d('cake_dev', 'Your cache is NOT working. Please check the settings in APP/Config/core.php');
|
||||
echo '</span>';
|
||||
endif;
|
||||
?>
|
||||
</p>
|
||||
<p>
|
||||
<?php
|
||||
$filePresent = null;
|
||||
if (file_exists(APP . 'Config' . DS . 'database.php')):
|
||||
echo '<span class="notice success">';
|
||||
echo __d('cake_dev', 'Your database configuration file is present.');
|
||||
$filePresent = true;
|
||||
echo '</span>';
|
||||
else:
|
||||
echo '<span class="notice">';
|
||||
echo __d('cake_dev', 'Your database configuration file is NOT present.');
|
||||
echo '<br/>';
|
||||
echo __d('cake_dev', 'Rename APP/Config/database.php.default to APP/Config/database.php');
|
||||
echo '</span>';
|
||||
endif;
|
||||
?>
|
||||
</p>
|
||||
<?php
|
||||
if (isset($filePresent)):
|
||||
App::uses('ConnectionManager', 'Model');
|
||||
try {
|
||||
$connected = ConnectionManager::getDataSource('default');
|
||||
} catch (Exception $connectionError) {
|
||||
$connected = false;
|
||||
}
|
||||
?>
|
||||
<p>
|
||||
<?php
|
||||
if ($connected && $connected->isConnected()):
|
||||
echo '<span class="notice success">';
|
||||
echo __d('cake_dev', 'Cake is able to connect to the database.');
|
||||
echo '</span>';
|
||||
else:
|
||||
echo '<span class="notice">';
|
||||
echo __d('cake_dev', 'Cake is NOT able to connect to the database.');
|
||||
echo '<br /><br />';
|
||||
echo $connectionError->getMessage();
|
||||
echo '</span>';
|
||||
endif;
|
||||
?>
|
||||
</p>
|
||||
<?php endif;?>
|
||||
<?php
|
||||
App::uses('Validation', 'Utility');
|
||||
if (!Validation::alphaNumeric('cakephp')) {
|
||||
echo '<p><span class="notice">';
|
||||
echo __d('cake_dev', 'PCRE has not been compiled with Unicode support.');
|
||||
echo '<br/>';
|
||||
echo __d('cake_dev', 'Recompile PCRE with Unicode support by adding <code>--enable-unicode-properties</code> when configuring');
|
||||
echo '</span></p>';
|
||||
}
|
||||
?>
|
||||
<h3><?php echo __d('cake_dev', 'Editing this Page'); ?></h3>
|
||||
<p>
|
||||
<?php
|
||||
echo __d('cake_dev', 'To change the content of this page, create: APP/View/Pages/home.ctp.<br />
|
||||
To change its layout, create: APP/View/Layouts/default.ctp.<br />
|
||||
You can also add some CSS styles for your pages at: APP/webroot/css.');
|
||||
?>
|
||||
</p>
|
||||
|
||||
<h3><?php echo __d('cake_dev', 'Getting Started'); ?></h3>
|
||||
<p>
|
||||
<?php
|
||||
echo $this->Html->link(
|
||||
sprintf('<strong>%s</strong> %s', __d('cake_dev', 'New'), __d('cake_dev', 'CakePHP 2.0 Docs')),
|
||||
'http://book.cakephp.org/2.0/en/',
|
||||
array('target' => '_blank', 'escape' => false)
|
||||
);
|
||||
?>
|
||||
</p>
|
||||
<p>
|
||||
<?php
|
||||
echo $this->Html->link(
|
||||
__d('cake_dev', 'The 15 min Blog Tutorial'),
|
||||
'http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/blog.html',
|
||||
array('target' => '_blank', 'escape' => false)
|
||||
);
|
||||
?>
|
||||
</p>
|
||||
|
||||
<h3><?php echo __d('cake_dev', 'More about Cake'); ?></h3>
|
||||
<p>
|
||||
<?php echo __d('cake_dev', 'CakePHP is a rapid development framework for PHP which uses commonly known design patterns like Active Record, Association Data Mapping, Front Controller and MVC.'); ?>
|
||||
</p>
|
||||
<p>
|
||||
<?php echo __d('cake_dev', 'Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility.'); ?>
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://cakefoundation.org/"><?php echo __d('cake_dev', 'Cake Software Foundation'); ?> </a>
|
||||
<ul><li><?php echo __d('cake_dev', 'Promoting development related to CakePHP'); ?></li></ul></li>
|
||||
<li><a href="http://www.cakephp.org"><?php echo __d('cake_dev', 'CakePHP'); ?> </a>
|
||||
<ul><li><?php echo __d('cake_dev', 'The Rapid Development Framework'); ?></li></ul></li>
|
||||
<li><a href="http://book.cakephp.org"><?php echo __d('cake_dev', 'CakePHP Documentation'); ?> </a>
|
||||
<ul><li><?php echo __d('cake_dev', 'Your Rapid Development Cookbook'); ?></li></ul></li>
|
||||
<li><a href="http://api20.cakephp.org"><?php echo __d('cake_dev', 'CakePHP API'); ?> </a>
|
||||
<ul><li><?php echo __d('cake_dev', 'Quick Reference'); ?></li></ul></li>
|
||||
<li><a href="http://bakery.cakephp.org"><?php echo __d('cake_dev', 'The Bakery'); ?> </a>
|
||||
<ul><li><?php echo __d('cake_dev', 'Everything CakePHP'); ?></li></ul></li>
|
||||
<li><a href="http://live.cakephp.org"><?php echo __d('cake_dev', 'The Show'); ?> </a>
|
||||
<ul><li><?php echo __d('cake_dev', 'The Show is a live and archived internet radio broadcast CakePHP-related topics and answer questions live via IRC, Skype, and telephone.'); ?></li></ul></li>
|
||||
<li><a href="http://groups.google.com/group/cake-php"><?php echo __d('cake_dev', 'CakePHP Google Group'); ?> </a>
|
||||
<ul><li><?php echo __d('cake_dev', 'Community mailing list'); ?></li></ul></li>
|
||||
<li><a href="irc://irc.freenode.net/cakephp">irc.freenode.net #cakephp</a>
|
||||
<ul><li><?php echo __d('cake_dev', 'Live chat about CakePHP'); ?></li></ul></li>
|
||||
<li><a href="http://github.com/cakephp/"><?php echo __d('cake_dev', 'CakePHP Code'); ?> </a>
|
||||
<ul><li><?php echo __d('cake_dev', 'For the Development of CakePHP Git repository, Downloads'); ?></li></ul></li>
|
||||
<li><a href="http://cakephp.lighthouseapp.com/"><?php echo __d('cake_dev', 'CakePHP Lighthouse'); ?> </a>
|
||||
<ul><li><?php echo __d('cake_dev', 'CakePHP Tickets, Wiki pages, Roadmap'); ?></li></ul></li>
|
||||
</ul>
|
|
@ -598,7 +598,8 @@ input[type=submit]:active,
|
|||
pre {
|
||||
color: #000;
|
||||
background: #f0f0f0;
|
||||
padding: 15px;
|
||||
padding: 10px;
|
||||
margin-bottom: 10px;
|
||||
-moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
|
||||
-webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
|
||||
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
|
||||
|
|
|
@ -574,7 +574,8 @@ input[type=submit]:active,
|
|||
pre {
|
||||
color: #000;
|
||||
background: #f0f0f0;
|
||||
padding: 15px;
|
||||
padding: 10px;
|
||||
margin-bottom: 10px;
|
||||
-moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
|
||||
-webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
|
||||
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
|
||||
|
|
Loading…
Reference in New Issue