-
Notifications
You must be signed in to change notification settings - Fork 0
/
cfg.default.rc
179 lines (128 loc) · 6.76 KB
/
cfg.default.rc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# -*- coding: utf-8, tab-width: 2 -*-
local LOG_BASEDIR="logs.@$HOSTNAME"
local LOG_SUBDIR="$(printf '%(%y%m)T' "${BOTRUN[start_uts]}")"
# ^-- We can safely use `local` because each doibot rc file
# runs in its own function scope.
CFG[doibot_log_dest_dir]="$LOG_BASEDIR/$LOG_SUBDIR"
CFG[doibot_rerun_state_dir]="$LOG_BASEDIR/rerun_state"
CFG[doibot_rerun_min_delay]='0 days 0 hours 10 minutes 0 seconds'
# If for some reason your scheduling mechanism¹ fires the cron task
# too early, you can use this minimum delay to have the bot sleep
# before doing its actual work.
#
# (¹ In `docker-compose` without a docker swarm your scheduling options
# may be limited to immediate restart. You may be able to abuse delayed
# restart on failure by always failing, but that way your docker
# monitoring software will always have the failed container.)
CFG[anno_public_baseurl]='http://localhost:33321/anno/'
# ^-- Expected prefix for DOI redirect URLs.
# This is a safeguard against accidential misconfiguration and bugs.
# The RSS feed is expected to link to URLs inside this namespace even
# if it is requested via privileged access on a different URL.
CFG[anno_url_versep]='~'
CFG[doibot_auth_baseurl]='http://localhost:33321/anno/'
# ^-- The URL for privileged bot access to the anno server's
# anno namespace. If empty, `anno_public_baseurl` is used.
#
# In most setups, we will need some kind of authorization for the
# anno server to accept our stamp requests. This might be a base URL
# that includes a username and password for HTTP basic auth, or a
# base URL that bypasses the authentification.
#
# An example for the latter approach is the docker-compose example
# project in the documentation for `anno-server-22`. It uses the
# `DOCKER_DOIBOT_CFG_OVERRIDES` line below to override this setting
# with a URL based on the anno server's service name, which can be
# used as a hostname inside the docker-compose network. This direct
# access allows the DOI bot to use any username header unchallenged.
CFG[doibot_useragent]='doibot23'
CFG[doibot_auth_headers]='
REMOTE_USER : doi_bot
# Authorization : Bearer 00000000-0000-0000-0000-000000000000
'
# ^-- One HTTP header per line. Header names and values are trimmed
# of leading and trailing tab and space characters, meaning you can
# indent them as you like and can align the colons as you like.
# Lines with empty header name are ignored, so you can use the colon
# for line comments, e.g. to temporarily disable a header.
# Lines whose header name starts with `;` or `#` are ignored, too.
#
# !! Security Warning: !!
# Headers configured here are sent in all stamp requests. If your
# stamp base URL points to a server that might reply with a redirect,
# your headers may leak credentials to servers in the redirect chain.
CFG[doibot_stamp_url]='bot-auth:<°anno_vers_id>'
# ^-- The URL for where to submit the DOI stamp.
# Data slot syntax is the same as for `doibot_stamp_body_template`
# described below. If a prefix of `bot-auth:` is used, it will be
# replaced with the `doibot_auth_baseurl` setting and requests will
# be sent with bot authentification.
#
# For debugging, plain text data URLs may be used, e.g.
# CFG[doibot_stamp_url]='data:text/plain,{"st_at":"fake","doi":"<°bare_doi>"}'
# CFG[doibot_stamp_url]='data:text/plain;base64,UGFnZSBub3QgZm91bmQgKDQwNCkK'
CFG[doibot_stamp_http_verb]='PATCH'
CFG[doibot_stamp_headers]='
Content-Type : application/json
'
# ^-- Same syntax as for `doibot_auth_headers`.
CFG[doibot_stamp_body_template]='{"action":"addStamp","type":"dc:identifier",
"doi":"<°bare_doi>"}'
# ^-- The data slot syntax is: U+003C less-than sign (<), an optional slot
# marker (coming up next), the slot name, U+003E greater-than sign (>).
# Available slots names:
# bare_doi: The bare DOI, e.g. `10.1000/182`
# anno_id_url: The annotation's ID, as a URL.
# anno_vers_id: The annotation's version ID.
# dest_url: The target URL registered for the DOI.
# Currently, this is always the same as `anno_id_url`.
CFG[doibot_stamp_slot_marker]='°'
# ^-- A sequence of UTF-8 characters that marks data slots in your
# `doibot_stamp_body_template`.
# If angle brackets are distinctive enough (e.g. in simple JSON payloads),
# the marker sequeny may be empty.
# From the "Basic Latin" block, only digits, letters and the colon are
# allowed. (The others are reserved as potential RegExp delimiters.)
# From other blocks, stick to symbols that are printable and have no
# special effects.
CFG[doibot_stamp_reply_grep_success]='^\{\s*"st_at":\s*"'
CFG[doibot_stamp_reply_grep_flags]='--perl-regexp'
# CFG[doibot_stamp_reply_grep_flags]='--fixed-strings --line-regexp'
CFG[anno_doi_prefix]='0.0/no-doi-prefix.'
CFG[anno_doi_versep]='_'
CFG[anno_doi_suffix]=''
CFG[doibot_adapter_name]='dummy'
CFG[doibot_adapter_prog]='echo'
CFG[doibot_adapter_args]='"Error from dummy registry: Denied: Not authorized"'
# In an interactive desktop development environment, you may use the
# gxdebug adapter as a GUI for deciding DOI requests:
# CFG[doibot_adapter_name]='gxdebug'
# CFG[doibot_adapter_prog]="$BOT_PATH/util/adapter_gxdebug.sh"
# CFG[doibot_adapter_args]='update_doi_meta_for_one_anno_on_stdin'
CFG[doibot_doi_safe_chars]=':~'
# ^-- Additional characters that are acceptable in DOIs.
# Some characters are always implicitly allowed, so you can omit them
# from this setting. Those are: Letters (A-Za-z), digits (0-9), comma (,),
# hyphen-minus (-), full stop (.), and slash (solidus, /) and low line (_).
#
# Additional characters are limited to printable characters from the
# Unicode block Basic Latin (i.e. U+0021 to U+007E), and must not include
# the quotation mark (") or backslash (reverse solidus, \).
CFG[doibot_url_safe_chars]='!#%&()*+;=?@[]'
# ^-- Additional characters that are acceptable in URLs, in addition to
# all that are acceptable in DOIs. Same limitations as above.
CFG[doibot_rss_dest_dir]="$LOG_BASEDIR/rss"
CFG[doibot_loglink_baseurl]="http://localhost/anno/doibot-logs/$LOG_SUBDIR/"
# ^-- Base URL for logfile link in the error RSS feed.
# Should be an absolute URL for maximum compatibility with RSS clients.
CFG[doibot_rss_warnlevel]=16
# ^-- Minimum fail score at which to flip the `status.rss` headline from
# "healthy" to "FAILING". Higher values give more tolerance for temporary
# failures. The related log message is "Cumulative fail score increased to …".
CFG[json_prettify_prog]="$(which json-sort-pmb jq cat |& grep -m 1 -Pe '^/')"
# ^-- Introduced for the DataCite adapter's debug features,
# but it's probably more future-proof to have this be a common
# config option for all adapters and maybe also the bot itself.
# If you want to run the DOI bot in docker, keep this line:
eval "$DOCKER_DOIBOT_CFG_OVERRIDES"
# If you use multiple config files, the docker eval line should run last.