131 lines
3.0 KiB
C++
131 lines
3.0 KiB
C++
|
|
#include "ostprotolib.h"
|
|
#include "pcapfileformat.h"
|
|
#include "protocol.pb.h"
|
|
#include "protocolmanager.h"
|
|
#include "settings.h"
|
|
|
|
#include <QCoreApplication>
|
|
#include <QFile>
|
|
#include <QSettings>
|
|
#include <QString>
|
|
|
|
extern ProtocolManager *OstProtocolManager;
|
|
|
|
QSettings *appSettings;
|
|
|
|
#if defined(Q_OS_WIN32)
|
|
QString kGzipPathDefaultValue;
|
|
QString kDiffPathDefaultValue;
|
|
QString kAwkPathDefaultValue;
|
|
#endif
|
|
|
|
/*
|
|
* Dummy Stuff for successful linking
|
|
*/
|
|
const char *version = "";
|
|
const char *revision = "";
|
|
quint64 getDeviceMacAddress(
|
|
int /*portId*/,
|
|
int /*streamId*/,
|
|
int /*frameIndex*/)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
quint64 getNeighborMacAddress(
|
|
int /*portId*/,
|
|
int /*streamId*/,
|
|
int /*frameIndex*/)
|
|
{
|
|
return 0;
|
|
}
|
|
int usage(int /*argc*/, char* argv[])
|
|
{
|
|
printf("usage:\n");
|
|
printf("%s <command>\n", argv[0]);
|
|
printf("command -\n");
|
|
printf(" importpcap\n");
|
|
|
|
return 255;
|
|
}
|
|
/* End of dummy stuff */
|
|
|
|
int testImportPcap(int argc, char* argv[])
|
|
{
|
|
bool isOk;
|
|
QString error;
|
|
|
|
if (argc != 3)
|
|
{
|
|
printf("usage:\n");
|
|
printf("%s importpcap <pcapfile>\n", argv[0]);
|
|
return 255;
|
|
}
|
|
|
|
OstProto::StreamConfigList streams;
|
|
QString inFile(argv[2]);
|
|
|
|
isOk = pcapFileFormat.open(inFile, streams, error);
|
|
if (!error.isEmpty())
|
|
{
|
|
printf("%s: %s\n",
|
|
qPrintable(inFile), qPrintable(error));
|
|
}
|
|
|
|
if (!isOk)
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
QCoreApplication app(argc, argv);
|
|
int exitCode = 0;
|
|
|
|
// app init starts ...
|
|
#if defined(Q_OS_WIN32)
|
|
kGzipPathDefaultValue = app.applicationDirPath() + "/gzip.exe";
|
|
kDiffPathDefaultValue = app.applicationDirPath() + "/diff.exe";
|
|
kAwkPathDefaultValue = app.applicationDirPath() + "/gawk.exe";
|
|
#endif
|
|
|
|
app.setApplicationName("Ostinato");
|
|
app.setOrganizationName("Ostinato");
|
|
|
|
OstProtocolManager = new ProtocolManager();
|
|
|
|
/* (Portable Mode) If we have a .ini file in the same directory as the
|
|
executable, we use that instead of the platform specific location
|
|
and format for the settings */
|
|
QString portableIni = QCoreApplication::applicationDirPath()
|
|
+ "/ostinato.ini";
|
|
if (QFile::exists(portableIni))
|
|
appSettings = new QSettings(portableIni, QSettings::IniFormat);
|
|
else
|
|
appSettings = new QSettings();
|
|
|
|
OstProtoLib::setExternalApplicationPaths(
|
|
appSettings->value(kTsharkPathKey, kTsharkPathDefaultValue).toString(),
|
|
appSettings->value(kGzipPathKey, kGzipPathDefaultValue).toString(),
|
|
appSettings->value(kDiffPathKey, kDiffPathDefaultValue).toString(),
|
|
appSettings->value(kAwkPathKey, kAwkPathDefaultValue).toString());
|
|
|
|
// ... app init finished
|
|
|
|
//
|
|
// identify and run specified test
|
|
//
|
|
if (argc < 2)
|
|
exitCode = usage(argc, argv);
|
|
else if (strcmp(argv[1],"importpcap") == 0)
|
|
exitCode = testImportPcap(argc, argv);
|
|
else
|
|
exitCode = usage(argc, argv);
|
|
|
|
delete appSettings;
|
|
return exitCode;
|
|
}
|
|
|