Hopbot log for 2007-03-26 - Helma IRC channel: #helma on irc.freenode.net

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: