mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2026-09-24 06:15:52 +00:00
added external header server
This commit is contained in:
@@ -4,7 +4,8 @@ import os
|
||||
import re
|
||||
import time
|
||||
import urllib3
|
||||
|
||||
import requests
|
||||
import simplejson
|
||||
from changedetectionio import content_fetcher, html_tools
|
||||
|
||||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||||
@@ -67,6 +68,18 @@ class perform_site_check():
|
||||
|
||||
# Tweak the base config with the per-watch ones
|
||||
request_headers = self.datastore.data['settings']['headers'].copy()
|
||||
|
||||
if self.datastore.get_val(uuid, 'external_header_server') is not None:
|
||||
try:
|
||||
resp = requests.get(self.datastore.get_val(uuid, 'external_header_server'))
|
||||
if resp.status_code != 200:
|
||||
raise Exception("External header server returned non-200 response. Please check the URL for the server")
|
||||
|
||||
request_headers.update(resp.json())
|
||||
|
||||
except simplejson.errors.JSONDecodeError:
|
||||
raise Exception("Failed to decode JSON response from external header server")
|
||||
|
||||
request_headers.update(extra_headers)
|
||||
|
||||
# https://github.com/psf/requests/issues/4525
|
||||
|
||||
@@ -336,6 +336,7 @@ class watchForm(commonSettingsForm):
|
||||
title = StringField('Title', default='')
|
||||
|
||||
ignore_text = StringListField('Ignore text', [ValidateListRegex()])
|
||||
external_header_server = fields.URLField('External Header Server', validators=[validateURL()])
|
||||
headers = StringDictKeyValue('Request headers')
|
||||
body = TextAreaField('Request body', [validators.Optional()])
|
||||
method = SelectField('Request method', choices=valid_method, default=default_method)
|
||||
|
||||
@@ -25,6 +25,7 @@ class model(dict):
|
||||
'previous_md5': False,
|
||||
'uuid': str(uuid_builder.uuid4()),
|
||||
'headers': {}, # Extra headers to send
|
||||
'external_header_server': None, # URL to a server that will return headers
|
||||
'body': None,
|
||||
'method': 'GET',
|
||||
#'history': {}, # Dict of timestamp and output stripped filename
|
||||
|
||||
@@ -109,6 +109,12 @@
|
||||
<div class="pure-control-group" id="request-method">
|
||||
{{ render_field(form.method) }}
|
||||
</div>
|
||||
<div class="pure-control-group" id="external-header-server">
|
||||
{{ render_field(form.external_header_server, placeholder="http://example.com/watch1") }}
|
||||
<div class="pure-form-message-inline">
|
||||
The watch will perform a GET request before each check to this URL and will use the headers in addition to the ones listed below and in global settings. <a href="https://github.com/dgtlmoon/changedetection.io/wiki/Run-JavaScript-before-change-detection">More help and examples here</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pure-control-group" id="request-headers">
|
||||
{{ render_field(form.headers, rows=5, placeholder="Example
|
||||
Cookie: foobar
|
||||
|
||||
Reference in New Issue
Block a user