2017-12-16 Fred Gleason <fredg@paravelsystems.com>

* Added support for filepath wildcards in macro carts.
This commit is contained in:
Fred Gleason 2017-12-16 16:45:51 -05:00
parent 419640c9b2
commit e07cabc72f
30 changed files with 116 additions and 104 deletions

View File

@ -16493,3 +16493,5 @@
2017-12-15 Fred Gleason <fredg@paravelsystems.com>
* Updated 'NEWS'.
* Incremented the package version to 2.17.0int07.
2017-12-16 Fred Gleason <fredg@paravelsystems.com>
* Added support for filepath wildcards in macro carts.

View File

@ -697,6 +697,12 @@
<computeroutput>Paste</computeroutput> individual
lines both within a given cart or between carts.
</para>
<para>
In addition to RML code, lines can also contain host variables
(see <xref linkend="sect.rdadmin.manage_hosts.configuring_host_variables" />)
and filepath wildcards
(see <xref linkend="appendix.filepath_wildcards" />).
</para>
<para>
<mediaobject>
<imageobject>

View File

@ -154,17 +154,17 @@ MainObject::MainObject(QObject *parent)
exit(1);
}
//
// RIPCD Connection
//
filter_ripc=new RDRipc("");
filter_ripc->connectHost("localhost",RIPCD_TCP_PORT,rdconfig->password());
//
// Station Configuration
//
filter_rdstation=new RDStation(rdconfig->stationName());
//
// RIPCD Connection
//
filter_ripc=new RDRipc(filter_rdstation,rdconfig,this);
filter_ripc->connectHost("localhost",RIPCD_TCP_PORT,rdconfig->password());
//
// Validate Arguments
//

View File

@ -80,17 +80,17 @@ MainObject::MainObject(QObject *parent)
exit(256);
}
//
// RIPCD Connection
//
filter_ripc=new RDRipc("");
filter_ripc->connectHost("localhost",RIPCD_TCP_PORT,rd_config->password());
//
// Station Configuration
//
filter_rdstation=new RDStation(rd_config->stationName());
//
// RIPCD Connection
//
filter_ripc=new RDRipc(filter_rdstation,rd_config,this);
filter_ripc->connectHost("localhost",RIPCD_TCP_PORT,rd_config->password());
//
// RDCatchd Connection
//

View File

@ -84,17 +84,17 @@ MainObject::MainObject(QObject *parent)
exit(1);
}
//
// RIPCD Connection
//
filter_ripc=new RDRipc("");
filter_ripc->connectHost("localhost",RIPCD_TCP_PORT,rdconfig->password());
//
// Station Configuration
//
filter_rdstation=new RDStation(rdconfig->stationName());
//
// RIPCD Connection
//
filter_ripc=new RDRipc(filter_rdstation,rdconfig,this);
filter_ripc->connectHost("localhost",RIPCD_TCP_PORT,rdconfig->password());
//
// Read Arguments
//

View File

@ -365,5 +365,6 @@ QString RDDateTimeDecode(QString str,const QDateTime &datetime,
string+=field;
}
}
return string;
}

View File

