diff --git a/exec/sbbslist.js b/exec/sbbslist.js index cd71f2110fd3fefc93a20eae6c3bb725168844b8..fd2bbcf5a4ea8f4dd58e0c0b1577089b278c3f28 100644 --- a/exec/sbbslist.js +++ b/exec/sbbslist.js @@ -16,6 +16,7 @@ var version_notice = "Synchronet BBS List v4(" + REVISION + ")"; load("sbbsdefs.js"); load("sockdefs.js"); load("portdefs.js"); +load("hexdump_lib.js"); var sbl_dir = "../xtrn/sbl/"; var list_format = 0; @@ -28,7 +29,6 @@ var color_cfg = { }; var cmd_prompt_fmt = "\1n\1c\xfe \1h%s \1n\1c\xfe "; -const base64_max_line_len = 72; var debug = false; var options=load({}, "modopts.js", "sbbslist"); @@ -42,10 +42,9 @@ if(options && options.export_freq > 0) export_freq = options.export_freq; var lib = load({}, "sbbslist_lib.js"); -load("graphic.js"); var capture = load({}, "termcapture_lib.js"); capture.timeout=15; -capture.poll_timeout=5; +capture.poll_timeout=10; function objcopy(obj) { @@ -604,9 +603,7 @@ function capture_preview(bbs, addr) var result = capture.capture(); if(result == false) return capture.error; - graphic = new Graphic(); - graphic.ANSI = result.preview.join("\r\n"); - bbs.preview = graphic.base64_encode(base64_max_line_len); + bbs.preview = lib.encode_preview(result.preview); return true; } @@ -730,9 +727,7 @@ function verify_bbs(bbs) other_services: verify_services(result.ip_address, 5) }; lib.verify_system(bbs, js.exec_file + " " + REVISION); - graphic = new Graphic(); - graphic.ANSI = result.preview.join("\r\n"); - bbs.preview = graphic.base64_encode(base64_max_line_len); + bbs.preview = lib.encode_preview(result.preview); return true; } log(LOG_DEBUG,"Non-Synchronet identification: " + result.hello[0]); @@ -1516,9 +1511,7 @@ function view(list, current) break; } console.clear(); - var graphic=new Graphic(); - graphic.base64_decode(bbs.preview); - graphic.draw(); + lib.draw_preview(bbs); console.getkey(); console.clear(); break; @@ -1530,9 +1523,7 @@ function view(list, current) var result = capture_preview(copy); if(result == true) { console.clear(); - var graphic=new Graphic(); - graphic.base64_decode(copy.preview); - graphic.draw(); + lib.draw_preview(copy); console.getkey(); } else { console.crlf(); @@ -1924,6 +1915,7 @@ function main() case "-preview": if(val) addr = val; + preview = true; break; case "-sort": options.sort = val; @@ -2090,8 +2082,10 @@ function main() var index = lib.system_index(list, optval[cmd]); if(index < 0) alert(optval[cmd] + " not found"); - else + else { print(JSON.stringify(list[index], null, 1)); + hexdump("compressed preview", base64_decode(list[index].preview.join(""))); + } break; } for(i in list) { @@ -2142,8 +2136,12 @@ function main() bbs.software = "Synchronet"; bbs.total = lib.system_stats(); bbs.terminal.nodes = system.nodes; - if(preview) - capture_preview(bbs, addr); + if(preview) { + log("Capturing preview from: " + bbs.name); + var result = capture_preview(bbs, addr); + if(result != true) + alert(result); + } lib.update_system(bbs, js.exec_file + " " + REVISION); if(debug) print(JSON.stringify(bbs, null, 1)); if(lib.replace(bbs)) @@ -2158,9 +2156,7 @@ function main() var result = capture_preview(list[index], addr); if(result == true) { if(js.global.console) { - var graphic=new Graphic(); - graphic.base64_decode(list[index].preview); - graphic.draw(); + lib.draw_preview(list[index].preview); } } else print(result); @@ -2180,11 +2176,46 @@ function main() } break; case "clean": - for(var i=0; i< list.length; i++) { + for(var i=0; i < list.length; i++) { delete list[i].entry.exported; } lib.write_list(list); break; + case "compress": + if(optval[cmd]) { + var index = lib.system_index(list, optval[cmd]); + if(index < 0) + alert(optval[cmd] + " not found"); + else { + var bbs = list[index]; + bbs.preview = lib.compress_preview(bbs.preview); + if(debug) print(JSON.stringify(bbs, null, 1)); + if(lib.replace(bbs)) + print(bbs.name + " updated successfully"); + } + } else { + for(var i=0; i < list.length; i++) { + if(list[i].preview) { + printf("%-25s ", list[i].name); + list[i].preview = lib.compress_preview(list[i].preview); + } + } + lib.write_list(list); + } + break; + case "decode": + if(optval[cmd]) { + var index = lib.system_index(list, optval[cmd]); + if(index < 0) + alert(optval[cmd] + " not found"); + else { + var bbs = list[index]; + if(debug) print(JSON.stringify(bbs.preview, null, 1)); + var preview = lib.decode_preview(bbs.preview); + hexdump("preview", preview); + } + } + break; } } }