CONNECTOR AMB ANTIVIRUS









Introducció

Propòsit

El propòsit del connector és proporcionar una interfície per poder utilitzar el servei d'Antivirus Central del CTTI.

Context i Escenaris d'Ús

El connector d'Antivirus es troba dins els connectors de serveis funcionals.

Versions i Dependències

En el present apartat es mostren quines són les versions i dependències necessàries per fer ús del Connector.

Les dependències descrites a la següent url són requerides per tal de fer funcionar el servei:
Dependències del Connector Antivirus

A qui va dirigit

Aquest document va dirigit als següents perfils:

  1. Programador. Per conèixer l'ús del connector.
  2. Arquitecte. Per conèixer quins són els components i la configuració del connector.

Documents i Fonts de Referència

[1] Guia d'ús de l'API del Connector Antivirus.
[2] Documentació funcional i tècnica del Connector Antivirus.

Descripció Detallada

Arquitectura i Components

Interfícies i Components Genèrics

Es pot trobar tota la documentació JavaDoc i el codi font referent aquests components a les següents url's:

JavaDoc: http://canigo.ctti.gencat.net/confluence/canigodocs/site/canigo2_3_7/canigo-connectors-root/canigo-connectors-antivirus/apidocs/index.html
Codi Font:  http://canigo.ctti.gencat.net/confluence/canigodocs/site/canigo2_3_7/canigo-connectors-root/canigo-connectors-antivirus/xref/index.html

Requeriments

El connector Antivirus és compatible amb les versions 1.4 o superior de Java. Per versions inferiors no es garantitza el seu correcte funcionament. Si fos necessària la utilització d'una versió inferior a 1.4  s'hauria de posar-se en contacte amb el
Centre de Suport de Canigó, oficina-tecnica.canigo.ctti@gencat.net

Per tal de que el connector Antivirus funcioni correctament sobre l'aplicació que l'utilitzi, és necessari que tingui definides les següents Keys en l'arxiu applicationResources.properties

antivirus.message1=S'han trobat
antivirus.message2=amenaces

Instal.lació i Configuració

Instal.lació

La instal.lació del connector requereix de la utilització de la llibreria 'canigo-connectors-antivirus' i les dependències indicades a l'apartat 'Introducció-Versions i Dependències'.

Per poder disposar del Connector Antivirus en una aplicació Canigó s'ha de modificar el pom.xml de l'aplicació per incloure la llibreria del Connector com una dependència.

<dependency>
        <groupId>canigo.connectors</groupId>
        <artifactId>canigo-connectors-antivirus</artifactId>
	<version>2.3.7</version>
</dependency>





Configuració


Per poder configurar el connector Antivirus és necessari incloure el següent bean  en l'arxiu de configuració canigo-services.xml<import resource="canigo-connectors.xml"/>
Posteriorment es crearà aquest arxiu en

Classpath: src/main/resources/spring/canigo-connectors.xml

En aquest arxiu s'haurà de declarar el bean següent:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- Altres beans que hi pugui haber -->
    <bean id="antivirusConnector"  class="net.gencat.connectors.antivirus.impl.AntivirusConnectorImpl">
        <property name="remote" value="true" />
    	<property name="serverIP" value="10.30.26.74" />
        <property name="serverPort" value="1344" />
        <property name="numDayDBCaduc" value="15" />
   </bean>
</beans>





Les dades representades en aquest bean son:
Remote: Indica si l'arxiu es troba en remot o en local.
ServerIP: Direcció IP del servidor Engine Scan del CTTI, responsable dels escaneigs.
ServerPort: Port pel qual es comunica l'aplicació amb el servidor Antivirus Central.
numDayDBCaduc: Número de dies a partir del qual es considera que la definició de la base de dades de l'antivirus és obsoleta. Si es retornés que la base de dades de la definició de virus es troba obsoleta el connector retornarà un estat de Warning (veure detall).
Amb aquests pasos el connector romandrà configurat.





Utilització del Connector


El connector Antivirus disposa de dos modes de funcionament principals diferents en funció de on es trobi el document a escanejar.

  • El mode remot.
  • El mode local.

L'antivirus te restriccions en la mida màxima del fitxer a escanejar i el nombre de nivells d'anidament dintre d'un fitxer zip:

- Mida màxima (20MB)

- Nombre màxim de nivells d'anidament (10nivells)

Mode Local


Amb aquest mètode d'escaneig es pretén escanejar un arxiu que es trobi en la màquina local de l'usuari que esta utilitzant una aplicació Canigó que disposa d'aquest Connector.

En la configuració del connector aquest mode ve representat per la propietat:

<property name="remote" value="false" />



