#!/usr/bin/python3
# You may redistribute this program and/or modify it under the terms of
# the GNU General Public License as published by the Free Software Foundation,
# either version 3 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

from cjdnsadmin.cjdnsadmin import connectWithAdminInfo;
from cjdnsadmin.publicToIp6 import PublicToIp6_convert;

cjdns = connectWithAdminInfo();

handles = [];
i = 0;
while True:
    resp = cjdns.SessionManager_getHandles(i)
    for h in resp[b'handles']:
        handles.append(h);
    if not b'more' in resp:
        break
    i += 1

for h in handles:
    r = cjdns.SessionManager_sessionStats(h);
    a = r[b'addr'].decode().split('.')
    r[b'version'] = int(a[0][1:])
    r[b'publicKey'] = '.'.join(a[-2:])
    print(r[b'ip6'].decode() + '  ' + r[b'publicKey'] +
        ' v' + str(r[b'version']) +
        ' dup ' + str(r[b'duplicates']) +
        ' los ' + str(r[b'lostPackets']) +
        ' oor ' + str(r[b'receivedOutOfRange']) +
        ' ' + r[b'state'].decode().replace('CryptoAuth_', '') + ' ' + str(h));
