The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/'>
<channel>
  <title>LiveJournal Development</title>
  <link>http://community.livejournal.com/lj_dev/</link>
  <description>LiveJournal Development - LiveJournal.com</description>
  <lastBuildDate>Tue, 18 Apr 2006 18:29:22 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <image>
    <url>http://www.livejournal.com/userpic/42132/26901</url>
    <title>LiveJournal Development</title>
    <link>http://community.livejournal.com/lj_dev/</link>
    <width>100</width>
    <height>75</height>
  </image>

<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/714037.html</guid>
  <pubDate>Tue, 18 Apr 2006 18:29:22 GMT</pubDate>
  <title>MogileFS - LJ - Replication</title>
  <link>http://community.livejournal.com/lj_dev/714037.html</link>
  <description>Got MogileFS up and running on a single test server running both mogstored and mogilefsd.&lt;br /&gt;For test purposes instead of mounting different drives or partitions at /var/mogdata I just created three local directories dev1, dev2, dev3.&lt;br /&gt;&lt;br /&gt;When I create userpics, single copies of the pics are stored to /var/mogdata/dev1/0/000/000 - /var/mogdata/dev3/0/000/000.  But it is only storing 1 copy of each userpic (mindevcount  is set to 3 for userpics).&lt;br /&gt;&lt;br /&gt;Question - Is this working as designed because it is smart enough to realize that dev1-dev3 are really the same file system so why waist space?, or do I have something configured wrong that is preventing replication?   (I did notice in the host table for hostid 1 the http_port set to 7500 but there is nothing in the http_get_port).&lt;br /&gt;&lt;br /&gt;Thanks.....</description>
  <comments>http://community.livejournal.com/lj_dev/714037.html</comments>
</item>
<item>
  <guid>http://community.livejournal.com/lj_dev/713810.html</guid>
  <pubDate>Tue, 11 Apr 2006 17:25:28 GMT</pubDate>
  <title>different ljconfig.pl for apache-ssl</title>
  <link>http://community.livejournal.com/lj_dev/713810.html</link>
  <description>Hi.&lt;br /&gt;&lt;br /&gt;I apologize if this is the wrong place for this post, but this is what I need to do.&lt;br /&gt;&lt;br /&gt;External access to our company&apos;s intranet is through https and through redirection. basically, from the internet, the user types in&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://mycompany/blog&quot;&gt;https://mycompany/blog&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;which the IIS server changes to&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blog/blog&quot;&gt;https://blog/blog&lt;/a&gt;   (don&apos;t ask me why they have this setup) .. grabs the content and displays it to the outside user.&lt;br /&gt;&lt;br /&gt;so now, I am in a quandary.&lt;br /&gt;&lt;br /&gt;I want normal users (in the intranet) to be able to access &lt;a href=&quot;http://blog&quot;&gt;http://blog&lt;/a&gt; and the users accessing from the extranet to be able to access &lt;a href=&quot;https://blog/blog&quot;&gt;https://blog/blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;so what&apos;s the best way to do this?&lt;br /&gt;&lt;br /&gt;Here is what I have done so far.&lt;br /&gt;&lt;br /&gt;a) created a subdirectory (/home/lj/blog) and symlinked (/home/lj to /home/lj/blog) except ljconfig.pl&lt;br /&gt;b) pointed /etc/apache-ssl/httpd.conf&lt;br /&gt;    i) the document root to be /home/lj/blog &lt;br /&gt;    ii) PERLSETEV LJHOME /home/lj/blog&lt;br /&gt;c) changed /home/lj/blog/ljconfig.pl so that the $SITE variable is &lt;a href=&quot;https://blog/blog&quot;&gt;https://blog/blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;basically what i want is that /home/lj be served by apache-perl and /home/lj/blog be served by apache-ssl &lt;br /&gt;&lt;br /&gt;when i try all this, unfortunately, I get the following error in /var/log/apache-ssl/error.log&lt;br /&gt;&lt;br /&gt;cannot find /home/lj/blog/htdocs/blog&lt;br /&gt;&lt;br /&gt;i must be making a stupid mistake.. but am i wrong in thinking the above will work?&lt;br /&gt;&lt;br /&gt;is there a better/easier way to do this? basically have 2 ljconfig.pl and make apache-perl read one and apache-ssl read the other?</description>
  <comments>http://community.livejournal.com/lj_dev/713810.html</comments>
