Difference between revisions of "Events and Messages"

From ProVide DocWiki
Jump to: navigation, search
(Only allow login during office hours)
(Only allow upload of specific file types)
Line 158: Line 158:
  
 
==== Only allow upload of specific file types ====
 
==== Only allow upload of specific file types ====
 +
Event in ProVide:
 +
<pre>BeforeUpload</pre>
 +
 +
Script in ProVide:
 +
<pre>C:\Scripts\CheckFileType.cmd "%LOCAL_FILENAME%"</pre>
 +
 +
Error message in ProVide:
 +
<pre>Access denied</pre>
 +
 +
Contents of file "C:\Scripts\CheckFileType.cmd":
 +
<pre>@echo off
 +
 +
rem Extract file information and remove quotes
 +
set FILE=%1
 +
for /f "useback tokens=*" %%a in ('%FILE%') do set FILE=%%~a
 +
 +
rem Only allow uploading of certain file extensions
 +
if /I "%FILE:~-4%" == ".jpg" exit 0
 +
if /I "%FILE:~-4%" == ".gif" exit 0
 +
if /I "%FILE:~-4%" == ".tif" exit 0
 +
if /I "%FILE:~-4%" == ".pdf" exit 0
 +
if /I "%FILE:~-4%" == ".php" exit 0
 +
if /I "%FILE:~-4%" == ".css" exit 0
 +
 +
rem Nothing else is allowed
 +
exit 1</pre>
 +
 
==== Only allow SAP users to download SAP-documents ====
 
==== Only allow SAP users to download SAP-documents ====
 
==== Extreme login security using SMS audit ====
 
==== Extreme login security using SMS audit ====
 
==== Control file types with PHP ====
 
==== Control file types with PHP ====

Revision as of 13:25, 24 March 2014

Reactive

The Reactive features basically lets the server react to events after they happen by executing batch scripts or to send custom messages.

An example would be to automatically scan uploaded files for viruses. The ability to execute external batch scripts also makes it possible to launch custom programs, scripts or to perform specific actions based on actual events.

Examples

Send SMS when a specific FTP user logs in

Event in ProVide:

OnLoggedIn

Message in ProVide:

User logged in, proceed.%EXECUTE("C:\Scripts\NotifyOnLoggedIn.cmd" %USERNAME%)%

Contents of file "C:\Scripts\NotifyOnLoggedIn.cmd":

@echo off

rem Setup variables
set USER=<sms username>
set PASS=<sms password>
set TEXT=Login%%3A%1
set TO=555123456
set FROM=zFTPLogin
set PARAMS=acc=%USER%^^^&pass=%PASS%^^^&msg=%TEXT%^^^&to=%TO%^^^&from=%FROM%^^^&prio=3

rem Notify on certain users logging in
if /I "%1" == "Administrator" wget --delete-after http://smsgateway/send.php?%PARAMS% >NUL
if /I "%1" == "Backup" wget --delete-after http://smsgateway/send.php?%PARAMS% >NUL
if /I "%1" == "John" wget --delete-after http://smsgateway/send.php?%PARAMS% >NUL

Scan uploaded files for viruses with AVG

This example illustrates how to use AVG to scan uploaded files for viruses. The script requires AVG to be installed.

Event in ProVide:

OnUploadEnd

Message in ProVide:

Closing data connection.%EXECUTE("C:\Scripts\Scan.cmd" "%LOCAL_FILENAME%")%

Contents of file "C:\Scripts\Scan.cmd":

@echo off
"C:\Program\AVG\AVG8\AVGSCANX.EXE" /HEUR /ARC /CLEAN /SCAN=%1

Create thumbnails of uploaded images

Event in ProVide:

OnUploadEnd

Message in ProVide:

Closing data connection.%EXECUTE("C:\Scripts\CreateThumbnail.cmd" "%LOCAL_FILENAME%")%

Contents of file "C:\Scripts\CreateThumbnail.cmd":

@echo off

rem Extract file information and remove quotes
set FILE=%1
for /f "useback tokens=*" %%a in ('%FILE%') do set FILE=%%~a
set EXT=
if /I "%FILE:~-4%" == ".jpg" set EXT=.jpg
if /I "%FILE:~-4%" == ".gif" set EXT=.gif
if /I "%FILE:~-4%" == ".tif" set EXT=.tif

rem Only create thumbnails from selected formats
if (%EXT%) == () exit 0

