mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-30 15:42:34 +02:00
2018-08-31 Fred Gleason <fredg@paravelsystems.com>
* Fixed buffer overflow vulnerabilities in the rivwebcapi test harnesses. * Modified rd_createticket(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_addcart(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_addcut(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_addlog(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_assignschedcode(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_audioinfo(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_audiostore(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_copyaudio(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_deletelog(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_editcart(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_editcut(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_export(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_exportpeaks(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_listcart(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_listcarts(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_listcartschedcodes(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_listcut(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_listcuts(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_listgroup(7) in the rivwebcapi to process UTF-8 strings correctly. * Modified rd_listgroups(7) in the rivwebcapi to process UTF-8 strings correctly.
This commit is contained in:
parent
96623f3c85
commit
5fbfed9d38
43
ChangeLog
43
ChangeLog
@ -17554,3 +17554,46 @@
|
||||
the MingW64 environment.
|
||||
2018-08-31 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed a bug that broke the build under MingW32.
|
||||
2018-08-31 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed buffer overflow vulnerabilities in the rivwebcapi test
|
||||
harnesses.
|
||||
* Modified rd_createticket(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_addcart(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_addcut(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_addlog(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_assignschedcode(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_audioinfo(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_audiostore(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_copyaudio(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_deletelog(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_editcart(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_editcut(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_export(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_exportpeaks(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_listcart(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_listcarts(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_listcartschedcodes(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_listcut(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_listcuts(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_listgroup(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
* Modified rd_listgroups(7) in the rivwebcapi to process UTF-8
|
||||
strings correctly.
|
||||
|
@ -2,9 +2,9 @@ BUILDING RIVWEBCAPI FOR WINDOWS USING MINGW64
|
||||
---------------------------------------------
|
||||
|
||||
To build the Rivendell Web C API client library for Windows using
|
||||
the MingW64 cross-compiler environment, proceed as follows:
|
||||
the MingW32 cross-compiler environment, proceed as follows:
|
||||
|
||||
1) Ensure that the necessary MingW64 packages are installed. On RHEL-7,
|
||||
1) Ensure that the necessary MingW32 packages are installed. On RHEL-7,
|
||||
this can be accomplished with the following command (as 'root'):
|
||||
|
||||
*** snip snip ***
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the Add Cart Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -177,7 +178,6 @@ int RD_AddCart(struct rd_cart *cart[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -186,6 +186,10 @@ int RD_AddCart(struct rd_cart *cart[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[50];
|
||||
char cut_buffer[50];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
if((curl=curl_easy_init())==NULL) {
|
||||
curl_easy_cleanup(curl);
|
||||
@ -204,13 +208,63 @@ int RD_AddCart(struct rd_cart *cart[],
|
||||
__AddCartElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__AddCartElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=12&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&GROUP_NAME=%s&TYPE=%s&CART_NUMBER=%u",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
curl_easy_escape(curl,group,0),
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"12",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"GROUP_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
group,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TYPE",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
type,
|
||||
cartnumber);
|
||||
CURLFORM_END);
|
||||
|
||||
sprintf(cart_buffer,"%u",cartnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
@ -227,7 +281,7 @@ int RD_AddCart(struct rd_cart *cart[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__AddCartCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -248,6 +302,7 @@ int RD_AddCart(struct rd_cart *cart[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) { //Success
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the Add Cut Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -218,7 +219,6 @@ int RD_AddCut(struct rd_cut *cut[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -227,6 +227,9 @@ int RD_AddCut(struct rd_cut *cut[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
if((curl=curl_easy_init())==NULL) {
|
||||
curl_easy_cleanup(curl);
|
||||
@ -246,11 +249,47 @@ int RD_AddCut(struct rd_cut *cut[],
|
||||
__AddCutElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__AddCutElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=10&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&CART_NUMBER=%u",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
cartnumber);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"10",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cartnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
curl_easy_setopt(curl, CURLOPT_USERAGENT,user_agent);
|
||||
@ -265,7 +304,7 @@ int RD_AddCut(struct rd_cut *cut[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__AddCutCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -286,6 +325,7 @@ int RD_AddCut(struct rd_cut *cut[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the AddLog Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2017 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -31,13 +32,14 @@ int RD_AddLog(const char hostname[],
|
||||
const char servicename[],
|
||||
const char user_agent[])
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
long response_code;
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
if((curl=curl_easy_init())==NULL) {
|
||||
curl_easy_cleanup(curl);
|
||||
@ -48,13 +50,54 @@ int RD_AddLog(const char hostname[],
|
||||
* Setup the CURL call
|
||||
*/
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=29&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&LOG_NAME=%s&SERVICE_NAME=%s",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
curl_easy_escape(curl,logname,0),
|
||||
curl_easy_escape(curl,servicename,0));
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"29",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOG_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
logname,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"SERVICE_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
servicename,
|
||||
CURLFORM_END);
|
||||
if (strlen(user_agent)> 0)
|
||||
{
|
||||
curl_easy_setopt(curl, CURLOPT_USERAGENT,user_agent);
|
||||
@ -67,7 +110,7 @@ int RD_AddLog(const char hostname[],
|
||||
}
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -88,6 +131,7 @@ int RD_AddLog(const char hostname[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) { //Success
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the AssignSchedulCodes Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -76,7 +77,6 @@ int RD_AssignSchedCode( const char hostname[],
|
||||
const char code[],
|
||||
const char user_agent[])
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -87,6 +87,9 @@ int RD_AssignSchedCode( const char hostname[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* Check Code */
|
||||
for (i = 0 ; i < strlen(code) ; i++) {
|
||||
@ -119,12 +122,56 @@ int RD_AssignSchedCode( const char hostname[],
|
||||
__AssignSchedCodeElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__AssignSchedCodeElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=25&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&CART_NUMBER=%u&CODE=%s",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
cartnum,
|
||||
curl_easy_escape(curl,code,0));
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"25",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cartnum);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CODE",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
code,
|
||||
CURLFORM_END);
|
||||
|
||||
//
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
@ -141,7 +188,7 @@ int RD_AssignSchedCode( const char hostname[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__AssignSchedCodeCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -163,6 +210,7 @@ int RD_AssignSchedCode( const char hostname[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the AudioInfo Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -107,7 +108,6 @@ int RD_AudioInfo(struct rd_audioinfo *audioinfo[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -116,6 +116,9 @@ int RD_AudioInfo(struct rd_audioinfo *audioinfo[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* Set number of recs so if fail already set */
|
||||
*numrecs = 0;
|
||||
@ -135,13 +138,57 @@ int RD_AudioInfo(struct rd_audioinfo *audioinfo[],
|
||||
__AudioInfoElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__AudioInfoElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=19&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&CART_NUMBER=%u&CUT_NUMBER=%u",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
cartnumber,
|
||||
cutnumber);
|
||||
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"19",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
sprintf(cart_buffer,"%u",cartnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
sprintf(cart_buffer,"%u",cutnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CUT_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
curl_easy_setopt(curl, CURLOPT_USERAGENT,user_agent);
|
||||
@ -157,7 +204,7 @@ int RD_AudioInfo(struct rd_audioinfo *audioinfo[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__AudioInfoCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -179,6 +226,7 @@ int RD_AudioInfo(struct rd_audioinfo *audioinfo[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the AudioStore Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -89,7 +90,6 @@ int RD_AudioStore(struct rd_audiostore *audiosto[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -98,6 +98,8 @@ int RD_AudioStore(struct rd_audiostore *audiosto[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* Set number of recs so if fail already set */
|
||||
*numrecs = 0;
|
||||
@ -117,10 +119,39 @@ int RD_AudioStore(struct rd_audiostore *audiosto[],
|
||||
__AudioStoreElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__AudioStoreElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=23&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0));
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"23",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
//
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
@ -137,7 +168,7 @@ int RD_AudioStore(struct rd_audiostore *audiosto[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__AudioStoreCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -159,6 +190,7 @@ int RD_AudioStore(struct rd_audiostore *audiosto[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -143,7 +143,6 @@ size_t strlcpy(char * dest, const char* src, size_t bufsize)
|
||||
* RD_Cnv_tm_to_DTString
|
||||
* Copies tm struct values into a date string. Returns
|
||||
* size_t length copied. Returns 0 if invalid tm struct.
|
||||
* Automatically URL Encodes colon and the plus sign.
|
||||
*****************************************************************/
|
||||
size_t RD_Cnv_tm_to_DTString(struct tm *tmptr,char * dest)
|
||||
{
|
||||
@ -155,7 +154,7 @@ size_t RD_Cnv_tm_to_DTString(struct tm *tmptr,char * dest)
|
||||
char thesec[3];
|
||||
char plusminus[3];
|
||||
char minus[2] = "-";
|
||||
char colon_sep[4] = "%3a";
|
||||
char colon_sep[4] = ":";
|
||||
char T_sep[2] = "T";
|
||||
char offsethr[3];
|
||||
char offsetmin[3];
|
||||
|
@ -37,7 +37,7 @@
|
||||
#endif // MINGW32
|
||||
#endif
|
||||
|
||||
/* #define RIVC_DEBUG_OUT Uncomment for stderr output */
|
||||
#define RIVC_DEBUG_OUT Uncomment for stderr output */
|
||||
|
||||
#if defined(__cplusplus)
|
||||
#define _MYRIVLIB_INIT_DECL extern "C" {
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the Copy Audio Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -75,7 +76,6 @@ int RD_CopyAudio( const char hostname[],
|
||||
const unsigned dest_cutnumber,
|
||||
const char user_agent[])
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -84,6 +84,9 @@ int RD_CopyAudio( const char hostname[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
if((curl=curl_easy_init())==NULL) {
|
||||
curl_easy_cleanup(curl);
|
||||
@ -100,15 +103,75 @@ int RD_CopyAudio( const char hostname[],
|
||||
__CopyAudioElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__CopyAudioElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=18&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&SOURCE_CART_NUMBER=%u&SOURCE_CUT_NUMBER=%u&DESTINATION_CART_NUMBER=%u&DESTINATION_CUT_NUMBER=%u",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
src_cartnumber,
|
||||
src_cutnumber,
|
||||
dest_cartnumber,
|
||||
dest_cutnumber);
|
||||
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"18",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",src_cartnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"SOURCE_CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",src_cutnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"SOURCE_CUT_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",dest_cartnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"DESTINATION_CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",dest_cutnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"DESTINATION_CUT_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
curl_easy_setopt(curl, CURLOPT_USERAGENT,user_agent);
|
||||
@ -124,7 +187,7 @@ int RD_CopyAudio( const char hostname[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__CopyAudioCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -145,6 +208,7 @@ int RD_CopyAudio( const char hostname[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) { //Success
|
||||
|
@ -90,7 +90,7 @@ int RD_CreateTicket(struct rd_ticketinfo *ticketinfo[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
// char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -99,6 +99,8 @@ int RD_CreateTicket(struct rd_ticketinfo *ticketinfo[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* Set number of recs so if fail already set */
|
||||
*numrecs = 0;
|
||||
@ -118,10 +120,36 @@ int RD_CreateTicket(struct rd_ticketinfo *ticketinfo[],
|
||||
__CreateTicketElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__CreateTicketElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"31",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
/*
|
||||
snprintf(post,1500,"COMMAND=31&LOGIN_NAME=%s&PASSWORD=%s",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0));
|
||||
|
||||
*/
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
curl_easy_setopt(curl, CURLOPT_USERAGENT,user_agent);
|
||||
@ -137,7 +165,8 @@ int RD_CreateTicket(struct rd_ticketinfo *ticketinfo[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__CreateTicketCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
// curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -159,6 +188,7 @@ int RD_CreateTicket(struct rd_ticketinfo *ticketinfo[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -30,13 +30,14 @@ int RD_DeleteLog(const char hostname[],
|
||||
const char logname[],
|
||||
const char user_agent[])
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
long response_code;
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
if((curl=curl_easy_init())==NULL) {
|
||||
curl_easy_cleanup(curl);
|
||||
@ -47,11 +48,46 @@ int RD_DeleteLog(const char hostname[],
|
||||
* Setup the CURL call
|
||||
*/
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=30&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&LOG_NAME=%s",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
curl_easy_escape(curl,logname,0));
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"30",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOG_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
logname,
|
||||
CURLFORM_END);
|
||||
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
@ -66,7 +102,7 @@ int RD_DeleteLog(const char hostname[],
|
||||
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -87,6 +123,7 @@ int RD_DeleteLog(const char hostname[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) { //Success
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the Edit Cart Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -181,7 +182,6 @@ int RD_EditCart(struct rd_cart *cart[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[3350];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -190,6 +190,9 @@ int RD_EditCart(struct rd_cart *cart[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
if((curl=curl_easy_init())==NULL) {
|
||||
curl_easy_cleanup(curl);
|
||||
@ -208,12 +211,49 @@ int RD_EditCart(struct rd_cart *cart[],
|
||||
__EditCartElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__EditCartElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,3350,"COMMAND=14&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&CART_NUMBER=%u",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
cartnum);
|
||||
Build_Post_Cart_Fields(post,curl,edit_c_values);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"14",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cartnum);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
Build_Post_Cart_Fields(&first,&last,edit_c_values);
|
||||
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
@ -230,7 +270,7 @@ int RD_EditCart(struct rd_cart *cart[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__EditCartCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
|
||||
@ -251,6 +291,7 @@ int RD_EditCart(struct rd_cart *cart[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) { //Success
|
||||
@ -266,101 +307,211 @@ int RD_EditCart(struct rd_cart *cart[],
|
||||
}
|
||||
}
|
||||
|
||||
void Build_Post_Cart_Fields(char *post, CURL *curl, struct edit_cart_values edit_values)
|
||||
{
|
||||
char buffer[1024];
|
||||
/* Copy all of the applicable values into the post string */
|
||||
|
||||
void Build_Post_Cart_Fields(struct curl_httppost **first,
|
||||
struct curl_httppost **last,
|
||||
struct edit_cart_values edit_values)
|
||||
{
|
||||
char buffer[255]={0};
|
||||
|
||||
if (edit_values.use_cart_grp_name)
|
||||
{
|
||||
snprintf(buffer,1024,"&GROUP_NAME=%s",curl_easy_escape(curl,edit_values.cart_grp_name,0));
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"GROUP_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_grp_name,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_title)
|
||||
{
|
||||
snprintf(buffer,1024,"&TITLE=%s",curl_easy_escape(curl,edit_values.cart_title,0));
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TITLE",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_title,
|
||||
CURLFORM_END);
|
||||
}
|
||||
if (edit_values.use_cart_artist)
|
||||
{
|
||||
snprintf(buffer,1024,"&ARTIST=%s",curl_easy_escape(curl,edit_values.cart_artist,0));
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"ARTIST",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_artist,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_album)
|
||||
{
|
||||
snprintf(buffer,1024,"&ALBUM=%s",curl_easy_escape(curl,edit_values.cart_album,0));
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"ALBUM",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_album,
|
||||
CURLFORM_END);
|
||||
}
|
||||
if (edit_values.use_cart_year)
|
||||
{
|
||||
snprintf(buffer,1024,"&YEAR=%d",edit_values.cart_year);
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_label)
|
||||
{
|
||||
snprintf(buffer,1024,"&LABEL=%s",curl_easy_escape(curl,edit_values.cart_label,0));
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_client)
|
||||
{
|
||||
snprintf(buffer,1024,"&CLIENT=%s",curl_easy_escape(curl,edit_values.cart_client,0));
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_agency)
|
||||
{
|
||||
snprintf(buffer,1024,"&AGENCY=%s",curl_easy_escape(curl,edit_values.cart_agency,0));
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_publisher)
|
||||
{
|
||||
snprintf(buffer,1024,"&PUBLISHER=%s",curl_easy_escape(curl,edit_values.cart_publisher,0));
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_composer)
|
||||
{
|
||||
snprintf(buffer,1024,"&COMPOSER=%s",curl_easy_escape(curl,edit_values.cart_composer,0));
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_conductor)
|
||||
{
|
||||
snprintf(buffer,1024,"&CONDUCTOR=%s",curl_easy_escape(curl,edit_values.cart_conductor,0));
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_user_defined)
|
||||
{
|
||||
snprintf(buffer,1024,"&USER_DEFINED=%s",curl_easy_escape(curl,edit_values.cart_user_defined,0));
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_usage_code)
|
||||
{
|
||||
snprintf(buffer,1024,"&USAGE_CODE=%d",edit_values.cart_usage_code);
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_forced_length)
|
||||
{
|
||||
snprintf(buffer,1024,"&FORCED_LENGTH=%d",edit_values.cart_forced_length);
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_enforce_length)
|
||||
{
|
||||
snprintf(buffer,1024,"&ENFORCE_LENGTH=%d",edit_values.cart_enforce_length);
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_asyncronous)
|
||||
{
|
||||
snprintf(buffer,1024,"&ASYNCRONOUS=%d",edit_values.cart_asyncronous);
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_owner)
|
||||
{
|
||||
snprintf(buffer,1024,"&OWNER=%s",curl_easy_escape(curl,edit_values.cart_owner,0));
|
||||
strcat(post,buffer);
|
||||
}
|
||||
if (edit_values.use_cart_notes)
|
||||
{
|
||||
snprintf(buffer,1024,"&NOTES=%s",curl_easy_escape(curl,edit_values.cart_notes,0));
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cart_year);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"YEAR",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
return;
|
||||
if (edit_values.use_cart_label)
|
||||
{
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LABEL",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_label,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_client)
|
||||
{
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CLIENT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_client,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_agency)
|
||||
{
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"AGENCY",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_agency,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_publisher)
|
||||
{
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PUBLISHER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_publisher,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_composer)
|
||||
{
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMPOSER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_composer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_conductor)
|
||||
{
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CONDUCTOR",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_conductor,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_user_defined)
|
||||
{
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"USER_DEFINED",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_user_defined,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_usage_code)
|
||||
{
|
||||
snprintf(buffer,255,"%d",edit_values.cart_usage_code);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"USAGE_CODE",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_forced_length)
|
||||
{
|
||||
snprintf(buffer,255,"%d",edit_values.cart_forced_length);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"FORCED_LENGTH",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_enforce_length)
|
||||
{
|
||||
snprintf(buffer,255,"%d",edit_values.cart_enforce_length);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"ENFORCE_LENGTH",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_asyncronous)
|
||||
{
|
||||
snprintf(buffer,255,"%d",edit_values.cart_asyncronous);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"ASYNCRONOUS",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_owner)
|
||||
{
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"OWNER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_owner,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cart_notes)
|
||||
{
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"NOTES",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cart_notes,
|
||||
CURLFORM_END);
|
||||
}
|
||||
}
|
||||
|
@ -78,7 +78,9 @@ int RD_EditCart(struct rd_cart *cart[],
|
||||
unsigned *numrecs);
|
||||
|
||||
|
||||
void Build_Post_Cart_Fields(char *post, CURL * curl, struct edit_cart_values edit_values);
|
||||
void Build_Post_Cart_Fields(struct curl_httppost **first,
|
||||
struct curl_httppost **last,
|
||||
struct edit_cart_values edit_values);
|
||||
|
||||
_MYRIVLIB_FINI_DECL
|
||||
|
||||
|
@ -188,7 +188,6 @@ int RD_EditCut(struct rd_cut *cut[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[3500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -197,6 +196,9 @@ int RD_EditCut(struct rd_cut *cut[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
if((curl=curl_easy_init())==NULL) {
|
||||
curl_easy_cleanup(curl);
|
||||
@ -215,13 +217,57 @@ int RD_EditCut(struct rd_cut *cut[],
|
||||
__EditCutElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__EditCutElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=15&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&CART_NUMBER=%u&CUT_NUMBER=%u",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
cartnum,
|
||||
cutnum);
|
||||
Build_Post_Cut_Fields(post, curl, edit_cut_values);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"15",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cartnum);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cutnum);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CUT_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
Build_Post_Cut_Fields(&first,&last,edit_cut_values);
|
||||
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
@ -237,7 +283,7 @@ int RD_EditCut(struct rd_cut *cut[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__EditCutCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -259,6 +305,7 @@ int RD_EditCut(struct rd_cut *cut[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) { //Success
|
||||
@ -274,43 +321,68 @@ int RD_EditCut(struct rd_cut *cut[],
|
||||
}
|
||||
}
|
||||
|
||||
void Build_Post_Cut_Fields(char *post, CURL *curl, struct edit_cut_values edit_values)
|
||||
{
|
||||
|
||||
char buffer[1024];
|
||||
void Build_Post_Cut_Fields(struct curl_httppost **first,
|
||||
struct curl_httppost **last,
|
||||
struct edit_cut_values edit_values)
|
||||
{
|
||||
char buffer[255]={0};
|
||||
char hold_datetime[34]; // take URL Encoding into account
|
||||
int retlen=0;
|
||||
|
||||
/* Copy all of the applicable values into the post string */
|
||||
|
||||
if (edit_values.use_cut_evergreen)
|
||||
{
|
||||
snprintf(buffer,1024,"&EVERGREEN=%d",edit_values.cut_evergreen);
|
||||
strcat(post,buffer);
|
||||
if (edit_values.use_cut_evergreen) {
|
||||
snprintf(buffer,255,"%d",edit_values.cut_evergreen);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"EVERGREEN",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_description)
|
||||
{
|
||||
snprintf(buffer,1024,"&DESCRIPTION=%s",curl_easy_escape(curl,edit_values.cut_description,0));
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"DESCRIPTION",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cut_description,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_outcue)
|
||||
{
|
||||
snprintf(buffer,1024,"&OUTCUE=%s",curl_easy_escape(curl,edit_values.cut_outcue,0));
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"OUTCUE",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cut_outcue,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_isrc)
|
||||
{
|
||||
snprintf(buffer,1024,"&ISRC=%s",curl_easy_escape(curl,edit_values.cut_isrc,0));
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"ISRC",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cut_isrc,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_isci)
|
||||
{
|
||||
snprintf(buffer,1024,"&ISCI=%s",curl_easy_escape(curl,edit_values.cut_isci,0));
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"ISCI",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cut_isci,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_start_datetime)
|
||||
@ -318,8 +390,13 @@ void Build_Post_Cut_Fields(char *post, CURL *curl, struct edit_cut_values edit_v
|
||||
retlen = RD_Cnv_tm_to_DTString( &edit_values.cut_start_datetime,hold_datetime);
|
||||
if (retlen > 0)
|
||||
{
|
||||
snprintf(buffer,1024,"&START_DATETIME=%s",hold_datetime);
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"START_DATETIME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
hold_datetime,
|
||||
CURLFORM_END);
|
||||
}
|
||||
}
|
||||
|
||||
@ -328,172 +405,324 @@ void Build_Post_Cut_Fields(char *post, CURL *curl, struct edit_cut_values edit_v
|
||||
retlen = RD_Cnv_tm_to_DTString( &edit_values.cut_end_datetime,hold_datetime);
|
||||
if (retlen > 0)
|
||||
{
|
||||
snprintf(buffer,1024,"&END_DATETIME=%s",hold_datetime);
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"END_DATETIME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
hold_datetime,
|
||||
CURLFORM_END);
|
||||
}
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_sun)
|
||||
{
|
||||
snprintf(buffer,1024,"&SUN=%d",edit_values.cut_sun);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_sun);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"SUN",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
hold_datetime,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_mon)
|
||||
{
|
||||
snprintf(buffer,1024,"&MON=%d",edit_values.cut_mon);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_mon);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"MON",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
hold_datetime,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_tue)
|
||||
{
|
||||
snprintf(buffer,1024,"&TUE=%d",edit_values.cut_tue);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_tue);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TUE",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
hold_datetime,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_wed)
|
||||
{
|
||||
snprintf(buffer,1024,"&WED=%d",edit_values.cut_wed);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_wed);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"WED",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
hold_datetime,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_thu)
|
||||
{
|
||||
snprintf(buffer,1024,"&THU=%d",edit_values.cut_thu);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_thu);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"THU",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
hold_datetime,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_fri)
|
||||
{
|
||||
snprintf(buffer,1024,"&FRI=%d",edit_values.cut_fri);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_fri);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"FRI",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
hold_datetime,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_sat)
|
||||
{
|
||||
snprintf(buffer,1024,"&SAT=%d",edit_values.cut_sat);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_sat);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"SAT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
hold_datetime,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_start_daypart)
|
||||
{
|
||||
snprintf(buffer,1024,"&START_DAYPART=%s",curl_easy_escape(curl,edit_values.cut_start_daypart,0));
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"START_DAYPART",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cut_start_daypart,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_end_daypart)
|
||||
{
|
||||
snprintf(buffer,1024,"&END_DAYPART=%s",curl_easy_escape(curl,edit_values.cut_end_daypart,0));
|
||||
strcat(post,buffer);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"END_DAYPART",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
edit_values.cut_end_daypart,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_weight)
|
||||
{
|
||||
snprintf(buffer,1024,"&WEIGHT=%u",edit_values.cut_weight);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_weight);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"WEIGHT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_validity)
|
||||
{
|
||||
snprintf(buffer,1024,"&VALIDITY=%u",edit_values.cut_validity);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%u",edit_values.cut_validity);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"VALIDITY",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_coding_format)
|
||||
{
|
||||
snprintf(buffer,1024,"&CODING_FORMAT=%u",edit_values.cut_coding_format);
|
||||
strcat(post,buffer);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_sample_rate)
|
||||
{
|
||||
snprintf(buffer,1024,"&SAMPLE_RATE=%u",edit_values.cut_sample_rate);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%u",edit_values.cut_coding_format);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CODING_FORMAT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_bit_rate)
|
||||
{
|
||||
snprintf(buffer,1024,"&BIT_RATE=%u",edit_values.cut_bit_rate);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%u",edit_values.cut_bit_rate);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"BIT_RATE",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_channels)
|
||||
{
|
||||
snprintf(buffer,1024,"&CHANNELS=%u",edit_values.cut_channels);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%u",edit_values.cut_channels);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CHANNELS",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_play_gain)
|
||||
{
|
||||
snprintf(buffer,1024,"&PLAY_GAIN=%d",edit_values.cut_play_gain);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_play_gain);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PLAY_GAIN",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_start_point)
|
||||
{
|
||||
snprintf(buffer,1024,"&START_POINT=%d",edit_values.cut_start_point);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_start_point);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"START_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_end_point)
|
||||
{
|
||||
snprintf(buffer,1024,"&END_POINT=%d",edit_values.cut_end_point);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_end_point);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"END_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_fadeup_point)
|
||||
{
|
||||
snprintf(buffer,1024,"&FADEUP_POINT=%d",edit_values.cut_fadeup_point);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_fadeup_point);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"FADEUP_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_fadedown_point)
|
||||
{
|
||||
snprintf(buffer,1024,"&FADEDOWN_POINT=%d",edit_values.cut_fadedown_point);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_fadedown_point);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"FADEDOWN_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_segue_start_point)
|
||||
{
|
||||
snprintf(buffer,1024,"&SEGUE_START_POINT=%d",edit_values.cut_segue_start_point);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_segue_start_point);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"SEGUE_START_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_segue_end_point)
|
||||
{
|
||||
snprintf(buffer,1024,"&SEGUE_END_POINT=%d",edit_values.cut_segue_end_point);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_segue_end_point);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"SEGUE_END_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_segue_gain)
|
||||
{
|
||||
snprintf(buffer,1024,"&SEGUE_GAIN=%d",edit_values.cut_segue_gain);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_segue_gain);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"SEGUE_GAIN",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_hook_start_point)
|
||||
{
|
||||
snprintf(buffer,1024,"&HOOK_START_POINT=%d",edit_values.cut_hook_start_point);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_hook_start_point);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"HOOK_START_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_hook_end_point)
|
||||
{
|
||||
snprintf(buffer,1024,"&HOOK_END_POINT=%d",edit_values.cut_hook_end_point);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_hook_end_point);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"HOOK_END_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
|
||||
if (edit_values.use_cut_talk_start_point)
|
||||
{
|
||||
snprintf(buffer,1024,"&TALK_START_POINT=%d",edit_values.cut_talk_start_point);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_talk_start_point);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TALK_START_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
if (edit_values.use_cut_talk_end_point)
|
||||
{
|
||||
snprintf(buffer,1024,"&TALK_END_POINT=%d",edit_values.cut_talk_end_point);
|
||||
strcat(post,buffer);
|
||||
snprintf(buffer,255,"%d",edit_values.cut_talk_end_point);
|
||||
curl_formadd(first,
|
||||
last,
|
||||
CURLFORM_PTRNAME,
|
||||
"FALK_END_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
buffer,
|
||||
CURLFORM_END);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -112,7 +112,10 @@ int RD_EditCut(struct rd_cut *cut[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs);
|
||||
|
||||
void Build_Post_Cut_Fields(char *post, CURL * curl, struct edit_cut_values edit_values);
|
||||
void Build_Post_Cut_Fields(struct curl_httppost **first,
|
||||
struct curl_httppost **last,
|
||||
struct edit_cut_values edit_values);
|
||||
//void Build_Post_Cut_Fields(char *post, CURL * curl, struct edit_cut_values edit_values);
|
||||
|
||||
_MYRIVLIB_FINI_DECL
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the Export Cart Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -54,7 +55,6 @@ int RD_ExportCart( const char hostname[],
|
||||
const char user_agent[])
|
||||
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
FILE *fp;
|
||||
@ -65,6 +65,9 @@ int RD_ExportCart( const char hostname[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* Check File name */
|
||||
memset(checked_fname,'\0',sizeof(checked_fname));
|
||||
@ -80,33 +83,147 @@ int RD_ExportCart( const char hostname[],
|
||||
//
|
||||
// Generate POST Data
|
||||
//
|
||||
|
||||
if((curl=curl_easy_init())==NULL) {
|
||||
curl_easy_cleanup(curl);
|
||||
return -1;
|
||||
}
|
||||
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=1&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&CART_NUMBER=%u&CUT_NUMBER=%u&FORMAT=%d&CHANNELS=%d&SAMPLE_RATE=%d&BIT_RATE=%d&QUALITY=%d&START_POINT=%d&END_POINT=%d&NORMALIZATION_LEVEL=%d&ENABLE_METADATA=%d",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
cartnum,
|
||||
cutnum,
|
||||
format,
|
||||
channels,
|
||||
sample_rate,
|
||||
bit_rate,
|
||||
quality,
|
||||
start_point,
|
||||
end_point,
|
||||
normalization_level,
|
||||
enable_metadata);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"1",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cartnum);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cutnum);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CUT_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",format);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"FORMAT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",channels);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CHANNELS",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",sample_rate);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"SAMPLE_RATE",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",bit_rate);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"BIT_RATE",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",quality);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"QUALITY",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",start_point);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"START_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",end_point);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"END_POINT",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",normalization_level);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"NORMALIZATION_LEVEL",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",enable_metadata);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"ENABLE_METADATA",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
/*
|
||||
* Setup the CURL call
|
||||
*/
|
||||
|
||||
fp = fopen(checked_fname,"wb");
|
||||
if (!fp)
|
||||
{
|
||||
@ -132,7 +249,7 @@ int RD_ExportCart( const char hostname[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write_data);
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEDATA,fp);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_VERBOSE,0);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
|
||||
@ -154,6 +271,7 @@ int RD_ExportCart( const char hostname[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) { //Success
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the Export Peaks Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -45,7 +46,6 @@ int RD_ExportPeaks( const char hostname[],
|
||||
const char filename[],
|
||||
const char user_agent[])
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
FILE *fp;
|
||||
@ -56,6 +56,9 @@ int RD_ExportPeaks( const char hostname[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* Check File name */
|
||||
memset(checked_fname,'\0',sizeof(checked_fname));
|
||||
@ -79,17 +82,60 @@ int RD_ExportPeaks( const char hostname[],
|
||||
//
|
||||
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=16&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&CART_NUMBER=%u&CUT_NUMBER=%u",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
cartnum,
|
||||
cutnum);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"16",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cartnum);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cutnum);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CUT_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
/*
|
||||
* Setup the CURL call
|
||||
*/
|
||||
|
||||
fp = fopen(checked_fname,"wb");
|
||||
if (!fp)
|
||||
{
|
||||
@ -115,7 +161,7 @@ int RD_ExportPeaks( const char hostname[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__ExportPeaks_write_peaks_data);
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEDATA,fp);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_VERBOSE,0);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
|
||||
@ -137,6 +183,7 @@ int RD_ExportPeaks( const char hostname[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) { //Success
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the ListCart Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -180,7 +181,6 @@ int RD_ListCart(struct rd_cart *carts[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -189,6 +189,9 @@ int RD_ListCart(struct rd_cart *carts[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* Set number of recs so if fail already set */
|
||||
*numrecs = 0;
|
||||
@ -208,16 +211,53 @@ int RD_ListCart(struct rd_cart *carts[],
|
||||
__ListCartElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__ListCartElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=7&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&CART_NUMBER=%u",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
cartnumber);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"7",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cartnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEDATA,parser);
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__ListCartCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
|
||||
@ -250,6 +290,7 @@ int RD_ListCart(struct rd_cart *carts[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the LastCarts Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -182,7 +183,6 @@ int RD_ListCarts(struct rd_cart *carts[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -191,6 +191,8 @@ int RD_ListCarts(struct rd_cart *carts[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* Set number of recs so if fail already set */
|
||||
*numrecs = 0;
|
||||
@ -210,14 +212,63 @@ int RD_ListCarts(struct rd_cart *carts[],
|
||||
__ListCartsElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__ListCartsElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=6&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&GROUP_NAME=%s&FILTER=%s&TYPE=%s",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
curl_easy_escape(curl,group_name,0),
|
||||
curl_easy_escape(curl,filter,0),
|
||||
curl_easy_escape(curl,type,0));
|
||||
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"6",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"GROUP_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
group_name,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"FILTER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
filter,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TYPE",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
type,
|
||||
CURLFORM_END);
|
||||
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
curl_easy_setopt(curl, CURLOPT_USERAGENT,user_agent);
|
||||
@ -233,7 +284,7 @@ int RD_ListCarts(struct rd_cart *carts[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__ListCartsCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
|
||||
@ -255,6 +306,7 @@ int RD_ListCarts(struct rd_cart *carts[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the ListCartSchedulCodes Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -91,7 +92,6 @@ int RD_ListCartSchedCodes(struct rd_schedcodes *scodes[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -100,6 +100,9 @@ int RD_ListCartSchedCodes(struct rd_schedcodes *scodes[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* Set number of recs so if fail already set */
|
||||
*numrecs = 0;
|
||||
@ -119,16 +122,53 @@ int RD_ListCartSchedCodes(struct rd_schedcodes *scodes[],
|
||||
__ListCartSchedCodesElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__ListCartSchedCodesElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=27&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&CART_NUMBER=%u",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
cartnum);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"27",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cartnum);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEDATA,parser);
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__ListCartSchedCodesCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -162,6 +202,7 @@ int RD_ListCartSchedCodes(struct rd_schedcodes *scodes[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the LastCuts Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -226,7 +227,6 @@ int RD_ListCut(struct rd_cut *cuts[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -235,6 +235,9 @@ int RD_ListCut(struct rd_cut *cuts[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* Set number of recs so if fail already set */
|
||||
*numrecs = 0;
|
||||
@ -254,17 +257,62 @@ int RD_ListCut(struct rd_cut *cuts[],
|
||||
__ListCutElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__ListCutElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=8&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&CART_NUMBER=%u&CUT_NUMBER=%u",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
cartnumber,
|
||||
cutnumber);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"8",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cartnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cutnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CUT_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEDATA,parser);
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__ListCutCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -298,6 +346,7 @@ int RD_ListCut(struct rd_cut *cuts[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the LastCuts Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -227,7 +228,6 @@ int RD_ListCuts(struct rd_cut *cuts[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -236,6 +236,9 @@ int RD_ListCuts(struct rd_cut *cuts[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
char cart_buffer[7];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* Set number of recs so if fail already set */
|
||||
*numrecs = 0;
|
||||
@ -255,16 +258,54 @@ int RD_ListCuts(struct rd_cut *cuts[],
|
||||
__ListCutsElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__ListCutsElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=9&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&CART_NUMBER=%u",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
cartnumber);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"9",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
|
||||
snprintf(cart_buffer,7,"%u",cartnumber);
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"CART_NUMBER",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
cart_buffer,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEDATA,parser);
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__ListCutsCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -298,6 +339,7 @@ int RD_ListCuts(struct rd_cut *cuts[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the ListGroup Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -122,7 +123,6 @@ int RD_ListGroup(struct rd_group *grp[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -131,6 +131,8 @@ int RD_ListGroup(struct rd_group *grp[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* set number of recs so if fail already set */
|
||||
*numrecs = 0;
|
||||
@ -150,11 +152,47 @@ int RD_ListGroup(struct rd_group *grp[],
|
||||
__ListGroupElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__ListGroupElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=5&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s&GROUP_NAME=%s",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0),
|
||||
curl_easy_escape(curl,groupname,0));
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"5",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"GROUP_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
groupname,
|
||||
CURLFORM_END);
|
||||
|
||||
//
|
||||
// Check if User Agent Present otherwise set to default
|
||||
if (strlen(user_agent)> 0){
|
||||
@ -170,7 +208,7 @@ int RD_ListGroup(struct rd_group *grp[],
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__ListGroupCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -192,6 +230,7 @@ int RD_ListGroup(struct rd_group *grp[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Implementation of the ListGroups Rivendell Access Library
|
||||
*
|
||||
* (C) Copyright 2015 Todd Baker <bakert@rfa.org>
|
||||
* (C) Copyright 2018 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
|
||||
@ -122,7 +123,6 @@ int RD_ListGroups(struct rd_group *grps[],
|
||||
const char user_agent[],
|
||||
unsigned *numrecs)
|
||||
{
|
||||
char post[1500];
|
||||
char url[1500];
|
||||
CURL *curl=NULL;
|
||||
XML_Parser parser;
|
||||
@ -132,6 +132,8 @@ int RD_ListGroups(struct rd_group *grps[],
|
||||
char errbuf[CURL_ERROR_SIZE];
|
||||
CURLcode res;
|
||||
char user_agent_string[255];
|
||||
struct curl_httppost *first=NULL;
|
||||
struct curl_httppost *last=NULL;
|
||||
|
||||
/* set number of recs so if fail already set */
|
||||
*numrecs = 0;
|
||||
@ -151,15 +153,43 @@ int RD_ListGroups(struct rd_group *grps[],
|
||||
__ListGroupsElementEnd);
|
||||
XML_SetCharacterDataHandler(parser,__ListGroupsElementData);
|
||||
snprintf(url,1500,"http://%s/rd-bin/rdxport.cgi",hostname);
|
||||
snprintf(post,1500,"COMMAND=4&LOGIN_NAME=%s&PASSWORD=%s&TICKET=%s",
|
||||
curl_easy_escape(curl,username,0),
|
||||
curl_easy_escape(curl,passwd,0),
|
||||
curl_easy_escape(curl,ticket,0));
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"COMMAND",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
"4",
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"LOGIN_NAME",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
username,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"PASSWORD",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
passwd,
|
||||
CURLFORM_END);
|
||||
|
||||
curl_formadd(&first,
|
||||
&last,
|
||||
CURLFORM_PTRNAME,
|
||||
"TICKET",
|
||||
CURLFORM_COPYCONTENTS,
|
||||
ticket,
|
||||
CURLFORM_END);
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEDATA,parser);
|
||||
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__ListGroupsCallback);
|
||||
curl_easy_setopt(curl,CURLOPT_URL,url);
|
||||
curl_easy_setopt(curl,CURLOPT_POST,1);
|
||||
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,post);
|
||||
curl_easy_setopt(curl,CURLOPT_HTTPPOST,first);
|
||||
curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1);
|
||||
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errbuf);
|
||||
// curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
|
||||
@ -193,6 +223,7 @@ int RD_ListGroups(struct rd_group *grps[],
|
||||
/* The response OK - so figure out if we got what we wanted.. */
|
||||
|
||||
curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&response_code);
|
||||
curl_formfree(first);
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
if (response_code > 199 && response_code < 300) {
|
||||
|
@ -41,7 +41,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
@ -87,6 +87,7 @@ int main(int argc,char *argv[])
|
||||
//
|
||||
// Call the function
|
||||
//
|
||||
printf("USER: %s HOST: %s\n",user,host);
|
||||
int result=RD_AddCart(&cart,
|
||||
host,
|
||||
user,
|
||||
|
@ -41,7 +41,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -38,7 +38,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -39,7 +39,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -41,7 +41,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -36,7 +36,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -41,8 +41,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -35,7 +35,7 @@ int main(int argc,char *argv[])
|
||||
char *host;
|
||||
char *user;
|
||||
char *passwd;
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -37,7 +37,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -34,7 +34,7 @@ int main(int argc,char *argv[])
|
||||
char *host;
|
||||
char *user;
|
||||
char *passwd;
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
char ticket[41]="";
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
|
@ -41,7 +41,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -41,7 +41,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -40,7 +40,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -39,7 +39,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -45,7 +45,7 @@ int main(int argc,char *argv[])
|
||||
char title[BUFSIZ]="";
|
||||
struct rd_cartimport *cartimport=0;
|
||||
unsigned numrecs;
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -39,7 +39,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -36,7 +36,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -39,7 +39,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -41,7 +41,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -40,7 +40,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -39,7 +39,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -36,7 +36,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -38,7 +38,7 @@ int main(int argc,char *argv[])
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char starttime_buf[15];
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -43,7 +43,7 @@ int main(int argc,char *argv[])
|
||||
char ticket[41]="";
|
||||
char filter[255];
|
||||
long int recent=0;
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -36,7 +36,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -39,7 +39,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -36,7 +36,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -37,7 +37,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -38,7 +38,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -36,7 +36,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
struct save_loghdr_values hdr_values;
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
|
@ -42,7 +42,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
@ -39,7 +39,7 @@ int main(int argc,char *argv[])
|
||||
char *user;
|
||||
char *passwd;
|
||||
char ticket[41]="";
|
||||
char user_agent[255];
|
||||
char user_agent[255]={0};
|
||||
|
||||
/* Get the Rivendell Host, User and Password if set in env */
|
||||
if (getenv("RIVHOST")!=NULL) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user