VPIXILLMRSWG2Y7AAXGKE3YYFRPXKFVYQJTTAKJWCGTSGSLAQO6AC
Q4BJI3GMRJQIHHJF3QUXONZPFRFWFW22B24LVGDX4N2Y6PQDLJAAC
6JMPO4KNEOCJSTOZVZ7IDDMOHB56UZLHBKQ553BGLC4SUWWV5SVQC
VS6DE5H2W7L66JNUFMROCB7COFKBFUYM7PRAFDEMPFAM67LNPATAC
U6VT72OISEF2QFXPSMRK7W2OKMFWIL6X6LVDJD4EMMKMAWIYNPAAC
SCZITQ33RQ3EJLN4UC7G7UTKCWR75QKGDUO2GNO3QDFMNARJRP4QC
MXXJRT3MBA7T44QSFNDG3MWISCAA5SNBRCH5PYOTG4YSLWYSZOFAC
4NHACREOMGXYM2LG72ZE4QFU4UFCIFWCZXGLSCOYJ3KTUV2K33OQC
KHBUL3BKYVPYNGFECA7QMWTKRPLGT3VYVEON3JPHP4H74KLP5WDAC
S4P2B3FPF57HPHTIAYGMPCVKB7573IB5ZBKNXVBTB6ICCPF55WNQC
FMQ3IBYW2IZ75GQJR27Z5EKQPK3SO5KUDC4AEPJYBNWJDFMA77YAC
WMPPHPYAXJNLWZEDJOTHIIYUT627ZI27K5IF7JXVO7EYU7YENUKAC
RLA7SZS6LMHVWBMOUTHPBTGMXHWOYVSRAIFOTPXTWJUJW5VC37DQC
CSWUQ3AGM2UVPMJZIT7KAJCQTV5SMVVKZDLNMWED54D2SDF7IKPAC
S5L7MKYA7C7FVRRKNZGDSQ5BFQ3CLF74YD7EANPJSC5AEV7FSATAC
DJJIZVCNVIH2HTR6K7YBEZTFMTMMW55GP37G4RAZO6G3UUXU52PAC
QWR4AKCMW4GPGKQKXO4GLOS7GZQ2KAD4JSOST5NCSM3VM7FJXPFAC
VIPWC4V6PMA3K4V342SEO4TNNQSYOLZXOPTLIJLXDWMWHQPIS3AAC
7755FHS7ZTG4YGJNFYAONWSWSM636WOWFRISDKQU2AOJHN6ZVMBAC
AXIGL5SB62HESXQ6Z5CHPQQFIPYBRLJOADRR2MYFHZNLHCWAMGWAC
ZEJI2R6JJ6NJVO4Y4DZFPPOCHKOUDEWFEKQCB7DIUNMUF7YW7KHAC
ZFTQHHBQPTGLWIJ6NO7LEA6HAVWWL2QWSX4MYVJSC4MQ6SHPC53AC
G7YFNSFI3JP7XLGLNS3G7ELOXU4JNLXYY66BT54LG67AWFM23RVAC
2PSWFTP36SWDPEOJFVGDQ4M7AZHHRSMC6P63EPXR2W5YWJH4YV6QC
BTJHLCVXWWKAS6546AIZ336P7OIKLJLIDBN7KLL62TP2LLSZ7XVQC
BXLMOKJKVWRCNSJSD6L4RFON2IHEWB7J42QRYWN7M45XP22752YAC
EKAWOQMSNHBPSJAPHNJP2PB2BZ2R4SLIIGGBKTDIH7JXNU2C3L6AC
PA325CFTHH4SAQG74P3SBTOZZICVFYUFSMAG3TARZK4DH5OHJO4QC
L6LAQCM6M5FOTEJYJRNSW2WO3CVOFLZEWL6HGLGJ6TDKRIPSQTIAC
6FTBWEWY7ENGRTF3PWHH3TYNDZLTBDIUSD45X3CB3UE5N4EP2A7AC
NVBD7N3YMUOB3HPRJWLT74JYO6G5IDAE3NP7LFHAKO52FHO2Y43AC
LOSWKMTQERGO52DRGQNSGIKMMRLPUD5EH4UOB36VD3777YIVY3OAC
QYVYRP42GJ7IOK2OTCRZACSTXYFODHYWSQ5TY2ZEMH7WTYAFZAEAC
NLPWATZYX5WVZSCIXWGG7OF7MJPYETU6ZXB4NA5BSH7AK4TJPY2QC
VXE7WTYFCJVGAIDPC2I4X3EOHB4FIINEGLFRIEQMSCNCCGDS3PQQC
DYENPPZNUM7QVOK2TWGQAF7Z7I67TH4XAN5TMNJOW4RYVZELL2ZQC
5OKVHNLKGK2CYUVC2XXDOLCRVXJAMQGAWC7TSG3LQ2RTMYDTZZJAC
SEITVAENZSUFHIGCQ7SC2WZ2WS3QMDW6RYIEPKNCRJ6KWDPF7STAC
P5LKO4U3UCFBXOZEF7HD3UP6LG3HDFEQCCGMWFEPAR7DBY6WJL5QC
CRPUEZXM4UZYCYLARN6X74TXJ65NWKK4NDLHRD3DXSBQHI6IQ3BAC
H73SZ4LP4TNY6A2F3O3BYDXGUOQ2EEHQ5XZIXZZDE4YARDQ453KAC
7XX4PZDK3I6YFLATBWJ7EINM2YBXEL4AQBOLHIP6IXFEEHJB5MLQC
YVTCAGILOVQSW2H3R6IRKRQ44ACNFGLN5SW4PO5QLOADY2GXL6DQC
N6FKWJFARVRKFKTNLCZFYFNPVHFJYBBAVSDRCVG3XLRUPNJORRRAC
7CFD3UOWFKMZRCBYEIU2NWGSPS2EXK5AP4QZFMKUH3K3JCBOEKXAC
Q4IRSNH2MHMR3QJIIPILEDIM4A2PLCG57T6KM7TACP4EVS6R4AZQC
NBZOZ6QZ2L74VSAOQI2ZBLH2YU7VV3R6Y2VOC2BG55UKHJW66Z6AC
AM6J7DCX4WUM42ZO37VBOO7NX773WEPG7QYUUBSLSOUPEFXH4VOAC
X6OO4RRZO4VNXDK3YDFUNKMJLRUTMR7TYTLJUVKC6RDY3VU67PAQC
M6OET34YASLXAXZ33UTDM5R26YZOIYC2BIGMCAQIVVKAHVWTHOPQC
HIRCSAI6D4EEV57CQCFIOCHXT4FUSABC4J46ER2GQY7IED3P6ZRQC
TYKD7O2U4SKKDP63IJE3ZFWI6MPZ3GPCTS5TS2C2V7277RVMWQWAC
4NP67IZLLWWBY4M6GJUSCAWG3X5BKEBJQXNXQMM6GXIENYBPTNRAC
go self.comm(mut ircnet, mut puppet)
nick_cmd := 'nick $nick'
puppet.write(nick_cmd)
user_cmd := 'user vbridge b c :full name'
puppet.write(user_cmd)
go self.comm(mut puppet)
puppet.signin()
pub fn (self &IrcActor) comm(mut ircnet Network, mut ghost Puppet) {
if mut ghost.sock is net.TcpConn {
mut reader := io.new_buffered_reader(reader: ghost.sock)
pub fn (self &IrcActor) comm(mut puppet Puppet) {
if mut puppet.sock is net.TcpConn {
println('$puppet.nick comm() started')
mut reader := io.new_buffered_reader(reader: puppet.sock)
println('$ircnet $ghost.nick ghost ${ptr_str(ghost)}: ${nick_parts[0]} JOINed $channel')
if nick_parts[0] == ghost.nick {
ghost.add_channel(channel)
println('$puppet.network $puppet.nick puppet ${ptr_str(puppet)}: ${nick_parts[0]} JOINed $channel')
if nick_parts[0] == puppet.nick {
puppet.add_channel(channel)
response := http.parse_response(header_lines.join('\n'))
peer_ip := conn.peer_ip() or { err }
println('<- $peer_ip ${header_lines[0]}')
if response.header.contains_custom('Content-Length') {
self.process_request(response.header, mut reader)
if header_lines.len > 0 {
response := http.parse_response(header_lines.join('\n'))
println('<- $peer_ip ${header_lines[0]}')
if response.header.contains_custom('Content-Length') {
self.process_request(response.header, mut reader)
}