135 lines
2.7 KiB
C++
135 lines
2.7 KiB
C++
/*
|
|
* Program.cpp
|
|
*
|
|
* Created on: 04.09.2015
|
|
* Author: jdi
|
|
*/
|
|
#include <iostream>
|
|
#include <algorithm>
|
|
|
|
#include "Options.h"
|
|
#include "Program.h"
|
|
#include "Host.h"
|
|
#include "Socket.h"
|
|
#include "Switch.h"
|
|
#include "Packet.h"
|
|
|
|
int Program::list() {
|
|
|
|
Host h = Host();
|
|
printf("List:\n");
|
|
Packet p = Packet(Packet::DISCOVERY);
|
|
p.setHostMac(h.getMac());
|
|
p.setPayload( { });
|
|
bytes a = p.getBytes();
|
|
p.encode(a);
|
|
|
|
try {
|
|
asio::io_service io_service;
|
|
Socket s(io_service);
|
|
s.setHostIp(h.getIp());
|
|
s.init(DST_PORT, SRC_PORT);
|
|
s.callback =
|
|
[](Packet a) {
|
|
if (options.flags & FLAG_HEADER) {
|
|
if (options.flags & FLAG_HEX) {
|
|
std::cout <<"Received Header:\n"<< a.getHead() <<"\n";
|
|
} else {
|
|
a.printHeader();
|
|
std::cout<<"\n";
|
|
}
|
|
}
|
|
if (options.flags & FLAG_HEX) {
|
|
std::cout <<"Received Payload:\n"<<a.getBody()<<"\n";
|
|
} else {
|
|
datasets d =a.getPayload();
|
|
Switch s = Switch();
|
|
s.parse(d);
|
|
std::cout <<"Devices:\n\t"<<s.settings.hostname<<" ("<< s.device.type<<")\tMAC: "<<s.device.mac<<"\tIP: "<<s.settings.ip_addr<<"\n";
|
|
}
|
|
return 1;
|
|
};
|
|
s.send(a);
|
|
io_service.run();
|
|
} catch (std::exception& e) {
|
|
std::cerr << "Exception: " << e.what() << "\n";
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
int Program::sniff() {
|
|
printf("Listening:\n");
|
|
try {
|
|
asio::io_service io_service;
|
|
Host h = Host();
|
|
Socket s(io_service);
|
|
s.setHostIp(h.getIp());
|
|
s.init(DST_PORT, SRC_PORT);
|
|
s.callback = [](Packet p) {
|
|
if (options.flags & FLAG_HEADER) {
|
|
if (options.flags & FLAG_HEX) {
|
|
std::cout <<"Received Header:\n\t"<< p.getHead() <<"\n";
|
|
} else {
|
|
p.printHeader();
|
|
printf("\n");
|
|
}
|
|
}
|
|
if (options.flags & FLAG_HEX) {
|
|
std::cout <<"Received Payload:\n\t"<<p.getBody()<<"\n";
|
|
} else {
|
|
for(auto a : p.getPayload()) {
|
|
dataset d = a.second;
|
|
std::cout<<"#"<<d.type<<"\tLength: "<<d.len<<"\n";
|
|
std::cout<<std::hex<< "\tHex: " <<d.value<<"\n";
|
|
//std::cout<<std::dec<<"\tDec: " << d.value<<"\n";
|
|
d.value.push_back(0U);
|
|
std::cout<<"\tString: " <<&d.value[0]<<"\n";
|
|
}
|
|
}
|
|
return 0;
|
|
};
|
|
s.listen();
|
|
io_service.run();
|
|
} catch (std::exception& e) {
|
|
std::cerr << "Exception: " << e.what() << "\n";
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
int Program::encode(std::string s) {
|
|
bytes d(s);
|
|
Packet p = Packet(Packet::DISCOVERY);
|
|
p.encode(d);
|
|
std::cout << d << std::endl;
|
|
return 0;
|
|
}
|
|
|
|
int Program::setProperty() {
|
|
return 0;
|
|
}
|
|
int Program::getProperty() {
|
|
|
|
return 0;
|
|
}
|
|
int Program::save() {
|
|
//File = fopen(otions.file)
|
|
return 0;
|
|
}
|
|
int Program::restore() {
|
|
//File = fopen(otions.file)
|
|
return 0;
|
|
}
|
|
int Program::flash() {
|
|
|
|
return 0;
|
|
}
|
|
int Program::reboot() {
|
|
|
|
return 0;
|
|
}
|
|
int Program::reset() {
|
|
|
|
return 0;
|
|
}
|