lazSVN , Subversion bindings para freepascal/lazarus

La idea inicial de todo esto era proveer a Lazarus de un paquete que le hiciera capaz de interactuar con un servidor Subversion en relacion al proyecto con en el que se esta trabajando. Esto no es nada nuevo ya que IDE’s como SharpDevelop o tantos otros que ahora mismo no me vienen a la cabeza ya disponen de esta feature ;P

Antes de empezar a hacer nada comprobe que no hubiera nada hecho ( para no reinventar la rueda ) y con lo unico que me encontre fue con delphisvn, un proyecto con la misma funcionalidad que se requiere pero para Delphi.

Por el camino descubri la existencia de un componente svn hecho por Vincent que lo que hace es usar el output del comando svn, una muy buena manera de no complicarse demasiado con los bindings. El mismo me comento que Ido estaba tambien con los bindings aunque tampoco lo tiene terminado.

Lo “unico” que he hecho con delphisvn ha sido importar el paquete, quitar la dependencia a los bindings apr que vienen y usar los bindings de freepascal e ir quitando la dependencia a Windows. Publico el proyecto sin terminar por que se me avecinan unos meses intensos y me parece una idea interesante como para caer en saco roto.

Ahora mismo la intencion es mantener los bindings de Subversion y hacer un miniBrowser, mas que nada para testear. Si alguien se anima se puede bajar el codigo de la siguiente manera o con vuestro cliente de SVN favorito ;)

svn co svn://alasombra.net/lazSVN lazSVN

Si necesitais algo en referencia al proyecto o a cualquier otra cosa hacerme llegar unas lineas a mi correo en gmail.com

Lazarus 0.9.26 en la calle!

Vincents comentaba hace un par de semanas que se estaba preparando el lanzamiento y ahora ya es oficial la nueva version estable de lazarus!

Se puede leer las notas de la version en el wiki y os los podeis descargar del sitio de siempre

Hay que comentar que aun no se ha hecho el anuncio oficial en la lista de correo pero es que no me podia aguantar mas! ;)

Ya tenemos el anuncio de Mattias Gaertner a la lista de correo, a continuacion un pequeño extracto de los cambios mas importantes :

- The LCL now uses Unicode strings UTF-8 encoded on all platforms.
There are docs, tools and functions to help converting old code.
- The LCL internal graphic system was rewritten for more consistency,
more flexibility, better Delphi compatibility, icon support, native
image lists.
- Lazarus now runs native under Mac OS X using the ‘carbon’ widgetset.
- The IDE designer now allows to connect form components, like
databases on TDataModule.

powered_by

Comprobar el estado de un servicio con Freepascal

La necesidad de esta implementacion ha sido por que no existen plugins para la monitorizacion de subversion y bacula en nagios ( o almenos no he encontrado ninguno ), luego he visto que existe check_tcp que de momento ya me vale :)

Lo que hace el programa es intentar conectar a un puerto de una ip y si lo consigue imaginamos que el servicio esta funcionando.

program check_port;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, Sockets, SysUtils

  { you can add units after this };
Var
  Addr : TInetSockAddr;
  S : Longint;
  Sin,Sout : Text;
  tmp: String;

begin
  if ((ParamStr(1)='') or (ParamStr(2)='')) then
    begin
      Writeln('ERROR - Numero de parametros incorrectos');
      Writeln('Debes escribir ip puerto');
      exit;
    end;

  S:=fpSocket(AF_INET,SOCK_STREAM,0);
  if SocketError<>0 then
    writeln('Socket Error ' + IntToStr(SocketError));

  Addr.sin_family:=AF_INET;
  Addr.sin_addr := StrToNetAddr(ParamStr(1));
  Addr.sin_port:=htons(StrToInt(ParamStr(2)));

  If Not Connect (S,ADDR,SIN,SOUT) Then
    tmp := 'Error '
  else
    tmp := 'Exito ';

  WriteLn(tmp + 'en la conexion con ' + ParamStr(1) + ' al puerto ' + ParamStr(2));

end.

La funcion Connect esta deprecated pero como el nagios ya trae por defecto el plugin check_tcp tampoco era plan de perder invertir mas tiempo