</item>
<item>
  <guid isPermaLink='false'>http://community.livejournal.com/lj_dev/713549.html</guid>
  <pubDate>Sun, 09 Apr 2006 16:58:17 GMT</pubDate>
  <title>Interests API</title>
  <link>http://community.livejournal.com/lj_dev/713549.html</link>
  <description>Hi, I&apos;m Israeli development consulter and working on some product that using LiveJournal.com API&lt;br /&gt;&lt;br /&gt;I&apos;m not sure, that&apos;s right place to ask, but I&apos;m seeking for &quot;interests&quot; API for LJ. The only information found was regarding set_interests(setinterests) and get_interests(getinterests) in changelogs. Maybe members of this community can point me to the right way to figure information regarding this interface&lt;br /&gt;&lt;br /&gt;Thank you</description>
  <comments>http://community.livejournal.com/lj_dev/713549.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/713324.html</guid>
  <pubDate>Sun, 09 Apr 2006 16:57:58 GMT</pubDate>
  <title>One happy Dev machine?</title>
  <link>http://community.livejournal.com/lj_dev/713324.html</link>
  <description>The new userpic factory requires MogileFS in order to work and does not error out real gracefully if Mogilefs is not there.  No biggey, I wanted to turn MogileFS on anyway.  After reading up I think I see how to create the DB, create the storage devices, user mogadmin to populate the DB, set up the config files for mogstored and mogilefsd, start the daemons.&lt;br /&gt;&lt;br /&gt;The questions:  Is there any hidden gotcha that will prevent this from all working on the same machine (obviously a dev env not a  production env) if I set it up with only one storage device?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks,</description>
  <comments>http://community.livejournal.com/lj_dev/713324.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/713006.html</guid>
  <pubDate>Fri, 07 Apr 2006 23:47:37 GMT</pubDate>
  <title>subversion</title>
  <link>http://community.livejournal.com/lj_dev/713006.html</link>
  <description>We&apos;re now using Subversion instead of CVS.  Everything&apos;s been imported into:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://code.sixapart.com/svn/livejournal/trunk/&quot;&gt;http://code.sixapart.com/svn/livejourna&lt;wbr /&gt;l/trunk/&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://code.sixapart.com/svn/ljcom/trunk/&quot;&gt;http://code.sixapart.com/svn/ljcom/trun&lt;wbr /&gt;k/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And dozens of other repositories.  (wcmtools was broken out into a repo per directory, pretty much, as each directory there was basically an old project....)&lt;br /&gt;&lt;br /&gt;But multicvs.pl (which the historical cvsreport.pl wraps) will take care of checking them all out.  But for details, see:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://code.sixapart.com/svn/livejournal/trunk/cvs/multicvs.conf&quot;&gt;http://code.sixapart.com/svn/livejourna&lt;wbr /&gt;l/trunk/cvs/multicvs.conf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Which has this list:&lt;br /&gt;&lt;br /&gt;SVN(livejournal) = &lt;a href=&quot;http://code.sixapart.com/svn/livejournal/trunk/&quot;&gt;http://code.sixapart.com/svn/livejourna&lt;wbr /&gt;l/trunk/&lt;/a&gt;&lt;br /&gt;SVN(gearman) = &lt;a href=&quot;http://code.sixapart.com/svn/gearman/trunk/&quot;&gt;http://code.sixapart.com/svn/gearman/tr&lt;wbr /&gt;unk/&lt;/a&gt;&lt;br /&gt;SVN(perlbal) = &lt;a href=&quot;http://code.sixapart.com/svn/perlbal/trunk/&quot;&gt;http://code.sixapart.com/svn/perlbal/tr&lt;wbr /&gt;unk/&lt;/a&gt;&lt;br /&gt;SVN(memcached) = &lt;a href=&quot;http://code.sixapart.com/svn/memcached/trunk/&quot;&gt;http://code.sixapart.com/svn/memcac&lt;wbr /&gt;hed/trunk/&lt;/a&gt;&lt;br /&gt;SVN(CSS-Cleaner) = &lt;a href=&quot;http://code.sixapart.com/svn/CSS-Cleaner/trunk/&quot;&gt;http://code.sixapart.com/svn/CSS-Cleane&lt;wbr /&gt;r/trunk/&lt;/a&gt;&lt;br /&gt;SVN(Sys-Syscall) = &lt;a href=&quot;http://code.sixapart.com/svn/Sys-Syscall/trunk/&quot;&gt;http://code.sixapart.com/svn/Sys-Syscal&lt;wbr /&gt;l/trunk/&lt;/a&gt;&lt;br /&gt;SVN(LWPx-ParanoidAgent) = &lt;a href=&quot;http://code.sixapart.com/svn/LWPx-ParanoidAgent/trunk/&quot;&gt;http://code.sixapart.com/svn/LWPx-Paran&lt;wbr /&gt;oidAgent/trunk/&lt;/a&gt;&lt;br /&gt;SVN(adengine) = &lt;a href=&quot;http://code.sixapart.com/svn/adengine/trunk/&quot;&gt;http://code.sixapart.com/svn/adengine/t&lt;wbr /&gt;runk/&lt;/a&gt;&lt;br /&gt;SVN(Danga-Socket) = &lt;a href=&quot;http://code.sixapart.com/svn/Danga-Socket/trunk/&quot;&gt;http://code.sixapart.com/svn/Danga-Sock&lt;wbr /&gt;et/trunk/&lt;/a&gt;&lt;br /&gt;SVN(djabberd) = &lt;a href=&quot;http://code.sixapart.com/svn/djabberd/trunk/&quot;&gt;http://code.sixapart.com/svn/djabberd/t&lt;wbr /&gt;runk/&lt;/a&gt;&lt;br /&gt;SVN(s2) = &lt;a href=&quot;http://code.sixapart.com/svn/s2/trunk/&quot;&gt;http://code.sixapart.com/svn/s2/trunk/&lt;/a&gt;&lt;wbr /&gt;&lt;br /&gt;&lt;br /&gt;The machine has Trac and viewcvs installed as well.  See &lt;a href=&quot;http://code.sixapart.com/&quot;&gt;http://code.sixapart.com/&lt;/a&gt; which will soon be updated with more links/info.</description>
  <comments>http://community.livejournal.com/lj_dev/713006.html</comments>
  <category>multicvs</category>
  <category>cvs</category>
  <category>svn</category>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/712833.html</guid>
  <pubDate>Wed, 05 Apr 2006 22:43:00 GMT</pubDate>
  <title>Public Asterisk server</title>
  <link>http://community.livejournal.com/lj_dev/712833.html</link>
  <description>The public SIP/IAX2-to-LiveJournal &lt;a href=&quot;http://community.livejournal.com/lj_dev/706430.html&quot;&gt;project&lt;/a&gt; has been finally resurrected.&lt;br /&gt;&lt;br /&gt;Try to do SIP/IAX2 to:  &lt;b&gt;204.9.177.24&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;And do a LJ voicepost.  (if you have a paid account)&lt;br /&gt;&lt;br /&gt;The system is now outside of our network, but is using your LJ pin auth, and we&apos;re importing its recordings into LJ&apos;s network for posting to your journal.&lt;br /&gt;&lt;br /&gt;Please report success/failure with method/OS/client/etc.&lt;br /&gt;&lt;br /&gt;Thanks!&lt;br /&gt;&lt;br /&gt;P.S.  It&apos;s known to work with &lt;a href=&quot;http://iaxclient.sourceforge.net/iaxcomm/&quot;&gt;iaxComm&lt;/a&gt; on Win/Linux/Mac, but note that the iaxComm program is pretty flakey and the initial &quot;Account settings&quot; page is buggy, so you&apos;ll likely have to quit that screen and go back into preferences and re-add it.   Username whatever (&quot;guest&quot; or blank), no password.  Dial any number (say, &quot;1&quot;), then press &quot;Dial&quot; to connect.</description>
  <comments>http://community.livejournal.com/lj_dev/712833.html</comments>
  <category>asterisk</category>
  <category>voicepost</category>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/712581.html</guid>
  <pubDate>Mon, 03 Apr 2006 22:08:41 GMT</pubDate>
  <title>LJ and PGP</title>
  <link>http://community.livejournal.com/lj_dev/712581.html</link>
  <description>I wonder if you have thought about it before.&lt;br /&gt;Recently there was a case in the Russian livejournal community when someone set up a hoax account of a prominent person and used it to produce loads of silly comments in highly visible journals.&lt;br /&gt;That made me wonder how to make sure that a hoax author can be easily identified. I didn&apos;t come to a complete solution of the problem, but it occurred to me that livejournal is a good implementation of a trusted peer network, and seems to be a good place to sign, exchange and use public keys. What do you think about this idea (as if you had nothing else to think about)?</description>
  <comments>http://community.livejournal.com/lj_dev/712581.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/712356.html</guid>
  <pubDate>Mon, 20 Mar 2006 06:33:17 GMT</pubDate>
  <title>utf-8 bug</title>
  <link>http://community.livejournal.com/lj_dev/712356.html</link>
  <description>I&apos;m sure there are more pressing bugs, but here&apos;s a note all the same.:&lt;br /&gt;&lt;br /&gt;Livejournal stores and transmits &lt;strike&gt;malformed&lt;/strike&gt; illegal utf-8 characters such as the following: � (U+DBA0, a UTF-16 surrogate).  This breaks clients and services that expect utf-8 replies, especially on xml which is usually more strict than html.</description>
  <comments>http://community.livejournal.com/lj_dev/712356.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/712139.html</guid>
  <pubDate>Wed, 15 Mar 2006 17:39:43 GMT</pubDate>
  <title>BUG REPORT: Slight glitch with malformed tags.</title>
  <link>http://community.livejournal.com/lj_dev/712139.html</link>
  <description>I created a post with a tag that&apos;s just a &quot;.&quot;&lt;br /&gt;&lt;br /&gt;LJ&apos;s tag system doesn&apos;t handle that condition as it should.&lt;br /&gt;&lt;br /&gt;Clicking on the . tag sends you to:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://m-leprae.livejournal.com/tag/&quot;&gt;http://m-leprae.livejournal.com/tag/&lt;wbr /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It really ought to send you to:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://m-leprae.livejournal.com/tag/&quot;&gt;http://m-leprae.livejournal.com/tag/&lt;wbr /&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I guess that&apos;s not a legal URL however.&lt;br /&gt;&lt;br /&gt;A little more experimenting yields a few more glitches:&lt;br /&gt;&lt;br /&gt;Clicking on a tag that&apos;s .. will cause you to climb up to &lt;a href=&quot;http://m-leprae.livejournal.com&quot;&gt;http://m-leprae.livejournal.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Clicking on tag that&apos;s ../friends sends you to my friends page.&lt;br /&gt;&lt;br /&gt;Example entry at: &lt;a href=&quot;http://m-leprae.livejournal.com/294364.html&quot;&gt;http://m-leprae.livejournal.com/294&lt;wbr /&gt;364.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There may be worse things one can do, but I&apos;d rather not go there.</description>
  <comments>http://community.livejournal.com/lj_dev/712139.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/711730.html</guid>
  <pubDate>Fri, 10 Mar 2006 18:40:56 GMT</pubDate>
  <title>Don&apos;t know where else to post this: Sprint picturemail fix</title>
  <link>http://community.livejournal.com/lj_dev/711730.html</link>
  <description>Cut in case it&apos;s off topic.&lt;br /&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Okay, so I use sprint, and their stupid method of emailing picture messages annoys me to no end. I otherwise like their service, and even if I didn&apos;t, we&apos;re married for the next two years anyhow :)&lt;br /&gt;&lt;br /&gt;Anyway, so I noticed with my samsung A900, I was posting pictures to livejournal and noticing they looked small and grainy. For a 1280x960 image, that didn&apos;t look right. It turns out that the actual image livejournal is posting is based on the xml crud in the email, which actually generates a small version of the image suitable for mobile phones. Ugh.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;!-- lsPictureMail-Share-iETr4JPjm77BG8Bo7UHh-comment
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF&amp;#45;8&amp;quot;?&amp;gt;
&amp;lt;shareMessage&amp;gt;
   &amp;lt;messageContents type=&amp;quot;PICTURE&amp;quot;&amp;gt;
      &amp;lt;messageText&amp;gt;Hi&amp;lt;/messageText&amp;gt;
      &amp;lt;mediaItems&amp;gt;
         &amp;lt;mediaItem id=&amp;quot;1&amp;quot;&amp;gt;                        
            &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
            &amp;amp;lt;url&amp;amp;gt;http://pictures.sprintpcs.com/getMMBOXMessageMedia?id=Xw1004H8sLv6S3x76lVPYmsnJP2O20g3zlhB%2Fx7njqW9MscUXIEXBQmk5gW%2FZUWGmojEaNnHPws%2F%0A5lpklQ8%2Bufjui%2BAXcLyJG3ClZw2m2Gi1qkXdBdb5KgoH8KyzBNpwHmgReddy4aqnGyBYMpsPyA%3D%3D%0A&amp;amp;lt;/url&amp;amp;gt;

            &amp;lt;urlExpiration&amp;gt;2006&amp;#45;03&amp;#45;10T19:31:51Z&amp;lt;/urlExpiration&amp;gt;
         &amp;lt;/mediaItem&amp;gt;
      &amp;lt;/mediaItems&amp;gt;
   &amp;lt;/messageContents&amp;gt;
