Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 0ba913d3228ee849ffaf39ca8a779ea5 > files > 19

cpm-0.23-0.5.beta.fc15.i686.rpm

#!/usr/bin/perl -w

# ##############################################################################
# this script gets a tab separated list from password safe text file and
# creates the XML body structure for CPM
# ##############################################################################
# Copyright (C) 2005, 2006 Harry Brueckner
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Contact: Harry Brueckner <harry_b@mm.st>
#          Muenchener Strasse 12a
#          85253 Kleinberghofen
#          Germany
# ##############################################################################

use strict;
use warnings;


# ##############################################################################
sub main
  {
    my ($fline, $line, %xml);

    $fline = '';
    while (defined($line = <STDIN>))
      {
        if ($line =~ m/\r\r\n$/)
          {   # the line is continued
            if ($fline eq '')
              { $fline .= $line; }
            else
              { $fline .= " $line"; }
          }
        else
          {   # we found a new line
            if ($fline eq '')
              { $fline .= $line; }
            else
              { $fline .= " $line"; }

            processLine($fline);
            $fline = '';
          }
      }

    processLine($fline);
  }


# ##############################################################################
sub processLine
  {
    my ($line) = @_;
    my (%data, @tmp);

    $line =~ s/[\r\n]//g;
    if ($line eq '')
      { return; }

    # we remove the extra space right before the closing quote
    $line =~ s/ "$/"/;
    @tmp = split(/\t/, $line);

    if ($tmp[0] =~ m/^(.+)\.([^\.]+)$/)
      {
        $data{'host'}    = $1;
        $data{'service'} = $2;
      }
    else
      {
        $data{'host'}    = $tmp[0];
        $data{'service'} = 'default';
      }

    $data{'user'}     = $tmp[1];
    $data{'ucomment'} = $tmp[3];
    $data{'password'} = $tmp[2];

    $data{'ucomment'} =~ s/^"(.*)"$/$1/;

    print sprintf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s%s\n",
        $data{'host'},
        "",
        $data{'service'},
        "",
        $data{'user'},
        $data{'ucomment'},
        $data{'password'},
        "",
        ";");
  }


# ##############################################################################

main();


# ##############################################################################