/*
|
|
* Summary: interface for the libxslt security framework
|
|
* Description: the libxslt security framework allow to restrict
|
|
* the access to new resources (file or URL) from
|
|
* the stylesheet at runtime.
|
|
*
|
|
* Copy: See Copyright for the status of this software.
|
|
*
|
|
* Author: Daniel Veillard
|
|
*/
|
|
|
|
#ifndef __XML_XSLT_SECURITY_H__
|
|
#define __XML_XSLT_SECURITY_H__
|
|
|
|
#include <libxml/tree.h>
|
|
#include "xsltexports.h"
|
|
#include "xsltInternals.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* xsltSecurityPref:
|
|
*
|
|
* structure to indicate the preferences for security in the XSLT
|
|
* transformation.
|
|
*/
|
|
typedef struct _xsltSecurityPrefs xsltSecurityPrefs;
|
|
typedef xsltSecurityPrefs *xsltSecurityPrefsPtr;
|
|
|
|
/**
|
|
* xsltSecurityOption:
|
|
*
|
|
* the set of option that can be configured
|
|
*/
|
|
typedef enum {
|
|
XSLT_SECPREF_READ_FILE = 1,
|
|
XSLT_SECPREF_WRITE_FILE,
|
|
XSLT_SECPREF_CREATE_DIRECTORY,
|
|
XSLT_SECPREF_READ_NETWORK,
|
|
XSLT_SECPREF_WRITE_NETWORK
|
|
} xsltSecurityOption;
|
|
|
|
/**
|
|
* xsltSecurityCheck:
|
|
*
|
|
* User provided function to check the value of a string like a file
|
|
* path or an URL ...
|
|
*/
|
|
typedef int (*xsltSecurityCheck) (xsltSecurityPrefsPtr sec,
|
|
xsltTransformContextPtr ctxt,
|
|
const char *value);
|
|
|
|
/*
|
|
* Module interfaces
|
|
*/
|
|
XSLTPUBFUN xsltSecurityPrefsPtr XSLTCALL
|
|
xsltNewSecurityPrefs (void);
|
|
XSLTPUBFUN void XSLTCALL
|
|
xsltFreeSecurityPrefs (xsltSecurityPrefsPtr sec);
|
|
XSLTPUBFUN int XSLTCALL
|
|
xsltSetSecurityPrefs (xsltSecurityPrefsPtr sec,
|
|
xsltSecurityOption option,
|
|
xsltSecurityCheck func);
|
|
XSLTPUBFUN xsltSecurityCheck XSLTCALL
|
|
xsltGetSecurityPrefs (xsltSecurityPrefsPtr sec,
|
|
xsltSecurityOption option);
|
|
|
|
XSLTPUBFUN void XSLTCALL
|
|
xsltSetDefaultSecurityPrefs (xsltSecurityPrefsPtr sec);
|
|
XSLTPUBFUN xsltSecurityPrefsPtr XSLTCALL
|
|
xsltGetDefaultSecurityPrefs (void);
|
|
|
|
XSLTPUBFUN int XSLTCALL
|
|
xsltSetCtxtSecurityPrefs (xsltSecurityPrefsPtr sec,
|
|
xsltTransformContextPtr ctxt);
|
|
|
|
XSLTPUBFUN int XSLTCALL
|
|
xsltSecurityAllow (xsltSecurityPrefsPtr sec,
|
|
xsltTransformContextPtr ctxt,
|
|
const char *value);
|
|
XSLTPUBFUN int XSLTCALL
|
|
xsltSecurityForbid (xsltSecurityPrefsPtr sec,
|
|
xsltTransformContextPtr ctxt,
|
|
const char *value);
|
|
/*
|
|
* internal interfaces
|
|
*/
|
|
XSLTPUBFUN int XSLTCALL
|
|
xsltCheckWrite (xsltSecurityPrefsPtr sec,
|
|
xsltTransformContextPtr ctxt,
|
|
const xmlChar *URL);
|
|
XSLTPUBFUN int XSLTCALL
|
|
xsltCheckRead (xsltSecurityPrefsPtr sec,
|
|
xsltTransformContextPtr ctxt,
|
|
const xmlChar *URL);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __XML_XSLT_SECURITY_H__ */
|
|
|