@ -21,6 +21,7 @@
#include <qstringlist.h>
#include <rddb.h>
#include <rdescape_string.h>
#include <rdmacro_event.h>
#include <rdstation.h>
@ -250,11 +251,9 @@ void RDMacroEvent::exec(int line)
rml.setAddress(addr);
}
else {
sql=
QString().sprintf("select VARVALUE from HOSTVARS \
where (STATION_NAME=\"%s\")&&(NAME=\"%s\")",
(const char *)event_ripc->station(),
(const char *)stationname);
sql=QString("select VARVALUE from HOSTVARS where ")+
"(STATION_NAME=\""+RDEscapeString(event_ripc->station())+"\")&&"+
"(NAME=\""+RDEscapeString(stationname)+"\")";
q=new RDSqlQuery(sql);
if(q->first()) {
stationname=q->value(0).toString();

View File

@ -2,7 +2,7 @@
//
// Connection to the Rivendell Interprocess Communication Daemon
//
// (C) Copyright 2002-2003,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2003,2016-2017 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
@ -22,14 +22,18 @@
#include <qobject.h>
#include <qapplication.h>
#include <qdatetime.h>
#include <rddatedecode.h>
#include <rddb.h>
#include <rdripc.h>
RDRipc::RDRipc(QString stationname,QObject *parent)
//RDRipc::RDRipc(QString stationname,QObject *parent)
RDRipc::RDRipc(RDStation *station,RDConfig *config,QObject *parent)
: QObject(parent)
{
ripc_stationname=stationname;
ripc_station=station;
ripc_config=config;
ripc_onair_flag=false;
ripc_ignore_mask=false;
debug=false;
@ -62,7 +66,7 @@ QString RDRipc::user() const
QString RDRipc::station() const
{
return ripc_stationname;
return ripc_station->name();
}
@ -143,14 +147,8 @@ void RDRipc::sendRml(RDMacro *macro)
{
char buffer[RD_RML_MAX_LENGTH];
char cmd[RD_RML_MAX_LENGTH+4];
/*
int echo=0;
if(macro->echoRequested()) {
echo=1;
}
*/
Q_UINT16 port=RD_RML_NOECHO_PORT;
QDateTime now=QDateTime::currentDateTime();
if(macro->echoRequested()) {
port=RD_RML_ECHO_PORT;
@ -162,12 +160,13 @@ void RDRipc::sendRml(RDMacro *macro)
QString rmlline(buffer);
QString sql=QString().sprintf("select NAME,VARVALUE from HOSTVARS \
where STATION_NAME=\"%s\"",
(const char *)ripc_stationname);
(const char *)ripc_station->name());
RDSqlQuery *q=new RDSqlQuery(sql);
while(q->next()) {
rmlline.replace(q->value(0).toString(),q->value(1).toString());
}
delete q;
rmlline=RDDateTimeDecode(rmlline,now,ripc_station,ripc_config);
switch(macro->role()) {
case RDMacro::Cmd:
sprintf(cmd,"MS %s %d %s",(const char *)macro->address().toString(),

View File

@ -25,7 +25,9 @@
#include <qlabel.h>
#include <qtimer.h>
#include <rdconfig.h>
#include <rdmacro.h>
#include <rdstation.h>
#ifndef RDRIPC_H
#define RDRIPC_H
@ -38,7 +40,8 @@ class RDRipc : public QObject
{
Q_OBJECT
public:
RDRipc(QString stationname,QObject *parent=0);
// RDRipc(QString stationname,QObject *parent=0);
RDRipc(RDStation *station,RDConfig *config,QObject *parent=0);
~RDRipc();
QString user() const;
QString station() const;
@ -79,7 +82,9 @@ class RDRipc : public QObject
QSocket *ripc_socket;
QString ripc_user;
QString ripc_password;
QString ripc_stationname;
// QString ripc_stationname;
RDStation *ripc_station;
RDConfig *ripc_config;
bool ripc_onair_flag;
bool ripc_ignore_mask;
bool debug;

View File

@ -178,10 +178,10 @@ MainWidget::MainWidget(QWidget *parent)
char temp[256];
GetPrivateProfileString(RD_CONF_FILE,"Identity","Password",
temp,"",255);
rdripc=new RDRipc(admin_config->stationName(),this);
rdripc->connectHost("localhost",RIPCD_TCP_PORT,temp);
admin_station=new RDStation(admin_config->stationName(),this);
admin_system=new RDSystem();
rdripc=new RDRipc(admin_station,admin_config,this);
rdripc->connectHost("localhost",RIPCD_TCP_PORT,temp);
//
// Log In

View File

@ -342,7 +342,7 @@ MainWidget::MainWidget(QWidget *parent)
//
// RIPC Connection
//
rdripc=new RDRipc(air_config->stationName());
rdripc=new RDRipc(rdstation_conf,air_config,this);
connect(rdripc,SIGNAL(connected(bool)),this,SLOT(ripcConnected(bool)));
connect(rdripc,SIGNAL(userChanged()),this,SLOT(userData()));
connect(rdripc,SIGNAL(rmlReceived(RDMacro *)),

View File

@ -123,7 +123,7 @@ MainWidget::MainWidget(QWidget *parent)
//
// RIPC Connection
//
panel_ripc=new RDRipc(panel_config->stationName());
panel_ripc=new RDRipc(panel_station,panel_config,this);
connect(panel_ripc,SIGNAL(userChanged()),this,SLOT(userData()));
connect(panel_ripc,SIGNAL(rmlReceived(RDMacro *)),
this,SLOT(rmlReceivedData(RDMacro *)));

View File

@ -122,23 +122,23 @@ MainWidget::MainWidget(QWidget *parent)
exit(256);
}
//
// Station Configuration
//
rdstation_conf=new RDStation(config->stationName(),this);
cast_system=new RDSystem();
//
// RIPC Connection
//
#ifndef WIN32
cast_ripc=new RDRipc(config->stationName());
cast_ripc=new RDRipc(rdstation_conf,config,this);
connect(cast_ripc,SIGNAL(userChanged()),this,SLOT(userChangedData()));
cast_ripc->connectHost("localhost",RIPCD_TCP_PORT,config->password());
#else
cast_ripc=NULL;
#endif // WIN32
//
// Station Configuration
//
rdstation_conf=new RDStation(config->stationName(),this);
cast_system=new RDSystem();
//
// User
//

View File

@ -250,7 +250,7 @@ MainWidget::MainWidget(QWidget *parent)
//
// RIPC Connection
//
catch_ripc=new RDRipc(catch_config->stationName());
catch_ripc=new RDRipc(rdstation_conf,catch_config,this);
connect(catch_ripc,SIGNAL(connected(bool)),
this,SLOT(ripcConnectedData(bool)));
catch_user=NULL;

View File

@ -255,10 +255,15 @@ MainObject::MainObject(QObject *parent)
catch_xload_timer=new QTimer(this);
connect(catch_xload_timer,SIGNAL(timeout()),this,SLOT(updateXloadsData()));
//
// Station Configuration
//
catch_rdstation=new RDStation(catch_config->stationName());
//
// RIPCD Connection
//
catch_ripc=new RDRipc(catch_config->stationName());
catch_ripc=new RDRipc(catch_rdstation,catch_config,this);
catch_ripc->connectHost("localhost",RIPCD_TCP_PORT,catch_config->password());
connect(catch_ripc,SIGNAL(rmlReceived(RDMacro *)),
this,SLOT(rmlReceivedData(RDMacro *)));
@ -270,11 +275,6 @@ MainObject::MainObject(QObject *parent)
//
catch_system=new RDSystem();
//
// Station Configuration
//
catch_rdstation=new RDStation(catch_config->stationName());
//
// CAE Connection
//

View File

@ -211,7 +211,7 @@ MainWidget::MainWidget(QWidget *parent)
lib_filter_mode=rdstation_conf->filterMode();
rdaudioport_conf=new RDAudioPort(lib_config->stationName(),
rdlibrary_conf->inputCard());
rdripc=new RDRipc(lib_config->stationName());
rdripc=new RDRipc(rdstation_conf,lib_config,this);
connect(rdripc,SIGNAL(connected(bool)),this,SLOT(connectedData(bool)));
connect(rdripc,SIGNAL(userChanged()),this,SLOT(userData()));
rdripc->connectHost("localhost",RIPCD_TCP_PORT,lib_config->password());

View File

@ -187,7 +187,7 @@ MainWidget::MainWidget(QWidget *parent)
// RIPC Connection
//
#ifndef WIN32
rdripc=new RDRipc(log_config->stationName());
rdripc=new RDRipc(rdstation_conf,log_config,this);
connect(rdripc,SIGNAL(connected(bool)),this,SLOT(connectedData(bool)));
connect(rdripc,SIGNAL(userChanged()),this,SLOT(userData()));
rdripc->connectHost("localhost",RIPCD_TCP_PORT,log_config->password());

View File

@ -127,20 +127,20 @@ MainWidget::MainWidget(QWidget *parent)
exit(256);
}
//
// Station
//
login_station=new RDStation(login_config->stationName());
//
// RIPC Connection
//
login_ripc=new RDRipc(login_config->stationName());
login_ripc=new RDRipc(login_station,login_config,this);
connect(login_ripc,SIGNAL(connected(bool)),this,SLOT(connectedData(bool)));
connect(login_ripc,SIGNAL(userChanged()),this,SLOT(userData()));
login_ripc->connectHost("localhost",RIPCD_TCP_PORT,
login_config->password());
//
// Station
//
login_station=new RDStation(login_config->stationName());
//
// System
//

View File

@ -164,7 +164,7 @@ MainWidget::MainWidget(QWidget *parent)
//
// RIPC Connection
//
rdripc=new RDRipc(log_config->stationName());
rdripc=new RDRipc(rdstation_conf,log_config,this);
connect(rdripc,SIGNAL(userChanged()),this,SLOT(userData()));
rdripc->connectHost("localhost",RIPCD_TCP_PORT,log_config->password());

View File

@ -172,7 +172,7 @@ MainWidget::MainWidget(QWidget *parent)
//
// RIPC Connection
//
rdripc=new RDRipc(panel_config->stationName());
rdripc=new RDRipc(rdstation_conf,panel_config,this);
connect(rdripc,SIGNAL(userChanged()),this,SLOT(userData()));
connect(rdripc,SIGNAL(rmlReceived(RDMacro *)),
this,SLOT(rmlReceivedData(RDMacro *)));

View File

@ -93,7 +93,7 @@ MainObject::MainObject(QObject *parent)
// RIPC Connection
//
edit_user=NULL;
edit_ripc=new RDRipc(edit_config->stationName());
edit_ripc=new RDRipc(edit_station,edit_config,this);
connect(edit_ripc,SIGNAL(userChanged()),this,SLOT(userData()));
edit_ripc->connectHost("localhost",RIPCD_TCP_PORT,edit_config->password());
}

View File

@ -135,7 +135,7 @@ MainObject::MainObject(QObject *parent)
//
// RIPC Connection
//
del_ripc=new RDRipc(del_config->stationName());
del_ripc=new RDRipc(del_station,del_config,this);
connect(del_ripc,SIGNAL(userChanged()),this,SLOT(userData()));
del_ripc->connectHost("localhost",RIPCD_TCP_PORT,del_config->password());

View File

@ -107,7 +107,7 @@ MainWidget::MainWidget(QWidget *parent)
//
dg_station=new RDStation(dg_config->stationName(),this);
dg_library_conf=new RDLibraryConf(dg_config->stationName(),0);
dg_ripc=new RDRipc(dg_config->stationName(),this);
dg_ripc=new RDRipc(dg_station,dg_config,this);
connect(dg_ripc,SIGNAL(userChanged()),this,SLOT(userChangedData()));
dg_ripc->connectHost("localhost",RIPCD_TCP_PORT,dg_config->password());

View File

@ -117,7 +117,7 @@ MainWidget::MainWidget(QWidget *parent)
dg_system=new RDSystem();
dg_station=new RDStation(dg_config->stationName(),this);
dg_library_conf=new RDLibraryConf(dg_config->stationName(),0);
dg_ripc=new RDRipc(dg_config->stationName(),this);
dg_ripc=new RDRipc(dg_station,dg_config,this);
connect(dg_ripc,SIGNAL(userChanged()),this,SLOT(userChangedData()));
dg_ripc->connectHost("localhost",RIPCD_TCP_PORT,dg_config->password());

View File

@ -247,19 +247,19 @@ MainObject::MainObject(QObject *parent)
exit(256);
}
//
// RIPC Connection
//
export_ripc=new RDRipc(export_config->stationName());
connect(export_ripc,SIGNAL(userChanged()),this,SLOT(userData()));
export_ripc->
connectHost("localhost",RIPCD_TCP_PORT,export_config->password());
//
// Station Configuration
//
export_station=new RDStation(export_config->stationName());
//
// RIPC Connection
//
export_ripc=new RDRipc(export_station,export_config,this);
connect(export_ripc,SIGNAL(userChanged()),this,SLOT(userData()));
export_ripc->
connectHost("localhost",RIPCD_TCP_PORT,export_config->password());
//
// User
//

View File

@ -112,10 +112,15 @@ MainWidget::MainWidget(QWidget *parent)
}
new RDDbHeartbeat(gpi_config->mysqlHeartbeatInterval(),this);
//
// RDStation
//
gpi_station=new RDStation(gpi_config->stationName());
//
// RIPC Connection
//
gpi_ripc=new RDRipc(gpi_config->stationName());
gpi_ripc=new RDRipc(gpi_station,gpi_config,this);
gpi_ripc->setIgnoreMask(true);
connect(gpi_ripc,SIGNAL(userChanged()),this,SLOT(userData()));
connect(gpi_ripc,SIGNAL(gpiStateChanged(int,int,bool)),
@ -132,11 +137,6 @@ MainWidget::MainWidget(QWidget *parent)
this,SLOT(gpoCartChangedData(int,int,int,int)));
gpi_ripc->connectHost("localhost",RIPCD_TCP_PORT,gpi_config->password());
//
// RDStation
//
gpi_station=new RDStation(gpi_config->stationName());
//
// RDMatrix;
//

View File

@ -447,19 +447,19 @@ MainObject::MainObject(QObject *parent)
}
new RDDbHeartbeat(import_config->mysqlHeartbeatInterval(),this);
//
// RIPC Connection
//
import_ripc=new RDRipc(import_config->stationName());
connect(import_ripc,SIGNAL(userChanged()),this,SLOT(userData()));
import_ripc->
connectHost("localhost",RIPCD_TCP_PORT,import_config->password());
//
// Station Configuration
//
import_station=new RDStation(import_config->stationName());
//
// RIPC Connection
//
import_ripc=new RDRipc(import_station,import_config,this);
connect(import_ripc,SIGNAL(userChanged()),this,SLOT(userData()));
import_ripc->
connectHost("localhost",RIPCD_TCP_PORT,import_config->password());
//
// User
//

View File

@ -189,7 +189,7 @@ MainObject::MainObject(QObject *parent)
// RIPCD Connection
//
set_user=NULL;
set_ripc=new RDRipc(set_config->stationName(),this);
set_ripc=new RDRipc(set_station,set_config,this);
connect(set_ripc,SIGNAL(userChanged()),this,SLOT(userChangedData()));
set_ripc->connectHost("localhost",RIPCD_TCP_PORT,set_config->password());
}

View File

@ -270,10 +270,15 @@ MainObject::MainObject(QObject *parent)
}
new RDDbHeartbeat(render_config->mysqlHeartbeatInterval(),this);
//
// Station Configuration
//
render_station=new RDStation(render_config->stationName());
//
// RIPC Connection
//
render_ripc=new RDRipc(render_config->stationName());
render_ripc=new RDRipc(render_station,render_config,this);
connect(render_ripc,SIGNAL(userChanged()),this,SLOT(userData()));
render_ripc->
connectHost("localhost",RIPCD_TCP_PORT,render_config->password());
@ -286,11 +291,6 @@ MainObject::MainObject(QObject *parent)
render_settings.setSampleRate(render_system->sampleRate());
}
//
// Station Configuration
//
render_station=new RDStation(render_config->stationName());
//
// User
//

View File

@ -77,18 +77,18 @@ MainObject::MainObject(QObject *parent)
}
new RDDbHeartbeat(rd_config->mysqlHeartbeatInterval(),this);
//
// RIPCD Connection
//
shim_ripc=new RDRipc("");
shim_ripc->connectHost("localhost",RIPCD_TCP_PORT,rd_config->password());
//
// Station Configuration
//
shim_rdstation=new RDStation(rd_config->stationName());
shim_address=shim_rdstation->address();
//
// RIPCD Connection
//
shim_ripc=new RDRipc(shim_rdstation,rd_config,this);
shim_ripc->connectHost("localhost",RIPCD_TCP_PORT,rd_config->password());
//
// TTY Device
//