Exemplo n.º 1
0
	void update(QSqlDatabase* db, Tag& tag) {
		QSqlQuery q(*db);
		QSqlRecord r;

		if(!QItem::isExists(db, "tags", "guid", QString::fromStdString(tag.guid), r))
		{
			r = QItem::load(db, "tags", "name", QString::fromUtf8(tag.name.c_str()));
			if(!r.isEmpty())
			{
				tag.name = QItem::resolveConflict(db, r, QString::fromStdString(tag.guid), DELETE_ITEM("tags", "guid", QString::fromStdString(tag.guid)), tag.name);
			}

			q.prepare(INSERT_TAG(tag.guid, tag.name, tag.parentGuid, tag.updateSequenceNum));
		}
		else if(r.value("updateSequenceNum").toInt() < tag.updateSequenceNum)
		{
			qDebug() << r.value("updateSequenceNum").toInt() << r;
			// update tag
			q.prepare(UPDATE_TAG(tag.guid, tag.name, tag.parentGuid, tag.updateSequenceNum));
		}
		else
			return;

		QItem::executeQuery(q);
	}
Exemplo n.º 2
0
PacketInfo* parse(char* buf, int len) {
	cout << "parselib " << PROTO << endl;

	PacketInfo *pi = new PacketInfo;

	//ieee80211_radiotap_header *rtap_header = new ieee80211_radiotap_header;
	INSERT_TAG("version", 1, 0);
	INSERT_TAG("hdr_len", 2, 2);
	INSERT_TAG("presence", 4, 4);

	uint data_offset = (uint)TAG("hdr_len");
	if (checkPresence(0, pi)) {
		// TSFT
		INSERT_TAG("tsft", 8, data_offset);
		data_offset += 8;
	}
	if (checkPresence(1, pi)) {
		// flags
		INSERT_TAG("flags", 1, data_offset);
		data_offset++;
	}
	if (checkPresence(2, pi)) {
		// Rate
		INSERT_TAG("rate", 1, data_offset);
		data_offset++;
	}
	if (checkPresence(3, pi)) {
		// Channel
		INSERT_TAG("channel.freq", 2, data_offset);
		INSERT_TAG("channel.flags", 2, data_offset+2);
		data_offset+=4;
	}
	if (checkPresence(4, pi)) {
		// FHSS
		INSERT_TAG("fhss.set", 1, data_offset);
		INSERT_TAG("fhss.pattern", 1, data_offset+1);
		data_offset+=2;
	}
	if (checkPresence(5, pi)) {
		// Antenna signal
		INSERT_TAG("ant_signal", 1, data_offset);
		data_offset++;
	}
	if (checkPresence(6, pi)) {
		// Antenna noise
		INSERT_TAG("ant_noise", 1, data_offset);
		data_offset++;
	}
	if (checkPresence(7, pi)) {
		// Lock quality
		INSERT_TAG("lock_quality", 2, data_offset);
		data_offset += 2;
	}
	if (checkPresence(8, pi)) {
		// TX attenuation
		INSERT_TAG("tx_att", 2, data_offset);
		data_offset+=2;
	}
	if (checkPresence(9, pi)) {
		// db TX attenuation
		INSERT_TAG("tx_att_db", 2, data_offset);
		data_offset+=2;
	}
	if (checkPresence(10, pi)) {
		// dBm TX power
		INSERT_TAG("tx_power", 1, data_offset);
		data_offset++;
	}
	if (checkPresence(11, pi)) {
		// Antenna
		INSERT_TAG("antenna", 1, data_offset);
		data_offset++;
	}
	if (checkPresence(12, pi)) {
		// dB antenna signal
		INSERT_TAG("ant_signal_db", 1, data_offset);
		data_offset++;
	}
	if (checkPresence(13, pi)) {
		// dB antenna noise
		INSERT_TAG("ant_noise_db", 1, data_offset);
		data_offset++;
	}
	if (checkPresence(14, pi)) {
		// RX flags
		INSERT_TAG("rx_flags", 2, data_offset);
		data_offset +=2;
	}

	INSERT_TAG("data", len - data_offset, data_offset);
	return pi;
};
Exemplo n.º 3
0
uint loadNextTag(PacketInfo* pi, char* buf, uint offset) {
	unsigned char id = buf[offset];
	char len = buf[offset+1];

	offset += 2;
	switch (id) {
	case 0:
		INSERT_STRING_TAG("mgmt.ssid", len, offset); break;
	case 1:
		INSERT_TAG("mgmt.rates", len, offset); break;
	case 2:
		INSERT_TAG("mgmt.fh_param", len, offset); break;
	case 3:
		INSERT_TAG("mgmt.ds_param", len, offset); break;
	case 4:
		INSERT_TAG("mgmt.cf_param", len, offset); break;
	case 5:
		INSERT_TAG("mgmt.tim", len, offset); break;
	case 6:
		INSERT_TAG("mgmt.ibss", len, offset); break;
	case 7: // 802.11d
		INSERT_STRING_TAG("mgmt.country", len, offset); break;
	case 8: // 802.11d
		INSERT_TAG("mgmt.hopping_params", len, offset); break;
	case 9: // 802.11d
		INSERT_TAG("mgmt.hopping_table", len, offset); break;
	case 10: // 802.11d
		INSERT_TAG("mgmt.request", len, offset); break;
	case 16:
		INSERT_STRING_TAG("mgmt.challenge", len, offset); break;
	case 42: // 802.11g
		INSERT_TAG("mgmt.erp", len, offset); break;
	case 50: // 802.11g
		INSERT_TAG("mgmt.rates_extended", len, offset); break;
	default:
		// numbered vendor-specific tag
		char t[32]; sprintf(t, "%d", id);
		string s = "mgmt.tag_" + string(t);
		INSERT_TAG(s, len, offset);
		break;
	}

	return offset+len;
}
Exemplo n.º 4
0
	void store(QSqlDatabase* db, Tag& tag) {
		QSqlQuery q(*db);

		q.prepare(INSERT_TAG(tag.guid, tag.name, tag.parentGuid, tag.updateSequenceNum));
		QItem::executeQuery(q);
	}