mirror of https://gitee.com/bigwinds/arangodb
Merge branch 'devel' of github.com:triAGENS/ArangoDB into devel
This commit is contained in:
commit
4dc635e59c
11
CHANGELOG
11
CHANGELOG
|
@ -1,6 +1,17 @@
|
|||
v1.5.0 (XXXX-XX-XX)
|
||||
-------------------
|
||||
|
||||
* added command-line option `--server.disable-authentication-unix-sockets`
|
||||
|
||||
with this option, authentication can be disabled for all requests coming
|
||||
in via UNIX domain sockets, enabling clients located on the same host as
|
||||
the ArangoDB server to connect without authentication.
|
||||
Other connections (e.g. TCP/IP) are not affected by this option.
|
||||
|
||||
The default value for this option is `false`.
|
||||
Note: this option is only supported on platforms that support Unix domain
|
||||
sockets.
|
||||
|
||||
* fail if invalid `strategy`, `order` or `itemOrder` attribute values
|
||||
are passed to the AQL TRAVERSAL function. Omitting these attributes
|
||||
is not considered an error, but specifying an invalid value for any
|
||||
|
|
|
@ -107,6 +107,10 @@ Command-Line Options for arangod {#CommandLineArangod}
|
|||
@anchor CommandLineArangoDisableAuthentication
|
||||
@copydetails triagens::arango::ArangoServer::_disableAuthentication
|
||||
|
||||
@CLEARPAGE
|
||||
@anchor CommandLineArangoDisableAuthenticationUnixSockets
|
||||
@copydetails triagens::arango::ArangoServer::_disableAuthenticationUnixSockets
|
||||
|
||||
@CLEARPAGE
|
||||
@anchor CommandLineArangoAuthenticateSystemOnly
|
||||
@copydetails triagens::arango::ArangoServer::_authenticateSystemOnly
|
||||
|
|
|
@ -18,6 +18,7 @@ TOC {#CommandLineTOC}
|
|||
- @ref CommandLineConsole "console"
|
||||
- @ref CommandLineArangoEndpoint "server.endpoint"
|
||||
- @ref CommandLineArangoDisableAuthentication "server.disable-authentication"
|
||||
- @ref CommandLineArangoDisableAuthenticationUnixSockets "server.disable-authentication-unix-sockets"
|
||||
- @ref CommandLineArangoAuthenticateSystemOnly "server.authenticate-system-only"
|
||||
- @ref CommandLineArangoKeepAliveTimeout "server.keep-alive-timeout"
|
||||
- @ref CommandLineArangoDefaultApiCompatibility "server.default-api-compatibility"
|
||||
|
|
|
@ -265,6 +265,7 @@ ArangoServer::ArangoServer (int argc, char** argv)
|
|||
_applicationV8(0),
|
||||
_authenticateSystemOnly(false),
|
||||
_disableAuthentication(false),
|
||||
_disableAuthenticationUnixSockets(false),
|
||||
_dispatcherThreads(8),
|
||||
_dispatcherQueueSize(8192),
|
||||
_databasePath(),
|
||||
|
@ -509,6 +510,9 @@ void ArangoServer::buildApplicationServer () {
|
|||
additional[ApplicationServer::OPTIONS_SERVER + ":help-admin"]
|
||||
("server.authenticate-system-only", &_authenticateSystemOnly, "use HTTP authentication only for requests to /_api and /_admin")
|
||||
("server.disable-authentication", &_disableAuthentication, "disable authentication for ALL client requests")
|
||||
#ifdef TRI_HAVE_LINUX_SOCKETS
|
||||
("server.disable-authentication-unix-sockets", &_disableAuthenticationUnixSockets, "disable authentication for requests via UNIX domain sockets")
|
||||
#endif
|
||||
("server.disable-replication-logger", &_disableReplicationLogger, "start with replication logger turned off")
|
||||
("server.disable-replication-applier", &_disableReplicationApplier, "start with replication applier turned off")
|
||||
;
|
||||
|
@ -1245,13 +1249,14 @@ void ArangoServer::openDatabases () {
|
|||
TRI_vocbase_defaults_t defaults;
|
||||
|
||||
// override with command-line options
|
||||
defaults.defaultMaximalSize = _defaultMaximalSize;
|
||||
defaults.removeOnDrop = _removeOnDrop;
|
||||
defaults.removeOnCompacted = _removeOnCompacted;
|
||||
defaults.defaultWaitForSync = _defaultWaitForSync;
|
||||
defaults.forceSyncProperties = _forceSyncProperties;
|
||||
defaults.requireAuthentication = ! _disableAuthentication;
|
||||
defaults.authenticateSystemOnly = _authenticateSystemOnly;
|
||||
defaults.defaultMaximalSize = _defaultMaximalSize;
|
||||
defaults.removeOnDrop = _removeOnDrop;
|
||||
defaults.removeOnCompacted = _removeOnCompacted;
|
||||
defaults.defaultWaitForSync = _defaultWaitForSync;
|
||||
defaults.forceSyncProperties = _forceSyncProperties;
|
||||
defaults.requireAuthentication = ! _disableAuthentication;
|
||||
defaults.requireAuthenticationUnixSockets = ! _disableAuthenticationUnixSockets;
|
||||
defaults.authenticateSystemOnly = _authenticateSystemOnly;
|
||||
|
||||
assert(_server != 0);
|
||||
|
||||
|
|
|
@ -262,6 +262,26 @@ namespace triagens {
|
|||
|
||||
bool _disableAuthentication;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief disable authentication for requests via UNIX domain sockets
|
||||
///
|
||||
/// @CMDOPT{\--server.disable-authentication-unix-sockets @CA{value}}
|
||||
///
|
||||
/// Setting @CA{value} to true will turn off authentication on the server side
|
||||
/// for requests coming in via UNIX domain sockets. With this flag enabled,
|
||||
/// clients located on the same host as the ArangoDB server can use UNIX domain
|
||||
/// sockets to connect to the server without authentication.
|
||||
/// Requests coming in by other means (e.g. TCP/IP) are not affected by this
|
||||
/// option.
|
||||
///
|
||||
/// The default value is @LIT{false}.
|
||||
///
|
||||
/// Note: this option is only available on platforms that support UNIX domain
|
||||
/// sockets.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
bool _disableAuthenticationUnixSockets;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief number of dispatcher threads for non-database worker
|
||||
///
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include "BasicsC/common.h"
|
||||
#include "BasicsC/logging.h"
|
||||
#include "BasicsC/tri-strings.h"
|
||||
#include "Rest/ConnectionInfo.h"
|
||||
#include "VocBase/auth.h"
|
||||
#include "VocBase/server.h"
|
||||
#include "VocBase/vocbase.h"
|
||||
|
@ -101,6 +102,18 @@ HttpResponse::HttpResponseCode VocbaseContext::authenticate () {
|
|||
return HttpResponse::OK;
|
||||
}
|
||||
|
||||
#ifdef TRI_HAVE_LINUX_SOCKETS
|
||||
// check if we need to run authentication for this type of
|
||||
// endpoint
|
||||
ConnectionInfo const& ci = _request->connectionInfo();
|
||||
|
||||
if (ci.endpointType == Endpoint::DOMAIN_UNIX &&
|
||||
! _vocbase->_settings.requireAuthenticationUnixSockets) {
|
||||
// no authentication required for unix socket domain connections
|
||||
return HttpResponse::OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (_vocbase->_settings.authenticateSystemOnly) {
|
||||
// authentication required, but only for /_api, /_admin etc.
|
||||
const char* path = _request->requestPath();
|
||||
|
|
|
@ -458,6 +458,11 @@ int main (int argc, char* argv[]) {
|
|||
TRIAGENS_REST_SHUTDOWN;
|
||||
TRI_GlobalExitFunction(res, NULL);
|
||||
|
||||
if (ArangoInstance != 0) {
|
||||
delete ArangoInstance;
|
||||
ArangoInstance = 0;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -7823,6 +7823,7 @@ static v8::Handle<v8::Value> JS_CreateDatabase (v8::Arguments const& argv) {
|
|||
v8::Local<v8::String> keyDefaultWaitForSync = v8::String::New("defaultWaitForSync");
|
||||
v8::Local<v8::String> keyForceSyncProperties = v8::String::New("forceSyncProperties");
|
||||
v8::Local<v8::String> keyRequireAuthentication = v8::String::New("requireAuthentication");
|
||||
v8::Local<v8::String> keyRequireAuthenticationUnixSockets = v8::String::New("requireAuthenticationUnixSockets");
|
||||
v8::Local<v8::String> keyAuthenticateSystemOnly = v8::String::New("authenticateSystemOnly");
|
||||
|
||||
// overwrite database defaults from argv[2]
|
||||
|
@ -7852,6 +7853,10 @@ static v8::Handle<v8::Value> JS_CreateDatabase (v8::Arguments const& argv) {
|
|||
if (options->Has(keyRequireAuthentication)) {
|
||||
defaults.requireAuthentication = options->Get(keyRequireAuthentication)->BooleanValue();
|
||||
}
|
||||
|
||||
if (options->Has(keyRequireAuthenticationUnixSockets)) {
|
||||
defaults.requireAuthenticationUnixSockets = options->Get(keyRequireAuthenticationUnixSockets)->BooleanValue();
|
||||
}
|
||||
|
||||
if (options->Has(keyAuthenticateSystemOnly)) {
|
||||
defaults.authenticateSystemOnly = options->Get(keyAuthenticateSystemOnly)->BooleanValue();
|
||||
|
|
|
@ -44,13 +44,14 @@
|
|||
|
||||
void TRI_ApplyVocBaseDefaults (TRI_vocbase_t* vocbase,
|
||||
TRI_vocbase_defaults_t const* defaults) {
|
||||
vocbase->_settings.defaultMaximalSize = defaults->defaultMaximalSize;
|
||||
vocbase->_settings.removeOnDrop = defaults->removeOnDrop;
|
||||
vocbase->_settings.removeOnCompacted = defaults->removeOnCompacted;
|
||||
vocbase->_settings.defaultWaitForSync = defaults->defaultWaitForSync;
|
||||
vocbase->_settings.forceSyncProperties = defaults->forceSyncProperties;
|
||||
vocbase->_settings.requireAuthentication = defaults->requireAuthentication;
|
||||
vocbase->_settings.authenticateSystemOnly = defaults->authenticateSystemOnly;
|
||||
vocbase->_settings.defaultMaximalSize = defaults->defaultMaximalSize;
|
||||
vocbase->_settings.removeOnDrop = defaults->removeOnDrop;
|
||||
vocbase->_settings.removeOnCompacted = defaults->removeOnCompacted;
|
||||
vocbase->_settings.defaultWaitForSync = defaults->defaultWaitForSync;
|
||||
vocbase->_settings.forceSyncProperties = defaults->forceSyncProperties;
|
||||
vocbase->_settings.requireAuthentication = defaults->requireAuthentication;
|
||||
vocbase->_settings.requireAuthenticationUnixSockets = defaults->requireAuthenticationUnixSockets;
|
||||
vocbase->_settings.authenticateSystemOnly = defaults->authenticateSystemOnly;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -72,6 +73,7 @@ TRI_json_t* TRI_JsonVocBaseDefaults (TRI_memory_zone_t* zone,
|
|||
TRI_Insert3ArrayJson(zone, json, "waitForSync", TRI_CreateBooleanJson(zone, defaults->defaultWaitForSync));
|
||||
TRI_Insert3ArrayJson(zone, json, "forceSyncProperties", TRI_CreateBooleanJson(zone, defaults->forceSyncProperties));
|
||||
TRI_Insert3ArrayJson(zone, json, "requireAuthentication", TRI_CreateBooleanJson(zone, defaults->requireAuthentication));
|
||||
TRI_Insert3ArrayJson(zone, json, "requireAuthenticationUnixSockets", TRI_CreateBooleanJson(zone, defaults->requireAuthenticationUnixSockets));
|
||||
TRI_Insert3ArrayJson(zone, json, "authenticateSystemOnly", TRI_CreateBooleanJson(zone, defaults->authenticateSystemOnly));
|
||||
TRI_Insert3ArrayJson(zone, json, "defaultMaximalSize", TRI_CreateNumberJson(zone, (double) defaults->defaultMaximalSize));
|
||||
|
||||
|
@ -120,6 +122,12 @@ void TRI_FromJsonVocBaseDefaults (TRI_vocbase_defaults_t* defaults,
|
|||
defaults->requireAuthentication = optionJson->_value._boolean;
|
||||
}
|
||||
|
||||
optionJson = TRI_LookupArrayJson(json, "requireAuthenticationUnixSockets");
|
||||
|
||||
if (TRI_IsBooleanJson(optionJson)) {
|
||||
defaults->requireAuthenticationUnixSockets = optionJson->_value._boolean;
|
||||
}
|
||||
|
||||
optionJson = TRI_LookupArrayJson(json, "authenticateSystemOnly");
|
||||
|
||||
if (TRI_IsBooleanJson(optionJson)) {
|
||||
|
|
|
@ -58,6 +58,7 @@ typedef struct TRI_vocbase_defaults_s {
|
|||
bool defaultWaitForSync;
|
||||
bool forceSyncProperties;
|
||||
bool requireAuthentication;
|
||||
bool requireAuthenticationUnixSockets;
|
||||
bool authenticateSystemOnly;
|
||||
}
|
||||
TRI_vocbase_defaults_t;
|
||||
|
|
|
@ -107,6 +107,12 @@ controller.put("/foxxes/:key", function (req, res) {
|
|||
controller.get("/foxxes/thumbnail/:app", function (req, res) {
|
||||
res.transformations = [ "base64decode" ];
|
||||
res.body = foxxes.thumbnail(req.params("app"));
|
||||
|
||||
// evil mimetype detection attempt...
|
||||
var start = require("internal").base64Decode(res.body.substr(0, 8));
|
||||
if (start.indexOf("PNG") !== -1) {
|
||||
res.contentType = "image/png";
|
||||
}
|
||||
}).pathParam("app", {
|
||||
description: "The appname which is used to identify the foxx in the list of available foxxes.",
|
||||
type: "string",
|
||||
|
|
|
@ -41,21 +41,24 @@ ul.headerButtonList > li {
|
|||
a.headerButton {
|
||||
float: left;
|
||||
cursor: pointer;
|
||||
margin-top: 0px;
|
||||
margin-top: 2px;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
min-height: 19px;
|
||||
margin-right: 3px;
|
||||
min-height: 15px;
|
||||
border-radius: 3px;
|
||||
position: relative;
|
||||
box-shadow: none;
|
||||
background: #8AA051 !important;
|
||||
/*
|
||||
background: #8f8d8c !important;
|
||||
*/
|
||||
color:#FFFFFF !important;
|
||||
height:20px;
|
||||
width:13px;
|
||||
padding: 5px 11px 2px 9px;
|
||||
background: #ddd;
|
||||
color: #555;
|
||||
height: 17px;
|
||||
width: 9px;
|
||||
padding: 4px 9px 2px 9px;
|
||||
border: 1px solid #222;
|
||||
}
|
||||
|
||||
a.headerButton:hover {
|
||||
background: #fff;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
a.paginationButton, ul.arangoPagination a {
|
||||
|
@ -64,11 +67,16 @@ a.paginationButton, ul.arangoPagination a {
|
|||
|
||||
/* better look of some icons */
|
||||
a.headerButton .icon_arangodb_filter {
|
||||
top: 1px !important;
|
||||
top: 3px !important;
|
||||
}
|
||||
|
||||
a.headerButton .icon_arangodb_import {
|
||||
top: -1px !important;
|
||||
top: 1px !important;
|
||||
}
|
||||
|
||||
a.headerButton .icon_arangodb_checklist {
|
||||
top: 3px !important;
|
||||
right: 5px;
|
||||
}
|
||||
|
||||
a.headerButton .icon_arangodb_arrowleft,
|
||||
|
|
|
@ -16,7 +16,8 @@
|
|||
|
||||
.span3 h5 {
|
||||
font-family: 'Open Sans', sans-serif !important;
|
||||
font-weight: 500;
|
||||
font-weight: 300;
|
||||
font-size: 12px;
|
||||
white-space: nowrap !important;
|
||||
overflow: hidden !important;
|
||||
text-overflow: ellipsis !important;
|
||||
|
@ -42,29 +43,27 @@
|
|||
|
||||
.span3 .ICON {
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
margin-top: 5px;
|
||||
margin-right: 5px;
|
||||
opacity: 0.5;
|
||||
cursor: pointer;
|
||||
font-size: 25px;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.span3 .ICON:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
||||
.span3 .glyphicon-edit {
|
||||
margin-top: 4px !important;
|
||||
font-size: 19.5px;
|
||||
}
|
||||
|
||||
.span3 .ICON{
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
.span3 .spanInfo {
|
||||
right: 25px;
|
||||
}
|
||||
|
||||
.span3 .ICON:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
||||
.spanDisabled {
|
||||
right: 25px !important;
|
||||
opacity: 0.2 !important;
|
||||
|
@ -81,4 +80,5 @@
|
|||
|
||||
.badge, .label, .btn {
|
||||
text-shadow: none !important;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#newCollection {
|
||||
position: relative;
|
||||
margin-left: 22px;
|
||||
font-size: 28px;
|
||||
font-size: 22px;
|
||||
margin-top: -5px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
@ -35,7 +35,8 @@
|
|||
}
|
||||
|
||||
.thumbnails li {
|
||||
background-color: #f4f3f3;
|
||||
background-color: rgba(0, 0, 0, 0.05);
|
||||
/* #f4f3f3; */
|
||||
}
|
||||
|
||||
.thumbnails a.add {
|
||||
|
@ -48,7 +49,7 @@
|
|||
.thumbnails .icon {
|
||||
padding-right:5px;
|
||||
padding-left: 5px;
|
||||
padding-top: 5px;
|
||||
padding-top: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
|
|
@ -115,11 +115,11 @@
|
|||
}
|
||||
|
||||
.nv-axislabel {
|
||||
margin-left: 20px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.nv-axisMaxMin > text {
|
||||
font: 10px sans-serif;
|
||||
/* font: 10px 'Open Sans', sans-serif; */
|
||||
}
|
||||
|
||||
.svgCollections {
|
||||
|
@ -128,7 +128,7 @@
|
|||
}
|
||||
|
||||
.svgClass {
|
||||
height: 155px;
|
||||
height: 142px;
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
|
@ -166,7 +166,7 @@ li:hover h6, li.hover h6 {
|
|||
}
|
||||
|
||||
.boxHeader h6 {
|
||||
opacity: 0.8;
|
||||
/* opacity: 0.8; */
|
||||
padding-top: 0 !important;
|
||||
color: black;
|
||||
margin-left: 5px;
|
||||
|
@ -207,7 +207,7 @@ li:hover h6, li.hover h6 {
|
|||
}
|
||||
|
||||
.nv-x .nv-axislabel {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.nv-point {
|
||||
|
@ -525,6 +525,12 @@ li:hover h6, li.hover h6 {
|
|||
font-weight: 400;
|
||||
}
|
||||
|
||||
#dbThumbnailsIn .dashboardH6 {
|
||||
opacity: 1.0 !important;
|
||||
font-size: 12px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
.svgClass{margin-top: 10px !important;}
|
||||
.statSingleClient{margin-top: 10.5px !important;}
|
||||
|
@ -532,8 +538,10 @@ li:hover h6, li.hover h6 {
|
|||
}
|
||||
|
||||
.nvd3 .nv-axis .nv-axisMaxMin text {
|
||||
/*
|
||||
font-weight: 400;
|
||||
font-size: 12px !important;
|
||||
*/
|
||||
}
|
||||
|
||||
.nvd3 .nv-wrap .nv-axis:last-child {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Sets the default values shared for content views*/
|
||||
#content {
|
||||
background-color: rgba(0, 0, 0, 0.15);
|
||||
background-color: rgba(0, 0, 0, 0.0675);
|
||||
margin-top: 25px;
|
||||
margin-bottom: 33px;
|
||||
min-height: 80px;
|
||||
|
|
|
@ -4,7 +4,7 @@ div.headerBar {
|
|||
margin-top: 5px;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
margin-bottom: 0px;
|
||||
margin-bottom: 5px;
|
||||
background-color: #686766;
|
||||
color: #FFFFFF;
|
||||
height: 36px;
|
||||
|
|
|
@ -259,9 +259,9 @@ button {
|
|||
}
|
||||
|
||||
li a [class^="icon_arangodb"], li a [class*=" icon_arangodb"] {
|
||||
font-size: 22px;
|
||||
font-size: 18px;
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
right: 4px;
|
||||
top: 2px;
|
||||
}
|
||||
|
||||
|
|
|
@ -93,11 +93,15 @@ svg {
|
|||
|
||||
|
||||
svg text {
|
||||
font: normal 12px Arial;
|
||||
font-weight: 300;
|
||||
font-size: 10px;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
}
|
||||
|
||||
svg .title {
|
||||
font: bold 14px Arial;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
}
|
||||
|
||||
.nvd3 .nv-background {
|
||||
|
@ -170,7 +174,6 @@ svg .title {
|
|||
}
|
||||
|
||||
.nvd3 .nv-axis .nv-axisMaxMin text {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.nvd3 .x .nv-axis .nv-axisMaxMin text,
|
||||
|
@ -179,8 +182,6 @@ svg .title {
|
|||
text-anchor: middle
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**********
|
||||
* Brush
|
||||
*/
|
||||
|
@ -278,7 +279,7 @@ svg .title {
|
|||
}
|
||||
|
||||
.nvd3.nv-pie .hover path {
|
||||
fill-opacity: .7;
|
||||
fill-opacity: .8;
|
||||
/*
|
||||
stroke-width: 6px;
|
||||
stroke-opacity: 1;
|
||||
|
@ -296,7 +297,7 @@ svg .title {
|
|||
|
||||
.nvd3 .nv-groups path.nv-line {
|
||||
fill: none;
|
||||
stroke-width: 2.5px;
|
||||
stroke-width: 1.25px;
|
||||
/*
|
||||
stroke-linecap: round;
|
||||
shape-rendering: geometricPrecision;
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
// cannot use strict here as we are going to delete globals
|
||||
|
||||
var exports = require("internal");
|
||||
var fs = require("fs");
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// --SECTION-- Module "internal"
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
</div>
|
||||
|
||||
<div class="plain">
|
||||
<img src="<%= attributes.picture %>" height="60" width="60" alt="" class="icon">
|
||||
<img src="<%= attributes.picture %>" height="50" width="50" alt="" class="icon">
|
||||
<span class="badge badge-success <%= attributes.status %>"><div class="cornered"><%= attributes.status %></div></span>
|
||||
|
||||
<h5 class="collectionName">
|
||||
|
|
|
@ -505,32 +505,38 @@
|
|||
|
||||
if (self.detailGraph === identifier) {
|
||||
d3.select("#detailGraphChart svg")
|
||||
.call(chart)
|
||||
.datum([{
|
||||
values: self.seriesData[identifier].values,
|
||||
key: identifier,
|
||||
color: "#8AA051"
|
||||
}])
|
||||
.transition().duration(500);
|
||||
.call(chart)
|
||||
.datum([{
|
||||
values: self.seriesData[identifier].values,
|
||||
key: identifier,
|
||||
color: "#8aa14c"
|
||||
}])
|
||||
.attr("stroke-width", "0.5")
|
||||
.transition().duration(500);
|
||||
}
|
||||
|
||||
|
||||
//disable ticks/label for small charts
|
||||
d3.select("#" + identifier + "Chart svg")
|
||||
.call(chart)
|
||||
.datum([ {
|
||||
values: self.seriesData[identifier].values,
|
||||
key: identifier,
|
||||
color: "#8AA051" }
|
||||
color: "#8aa14c" }
|
||||
])
|
||||
.transition().duration(500);
|
||||
.attr("stroke-width", "0.5")
|
||||
.transition().duration(500);
|
||||
|
||||
// Claudius: hide y-axis labels for small charts
|
||||
$('#' + identifier + ' .nv-y.nv-axis text').attr('display', 'none');
|
||||
});
|
||||
|
||||
this.loadGraphState();
|
||||
|
||||
// #8AA051
|
||||
//fix position for last x-value label in detailgraph
|
||||
$('.nv-x.nv-axis .nvd3.nv-wrap.nv-axis:last-child text').attr('x','-5');
|
||||
//fix position of small graphs
|
||||
$('.svgClass .nv-lineChart').attr('transform','translate(5,5)');
|
||||
|
||||
},
|
||||
|
||||
calculateSeries: function (flush) {
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
// cannot use strict here as we are going to delete globals
|
||||
|
||||
var exports = require("internal");
|
||||
var fs = require("fs");
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// --SECTION-- Module "internal"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*jslint indent: 2, nomen: true, maxlen: 120 */
|
||||
/*jslint indent: 2, nomen: true, maxlen: 120, vars: true */
|
||||
/*global module, require, exports */
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -209,11 +209,15 @@ BaseMiddleware = function () {
|
|||
|
||||
if (trace) {
|
||||
if (response.hasOwnProperty("body")) {
|
||||
var bodyLength = 0;
|
||||
if (response.body !== undefined) {
|
||||
bodyLength = parseInt(response.body.length, 10);
|
||||
}
|
||||
console.log("%s, outgoing response with status %s of type %s, body length: %d",
|
||||
options.mount,
|
||||
response.responseCode,
|
||||
response.contentType,
|
||||
parseInt(response.body.length, 10));
|
||||
bodyLength);
|
||||
} else if (response.hasOwnProperty("bodyFromFile")) {
|
||||
console.log("%s, outgoing response with status %s of type %s, body file: %s",
|
||||
options.mount,
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "Basics/Common.h"
|
||||
|
||||
#include "Basics/StringUtils.h"
|
||||
#include "Rest/Endpoint.h"
|
||||
|
||||
namespace triagens {
|
||||
namespace rest {
|
||||
|
@ -48,6 +49,7 @@ namespace triagens {
|
|||
serverAddress(),
|
||||
clientAddress(),
|
||||
endpoint(),
|
||||
endpointType(Endpoint::DOMAIN_UNKNOWN),
|
||||
sslContext(0) {
|
||||
}
|
||||
|
||||
|
@ -57,6 +59,7 @@ namespace triagens {
|
|||
serverAddress(that.serverAddress),
|
||||
clientAddress(that.clientAddress),
|
||||
endpoint(that.endpoint),
|
||||
endpointType(that.endpointType),
|
||||
sslContext(that.sslContext) {
|
||||
}
|
||||
|
||||
|
@ -67,6 +70,7 @@ namespace triagens {
|
|||
serverAddress = that.serverAddress;
|
||||
clientAddress = that.clientAddress;
|
||||
endpoint = that.endpoint;
|
||||
endpointType = that.endpointType;
|
||||
sslContext = that.sslContext;
|
||||
}
|
||||
|
||||
|
@ -81,6 +85,7 @@ namespace triagens {
|
|||
string serverAddress;
|
||||
string clientAddress;
|
||||
string endpoint;
|
||||
Endpoint::DomainType endpointType;
|
||||
|
||||
void* sslContext;
|
||||
};
|
||||
|
|
|
@ -234,6 +234,7 @@ bool ListenTask::handleEvent (EventToken token, EventType revents) {
|
|||
info.serverAddress = _endpoint->getHost();
|
||||
info.serverPort = _endpoint->getPort();
|
||||
info.endpoint = _endpoint->getSpecification();
|
||||
info.endpointType = _endpoint->getDomainType();
|
||||
|
||||
return handleConnected(connectionSocket, info);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue