2007-03-26:
[17:45] <p3k> EHLO[17:49] <grob> OK[17:57] <p3k> hallo robert[17:58] <p3k> js: app[17:58] <ibot3000> ReferenceError: "app" is not defined.[18:01] <grob> hallo tobi[18:02] <p3k> hast du eine ahnung, wie ich einen wirklich neuen Context in helma erzeuge?[18:03] <grob> mit helma-spezifischen properties?[18:03] <p3k> erstmal nur generell[18:03] <p3k> Context.enter() liefert ja den aktuellen context, der dem thread zugeordnet ist[18:04] <p3k> es geht mir darum, dass ich hannes' vorschlag ausprobieren will, einen ClassShutter zum absichern von javascript request zu verwenden.[18:05] <p3k> damit der ibot3000 nicht zum exploitbot wird[18:05] <grob> verstehe[18:05] <p3k> eigentlich würde es mir nichts ausmachen, den aktuellen context zu verwenden[18:05] <p3k> das klappt ja gut[18:06] <p3k> aber wenn ich dort den ClassShutter anwende, bekomm ich beim zweiten request eine exception[18:06] <p3k> weil der nur gesetzt werden kann, sofern noch kein anderer vorhanden ist[18:06] <p3k> Wrapped java.lang.SecurityException: Cannot overwrite existing ClassShutter object[18:06] <grob> moment, ich muss da glaub ich mal nachlesen[18:08] <p3k> das merkwürdige ist dabei, dass ein context scheint's einen request überlebt[18:11] <grob> ja, afaik h?ngt der context am thread (also dem request evaluator)[18:13] <p3k> was hasten du gerade da reinkopiert, bei mir steht: (incompatible encoding)[18:13] <grob> ich hab gar nichts reinkopiert[18:14] <p3k> ah, du hast geschrieben "(also dem request evaluator)"[18:14] <p3k> und das hat mein oller client nicht verkraftet. interessant.[18:14] <rist> guten abend - mein client hat a gemotzt (colloquy)[18:14] <p3k> nein quatsch, das umlaut a in "hängt" hat colloquy gestört[18:15] <p3k> obwohl er alles anzeigt.[18:15] <p3k> trottelcolloquy[18:15] <rist> scheissencoding[18:15] <grob> komisches zeug: umlaute kommen bei mir immer als schrott an[18:16] <p3k> im hopbotlog auch[18:16] <p3k> http://helma.zumbrunn.net/hopbot/[18:16] <p3k> "hängt" wurde zu "h?ngt"[18:16] <grob> naja, umlaute gibts ja noch nicht so lange...[18:16] <p3k> nein eh.[18:16] <rist> irc aber schon[18:17] <p3k> ac/dc mötorwelt[18:18] <p3k> dinosaurirc[18:18] <p3k> gut, zurück zum cöntext[18:19] <p3k> kann ich also nicht so mirnixdirnix einen neuen context machen[18:19] <grob> nope[18:20] <grob> ich seh jedenfalls nicht wie das gehen sollte[18:20] <zumbrunn> die umlaute werden mir ok angezeigt...[18:20] <zumbrunn> sowohl in colloquy als auch im hopbot log[18:21] <grob> zumbrunn: ja, kann sein dass das an meinem komischen client liegt[18:21] <grob> ich bin ja irc newbie[18:21] <p3k> also kann ich den ClassShutter vergessen?[18:22] <p3k> js: Packages[18:22] <ibot3000> null[18:22] <p3k> js: res[18:22] <ibot3000> ReferenceError: "res" is not defined.[18:23] <p3k> js: Packages[18:23] <ibot3000> undefined[18:25] <p3k> js: new Date[18:25] <ibot3000> Mon Mar 26 2007 20:26:42 GMT+0200 (CEST)[18:25] <p3k> js: (new Date).getDay()[18:25] <ibot3000> 1[18:29] <zumbrunn> p3k: du koenntest ja chopper im ibot3000 scope herumfliegen lassen[18:29] <p3k> pffff. da müsste ich ja erstmal die ganzen neuen helma features nachimplementieren...[18:30] <zumbrunn> :-)[18:31] <p3k> nichtsdestotrotz bin ich offen für alle möglichen ideen, die sich mit so einem helmabasierten bot anstellen lassen.[18:31] <p3k> kann nur nicht versprechen, dass ich sie dann umsetze :)[18:31] <grob> was spricht dagegen, die SecurityException von visibleToScripts einfach zu catchen?[18:34] <grob> ich mein natuerlich von Context.setClassShutter()[18:35] <p3k> naja, dagegen spräche, dass ich nicht sicher sein kann, dass dann wirklich *mein* ClassShutter dort verwendet wird.[18:35] <p3k> die exception würde auch dann eintreten, wenn bereits ein anderer ClassShutter gesetzt worden wäre[18:36] <grob> aber du kannst doch sicherstellen, dass *dein* ClassShutter immer der erste ist, oder nicht?[18:36] <p3k> wie? der context existiert ja schon, ich kann ihn nur "entern"[18:37] <p3k> da könnte ja bereits in helma ein ClassShutter installiert worden sein[18:37] <p3k> (klar, ist derzeit nicht der fall, könnte aber eintreten.)[18:38] <p3k> js: global[18:38] <ibot3000> ReferenceError: "global" is not defined.[18:39] <grob> klar, wenn helma einen ClassShutter verwenden w?rde, dann w?r das problematisch[18:41] <p3k> derzeit läuft ibot3000 jedenfalls ohne ClassShutter mit chris zumbrunns hilfe auch ziemlich abgedichtet[18:41] <p3k> java und Packages sind dabei extra als undefined definiert[18:42] <p3k> und es gibt eh keine helmaspezifischen objekte[18:42] <p3k> andererseits kann ich z.b. keine method schreiben, die an beliebiger stelle eine message hier ausgibt[18:42] <grob> js: app[18:42] <ibot3000> ReferenceError: "app" is not defined.[18:44] <grob> d.h. du machst mit initStandardObjects einen eigenen scope, in dem du Packages etc. auf undefined setzt?[18:44] <zumbrunn> wie meinst du das genau mit der method und message?[18:44] <zumbrunn> was geht nicht?[18:44] <p3k> @grob: ja[18:45] <p3k> @zumbrunn: ich hab ja beim evaluieren des codes auch keinen zugriff mehr auf die pircbot instanz[18:45] <p3k> daher kann ich auch keine methode wie writeln definieren, die einen string in den chat sendet[18:46] <p3k> js: for (var i=0; i<10; i+=1) {/* writeln(i) */}[18:46] <ibot3000> undefined[18:46] <zumbrunn> ja, das schon...[18:46] <grob> kannst du nicht die pircbot instanz einfach als globales property in dem custom scope definieren?[18:47] <zumbrunn> aber du bekommst ein resultat zurück, das du auswerten könntest[18:47] <zumbrunn> ich meine...[18:47] <zumbrunn> statt das resultat direkt an den pircbot zurückzuschicken...[18:47] <p3k> @grob: dann kann ist es aber wieder möglich, z.b. die part() methode von ibot3000 aufzurufen, was ich gern vermeiden möchte[18:48] <p3k> @zumbrunn: wie meinst du das?[18:48] <zumbrunn> koenntest du es mittels einer methode im normalen helma scope auswerten[18:48] <p3k> wie komm ich wieder in den "normalen helma scope"?[18:49] <zumbrunn> oder du koenntest im ibot3000 scope eine library von methoden zur verfügung stellen[18:49] <zumbrunn> du bekommst ja ein resultat zurück[18:49] <p3k> welches resultat meinst du?[18:49] <zumbrunn> sonst würden wir das resultat vom ibot3000 ja nicht sehen[18:49] <p3k> dann muss ich den code parsen[18:50] <grob> @p3k: ja, schon klar, aber du k?nntest doch in dem scope ein globales object definieren, dem du nur die methoden zuweist die du erlauben willst, oder nicht?[18:50] <zumbrunn> afk[18:50] <p3k> das resultat ist ja das von context.evaluateString[18:51] <p3k> @grob: wie mach ich das?[18:51] <zumbrunn> back...[18:52] <zumbrunn> ja du müsstest das resultat parsen[18:52] <zumbrunn> oder das resultat wird durch eine methode im ibot3000 scope generiert[18:53] <p3k> var js = Packages.org.mozilla.javascript;[18:53] <p3k> var context = js.Context.enter();[18:53] <p3k> var scope = context.initStandardObjects();[18:53] <p3k> code = "java = undefined; Packages = undefined; " + code;[18:53] <p3k> result = context.evaluateString(scope, code, '<cmd>', 1, null);;[18:53] <p3k> how?[18:54] <grob> ah, ich dachte du machst scope.java = undefined etc.[18:54] <p3k> das geht?[18:54] <grob> scope ist ja nix anderes als ein js object[18:54] <p3k> gut zu wissen :)[18:54] <grob> zumindest stellt es sich mir so dar :)[18:55] <p3k> aber ich erinner mich. einmal hab ich scope = global gemacht und das funktioniert[18:55] <p3k> moment...[18:55] <grob> also solltest du auch scope.writeln = pircBotInstance.writeln machen k?nnen[18:55] <grob> oder scope.irc = {writeln: pircBotInstance.writeln};[18:56] <p3k> js: writeln("hello")[18:56] <ibot3000> hello[18:56] <ibot3000> undefined[18:56] <p3k> ja, so geht das natürlich. :)[18:57] <p3k> dängs![18:57] <grob> was ?hnliches hab ich in jala.Test auch gemacht[18:57] <p3k> js: for (var i=0; i<10; i+=1) { writeln(i) }[18:57] <ibot3000> 0[18:57] <ibot3000> 1[18:57] <ibot3000> 2[18:57] <ibot3000> 3[18:57] <ibot3000> 4[18:57] <ibot3000> 5[18:57] <ibot3000> 6[18:57] <ibot3000> 7[18:57] <ibot3000> 8[18:57] <ibot3000> 9[18:57] <ibot3000> undefined[18:57] <p3k> hihi[18:58] <grob> gibts da auch einen timeout? :-)[18:58] <p3k> das sollte wohl besser in einen buffer wandern[18:58] <p3k> und dann am ende ausgegeben werden[18:58] <zumbrunn> das ist ja was du schon hast[18:59] <zumbrunn> (das undefined am schluss ist der buffer)[19:00] <zumbrunn> genau wie in der hopshell[19:00] <p3k> ich mein die writeln()s sollten in einen buffer wandern und dann am ende komplett an den chat gesendet werden[19:01] <p3k> js: writeln("test")[19:01] <ibot3000> test[19:01] <p3k> js: for (var i=0; i<10; i+=1) { writeln(i) }[19:01] <ibot3000> 0123456789[19:01] <p3k> natürlich mit newlines :)[19:02] <p3k> js: for (var i=0; i<10; i+=1) { writeln(i) }[19:02] <ibot3000> 0[19:02] <p3k> js: Date[19:02] <ibot3000> function Date() { [native code for Date.Date, arity=1] }[19:02] <p3k> js: for (var i=0; i<10; i+=1) { writeln(i) }[19:02] <ibot3000> 0[19:03] <p3k> oh je es gibt keine newlines[19:03] <p3k> 1[19:03] <p3k> 2[19:03] <p3k> 3[19:03] <p3k> na bumm[19:05] <p3k> ui schon neun. cu
In the channel now:
Logs by date: