Пример #1
0
int main(int argc, char **argv) {
  Options options(argc, argv, "sA: dA:");
  int option;
  if (argc < 2) {
    usage(argv[0]);
    return 1;
  }
  while ((option = options.getOption()) != -1) {
    if (!options) {
      print_error(argv[0], options.error());
      return 1;
    }
    switch (option) {
      case SOURCE_ADDRESS:
        sourceAddressRange = cidrToRange(options.getArgument());
        break;
      case DESTINATION_ADDRESS:
        destinationAddressRange = cidrToRange(options.getArgument());
        break;
    }
  }
  if (options.getIndex() == argc) {
    usage(argv[0]);
    return 1;
  }
  FlatFileReader<FlowStats> reader;
  FlowStats flowStats;
  for (int fileNumber = options.getIndex(); fileNumber < argc; ++fileNumber) { 
    if (access(argv[fileNumber], R_OK) != 0) {
      print_error(argv[0], argv[fileNumber], strerror(errno));
      if (fileNumber < (argc - 1)) {
        cout << endl;
      }
    }
    else {
	  if (reader.open(argv[fileNumber]) != E_SUCCESS) {
	  	cerr << "Error opening file: " << argv[fileNumber] << endl;
		return 1;
	  }
      while (reader.read(flowStats) == E_SUCCESS) {
        printFlow(flowStats);
      }
	  if (reader.close() != E_SUCCESS) {
	  	cerr << "Error closing reader!" << endl;
		return 1;
	  }
    }
  }
  return 0;
}
Пример #2
0
int main(int argc, char *argv[]) {
  Options options(argc, argv, "cA: sA:");
  int option;
  vector <string> files;
  bool error = false;
  if (argc < 2) {
    usage(argv[0]);
    return 1;
  }
  while ((option = options.getOption()) != -1) {
    if (!options) {
      cerr << argv[0] << ": " << options.error() << endl;
      return 1;
    }
    switch (option) {
     case CLIENT_ADDRESS:
        clientAddressRanges.push_back(cidrToRange(options.getArgument()));
        break;
      case SERVER_ADDRESS:
        serverAddressRanges.push_back(cidrToRange(options.getArgument()));
        break;
    }
  }
  if (options.getIndex() == argc) {
    usage(argv[0]);
    return 1;
  }
  for (int file = options.getIndex(); file < argc; ++file) { 
    if (access(argv[file], R_OK) != 0) {
      cerr << argv[0] << ": " << argv[file] << ": " << strerror(errno) << endl;
      error = true;
    }
    else {
      files.push_back(argv[file]);
    }
  }
  if (files.empty()) {
    return 1;
  }
  if (error) {
    cout << endl;
  }
  FlatFileReader<HTTPResponse> reader;
  HTTPResponse http;
  ErrorStatus errorStatus;
  for (vector<string>::iterator file(files.begin());
  	   file != files.end();
	   ++file)
  {
  	if (reader.open(*file) != E_SUCCESS) {
		cerr << "Unable to open '" << *file << "'" << endl;
		return 1;
	}
	while ((errorStatus = reader.read(http)) == E_SUCCESS) {
	  printHTTPResponseRecord(http);
	}
	if (errorStatus != E_EOF) {
		cerr << "Error reading from '" << *file << "'" << endl;
		return 1;
	}
	if (reader.close() != E_SUCCESS) {
		cerr << "Error closing '" << *file << "'" << endl;
		return 1;
	}
  }

  return 0;
}