From 5519f9d6e10fcd153171e1511d8b49961c32c158 Mon Sep 17 00:00:00 2001 From: Felix Richter Date: Tue, 24 May 2011 21:39:20 +0200 Subject: Initial Commit --- cholerab/enterprise/README | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 cholerab/enterprise/README (limited to 'cholerab') diff --git a/cholerab/enterprise/README b/cholerab/enterprise/README new file mode 100644 index 00000000..28b4551a --- /dev/null +++ b/cholerab/enterprise/README @@ -0,0 +1,33 @@ +Enterprise Patterns +================== +Stellt sicher, dass das richtige passiert, egal was gemacht wird + +Enterprise Loop +--------------- + +Enterprise Exception Handling +----------------------------- +ggf ersetzbar durch enterprise loop. + + +Enterprise Installation +----------------------- + +Rebooting +---------- + +Enterprise Einschalter +-------------------- + + +Enterprise Shutdown +------------------ +Mittel der Wahl um einen Shutdown zu forcen +Bsp: Not-Aus also kommerzielles Produkt + +Enterprise Thinking +------------------- +Prozess um auf Enterprise Patterns + +Bug-Driven Development +--------------------- -- cgit v1.2.3 From 56c1a9da28939d88ddc9e59d60b669736fcff1d3 Mon Sep 17 00:00:00 2001 From: Felix Richter Date: Thu, 26 May 2011 01:55:57 -0700 Subject: Added Enterprise Rooting --- cholerab/enterprise/README | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'cholerab') diff --git a/cholerab/enterprise/README b/cholerab/enterprise/README index 28b4551a..a4f9d902 100644 --- a/cholerab/enterprise/README +++ b/cholerab/enterprise/README @@ -19,7 +19,16 @@ Rebooting Enterprise Einschalter -------------------- - +Enterprise Root +--------------- +scripts which need root access but are called with lower privileges. The Enterprise Root Pattern provides a Solution for this issue by calling the script itself as sudo. + +if [ ! `id -u` -eq "0" ] +then + echo "not root, trying sudo" + exec sudo "$0" "$@" +fi + Enterprise Shutdown ------------------ Mittel der Wahl um einen Shutdown zu forcen -- cgit v1.2.3 From 768d611e6df93c4d30df7eb3a454373f93aa862e Mon Sep 17 00:00:00 2001 From: Felix Richter Date: Thu, 26 May 2011 10:12:18 -0700 Subject: added enterprise deep copy --- cholerab/enterprise/README | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'cholerab') diff --git a/cholerab/enterprise/README b/cholerab/enterprise/README index a4f9d902..36bb33f7 100644 --- a/cholerab/enterprise/README +++ b/cholerab/enterprise/README @@ -34,6 +34,10 @@ Enterprise Shutdown Mittel der Wahl um einen Shutdown zu forcen Bsp: Not-Aus also kommerzielles Produkt +Enterprise Deep Copy +-------------------- +var copy = JSON.parse(JSON.stringify(source)) + Enterprise Thinking ------------------- Prozess um auf Enterprise Patterns -- cgit v1.2.3 From f4b026b279a4f2a2370bcbfe31df1931bcf2bc1f Mon Sep 17 00:00:00 2001 From: tv <4z3.pp@src.mine.nu> Date: Thu, 26 May 2011 10:29:34 -0700 Subject: Edited README via GitHub --- cholerab/enterprise/README | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'cholerab') diff --git a/cholerab/enterprise/README b/cholerab/enterprise/README index 36bb33f7..6938fbe0 100644 --- a/cholerab/enterprise/README +++ b/cholerab/enterprise/README @@ -29,18 +29,20 @@ then exec sudo "$0" "$@" fi + Enterprise Shutdown ------------------ -Mittel der Wahl um einen Shutdown zu forcen -Bsp: Not-Aus also kommerzielles Produkt +Mittel der Wahl um einen Shutdown zu erzwingen + +Bsp: das Not-Aus in der Maschinensicherheit Enterprise Deep Copy -------------------- -var copy = JSON.parse(JSON.stringify(source)) +Bsp: var copy = JSON.parse(JSON.stringify(source)) Enterprise Thinking ------------------- -Prozess um auf Enterprise Patterns +Prozess um auf Enterprise Patterns zu kommen Bug-Driven Development --------------------- -- cgit v1.2.3 From 2b66f650a36d970e7e8fc77cf9d226e947af4a43 Mon Sep 17 00:00:00 2001 From: tv <4z3.pp@src.mine.nu> Date: Thu, 26 May 2011 10:34:21 -0700 Subject: Edited README via GitHub --- cholerab/enterprise/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cholerab') diff --git a/cholerab/enterprise/README b/cholerab/enterprise/README index 6938fbe0..f31850f3 100644 --- a/cholerab/enterprise/README +++ b/cholerab/enterprise/README @@ -28,7 +28,7 @@ then echo "not root, trying sudo" exec sudo "$0" "$@" fi - + // enterprise ist, wenn ... trotzdem matcht Enterprise Shutdown ------------------ -- cgit v1.2.3 From 5fc4494a2851705a4fc885a1a12aed85bb1fbb24 Mon Sep 17 00:00:00 2001 From: Felix Richter Date: Sun, 29 May 2011 13:16:10 -0700 Subject: added supernintendo pattern --- cholerab/enterprise/README | 3 +++ 1 file changed, 3 insertions(+) (limited to 'cholerab') diff --git a/cholerab/enterprise/README b/cholerab/enterprise/README index f31850f3..cf54c1e9 100644 --- a/cholerab/enterprise/README +++ b/cholerab/enterprise/README @@ -19,6 +19,9 @@ Rebooting Enterprise Einschalter -------------------- +Supernintendo Pattern +--------------------- + Enterprise Root --------------- scripts which need root access but are called with lower privileges. The Enterprise Root Pattern provides a Solution for this issue by calling the script itself as sudo. -- cgit v1.2.3 From b895c26cd939ce3d531ae1b74e3d4a96b6b2a417 Mon Sep 17 00:00:00 2001 From: Felix Richter Date: Sun, 29 May 2011 14:17:23 +0200 Subject: README: initial commit --- cholerab/README | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 cholerab/README (limited to 'cholerab') diff --git a/cholerab/README b/cholerab/README new file mode 100644 index 00000000..f943b315 --- /dev/null +++ b/cholerab/README @@ -0,0 +1,38 @@ + +~/p/krebscode/painload/infest/home + aggressive + cooperative + -- currently it is aggressive and stupid + +~/p/krebscode/painload/infest/etc + aggressive + cooperative + -- currently it is aggressive and stupid + + +- node install script + + +=== + +ssh root@pornocauster -p 2222 +git clone https://github.com/krebscode/painload.git /krebs +cd /krebs +apt-get install --yes make +make infest +shutdown -r now + +ssh -i .ssh/krebs/also.id_rsa krebs@pornocauster -p 2222 + +=== +- conflicting ~/.profile +- morse: beep not found wegen rc.local +- /etc/.vimrc legacy compat + + +~/p/krebscode/painload/node/Makefile + ./configure --prefix=$HOME + and ensure that the resulting bin is in $PATH + which node or build + + -- cgit v1.2.3 From ec4124e06ea384b1264760c6d316d941274c1f6d Mon Sep 17 00:00:00 2001 From: Felix Richter Date: Mon, 30 May 2011 01:06:46 +0200 Subject: updated todos for krebs/upm UMP: TODO file, use grep to find your action-points (tv,pfleidi,makefu) README: --- cholerab/README | 3 ++- cholerab/UPM | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 cholerab/UPM (limited to 'cholerab') diff --git a/cholerab/README b/cholerab/README index f943b315..eb2e23df 100644 --- a/cholerab/README +++ b/cholerab/README @@ -24,7 +24,8 @@ shutdown -r now  ssh -i .ssh/krebs/also.id_rsa krebs@pornocauster -p 2222 -=== +=== + - conflicting ~/.profile - morse: beep not found wegen rc.local - /etc/.vimrc legacy compat diff --git a/cholerab/UPM b/cholerab/UPM new file mode 100644 index 00000000..d1d52c94 --- /dev/null +++ b/cholerab/UPM @@ -0,0 +1,2 @@ +2011-05-30 +- tv,makefu: Implement database interface created by pfleidi -- cgit v1.2.3 From 53831e7260669e8788f75d39b881812a09c756c4 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 31 May 2011 16:16:10 +0200 Subject: bump! --- cholerab/README | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) (limited to 'cholerab') diff --git a/cholerab/README b/cholerab/README index f943b315..69574f69 100644 --- a/cholerab/README +++ b/cholerab/README @@ -14,15 +14,17 @@ === - -ssh root@pornocauster -p 2222 -git clone https://github.com/krebscode/painload.git /krebs -cd /krebs -apt-get install --yes make -make infest -shutdown -r now - -ssh -i .ssh/krebs/also.id_rsa krebs@pornocauster -p 2222 +# this is the current installation process [by example] + + ssh root@pornocauster -p 2222 + git clone https://github.com/krebscode/painload.git /krebs + cd /krebs + apt-get install --yes make + make infest + shutdown -r now +  + ssh -i .ssh/krebs/also.id_rsa krebs@pornocauster -p 2222 + === - conflicting ~/.profile @@ -36,3 +38,25 @@ ssh -i .ssh/krebs/also.id_rsa krebs@pornocauster -p 2222 which node or build +//krebscode/painload/retiolum/scripts/tinc_setup/install.sh or something + should be called by painload/infest + and should be enterprise enough to be infested multiple times + -- please see how infest/bin/make-patch is generating a patch, that gets + applied by Makefile + +//krebscode/painload/noise + - should be infested host-specifically + - i.e. to start automatically at KREBS + +//krebscode/painload/noise + - NOISE-STREAMS-MODULE + - should have a module to allow switching of the streams + - should have a module to allow managing of streams + - is this mergable with noise/modules/stream [by chris] + - or can we replace noise/modules/stream + +//krebscode/painload/streams + - should be infested host-specifically + - i.e. to start automatically at KREBS + - the last stream should be playbacked + - should be controlable by noise [see NOISE-STREAM-MODULE] -- cgit v1.2.3 From 1aee8d1bb1cae47262dd9f9983268bc433aec555 Mon Sep 17 00:00:00 2001 From: Felix Richter Date: Fri, 3 Jun 2011 00:05:41 +0200 Subject: added retiolum TODO file --- cholerab/RETIOLUM | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cholerab/RETIOLUM (limited to 'cholerab') diff --git a/cholerab/RETIOLUM b/cholerab/RETIOLUM new file mode 100644 index 00000000..bd511472 --- /dev/null +++ b/cholerab/RETIOLUM @@ -0,0 +1,4 @@ +Makefile: + update: + when hosts folder is not yet a git repository, check out + http://github.com/krebscode/hosts.git (no https, because this fails on old systems) -- cgit v1.2.3 From 522861a259d4d7ec833a371caf27e2bb49ae4320 Mon Sep 17 00:00:00 2001 From: Felix Richter Date: Fri, 3 Jun 2011 01:43:02 +0200 Subject: added wishlist --- cholerab/WISHLIST | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 cholerab/WISHLIST (limited to 'cholerab') diff --git a/cholerab/WISHLIST b/cholerab/WISHLIST new file mode 100644 index 00000000..b4b8e861 --- /dev/null +++ b/cholerab/WISHLIST @@ -0,0 +1,5 @@ +Krebs Modules Wishlist + +Temperature Threshold Sensor: + send out alarm via espeak or mail or irc or usb rocket launcher to open + the window when the temperature is too high -- cgit v1.2.3 From fe2d45ef11550dd71b42b9752c5da76d9af85c5c Mon Sep 17 00:00:00 2001 From: Felix Richter Date: Fri, 3 Jun 2011 13:56:15 +0200 Subject: added DUP!step problem to the Retiolum TODO list" --- cholerab/RETIOLUM | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'cholerab') diff --git a/cholerab/RETIOLUM b/cholerab/RETIOLUM index bd511472..66de3521 100644 --- a/cholerab/RETIOLUM +++ b/cholerab/RETIOLUM @@ -2,3 +2,7 @@ Makefile: update: when hosts folder is not yet a git repository, check out http://github.com/krebscode/hosts.git (no https, because this fails on old systems) + +Non-Root Supernodes: (makefu) + check out the DUP!step problem on krebsbob.no.de and krebs.no.de, + fix it for more profit! -- cgit v1.2.3 From 98ed64bff2c0a49e88bf9ca89ede4282e20951bd Mon Sep 17 00:00:00 2001 From: Felix Richter Date: Sat, 4 Jun 2011 21:24:08 +0200 Subject: pleni/2011-06-04 Protokoll hinzugefuegt --- cholerab/pleni/2011-06-04 | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 cholerab/pleni/2011-06-04 (limited to 'cholerab') diff --git a/cholerab/pleni/2011-06-04 b/cholerab/pleni/2011-06-04 new file mode 100644 index 00000000..1a45a5af --- /dev/null +++ b/cholerab/pleni/2011-06-04 @@ -0,0 +1,30 @@ +2011-06-04 Plenum MoC + +# File Sharing + +Auto-Torrenter wird von pfleidi und Lassulus gemacht. +AP1: Pfleidi + + +# Camp +In finowfurt 10-14. August 2011 +tv kann ggf net mitkommen + +## Siebdruck T-shirt +AP2: Pfleidi Nachfragen wegen T-Shirts fuer Camp +Gute Rote T-Shirts mit schwarzem Logo +42::/16 + +## Banner +aehnlich Banner vom Shack +AP3: tv sucht banner, wenn nicht, dann wird gesprayed + +## 42::/16 +AP5: Miefda kuemmert sich um die RIPE, dass wir /16 benutzen + +## Zelte in Zelten (... not) +Mannschafszelt +Unabhaengig von Shack-village +Tische organisieren + +krebs-schrein -- cgit v1.2.3 From ba87f57cc4e4b8b051b7c4e0eaa92c42831775d8 Mon Sep 17 00:00:00 2001 From: makefu Date: Mon, 11 Jul 2011 02:02:15 +0200 Subject: added PROJECTS file contains interesting projects which should be done by the MoC --- cholerab/PROJECTS | 8 ++++++++ cholerab/UPM | 2 -- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 cholerab/PROJECTS (limited to 'cholerab') diff --git a/cholerab/PROJECTS b/cholerab/PROJECTS new file mode 100644 index 00000000..eb3789cd --- /dev/null +++ b/cholerab/PROJECTS @@ -0,0 +1,8 @@ +uPM: + GUI definieren und Testen +TODOer/TODO Jeopardy: + Schemata Sammelstelle (programme) +Miner MITM PoC: + Paper schreiben + Verschiedene wege miner zu manipulieren + DoS, verschiedene Wege diff --git a/cholerab/UPM b/cholerab/UPM index d1d52c94..e69de29b 100644 --- a/cholerab/UPM +++ b/cholerab/UPM @@ -1,2 +0,0 @@ -2011-05-30 -- tv,makefu: Implement database interface created by pfleidi -- cgit v1.2.3 From 989a502bbf28678d879c418d7fd85e4ef50940a0 Mon Sep 17 00:00:00 2001 From: makefu Date: Mon, 11 Jul 2011 17:06:53 +0200 Subject: PROJECTS: added mandatory infest project --- cholerab/PROJECTS | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'cholerab') diff --git a/cholerab/PROJECTS b/cholerab/PROJECTS index eb3789cd..6c9ac791 100644 --- a/cholerab/PROJECTS +++ b/cholerab/PROJECTS @@ -6,3 +6,8 @@ Miner MITM PoC: Paper schreiben Verschiedene wege miner zu manipulieren DoS, verschiedene Wege +Mandatory Infest: + deploye die Coolen verkrebsungen, weniger intrusive + - das krebs logo + - PS1 variable + - tinc -- cgit v1.2.3 From fd847a538d44deddf84212c099c8b361a7e48fd2 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 18 Jul 2011 00:01:05 +0200 Subject: bling: add krebs-v2.txt --- cholerab/bling/krebs-v2.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 cholerab/bling/krebs-v2.txt (limited to 'cholerab') diff --git a/cholerab/bling/krebs-v2.txt b/cholerab/bling/krebs-v2.txt new file mode 100644 index 00000000..f8006628 --- /dev/null +++ b/cholerab/bling/krebs-v2.txt @@ -0,0 +1,13 @@ + x x x x +xx x xx xx xx x +xx x xx xx xx x + xxx x x xxx + xxx xxxxx xxx + x xxxxxxx x + xxxxxxxxxxxxx + xxxxxxx + xxxxxxxxxxx + x xxx x + x x x x x x + x x x x x x + x xx x x xx x -- cgit v1.2.3 From 2564975f2692a38e8bd7ba529629b50235e98f11 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 18 Jul 2011 00:05:14 +0200 Subject: bling: add krebs-v1.txt --- cholerab/bling/krebs-v1.txt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 cholerab/bling/krebs-v1.txt (limited to 'cholerab') diff --git a/cholerab/bling/krebs-v1.txt b/cholerab/bling/krebs-v1.txt new file mode 100644 index 00000000..c9852522 --- /dev/null +++ b/cholerab/bling/krebs-v1.txt @@ -0,0 +1,9 @@ + x x x x + xx xx xx xx xx xx + xx xx xx xx xx xx + xxx x x xxx + x xxxxxxxxxxxx x + xxxxxxxxxxxxxxxx + x xxxxxxxxxxxx x + x x x x x x + x x x x x x -- cgit v1.2.3 From 7a0393069af136d1cd72f20fb71e541543688282 Mon Sep 17 00:00:00 2001 From: tv Date: Tue, 19 Jul 2011 01:48:59 +0200 Subject: proto: initial commit --- cholerab/proto | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 cholerab/proto (limited to 'cholerab') diff --git a/cholerab/proto b/cholerab/proto new file mode 100644 index 00000000..8f773be8 --- /dev/null +++ b/cholerab/proto @@ -0,0 +1,39 @@ + + + +- The Good One + - Krebslogo + - /etc/issue + - sshd_config banner + - $EDITOR + - rm nano + - install vim + - add the good parts into /etc/vimrc + - syntax highlighting + - install, try harder(!!) + - enterprise retiolum + - append /krebs/bin to PATH + - activated modules have symlinks from /krebs/bin to /krebs/... + - tell about krebs candidate modules + - krebs suggest (crowd sourcing) + - async krebs notifications in focus terminal + - krebs shell w/ rest interface + - cholerab live + - multi user combat editor + - peer to peer [multiunicast] + - origin: 1,1,0 + + - Protocol + - Space-separated vector of ascii-encoded unicode code-points + - otherwise you are made of stupid and you deserve to get punched from + anybody, anyoften with the Error punch "You are made of stupid!" <1> + + - move meaning + - <> Taunt + - <0 char dim*> Character punches + - <1> ∃rror punch + - <2 101 1> Status punch; Attack; punch-how? + - <2 103 1 addrs+> Status punch; Counter; i-punch addr... + - <3 0 addrs+> Notification punch; these-are-fuckers addrs... + - <3 1 addrs+> Notification punch; the-good-ones addrs... + - <23 addr reason...> Finishing move; punch addr b/c of reason... -- cgit v1.2.3 From 1e604f2408861120d8168a3f88c29f9da3ddf7df Mon Sep 17 00:00:00 2001 From: makefu Date: Tue, 19 Jul 2011 20:52:28 +0200 Subject: added initial version of cholerab-live --- cholerab/cholerab-live/README | 6 ++++ cholerab/cholerab-live/cholerab.py | 10 ++++++ cholerab/cholerab-live/view.py | 71 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 cholerab/cholerab-live/README create mode 100644 cholerab/cholerab-live/cholerab.py create mode 100644 cholerab/cholerab-live/view.py (limited to 'cholerab') diff --git a/cholerab/cholerab-live/README b/cholerab/cholerab-live/README new file mode 100644 index 00000000..b778b98c --- /dev/null +++ b/cholerab/cholerab-live/README @@ -0,0 +1,6 @@ + +view.py: contains view classes for cholerab +cholerab.py: main file + +start with : +python cholerab.py diff --git a/cholerab/cholerab-live/cholerab.py b/cholerab/cholerab-live/cholerab.py new file mode 100644 index 00000000..4739d9cf --- /dev/null +++ b/cholerab/cholerab-live/cholerab.py @@ -0,0 +1,10 @@ +from view import CursesView + +a = CursesView() +a.start() +a.write_char(5,5,'p') +a.write_char(6,5,'e') +a.write_char(7,5,'n') +a.write_char(8,5,'i') +a.write_char(9,5,'s') +a.join() diff --git a/cholerab/cholerab-live/view.py b/cholerab/cholerab-live/view.py new file mode 100644 index 00000000..34891e5c --- /dev/null +++ b/cholerab/cholerab-live/view.py @@ -0,0 +1,71 @@ +#!/usr/bin/python2 + +from curses import * +import socket +import threading + +class CursesView(threading.Thread): + def stop(self): + self.running = False + nocbreak(); self.scr.keypad(0); echo() + endwin() + + def run(self): + self.running = True + def try_move(x,y): + if x >= self.width: x = 0;y = y+1 + if x < 0 : x = self.width-1; y= y-1 + if y >= self.height : x = x+1;y = 0 + if y < 0 : x = x-1; y = self.height-1 + self.win.move(y,x); return x,y + + while self.running: + c = self.scr.getch() + if c == KEY_LEFT : self.x -=1 + elif c == KEY_RIGHT : self.x +=1 + elif c == KEY_UP : self.y -=1 + elif c == KEY_DOWN : self.y +=1 + elif c == ord('q') : self.stop() + else : + try: + self.win.addch(c) #TODO UTF8 here + #self.cholerab.write_char(self.x,self.y,c) + except: + pass + self.x +=1 + self.x,self.y = try_move(self.x,self.y) + self.refresh() + + def write_char(self,x,y,char): + self.win.addch(y,x,char) + self.win.move(self.y,self.x) + self.refresh() + def refresh(self): + self.scr.refresh() + self.win.refresh() + def clear(self): + pass + def write_field(self,ar): + """ + writes the whole field with given 2-dimensional array + """ + self.clear() + pass + + + def __init__(self,height=24,width=80,cholerab=None): + self.cholerab = cholerab + threading.Thread.__init__(self) + self.scr = initscr() + noecho() + cbreak() + self.scr.keypad(1) + curs_set(2) + + begin_x = 0;begin_y = 0 + self.height = height + self.width = width + self.x = 0 ; self.y = 0 + + self.win = newwin(height,width,begin_y,begin_x) + -- cgit v1.2.3 From 82fda4544b2d3a04a2c67d8af2e11ddce0c61195 Mon Sep 17 00:00:00 2001 From: makefu Date: Thu, 21 Jul 2011 00:37:13 +0200 Subject: fixed cur_set bug/added todo --- cholerab/cholerab-live/view.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'cholerab') diff --git a/cholerab/cholerab-live/view.py b/cholerab/cholerab-live/view.py index 34891e5c..b798e712 100644 --- a/cholerab/cholerab-live/view.py +++ b/cholerab/cholerab-live/view.py @@ -26,6 +26,7 @@ class CursesView(threading.Thread): elif c == KEY_UP : self.y -=1 elif c == KEY_DOWN : self.y +=1 elif c == ord('q') : self.stop() + #TODO handle backspace correctly else : try: self.win.addch(c) #TODO UTF8 here @@ -57,10 +58,13 @@ class CursesView(threading.Thread): self.cholerab = cholerab threading.Thread.__init__(self) self.scr = initscr() - noecho() + noecho() cbreak() self.scr.keypad(1) - curs_set(2) + try: + curs_set(2) + except: # go home with your non-standard terminals! + pass begin_x = 0;begin_y = 0 self.height = height -- cgit v1.2.3 From 10788dffb408325cb6e73fa4154ce9e5d3ac10ad Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 22 Jul 2011 10:24:49 +0200 Subject: coda: initial import from irc --- cholerab/coda | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cholerab/coda (limited to 'cholerab') diff --git a/cholerab/coda b/cholerab/coda new file mode 100644 index 00000000..b6442631 --- /dev/null +++ b/cholerab/coda @@ -0,0 +1,4 @@ +ok + coda + Ostracoda + Basaliom -- cgit v1.2.3 From 531d9d4309fa09e893a19fdcf8165dc7bf1b3731 Mon Sep 17 00:00:00 2001 From: makefu Date: Sun, 24 Jul 2011 02:41:13 +0200 Subject: added curses stuff cholerab-live/view.py: now able to write basic utf-8 on the plane, handles some rudimentary colors handles backspace correctly --- cholerab/cholerab-live/cholerab.py | 31 +++++--- cholerab/cholerab-live/here.log | 149 +++++++++++++++++++++++++++++++++++++ cholerab/cholerab-live/view.py | 142 ++++++++++++++++++++--------------- cholerab/cholerab-live/view.pyc | Bin 0 -> 3949 bytes 4 files changed, 253 insertions(+), 69 deletions(-) mode change 100644 => 100755 cholerab/cholerab-live/cholerab.py create mode 100644 cholerab/cholerab-live/here.log create mode 100644 cholerab/cholerab-live/view.pyc (limited to 'cholerab') diff --git a/cholerab/cholerab-live/cholerab.py b/cholerab/cholerab-live/cholerab.py old mode 100644 new mode 100755 index 4739d9cf..0ac44e09 --- a/cholerab/cholerab-live/cholerab.py +++ b/cholerab/cholerab-live/cholerab.py @@ -1,10 +1,23 @@ +#!/usr/bin/python2 +# -*- coding: utf-8 -*- +import curses,time from view import CursesView - -a = CursesView() -a.start() -a.write_char(5,5,'p') -a.write_char(6,5,'e') -a.write_char(7,5,'n') -a.write_char(8,5,'i') -a.write_char(9,5,'s') -a.join() +import logging +logging.basicConfig(filename='here.log',level=logging.DEBUG) +log = logging.getLogger('main') +def main(scr): + log.debug('started main') + a = CursesView(scr=scr) + a.start() + log.debug + a.write_char(5,5,'p') + a.write_char(6,5,'e') + a.write_char(7,5,'n') + a.write_char(8,5,'i') + a.write_char(9,5,'s') + a.write_str(5,6,'¯\(°_o)/¯',user=2) + for i in range(7,11): + time.sleep(2) + a.write_str(5,i,'¯\(°_o)/¯',user=3) + a.join() +curses.wrapper(main) diff --git a/cholerab/cholerab-live/here.log b/cholerab/cholerab-live/here.log new file mode 100644 index 00000000..80e02d4c --- /dev/null +++ b/cholerab/cholerab-live/here.log @@ -0,0 +1,149 @@ +DEBUG:main:started main +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:127 +DEBUG:cholerab-curses:113 +DEBUG:main:started main +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:115 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:115 +DEBUG:cholerab-curses:100 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:115 +DEBUG:cholerab-curses:100 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:115 +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:100 +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:115 +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:113 +DEBUG:main:started main +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:260 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:259 +DEBUG:cholerab-curses:259 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:113 diff --git a/cholerab/cholerab-live/view.py b/cholerab/cholerab-live/view.py index b798e712..fe90b926 100644 --- a/cholerab/cholerab-live/view.py +++ b/cholerab/cholerab-live/view.py @@ -3,73 +3,95 @@ from curses import * import socket import threading +import logging +log = logging.getLogger('cholerab-curses') class CursesView(threading.Thread): - def stop(self): - self.running = False - nocbreak(); self.scr.keypad(0); echo() - endwin() + def stop(self): + self.running = False + nocbreak(); self.scr.keypad(0); echo() + endwin() - def run(self): - self.running = True - def try_move(x,y): - if x >= self.width: x = 0;y = y+1 - if x < 0 : x = self.width-1; y= y-1 - if y >= self.height : x = x+1;y = 0 - if y < 0 : x = x-1; y = self.height-1 - self.win.move(y,x); return x,y + def run(self): + """ + input loop - while self.running: - c = self.scr.getch() - if c == KEY_LEFT : self.x -=1 - elif c == KEY_RIGHT : self.x +=1 - elif c == KEY_UP : self.y -=1 - elif c == KEY_DOWN : self.y +=1 - elif c == ord('q') : self.stop() - #TODO handle backspace correctly - else : - try: - self.win.addch(c) #TODO UTF8 here - #self.cholerab.write_char(self.x,self.y,c) - except: - pass - self.x +=1 - self.x,self.y = try_move(self.x,self.y) - self.refresh() + TODO add Unicode Input Support + """ + self.running = True + def try_move(x,y): + if x >= self.width: x = 0;y = y+1 + if x < 0 : x = self.width-1; y= y-1 + if y >= self.height : x = x+1;y = 0 + if y < 0 : x = x-1; y = self.height-1 + self.win.move(y,x); return x,y - def write_char(self,x,y,char): - self.win.addch(y,x,char) - self.win.move(self.y,self.x) - self.refresh() - def refresh(self): - self.scr.refresh() - self.win.refresh() - def clear(self): - pass - def write_field(self,ar): - """ - writes the whole field with given 2-dimensional array - """ - self.clear() - pass + while self.running: + c = self.scr.getch() #get_char(self.scr) + log.debug(str(c)) + if c == KEY_LEFT : self.x -=1 + elif c == KEY_RIGHT : self.x +=1 + elif c == KEY_UP : self.y -=1 + elif c == KEY_DOWN : self.y +=1 + elif c == ord('q') : self.stop() + elif c == 127: + log.info('backspace pressed') + self.x -=1; + self.x,self.y = try_move(self.x,self.y) + self.win.addch(' ') + #TODO handle backspace correctly + else : + try: + self.win.addch(c) #TODO UTF8 here + #self.cholerab.write_char(self.x,self.y,c) + except: + pass + self.x +=1 + self.x,self.y = try_move(self.x,self.y) + self.refresh() - def __init__(self,height=24,width=80,cholerab=None): - self.cholerab = cholerab - threading.Thread.__init__(self) - self.scr = initscr() - noecho() - cbreak() - self.scr.keypad(1) - try: - curs_set(2) - except: # go home with your non-standard terminals! - pass + def write_char(self,x,y,char): + self.win.addch(y,x,char) + self.win.move(self.y,self.x) + self.refresh() + def write_str(self,x,y,string,user=1): + self.win.addstr(y,x,string,color_pair(user)) + self.win.move(self.y,self.x) + self.refresh() + def refresh(self): + self.scr.refresh() + self.win.refresh() + def clear(self): + pass + def write_field(self,ar): + """ + writes the whole field with given 2-dimensional array + """ + self.clear() + pass - begin_x = 0;begin_y = 0 - self.height = height - self.width = width - self.x = 0 ; self.y = 0 - self.win = newwin(height,width,begin_y,begin_x) + def __init__(self,height=24,width=80,cholerab=None,scr=None): + init_pair(1,COLOR_WHITE,COLOR_BLACK) + init_pair(2,COLOR_RED,COLOR_BLACK) + init_pair(3,COLOR_GREEN,COLOR_BLACK) + self.cholerab = cholerab + threading.Thread.__init__(self) + if scr: + self.scr = scr + else: + self.scr = initscr() + noecho() + cbreak() + self.scr.keypad(1) + try: curs_set(2) + except: pass # go home with your non-standard terminals! + + begin_x = 0;begin_y = 0 + self.height = height + self.width = width + self.x = 0 ; self.y = 0 + + self.win = newwin(height,width,begin_y,begin_x) diff --git a/cholerab/cholerab-live/view.pyc b/cholerab/cholerab-live/view.pyc new file mode 100644 index 00000000..5516ae2f Binary files /dev/null and b/cholerab/cholerab-live/view.pyc differ -- cgit v1.2.3 From f1f12489514f47f9154f8e4b6232399e747cfcd8 Mon Sep 17 00:00:00 2001 From: makefu Date: Sun, 24 Jul 2011 04:13:44 +0200 Subject: emergency commit --- cholerab/cholerab-live/chol_net.py | 81 +++ cholerab/cholerab-live/chol_net.pyc | Bin 0 -> 4364 bytes cholerab/cholerab-live/cholerab.py | 43 +- cholerab/cholerab-live/here.log | 1296 +++++++++++++++++++++++++++++++++++ cholerab/cholerab-live/view.py | 42 +- cholerab/cholerab-live/view.pyc | Bin 3949 -> 4409 bytes 6 files changed, 1431 insertions(+), 31 deletions(-) create mode 100644 cholerab/cholerab-live/chol_net.py create mode 100644 cholerab/cholerab-live/chol_net.pyc (limited to 'cholerab') diff --git a/cholerab/cholerab-live/chol_net.py b/cholerab/cholerab-live/chol_net.py new file mode 100644 index 00000000..b5820973 --- /dev/null +++ b/cholerab/cholerab-live/chol_net.py @@ -0,0 +1,81 @@ +from socket import socket, AF_INET,SOCK_DGRAM,IPPROTO_UDP,SOL_SOCKET,SO_REUSEADDR,IP_MULTICAST_TTL,IP_MULTICAST_LOOP,INADDR_ANY,inet_aton,IP_ADD_MEMBERSHIP,IPPROTO_IP +import struct +import threading +import logging +log = None +from select import select +GROUP = '224.110.42.23' +PORT = 42023 +log = logging.getLogger('CholerabNet') +class CholerabMulicastNet(threading.Thread): + def __init__(self,cholerab,group=GROUP,port=PORT): + threading.Thread.__init__(self) + self.cholerab=cholerab + self.group=group + self.port=port + self.initSocket() + def send_char(self,x,y,char): + """ translates given params into network message """ + self.send_mc("%s %d %d" %(str(char),x,y)) + def send_mc(self,arg): + """ Sends message via multicast""" + + try: + log.debug("Sending '%s' to %s:%d" % (arg,self.group,self.port)) + self.s.sendto("%s" % arg,0,(self.group,self.port)) + except Exception ,e: + log.error("IN send_mc:%s"%str(e)) + + def initSocket (self,rcv=1): + ''' Initializes a Multicast socket ''' + host = '' + log.debug("Setting up Multicast Socket") + self.s = socket(AF_INET,SOCK_DGRAM, IPPROTO_UDP) + self.s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) + self.s.setsockopt(IPPROTO_IP, IP_MULTICAST_TTL, 32) + self.s.setsockopt(IPPROTO_IP,IP_MULTICAST_LOOP,1) # we do not want our own packets to be replayed + if rcv==1: + log.debug("Configuring for Read AND Write") + self.s.bind((host,PORT)) + mreq = struct.pack("4sl", inet_aton(GROUP), INADDR_ANY) + self.s.setsockopt(IPPROTO_IP,IP_ADD_MEMBERSHIP,mreq) + def run(self): + self.running = 1 + while self.running: + # break if we do not want to loop on + ready,output,exception = select([self.s],[],[],1) # try every second + for r in ready: + if r == self.s: + (data,addr) = self.s.recvfrom(1024) + log.debug("Received Data from %s, data %s"%(str(addr),str(data))) + self.receive_net(addr,data) + + def send_stupid(self,addr): + """ sends YOU ARE MADE OF STUPID to the right host """ + #TODO implement me + pass + + def receive_net(self,addr,data): + """ resolves which nick sent the message + TODO handle user resolution in mulicast """ + def decode(): + pass #TODO implement me + + #FIXME TODO using port as host identification is probably just plain wrong, fix me for real net! + try: + address,port = addr + user = port + arr = str(data).split() + char = arr[0] + x = arr[1] + y = arr[2] + self.cholerab.write_char(int(x),int(y),char,user) + except Exception, e: + log.error("Triggered YOU ARE MADE OF STUPID: %s" % str(e)) + self.send_stupid(addr) + + def stop(self): + ''' + stops the whole treading stuff gracefully + ''' + self.running=0 diff --git a/cholerab/cholerab-live/chol_net.pyc b/cholerab/cholerab-live/chol_net.pyc new file mode 100644 index 00000000..573bc413 Binary files /dev/null and b/cholerab/cholerab-live/chol_net.pyc differ diff --git a/cholerab/cholerab-live/cholerab.py b/cholerab/cholerab-live/cholerab.py index 0ac44e09..b6b3f84f 100755 --- a/cholerab/cholerab-live/cholerab.py +++ b/cholerab/cholerab-live/cholerab.py @@ -2,22 +2,35 @@ # -*- coding: utf-8 -*- import curses,time from view import CursesView +from chol_net import CholerabMulicastNet import logging logging.basicConfig(filename='here.log',level=logging.DEBUG) log = logging.getLogger('main') -def main(scr): +class Cholerab: + def __init__(self): + self.view = CursesView(cholerab=self) + self.transport = CholerabMulicastNet(cholerab=self) + def send_char(self,x,y,char): + log.info("Sending %s at (%d,%d) to connected peers" %(char,x,y)) + self.transport.send_char(x,y,char) + + def write_char(self,x,y,char,user): + log.info("Writing %s at (%d,%d) from %d to view" %(char,x,y,user)) + self.view.write_char(x,y,char,user) + def stop(self): + self.view.stop() + self.transport.stop() + def main(self): + self.view.start() + self.transport.start() + self.view.join() + #after view dies, kill the transport as well + self.transport.stop() + self.transport.join() +def main(): log.debug('started main') - a = CursesView(scr=scr) - a.start() - log.debug - a.write_char(5,5,'p') - a.write_char(6,5,'e') - a.write_char(7,5,'n') - a.write_char(8,5,'i') - a.write_char(9,5,'s') - a.write_str(5,6,'¯\(°_o)/¯',user=2) - for i in range(7,11): - time.sleep(2) - a.write_str(5,i,'¯\(°_o)/¯',user=3) - a.join() -curses.wrapper(main) + chol = Cholerab() + chol.main() + +if __name__ == "__main__": + main() diff --git a/cholerab/cholerab-live/here.log b/cholerab/cholerab-live/here.log index 80e02d4c..bc128175 100644 --- a/cholerab/cholerab-live/here.log +++ b/cholerab/cholerab-live/here.log @@ -147,3 +147,1299 @@ DEBUG:cholerab-curses:261 DEBUG:cholerab-curses:261 DEBUG:cholerab-curses:261 DEBUG:cholerab-curses:113 +DEBUG:main:started main +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:259 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:115 +DEBUG:cholerab-curses:261 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:115 +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:118 +DEBUG:cholerab-curses:120 +DEBUG:cholerab-curses:106 +DEBUG:cholerab-curses:108 +DEBUG:cholerab-curses:107 +DEBUG:cholerab-curses:106 +DEBUG:cholerab-curses:100 +DEBUG:cholerab-curses:102 +DEBUG:cholerab-curses:115 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:115 +DEBUG:cholerab-curses:258 +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:97 +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:127 +INFO:cholerab-curses:backspace pressed +DEBUG:cholerab-curses:113 +DEBUG:main:started main +DEBUG:main:started main +DEBUG:main:started main +INFO:main:Sending 97 at (2,1) to connected peers +INFO:main:Sending 115 at (3,1) to connected peers +INFO:main:Sending 100 at (4,1) to connected peers +INFO:main:Sending 100 at (5,1) to connected peers +INFO:main:Sending 97 at (6,1) to connected peers +INFO:main:Sending 115 at (7,1) to connected peers +INFO:main:Sending 115 at (8,1) to connected peers +INFO:main:Sending 100 at (9,1) to connected peers +DEBUG:main:started main +INFO:main:Sending a at (6,4) to connected peers +INFO:main:Sending a at (8,4) to connected peers +INFO:main:Sending s at (9,5) to connected peers +INFO:main:Sending d at (10,6) to connected peers +INFO:main:Sending f at (11,6) to connected peers +INFO:main:Sending d at (12,6) to connected peers +DEBUG:main:started main +INFO:main:Sending a at (5,4) to connected peers +INFO:main:Sending a at (6,4) to connected peers +INFO:main:Sending s at (7,4) to connected peers +INFO:main:Sending d at (8,4) to connected peers +INFO:main:Sending s at (9,4) to connected peers +INFO:main:Sending f at (10,4) to connected peers +INFO:main:Sending d at (11,4) to connected peers +INFO:main:Sending a at (12,4) to connected peers +INFO:main:Sending d at (13,4) to connected peers +INFO:main:Sending f at (14,4) to connected peers +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +DEBUG:main:started main +INFO:main:Sending a at (5,5) to connected peers +INFO:main:Sending a at (6,5) to connected peers +INFO:main:Sending a at (7,5) to connected peers +INFO:main:Sending a at (8,5) to connected peers +INFO:main:Sending a at (9,5) to connected peers +INFO:main:Sending a at (10,5) to connected peers +INFO:main:Sending a at (11,5) to connected peers +INFO:main:Sending a at (12,5) to connected peers +INFO:main:Sending a at (13,5) to connected peers +INFO:main:Sending a at (14,5) to connected peers +INFO:main:Sending a at (15,5) to connected peers +INFO:main:Sending a at (16,5) to connected peers +INFO:main:Sending a at (17,5) to connected peers +INFO:main:Sending a at (18,5) to connected peers +INFO:main:Sending a at (19,5) to connected peers +INFO:main:Sending a at (20,5) to connected peers +INFO:main:Sending a at (21,5) to connected peers +INFO:main:Sending a at (22,5) to connected peers +INFO:main:Sending a at (23,5) to connected peers +INFO:main:Sending a at (24,5) to connected peers +INFO:main:Sending a at (25,5) to connected peers +INFO:main:Sending a at (26,5) to connected peers +INFO:main:Sending a at (27,5) to connected peers +INFO:main:Sending a at (28,5) to connected peers +INFO:main:Sending a at (29,5) to connected peers +INFO:main:Sending a at (30,5) to connected peers +INFO:main:Sending a at (31,5) to connected peers +INFO:main:Sending a at (32,5) to connected peers +INFO:main:Sending a at (33,5) to connected peers +INFO:main:Sending a at (34,5) to connected peers +INFO:main:Sending a at (35,5) to connected peers +INFO:main:Sending a at (36,5) to connected peers +INFO:main:Sending a at (37,5) to connected peers +INFO:main:Sending a at (38,5) to connected peers +INFO:main:Sending a at (39,5) to connected peers +INFO:main:Sending a at (40,5) to connected peers +INFO:main:Sending a at (41,5) to connected peers +INFO:main:Sending a at (42,5) to connected peers +INFO:main:Sending a at (43,5) to connected peers +INFO:main:Sending a at (44,5) to connected peers +INFO:main:Sending a at (45,5) to connected peers +INFO:main:Sending a at (46,5) to connected peers +INFO:main:Sending a at (47,5) to connected peers +INFO:main:Sending a at (48,5) to connected peers +INFO:main:Sending a at (49,5) to connected peers +INFO:main:Sending a at (50,5) to connected peers +INFO:main:Sending a at (51,5) to connected peers +INFO:main:Sending a at (52,5) to connected peers +INFO:main:Sending a at (53,5) to connected peers +INFO:main:Sending a at (54,5) to connected peers +INFO:main:Sending a at (55,5) to connected peers +INFO:main:Sending a at (56,5) to connected peers +INFO:main:Sending a at (57,5) to connected peers +INFO:main:Sending a at (58,5) to connected peers +INFO:main:Sending a at (59,5) to connected peers +INFO:main:Sending a at (60,5) to connected peers +INFO:main:Sending a at (61,5) to connected peers +INFO:main:Sending a at (62,5) to connected peers +INFO:main:Sending a at (63,5) to connected peers +INFO:main:Sending a at (64,5) to connected peers +INFO:main:Sending a at (65,5) to connected peers +INFO:main:Sending a at (66,5) to connected peers +INFO:main:Sending a at (67,5) to connected peers +INFO:main:Sending a at (68,5) to connected peers +DEBUG:main:started main +INFO:main:Sending a at (7,7) to connected peers +INFO:main:Sending a at (8,7) to connected peers +INFO:main:Sending a at (9,7) to connected peers +INFO:main:Sending a at (10,7) to connected peers +INFO:main:Sending a at (11,7) to connected peers +INFO:main:Sending a at (12,7) to connected peers +INFO:main:Sending a at (13,7) to connected peers +INFO:main:Sending a at (14,7) to connected peers +INFO:main:Sending a at (15,7) to connected peers +INFO:main:Sending a at (16,7) to connected peers +INFO:main:Sending a at (17,7) to connected peers +INFO:main:Sending a at (18,7) to connected peers +INFO:main:Sending a at (19,7) to connected peers +INFO:main:Sending a at (20,7) to connected peers +INFO:main:Sending a at (21,7) to connected peers +INFO:main:Sending a at (22,7) to connected peers +INFO:main:Sending a at (23,7) to connected peers +INFO:main:Sending a at (24,7) to connected peers +INFO:main:Sending a at (25,7) to connected peers +INFO:main:Sending d at (26,7) to connected peers +INFO:main:Sending d at (27,7) to connected peers +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:cholerab-curses:backspace pressed +INFO:main:Sending d at (6,11) to connected peers +INFO:main:Sending s at (7,11) to connected peers +INFO:main:Sending f at (8,10) to connected peers +INFO:main:Sending s at (10,10) to connected peers +INFO:main:Sending d at (11,10) to connected peers +INFO:main:Sending f at (13,10) to connected peers +INFO:main:Sending d at (14,9) to connected peers +INFO:main:Sending s at (15,9) to connected peers +INFO:main:Sending s at (17,8) to connected peers +INFO:main:Sending f at (18,8) to connected peers +INFO:main:Sending d at (19,8) to connected peers +INFO:main:Sending s at (20,8) to connected peers +INFO:main:Sending f at (22,8) to connected peers +INFO:main:Sending s at (23,7) to connected peers +INFO:main:Sending d at (25,7) to connected peers +INFO:main:Sending s at (27,6) to connected peers +INFO:main:Sending d at (28,6) to connected peers +INFO:main:Sending d at (29,5) to connected peers +INFO:main:Sending s at (31,4) to connected peers +INFO:main:Sending f at (32,4) to connected peers +INFO:main:Sending d at (34,3) to connected peers +INFO:main:Sending s at (35,3) to connected peers +INFO:main:Sending d at (38,2) to connected peers +INFO:main:Sending s at (39,2) to connected peers +INFO:main:Sending f at (40,2) to connected peers +INFO:main:Sending f at (41,2) to connected peers +INFO:main:Sending d at (44,0) to connected peers +INFO:main:Sending s at (45,0) to connected peers +INFO:main:Sending f at (46,0) to connected peers +INFO:main:Sending d at (47,23) to connected peers +INFO:main:Sending d at (49,22) to connected peers +INFO:main:Sending s at (50,22) to connected peers +INFO:main:Sending f at (51,22) to connected peers +INFO:main:Sending d at (53,21) to connected peers +INFO:main:Sending s at (54,21) to connected peers +INFO:main:Sending d at (56,20) to connected peers +INFO:main:Sending s at (57,20) to connected peers +INFO:main:Sending f at (58,20) to connected peers +INFO:main:Sending d at (60,19) to connected peers +INFO:main:Sending s at (61,19) to connected peers +INFO:main:Sending f at (62,19) to connected peers +INFO:main:Sending f at (64,18) to connected peers +INFO:main:Sending s at (65,18) to connected peers +INFO:main:Sending d at (66,18) to connected peers +INFO:main:Sending s at (68,17) to connected peers +INFO:main:Sending f at (69,17) to connected peers +INFO:main:Sending d at (70,17) to connected peers +INFO:main:Sending s at (72,16) to connected peers +INFO:main:Sending d at (73,16) to connected peers +INFO:main:Sending f at (74,16) to connected peers +INFO:main:Sending s at (76,16) to connected peers +INFO:main:Sending f at (78,15) to connected peers +INFO:main:Sending s at (0,15) to connected peers +INFO:main:Sending f at (1,15) to connected peers +INFO:main:Sending f at (3,14) to connected peers +INFO:main:Sending s at (4,14) to connected peers +INFO:main:Sending d at (5,14) to connected peers +INFO:main:Sending s at (7,13) to connected peers +INFO:main:Sending d at (8,13) to connected peers +DEBUG:main:started main +DEBUG:main:started main +DEBUG:main:started main +DEBUG:main:started main +DEBUG:main:started main +DEBUG:main:started main +DEBUG:main:started main +DEBUG:main:started main +DEBUG:main:started main +DEBUG:main:started main +DEBUG:main:started main +DEBUG:CholerabNet:Setting up Multicast Socket +DEBUG:CholerabNet:Configuring for Read AND Write +DEBUG:main:started main +DEBUG:CholerabNet:Setting up Multicast Socket +DEBUG:CholerabNet:Configuring for Read AND Write +INFO:main:Sending a at (1,1) to connected peers +INFO:main:Sending a at (2,1) to connected peers +INFO:main:Sending d at (4,1) to connected peers +INFO:main:Sending s at (5,1) to connected peers +INFO:main:Sending f at (6,1) to connected peers +INFO:main:Sending a at (7,1) to connected peers +INFO:main:Sending a at (8,1) to connected peers +INFO:main:Sending a at (9,1) to connected peers +DEBUG:main:started main +DEBUG:CholerabNet:Setting up Multicast Socket +DEBUG:CholerabNet:Configuring for Read AND Write +INFO:main:Sending a at (10,1) to connected peers +INFO:main:Sending a at (0,0) to connected peers +INFO:main:Sending s at (1,0) to connected peers +INFO:main:Sending s at (2,0) to connected peers +INFO:main:Sending d at (3,0) to connected peers +INFO:main:Sending a at (4,0) to connected peers +DEBUG:main:started main +DEBUG:CholerabNet:Setting up Multicast Socket +DEBUG:CholerabNet:Configuring for Read AND Write +INFO:main:Sending a at (11,1) to connected peers +INFO:main:Sending a at (12,1) to connected peers +DEBUG:main:started main +DEBUG:CholerabNet:Setting up Multicast Socket +DEBUG:CholerabNet:Configuring for Read AND Write +DEBUG:main:started main +DEBUG:CholerabNet:Setting up Multicast Socket +DEBUG:CholerabNet:Configuring for Read AND Write +INFO:main:Sending a at (0,0) to connected peers +INFO:main:Sending s at (1,0) to connected peers +INFO:main:Sending d at (2,0) to connected peers +INFO:main:Sending a at (13,1) to connected peers +INFO:main:Sending a at (14,1) to connected peers +INFO:main:Sending a at (15,1) to connected peers +INFO:main:Sending s at (16,1) to connected peers +DEBUG:main:started main +DEBUG:CholerabNet:Setting up Multicast Socket +DEBUG:CholerabNet:Configuring for Read AND Write +INFO:main:Sending a at (0,0) to connected peers +INFO:main:Sending s at (1,0) to connected peers +INFO:main:Sending a at (3,0) to connected peers +INFO:main:Sending s at (4,0) to connected peers +INFO:main:Sending s at (5,0) to connected peers +INFO:main:Sending d at (6,0) to connected peers +INFO:main:Sending s at (7,0) to connected peers +INFO:main:Sending a at (8,4) to connected peers +INFO:main:Sending s at (9,4) to connected peers +INFO:main:Sending d at (10,4) to connected peers +INFO:main:Sending s at (11,4) to connected peers +INFO:main:Sending d at (12,4) to connected peers +INFO:main:Sending a at (2,0) to connected peers +INFO:main:Sending s at (3,0) to connected peers +INFO:main:Sending s at (4,0) to connected peers +INFO:main:Sending a at (13,4) to connected peers +INFO:main:Sending a at (14,4) to connected peers +INFO:main:Sending a at (15,4) to connected peers +INFO:main:Sending s at (16,4) to connected peers +INFO:main:Sending d at (17,4) to connected peers +INFO:main:Sending a at (18,4) to connected peers +INFO:main:Sending s