[Geoserver-devel] Layer and store names

Hi all,

I am investigating an issue reported by a client involving the GeoServer REST API. Before I dig too deeply into the code I wanted to get some input on the expected behavior.

The problem that we are seeing is that for some (but not all) data types the REST API won’t find layers if they have spaces in their names, but it advertises them anyway. I haven’t done a full survey but GeoTiff stores with spaces are ok while cascaded WMS stores are not.

It seems to me that a reasonable fix might be to change the REST API so that it can match such layers (fix the escaping or something like that.) But maybe there should not be stores and layers with spaces in their names in the first place and what we have here is actually a validation problem.

Any thoughts are appreciated.

David Winslow
Software Engineer | Boundless
dwinslow@anonymised.com9…
917-388-9085
@boundlessgeo

I am kind of thinking since there are so many issues regarding layer names with spaces (like they can’t used with wfs, etc…) that we simply disallow it across the board for consistency. I believe at the moment the UI validates layer names with such a constraint but nothing else does. I would advocate that we move the check into the Catalog itself with the rest of the validation checks and call it a day.

$0.02

···

On Thu, Oct 16, 2014 at 1:16 PM, David Winslow <dwinslow@anonymised.com> wrote:

Hi all,

I am investigating an issue reported by a client involving the GeoServer REST API. Before I dig too deeply into the code I wanted to get some input on the expected behavior.

The problem that we are seeing is that for some (but not all) data types the REST API won’t find layers if they have spaces in their names, but it advertises them anyway. I haven’t done a full survey but GeoTiff stores with spaces are ok while cascaded WMS stores are not.

It seems to me that a reasonable fix might be to change the REST API so that it can match such layers (fix the escaping or something like that.) But maybe there should not be stores and layers with spaces in their names in the first place and what we have here is actually a validation problem.

Any thoughts are appreciated.

David Winslow
Software Engineer | Boundless
dwinslow@anonymised.com
917-388-9085
@boundlessgeo


Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://p.sf.net/sfu/Zoho


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Justin Deoliveira
VP Engineering | Boundless
jdeolive@anonymised.com
@boundlessgeo

We ran across layer name issues as well when building our layer generation/verification process. We added an XML verification process to our layer validation step forcing the layer names to match appropriate XML strictures. This allows us to present the layers in all the usual ways as well as work with the WFS-T methods.

Chris Snider

Senior Software Engineer

Intelligent Software Solutions, Inc.

Description: Description: Description: cid:image001.png@...3926...

(attachments)

image001.png

···

I am kind of thinking since there are so many issues regarding layer names with spaces (like they can’t used with wfs, etc…) that we simply disallow it across the board for consistency. I believe at the moment the UI validates layer names with such a constraint but nothing else does. I would advocate that we move the check into the Catalog itself with the rest of the validation checks and call it a day.

$0.02

On Thu, Oct 16, 2014 at 1:16 PM, David Winslow <dwinslow@…3839…> wrote:

Hi all,

I am investigating an issue reported by a client involving the GeoServer REST API. Before I dig too deeply into the code I wanted to get some input on the expected behavior.

The problem that we are seeing is that for some (but not all) data types the REST API won’t find layers if they have spaces in their names, but it advertises them anyway. I haven’t done a full survey but GeoTiff stores with spaces are ok while cascaded WMS stores are not.

It seems to me that a reasonable fix might be to change the REST API so that it can match such layers (fix the escaping or something like that.) But maybe there should not be stores and layers with spaces in their names in the first place and what we have here is actually a validation problem.

Any thoughts are appreciated.

David Winslow

Software Engineer | Boundless
dwinslow@…3839…
917-388-9085
@boundlessgeo


Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://p.sf.net/sfu/Zoho


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Justin Deoliveira
VP Engineering | Boundless
jdeolive@…3839…
@boundlessgeo

+1 for disallowing layer names with spaces and other characters which are not valid for WFS and WCS.