rem We know all accepted formats have 3 character extensions
set THUMBFILE=%FILE:~0,-4%-thumbnail%EXT%

rem Use ImageMagick to create thumbnails
convert "%FILE%" -resize 100x100 -quality 90 "%THUMBFILE%" >NUL

Automatically backup a file before it is to be overwritten

Event in ProVide:

OnUploadStart

Message in ProVide:

File status okay; about to open data connection.%EXECUTE("C:\Scripts\Backup.cmd" "%LOCAL_FILENAME%")%

Contents of file "C:\Scripts\Backup.cmd":

@echo off

rem Extract file information and remove quotes
set FILE=%1
for /f "useback tokens=*" %%a in ('%FILE%') do set FILE=%%~a

rem Perform the backup
copy /v /y "%FILE%" "%FILE%.bak" >NUL

Send email on FTP upload to a specific folder

This example illustrates how to send a mail notification after a file has been uploaded to a specific folder. It also does a virus scan before sending the mail. It uses a separate script to generate the email data. This is done to get correct linefeeds in the email format. It also acts as a template for the email.

Event in ProVide:

OnUploadEnd

Message in ProVide:

Closing data connection.%EXECUTE("C:\Scripts\MailOnUploadEnd.cmd" "%LOCAL_FILENAME%" "%FTP_FILENAME%")%

Contents of file "C:\Scripts\MailOnUploadEnd.cmd":

@echo off
REM Filenames may need special character codes.
chcp 1252

REM Virus scan the file, only send mail if the file still exists after the scan.
"C:\Program Files\AVG\AVG2012\AVGSCANX.EXE" /HEUR /ARC /CLEAN /TRASH /SCAN=%1

IF EXIST "%1" (
	REM Only send mail for a specific folder.
	SET FOLDER_FILTER=\Share this\
	SET FOLDER_UPLOAD=%~p2

	IF "%FOLDER_FILTER%"=="%FOLDER_UPLOAD%" (
		C:\Scripts\MailTemplate.cmd %2 | C:\Scripts\msmtp\msmtp.exe mailinglist@example.net
	)
)

Contents of file "C:\Scripts\MailTemplate.cmd":

@echo off

setlocal enableDelayedExpansion
set NL=^

REM Two empty lines required for newlines to work
echo SUBJECT:New file uploaded %~nx1!NL!
echo And here's a link to it.!NL!http://www.test.com/%~nx1!NL!
EndLocal

Proactive

The Proactive features essentially lets the server react to events before they happen.

Following a request to e.g. login or upload a file the server can for instance verify login or upload operations against external databases or check whether the user is permitted to upload a file of that specific type. We can for instance enforce that a specific user only be able to upload .doc-files.

In combination with the Reactive module we can script more advanced business applications rules verifying a user login against a SAP database and subsequently when the user is allowed to login, run scripts that execute financial reporting in SAP, directly posted and available to the specific user on the fly (reports are then automatically removed after logout).

Examples

Only allow login during office hours

Event in ProVide:

BeforeConnect

Script in ProVide:

C:\Scripts\OfficeHours.cmd

Error message in ProVide:

You're not allowed to login outside office hours.

Contents of file "C:\Scripts\OfficeHours.cmd":

@echo off

rem Extract current hour
for /f "tokens=1-2 delims=: " %%a in ('time/t') do (
  set hour=%%a
  set minute=%%b
)

rem Deny access outside office hours
if /I %hour% LSS 8 exit 1
if /I %hour% GEQ 18 exit 1

Only allow upload of specific file types

Event in ProVide:

BeforeUpload

Script in ProVide:

C:\Scripts\CheckFileType.cmd "%LOCAL_FILENAME%"

Error message in ProVide:

Access denied

Contents of file "C:\Scripts\CheckFileType.cmd":

@echo off

rem Extract file information and remove quotes
set FILE=%1
for /f "useback tokens=*" %%a in ('%FILE%') do set FILE=%%~a

rem Only allow uploading of certain file extensions
if /I "%FILE:~-4%" == ".jpg" exit 0
if /I "%FILE:~-4%" == ".gif" exit 0
if /I "%FILE:~-4%" == ".tif" exit 0
if /I "%FILE:~-4%" == ".pdf" exit 0
if /I "%FILE:~-4%" == ".php" exit 0
if /I "%FILE:~-4%" == ".css" exit 0

rem Nothing else is allowed
exit 1

Only allow SAP users to download SAP-documents

Extreme login security using SMS audit

Control file types with PHP