2020-01-23 Fred Gleason <fredg@paravelsystems.com>

* Added 'Username=' and 'Password=' directives to the
	'pypad_httpget.py' script for use for HTTP Basic Authentication.
This commit is contained in:
Fred Gleason 2020-01-23 10:08:46 -05:00
parent a529ed4b24
commit e5dcdeca31
3 changed files with 28 additions and 1 deletions

View File

@ -19414,3 +19414,6 @@
exception when processing PAD containing multi-type UTF-8 characters.
* Added a 'python36-urllib3' dependency to the 'rivendell-pypad'
RPM package.
2020-01-23 Fred Gleason <fredg@paravelsystems.com>
* Added 'Username=' and 'Password=' directives to the
'pypad_httpget.py' script for use for HTTP Basic Authentication.

View File

@ -14,8 +14,21 @@
; The list of available wildcards can be found in the 'metadata_wildcards.txt'
; file in the Rivendell documentation directory.
;
; NOTE: Any "reserved" characters used in the URL that are not being used
; for a "reserved purpose" must be URL encoded
; as per RFC 3986. This includes all multi-byte UTF-8 characters.
; See https://en.wikipedia.org/wiki/Percent-encoding for details.
;
URL=https://someplace.com/metadata.php?key=somekey&artist=%a&title=%t
; Username. Used for HTTP Basic Authentication. Optional.
;
Username=
; Password. Used for HTTP Basic Authentication. Optional.
;
Password=
; Log Selection
;
; Set the status for each log to 'Yes', 'No' or 'Onair' to indicate whether

View File

@ -4,7 +4,7 @@
#
# Write PAD updates to HTTP GET URL
#
# (C) Copyright 2019 Fred Gleason <fredg@paravelsystems.com>
# (C) Copyright 2019-2020 Fred Gleason <fredg@paravelsystems.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@ -36,12 +36,22 @@ def ProcessPad(update):
while(True):
section='Url'+str(n)
try:
username=''
if update.config().has_option(section,'Username'):
username=update.config().get(section,'Username')
password=''
if update.config().has_option(section,'Password'):
password=update.config().get(section,'Password')
url=update.resolvePadFields(update.config().get(section,'URL'),pypad.ESCAPE_URL)
buf=BytesIO()
curl=pycurl.Curl()
curl.setopt(curl.URL,url)
curl.setopt(curl.WRITEDATA,buf)
curl.setopt(curl.FOLLOWLOCATION,True)
if (username!=""):
curl.setopt(curl.USERNAME,username)
if (password!=""):
curl.setopt(curl.PASSWORD,password)
except configparser.NoSectionError:
if(n==1):
@ -51,6 +61,7 @@ def ProcessPad(update):
if update.shouldBeProcessed(section):
try:
curl.perform()
update.syslog(syslog.LOG_DEBUG,'['+section+'] sending URL "'+url+'"')
code=curl.getinfo(pycurl.RESPONSE_CODE)
if (code<200) or (code>=300):
update.syslog(syslog.LOG_WARNING,'['+section+'] returned response code '+str(code))