Пример #1
0
Cjdnsadmin.connect((err, cjdns) => {
    if (err) {
        console.error(err.message);
        return;
    }
    /*::if (!cjdns) { throw new Error(); }*/
    Cjdnsniff.sniffTraffic(cjdns, 'CJDHT', (err, ev) => {
        if (!ev) { throw err; }
        ev.on('error', (e) => { console.error(e); });
        ev.on('message', (msg) => {
            /*::msg = (msg:Cjdnsniff_BencMsg_t);*/
            const pr = [];
            pr.push(msg.routeHeader.isIncoming ? '>' : '<');
            pr.push('v' + msg.routeHeader.version);
            pr.push(msg.routeHeader.switchHeader.label);
            pr.push(msg.routeHeader.ip);
            //console.log(msg.routeHeader);
            const qb = msg.contentBenc.q;
            if (!qb) {
                pr.push('reply');
            } else {
                const q = qb.toString('utf8');
                pr.push(q);
                if (q === 'fn') {
                    if (!msg.contentBenc) { throw new Error(); }
                    pr.push(Cjdnskeys.ip6BytesToString(msg.contentBenc.tar));
                }
            }
            console.log(pr.join(' '));
        });
    });
});
Пример #2
0
Cjdnsadmin.connect((err, cjdns) => {
    if (err) {
        console.error(err.message);
        return;
    }
    /*::if (!cjdns) { throw new Error(); }*/
    Cjdnsniff.sniffTraffic(cjdns, 'CTRL', (err, ev) => {
        if (!ev) { throw err; }
        ev.on('error', (e) => { console.error(e); });
        ev.on('message', (msg) => {
            /*::msg = (msg:Cjdnsniff_CtrlMsg_t);*/
            const pr = [];
            pr.push(msg.routeHeader.isIncoming ? '>' : '<');
            pr.push(msg.routeHeader.switchHeader.label);
            pr.push(msg.content.type);
            if (msg.content.type === 'ERROR') {
                const content = (msg.content/*:Cjdnsctrl_ErrMsg_t*/);
                pr.push(content.errType);
                console.log(content.switchHeader);
                if (content.switchHeader) {
                    pr.push('label_at_err_node:', content.switchHeader.label);
                }
                if (content.nonce) {
                    pr.push('nonce:', content.nonce);
                }
                pr.push(content.additional.toString('hex'));
            } else {
                const content = (msg.content/*:Cjdnsctrl_Ping_t*/);
                if (content.type in ['PING', 'PONG']) {
                    pr.push('v' + content.version);
                }
                if (content.type in ['KEYPING', 'KEYPONG']) {
                    pr.push(content.key);
                }
            }
            console.log(pr.join(' '));
        });
    });
});