server.yaml#
The server.yaml
file is used to configure various aspects of the MXCuBE’s back-end server.
The configuration file contains the following sections:
See below an example server.yaml file.
server#
The server
section primarily deals with the configuration of the network aspects of the back-end server.
It allows customizing the behavior of the Flask framework, its plugins and other components.
The section has the following syntax:
server:
DEBUG: <boolean>
SECRET_KEY: <secret key>
SECURITY_PASSWORD_SALT: <password salt>
SECURITY_TRACKABLE: <boolean>
PERMANENT_SESSION_LIFETIME: <session lifetime>
USER_DB_PATH: <db_file_path>
CERT_KEY: <certificate key file path>
CERT_PEM: <certificate pem file path>
CERT: <ssl_mode>
ALLOWED_CORS_ORIGINS:
- <allowed URL>
- <allowed URL>
...
The server
section may contain keys as described below.
DEBUG
#
Whether Flask debug mode is enabled. This is the equivalent of Flask’s DEBUG configuration value.
Default value is False
.
SECRET_KEY
#
Flask’s security signing key, for example for signing session cookies. This is the equivalent of Flask’s SECRET_KEY configuration value.
PERMANENT_SESSION_LIFETIME
#
Session cookie’s lifetime. This is the equivalent of Flask’s PERMANENT_SESSION_LIFETIME configuration value.
SECURITY_PASSWORD_SALT
#
Password hashing salt. This is the equivalent of Flask-Security-Too’s SECURITY_PASSWORD_SALT configuration value.
SECURITY_TRACKABLE
#
Enables tracking of basic user login statistics. This is the equivalent of Flask-Security-Too’s SECURITY_TRACKABLE configuration value.
Default value is True
.
USER_DB_PATH
#
Full path to SQLite database file, used for storing users and sessions data.
Default value is /tmp/mxcube-user.db
.
ALLOWED_CORS_ORIGINS
#
List of origins that are allowed to connect to this server.
This list is passed via cors_allowed_origins
parameter to the SocketIO class constructor.
Note that if this list is too restrictive, the front-end will fail to create a SocketIO connection to the back-end.
CERT
#
Used to enable SSL and set the type of host certificate. The following values are supported:
NONE |
SSL disabled |
ADHOC |
SSL enabled, autogenerated certificate is used |
SIGNED |
SSL enabled, signed certificate is used |
Default value is NONE
.
CERT_PEM
#
Path of the certificate file to use for SSL connections.
CERT_KEY
#
Path of the private key file to use for SSL connections.
mxcube#
The mxcube
section allows you to customize miscellaneous aspects of the MXCuBE application.
It contains settings for the on-axis video stream, user account management, and experiment mode.
The section has the following syntax:
mxcube:
mode: <experiment mode>
USE_EXTERNAL_STREAMER: <boolean>
VIDEO_FORMAT: <format name>
VIDEO_STREAM_URL: <stream URL>
VIDEO_STREAM_PORT: <stream port>
usermanager:
class: <class name>
inhouse_is_staff: <boolean>
users:
- username: <user name>
role: <role name>
...
The mxcube
section may contain keys as described below.
mode
#
Set the experiment mode for the application. Different modes tailor the presented UI to be suitable for a specific type of MX experiments. The following values are supported:
mode |
experiment type |
---|---|
OSC |
standard oscillation data collection |
SSX-CHIP |
SSX fixed target experiments |
SSX-INJECTOR |
SSX injector experiments |
Default mode is OSC
.
USE_EXTERNAL_STREAMER
#
Use an external process to stream the sample view video. When enabled, MXCuBE will invoke an appropriate hook on the camera hardware object to start the streamer. It is assumed that the camera object supports the external streamer feature.
Default value is False
.
VIDEO_FORMAT
#
The format to use when streaming the sample view video.
The MPEG1
and MJPEG
formats are supported.
Note that your camera hardware object must support the specified format.
Default format is MPEG1
.
VIDEO_STREAM_URL
#
The URL that is used by the UI to fetch the sample view video. When set, it will override the default video stream URL. This configuration is primarily useful with external streams, that provide video stream from custom URLs.
VIDEO_STREAM_PORT
#
This configuration is used when USE_EXTERNAL_STREAMER
flag is enabled.
The specified value is passed on to the camera hardware object,
when invoking the start stream hook.
usermanager
#
This subsection allows configuring user management in the application.
class
specifies the class name of the user manager.
This allows using a custom implementation of the user manager if needed.
The default class name is UserManager
.
inhouse_is_staff
specifies if all in-house users should automatically acquire staff role.
Which users are considered in-house is managed by the session hardware object.
The default value is True
.
users
specifies users that should acquire additional roles.
The content of this key is a list of username and role specifications.
Currently, only the staff role can be specified.
server.yaml example#
Below is an example of a server configuration file server.yaml
, as used by the mockup beamline.
---
server:
SECRET_KEY: "ASECRETKEY"
SECURITY_PASSWORD_SALT: "ASALT"
PERMANENT_SESSION_LIFETIME: 60
DEBUG: false
ALLOWED_CORS_ORIGINS:
- "http://localhost:8081"
- "http://127.0.0.1:8081"
- "http://localhost:5173"
- "http://127.0.0.1:5173"
- "ws://localhost:8000"
- "ws://127.0.0.1:8000"
mxcube:
USE_EXTERNAL_STREAMER: true
VIDEO_FORMAT: MPEG1
VIDEO_STREAM_URL: "ws://localhost:8000/ws"
# At which port to stream from
VIDEO_STREAM_PORT: 8000
# Mode, SSX-CHIP, SSX-INJECTOR, OSC
mode: OSC
usermanager:
class: UserManager
inhouse_is_staff: true
users:
- username: opid291
role: staff