L'arxiu seleccionat es pujarà de forma automàtica al servidor d'aplicacions mitjançant el servei de upload de Canigó i posteriorment s'enviarà al Servidor Antivirus Central.Aquest últim retornarà la resposta que serà interpretada pel connector i facilitada a l'aplicació.


Mode Remot


Aquest mode està pensat per poder escanejar arxius que ja es trobin pujats en el servidor Antivirus Central. Això implica que el path que es passarà com a paràmetre a la API es el path de l'arxiu a escanejar dintre del Servidor Antivirus Central.

En la configuració del connector aquest mode ve representat per la propietat:

<property name="remote" value="true" />

Aquest mode de funcionament te com a premissa que l'arxiu a escanejar ja es trobi pujat al servidor Central Antivirus. Els procediments per poder pujar un arxiu a aquest servidor no són de l'abast d'aquest document.


Exemple d'utilització

A continuació es mostra la descripció de l'ús pràctic del Connector Antivirus.

1.- Reproduir els passos del punt 2.1.4 Configuració.

2.- Creació de la JSP amb un TAG <fwk:file> per poder pujar l'arxiu:


<fwk:file styleId="Arxiu" property="arxiu"></fwk:file>





3.- Definir el TAG file en canigo-services-web.xml.
<bean id="fileFieldTag"	class="net.gencat.ctti.canigo.services.web.struts.
taglib.forms.fields.FileFieldTag">
      <property name="layout" value="false"/>
      <property name="i18nService" ref="i18nService"/>
      <property name="validationService" ref="webValidationService"/>
</bean>





4. Definir el Bean associat al TAG file en el seu arxiu de configuració pertinent (action-servlet-xxx.xml).
<bean parent="fileFieldTag">
      <property name="styleId" value="Arxiu"></property>
      <property name="layout" value="false"></property>
      <property name="mode" value = "E,E,E"></property>
</bean>





5.Definir el servei al l'arxiu de configuració del servlet (action-servlet-xxxx.xml).
<property name="fileUpload" ref="fileUploadService" />





6. Al utilitzar el TAG <fwk:file> s'està utilitzant de forma implícita el servei de upload de fitxers del Framework. Per tant farà falta configurar-lo.
                        6.1.Modificar el pom.xml de l'aplicació per incloure les dependències les llibreries dels serveis


<dependency>
	<groupId>canigo</groupId>
        <artifactId>canigo-services-fileupload</artifactId>
        <version>2.3.7</version>
</dependency>
<dependency>
        <groupId>canigo</groupId>
        <artifactId>canigo-services-file</artifactId>
        <version>2.3.7</version>
</dependency>






            6.2. Modificar el canigo-services.xml per incloure els serveis nous.
           
<import resource="canigo-services-fileupload.xml"/>
<import resource="canigo-services-file.xml"/>





            6.3.Afegim els arxius de configuració dels serveis nous.
Classpath:/src/main/resources/file
	fileService.properties
	fileService.properties.desenvolupament
	fileUploadService.properties
	fileUploadService.properties.desenvolupament







Contingut exemple de fileService.properties
	fileService.tempDir=d:







Contingut exemple de fileUploadService.properties
	fileUploadService.maxAttachmentSize=2048
        uploadResolver.maxUploadSize=1000000
        uploadResolver.maxInMemorySize=10000000
        uploadResolver.defaultEncoding=ISO-8859-1








Per més informació sobre el servei de upload de Canigó veure la informació de referència en el portal.



7. Finalment modificar la classe java de l'action per incloure el següent codi:
private AntivirusConnector antivirus;
private FileUploadService fileUpload;
...
String[] UPLOADED_FILES = new String[] { "arxiu" };
UploadedFiles uploadedFiles = this.fileUpload.
getUploadedFiles(request, UPLOADED_FILES);
UploadedFile fitxerCarregat = uploadedFiles.getFile("arxiu");

ResultatEscaneig res = antivirus.scan(fitxerCarregat.getBytes());







8. Per poder recuperar la informació d'escaneig que el connector retorna s'haurà de consultar de l'objecte de retorn ResultatEscaneig. En aquest cas:

res.getEstat() <- Retorna l'estat general del procés d'escaneig (OK = 0, KO = -1, WARNING = 1).
res.getMissatge() <- Missatge que acompanya l'estat de finalització de l'escaneig.
res.getArrayVirus() <- Array d'objectes tipus InfectionInfo amb la informació de les amenaces trobades si fos el cas.





Integració amb Altres Serveis

Integració amb el Servei de Internacionalització

En els fitxers de configuració es defineixen claus que permeten especificar quins missatges retornar en cas errors. Per a poder traduir aquestes claus és necessari especificar que el connector utilitzarà el Servei d'Internacionalització (veure Configuració).