NetSago
Enter
Log In

How to join?
Menu
Home
News
Notes
 Articles
Tags
Search
About Project
Links
Ours
RSS News RSS
RSS Notes RSS
netsago NetSago
Topically
Authorisation system on environment variables. by n0xi0uzz

Phrack all issues downloader by n0xi0uzz

Artilces — Post to LiveJournal with Perl
ArticlesProgramming

Post to LiveJournal with Perl
n0xi0uzz
12 october 2007 00:09



Tags: perl, livejournal, http

Print (opens in new window)


In this tutorial I'll show you how to post new entry to LiveJournal with perl.

It's quite simple: we should open a socket and create HTTP request to send it to a LiveJournal server. First of all, we'll get current date and time:
($sec, $Gmin, $Ghour, $mday, $Gmon, 
$Gyear, $wday, $yday, $isdst) = localtime;
$Gyear += 1900;
$Gmon += 1;

Then define all variables:
use IO::Socket qw(:DEFAULT :crlf);
use CGI;
$c = new CGI;
$year = $c->param("year");
$mon = $c->param("mon");
$day = $c->param("day");
$subject = $c->param("subject");
$hour = $c->param("hour");
$min = $c->param("min");
$event = $c->param("event");
$act = $c->param("act");

$post="mode=postevent&user=USER&auth_method=clear";
$post.="&auth_response=&lineendings=pc";
$post.="&allowmask=&auth_challenge=&password=PASSWORD";
$post.="&year=$year&mon=$mon&day=$day&hour=$hour&min=$min";
$post.="&subject=$subject&event=$event";

Change USER and PASSWORD for your LiveJournal username and password. Variables $subject and $event must contain subject of an entry and entry text correspondingly. Read this for more information about arguments of such HTTP request.

Note that agrument password is plain-text, so, if you worry about security, use alternative argument hpassword to send yor password as an MD5 hex digest.

Also if text of your subject and entry not in UTF-8 codepage, you should encode it with something like this:
use Encode;
Encode::from_to($subject, "cp1251", "utf8");
Encode::from_to($event, "cp1251", "utf8");

and add to variable $post (wich contains HTTP request) argument &ver=1.

To post in community add to variable $post argument &usejournal=CMNT with the name of community you want to post instead CMNT.

And now we're ready to make the HTTP request to LiveJournal server. Take a look at the example:
if ($act eq "post")
{
  # open socket
  my $sock = IO::Socket::INET->new(
   PeerAddr => 'www.livejournal.com',
   PeerPort => '80',
   Proto => 'tcp'
  );

  # get the length of request
  $l = length($post);

  # print in socket request
  print $sock join("\r\n" =>
  "POST /interface/flat HTTP/1.0",
  "Host: www.livejournal.com",
  "Content-type: application/x-www-form-urlencoded",
  "Content-length: $l",
  "",
  $post
  );

  # get answer from server
  print <$sock>;
  close($sock);
}


That's all! To know more, read the Flat Client/Server Protocol Reference on livejournal.com.


Tags: perl, livejournal, http

Articles with same tags:

Authorisation system on environment variables.

Language
Russian/Русский
Search
Advanced Search
Report a Bug
If you find a bug on our site please report us.
Counters
0 / 0
Today we have not visits by robots.

Registered users: 0
Online: 0

Page build time: 0.020 sec
NetSago.v2.β © [2006;∞)  Neunica