mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-06-06 23:22:40 +02:00
2019-05-14 Fred Gleason <fredg@paravelsystems.com>
* Removed 'web/webget/webget.py'.
This commit is contained in:
parent
1159caad4a
commit
ca949be8f2
@ -18665,3 +18665,5 @@
|
|||||||
generated with a normalization level of -100 dBFS.
|
generated with a normalization level of -100 dBFS.
|
||||||
* Fixed a bug in the Webget service that caused all audio to
|
* Fixed a bug in the Webget service that caused all audio to
|
||||||
be generated as monoaural.
|
be generated as monoaural.
|
||||||
|
2019-05-14 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Removed 'web/webget/webget.py'.
|
||||||
|
@ -1,145 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import subprocess
|
|
||||||
import tempfile
|
|
||||||
import urllib
|
|
||||||
import ConfigParser
|
|
||||||
import mysql.connector
|
|
||||||
|
|
||||||
def eprint(*args,**kwargs):
|
|
||||||
print(*args,file=sys.stderr,**kwargs)
|
|
||||||
|
|
||||||
def GetDbCredentials():
|
|
||||||
config=ConfigParser.ConfigParser()
|
|
||||||
config.readfp(open('/etc/rd.conf'))
|
|
||||||
return (config.get('mySQL','Loginname'),config.get('mySQL','Password'),
|
|
||||||
config.get('mySQL','Hostname'),config.get('mySQL','Database'))
|
|
||||||
|
|
||||||
def OpenDb():
|
|
||||||
creds=GetDbCredentials()
|
|
||||||
return mysql.connector.connect(user=creds[0],password=creds[1],
|
|
||||||
host=creds[2],database=creds[3],
|
|
||||||
|
|
||||||
buffered=True)
|
|
||||||
|
|
||||||
def CgiError(msg,resp_code):
|
|
||||||
print('Content-type: text/html')
|
|
||||||
print('Status: '+str(resp_code))
|
|
||||||
print()
|
|
||||||
print(msg)
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
def AuthenticateUser(name,passwd,db):
|
|
||||||
sql='select WEBGET_LOGIN_PRIV from USERS where ';
|
|
||||||
sql+='LOGIN_NAME="'+name+'" && PASSWORD="'+passwd+'"'
|
|
||||||
q=db.cursor()
|
|
||||||
q.execute(sql)
|
|
||||||
if(len(q.fetchall())==0):
|
|
||||||
CgiError("Invalid User name or Password!",400)
|
|
||||||
|
|
||||||
#
|
|
||||||
# Main Function
|
|
||||||
#
|
|
||||||
title=''
|
|
||||||
samprate=48000
|
|
||||||
format='MP3'
|
|
||||||
bitrate=32000
|
|
||||||
quality=2
|
|
||||||
login_name=''
|
|
||||||
password=''
|
|
||||||
|
|
||||||
#
|
|
||||||
# Get call fields
|
|
||||||
#
|
|
||||||
f0=os.environ['QUERY_STRING'].split('&')
|
|
||||||
for field in f0:
|
|
||||||
f1=field.split('=')
|
|
||||||
if(f1[0]=='title'):
|
|
||||||
title=urllib.unquote(f1[1])
|
|
||||||
if(f1[0]=='samprate'):
|
|
||||||
samprate=int(urllib.unquote(f1[1]))
|
|
||||||
if(f1[0]=='format'):
|
|
||||||
format=urllib.unquote(f1[1])
|
|
||||||
if(f1[0]=='bitrate'):
|
|
||||||
bitrate=int(urllib.unquote(f1[1]))
|
|
||||||
if(f1[0]=='quality'):
|
|
||||||
quality=int(urllib.unquote(f1[1]))
|
|
||||||
if(f1[0]=='login_name'):
|
|
||||||
login_name=urllib.unquote(f1[1])
|
|
||||||
if(f1[0]=='password'):
|
|
||||||
password=urllib.unquote(f1[1])
|
|
||||||
|
|
||||||
login_name=login_name.replace('+',' ')
|
|
||||||
password=password.replace('+',' ')
|
|
||||||
|
|
||||||
db=OpenDb()
|
|
||||||
AuthenticateUser(login_name,password,db)
|
|
||||||
|
|
||||||
if(len(title)==0):
|
|
||||||
CgiError('No title specified!',400)
|
|
||||||
title=title.replace('+',' ')
|
|
||||||
|
|
||||||
#
|
|
||||||
# Generate file export
|
|
||||||
#
|
|
||||||
tempdir=tempfile.mkdtemp()
|
|
||||||
try:
|
|
||||||
filename=subprocess.check_output(('rdexport','--title='+title,
|
|
||||||
'--metadata-pattern=%t',
|
|
||||||
'--samplerate='+str(samprate),
|
|
||||||
'--format='+format,
|
|
||||||
'--bitrate='+str(bitrate),
|
|
||||||
'--quality='+str(quality),
|
|
||||||
tempdir))
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
os.rmdir(tempdir)
|
|
||||||
print('Content-type: text/html')
|
|
||||||
print('Status: 500')
|
|
||||||
print()
|
|
||||||
print('500 - unable to execute rdexport(1)')
|
|
||||||
sys.exit(0)
|
|
||||||
if(len(filename)==0):
|
|
||||||
os.rmdir(tempdir)
|
|
||||||
print('Content-type: text/html')
|
|
||||||
print('Status: 404')
|
|
||||||
print()
|
|
||||||
print('404 - no cart with that title');
|
|
||||||
sys.exit(0)
|
|
||||||
filename=filename[0:len(filename)-1]
|
|
||||||
filepath=tempdir+'/'+filename
|
|
||||||
try:
|
|
||||||
mimetype=subprocess.check_output(('file','--brief','--mime-type',filepath))
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
os.remove(filepath)
|
|
||||||
os.rmdir(tempdir)
|
|
||||||
print('Content-type: text/html')
|
|
||||||
print('Status: 500')
|
|
||||||
print()
|
|
||||||
print('500 - unable to determine output mime-type')
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
#
|
|
||||||
# Render the output
|
|
||||||
#
|
|
||||||
try:
|
|
||||||
f=open(filepath,'r')
|
|
||||||
except IOError, reason:
|
|
||||||
print('Content-type: text/html')
|
|
||||||
print()
|
|
||||||
print('500 - unable to open exported file "'+filepath+'" ['+str(reason)+']')
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
print('Content-Disposition: attachment; filename=\"'+filename+'\"')
|
|
||||||
print('Content-type: '+mimetype)
|
|
||||||
|
|
||||||
bytes=f.read(1024)
|
|
||||||
while(len(bytes)>0):
|
|
||||||
sys.stdout.write(bytes)
|
|
||||||
bytes=f.read(1024)
|
|
||||||
f.close()
|
|
||||||
os.remove(filepath)
|
|
||||||
os.rmdir(tempdir)
|
|
Loading…
x
Reference in New Issue
Block a user