The web in a box - a next generation web framework for the Perl programming language

IRC log for #mojo, 2014-03-24

| Channels | #mojo index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:14 jack joined #mojo
00:32 ua_ joined #mojo
00:34 d4rkie joined #mojo
00:47 laouji joined #mojo
01:56 damaya joined #mojo
01:57 damaya I have a question regarding security. I am loading from the database into the session the user's id#. I then use the id# to grab fields they own from the database. I notice mojolicious key is encrypted. Still, are there security concerns with regards to my method?
02:06 d4rkie_ joined #mojo
02:45 klapperl_ joined #mojo
02:45 d4rkie joined #mojo
02:46 d4rkie_ joined #mojo
02:47 Adurah damaya, sessions are signed, not encrypted.
02:49 damaya Hrm, I'll be darned
02:49 damaya gonna have to think of a different way to do this then
02:49 damaya thanks for the info
02:50 Adurah Userid is exposed in most forum software and it's not a huge concern.
02:50 Adurah If your DB is ever leaked, not much you can do.
02:55 laouji_ joined #mojo
03:14 cpan_mojo Mojolicious-Plugin-RedirectHost 0.05 by Alex - http://metacpan.org/release/ALEXBYK/Mojolicious-Plugin-RedirectHost-0.05
03:18 zM joined #mojo
04:27 cpan_mojo Mojolicious-Plugin-Web-Auth 0.08 by HAYAJO - http://metacpan.org/release/HAYAJO/Mojolicious-Plugin-Web-Auth-0.08
04:37 disputin joined #mojo
05:06 bzero joined #mojo
05:30 laouji joined #mojo
05:44 alnewkirk joined #mojo
05:49 russum1 left #mojo
05:49 sujithm joined #mojo
06:00 mport left #mojo
06:19 Vandal joined #mojo
06:28 sujithm joined #mojo
06:32 laouji joined #mojo
07:06 Eke- joined #mojo
07:10 dpetrov_ joined #mojo
07:17 basiliscos joined #mojo
07:26 edestler joined #mojo
07:32 laouji joined #mojo
07:54 dod joined #mojo
08:12 rawler joined #mojo
08:14 dod joined #mojo
08:15 eseyman joined #mojo
08:27 maxhq joined #mojo
08:40 fhelmber_ joined #mojo
08:45 mire_ joined #mojo
08:56 sujithm joined #mojo
09:06 phips|mac left #mojo
09:33 Vandal joined #mojo
09:39 arthas joined #mojo
10:04 disputin joined #mojo
10:06 irq joined #mojo
10:22 dotan joined #mojo
10:32 Eke- joined #mojo
10:37 dod joined #mojo
10:42 trone joined #mojo
10:43 dod joined #mojo
10:46 mire_ joined #mojo
10:51 cpan_mojo Mojolicious-Plugin-Responsinator 0.02 by Jan Henning Thorsen - http://metacpan.org/release/JHTHORSEN/Mojolicious-Plugin-Responsinator-0.02
10:51 batman pretty crazy that i waited until today to release ^ - just to be part of http://onceaweek.cjmweb.net/longest :)
10:54 Jonneh joined #mojo
11:11 zivester joined #mojo
11:29 sujithm_ joined #mojo
11:31 nic thank goodness for that; was worried I was the only nutter :)
11:35 dotan tempire: Mojo::DOM/Collection stuff I use - find, each, attr, a grep, some careful at()s and couple of pluck()s.
11:36 dotan tempire: find(...)->pluck(..)->join(..) when I want to do chaining and at(...)->attr(...) will die with an exception if at(..) returns undef.
11:43 dod joined #mojo
11:47 sujithm joined #mojo
11:50 maxhq joined #mojo
11:52 ver joined #mojo
11:53 disputin joined #mojo
12:03 mattastrophe joined #mojo
12:07 dod joined #mojo
12:10 maxhq joined #mojo
12:20 cpan_mojo Mojolicious-Plugin-Crypto by Marco Romano - http://metacpan.org/release/NEMUX/Mojolicious-Plugin-Crypto
12:30 neilhwatson joined #mojo
12:30 d4rkie joined #mojo
12:33 mire_ joined #mojo
13:02 denisboyun joined #mojo
13:10 odc talking about crypto, why is mojolicious still using SHA1 for signatures? why not switch to sha256 or 384?
13:11 odc i keep reading everywhere sha1 is not secure anymore
13:13 nic I've forgotten the answer(s), but if you search the log for "SHA1" you should find previous discussions
13:14 nic (been discussed extensively at least once in the past 2 yrs)
13:15 odc oh! right thx
13:28 odc summary of what i just read: sha1 != hmac-sha1.  You are safe if you use a long password
13:35 sujithm joined #mojo
14:01 doby joined #mojo
14:04 btyler joined #mojo
14:04 mattastrophe joined #mojo
14:08 bluescreen joined #mojo
14:15 sh4 joined #mojo
14:15 gryphon joined #mojo
14:24 sujithm joined #mojo
14:46 jim joined #mojo
14:50 jim joined #mojo
14:52 mport joined #mojo
14:52 jim Hello, I can't get Plugin::Mount to mount multiple applications. Mounting one is perfectly fine, but mounting two just can't get it work for the second mounted application. http://codeshare.io/cZ7EN, read similar question on google group and didn't find any follow up. Thanks!
14:53 jontaylor joined #mojo
14:53 jontaylor I've got a bit of a worrying issue on my production environment, I've just upgraded from Mojolicious 3.x to 4.9
14:54 jontaylor I've got 2 servers behind an nginx reverse proxy, and i'm getting users constantly being shown the login page
14:54 jontaylor I think hitting one server is invalidating the cookie for the other
14:54 jontaylor my $app->secrets() is the same on both though
14:55 jontaylor i've worked around it for now by dropping one of the servers out from nginx, so a single box is serving all requests
14:56 batman jim: you need to load Mount twice
14:56 jontaylor I can test it out without putting the server back in the cluster by logging in as normal, and then adding an /etc/hosts entry to hit the other internal IP
14:57 batman jontaylor: have you looked at the actual headers sent back and forth to the browser?
14:58 batman also, do you have $app->session->secure(1) set?
14:58 jim batman: I tried $self->plugin(Mount=> ) separately for test_mount1 and test_mount2, but it still didn't work.. also I coudn't get it to work with toadfarm to work either..
15:00 batman jim: not sure if i want to help you much more, since you don't want to help me back :(
15:00 jontaylor batman: I don't have the secure flag set, i'll look up the docs for it
15:01 batman jontaylor: i was thinking that might screw things up... (the secure attribute)
15:01 batman jontaylor: use chrome or some other browser to look up the Cookie headers
15:02 jontaylor I don't think I can even turn that on, because although the site is served over https, the SSL part ends with nginx, and its plain HTTP on the internal network
15:02 jontaylor so mojolicious would see it as a HTTP cookie I imagine
15:02 batman jontaylor: you can still turn it on.
15:02 jim batman: sorry, I tried toadfarm first but couldn't get it to work and then tried plugin::mount.. would you mind looking at my toadfarm version?
15:02 jack joined #mojo
15:03 jontaylor batman: I'm going to check the headers as you said real quick, thanks, brb
15:03 batman i don't think so. seems to work for me. could be because i'm using https://metacpan.org/pod/Mojolicious::Plugin::RequestBase
15:03 batman jim: would you mind reading the new documentation i put together? https://github.com/jhthorsen/toadfarm
15:04 jim batman: will do, i think the problem i had is to understand the doc..
15:05 batman jontaylor: are you 100% sure you're using the same $app->secrets() on both instances?
15:05 batman jontaylor: is there even a tiny possibility that you might not..?
15:05 * batman have to go out for a while *bbl*
15:05 batman good luck
15:05 purl You'll need it.
15:13 jrbeilke joined #mojo
15:19 jontaylor Turns out, the app never restarted on one of the boxes, because it didn't have read permission of log/production.log
15:19 batman jontaylor: \o/
15:19 batman i'm happy for you :)
15:19 jontaylor thank you :)
15:19 jontaylor Its nice having people around when things break :)
15:21 jontaylor I couldn't see the error with hypnotoad, because I assume it daemonises before it has a chance to should in STDOUT/STDERR
15:21 jontaylor *shout
15:21 jontaylor it was letting me know with the $RETVAL though, but I wasn't looking :p
15:22 jim batman: I appreciate it if you can look at my try at toadfarm, http://codeshare.io/rWWjx , it successfully launches the second application but not the first one..
15:23 batman jim: still no feedback for my doc..?
15:23 jim batman: yes I do
15:24 batman hypnotoad does not allow you to mount under /foo and /foo2, it will only trigger another app by HTTP headers.
15:24 batman like { Host => "mydomain.com" }
15:24 sujithm joined #mojo
15:24 jim I think you should have a simpler synopsis, synopsis should be the minimalist working example. and then you can elaborate on options..
15:25 jontaylor batman: I had a quick browse of your project, Are you using iptables to forward the traffic for you? :p
15:25 batman jontaylor: yes. (which project..?)
15:25 jontaylor toadfarm
15:25 jim I am basically trying to get the simplest example to work but couldn't because I can't figure it out from the doc..
15:25 jontaylor is that just to save on having to run something like nginx?
15:25 batman jim: no idea how to make the synopsis smaller :(
15:26 batman jontaylor: yeah. cloudflare runs nginx, so i don't have to
15:26 jim batman: is host a necessary config option?
15:26 batman jim: no, but you need some sort of header to trigger on.
15:27 jwang joined #mojo
15:27 batman Host, Cookie, X-Request-Base, ...
15:27 rem_lex|pivo joined #mojo
15:27 batman jim: the config you have has no rules, so both test_mount and test_mount2 are treated equal. (except of the order they are loaded)
15:27 batman nothing to distinguish one from the other
15:28 jim batman: I think the doc is targeted to a more experienced user, I had no idea regarding the headers..
15:28 jim maybe it should be explained in the doc  in a little bit?
15:28 batman jim: toadfarm is not for you if you want to distinguish the apps based on /path1 and /path2
15:29 batman "Toadfarm provide functionality to route requests to a standalone application based on HTTP headers instead of the request path." <-- that's what i tried to do here
15:29 jim batman: thanks, i am trying to pull this all together, give me a sec..
15:29 batman are you sure you read that sentence?
15:30 * batman really have to go now...
15:30 jim batman: thanks. I had no concept of it so didn't fully understand, you have a good one
15:31 Akron joined #mojo
15:32 batman so you don't know what a HTTP header is..?
15:32 batman trying to understand what you don't understand to improve the docs...
15:34 jim batman: you are right, I can get the mojolicious to work on many tasks but I really lack basic concepts..
15:35 jim I think there are people like me who can get basic stuff work but no idea how they worked..
15:35 batman hehe. i'm there as well :)
15:35 * neilhwatson raises hand
15:35 batman but *we* learn as well as time goes :)
15:35 jim batman: so how can I modify the toadfarm.conf to get it work?:)
15:36 jontaylor I'm fortunate in that nobody uses my opensource projects :)
15:36 jim mojo is great in this regard because prior to using it i had no idea how to write a web app
15:36 batman i don't think you can. i might add support for it later. later = http://timer.thorsen.pm/1395675388/5400
15:37 dod joined #mojo
15:37 jim got you, so can plugin::mount solve my problem?
15:37 batman not sure what you want.
15:38 batman do you want /script/app1 to be available on domain.com/path1 and /script/app2 to be available on domain.com/path2 ?
15:38 jim to mount two simplistic app in one wrapper app
15:38 jim batman: both app1 and app2 are on the same host
15:38 batman BUT HOW WILL YOU ACCESS THE APPS?
15:39 batman you can't have them both on domain.com/ <--- and without any headers.
15:39 batman that simply does not work.
15:39 batman *bbl*
15:39 batman you need a mount point...
15:39 ua_ joined #mojo
15:39 jim oh? does that mean I can't mount two applications on the same host?..
15:40 genio hypnotoad app 1 listens on port 8080 or whatever, hypnotoad app 2 listens on 8181 or just anything different from 1.  NginX or some other web server listens on 80/443 and acts as a proxy for app 1 or 2 based on URL
15:41 genio but having them both answer on the same request isn't doable
15:41 jim genio, why can't both app1 and app2 listen on port 8080? sorry if sounds silly
15:43 jontaylor jim: are both apps on the same domain name?
15:44 jim jontaylor: I can only answer that they are on the same host, not sure regarding domain name..
15:44 jontaylor jim: its important to work out that detail
15:44 jontaylor jim: I myself run a lot of different apps on the same host
15:44 jontaylor jim: on the same IP infact
15:45 jontaylor jim: but I give each one a different domain name, and then I can use a VirtualHosts directive (apache) or ServerName directive (nginx) to route them to the right place
15:46 jontaylor The apps need at least one thing to differ, either the domain name, the IP, a port, or a path
15:46 genio jim: read the documentation in Mojo for NginX.  you can run multiple apps on the same host/domain like I mentioned.  if the user goes to foo.com/whatever  they hit the app you assigned to "whatever"  if they hit foo.com/morestuff then they get the app you assigned to "morestuff".  if you have multiple domain names sharing the same IP address, then jontaylor's suggestion is good
15:46 jim oh Jon: all my apps are for internal use, so for example We use hostname:port to access the apps, I don't think we use Virtualhost
15:46 jim hostname : port sorry
15:46 batman Jim: you need either different Host (or another header) or different /path.
15:46 jontaylor jim: in that case you can just continue to use the different port numbers surely
15:47 batman You can't have http://foo.com:8080/ to access BOTH apps. It's like saying one route should call to actions.
15:48 genio if they're internal, you can easily assign a CNAME to the machine for internal use (creates another domain name) and have foo.yourcompany.com and bar.yourcompany.com both resolve to your host.  you then setup virtualhosts or servername directives for your web server
15:49 batman And Toadfarm allow you to configure virtual hosts
15:50 genio If you have an IT department, the networking/server admins there should know what you want.  you want a CNAME to your current host to allow it to answer to two different names.
15:52 Akron Will there be acceptance notifications for MojoConf before the extended deadline or do we have to wait?
15:59 jim Thank you all for your gracious help!! lots of stuff to learn.  Batman: if I'll let app1 user one port and app2 use another port, how to configure toadfarm for that? the user requirement is to launch app1 and app2 together with toadfarm and have a way for the user to access it, then it is good enough.
16:01 arthas joined #mojo
16:03 batman jim: your answers will come at the end of the timer.
16:05 jim batman: Thank you, I'll do some research on the terminologies here in the mean time.
16:20 batman jim: http://en.wikipedia.org/wiki/Virtual_host
16:22 jim batman: Thank you, I am looking forward to use toadfarm to configure virtual host and get rid of the need for a nginx or apache. I also don't want to let users to use port to acccess the apps. I'll read the page.
16:22 batman :)
16:23 basiliscos joined #mojo
16:28 Akron batman: Is there a simple possibility to provide a reload option in a web app for authenticated admin users? Like the reload plugin - without git hooks. A function that is sended from the mojo app that will gracefully kill itself and Toadfarm reloads it?
16:29 Akron I mean a "function call from the mojo app".
16:29 batman yes. $r->post('/restart')->to(cb => sub { kill 'HUP', getppid; shift->render("Restarting...\n"); });
16:29 batman that is indeed super evil, but possible.
16:30 batman ooops. render(text => "Restarting...\n");
16:30 Akron ;)
16:30 Akron Cool - will give it a try.
16:31 Akron Is it more evil than reloading via Git Hooks?
16:31 batman i don't think so :)
16:32 batman no idea why you want to reload the same app though...
16:32 Akron :)
16:33 Akron Files changed via FTP (i18n, templates, config) and the admin might not want to see a command line.
16:34 Akron Oh - but may be there is a better way to reset the template cache, reload the config and do stuff ... hmm ...
16:35 batman yeah. it's all objects, so you can reset the cache
16:35 batman but i think actually it might be better to HUP instead, since then you -know- everything is fresh.
16:35 batman but clearing just the templates that changed might be best
16:36 batman Akron: https://metacpan.org/pod/Mojolicious::Renderer#cache == $c->app->renderer->cache
16:36 batman the problem will be that it will only clear the cache in one of the workers...
16:37 batman HUP will clear everything
16:40 Akron Yes. That's the problem. And for i18n it is a lot more complicated - as some plugins inject their own lexicons that won't be updated otherwise.
16:40 Akron So I will give the HUP a try. Looks good. Thank you! batman++
16:43 mattastrophe joined #mojo
16:44 batman your welcome :)
16:44 * batman is on fire today! :D
16:44 rem_lex joined #mojo
16:54 irq_ joined #mojo
16:54 batman jim: crap. i won't make it in time. have to do it later :(
16:54 batman got dinner company
16:58 jack joined #mojo
17:04 ua_ joined #mojo
17:09 doby batman: read through the toadfarm README and edited for configuration
17:09 doby batman: interested in a pull request?
17:10 meshl joined #mojo
17:16 doby oh ... he's at dinner
17:19 russum joined #mojo
17:21 tempire liveperl.us has definitely made some improvements
17:21 tempire neat
17:23 jim batman: enjoy your dinner. I have app1 and app2, and I want toadfarm to manage them, and i hope they can be accessed as domain.com/app1 and domain.com/app2. That's all i want.
17:46 denisboyun joined #mojo
17:59 denis_boyun__ joined #mojo
18:01 punter joined #mojo
18:01 beyondcreed joined #mojo
18:15 camelo joined #mojo
18:15 camelo hi
18:28 btyler joined #mojo
18:31 Akron camelo: Hi!
18:35 disputin joined #mojo
18:41 hesco how do I enable logging when starting my app with:  perl -Ilocal/lib/perl5 -Ilib script/myapp &
18:42 hesco I see nothing at log/uat.log as expected.
18:43 jim what's in myapp?
18:43 purl it has been said that in myapp is not useful
18:43 batman jim: not different ports?
18:44 jim batman: I don't want different ports, it is ugly, I want access app1 and app2 like domain.com/app1 and domain.com/app2
18:45 hesco contents of script/myapp:  https://gist.github.com/hesco/169ac5deecb2dcac32c6
18:45 hesco hope that helps Jim
18:46 hesco or perhaps its jim: ^^^^
18:46 jim hesco: can you use morbo instead of perl to launch myapp?
18:47 hesco morbo wanted to do it at port 3000
18:47 hesco not sure why, given the code.
18:47 hesco maybe that was not the issue.
18:47 hesco are you saying that morbo will handle logging for me?
18:48 hesco are either of these strategies suitable for production?
18:50 jim just tried perl daemon
18:50 jim it writes to log/developent.log
18:54 tholen joined #mojo
18:58 jim hesco: if you use hypnotoad, it automatically writes to log/production.log
19:08 jim batman: is my requirement possible using toadfarm alone? or do I have to use nginx?
19:10 mire__ joined #mojo
19:13 batman jim: this is all you really need: http://p.thorsen.pm/086beaa49ac4
19:13 batman jim: i'm on the phone...
19:14 jim batman: trying, Thank you.
19:27 batman jim: did it work?
19:31 gryphon joined #mojo
19:33 mire_ joined #mojo
19:33 jim batman: it worked, I used mojo generate App1 and App2 and used the code snipped you provided. There must be something wrong with my real apps. Thank you much! Btw: toadfarm use headers to differentiate which app to route to, what sets the headers? does that mean you need something like nginx to set the headers ?
19:33 btyler joined #mojo
19:34 nicomen I'm expecting this to work, but it doesn't am I doing something wrong? $route->get('/get/:id', id => qr/\d+/)->to(...)
19:35 nicomen /get/123 gives 404
19:37 irq joined #mojo
19:38 batman jim: -any- headers. no. the browser creates headers for you. such as Accept, Host, Accept-Language, User-Agent, ...
19:38 batman nicomen: i think you need [id => qr{...}]
19:38 nicomen oh, really?
19:39 batman try.
19:39 nicomen trying
19:39 nicomen but that's far from obvious from the docs...
19:39 dod joined #mojo
19:40 batman oh?
19:41 nicomen http://mojolicio.us/perldoc/Mojolicious/Guides/Routing#More_restrictive_placeholders
19:41 nicomen the regexp example
19:41 nicomen but yeah that did the trick ;)
19:42 batman you're not using route(). you're using get()
19:43 jim batman:in the doc  "Or it will pass the request on to /path/to/my-app if the "Host" header is set to "mydomain.com"." is mydomain.com a virtual host setup in nginx or apache?
19:43 jim and mydomain.com is what user type into the urlbar?
19:43 batman jim: neither. it's http://domain1.com or http://domain2.com. the browser sets "Host"
19:43 batman exactly: what you said last.
19:45 jim batman: lets say I type http://randomurl in the url bar, and also I set Host=>randomurl in the toadfarm.conf, how could toadfarm handle my request to http://randomurl magically ?
19:46 batman it just does :)
19:46 nicomen batman: I think jberger told me the arguments were interchangeable
19:46 batman err... "Host" is just the domain, not the whole URL
19:46 batman nicomen: i think you misunderstood.
19:46 nicomen also, I have not found info looking in the get docs :-(
19:48 nicomen lol, except it says there right in front of me wtf
19:51 Akron joined #mojo
19:58 jim batman: http://p.thorsen.pm/d6579f2c8e17 I can't use http://domain1 and http://domain2 to access app1 and app2. Is some more config options needed?
20:23 hesco thanks Jim.  got caught in phone conference hell almost as soon as I posted that question.  I'll try to sort out how to how to use hypnotoad next, I guess.
20:23 hesco :q
20:26 jim hesco: https://groups.google.com/forum/#!msg/mojolicious/sSTDey-pgY8/GvuiZY-pXLkJ this thread regarding customizing log dir might help
20:26 hesco thanks, appreciated
20:38 punter see AccessLog plugin for Mojolicious, on CPAN
21:05 camelo joined #mojo
21:14 batman jim: what is the response you get when you access http://domain1 ? server not found, 404, ...?
21:16 jim i found access denied(content_filter_denied) and it actually redirects to www.domain1.com, I use firefox
21:17 jim looks like my company blocks access to www.domain1.com
21:18 xantus joined #mojo
21:18 xantus heyo
21:19 xantus I was looking at code in controller and singed cookie doesn't rotate the secrets, it just grabs the first (on set)
21:21 jim @batman, do you have some simple  test code  on github so I an download at home to test it out?
21:22 mire joined #mojo
21:25 bedivere joined #mojo
21:25 bedivere hi
21:25 purl hi, bedivere.
21:26 bedivere is it possible to serve static files with $c->render_static with an absolute path?
21:27 jim absolute path is evil, what if you move the app aroud?
21:29 russum Are there any mojolicious plugins or cpan modules that’ll make user management easy (handling new user registration, email confirmation, password reset, etc, even roles maybe?), preferably something that works with mongodb? . I found this - https://github.com/koorchik/Mojolicious-Plugin-UserManager but it looks a little outdated.
21:31 jim got  404 not found problems using Plugin::Mount, looks like some css and js can't be found once mounted
21:31 bedivere my idea is to have a single installation of my app and different locations as data paths for file uploads. the paths are configured by the application administrator and are not user provided
21:42 bedivere i might use "push @{$app->static->paths}, '/home/sri/public';", but then i have no control over who has access to these files. everyone who knows the paths will be able to see them like the files in the common "public" directory of the application
21:46 batman jim: not sure why that happens. maybe you need to use the dev tools in your browser...
21:46 batman jim: sorry i messed up. i've been packing for my trip to nyc tomorrow :/
21:47 jim batman: you did a great job! Have a great trip!
21:47 batman thanks
21:47 batman i've pushed the new documentation, but it's just a draft...
21:49 batman jim: https://github.com/jhthorsen/toadfarm/tree/master/lib/Toadfarm/Manual
21:50 batman and the toadfarm version on github should be able to do what Mount does, but I didn't get to writing a test to prove it.
21:50 jim batman: a minimalistic runnable code on your github goes a long way too. I lookforward to that.
21:50 batman "mount_point" on https://github.com/jhthorsen/toadfarm/blob/master/lib/Toadfarm/Manual/Config.pod ... not documented :P
21:51 jim nice, I'll keep bothering you later:)
21:51 mudler joined #mojo
21:51 batman please review the documents in the "Manual" directory i just posted.
21:52 batman http://p.thorsen.pm/d6579f2c8e17 <-- that should work what you posted. You need to use the dev tools to see if "Host" is sent over the wire
21:52 jim yes will let you know when I get home to have uncensored intenert
21:53 batman :)
21:53 batman i will me mostly offline until next thursday. please open tickets on github or send me emails. jhthorsen@cpan.org
21:54 batman i'm very much interested in getting a more documented version on cpan
21:54 batman and of course: adding useful features are also cool :)
21:54 jim have fun!
21:54 batman thanks :)
21:54 batman good night
21:58 espent joined #mojo
22:40 bedivere left #mojo
23:24 d4rkie joined #mojo
23:27 mire_ joined #mojo
23:33 jberger batman enjoy your trip!

| Channels | #mojo index | Today | | Search | Google Search | Plain-Text | summary