&amp;lt;/shareMessage&amp;gt;

--&amp;gt;
&amp;lt;!-- lsPictureMail-UserInfo-iETr4JPjm77BG8Bo7UHh-comment
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF&amp;#45;8&amp;quot;?&amp;gt;
&amp;lt;UserInfo timestamp=&amp;quot;2006&amp;#45;03&amp;#45;03T19:31:51.785+00:00&amp;quot; originating_from_address=&amp;quot;USERNAMEREDACTED@pm.sprint.com&amp;quot;&amp;gt;&amp;lt;credential name=&amp;quot;MDN&amp;quot;&amp;gt;248XXXXXXX&amp;lt;/credential&amp;gt;&amp;lt;/UserInfo&amp;gt;
 --&amp;gt;
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ugly, huh?&lt;br /&gt;&lt;br /&gt;Anyway, there&apos;s some useful information, and the parser for this is at line 200 of livejournal/cgi-bin/ljemailgateway.pl.&lt;br /&gt;&lt;br /&gt;Now, I&apos;m a perl ninja and all, but I really don&apos;t want to hack this deep into the code having never laid my hands on it before, and offer up a patch that will one day break, or not work right, so I&apos;m hoping that if I supply a method of grabbing the full media file, someone else can make the fix and push it in? :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyway, the key is in the actual body of the email, in the middle of the HTML. Yes, I know, parsing HTML to get this is fugly. Just wait, because it gets worse.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;img src=&quot;http://pictures.sprintpcs.com//mmps/RECIPIENT/001_01116de4bcdbcd9c_1/2.2?inviteToken=iETr4JPjm77BG8Bo7UHh&amp;amp;limitsize=258,258&amp;amp;outquality=90&amp;amp;squareoutput=255,255,255&amp;amp;ext=.jpg&amp;amp;iconifyVideo=true&amp;amp;wm=1&quot;/&amp;gt;
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Okay, so there&apos;s the line from the email that has the actual image string we want in it. Here&apos;s what you have to do:&lt;br /&gt;&lt;br /&gt;Search the email for an image tag with the string &quot;/mmps/RECIPIENT/&quot; in the src.&lt;br /&gt;&lt;br /&gt;Pull out the url:&lt;br /&gt;&lt;a href=&quot;http://pictures.sprintpcs.com//mmps/RECIPIENT/001_01116de4bcdbcd9c_1/2.2?inviteToken=iETr4JPjm77BG8Bo7UHh&amp;amp;limitsize=258,258&amp;amp;outquality=90&amp;amp;squareoutput=255,255,255&amp;amp;ext=.jpg&amp;amp;iconifyVideo=true&amp;amp;wm=1&quot;&gt;http://pictures.sprintpcs.com//mmps/REC&lt;wbr /&gt;IPIENT/001_01116de4bcdbcd9c_1/2.2?invite&lt;wbr /&gt;Token=iETr4JPjm77BG8Bo7UHh&amp;amp;limitsize=258,2&lt;wbr /&gt;58&amp;amp;outquality=90&amp;amp;squareoutput=255,255,25&lt;wbr /&gt;5&amp;amp;ext=.jpg&amp;amp;iconifyVideo=true&amp;amp;wm=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the real email, they&apos;re actually HTML entities too, so you have to use HTML::Entities::decode_entities() to make it work right. It&apos;s already loaded (and used in the current code) so no biggie.&lt;br /&gt;&lt;br /&gt;What you have to end up doing is removing all arguments to that URL, except for inviteToken=blalbalbalblab and ext=.jpg&lt;br /&gt;&lt;br /&gt;So it now looks like:&lt;br /&gt;&lt;a href=&quot;http://pictures.sprintpcs.com//mmps/RECIPIENT/001_01116de4bcdbcd9c_1/2.2?inviteToken=iETr4JPjm77BG8Bo7UHh&amp;amp;ext=.jpg&quot;&gt;http://pictures.sprintpcs.com//mmps/REC&lt;wbr /&gt;IPIENT/001_01116de4bcdbcd9c_1/2.2?invite&lt;wbr /&gt;Token=iETr4JPjm77BG8Bo7UHh&amp;amp;ext=.jpg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This has the upside of removing the stupid &quot;frame&quot; from around the picture too. ugh.&lt;br /&gt;&lt;br /&gt;You now hold the raw media file, which in this example, is from my girlfriend&apos;s 640x480 phone, a picture of hello kitty.&lt;br /&gt;&lt;br /&gt;The upside to this URL, is also, strangely enough, that unlike the tag in the XML, this image does not expire. You can fetch it at any time, even if the mailserver is lagging bad, and doesn&apos;t process the message for the default expiry of 7 days.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I&apos;d be willing to pitch in what I can in terms of code to get this going, but from my description, it should be pretty self explanitory, and allow for much higher quality images to come from sprint phones.&lt;br /&gt;&lt;br /&gt;Thanks!</description>
  <comments>http://community.livejournal.com/lj_dev/711730.html</comments>
  <lj:mood>geeky</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/711461.html</guid>
  <pubDate>Thu, 09 Mar 2006 10:58:17 GMT</pubDate>
  <title>OpenId: wrongly escaped url?</title>
  <link>http://community.livejournal.com/lj_dev/711461.html</link>
  <description>Hey,&lt;br /&gt;&lt;br /&gt;Our users (&lt;a href=&quot;http://www.foodcandy.com&quot;&gt;http://www.foodcandy.com&lt;/a&gt;) have issues with Lj&apos;s OpenId implementation on Firefox running on Linux. Details after the cut.&lt;br /&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;We redirect to something like this: &lt;a href=&quot;http://www.livejournal.com:80/openid/server.bml?openid.identity=http%3a%2f%2fharryh.livejournal.com%2f&amp;openid.return_to=http%3a%2f%www.foodcandy.com%2fAccountLogin.aspx&amp;openid.trust_root=http%3a%2f%2fwww.foodcandy.com&amp;openid.mode=checkid_setup&amp;openid.assoc_handle=1141175386%3azLGZESEzvNsNz52O41kC%3a94aec3bf89&quot;&gt;http://www.livejournal.com:80/openid/se&lt;wbr /&gt;rver.bml?openid.identity=http%3a%2f%2fha&lt;wbr /&gt;rryh.livejournal.com%2f&amp;openid.return_to=http%3a%2f%www.foodcand&lt;wbr /&gt;y.com%2fAccountLogin.aspx&amp;openid.trust_root=http%3a%2f%2fwww.foodc&lt;wbr /&gt;andy.com&amp;openid.mode=checkid_setup&amp;openid.assoc_handle=1141175386%3azLGZESE&lt;wbr /&gt;zvNsNz52O41kC%3a94aec3bf89&lt;/a&gt; - that seems to land at &lt;a href=&quot;http://www.livejournal.com/openid/approve.bml?return_to=http://www.foodcandy.com/AccountLogin.aspx&amp;identity=http://harryh.livejournal.com/&amp;assoc_handle=1141175929:av40yQ946R3z4WrUd70P:42b4506fe8&amp;trust_root=http://www.foodcandy.com&quot;&gt;http://www.livejournal.com/openid/appro&lt;wbr /&gt;ve.bml?return_to=http://www.foodcandy.co&lt;wbr /&gt;m/AccountLogin.aspx&amp;identity=http://harryh.livejournal.com/&amp;assoc_handle=1141175929:av40yQ946R3z4WrU&lt;wbr /&gt;d70P:42b4506fe8&amp;trust_root=http://www.foodcandy.com&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Notice the unescaped parameters (looks wrong to me).&lt;br /&gt;&lt;br /&gt;My users are saying this is a blank page on firefox+linux.&lt;br /&gt;&lt;br /&gt;Ideas? Comments? Bug?&lt;br /&gt;&lt;br /&gt;Much appreciated,&lt;br /&gt;dB.&lt;br /&gt;</description>
  <comments>http://community.livejournal.com/lj_dev/711461.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/711286.html</guid>
  <pubDate>Tue, 07 Mar 2006 00:25:25 GMT</pubDate>
  <title>XSS exploits &amp; perm accounts</title>
  <link>http://community.livejournal.com/lj_dev/711286.html</link>
  <description>Another security bughunt round will begin soon (the code on both the live site and dev site needs to be updated), but before that begins I want to make sure everybody has their perm accounts.&lt;br /&gt;&lt;br /&gt;We notice that there are 9 people that haven&apos;t got theirs yet.  If you&apos;re one, email accounts@livejournal.com (using the email you would&apos;ve sent the XSS-LJ email with) with the username you want to have a perm account and we&apos;ll look up your ticket and award you.&lt;br /&gt;&lt;br /&gt;The SHA1s of the lowercased emails that still need perm accounts are:&lt;br /&gt;&lt;br /&gt;165ca37eabfd30d39c0b02063643fe2a73aa25d6&lt;br /&gt;335410032e8c0c44a1c30f8f848ad0ac8a7e03c5&lt;br /&gt;3f2c8af8ff061ccbe08494a62d714457d1a71c30&lt;br /&gt;59e9914025681bb2145661c781d048b458880595&lt;br /&gt;7457cb4526638c4304143688ed242a45847658d0&lt;br /&gt;b619c73a32aa92ae6909cf9ec5b6c0bcbd481ba7&lt;br /&gt;b87d5a97a2fce540e97edbc969d769f083b02f8d&lt;br /&gt;cb5ae7ce9c253fd803a682a2816adc1fc692883e&lt;br /&gt;d8c33159d760a5e5602728d9e52f7dbb9fa971e9</description>
  <comments>http://community.livejournal.com/lj_dev/711286.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/711020.html</guid>
  <pubDate>Mon, 27 Feb 2006 23:31:49 GMT</pubDate>
  <title>Duplicate feeds for communities</title>
  <link>http://community.livejournal.com/lj_dev/711020.html</link>
  <description>Hello.&lt;br /&gt;I&apos;m product manager for Yandex Blog Search, russian blog search engine.&lt;br /&gt;&lt;br /&gt;We have some difficulties with LJ.&lt;br /&gt;&lt;br /&gt;Main difficulty now is that any community, for example, &lt;a href=&quot;http://lj-dev.livejournal.com/&quot;&gt;http://lj-dev.livejournal.com/&lt;/a&gt; (and &lt;a href=&quot;http://lj-dev.livejournal.com/data/rss&quot;&gt;http://lj-dev.livejournal.com/data/rss&lt;/a&gt;&lt;wbr /&gt;) is not a redirect to right location (&lt;a href=&quot;http://community.livejournal.com/lj_dev/&quot;&gt;http://community.livejournal.com/lj_de&lt;wbr /&gt;v/&lt;/a&gt;), but a duplicate. It leads to some side effects in our blog search.&lt;br /&gt;&lt;br /&gt;Do you think it is bug? We reported it first day after URLs changed, but it was not fixed.&lt;br /&gt;&lt;br /&gt;Sorry if this is wrong place for such questions.</description>
  <comments>http://community.livejournal.com/lj_dev/711020.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/710896.html</guid>
  <pubDate>Thu, 16 Feb 2006 17:00:34 GMT</pubDate>
  <title>LJ Apache/mod_perl2 Port</title>
  <link>http://community.livejournal.com/lj_dev/710896.html</link>
  <description>Hello to everyone on ljdev!&lt;br /&gt;&lt;br /&gt;This is my first time post in ljdev although I&apos;ve been monitoring ljdev on and off for many months now.  I&apos;m primarily interested in having a version of LJ running on Apache/mod_perl2 - finally getting around making it happen.  Unfortunately I had to incorporate it as part of a school project to carve out the time.&lt;br /&gt;&lt;br /&gt;In a couple of weeks I hope to have semi-functioning LJ code that supports both Apache 1.x &amp; 2.x and associated mod_perl (since that&apos;s when the project is due) - especially interested in having it run with minimal work with vanilla Fedora Core 4.&lt;br /&gt;&lt;br /&gt;There are a couple of ljdev posts regarding LJ and Apache 2.0 so there seems to be some interest.  Will anyone be interested in my port?  I&apos;d like to contribute my work if anyone&apos;s willing to try it out.&lt;br /&gt;&lt;br /&gt;Advice and comments would be greatly appreciated!&lt;br /&gt;&lt;br /&gt;And finally I have some questions - some for the purposes of the port and others are for the project report (I have to get the school fluff out of the way!).  A big thanks to those who reply!&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Why are you interested in a 2.x port?  My initial motivation was to run a small private, LJ site for small group of friends but I couldn&apos;t get it to work with Fedora-out-of-the-box.  My goal is to have LJ running with as little modification as possible to a Fedora system.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;For those who plan to install LJ on their own servers, how many users are you looking to support?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;What kind of systems are you planning to use as LJ server?  OS?  Desktop PC? Server machine?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;What are the primary reason(s) for using LJ?  What kind of journals (work? personal?)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Are you interested in a straight port to 2.x or one that supports both 1.x and 2.x?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Why do you want backwards compatibility?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;What are you most worried about with installing/upgrading LJ?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;What part of the (LJ) installation process causes the most pain?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;What kind of configurations of LJ/Apache/mod_perl do you have?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Additional comments/insights/suggestions?  Any questions you think I should have asked?&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;</description>
  <comments>http://community.livejournal.com/lj_dev/710896.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/710503.html</guid>
  <pubDate>Tue, 14 Feb 2006 18:09:27 GMT</pubDate>
  <title>CVS repository down?</title>
  <link>http://community.livejournal.com/lj_dev/710503.html</link>
  <description>Hi,&lt;br /&gt;&lt;br /&gt;I&apos;m new to livejournal, and would like to download the opensource for reference in my school project. However, I can&apos;t seem to be able to download anything through the cvs. Is the server currently down? If so, when will it be up again? Please advice, Thank you. :)&lt;br /&gt;&lt;br /&gt;Cheers.</description>
  <comments>http://community.livejournal.com/lj_dev/710503.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/710161.html</guid>
  <pubDate>Mon, 13 Feb 2006 19:53:25 GMT</pubDate>
  <title>XSS update</title>
  <link>http://community.livejournal.com/lj_dev/710161.html</link>
  <description>Fixed a bunch, still got a handful to go.&lt;br /&gt;&lt;br /&gt;We&apos;re keeping all the emails in our ticket tracking system, and keeping track of who needs a permanent account.  Ryan is going through the list this week (and some of last week) and emailing out perm account coupons/information.&lt;br /&gt;&lt;br /&gt;Will post more about round 3 when we&apos;re done fixing all current known issues.</description>
  <comments>http://community.livejournal.com/lj_dev/710161.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/709783.html</guid>
  <pubDate>Wed, 08 Feb 2006 05:02:41 GMT</pubDate>
  <title>Enhancing the RTE</title>
  <link>http://community.livejournal.com/lj_dev/709783.html</link>
  <description>So I&apos;ve been spending part of the day working on integrating &lt;a href=&quot;http://www.fckeditor.net/&quot;&gt;FCKeditor&lt;/a&gt; into LJ, since we all know the current rich text editor isn&apos;t great.  Issue I&apos;m running into is it always converts &amp;lt;, &amp;gt;, and &amp; to their html entities on submit.  So this presents a problem for people wanting to type something like &amp;lt;lj user=&apos;test&apos; /&amp;gt;.&lt;br /&gt;&lt;br /&gt;So two solutions I see:&lt;br /&gt;A) Stop the entity conversion&lt;br /&gt;B) Write a plugin that adds toolbar buttons for LJ specific tags&lt;br /&gt;&lt;br /&gt;Issue with A is that I can&apos;t figure out where the this conversion is happening.  I have disabled the FCKConfig.ProcessHTMLEntities option, but a comment in fckhtmlentities.js says, &quot;This entity is automatically handled by the XHTML parser&quot;.  Every place it seems like it would be doing this conversion, it isn&apos;t.  So frustrated with this option.&lt;br /&gt;&lt;br /&gt;Issue with B is I that can write a plugin to add a toolbar button with no problem, but don&apos;t think I can make it convert an lj tag when someone goes from normal to rich mode.  Also not sure how to visually represent things like an lj-cut in the editing interface.&lt;br /&gt;&lt;br /&gt;Another option is to always convert the entity back on form submission, client or server side, this however would mean that I couldn&apos;t type the entities in the RTE like I did above as an example tag.&lt;br /&gt;&lt;br /&gt;So two solutions, neither of which seem perfect.  Seems like the good solution is a combination of A and B, so a button to add these tags, and have them show up as a tag in the rich view while not being converted to entities on submit.  Been reading through the project&apos;s site on SourceForge and seems like others have this same issue with entities; though I guess the project hasn&apos;t decided to address it yet.  Costs $175 in a donation to get &quot;email support&quot;.  Anyone familiar with FCKeditor?&lt;br /&gt;&lt;br /&gt;Edit: Seems like I&apos;ve just been going crazy with this all day and it is a fairly easy solution.  On submit we do a bit of a onversion which should end up with the right stuff in the end.  Sorry for the friends page spam. :P</description>
  <comments>http://community.livejournal.com/lj_dev/709783.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/709562.html</guid>
  <pubDate>Tue, 07 Feb 2006 21:29:41 GMT</pubDate>
  <title>LJ crawler for reasearch purposes</title>
  <link>http://community.livejournal.com/lj_dev/709562.html</link>
  <description>Hello!  I&apos;m sure this has been asked many times, but I haven&apos;t found such a post looking back for a while.  Anyway: I&apos;m currently writing a crawler for LJ for a research project that I&apos;m working on, and I want to make sure I&apos;m following all the rules, and also if anyone has advice they could give me.  &lt;br /&gt;&lt;br /&gt;First of all:  the research is to determine group sentiment towards particular topics.  We will make a single crawl over LJ and then use the data to develop agregate results.  Details of individual users will not be mentioned in the report.  &lt;br /&gt;&lt;br /&gt;For this project we plan to first seed our crawler with usernames and community names found in google searches on a particular topic.  We will then crawl over community members and friends of users whose robots.txt files don&apos;t exclude crawlers.  From each user we are considering only pulling the RSS file, or possibly pulling articles from up to a year in the past.  &lt;br /&gt;&lt;br /&gt;I have a few questions, though:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;What about pulling user comments?  Would that be ok?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;How do I know if a community allows robots or not, since they don&apos;t have a subdomain with a robots.txt file?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;At what rate of requests/sec should I set my crawler to in order for it to be &quot;nice&quot;?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Are there any previous simmilar works that anyone is aware of?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;For users that exclude robots: would it be appropriate if I send them a message via their livejournal email address asking if they would like to be included in the research?&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Again, this is strictly not for profit, aggregate data collection for research purposes only.  I would appreciate any comments anyone has.</description>
  <comments>http://community.livejournal.com/lj_dev/709562.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/709314.html</guid>
  <pubDate>Tue, 07 Feb 2006 19:06:39 GMT</pubDate>
  <title>An easier way to find CSS exploits</title>
  <link>http://community.livejournal.com/lj_dev/709314.html</link>
  <description>Another way to get permanent accounts, if nobody has beaten you to the exploit:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.test.dev.livejournal.org/misc/csstest.bml&quot;&gt;http://www.test.dev.livejournal.org/mis&lt;wbr /&gt;c/csstest.bml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Find some CSS which does an alert box (or any JavaScript, but alerts are very in-your-face), then email me with at least subject &quot;XSS-LJ &lt;i&gt;whatever&lt;/i&gt;&quot;, the browser, and the CSS you put in the box.&lt;br /&gt;&lt;br /&gt;Happy Hacking.</description>
  <comments>http://community.livejournal.com/lj_dev/709314.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/708866.html</guid>
  <pubDate>Tue, 07 Feb 2006 00:06:07 GMT</pubDate>
  <title>XSS contest, round 2</title>
  <link>http://community.livejournal.com/lj_dev/708866.html</link>
  <description>Same rules &lt;a href=&quot;http://community.livejournal.com/lj_dev/708313.html&quot;&gt;as before&lt;/a&gt;.  Try and inject JavaScript into the test server, now running newer code:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.test.dev.livejournal.org/&quot;&gt;http://www.test.dev.livejournal.org/&lt;wbr /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mail me if you find an exploit, and tell me which browser.  Read the old post I linked for more details.&lt;br /&gt;&lt;br /&gt;Happy hacking!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;BTW&lt;/b&gt;, we&apos;re still tracking everybody&apos;s submissions.  If you haven&apos;t gotten your permanent account, don&apos;t worry ... we haven&apos;t forgotten about you.  Just backlogged.</description>
  <comments>http://community.livejournal.com/lj_dev/708866.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/708810.html</guid>
  <pubDate>Fri, 03 Feb 2006 06:55:07 GMT</pubDate>
  <title>legacy cookie support actually fixed now</title>
  <link>http://community.livejournal.com/lj_dev/708810.html</link>
  <description>The code in LJ::Session which supported legacy cookie support was broken due to a subtle bug in BML&apos;s cookie handling.  That&apos;s now fixed:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://community.livejournal.com/changelog/2656195.html&quot;&gt;http://community.livejournal.com/change&lt;wbr /&gt;log/2656195.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So all these issues will go away after the next code push:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://community.livejournal.com/lj_dev/706840.html&quot;&gt;http://community.livejournal.com/lj&lt;wbr /&gt;_dev/706840.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sorry for not testing it last time... the code in LJ::Session was so simple it was &quot;obviously&quot; correct (and it was, afterall), but the BML bug messed it up.  (that we got back [undef], not [], when ljmastersession wasn&apos;t present....)</description>
  <comments>http://community.livejournal.com/lj_dev/708810.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/708425.html</guid>
  <pubDate>Wed, 01 Feb 2006 05:01:23 GMT</pubDate>
  <title>XSS challenge: update</title>
  <link>http://community.livejournal.com/lj_dev/708425.html</link>
  <description>Whoa, thanks everybody.&lt;br /&gt;&lt;br /&gt;Please, though, hold off on the XSS bug reports.  We got way more than we thought.  Embarassing.  I was hoping for 5 or 6, not ~30.&lt;br /&gt;&lt;br /&gt;We&apos;ve fixed most of them but still have a few hard ones remaining and most the incoming emails now are dups.&lt;br /&gt;&lt;br /&gt;Please wait for round two.  (tomorrow or tomorrow night I&apos;m guessing, after we update the test server&apos;s code...)&lt;br /&gt;&lt;br /&gt;Don&apos;t worry, we&apos;re making tickets for all of them, and we&apos;re keeping track of each ones who/what/when of them all.  We&apos;ll be doing perm accounts in a batch after we put up round two.</description>
  <comments>http://community.livejournal.com/lj_dev/708425.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/708313.html</guid>
  <pubDate>Tue, 31 Jan 2006 06:29:46 GMT</pubDate>
  <title>the XSS security challenge</title>
  <link>http://community.livejournal.com/lj_dev/708313.html</link>
  <description>Anybody bored and want a permanent account?  Read on:&lt;br /&gt;&lt;br /&gt;We&apos;re going to be running an XSS (Cross site scripting / Javascript injection) bug hunt challenge soon here.  The biz people like the idea but need to squabble over rules and legal stuff.  &lt;b&gt;Unofficially&lt;/b&gt;, it&apos;ll involve giving out permanent accounts and money (or gift certificates).&lt;br /&gt;&lt;br /&gt;So while I can&apos;t promise you jack right now in terms of money, I can give out permanent accounts like candy, so I&apos;ll announce the first round of the game:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;STEP 1:&lt;/b&gt;  Go to &lt;a href=&quot;http://www.test.dev.livejournal.org/&quot;&gt;http://www.test.dev.livejournal.org/&lt;wbr /&gt;&lt;/a&gt; .  Make an account.  Probably need to &lt;a href=&quot;http://www.test.dev.livejournal.org/admin/accounts/acctedit.bml&quot;&gt;change it to paid&lt;/a&gt; so you can make styles/etc.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;STEP 2:&lt;/b&gt;  Inject some JavaScript.  Use S1, S2, CSS, overrides, you name it.  It&apos;d probably help if you read the HTML and CSS cleaner code in cvs to look for bugs, but it&apos;s not required.  If you want, the code is at:&lt;br /&gt;&lt;br /&gt;cvs/livejournal/cgi-bin/cleanhtml.pl&lt;br /&gt;cvs/wcmtools/lib/HTMLCleaner.pm&lt;br /&gt;cvs/wcmtools/lib/CSS-Cleaner/lib/CSS/Cle&lt;wbr /&gt;aner.pm&lt;br /&gt;&lt;br /&gt;CVS viewers are at &lt;a href=&quot;http://cvs.danga.com/&quot;&gt;http://cvs.danga.com/&lt;/a&gt; and &lt;a href=&quot;http://cvs.livejournal.org/&quot;&gt;http://cvs.livejournal.org/&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;&lt;b&gt;STEP 3:&lt;/b&gt;  Email me (brad@danga.com) with subject containing at least &quot;&lt;b&gt;XSS-LJ&lt;/b&gt;&quot;, and a URL to a &lt;b&gt;&lt;i&gt;minimal test case&lt;/i&gt;&lt;/b&gt; illustrating your hole.  I need to know how you did it, source code, maybe your test account&apos;s password, whatever it takes.  The more clear it is, the more likely you win and I don&apos;t accept somebody else&apos;s later but more clear bug report first.  After you find a hole, go create a new account for your next hole.&lt;br /&gt;&lt;br /&gt;Brad&apos;s unofficial rules:  I am judge, jury, and sole candy giver, at least until there are official rules.  If I give you a permanent account, that doesn&apos;t mean you&apos;re not eligible for money/gift certificates later.  We&apos;ll retroactively give that out for the best/hardest-to-fix/most-clever holes after the fact.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;NOTE:&lt;/b&gt;  The code running on the above URLs isn&apos;t live on the site yet.  We don&apos;t care about holes at www.livejournal.com, because they&apos;re likely already fixed in the test code.  The test code will go live on the site soon-ish.  So reproduce (or produce) your bug reports on the test machine.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;NOTE 2:&lt;/b&gt;  The test machine above is a small virtual machine.  I might not have given it enough memory.  If it sucks, I&apos;ll increase it.  Bear with me.</description>
  <comments>http://community.livejournal.com/lj_dev/708313.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/708069.html</guid>
  <pubDate>Fri, 27 Jan 2006 00:38:18 GMT</pubDate>
  <title>Discussing The Security Changes</title>
  <link>http://community.livejournal.com/lj_dev/708069.html</link>
  <description>As we announced last week in &lt;span class=&apos;ljuser&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://news.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://stat.livejournal.com/img/newsinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;16&apos; height=&apos;16&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://news.livejournal.com/&apos;&gt;&lt;b&gt;news&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;, we have changed the canonical URL of most journal, community, and syndicated content.  We have also now changed our cookie handling &lt;a href=&quot;http://community.livejournal.com/lj_dev/706058.html&quot;&gt;as Brad previously described&lt;/a&gt;.  In the end this means that it is much more difficult to steal a useful cookie.  Our goal with our new cookie scheme is to limit the damage that can occur when your cookies do get stolen, which we&apos;re just going to assume is inevitable, as vulnerabilities have been found in all major browsers and we&apos;re quite sure new vulnerabilities will continue to be found.&lt;br /&gt;&lt;br /&gt;Shortly before our news post last week, we became aware that it was possible to use the “-moz-binding” CSS attribute within Mozilla and Mozilla Firefox to execute arbitrary offsite JavaScript.  As this attribute is designed to allow attaching an XBL transform and JavaScript to any node within the DOM, it is quite easy to use in a malicious fashion.  A &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=324253&quot;&gt;bug&lt;/a&gt; has also been filed in Mozilla&apos;s BugZilla tracker to try and address this issue.  Over a year ago, &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=178993&quot;&gt;we sponsored and developed&lt;/a&gt; a patch for Mozilla to support HTTPOnly cookies which emerged in Internet Explorer 6 and would have prevented this attack, though this patch was never included in Mozilla.&lt;br /&gt;&lt;br /&gt;We immediately altered our cleaner to strip this attribute from entries and comments, though also realized that wasn&apos;t even half the battle.  As we allow custom CSS in many of our styles, as well as the ability to link to an external stylesheet in a variety of fashions, it was quite possible to take advantage of this exploit and hijack the session cookie of any user who views your journal.  As we, along with many other sites, used one cookie to authenticate a user, this cookie was quite powerful if stolen.  If the user had not chosen to bind their cookie to their IP address, a malicious user could steal it, login as that user, deface the account and spam with it, as well as modify that user&apos;s style to include the exploit thus causing this problem to spread much like a virus.&lt;br /&gt;&lt;br /&gt;Borrowing the idea from another development team within Six Apart, we decided we needed to break our cookies into three categories.  One cookie would be our master cookie, this cookie would only be accessible on www.livejournal.com where we will not display untrusted content.  A second cookie will be accessible on all subdomains of livejournal.com, though it only will say if you are logged in or not; it is solely for optimization.  We then will issue one cookie for each journal you visit.  This cookie will be only accessible on username.livejournal.com or community.livejournal.com/username as it is limited to a single journal.  This cookie will only grant you the permission to read protected entries and post in the particular journal.  This means that if the journal owner steals your cookie, they will be able to do nothing more than view their journal as if they are you.  In the end you will have n+2 cookies, with n being the number of journals you visit.&lt;br /&gt;&lt;br /&gt;Due to the fact that we cannot clean every external CSS stylesheet linked to every time we generate a journal page, this change is required.  While it does not fully protect us from some new cross site scripting vulnerability that can be exploited via entries or comments, they are much easier to block, patch, and recover from quickly. With Mozilla deciding to allow the execution of arbitrary JavaScript via CSS, there is no other viable solution than the one we have undertaken.&lt;br /&gt;&lt;br /&gt;We&apos;ve already taken a variety of steps to further protect your account such as we&apos;ve &lt;a href=&quot;http://www.livejournal.com/manage/logins.bml&quot;&gt;implemented a page where you can see all of your login session&lt;/a&gt;, now require your password to change your email address, and now send secure password reset emails.  We also are planning future improvements, especially related to external CSS stylesheets, and hope everyone realizes the amount of attention we place on the security of every account.  We&apos;re more than happy to answer any questions you have in regards to the changes we&apos;ve made over the past week, though also hope it is understood that we are limited in what information we can share when actively dealing with a situation such as this.</description>
  <comments>http://community.livejournal.com/lj_dev/708069.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/lj_dev/707830.html</guid>
  <pubDate>Thu, 26 Jan 2006 17:43:10 GMT</pubDate>
  <title>Apache2 + LJ fun</title>
  <link>http://community.livejournal.com/lj_dev/707830.html</link>
  <description>So, I decided to ignore the warnings about the LiveJournal code not working on Apache2 and try it anyway (using Apache2::compat for now). Oddly enough, some of the problems I&apos;ve run into so far are mod_perl ones (I&apos;m using 2.0.2) rather than LiveJournal ones...&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PerlSetEnv doesn&apos;t seem to have any effect in a VirtualHost, even though the docs say it should work (this is where &lt;a href=&quot;http://community.livejournal.com/lj_dev/690668.html&quot;&gt;someone else&apos;s attempts failed&lt;/a&gt;). Moving it to global scope made it work. This would probably also apply if porting to mod_perl 2.0 properly.&lt;/li&gt;&lt;li&gt;Apache::LiveJournal::Interface::S2 - &apos;Bareword &quot;OK&quot; not allowed while &quot;strict subs&quot; in use&apos;, solved by changing the include to &apos;use Apache::Constants qw(NOT_FOUND OK);&apos;. Not sure what causes this (but the change might still be necessary if porting properly)...&lt;/li&gt;&lt;li&gt;Apache2::compat &lt;a href=&quot;http://perl.apache.org/docs/2.0/user/porting/compat.html#C_Apache__Constants_&quot;&gt;&quot;doesn&apos;t provide a complete back compatibility layer&quot;&lt;/a&gt; for Apache::Constants. BAD_REQUEST is missing (it&apos;s Apache2::Const::HTTP_BAD_REQUEST in mod_perl 2). This breaks FotoBilder.pm&lt;/li&gt;&lt;li&gt;Apache::Log and Apache::URI aren&apos;t provided by Apache2::compat, though their functionality is&lt;/li&gt;&lt;li&gt;Apache::compat doesn&apos;t work outside of Apache. update-db.pl indirectly depends on Apache::Constants. If anyone actually ports LJ, this should work properly.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;It still doesn&apos;t work (BML docs not handled, DocumentRoot not set, etc - IOW, the httpd.conf injection doesn&apos;t seem to work), though at least Apache starts now. I wonder how much work porting it to mod_perl 2 (rather than using Apache2::compat) would be?&lt;/ul&gt;</description>
  <comments>http://community.livejournal.com/lj_dev/707830.html</comments>
</item>
</channel>
</rss>