You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1463 lines
36 KiB
Groff

.\" Man page generated from reStructuredText.
.
.TH "FDSNWS" "1" "Jan 10, 2023" "5.3.0" "SeisComP"
.SH NAME
fdsnws \- SeisComP Documentation
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
\fBProvide FDSN Web Services.\fP
.SH DESCRIPTION
.sp
fdsnws is a server that provides event and station information by FDSN Web Services
(fdsn)
from a SeisComP database and waveforms from a global_recordstream source.
Also it may be configured to serve data
availability information as described in the IRIS DMC FDSNWS availability Web
Service Documentation (iris\-dmc).
.sp
\fBCAUTION:\fP
.INDENT 0.0
.INDENT 3.5
If you expose the FDSN Web Service as a public service, make sure that
the database connection is read\-only. fdsnws will never attempt to write
into the database.
.UNINDENT
.UNINDENT
.SH SERVICE OVERVIEW
.sp
The following services are available:
.TS
center;
|l|l|l|.
_
T{
Service
T} T{
Provides
T} T{
Provided format
T}
_
T{
\fI\%fdsnws\-dataselect\fP
T} T{
time series data
T} T{
\fI\%miniSEED\fP
T}
_
T{
\fI\%fdsnws\-station\fP
T} T{
network, station, channel, response metadata
T} T{
\fI\%FDSN Station XML\fP, \fI\%StationXML\fP, SCML
T}
_
T{
\fI\%fdsnws\-event\fP
T} T{
earthquake origin and magnitude estimates
T} T{
\fI\%QuakeML\fP, SCML
T}
_
T{
\fI\%ext\-availability\fP
T} T{
waveform data availability information
T} T{
text, geocsv, json, sync, request (\fI\%fdsnws\-dataselect\fP)
T}
_
.TE
.sp
The available services can be reached from the fdsnws start page. The services
also provide an interactive URL builder constructing the request URL based on
user inputs. The FDSN specifications can be found on fdsn\&.
.sp
\fBURL\fP
.INDENT 0.0
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws\fP
.UNINDENT
.sp
If \fBfdsnws\fP is started, it accepts connections by default on port 8080 which
can be changed in the configuration. Also please read \fI\%Changing the Service Port\fP for
running the services on a privileged port, e.g. port 80 as requested by the
FDSNWS specification.
.sp
\fBNOTE:\fP
.INDENT 0.0
.INDENT 3.5
If you decide to run the service on a different URL than \fBlocalhost:8080\fP
you have to change the URL string in the \fB*.wadl\fP documents located under
\fB$DATADIR/fdsnws\fP\&.
.UNINDENT
.UNINDENT
.SS DataSelect
.INDENT 0.0
.IP \(bu 2
Provides time series data in miniSEED format
.IP \(bu 2
Request type: HTTP\-GET, HTTP\-POST
.UNINDENT
.SS URL
.INDENT 0.0
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/dataselect/1/builder\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/dataselect/1/query\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/dataselect/1/queryauth\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/dataselect/1/version\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/dataselect/1/application.wadl\fP
.UNINDENT
.SS Example
.INDENT 0.0
.IP \(bu 2
Request URL for querying waveform data from the GE station BKNI, all BH channels
on 11 April 2013 between 00:00:00 and 12:00:00:
.sp
\fBhttp://localhost:8080/fdsnws/dataselect/1/query?net=GE&sta=BKNI&cha=BH?&start=2013\-04\-11T00:00:00&end=2013\-04\-11T12:00:00\fP
.UNINDENT
.sp
To submit HTTP\-POST requests the command line tool \fBcurl\fP may be used:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
sysop@host:~$ curl \-X POST \-\-data\-binary @request.txt "http://localhost:8080/fdsnws/dataselect/1/query"
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
where \fIrequest.txt\fP contains the POST message body. For details read the
FDSN specifications.
.SS Feature Notes
.INDENT 0.0
.IP \(bu 2
\fBquality\fP parameter not implemented (information not available in SeisComP)
.IP \(bu 2
\fBminimumlength\fP parameter is not implemented
.IP \(bu 2
\fBlongestonly\fP parameter is not implemented
.IP \(bu 2
Access to restricted networks and stations is only granted through the
\fBqueryauth\fP method
.IP \(bu 2
The data channels exposed by this service may be restricted by defining an
inventory filter, see section \fI\%Filtering Inventories\fP\&.
.IP \(bu 2
\fBNo\fP trimming of miniSEED records to requested time window \-\- This FDSNWS
implementation returns the records as available in its data source, e.g., SDS
archive. It is guaranteed that the requested time range is within the returned
data (if available in the archive) but not that it is exactly the requested
time range. FDSNWS does not trim and therefore re\-encode miniSEED records. The
rationale for that is that miniSEED records are probably further distributed
and stored in other archives and we do not see the point in modifying them.
Furthermore we do not want to increase the load on the web server with that
extra processing step.
.UNINDENT
.SS Service Configuration
.INDENT 0.0
.IP \(bu 2
Activate \fI\%serveDataSelect\fP in the module configuration
.IP \(bu 2
Configure the global_recordstream in the module\(aqs global configuration.
If the data is stored in a local waveform archive the
rs\-sdsarchive provides fast access to the data. For archives on remote hosts
use rs\-arclink or rs\-fdsnws instead.
.UNINDENT
.sp
\fBWARNING:\fP
.INDENT 0.0
.INDENT 3.5
Requesting future or delayed data may block the \fI\%DataSelect\fP service.
Therefore, real\-time global_recordstream requests such as rs\-slink
should be avoided.
If rs\-slink is inevitable make use of the \fBtimeout\fP and
\fBretries\fP parameters. E.g. set the \fBrecordstream\fP to
\fBslink://localhost:18000?timeout=1&retries=0\fP or in case of the rs\-combined
service to
\fBcombined://slink/localhost:18000?timeout=1&retries=0;sdsarchive//home/sysop/seiscomp/var/lib/archive\fP\&.
.UNINDENT
.UNINDENT
.SS Station
.INDENT 0.0
.IP \(bu 2
Provides network, station, channel, response metadata
.IP \(bu 2
Request type: HTTP\-GET, HTTP\-POST
.IP \(bu 2
Stations may be filtered e.g. by geographic region and time, also the
information depth level is selectable
.IP \(bu 2
Optionally handles time\-based conditional HTTP\-GET requests as specified by
\fI\%RFC 7232\fP\&.
.UNINDENT
.SS URL
.INDENT 0.0
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/station/1/builder\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/station/1/query\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/station/1/version\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/station/1/application.wadl\fP
.UNINDENT
.SS Example
.INDENT 0.0
.IP \(bu 2
Request URL for querying the information for the GE network on response level:
.sp
\fI\%http://localhost:8080/fdsnws/station/1/query?net=GE&cha=BH%3F&level=response&nodata=404\fP
.UNINDENT
.SS Feature Notes
.INDENT 0.0
.IP \(bu 2
To enable FDSNXML or StationXML support load the plugin \fBfdsnxml\fP\&. The
plugin is loaded by default configuration.
.IP \(bu 2
\fBupdatedafter\fP request parameter not implemented: The last modification time
in \fISeisComP\fP is tracked on the object level. If a child of an object is updated
the update time is not propagated to all parents. In order to check if a
station was updated all children must be evaluated recursively. This operation
would be much too expensive.
.IP \(bu 2
\fBformatted\fP: boolean, default: \fBfalse\fP
.IP \(bu 2
Additional values of request parameters:
.INDENT 2.0
.IP \(bu 2
format:
.INDENT 2.0
.IP \(bu 2
standard: \fB[xml, text]\fP
.IP \(bu 2
additional: \fB[fdsnxml (=xml), stationxml, sc3ml]\fP
.IP \(bu 2
default: \fBxml\fP
.UNINDENT
.UNINDENT
.UNINDENT
.sp
The inventory exposed by this service may be restricted, see section
\fI\%Filtering Inventories\fP\&.
.SS Event
.INDENT 0.0
.IP \(bu 2
Provides earthquake origin and magnitude estimates
.IP \(bu 2
Request type: HTTP\-GET
.IP \(bu 2
Events may be filtered e.g. by hypocenter, time and magnitude
.UNINDENT
.SS URL
.INDENT 0.0
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/event/1/builder\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/event/1/query\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/event/1/catalogs\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/event/1/contributors\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/event/1/version\fP
.IP \(bu 2
\fI\%http://localhost:8080/fdsnws/event/1/application.wadl\fP
.UNINDENT
.SS Example
.INDENT 0.0
.IP \(bu 2
Request URL for fetching the event parameters within 10 degrees around 50°N/11°E
starting on 18 April 2013:
.sp
\fI\%http://localhost:8080/fdsnws/event/1/query?start=2018\-06\-01&lat=50&lon=11&maxradius=10&nodata=404\fP
.UNINDENT
.SS Feature Notes
.INDENT 0.0
.IP \(bu 2
\fISeisComP\fP does not distinguish between catalogs and contributors, but
supports agencyIDs. Hence, if specified, the value of the \fBcontributor\fP
parameter is mapped to the agencyID. The file
\fB@DATADIR@/share/fdsn/contributors.xml\fP has to be filled manually with all
available agency ids
.IP \(bu 2
Origin and magnitude filter parameters are always applied to preferred origin
resp. preferred magnitude
.IP \(bu 2
\fBupdatedafter\fP request parameter not implemented: The last modification time
in \fISeisComP\fP is tracked on the object level. If a child of an object is updated
the update time is not propagated to all parents. In order to check if a
station was updated all children must be evaluated recursively. This operation
would be much too expensive.
.IP \(bu 2
Additional request parameters:
.INDENT 2.0
.IP \(bu 2
\fBincludepicks\fP: boolean, default: \fBfalse\fP, works only in combination
with \fBincludearrivals\fP set to \fBtrue\fP
.IP \(bu 2
\fBincludecomments\fP: boolean, default: \fBtrue\fP
.IP \(bu 2
\fBformatted\fP: boolean, default: \fBfalse\fP
.UNINDENT
.IP \(bu 2
Additional values of request parameters:
.INDENT 2.0
.IP \(bu 2
format:
.INDENT 2.0
.IP \(bu 2
standard: \fB[xml, text]\fP
.IP \(bu 2
additional: \fB[qml (=xml), qml\-rt, sc3ml, csv]\fP
.IP \(bu 2
default: \fBxml\fP
.UNINDENT
.UNINDENT
.UNINDENT
.SS Data Availability
.sp
The data availability web service returns detailed time span information of
what time series data is available at the DMC archive. The availability information
can be created by scardac in the \fISeisComP\fP database from where it is
fetched by fdsnws.
.sp
The availability service is no official standard yet. This implementation aims
to be compatible with the IRIS DMC availability FDSN Web Service
(iris\-dmc) implementation.
.INDENT 0.0
.IP \(bu 2
request type: HTTP\-GET, HTTP\-POST
.IP \(bu 2
results may be filtered e.g. by channel code, time and quality
.UNINDENT
.SS URL
.INDENT 0.0
.IP \(bu 2
\fI\%http://localhost:8080/ext/availability/1/extent\fP \- Produces list of available
time extents (earliest to latest) for selected channels (network, station,
location and quality) and time ranges.
.IP \(bu 2
\fI\%http://localhost:8080/ext/availability/1/builder\-extent\fP \- URL builder helping
you to form your data extent requests
.IP \(bu 2
\fI\%http://localhost:8080/ext/availability/1/query\fP \- Produces list of contiguous
time spans for selected channels (network, station, location, channel and
quality) and time ranges.
.IP \(bu 2
\fI\%http://localhost:8080/ext/availability/1/builder\fP \- URL builder helping you to
form your data time span requests
.IP \(bu 2
\fI\%http://localhost:8080/ext/availability/1/version\fP
.UNINDENT
.SS Examples
.INDENT 0.0
.IP \(bu 2
Request URL for data extents of seismic network \fBIU\fP:
.sp
\fI\%http://localhost:8080/fdsnws/ext/availability/1/extent?net=IU\fP
.IP \(bu 2
Further limit the extents to those providing data for August 1st 2018:
.sp
\fI\%http://localhost:8080/fdsnws/ext/availability/1/extent?net=IU&start=2018\-08\-01\fP
.IP \(bu 2
Request URL for continues time spans of station \fBANMO\fP in July 2018:
.sp
\fI\%http://localhost:8080/fdsnws/ext/availability/1/query?sta=ANMO&start=2018\-07\-01&end=2018\-08\-01\fP
.UNINDENT
.sp
\fBNOTE:\fP
.INDENT 0.0
.INDENT 3.5
Use scardac for creating the availability information.
.UNINDENT
.UNINDENT
.SS Feature Notes
.INDENT 0.0
.IP \(bu 2
The IRISWS availability implementation truncates the time spans of the returned
data extents and segments to the requested start and end times (if any). This
implementation truncates the start and end time only for the formats: \fBsync\fP
and \fBrequest\fP\&. The \fBtext\fP, \fBgeocsv\fP and \fBjson\fP format will return the
exact time windows extracted from the waveform archive.
.sp
The reasons for this derivation are:
.INDENT 2.0
.IP \(bu 2
performance: With the \fB/extent\fP query the \fBtext\fP, \fBgeocsv\fP and
\fBjson\fP offer the display of the number of included time spans
(\fBshow=timespancount\fP). The data model offers no efficient way to
recalculate the number of time spans represented by an extent if the extents
time window is altered by the requested start and end times. The \fBsync\fP
and \fBrequest\fP formats do not provided this counter and it is convenient to
use their outputs for subsequent data requests.
.IP \(bu 2
by truncating the time windows information is lost. There would be no
efficient way for a client to retrieve the exact time windows falling into a
specific time span.
.IP \(bu 2
network and station epochs returned by the \fI\%Station\fP service are also
not truncated to the requested start and end times.
.IP \(bu 2
truncation can easily be done on client side. No additional network traffic is
generated.
.UNINDENT
.UNINDENT
.SH FILTERING INVENTORIES
.sp
The channels served by the \fI\%Station\fP and \fI\%DataSelect\fP services
may be filtered by specified an INI file in the \fBstationFilter\fP and
\fBdataSelectFilter\fP configuration parameter. You may use the same file for both
services or define a separate configuration set. \fBNote:\fP If distinct file
names are specified and both services are activated, the inventory is loaded
twice which will increase the memory consumption of this module.
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
[Chile]
code = CX.*.*.*
[!Exclude station APE]
code = GE.APE.*.*
[German (not restricted)]
code = GE.*.*.*
restricted = false
shared = true
archive = GFZ
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
The listing above shows a configuration example which includes all Chile
stations. Also all not restricted German stations, with exception of the station
GE.APE, are included.
.sp
The configuration is divided into several rules. The rule name is given in
square brackets. A name starting with an exclamation mark defines an exclude
rule, else the rule is an include. The rule name is not evaluated by the
application but is plotted when debugging the rule set, see configuration
parameter \fBdebugFilter\fP\&.
.sp
Each rule consists of a set of attributes. The first and mandatory attribute is
\fBcode\fP which defines a regular expression for the channel code (network,
station, location, channel). In addition the following optional attributes
exist:
.TS
center;
|l|l|l|l|l|l|.
_
T{
Attribute
T} T{
Type
T} T{
Network
T} T{
Station
T} T{
Location
T} T{
Channel
T}
_
T{
\fBrestricted\fP
T} T{
Boolean
T} T{
X
T} T{
X
T} T{
T} T{
X
T}
_
T{
\fBshared\fP
T} T{
Boolean
T} T{
X
T} T{
X
T} T{
T} T{
X
T}
_
T{
\fBnetClass\fP
T} T{
String
T} T{
X
T} T{
T} T{
T} T{
T}
_
T{
\fBarchive\fP
T} T{
String
T} T{
X
T} T{
X
T} T{
T} T{
T}
_
.TE
.sp
A rule matches if all of its attributes match. The optional attributes are
evaluated bottom\-up where ever they are applicable. E.g. if a rule defines
\fBrestricted = false\fP but the restricted flag is not present on channel level
then it is searched on station and then on network level. If no \fBrestricted\fP
attribute is found in the hierarchy, the rule will not match even if the value
was set to \fBfalse\fP\&.
.sp
The individual rules are evaluated in order of their definition. The processing
stops once a matching rule is found and the channel is included or excluded
immediately. So the order of the rules is important.
.sp
One may decided to specify a pure whitelist, a pure blacklist, or to mix include
and exclude rules. If neither a matching include nor exclude rule is found, then
channel is only added if no other include rule exists in the entire rule set.
.SH CHANGING THE SERVICE PORT
.sp
The FDSN Web service specification defines that the Service SHOULD be available
under port 80. Typically \fISeisComP\fP runs under a user without root permissions
and therefore is not allowed to bind to privileged ports (<1024).
To serve on port 80 you may for instance
.INDENT 0.0
.IP \(bu 2
Run \fISeisComP\fP with root privileged (not recommended)
.IP \(bu 2
Use a proxy Webserver, e.g. Apache with
\fI\%mod\-proxy\fP module
.IP \(bu 2
Configure and use \fI\%Authbind\fP
.IP \(bu 2
Setup \fI\%Firewall\fP redirect rules
.UNINDENT
.SH AUTHBIND
.sp
\fBauthbind\fP allows a program which does not or should not run as root to bind
to low\-numbered ports in a controlled way. Please refer to \fBman authbind\fP for
program descriptions. The following lines show how to install and setup authbind
for the user \fBsysop\fP under the Ubuntu OS.
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
sysop@host:~$ sudo apt\-get install authbind
sysop@host:~$ sudo touch /etc/authbind/byport/80
sysop@host:~$ sudo chown sysop /etc/authbind/byport/80
sysop@host:~$ sudo chmod 500 /etc/authbind/byport/80
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Once \fBauthbind\fP is configured correctly the FDSN Web services may be started
as follows:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
sysop@host:~$ authbind \-\-deep seiscomp exec fdsnws
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
In order use \fBauthbind\fP when starting \fBfdsnws\fP as \fISeisComP\fP service the last
line in the \fB~/seiscomp/etc/init/fdsnws.py\fP have to be commented in.
.SH FIREWALL
.sp
All major Linux distributions ship with their own firewall implementations which
are front\-ends for the \fBiptables\fP kernel functions. The following line
temporary adds a firewall rule which redirects all incoming traffic on port 8080
to port 80.
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
sysop@host:~$ sudo iptables \-t nat \-A PREROUTING \-p tcp \-\-dport 80 \-j REDIRECT \-\-to 8080
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Please refer to the documentation of your particular firewall solution on how to
set up this rule permanently.
.SH AUTHENTICATION EXTENSION
.sp
The FDSNWS standard requires HTTP digest authentication as the
authentication mechanism. The "htpasswd" configuration option is used to
define the location of the file storing usernames and passwords of users
who are allowed to get restricted data. Any user with valid credentials
would have access to all restricted data.
.sp
An extension to the FDSNWS protocol has been developed in order to use
email\-pattern\-based access control lists, which is an established
authorization mechanism in SeisComP3 (used by Arclink). It works as follows:
.INDENT 0.0
.IP \(bu 2
The user contacts an authentication service (based on eduGAIN AAI,
e\-mail, etc.) and receives a list of attributes (a token), signed by the
authentication service. The validity of the token is typically 30 days.
.IP \(bu 2
The user presents the token to /auth method (HTTPS) of the dataselect
service. This method is the only extension to standard FDSNWS that is
required.
.IP \(bu 2
If the digital signature is valid, a temporary account for /queryauth
is created. The /auth method returns username and password of this
account, separated by \(aq:\(aq. The account is typically valid for 24 hours.
.IP \(bu 2
The username and password are to be used with /queryauth as usual.
.IP \(bu 2
Authorization is based on user\(aqs e\-mail address in the token and
arclink\-access bindings.
.UNINDENT
.SS Configuration
.sp
The authentication extension is enabled by setting the "auth.enable"
configuration option to "true" and pointing "auth.gnupgHome" to a directory
where GPG stores its files. Let\(aqs use the directory
~/seiscomp/var/lib/gpg, which is the default.
.INDENT 0.0
.IP \(bu 2
First create the direcory and your own signing key:
.INDENT 2.0
.INDENT 3.5
.sp
.nf
.ft C
sysop@host:~$ mkdir \-m 700 ~/seiscomp/var/lib/gpg
sysop@host:~$ gpg \-\-homedir ~/seiscomp/var/lib/gpg \-\-gen\-key
.ft P
.fi
.UNINDENT
.UNINDENT
.IP \(bu 2
Now import GPG keys of all authentication services you trust:
.INDENT 2.0
.INDENT 3.5
.sp
.nf
.ft C
sysop@host:~$ gpg \-\-homedir ~/seiscomp/var/lib/gpg \-\-import <keys.asc
.ft P
.fi
.UNINDENT
.UNINDENT
.IP \(bu 2
Finally sign all imported keys with your own key (XXXXXXXX is the ID of
an imported key):
.INDENT 2.0
.INDENT 3.5
.sp
.nf
.ft C
sysop@host:~$ gpg \-\-homedir ~/seiscomp/var/lib/gpg \-\-edit\-key XXXXXXXX sign save
.ft P
.fi
.UNINDENT
.UNINDENT
.IP \(bu 2
\&...and set auth.enable, either using the "scconfig" tool or:
.INDENT 2.0
.INDENT 3.5
.sp
.nf
.ft C
sysop@host:~$ echo "auth.enable = true" >> ~/seiscomp/etc/fdsnws.cfg
.ft P
.fi
.UNINDENT
.UNINDENT
.UNINDENT
.SS Usage Example
.sp
A client like \fI\%fdsnws_fetch\fP is recommended, but also tools like wget and
curl can be used. As an example, let\(aqs request data from the restricted
station AAI (assuming that we are authorized to get data of this station).
.INDENT 0.0
.IP \(bu 2
The first step is to obtain the token from an authentication service.
Assuming that the token is saved in "token.asc", credentials of the
temporary account can be requested using one of the following commands:
.INDENT 2.0
.INDENT 3.5
.sp
.nf
.ft C
sysop@host:~$ wget \-\-post\-file token.asc https://geofon.gfz\-potsdam.de/fdsnws/dataselect/1/auth \-O cred.txt
sysop@host:~$ curl \-\-data\-binary @token.asc https://geofon.gfz\-potsdam.de/fdsnws/dataselect/1/auth \-o cred.txt
.ft P
.fi
.UNINDENT
.UNINDENT
.IP \(bu 2
The resulting file "cred.txt" contains username and password separated by
a colon, so one can conveniently use a shell expansion:
.INDENT 2.0
.INDENT 3.5
.sp
.nf
.ft C
sysop@host:~$ wget "http://\(gacat cred.txt\(ga@geofon.gfz\-potsdam.de/fdsnws/dataselect/1/queryauth?starttime=2015\-12\-15T16:00:00Z&endtime=2015\-12\-15T16:10:00Z&network=IA&station=AAI" \-O data.mseed
sysop@host:~$ curl \-\-digest "http://\(gacat cred.txt\(ga@geofon.gfz\-potsdam.de/fdsnws/dataselect/1/queryauth?starttime=2015\-12\-15T16:00:00Z&endtime=2015\-12\-15T16:10:00Z&network=IA&station=AAI" \-o data.mseed
.ft P
.fi
.UNINDENT
.UNINDENT
.IP \(bu 2
Using the \fI\%fdsnws_fetch\fP utility, the two steps above can be combined into
one:
.INDENT 2.0
.INDENT 3.5
.sp
.nf
.ft C
sysop@host:~$ fdsnws_fetch \-a token.asc \-s 2015\-12\-15T16:00:00Z \-e 2015\-12\-15T16:10:00Z \-N IA \-S AAI \-o data.mseed
.ft P
.fi
.UNINDENT
.UNINDENT
.UNINDENT
.SH LOGGING
.sp
In addition to normal \fISeisComP\fP logs, fdsnws can create a simple HTTP access log
and/or a detailed request log. The locations of log files are specified by
"accessLog" and "requestLog" in fdsnws.cfg.
.sp
Both logs are text\-based and line\-oriented. Each line of \fIaccess\fP log
contains the following fields, separated by \(aq|\(aq (some fields can be empty):
.INDENT 0.0
.IP \(bu 2
service name;
.IP \(bu 2
hostname of service;
.IP \(bu 2
access time;
.IP \(bu 2
hostname of user;
.IP \(bu 2
IP address of user (proxy);
.IP \(bu 2
length of data in bytes;
.IP \(bu 2
processing time in milliseconds;
.IP \(bu 2
error message;
.IP \(bu 2
agent string;
.IP \(bu 2
HTTP response code;
.IP \(bu 2
username (if authenticated);
.IP \(bu 2
network code of GET request;
.IP \(bu 2
station code of GET request;
.IP \(bu 2
location code of GET request;
.IP \(bu 2
channel code of GET request;
.UNINDENT
.sp
Each line of \fIrequest\fP log contains a JSON object, which has the following
attributes:
.INDENT 0.0
.TP
.B service
service name
.TP
.B userID
anonymized (numeric) user ID for statistic purposes
.TP
.B clientID
agent string
.TP
.B userEmail
e\-mail address of authenticated user if using restricted data
.TP
.B auth
True if user is authenticated (not anonymous)
.TP
.B userLocation
JSON object containing rough user location (eg., country) for statistic purposes
.TP
.B created
time of request creation
.TP
.B status
"OK", "NODATA", "ERROR" or "DENIED"
.TP
.B bytes
length of data in bytes
.TP
.B finished
time of request completion
.TP
.B trace
request content after wildcard expansion (array of JSON objects)
.UNINDENT
.sp
Each trace object has the following attributes:
.INDENT 0.0
.TP
.B net
network code
.TP
.B sta
station code
.TP
.B loc
location code
.TP
.B cha
channel code
.TP
.B start
start time
.TP
.B end
end time
.TP
.B restricted
True if the data requires authorization
.TP
.B status
"OK", "NODATA", "ERROR" or "DENIED"
.TP
.B bytes
length of trace in bytes
.UNINDENT
.sp
Both logs are rotated daily. In case of access log, one week of data is
kept. Request logs are compressed using bzip2 and not removed.
.sp
If trackdb.enable=true in fdsnws.cfg, then requests are additionally logged
into SeisComP database using the ArcLink request log schema. Be aware that the
number of requests in a production system can be rather large. For example,
the GEOFON datacentre is currently serving between 0.5..1 million FDSNWS
requests per day.
.SH RELATED MODULES
.sp
GEOFON maintains scripts for FDSNWS fdsnws_scripts:
.INDENT 0.0
.IP \(bu 2
The \fBfdsnws_fetch\fP client is a convenient tool for requesting
waveforms from a FDSN web service hosted by EIDA nodes.
.IP \(bu 2
The \fBfdsnws2sds\fP client is a tool for requesting waveforms
from a FDSN web service hosted by EIDA nodes and to store them into an
SDS archive.
.UNINDENT
.SH PUBLIC FDSN WEB SERVERS
.sp
IRIS maintains a list of data centers (fdsn\-datacenters)
supporting FDSN Web Services (fdsn).
.SH MODULE CONFIGURATION
.nf
\fBetc/defaults/global.cfg\fP
\fBetc/defaults/fdsnws.cfg\fP
\fBetc/global.cfg\fP
\fBetc/fdsnws.cfg\fP
\fB~/.seiscomp/global.cfg\fP
\fB~/.seiscomp/fdsnws.cfg\fP
.fi
.sp
.sp
fdsnws inherits global options\&.
.INDENT 0.0
.TP
.B listenAddress
Default: \fB0.0.0.0\fP
.sp
Type: \fIIP\fP
.sp
Define the bind address of the server. "0.0.0.0" allows
any interface to connect to this server whereas "127.0.0.0"
only allows connections from localhost.
.UNINDENT
.INDENT 0.0
.TP
.B port
Default: \fB8080\fP
.sp
Type: \fIint\fP
.sp
Server port to listen for incoming requests. Note: The FDSN Web
service specification defines the service port 80. Please refer
to the documentation on how to serve on privileged ports.
.UNINDENT
.INDENT 0.0
.TP
.B connections
Default: \fB5\fP
.sp
Type: \fIint\fP
.sp
Number of maximum simultaneous requests.
.UNINDENT
.INDENT 0.0
.TP
.B queryObjects
Default: \fB10000\fP
.sp
Type: \fIint\fP
.sp
Maximum number of objects per query, used in fdsnws\-station and
fdsnws\-event to limit main memory consumption.
.UNINDENT
.INDENT 0.0
.TP
.B realtimeGap
Type: \fIint\fP
.sp
Unit: \fIs\fP
.sp
Restrict end time of requests to current time \- realtimeGap
seconds. Negative values allowed. Used in fdsnws\-dataselect.
WARNING: If this value is unset and a realtime recordsource
(e.g. slink) is used, requests may block if end time in future
is requested.
.UNINDENT
.INDENT 0.0
.TP
.B samplesM
Type: \fIfloat\fP
.sp
Maximum number of samples (in units of million) per query, used
in fdsnws\-dataselect to prevent a single user to block one
connection with a large request.
.UNINDENT
.INDENT 0.0
.TP
.B recordBulkSize
Default: \fB102400\fP
.sp
Type: \fIint\fP
.sp
Unit: \fIbytes\fP
.sp
Set the number of bytes to buffer for each chunk of waveform data
served to the client. The lower the buffer the higher the overhead
of Python Twisted. The higher the buffer the higher the memory
usage per request. 100kB seems to be a good trade\-off.
.UNINDENT
.INDENT 0.0
.TP
.B htpasswd
Default: \fB@CONFIGDIR@/fdsnws.htpasswd\fP
.sp
Type: \fIstring\fP
.sp
Path to password file used in fdsnws\-dataselect/queryauth. The
format is \(aqusername:password\(aq separated by lines. Because of the
HTTP digest authentication method required by the FDSN
specification, the passwords have to be stored in plain text.
.UNINDENT
.INDENT 0.0
.TP
.B accessLog
Type: \fIstring\fP
.sp
Path to access log file. If unset no access log is created.
.UNINDENT
.INDENT 0.0
.TP
.B requestLog
Type: \fIstring\fP
.sp
Path to request log file. If unset no request log is created.
.UNINDENT
.INDENT 0.0
.TP
.B userSalt
Type: \fIstring\fP
.sp
Secret salt for calculating userID.
.UNINDENT
.INDENT 0.0
.TP
.B corsOrigins
Default: \fB*\fP
.sp
Type: \fIlist:string:\fP
.sp
List of domain names Cross\-Origin Resource Sharing (CORS)
request may originate from. A value of \(aq*\(aq allows any web page
to embed your service. An empty value will switch of CORS
requests entirely. An example of multiple domains might be:
\(aq\fI\%https://test.domain.de\fP, \fI\%https://production.domain.de\fP\(aq.
.UNINDENT
.INDENT 0.0
.TP
.B allowRestricted
Default: \fBtrue\fP
.sp
Type: \fIboolean\fP
.sp
Enable/disable access to restricted inventory data.
.UNINDENT
.INDENT 0.0
.TP
.B handleConditionalRequests
Default: \fBfalse\fP
.sp
Type: \fIboolean\fP
.sp
Enable/disable handling of time\-based conditional requests (RFC
7232) by the fdsnws\-station resource.
.UNINDENT
.INDENT 0.0
.TP
.B useArclinkAccess
Default: \fBfalse\fP
.sp
Type: \fIboolean\fP
.sp
If enabled, then access to restricted waveform data is
controlled by arclink\-access bindings. By default authenticated
users have access to all data.
.UNINDENT
.INDENT 0.0
.TP
.B hideAuthor
Default: \fBfalse\fP
.sp
Type: \fIboolean\fP
.sp
If enabled, author information is removed from any event
creationInfo element.
.UNINDENT
.INDENT 0.0
.TP
.B hideComments
Default: \fBfalse\fP
.sp
Type: \fIboolean\fP
.sp
If enabled, event comment elements are no longer accessible.
.UNINDENT
.INDENT 0.0
.TP
.B evaluationMode
Type: \fIstring\fP
.sp
If set, the event service will only return events having a
preferred origin with a matching evaluationMode property.
.UNINDENT
.INDENT 0.0
.TP
.B eventFormats
Type: \fIlist:string\fP
.sp
List of enabled event formats. If unspecified, all supported
formats are enabled.
.UNINDENT
.INDENT 0.0
.TP
.B serveDataSelect
Default: \fBtrue\fP
.sp
Type: \fIboolean\fP
.sp
Enable/disable the DataSelect service.
.UNINDENT
.INDENT 0.0
.TP
.B serveEvent
Default: \fBtrue\fP
.sp
Type: \fIboolean\fP
.sp
Enable/disable the Event service.
.UNINDENT
.INDENT 0.0
.TP
.B serveStation
Default: \fBtrue\fP
.sp
Type: \fIboolean\fP
.sp
Enable/disable the Station service.
.UNINDENT
.INDENT 0.0
.TP
.B serveAvailability
Default: \fBfalse\fP
.sp
Type: \fIboolean\fP
.sp
Enable/disable the Availability service. Note: This is a non
standard FDSNWS extension served under fdsnws/ext/availability.
.UNINDENT
.INDENT 0.0
.TP
.B stationFilter
Type: \fIstring\fP
.sp
Path to station inventory filter file.
.UNINDENT
.INDENT 0.0
.TP
.B dataSelectFilter
Type: \fIstring\fP
.sp
Path to dataselect inventory filter file.
.UNINDENT
.INDENT 0.0
.TP
.B debugFilter
Default: \fBfalse\fP
.sp
Type: \fIboolean\fP
.sp
If enabled, a debug line is written for each stream ID explaining
why a stream was added/removed by a inventory filter.
.UNINDENT
.INDENT 0.0
.TP
.B fileNamePrefix
Default: \fBfdsnws\fP
.sp
Type: \fIstring\fP
.sp
Define the prefix for the default filenames if downloading and
saving data from within a browser.
For data loaded using dataselect, it is thus fdsnws.mseed by default.
.UNINDENT
.INDENT 0.0
.TP
.B eventType.whitelist
Type: \fIlist:string\fP
.sp
List of enabled event types
.UNINDENT
.INDENT 0.0
.TP
.B eventType.blacklist
Type: \fIlist:string\fP
.sp
List of disabled event types
.UNINDENT
.sp
\fBNOTE:\fP
.INDENT 0.0
.INDENT 3.5
\fBdataAvailability.*\fP
\fIProvide access to waveform data availability information stored\fP
\fIin the SeisComP database. In case of a SDS archive, this\fP
\fIinformation may be collected by scardac (SeisComP archive\fP
\fIdata availability collector).\fP
.UNINDENT
.UNINDENT
.INDENT 0.0
.TP
.B dataAvailability.enable
Default: \fBfalse\fP
.sp
Type: \fIboolean\fP
.sp
Enable loading of data availabilty information from
SeisComP database. Availability information is used by
station and ext/availability service.
.UNINDENT
.INDENT 0.0
.TP
.B dataAvailability.cacheDuration
Default: \fB300\fP
.sp
Type: \fIint\fP
.sp
Unit: \fIs\fP
.sp
Number of seconds data availabilty information is considered
valid. If the duration time is exceeded, the information is
fetched again from the database.
.UNINDENT
.INDENT 0.0
.TP
.B dataAvailability.dccName
Default: \fBDCC\fP
.sp
Type: \fIstring\fP
.sp
Name of the archive use in sync format of dataavailability
extent service.
.UNINDENT
.INDENT 0.0
.TP
.B dataAvailability.repositoryName
Default: \fBprimary\fP
.sp
Type: \fIstring\fP
.sp
Name of the archive use in some format of data availability
extent service.
.UNINDENT
.INDENT 0.0
.TP
.B trackdb.enable
Default: \fBfalse\fP
.sp
Type: \fIboolean\fP
.sp
Save request log to database.
.UNINDENT
.INDENT 0.0
.TP
.B trackdb.defaultUser
Default: \fBfdsnws\fP
.sp
Type: \fIstring\fP
.sp
Default user.
.UNINDENT
.INDENT 0.0
.TP
.B auth.enable
Default: \fBfalse\fP
.sp
Type: \fIboolean\fP
.sp
Enable auth extension.
.UNINDENT
.INDENT 0.0
.TP
.B auth.gnupgHome
Default: \fB@ROOTDIR@/var/lib/gpg\fP
.sp
Type: \fIstring\fP
.sp
GnuPG home directory.
.UNINDENT
.INDENT 0.0
.TP
.B auth.blacklist
Type: \fIlist:string\fP
.sp
List of revoked token IDs.
.UNINDENT
.SH COMMAND-LINE OPTIONS
.sp
\fBfdsnws [options]\fP
.SS Generic
.INDENT 0.0
.TP
.B \-h, \-\-help
Show help message.
.UNINDENT
.INDENT 0.0
.TP
.B \-V, \-\-version
Show version information.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-config\-file arg
Use alternative configuration file. When this option is
used the loading of all stages is disabled. Only the
given configuration file is parsed and used. To use
another name for the configuration create a symbolic
link of the application or copy it. Example:
scautopick \-> scautopick2.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-plugins arg
Load given plugins.
.UNINDENT
.INDENT 0.0
.TP
.B \-D, \-\-daemon
Run as daemon. This means the application will fork itself
and doesn\(aqt need to be started with &.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-auto\-shutdown arg
Enable/disable self\-shutdown because a master module shutdown.
This only works when messaging is enabled and the master
module sends a shutdown message (enabled with \-\-start\-stop\-msg
for the master module).
.UNINDENT
.INDENT 0.0
.TP
.B \-\-shutdown\-master\-module arg
Set the name of the master\-module used for auto\-shutdown.
This is the application name of the module actually
started. If symlinks are used, then it is the name of
the symlinked application.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-shutdown\-master\-username arg
Set the name of the master\-username of the messaging
used for auto\-shutdown. If "shutdown\-master\-module" is
given as well, this parameter is ignored.
.UNINDENT
.SS Verbosity
.INDENT 0.0
.TP
.B \-\-verbosity arg
Verbosity level [0..4]. 0:quiet, 1:error, 2:warning, 3:info,
4:debug.
.UNINDENT
.INDENT 0.0
.TP
.B \-v, \-\-v
Increase verbosity level (may be repeated, eg. \-vv).
.UNINDENT
.INDENT 0.0
.TP
.B \-q, \-\-quiet
Quiet mode: no logging output.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-component arg
Limit the logging to a certain component. This option can
be given more than once.
.UNINDENT
.INDENT 0.0
.TP
.B \-s, \-\-syslog
Use syslog logging backend. The output usually goes to
/var/lib/messages.
.UNINDENT
.INDENT 0.0
.TP
.B \-l, \-\-lockfile arg
Path to lock file.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-console arg
Send log output to stdout.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-debug
Execute in debug mode.
Equivalent to \-\-verbosity=4 \-\-console=1 .
.UNINDENT
.INDENT 0.0
.TP
.B \-\-log\-file arg
Use alternative log file.
.UNINDENT
.SS Database
.INDENT 0.0
.TP
.B \-\-db\-driver\-list
List all supported database drivers.
.UNINDENT
.INDENT 0.0
.TP
.B \-d, \-\-database arg
The database connection string, format:
\fI\%service://user:pwd@host/database\fP\&.
"service" is the name of the database driver which
can be queried with "\-\-db\-driver\-list".
.UNINDENT
.INDENT 0.0
.TP
.B \-\-config\-module arg
The config module to use.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-inventory\-db arg
Load the inventory from the given database or file, format:
[\fI\%service://]location\fP .
.UNINDENT
.INDENT 0.0
.TP
.B \-\-db\-disable
Do not use the database at all
.UNINDENT
.SS Records
.INDENT 0.0
.TP
.B \-\-record\-driver\-list
List all supported record stream drivers.
.UNINDENT
.INDENT 0.0
.TP
.B \-I, \-\-record\-url arg
The recordstream source URL, format:
[\fI\%service://\fP]location[#type].
"service" is the name of the recordstream driver
which can be queried with "\-\-record\-driver\-list".
If "service" is not given, "\fI\%file://\fP" is
used.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-record\-file arg
Specify a file as record source.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-record\-type arg
Specify a type for the records being read.
.UNINDENT
.SH AUTHOR
gempa GmbH, GFZ Potsdam
.SH COPYRIGHT
gempa GmbH, GFZ Potsdam
.\" Generated by docutils manpage writer.
.