I noticed that WCS does not accept namespaces in coverage identifiers nowadays. Geoserver seems to change colons automatically to 2 undescores (nurc:mosaic ->nurc__mosaic) for WCS 2.0.1. That is probably best that we can do.

-Jukka Rahkonen-

···

Justin Deoliveira wrote:

I am kind of thinking since there are so many issues regarding layer names with spaces (like they can’t used with wfs, etc…) that we simply disallow it across the board for consistency. I believe at the moment the UI validates layer names with such a constraint but nothing else does. I would advocate that we move the check into the Catalog itself with the rest of the validation checks and call it a day.

$0.02

On Thu, Oct 16, 2014 at 1:16 PM, David Winslow <dwinslow@anonymised.com39…> wrote:

Hi all,

I am investigating an issue reported by a client involving the GeoServer REST API. Before I dig too deeply into the code I wanted to get some input on the expected behavior.

The problem that we are seeing is that for some (but not all) data types the REST API won’t find layers if they have spaces in their names, but it advertises them anyway. I haven’t done a full survey but GeoTiff stores with spaces are ok while cascaded WMS stores are not.

It seems to me that a reasonable fix might be to change the REST API so that it can match such layers (fix the escaping or something like that.) But maybe there should not be stores and layers with spaces in their names in the first place and what we have here is actually a validation problem.

Any thoughts are appreciated.

David Winslow
Software Engineer | Boundless
dwinslow@anonymised.com
917-388-9085
@boundlessgeo


Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://p.sf.net/sfu/Zoho


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Justin Deoliveira
VP Engineering | Boundless
jdeolive@anonymised.com
@boundlessgeo

On Thu, Oct 16, 2014 at 9:25 PM, Justin Deoliveira <
jdeolive@anonymised.com> wrote:

I am kind of thinking since there are so many issues regarding layer names
with spaces (like they can't used with wfs, etc...) that we simply disallow
it across the board for consistency. I believe at the moment the UI
validates layer names with such a constraint but nothing else does. I would
advocate that we move the check into the Catalog itself with the rest of
the validation checks and call it a day.

Agreed

Cheers
Andrea

--

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

*AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*

Le informazioni contenute in questo messaggio di posta elettronica e/o
nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
loro utilizzo è consentito esclusivamente al destinatario del messaggio,
per le finalità indicate nel messaggio stesso. Qualora riceviate questo
messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
darcene notizia via e-mail e di procedere alla distruzione del messaggio
stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
utilizzarlo per finalità diverse, costituisce comportamento contrario ai
principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for
the attention and use of the named addressee(s) and may be confidential or
proprietary in nature or covered by the provisions of privacy act
(Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
Code).Any use not in accord with its purpose, any disclosure, reproduction,
copying, distribution, or either dissemination, either whole or partial, is
strictly forbidden except previous formal approval of the named
addressee(s). If you are not the intended recipient, please contact
immediately the sender by telephone, fax or e-mail and delete the
information in this message that has been received in error. The sender
does not give any warranty or accept liability as the content, accuracy or
completeness of sent messages and accepts no responsibility for changes
made after they were sent or for other risks which arise as a result of
e-mail transmission, viruses, etc.

-------------------------------------------------------

OK, sounds like there is a consensus on this issue. I’ll look into adding the validation to the catalog. For cases where existing configuration already violates this new constraint I suppose we need a migration strategy. Probably the simplest thing would be to just disable layers where the names are illegal, administrators would need to meet the new constraints before they could save the form to re-enable them. If we do some automated renaming there could be issues if some administrator has already added workspaces whose names only vary by xml-unsafe characters.

I don’t think that I have implemented any catalog-level validation before. Is the NamespaceWorkspaceConsistencyListener a good example to follow? I expect that throwing an exception in handleModified will prevent the save from going through.

···

On Fri, Oct 17, 2014 at 5:24 AM, Andrea Aime <andrea.aime@anonymised.com> wrote:

David Winslow
Software Engineer | Boundless
dwinslow@anonymised.com
917-388-9085
@boundlessgeo

On Thu, Oct 16, 2014 at 9:25 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

I am kind of thinking since there are so many issues regarding layer names with spaces (like they can’t used with wfs, etc…) that we simply disallow it across the board for consistency. I believe at the moment the UI validates layer names with such a constraint but nothing else does. I would advocate that we move the check into the Catalog itself with the rest of the validation checks and call it a day.

Agreed

Cheers
Andrea

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy’s New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.


There is actually a dedicated interface you can implement named CatalogValidator, actually you’re the author of it :slight_smile: The way the extension point is processed is a bit different though, it captures errors in a list rather than throw them back directly. So client code actually has to call the validate method first before calling add or save. It looks like some code does that in restconfig and in the ui, but not all. So one approach would be to add the validator, and also ensure that the appropriate validate methods are being called through the REST and Web interfaces.

A more core change would be to change CatalogImpl itself and have any validation methods be thrown back directly. To be honest I can’t remember why this wasn’t done in the first place.

One potential upside of the first approach is that it handles the migration seamlessly as the layer with the space in it’s name will be added to the catalog on startup without issue, and users will only encounter an issue (other than the issues with spaces being there in the first place) when they try to update it.

···

On Fri, Oct 17, 2014 at 8:53 AM, David Winslow <dwinslow@anonymised.com> wrote:

OK, sounds like there is a consensus on this issue. I’ll look into adding the validation to the catalog. For cases where existing configuration already violates this new constraint I suppose we need a migration strategy. Probably the simplest thing would be to just disable layers where the names are illegal, administrators would need to meet the new constraints before they could save the form to re-enable them. If we do some automated renaming there could be issues if some administrator has already added workspaces whose names only vary by xml-unsafe characters.

I don’t think that I have implemented any catalog-level validation before. Is the NamespaceWorkspaceConsistencyListener a good example to follow? I expect that throwing an exception in handleModified will prevent the save from going through.

Justin Deoliveira
VP Engineering | Boundless
jdeolive@anonymised.com
@boundlessgeo

On Fri, Oct 17, 2014 at 5:24 AM, Andrea Aime <andrea.aime@anonymised.com> wrote:

David Winslow
Software Engineer | Boundless
dwinslow@anonymised.com9…
917-388-9085
@boundlessgeo

On Thu, Oct 16, 2014 at 9:25 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

I am kind of thinking since there are so many issues regarding layer names with spaces (like they can’t used with wfs, etc…) that we simply disallow it across the board for consistency. I believe at the moment the UI validates layer names with such a constraint but nothing else does. I would advocate that we move the check into the Catalog itself with the rest of the validation checks and call it a day.

Agreed

Cheers
Andrea

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy’s New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.


Ok, thanks for everyone’s feedback. How do folks feel about backporting to 2.6.x?

···

On Fri, Oct 17, 2014 at 11:13 AM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

There is actually a dedicated interface you can implement named CatalogValidator, actually you’re the author of it :slight_smile: The way the extension point is processed is a bit different though, it captures errors in a list rather than throw them back directly. So client code actually has to call the validate method first before calling add or save. It looks like some code does that in restconfig and in the ui, but not all. So one approach would be to add the validator, and also ensure that the appropriate validate methods are being called through the REST and Web interfaces.

A more core change would be to change CatalogImpl itself and have any validation methods be thrown back directly. To be honest I can’t remember why this wasn’t done in the first place.

One potential upside of the first approach is that it handles the migration seamlessly as the layer with the space in it’s name will be added to the catalog on startup without issue, and users will only encounter an issue (other than the issues with spaces being there in the first place) when they try to update it.

David Winslow
Software Engineer | Boundless
dwinslow@anonymised.com
917-388-9085
@boundlessgeo

On Fri, Oct 17, 2014 at 8:53 AM, David Winslow <dwinslow@anonymised.com39…> wrote:

OK, sounds like there is a consensus on this issue. I’ll look into adding the validation to the catalog. For cases where existing configuration already violates this new constraint I suppose we need a migration strategy. Probably the simplest thing would be to just disable layers where the names are illegal, administrators would need to meet the new constraints before they could save the form to re-enable them. If we do some automated renaming there could be issues if some administrator has already added workspaces whose names only vary by xml-unsafe characters.

I don’t think that I have implemented any catalog-level validation before. Is the NamespaceWorkspaceConsistencyListener a good example to follow? I expect that throwing an exception in handleModified will prevent the save from going through.

Justin Deoliveira
VP Engineering | Boundless
jdeolive@anonymised.com
@boundlessgeo

On Fri, Oct 17, 2014 at 5:24 AM, Andrea Aime <andrea.aime@anonymised.com> wrote:

David Winslow
Software Engineer | Boundless
dwinslow@anonymised.com
917-388-9085
@boundlessgeo

On Thu, Oct 16, 2014 at 9:25 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

I am kind of thinking since there are so many issues regarding layer names with spaces (like they can’t used with wfs, etc…) that we simply disallow it across the board for consistency. I believe at the moment the UI validates layer names with such a constraint but nothing else does. I would advocate that we move the check into the Catalog itself with the rest of the validation checks and call it a day.

Agreed

Cheers
Andrea

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy’s New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.


Sounds fine, safety is good.

···

On Fri, Oct 17, 2014 at 11:13 AM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

There is actually a dedicated interface you can implement named CatalogValidator, actually you’re the author of it :slight_smile: The way the extension point is processed is a bit different though, it captures errors in a list rather than throw them back directly. So client code actually has to call the validate method first before calling add or save. It looks like some code does that in restconfig and in the ui, but not all. So one approach would be to add the validator, and also ensure that the appropriate validate methods are being called through the REST and Web interfaces.

A more core change would be to change CatalogImpl itself and have any validation methods be thrown back directly. To be honest I can’t remember why this wasn’t done in the first place.

One potential upside of the first approach is that it handles the migration seamlessly as the layer with the space in it’s name will be added to the catalog on startup without issue, and users will only encounter an issue (other than the issues with spaces being there in the first place) when they try to update it.

David Winslow
Software Engineer | Boundless
dwinslow@anonymised.com
917-388-9085
@boundlessgeo

On Fri, Oct 17, 2014 at 8:53 AM, David Winslow <dwinslow@anonymised.com> wrote:

OK, sounds like there is a consensus on this issue. I’ll look into adding the validation to the catalog. For cases where existing configuration already violates this new constraint I suppose we need a migration strategy. Probably the simplest thing would be to just disable layers where the names are illegal, administrators would need to meet the new constraints before they could save the form to re-enable them. If we do some automated renaming there could be issues if some administrator has already added workspaces whose names only vary by xml-unsafe characters.

I don’t think that I have implemented any catalog-level validation before. Is the NamespaceWorkspaceConsistencyListener a good example to follow? I expect that throwing an exception in handleModified will prevent the save from going through.

Justin Deoliveira
VP Engineering | Boundless
jdeolive@anonymised.com
@boundlessgeo

On Fri, Oct 17, 2014 at 5:24 AM, Andrea Aime <andrea.aime@anonymised.com> wrote:

David Winslow
Software Engineer | Boundless
dwinslow@anonymised.com
917-388-9085
@boundlessgeo

On Thu, Oct 16, 2014 at 9:25 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

I am kind of thinking since there are so many issues regarding layer names with spaces (like they can’t used with wfs, etc…) that we simply disallow it across the board for consistency. I believe at the moment the UI validates layer names with such a constraint but nothing else does. I would advocate that we move the check into the Catalog itself with the rest of the validation checks and call it a day.

Agreed

Cheers
Andrea

==

GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

==

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy’s New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.