Backend
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
PHP_ARG_ENABLE(mermsemr_api,
|
||||||
|
[Whether to enable the "mermsemr_api" extension],
|
||||||
|
[ --enable-mermsemr_api Enable "mermsemr_api" extension support])
|
||||||
|
|
||||||
|
if test $PHP_MERMSEMR_API != "no"; then
|
||||||
|
PHP_REQUIRE_CXX()
|
||||||
|
PHP_SUBST(MERMSEMR_API_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(stdc++, 1, MERMSEMR_API_SHARED_LIBADD)
|
||||||
|
PHP_ADD_INCLUDE(/usr/include/pgsql)
|
||||||
|
PHP_ADD_LIBRARY_WITH_PATH(pq, /usr/lib64, MERMSEMR_API_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(curl, 1, MERMSEMR_API_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(config++, 1, MERMSEMR_API_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(json-c, 1, MERMSEMR_API_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(ssl, 1, MERMSEMR_API_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(z, 1, MERMSEMR_API_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(pcrecpp, 1, MERMSEMR_API_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(gcc_s, 1, MERMSEMR_API_SHARED_LIBADD)
|
||||||
|
|
||||||
|
LIBCFG_DIR="`pwd`/libconfig-1.3.1"
|
||||||
|
|
||||||
|
PHP_ADD_LIBRARY_WITH_PATH(config++, "$LIBCFG_DIR/.libs/")
|
||||||
|
|
||||||
|
PHP_NEW_EXTENSION(
|
||||||
|
mermsemr_api,
|
||||||
|
core/*.cc shared_tool/*.cc,
|
||||||
|
$ext_shared,
|
||||||
|
,-I@ext_srcdir@/libconfig-1.3.1)
|
||||||
|
PHP_DEFINE([MERMSEMR_API_NS],[\"mermsemr_api\"],[])
|
||||||
|
PHP_DEFINE([MERMSEMR_CONFIG],[\"`pwd|sed s/src//`etc/\"],[])
|
||||||
|
PHP_DEFINE([MERMSEMR_LOG],[\"`pwd|sed s/src//`logs/mermsemr_api.log\"],[])
|
||||||
|
PHP_DEFINE([TMPL_PREFIX],[\"`pwd|sed s/src//`email/\"],[])
|
||||||
|
PHP_DEFINE([FILELOG_MAX_LEVEL],[9],[])
|
||||||
|
fi
|
||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
BUILD_DIR=`dirname $0`
|
||||||
|
# Get mermsemr_api root directory
|
||||||
|
cd ..
|
||||||
|
WORK_DIR=`pwd`
|
||||||
|
MAILSEND="$WORK_DIR/src/mailsend"
|
||||||
|
LIBCONFIG="$WORK_DIR/src/libconfig-1.3.1"
|
||||||
|
# Checking user
|
||||||
|
if [ "$USER" = "root" ]
|
||||||
|
then
|
||||||
|
echo "Configuring as root"
|
||||||
|
LIBCONFIG_PREFIX="/usr"
|
||||||
|
echo "Building $LIBCONFIG ..."
|
||||||
|
cd $LIBCONFIG
|
||||||
|
#echo `pwd` $LIBCONFIG_PREFIX
|
||||||
|
CFLAGS=-fPIC CXXFLAGS=-fPIC ./configure --prefix=$LIBCONFIG_PREFIX
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
fi
|
||||||
|
mkdir $WORK_DIR/logs
|
||||||
|
chmod a+w $WORK_DIR/logs
|
||||||
|
mkdir $WORK_DIR/src/modules
|
||||||
|
# Building mailsend
|
||||||
|
cd $MAILSEND
|
||||||
|
make
|
||||||
|
# Configure extension
|
||||||
|
cd $WORK_DIR/src/
|
||||||
|
|
||||||
|
# Patch files
|
||||||
|
LUSER=$(id -u -n)
|
||||||
|
UUSER=$(id -u -n | awk '{print toupper($0)}')
|
||||||
|
cat ../build/config.m4 | sed s/mermsemr_api/mermsemr_api_$LUSER/g | sed s/MERMSEMR_API/MERMSEMR_API_$UUSER/g > config.m4
|
||||||
|
cat ../build/php_mermsemr_api_ns.h | sed s/MERMSEMR_API/MERMSEMR_API_$UUSER/g | sed s/mermsemr_api/mermsemr_api_$LUSER/g > include/php_mermsemr_api_ns.h
|
||||||
|
cat ../build/php_mermsemr_api.h | sed s/mermsemr_api/mermsemr_api_$LUSER/g | sed s/MERMSEMR_API/MERMSEMR_API_$UUSER/g > include/php_mermsemr_api.h
|
||||||
|
cat ../build/mermsemr_api.cc | sed s/tmermsemrapit/mermsemr_api_$LUSER/g | sed s/MERMSEMR_API/MERMSEMR_API_$UUSER/g > core/mermsemr_api.cc
|
||||||
|
|
||||||
|
# Generate extension
|
||||||
|
phpize
|
||||||
|
./configure
|
||||||
|
# --enable-mermsemr_api_$LUSER
|
||||||
|
#_`id -u -n`
|
||||||
|
echo "done."
|
||||||
|
cd $BUILD_DIR
|
||||||
|
echo $BUILD_DIR
|
||||||
|
echo $WORK_DIR
|
||||||
|
echo $USER
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,304 @@
|
|||||||
|
#include "php_mermsemr_api.h"
|
||||||
|
#include "php_mermsemr_api_ns.h"
|
||||||
|
#include "mermsemr.h"
|
||||||
|
#include "cfg.h"
|
||||||
|
#include "clog.h"
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
#include "safestring.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
#include <ext/standard/info.h>
|
||||||
|
|
||||||
|
zend_object_handlers mermsemr_object_handlers;
|
||||||
|
|
||||||
|
typedef struct _mermsemr_object {
|
||||||
|
MermsEmr *mermsemr;
|
||||||
|
zend_object std;
|
||||||
|
} mermsemr_object;
|
||||||
|
|
||||||
|
static inline mermsemr_object *php_mermsemr_obj_from_obj(zend_object *obj) {
|
||||||
|
return (mermsemr_object*)((char*)(obj) - XtOffsetOf(mermsemr_object, std));
|
||||||
|
}
|
||||||
|
|
||||||
|
#define Z_TSTOBJ_P(zv) php_mermsemr_obj_from_obj(Z_OBJ_P((zv)))
|
||||||
|
|
||||||
|
zend_class_entry *mermsemr_ce;
|
||||||
|
|
||||||
|
#define SET_ENV( env ) \
|
||||||
|
if (NULL != (token = zend_hash_str_find(_SERVER, env, sizeof(env)-1))) {\
|
||||||
|
setenv( env, Z_STRVAL_P(token), 1 ); \
|
||||||
|
logfmt( logINFO, env " = %s", Z_STRVAL_P(token) ); \
|
||||||
|
} else {\
|
||||||
|
unsetenv( env );\
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
PHP_METHOD(MermsEmr, __construct)
|
||||||
|
{
|
||||||
|
HashTable *_SERVER;
|
||||||
|
zval *token;
|
||||||
|
zval *id = getThis();
|
||||||
|
mermsemr_object *intern;
|
||||||
|
|
||||||
|
intern = Z_TSTOBJ_P(id);
|
||||||
|
if(intern != NULL) {
|
||||||
|
intern->mermsemr = new MermsEmr();
|
||||||
|
// Load some _SERVER data into environment
|
||||||
|
zend_string *_server = zend_string_init("_SERVER", strlen("_SERVER"), 0);
|
||||||
|
zend_is_auto_global(_server);
|
||||||
|
if (Z_TYPE(PG(http_globals)[TRACK_VARS_SERVER]) == IS_UNDEF) {
|
||||||
|
logfmt( logINFO, "_SERVER not found" );
|
||||||
|
} else {
|
||||||
|
logfmt( logINFO, "_SERVER found" );
|
||||||
|
_SERVER = Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]);
|
||||||
|
SET_ENV( "REMOTE_ADDR" );
|
||||||
|
SET_ENV( "SERVER_NAME" );
|
||||||
|
SET_ENV( "HTTP_COOKIE" );
|
||||||
|
SET_ENV( "QUERY_STRING" );
|
||||||
|
SET_ENV( "HTTP_X_FORWARDED_FOR" );
|
||||||
|
}
|
||||||
|
zend_string_release(_server);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_METHOD(MermsEmr, mermsemr_api)
|
||||||
|
{
|
||||||
|
zval *param, *param_out;
|
||||||
|
zval *id = getThis();
|
||||||
|
mermsemr_object *intern;
|
||||||
|
CVars input, output;
|
||||||
|
|
||||||
|
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", ¶m, ¶m_out) == FAILURE) {
|
||||||
|
// Bad parameters
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
intern = Z_TSTOBJ_P(id);
|
||||||
|
if(intern != NULL) {
|
||||||
|
// Convert input
|
||||||
|
|
||||||
|
HashTable *hash;
|
||||||
|
zend_string *key, val;
|
||||||
|
ulong num_key;
|
||||||
|
uint key_len;
|
||||||
|
zval *value;
|
||||||
|
convert_to_array_ex( param );
|
||||||
|
hash = HASH_OF( param );
|
||||||
|
zend_hash_internal_pointer_reset( hash );
|
||||||
|
ZEND_HASH_FOREACH_KEY_VAL(hash, num_key, key, value) {
|
||||||
|
if (key) { //HASH_KEY_IS_STRING
|
||||||
|
if (Z_TYPE_P(value) == IS_STRING) {
|
||||||
|
input[ ZSTR_VAL(key) ] = Z_STRVAL_P(value);
|
||||||
|
/*
|
||||||
|
} else if (Z_TYPE_P(value) == IS_LONG) {
|
||||||
|
input[ ZSTR_VAL(key) ] = Z_LVAL_P(value);
|
||||||
|
} else if (Z_TYPE_P(value) == IS_DOUBLE) {
|
||||||
|
input[ ZSTR_VAL(key) ] = Z_DVAL_P(value);
|
||||||
|
} else if (Z_TYPE_P(value) == _IS_BOOL) {
|
||||||
|
input[ ZSTR_VAL(key) ] = Z_BVAL(value) ? 1L : 0L;
|
||||||
|
} else if (Z_TYPE_P(value) == IS_NULL) {
|
||||||
|
input[ ZSTR_VAL(key) ] = ""; */
|
||||||
|
} else {
|
||||||
|
//logfmt( logINFO, "Item %s has unsupported value type", ZSTR_VAL(key) );
|
||||||
|
convert_to_string(value);
|
||||||
|
input[ ZSTR_VAL(key) ] = Z_STRVAL_P(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ZEND_HASH_FOREACH_END();
|
||||||
|
|
||||||
|
long retval = intern->mermsemr->mermsemr_api(input, output);
|
||||||
|
|
||||||
|
// Convert output
|
||||||
|
convert_to_array_ex( param_out );
|
||||||
|
CVars::iterator i;
|
||||||
|
int j = 0;
|
||||||
|
const int out_size = output.size(); // 200
|
||||||
|
const int out_value_size = 200;
|
||||||
|
char out_key[out_value_size], out_value[out_value_size];
|
||||||
|
for ( i=output.begin(); i != output.end() && j<out_size ; i++ ) {
|
||||||
|
bzero(out_key, out_value_size);
|
||||||
|
bzero(out_value, out_value_size);
|
||||||
|
j++;
|
||||||
|
logfmt( logINFO, "RET: %s=%s", i->first.c_str(), i->second.c_str() );
|
||||||
|
strsafecpy( out_key, i->first.c_str(), out_value_size );
|
||||||
|
strsafecpy( out_value, i->second.c_str(), out_value_size );
|
||||||
|
add_assoc_string( param_out, out_key, out_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_LONG(retval);
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_METHOD(MermsEmr, cfgReadChar)
|
||||||
|
{
|
||||||
|
unsigned char *parameter;
|
||||||
|
zval *id = getThis();
|
||||||
|
mermsemr_object *intern;
|
||||||
|
|
||||||
|
if (zend_parse_parameters(
|
||||||
|
ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter) == FAILURE) {
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
intern = Z_TSTOBJ_P(id);
|
||||||
|
if(intern != NULL) {
|
||||||
|
std::string s = intern->mermsemr->cfgReadChar((char*)parameter);
|
||||||
|
RETURN_STRING(s.c_str());
|
||||||
|
}
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_METHOD(MermsEmr, cfgReadLong)
|
||||||
|
{
|
||||||
|
unsigned char *parameter;
|
||||||
|
zval *id = getThis();
|
||||||
|
mermsemr_object *intern;
|
||||||
|
|
||||||
|
if (zend_parse_parameters(
|
||||||
|
ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter) == FAILURE) {
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
intern = Z_TSTOBJ_P(id);
|
||||||
|
if(intern != NULL) {
|
||||||
|
RETURN_LONG(intern->mermsemr->cfgReadLong((char*)parameter));
|
||||||
|
}
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_METHOD(MermsEmr, logMessage)
|
||||||
|
{
|
||||||
|
unsigned char *message;
|
||||||
|
zval *id = getThis();
|
||||||
|
mermsemr_object *intern;
|
||||||
|
|
||||||
|
if (zend_parse_parameters(
|
||||||
|
ZEND_NUM_ARGS() TSRMLS_CC, "s", &message) == FAILURE) {
|
||||||
|
RETURN_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
intern = Z_TSTOBJ_P(id);
|
||||||
|
if(intern != NULL) {
|
||||||
|
intern->mermsemr->logMessage((char*)message);
|
||||||
|
RETURN_TRUE;
|
||||||
|
}
|
||||||
|
RETURN_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
const zend_function_entry mermsemr_methods[] = {
|
||||||
|
PHP_ME(MermsEmr, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
|
||||||
|
PHP_ME(MermsEmr, mermsemr_api, NULL, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(MermsEmr, cfgReadChar, NULL, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(MermsEmr, cfgReadLong, NULL, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(MermsEmr, logMessage, NULL, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_FE_END
|
||||||
|
};
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
zend_object *mermsemr_object_new(zend_class_entry *ce TSRMLS_DC)
|
||||||
|
{
|
||||||
|
mermsemr_object *intern = (mermsemr_object*)ecalloc(1,
|
||||||
|
sizeof(mermsemr_object) +
|
||||||
|
zend_object_properties_size(ce));
|
||||||
|
|
||||||
|
zend_object_std_init(&intern->std, ce TSRMLS_CC);
|
||||||
|
object_properties_init(&intern->std, ce);
|
||||||
|
|
||||||
|
intern->std.handlers = &mermsemr_object_handlers;
|
||||||
|
|
||||||
|
return &intern->std;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
static void mermsemr_object_destroy(zend_object *object)
|
||||||
|
{
|
||||||
|
mermsemr_object *my_obj;
|
||||||
|
my_obj = (mermsemr_object*)((char *)
|
||||||
|
object - XtOffsetOf(mermsemr_object, std));
|
||||||
|
|
||||||
|
// Call __destruct() from user-land.
|
||||||
|
zend_objects_destroy_object(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mermsemr_object_free(zend_object *object)
|
||||||
|
{
|
||||||
|
mermsemr_object *my_obj;
|
||||||
|
my_obj = (mermsemr_object *)((char *)
|
||||||
|
object - XtOffsetOf(mermsemr_object, std));
|
||||||
|
delete my_obj->mermsemr;
|
||||||
|
// Free the object using Zend macro.
|
||||||
|
zend_object_std_dtor(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_MINIT_FUNCTION(tmermsemrapit)
|
||||||
|
{
|
||||||
|
zend_class_entry ce;
|
||||||
|
INIT_NS_CLASS_ENTRY(ce, MERMSEMR_API_NS, "MermsEmr", mermsemr_methods);
|
||||||
|
mermsemr_ce = zend_register_internal_class(&ce TSRMLS_CC);
|
||||||
|
mermsemr_ce->create_object = mermsemr_object_new;
|
||||||
|
|
||||||
|
memcpy(&mermsemr_object_handlers,
|
||||||
|
zend_get_std_object_handlers(),
|
||||||
|
sizeof(mermsemr_object_handlers));
|
||||||
|
|
||||||
|
// Handler for free'ing the object.
|
||||||
|
mermsemr_object_handlers.free_obj = mermsemr_object_free;
|
||||||
|
|
||||||
|
// Handler for the destructor.
|
||||||
|
mermsemr_object_handlers.dtor_obj = mermsemr_object_destroy;
|
||||||
|
|
||||||
|
// Offset into the engine.
|
||||||
|
mermsemr_object_handlers.offset = XtOffsetOf(mermsemr_object, std);
|
||||||
|
|
||||||
|
return SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_MINFO_FUNCTION(tmermsemrapit)
|
||||||
|
{
|
||||||
|
php_info_print_table_start();
|
||||||
|
php_info_print_table_row(2, "MERMSEMR API support", "enabled");
|
||||||
|
php_info_print_table_row(2, "Log File", MERMSEMR_LOG);
|
||||||
|
php_info_print_table_row(2, "Config File", MERMSEMR_CONFIG"mermsemr_api.conf");
|
||||||
|
php_info_print_table_row(2, "Build Date", __DATE__);
|
||||||
|
php_info_print_table_row(2, "Build Time", __TIME__);
|
||||||
|
php_info_print_table_row(2, "Namespace", MERMSEMR_API_NS);
|
||||||
|
php_info_print_table_row(2, "Version", PHP_MERMSEMR_API_EXTVER);
|
||||||
|
php_info_print_table_end();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
zend_module_entry tmermsemrapit_module_entry = {
|
||||||
|
#if ZEND_MODULE_API_NO >= 20010901
|
||||||
|
STANDARD_MODULE_HEADER,
|
||||||
|
#endif
|
||||||
|
PHP_MERMSEMR_API_EXTNAME,
|
||||||
|
NULL, /* Functions */
|
||||||
|
PHP_MINIT(tmermsemrapit),
|
||||||
|
NULL, /* MSHUTDOWN */
|
||||||
|
NULL, /* RINIT */
|
||||||
|
NULL, /* RSHUTDOWN */
|
||||||
|
PHP_MINFO(tmermsemrapit), /* MINFO */
|
||||||
|
#if ZEND_MODULE_API_NO >= 20010901
|
||||||
|
PHP_MERMSEMR_API_EXTVER,
|
||||||
|
#endif
|
||||||
|
STANDARD_MODULE_PROPERTIES
|
||||||
|
};
|
||||||
|
|
||||||
|
//#ifdef COMPILE_DL_MERMSEMR_API
|
||||||
|
extern "C" {
|
||||||
|
ZEND_GET_MODULE(tmermsemrapit)
|
||||||
|
}
|
||||||
|
//#endif
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
#ifndef PHP_MERMSEMR_API_H
|
||||||
|
#define PHP_MERMSEMR_API_H
|
||||||
|
|
||||||
|
#define PHP_MERMSEMR_API_EXTNAME "mermsemr_api"
|
||||||
|
#define PHP_MERMSEMR_API_EXTVER "0.1"
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "php.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
extern zend_module_entry mermsemr_api_module_entry;
|
||||||
|
#define mermsemr_api_module_ptr &mermsemr_api_module_entry
|
||||||
|
#define phpext_mermsemr_api_ptr mermsemr_api_module_ptr
|
||||||
|
|
||||||
|
#endif /* PHP_MERMSEMR_API_H */
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
#define MERMSEMR_API_NS "mermsemr_api"
|
||||||
@@ -0,0 +1,220 @@
|
|||||||
|
Subject: MermsEmr Signup ALERT
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>MermsEmr Signup ALERT</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 40px 30px 20px 30px;}
|
||||||
|
.innerpadding {padding: 30px 30px 30px 30px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .h2, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 30px 0 30px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#c7d8a7" class="header">
|
||||||
|
<table width="70" align="left" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td height="70" style="padding: 0 20px 20px 0;">
|
||||||
|
<img class="fix" src="https://{{server_name}}/assets/images/mermsemr-icon.gif" width="70" height="70" border="0" alt="MermsEmr" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="115" align="left" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td height="115" style="padding: 0 20px 20px 0;">
|
||||||
|
<img class="fix" src="https://{{server_name}}/assets/images/article1.png" width="115" height="115" border="0" alt="" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="380" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col380" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 380px;">
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="1" cellpadding="0" class="bodycopy" style="font-size: 14px; font-family: sans-serif; border: 1px solid #f2eeed; background-color:#e6f9ff;">
|
||||||
|
<tr >
|
||||||
|
<td colspan="2"><h3>Signup Pending-{{added}}</h3></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr >
|
||||||
|
<td class="left" style="width:100px">Firstname</td>
|
||||||
|
<td class="bodycopy">{{firstname}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="left" style="width:100px">Lastname</td>
|
||||||
|
<td class="bodycopy">{{lastname}}</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr >
|
||||||
|
<td class="left" style="width:100px">Email</td>
|
||||||
|
<td class="bodycopy">{{email2}}</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr >
|
||||||
|
<td class="left" style="width:100px">Location</td>
|
||||||
|
<td class="bodycopy"><a href="https://www.chiefsoft.com/tools/iplocator?ip={{loc}}">{{loc}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="left" style="width:100px">Created</td>
|
||||||
|
<td class="bodycopy">{{added}}</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr >
|
||||||
|
<td class="left" style="width:100px">Link</td>
|
||||||
|
<td class="bodycopy">{{verify_link}}</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><h4>Please <a href ="https://{{server_name}}/bko">login</a> into BackOffice from authorized system to support the user.</h4>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<img class="fix" src="https://{{server_name}}/assets/images/mermsemr_email_banner.jpg" width="100%" border="0" alt="" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#44525f">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0" >
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2017<br/>
|
||||||
|
You received this email because you are a support user for {{site_name}}. If you get this email in error, please <a href="https://{{server_name}}/contactus" class="unsubscribe"><font color="#ffffff">contact</font></a> us.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="https://www.facebook.com/mermsemr/">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="https://twitter.com/mermsemr">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,180 @@
|
|||||||
|
Subject: ALERT {{subject}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Transport Request</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
ALERT - {{site_name}},
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
A laundry pickup with the details as shows below is now confirmed.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Date Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Destination</b></td><td>{{agent_name}}<br>{{to_street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Origin</b></td><td>{{from_street}},{{from_city}},{{from_state}} {{from_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Request By</b></td><td>{{req_firstname}} {{req_lastname}}</td></tr>
|
||||||
|
<tr><td><b>Customer Name</b></td><td>{{firstname}} {{lastname}} {{patient_number}}</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,178 @@
|
|||||||
|
Subject: ALERT {{subject}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Transport Request</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
ALERT- {{site_name}},
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
We are unable to confirm a laundry pickup with the details as shows below.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Date Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Destination</b></td><td>{{agent_name}}<br>{{to_street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Origin</b></td><td>{{from_street}},{{from_city}},{{from_state}} {{from_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Request By</b></td><td>{{req_firstname}} {{req_lastname}}</td></tr>
|
||||||
|
<tr><td><b>Customer Name</b></td><td>{{firstname}} {{lastname}} </td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,183 @@
|
|||||||
|
Subject: {{subject}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{subject}}</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
KleenApp Team,
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Received a new service request - NOT CONFIRMED YET
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Customer</b></td><td>{{firstname}} {{lastname}}</td></tr>
|
||||||
|
<tr><td><b>Date Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Destination</b></td><td>{{agent_name}}<br>{{to_street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Origin</b></td><td>{{from_street}},{{from_city}},{{from_state}} {{from_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Request By</b></td><td>{{firstname}} {{lastname}}- {{customer_email}}</td></tr>
|
||||||
|
<tr><td><b>Service List </b></td><td>
|
||||||
|
|
||||||
|
<table border="0" width='100%' id="table1" style="font-family: Trebuchet MS; font-size: 10pt ">
|
||||||
|
<tr><th></th><th>Item</th><th>Quantity</th><th>Price</th></tr>
|
||||||
|
{{\inv_items}}
|
||||||
|
{{...}}
|
||||||
|
{{pin}}
|
||||||
|
{{/...}}
|
||||||
|
{{/inv_items}}
|
||||||
|
</table>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,186 @@
|
|||||||
|
Subject: {{site_name}} -New Signup Alert {{email2}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Welcome to {{site_name}} </title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
<b>KleenApp Alert</b>,
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td><b>Firstname:</b> {{firstname}} </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><b>Lastname:</b> {{lastname}} </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><b>Email:</b> {{email2}} </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><b>Date:</b> {{added}} </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><b>Location:</b> {{loc}} </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><b>Phone:</b> {{phone}} </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Support @ https://wwwadmin.kleenapp.co/site .
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
Subject: {{site_name}} - Test Email
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Log in Confirmation</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear <b>{{firstname}}</b>,
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Please be informed that you logged on to {{site_name}} account at {{last_login2}} from {{loc}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
If you did not log on to your account at the time detailed above, please contact us immediately.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
For all support, contact us at <a href="{{contactus}}">{{contactus}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#44525f">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2017<br/>
|
||||||
|
You received this email because you subscribe to {{site_name}}. If you get this email in error, please <a href="{{contactus}}" class="unsubscribe"><font color="#ffffff">contact</font></a> us.
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,185 @@
|
|||||||
|
Subject: {{subject}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{subject}}</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear {{firstname}},
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Your dryclean pickup with the details as shown below is now confirmed.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Date Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Destination</b></td><td>{{agent_name}}<br>{{to_street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Origin</b></td><td>{{from_street}},{{from_city}},{{from_state}} {{from_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Request By</b></td><td>{{firstname}} {{lastname}}</td></tr>
|
||||||
|
<tr><td><b>Service List </b></td><td>
|
||||||
|
|
||||||
|
<table border="0" width='100%' id="table1" style="font-family: Trebuchet MS; font-size: 10pt ">
|
||||||
|
<tr><th></th><th>Item</th><th>Quantity</th><th>Price</th></tr>
|
||||||
|
{{\inv_items}}
|
||||||
|
{{...}}
|
||||||
|
{{pin}}
|
||||||
|
{{/...}}
|
||||||
|
{{/inv_items}}
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
</td></tr>
|
||||||
|
<tr><td><b>Payment </b></td><td>${{amount}} Confirmation No: {{confirmation}}</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,191 @@
|
|||||||
|
Subject: {{subject}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Transport Request</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear {{firstname}},
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Wre are unable to confirm your service request with the details as shows below.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Date Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Destination</b></td><td>{{agent_name}}<br>{{to_street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Origin</b></td><td>{{from_street}},{{from_city}},{{from_state}} {{from_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Request By</b></td><td>{{req_firstname}} {{req_lastname}}</td></tr>
|
||||||
|
<tr><td><b>Service List </b></td><td>
|
||||||
|
|
||||||
|
<table border="0" width='100%' id="table1" style="font-family: Trebuchet MS; font-size: 10pt ">
|
||||||
|
<tr><th></th><th>Item</th><th>Quantity</th><th>Price</th></tr>
|
||||||
|
{{\inv_items}}
|
||||||
|
{{...}}
|
||||||
|
{{pin}}
|
||||||
|
{{/...}}
|
||||||
|
{{/inv_items}}
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
Please check the payment information and try again
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,192 @@
|
|||||||
|
Subject: {{subject}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - {{subject}}</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Daer {{firstname}},
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
You have received a new pickup request with details below.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Date Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Destination</b></td><td><b>{{agent_name}}<br></b>{{to_street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Origin</b></td><td>{{from_street}},{{from_city}},{{from_state}} {{from_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Request </b></td><td>Laundry Pickup, {{quantity}} Bags </td></tr>
|
||||||
|
<tr><td><b>Customer Name</b></td><td>{{cus_firstname}} {{cus_lastname}} {{cus_phone}}</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
Use the link {{server_link}}{{confirm_link}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
Access your mobile account or <a href="{{https://providers.kleenapp.co/}}">https://https://providers.kleenapp.co/</a> to manage this assignment
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#C85A17">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support alert from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,192 @@
|
|||||||
|
Subject: {{subject}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{subject}}</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 10px 10px 10px 10px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear {{firstname}},
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Your service pickup with the details as shown below is now confirmed.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Pickup Date/Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Service Location</b></td><td>{{agent_name}}<br>{{to_street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Customer Pickup Address</b></td><td>{{from_street}},{{from_city}},{{from_state}} {{from_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Service Requested By</b></td><td>{{firstname}} {{lastname}}</td></tr>
|
||||||
|
<tr><td><b>Service List </b></td><td>
|
||||||
|
|
||||||
|
<table border="0" width='100%' id="table1" style="font-family: Trebuchet MS; font-size: 10pt ">
|
||||||
|
<tr><th></th><th>Item</th><th>Quantity</th><th>Price</th></tr>
|
||||||
|
{{\inv_items}}
|
||||||
|
{{...}}
|
||||||
|
{{pin}}
|
||||||
|
{{/...}}
|
||||||
|
{{/inv_items}}
|
||||||
|
</table>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td></tr>
|
||||||
|
<tr><td><b>Payment </b></td><td>${{amount}} Confirmation No: {{confirmation}}</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,179 @@
|
|||||||
|
Subject: {{subject}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Transport Request</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 10px 10px 10px 10px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear {{firstname}},
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Wre are unable to confirm your laundry pickup with the details as shown below.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Date Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Destination</b></td><td>{{agent_name}}<br>{{to_street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Origin</b></td><td>{{from_street}},{{from_city}},{{from_state}} {{from_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Request By</b></td><td>{{req_firstname}} {{req_lastname}}</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
Please checnk ythe payment information and try again
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,187 @@
|
|||||||
|
Subject: {{site_name}} - {{subject}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - {{subject}}</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Dear <b>{{firstname}}</b>,
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
You have added a {{description}} card ending in {{digits}} to your account successfully.</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
<br>
|
||||||
|
If you are not aware of the activity above, please contact us immediately. </td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
For all support, contact us at <a href="{{contactus}}">{{contactus}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,179 @@
|
|||||||
|
Subject: {{subject}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - {{subject}}</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Daer {{firstname}},
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
You have received a new pickup request with details shown below.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Date Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Destination</b></td><td><b>{{ vars2form(x2, form);}}<br></b>{{street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Origin</b></td><td>{{from_street}},{{from_city}},{{from_state}} {{from_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Request </b></td><td>Laundry Pickup , {{quantity}} Bags </td></tr>
|
||||||
|
<tr><td><b>Customer Name</b></td><td>{{cust_firstname}} {{cust_lastname}} {{cust_phone}}</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
Access your mobile account or <a href="{{https://providers.kleenapp.co/}}">https://https://providers.kleenapp.co/</a> to manage this assignment
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#C85A17">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support alert from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,193 @@
|
|||||||
|
Subject: Translation Request Received
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Translation Request</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear {{req_firstname}},
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
We have received your translation request with details below.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Date Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Language</b></td><td><b>{{language}}</b></td></tr>
|
||||||
|
<tr><td><b>Hours Requested</b></td><td>{{hoursneeded}}-Hour(s)</td></tr>
|
||||||
|
<tr><td><b>Location</b></td><td>{{to_street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Request By</b></td><td>{{req_firstname}} {{req_lastname}}</td></tr>
|
||||||
|
<tr><td><b>Patient Name</b></td><td>{{firstname}} {{lastname}} {{patient_number}}</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
You will receive further messages as the status of the request changes.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
Subject: {{site_name}} - Test Email
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Log in Confirmation</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear <b>{{firstname}}</b>,
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Please be informed that you logged on to {{site_name}} account at {{last_login2}} from {{loc}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
If you did not log on to your account at the time detailed above, please contact us immediately.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
For all support, contact us at <a href="{{contactus}}">{{contactus}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#44525f">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2017<br/>
|
||||||
|
You received this email because you subscribe to {{site_name}}. If you get this email in error, please <a href="{{contactus}}" class="unsubscribe"><font color="#ffffff">contact</font></a> us.
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
Subject: {{site_name}} - Test Email
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Log in Confirmation</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear <b>{{firstname}}</b>,
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Please be informed that you logged on to {{site_name}} account at {{last_login2}} from {{loc}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
If you did not log on to your account at the time detailed above, please contact us immediately.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
For all support, contact us at <a href="{{contactus}}">{{contactus}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#44525f">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2017<br/>
|
||||||
|
You received this email because you subscribe to {{site_name}}. If you get this email in error, please <a href="{{contactus}}" class="unsubscribe"><font color="#ffffff">contact</font></a> us.
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
Subject: {{site_name}} - Test Email
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Log in Confirmation</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear <b>{{firstname}}</b>,
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Please be informed that you logged on to {{site_name}} account at {{last_login2}} from {{loc}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
If you did not log on to your account at the time detailed above, please contact us immediately.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
For all support, contact us at <a href="{{contactus}}">{{contactus}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#44525f">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2017<br/>
|
||||||
|
You received this email because you subscribe to {{site_name}}. If you get this email in error, please <a href="{{contactus}}" class="unsubscribe"><font color="#ffffff">contact</font></a> us.
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
Subject: {{site_name}} - Test Email
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Log in Confirmation</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear <b>{{firstname}}</b>,
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Please be informed that you logged on to {{site_name}} account at {{last_login2}} from {{loc}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
If you did not log on to your account at the time detailed above, please contact us immediately.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
For all support, contact us at <a href="{{contactus}}">{{contactus}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#44525f">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2017<br/>
|
||||||
|
You received this email because you subscribe to {{site_name}}. If you get this email in error, please <a href="{{contactus}}" class="unsubscribe"><font color="#ffffff">contact</font></a> us.
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
Subject: {{site_name}} - Test Email
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Log in Confirmation</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear <b>{{firstname}}</b>,
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Please be informed that you logged on to {{site_name}} account at {{last_login2}} from {{loc}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
If you did not log on to your account at the time detailed above, please contact us immediately.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
For all support, contact us at <a href="{{contactus}}">{{contactus}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#44525f">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2017<br/>
|
||||||
|
You received this email because you subscribe to {{site_name}}. If you get this email in error, please <a href="{{contactus}}" class="unsubscribe"><font color="#ffffff">contact</font></a> us.
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,192 @@
|
|||||||
|
Subject: Transport Request Received
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Transport Request</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear {{req_firstname}},
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
We have received your transport request as shows below.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Date Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Destination</b></td><td>{{to_street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Origin</b></td><td>{{from_street}},{{from_city}},{{from_state}} {{from_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Request By</b></td><td>{{req_firstname}} {{req_lastname}}</td></tr>
|
||||||
|
<tr><td><b>Patient Name</b></td><td>{{firstname}} {{lastname}} {{patient_number}}</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
You will receive further messages as the status of the request changes.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,193 @@
|
|||||||
|
Subject: Transport Request Confirmed
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Transport Request</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear {{req_firstname}},
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Your transport request with details as shows below is now confirmed.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table class="col425">
|
||||||
|
<tr><td><b>Date Time</b></td><td>{{long_date}}</td></tr>
|
||||||
|
<tr><td><b>Destination</b></td><td>{{to_street}},{{to_city}},{{to_state}} {{to_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Origin</b></td><td>{{from_street}},{{from_city}},{{from_state}} {{from_zipcode}}</td></tr>
|
||||||
|
<tr><td><b>Request By</b></td><td>{{req_firstname}} {{req_lastname}}</td></tr>
|
||||||
|
<tr><td><b>Patient Name</b></td><td>{{firstname}} {{lastname}} {{patient_number}}</td></tr>
|
||||||
|
<tr><td><b>Driver</b></td><td>{{driver_firstname}} {{driver_lastname}} [ {{agent_name}} ]</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
Subject: {{site_name}} - Important Notification from {{site_name}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Log in Confirmation</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 20px 20px 20px 30px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
||||||
|
body[yahoo] .hide {display: none!important;}
|
||||||
|
body[yahoo] .buttonwrapper {background-color: transparent!important;}
|
||||||
|
body[yahoo] .button {padding: 0px!important;}
|
||||||
|
body[yahoo] .button a {background-color: #e05443; padding: 15px 15px 13px!important;}
|
||||||
|
body[yahoo] .unsubscribe {display: block; margin-top: 20px; padding: 10px 50px; background: #2f3942; border-radius: 5px; text-decoration: none!important; font-weight: bold;}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media only screen and (min-device-width: 601px) {
|
||||||
|
.content {width: 600px !important;}
|
||||||
|
.col425 {width: 425px!important;}
|
||||||
|
.col380 {width: 380px!important;}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear <b>{{firstname}}</b>,
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Please be informed that you logged on to {{site_name}} account at {{last_login2}} from {{loc}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
If you did not log on to your account at the time detailed above, please contact us immediately.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
For all support, contact us at <a href="{{contactus}}">{{contactus}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#44525f">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2017<br/>
|
||||||
|
You received this email because you subscribe to {{site_name}}. If you get this email in error, please <a href="{{contactus}}" class="unsubscribe"><font color="#ffffff">contact</font></a> us.
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
Subject: {{site_name}} - Welcome to {{site_name}}
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{site_name}} - Welcome to {{site_name}} </title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {margin: 0; padding: 0; min-width: 100%!important;}
|
||||||
|
img {height: auto;}
|
||||||
|
.content {width: 100%; max-width: 600px;}
|
||||||
|
.header {padding: 10px 10px 10px 10px;}
|
||||||
|
.innerpadding {padding: 10px 10px 10px 10px;}
|
||||||
|
.borderbottom {border-bottom: 1px solid #f2eeed;}
|
||||||
|
.subhead {font-size: 12px; color: #ffffff; font-family: sans-serif; letter-spacing: 3px;}
|
||||||
|
.h1, .bodycopy {color: #153643; font-family: sans-serif;}
|
||||||
|
.h2 {color: #e6eeed; font-family: sans-serif;}
|
||||||
|
.h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
|
||||||
|
.h2 {padding: 0 0 15px 0; font-size: 24px; line-height: 28px; font-weight: bold;}
|
||||||
|
.bodycopy {font-size: 14px; line-height: 20px;}
|
||||||
|
.button {text-align: center; font-size: 16px; font-family: sans-serif; font-weight: bold; padding: 0 20px 0 20px;}
|
||||||
|
.button a {color: #ffffff; text-decoration: none;}
|
||||||
|
.footer {padding: 20px 30px 15px 30px;}
|
||||||
|
.footercopy {font-family: sans-serif; font-size: 14px; color: #ffffff;}
|
||||||
|
.footercopy a {color: #ffffff; text-decoration: underline;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body yahoo bgcolor="#f6f8f1">
|
||||||
|
<table width="100%" bgcolor="#f6f8f1" border="0" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table bgcolor="#ffffff" class="content" align="center" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#19b9b3" class="header">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="425" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%; max-width: 425px;">
|
||||||
|
<tr>
|
||||||
|
<td height="50">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="h1" style="padding: 5px 0 0 0;">
|
||||||
|
{{site_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="subhead" style="padding: 0 0 0 3px;">
|
||||||
|
{{site_trade_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="h3">
|
||||||
|
Dear <b>{{firstname}}</b>,
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding borderbottom">
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
<table width="100%" align="left" cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<![endif]-->
|
||||||
|
<table class="col425" align="left" border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
Welcome to {{site_name}}, your username is {{email}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="bodycopy">
|
||||||
|
<br>
|
||||||
|
If you did not create this account, please contact us immediately.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
For all support, contact us at <a href="{{contactus}}">{{contactus}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="innerpadding bodycopy">
|
||||||
|
{{site_name}} Team
|
||||||
|
<br>
|
||||||
|
{{server_name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="footer" bgcolor="#493D26">
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td align="center" class="footercopy">
|
||||||
|
® {{site_name}} 2018<br/>
|
||||||
|
This is a support email from {{site_name}}.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" style="padding: 20px 0 0 0;">
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{facebook}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/facebook.png" width="37" height="37" alt="Facebook" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td width="37" style="text-align: center; padding: 0 10px 0 10px;">
|
||||||
|
<a href="{{twitter}}">
|
||||||
|
<img src="https://{{server_name}}/assets/images/brands/twitter.png" width="37" height="37" alt="Twitter" border="0" />
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--[if (gte mso 9)|(IE)]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--analytics-->
|
||||||
|
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
# MERMSEMR API configuration file
|
||||||
|
version = "1.0";
|
||||||
|
|
||||||
|
system:
|
||||||
|
{
|
||||||
|
live = "0";
|
||||||
|
base_url = "http://oameye.works.mermsemr.com/";
|
||||||
|
profile_picture_bad ="\\192.168.2.155\mermsemr\TEST\profile";
|
||||||
|
profile_picture ="/opt/mermsemr/TEST/profile";
|
||||||
|
profile_picture_width = "450";
|
||||||
|
profile_picture_height = "450";
|
||||||
|
profile_picture_size = "51200";
|
||||||
|
};
|
||||||
|
|
||||||
|
database:
|
||||||
|
{
|
||||||
|
host = "127.0.0.1";
|
||||||
|
name = "mermsemr";
|
||||||
|
user = "mermsemr";
|
||||||
|
pass = "mermsemr";
|
||||||
|
port = 5432;
|
||||||
|
};
|
||||||
|
|
||||||
|
mailsend:
|
||||||
|
{
|
||||||
|
from = "support@kleenapp.co";
|
||||||
|
server = "smtpout.secureserver.net";
|
||||||
|
domain = "kleenapp.com";
|
||||||
|
user = "support@kleenapp.co";
|
||||||
|
pass = "Kle@nAp1!";
|
||||||
|
name = "Kleen Demo Support";
|
||||||
|
};
|
||||||
|
|
||||||
|
mailsendOLD:
|
||||||
|
{
|
||||||
|
from = "support@wrenchboard.com";
|
||||||
|
server = "smtp.gmail.com";
|
||||||
|
domain = "kleenapp.com";
|
||||||
|
user = "support@wrenchboard.com";
|
||||||
|
pass = "may12002!";
|
||||||
|
name = "Kleen Demo Support";
|
||||||
|
};
|
||||||
|
|
||||||
|
stripe:
|
||||||
|
{
|
||||||
|
publishable_key = "pk_test_X7TylEk9BkZCarcj0FyKRYXc";
|
||||||
|
secret_key = "sk_test_MA2ltfGlT70Nu7uWlmHowBRB";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
alerts:
|
||||||
|
{
|
||||||
|
system = "ses66181@gmail.com,ameye@chiefsoft.com";
|
||||||
|
request = "ses66181@gmail.com";
|
||||||
|
account = "ses66181@gmail.com";
|
||||||
|
};
|
||||||
|
|
||||||
|
transnotif:
|
||||||
|
{
|
||||||
|
contact = "ses66181@gmail.com,support@mermsemr.com,ameye@fluxtra.net";
|
||||||
|
topupemail = "ses66181@gmail.com,ameye@chiefsoft.com";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,270 @@
|
|||||||
|
srcdir = /home/sameye/mermsemr/mermsemr/src
|
||||||
|
builddir = /home/sameye/mermsemr/mermsemr/src
|
||||||
|
top_srcdir = /home/sameye/mermsemr/mermsemr/src
|
||||||
|
top_builddir = /home/sameye/mermsemr/mermsemr/src
|
||||||
|
EGREP = /usr/bin/grep -E
|
||||||
|
SED = /usr/bin/sed
|
||||||
|
CONFIGURE_COMMAND = './configure'
|
||||||
|
CONFIGURE_OPTIONS =
|
||||||
|
SHLIB_SUFFIX_NAME = so
|
||||||
|
SHLIB_DL_SUFFIX_NAME = so
|
||||||
|
ZEND_EXT_TYPE = zend_extension
|
||||||
|
RE2C = exit 0;
|
||||||
|
AWK = gawk
|
||||||
|
MERMSEMR_API_SAMEYE_SHARED_LIBADD = -Wl,-rpath,/usr/lib64 -L/usr/lib64 -lpq -lstdc++ -lcurl -lconfig++ -ljson-c -lssl -lz -lpcrecpp -lgcc_s
|
||||||
|
shared_objects_mermsemr_api_sameye = core/cfg.lo core/cgi.lo core/clog.lo core/cvariables.lo core/exceptions.lo core/hmac_sha2.lo core/input.lo core/list.lo core/mermsemr.lo core/mermsemr_api.lo core/pgsql.lo core/pgsql_wrapper.lo core/safestring.lo core/sha2.lo core/sha512.lo core/smtp.lo core/timer.lo core/util.lo core/vars.lo shared_tool/creditcards.lo shared_tool/function_agents.lo shared_tool/function_backoffice.lo shared_tool/function_cron.lo shared_tool/function_driver.lo shared_tool/function_invoice.lo shared_tool/function_members.lo shared_tool/function_users.lo shared_tool/medTEmails.lo shared_tool/medTUpload.lo shared_tool/medTrBackOffice.lo shared_tool/medTrMembers.lo shared_tool/medTrTransporter.lo shared_tool/mermsemr_api_main.lo shared_tool/payments.lo shared_tool/stripe.lo shared_tool/stripe_charge.lo
|
||||||
|
PHP_PECL_EXTENSION = mermsemr_api_sameye
|
||||||
|
PHP_MODULES = $(phplibdir)/mermsemr_api_sameye.la
|
||||||
|
PHP_ZEND_EX =
|
||||||
|
all_targets = $(PHP_MODULES) $(PHP_ZEND_EX)
|
||||||
|
install_targets = install-modules install-headers
|
||||||
|
prefix = /usr
|
||||||
|
exec_prefix = $(prefix)
|
||||||
|
libdir = ${exec_prefix}/lib
|
||||||
|
prefix = /usr
|
||||||
|
phplibdir = /home/sameye/mermsemr/mermsemr/src/modules
|
||||||
|
phpincludedir = /usr/include/php
|
||||||
|
CC = cc
|
||||||
|
CFLAGS = -g -O2
|
||||||
|
CFLAGS_CLEAN = $(CFLAGS)
|
||||||
|
CPP = cc -E
|
||||||
|
CPPFLAGS = -DHAVE_CONFIG_H
|
||||||
|
CXX = g++
|
||||||
|
CXXFLAGS = -g -O2
|
||||||
|
CXXFLAGS_CLEAN = $(CXXFLAGS)
|
||||||
|
EXTENSION_DIR = /usr/lib64/php/modules
|
||||||
|
PHP_EXECUTABLE = /usr/bin/php
|
||||||
|
EXTRA_LDFLAGS =
|
||||||
|
EXTRA_LIBS =
|
||||||
|
INCLUDES = -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/usr/include/pgsql
|
||||||
|
LFLAGS =
|
||||||
|
LDFLAGS = -Wl,-rpath,/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1/.libs/ -L/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1/.libs/
|
||||||
|
SHARED_LIBTOOL =
|
||||||
|
LIBTOOL = $(SHELL) $(top_builddir)/libtool
|
||||||
|
SHELL = /bin/sh
|
||||||
|
INSTALL_HEADERS =
|
||||||
|
mkinstalldirs = $(top_srcdir)/build/shtool mkdir -p
|
||||||
|
INSTALL = $(top_srcdir)/build/shtool install -c
|
||||||
|
INSTALL_DATA = $(INSTALL) -m 644
|
||||||
|
|
||||||
|
DEFS = -DPHP_ATOM_INC -I$(top_builddir)/include -I$(top_builddir)/main -I$(top_srcdir)
|
||||||
|
COMMON_FLAGS = $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(PHP_FRAMEWORKPATH)
|
||||||
|
|
||||||
|
all: $(all_targets)
|
||||||
|
@echo
|
||||||
|
@echo "Build complete."
|
||||||
|
@echo "Don't forget to run 'make test'."
|
||||||
|
@echo
|
||||||
|
|
||||||
|
build-modules: $(PHP_MODULES) $(PHP_ZEND_EX)
|
||||||
|
|
||||||
|
build-binaries: $(PHP_BINARIES)
|
||||||
|
|
||||||
|
libphp$(PHP_MAJOR_VERSION).la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
|
||||||
|
$(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@
|
||||||
|
-@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1
|
||||||
|
|
||||||
|
libs/libphp$(PHP_MAJOR_VERSION).bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
|
||||||
|
$(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp$(PHP_MAJOR_VERSION).so
|
||||||
|
|
||||||
|
install: $(all_targets) $(install_targets)
|
||||||
|
|
||||||
|
install-sapi: $(OVERALL_TARGET)
|
||||||
|
@echo "Installing PHP SAPI module: $(PHP_SAPI)"
|
||||||
|
-@$(mkinstalldirs) $(INSTALL_ROOT)$(bindir)
|
||||||
|
-@if test ! -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); then \
|
||||||
|
for i in 0.0.0 0.0 0; do \
|
||||||
|
if test -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i; then \
|
||||||
|
$(LN_S) $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); \
|
||||||
|
break; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
fi
|
||||||
|
@$(INSTALL_IT)
|
||||||
|
|
||||||
|
install-binaries: build-binaries $(install_binary_targets)
|
||||||
|
|
||||||
|
install-modules: build-modules
|
||||||
|
@test -d modules && \
|
||||||
|
$(mkinstalldirs) $(INSTALL_ROOT)$(EXTENSION_DIR)
|
||||||
|
@echo "Installing shared extensions: $(INSTALL_ROOT)$(EXTENSION_DIR)/"
|
||||||
|
@rm -f modules/*.la >/dev/null 2>&1
|
||||||
|
@$(INSTALL) modules/* $(INSTALL_ROOT)$(EXTENSION_DIR)
|
||||||
|
|
||||||
|
install-headers:
|
||||||
|
-@if test "$(INSTALL_HEADERS)"; then \
|
||||||
|
for i in `echo $(INSTALL_HEADERS)`; do \
|
||||||
|
i=`$(top_srcdir)/build/shtool path -d $$i`; \
|
||||||
|
paths="$$paths $(INSTALL_ROOT)$(phpincludedir)/$$i"; \
|
||||||
|
done; \
|
||||||
|
$(mkinstalldirs) $$paths && \
|
||||||
|
echo "Installing header files: $(INSTALL_ROOT)$(phpincludedir)/" && \
|
||||||
|
for i in `echo $(INSTALL_HEADERS)`; do \
|
||||||
|
if test "$(PHP_PECL_EXTENSION)"; then \
|
||||||
|
src=`echo $$i | $(SED) -e "s#ext/$(PHP_PECL_EXTENSION)/##g"`; \
|
||||||
|
else \
|
||||||
|
src=$$i; \
|
||||||
|
fi; \
|
||||||
|
if test -f "$(top_srcdir)/$$src"; then \
|
||||||
|
$(INSTALL_DATA) $(top_srcdir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \
|
||||||
|
elif test -f "$(top_builddir)/$$src"; then \
|
||||||
|
$(INSTALL_DATA) $(top_builddir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \
|
||||||
|
else \
|
||||||
|
(cd $(top_srcdir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i; \
|
||||||
|
cd $(top_builddir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i) 2>/dev/null || true; \
|
||||||
|
fi \
|
||||||
|
done; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
PHP_TEST_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1'
|
||||||
|
PHP_TEST_SHARED_EXTENSIONS = ` \
|
||||||
|
if test "x$(PHP_MODULES)" != "x"; then \
|
||||||
|
for i in $(PHP_MODULES)""; do \
|
||||||
|
. $$i; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \
|
||||||
|
done; \
|
||||||
|
fi; \
|
||||||
|
if test "x$(PHP_ZEND_EX)" != "x"; then \
|
||||||
|
for i in $(PHP_ZEND_EX)""; do \
|
||||||
|
. $$i; $(top_srcdir)/build/shtool echo -n -- " -d $(ZEND_EXT_TYPE)=$(top_builddir)/modules/$$dlname"; \
|
||||||
|
done; \
|
||||||
|
fi`
|
||||||
|
PHP_DEPRECATED_DIRECTIVES_REGEX = '^(magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*='
|
||||||
|
|
||||||
|
test: all
|
||||||
|
@if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
|
||||||
|
INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \
|
||||||
|
if test "$$INI_FILE"; then \
|
||||||
|
$(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \
|
||||||
|
else \
|
||||||
|
echo > $(top_builddir)/tmp-php.ini; \
|
||||||
|
fi; \
|
||||||
|
INI_SCANNED_PATH=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanned_files())); echo $$a[0];' 2> /dev/null`; \
|
||||||
|
if test "$$INI_SCANNED_PATH"; then \
|
||||||
|
INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \
|
||||||
|
$(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini; \
|
||||||
|
fi; \
|
||||||
|
TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \
|
||||||
|
TEST_PHP_SRCDIR=$(top_srcdir) \
|
||||||
|
CC="$(CC)" \
|
||||||
|
$(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \
|
||||||
|
TEST_RESULT_EXIT_CODE=$$?; \
|
||||||
|
rm $(top_builddir)/tmp-php.ini; \
|
||||||
|
exit $$TEST_RESULT_EXIT_CODE; \
|
||||||
|
else \
|
||||||
|
echo "ERROR: Cannot run tests without CLI sapi."; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
clean:
|
||||||
|
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
|
||||||
|
find . -name \*.lo -o -name \*.o | xargs rm -f
|
||||||
|
find . -name \*.la -o -name \*.a | xargs rm -f
|
||||||
|
find . -name \*.so | xargs rm -f
|
||||||
|
find . -name .libs -a -type d|xargs rm -rf
|
||||||
|
rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_MILTER_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h main/internal_functions_cli.c main/internal_functions.c stamp-h buildmk.stamp Zend/zend_dtrace_gen.h Zend/zend_dtrace_gen.h.bak Zend/zend_config.h TSRM/tsrm_config.h
|
||||||
|
rm -f php7.spec main/build-defs.h scripts/phpize
|
||||||
|
rm -f ext/date/lib/timelib_config.h ext/mbstring/oniguruma/config.h ext/mbstring/libmbfl/config.h ext/oci8/oci8_dtrace_gen.h ext/oci8/oci8_dtrace_gen.h.bak
|
||||||
|
rm -f scripts/man1/phpize.1 scripts/php-config scripts/man1/php-config.1 sapi/cli/php.1 sapi/cgi/php-cgi.1 sapi/phpdbg/phpdbg.1 ext/phar/phar.1 ext/phar/phar.phar.1
|
||||||
|
rm -f sapi/fpm/php-fpm.conf sapi/fpm/init.d.php-fpm sapi/fpm/php-fpm.service sapi/fpm/php-fpm.8 sapi/fpm/status.html
|
||||||
|
rm -f ext/iconv/php_have_bsd_iconv.h ext/iconv/php_have_glibc_iconv.h ext/iconv/php_have_ibm_iconv.h ext/iconv/php_have_iconv.h ext/iconv/php_have_libiconv.h ext/iconv/php_iconv_aliased_libiconv.h ext/iconv/php_iconv_supports_errno.h ext/iconv/php_php_iconv_h_path.h ext/iconv/php_php_iconv_impl.h
|
||||||
|
rm -f ext/phar/phar.phar ext/phar/phar.php
|
||||||
|
if test "$(srcdir)" != "$(builddir)"; then \
|
||||||
|
rm -f ext/phar/phar/phar.inc; \
|
||||||
|
fi
|
||||||
|
$(EGREP) define'.*include/php' $(top_srcdir)/configure | $(SED) 's/.*>//'|xargs rm -f
|
||||||
|
|
||||||
|
prof-gen:
|
||||||
|
CCACHE_DISABLE=1 $(MAKE) PROF_FLAGS=-fprofile-generate all
|
||||||
|
|
||||||
|
prof-clean:
|
||||||
|
find . -name \*.lo -o -name \*.o | xargs rm -f
|
||||||
|
find . -name \*.la -o -name \*.a | xargs rm -f
|
||||||
|
find . -name \*.so | xargs rm -f
|
||||||
|
rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_MILTER_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
|
||||||
|
|
||||||
|
prof-use:
|
||||||
|
CCACHE_DISABLE=1 $(MAKE) PROF_FLAGS=-fprofile-use all
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: all clean install distclean test prof-gen prof-clean prof-use
|
||||||
|
.NOEXPORT:
|
||||||
|
core/cfg.lo: /home/sameye/mermsemr/mermsemr/src/core/cfg.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/cfg.cc -o core/cfg.lo
|
||||||
|
core/cgi.lo: /home/sameye/mermsemr/mermsemr/src/core/cgi.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/cgi.cc -o core/cgi.lo
|
||||||
|
core/clog.lo: /home/sameye/mermsemr/mermsemr/src/core/clog.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/clog.cc -o core/clog.lo
|
||||||
|
core/cvariables.lo: /home/sameye/mermsemr/mermsemr/src/core/cvariables.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/cvariables.cc -o core/cvariables.lo
|
||||||
|
core/exceptions.lo: /home/sameye/mermsemr/mermsemr/src/core/exceptions.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/exceptions.cc -o core/exceptions.lo
|
||||||
|
core/hmac_sha2.lo: /home/sameye/mermsemr/mermsemr/src/core/hmac_sha2.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/hmac_sha2.cc -o core/hmac_sha2.lo
|
||||||
|
core/input.lo: /home/sameye/mermsemr/mermsemr/src/core/input.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/input.cc -o core/input.lo
|
||||||
|
core/list.lo: /home/sameye/mermsemr/mermsemr/src/core/list.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/list.cc -o core/list.lo
|
||||||
|
core/mermsemr.lo: /home/sameye/mermsemr/mermsemr/src/core/mermsemr.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/mermsemr.cc -o core/mermsemr.lo
|
||||||
|
core/mermsemr_api.lo: /home/sameye/mermsemr/mermsemr/src/core/mermsemr_api.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/mermsemr_api.cc -o core/mermsemr_api.lo
|
||||||
|
core/pgsql.lo: /home/sameye/mermsemr/mermsemr/src/core/pgsql.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/pgsql.cc -o core/pgsql.lo
|
||||||
|
core/pgsql_wrapper.lo: /home/sameye/mermsemr/mermsemr/src/core/pgsql_wrapper.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/pgsql_wrapper.cc -o core/pgsql_wrapper.lo
|
||||||
|
core/safestring.lo: /home/sameye/mermsemr/mermsemr/src/core/safestring.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/safestring.cc -o core/safestring.lo
|
||||||
|
core/sha2.lo: /home/sameye/mermsemr/mermsemr/src/core/sha2.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/sha2.cc -o core/sha2.lo
|
||||||
|
core/sha512.lo: /home/sameye/mermsemr/mermsemr/src/core/sha512.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/sha512.cc -o core/sha512.lo
|
||||||
|
core/smtp.lo: /home/sameye/mermsemr/mermsemr/src/core/smtp.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/smtp.cc -o core/smtp.lo
|
||||||
|
core/timer.lo: /home/sameye/mermsemr/mermsemr/src/core/timer.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/timer.cc -o core/timer.lo
|
||||||
|
core/util.lo: /home/sameye/mermsemr/mermsemr/src/core/util.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/util.cc -o core/util.lo
|
||||||
|
core/vars.lo: /home/sameye/mermsemr/mermsemr/src/core/vars.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/vars.cc -o core/vars.lo
|
||||||
|
shared_tool/creditcards.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/creditcards.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/creditcards.cc -o shared_tool/creditcards.lo
|
||||||
|
shared_tool/function_agents.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_agents.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_agents.cc -o shared_tool/function_agents.lo
|
||||||
|
shared_tool/function_backoffice.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_backoffice.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_backoffice.cc -o shared_tool/function_backoffice.lo
|
||||||
|
shared_tool/function_cron.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_cron.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_cron.cc -o shared_tool/function_cron.lo
|
||||||
|
shared_tool/function_driver.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_driver.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_driver.cc -o shared_tool/function_driver.lo
|
||||||
|
shared_tool/function_invoice.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_invoice.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_invoice.cc -o shared_tool/function_invoice.lo
|
||||||
|
shared_tool/function_members.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_members.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_members.cc -o shared_tool/function_members.lo
|
||||||
|
shared_tool/function_users.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_users.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_users.cc -o shared_tool/function_users.lo
|
||||||
|
shared_tool/medTEmails.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/medTEmails.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/medTEmails.cc -o shared_tool/medTEmails.lo
|
||||||
|
shared_tool/medTUpload.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/medTUpload.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/medTUpload.cc -o shared_tool/medTUpload.lo
|
||||||
|
shared_tool/medTrBackOffice.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrBackOffice.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrBackOffice.cc -o shared_tool/medTrBackOffice.lo
|
||||||
|
shared_tool/medTrMembers.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrMembers.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrMembers.cc -o shared_tool/medTrMembers.lo
|
||||||
|
shared_tool/medTrTransporter.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrTransporter.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrTransporter.cc -o shared_tool/medTrTransporter.lo
|
||||||
|
shared_tool/mermsemr_api_main.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/mermsemr_api_main.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/mermsemr_api_main.cc -o shared_tool/mermsemr_api_main.lo
|
||||||
|
shared_tool/payments.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/payments.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/payments.cc -o shared_tool/payments.lo
|
||||||
|
shared_tool/stripe.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/stripe.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/stripe.cc -o shared_tool/stripe.lo
|
||||||
|
shared_tool/stripe_charge.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/stripe_charge.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/stripe_charge.cc -o shared_tool/stripe_charge.lo
|
||||||
|
$(phplibdir)/mermsemr_api_sameye.la: ./mermsemr_api_sameye.la
|
||||||
|
$(LIBTOOL) --mode=install cp ./mermsemr_api_sameye.la $(phplibdir)
|
||||||
|
|
||||||
|
./mermsemr_api_sameye.la: $(shared_objects_mermsemr_api_sameye) $(MERMSEMR_API_SAMEYE_SHARED_DEPENDENCIES)
|
||||||
|
$(LIBTOOL) --mode=link $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_mermsemr_api_sameye) $(MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
mkinstalldirs = $(top_srcdir)/build/shtool mkdir -p
|
||||||
|
INSTALL = $(top_srcdir)/build/shtool install -c
|
||||||
|
INSTALL_DATA = $(INSTALL) -m 644
|
||||||
|
|
||||||
|
DEFS = -DPHP_ATOM_INC -I$(top_builddir)/include -I$(top_builddir)/main -I$(top_srcdir)
|
||||||
|
COMMON_FLAGS = $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(PHP_FRAMEWORKPATH)
|
||||||
|
|
||||||
|
all: $(all_targets)
|
||||||
|
@echo
|
||||||
|
@echo "Build complete."
|
||||||
|
@echo "Don't forget to run 'make test'."
|
||||||
|
@echo
|
||||||
|
|
||||||
|
build-modules: $(PHP_MODULES) $(PHP_ZEND_EX)
|
||||||
|
|
||||||
|
build-binaries: $(PHP_BINARIES)
|
||||||
|
|
||||||
|
libphp$(PHP_MAJOR_VERSION).la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
|
||||||
|
$(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@
|
||||||
|
-@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1
|
||||||
|
|
||||||
|
libs/libphp$(PHP_MAJOR_VERSION).bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
|
||||||
|
$(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp$(PHP_MAJOR_VERSION).so
|
||||||
|
|
||||||
|
install: $(all_targets) $(install_targets)
|
||||||
|
|
||||||
|
install-sapi: $(OVERALL_TARGET)
|
||||||
|
@echo "Installing PHP SAPI module: $(PHP_SAPI)"
|
||||||
|
-@$(mkinstalldirs) $(INSTALL_ROOT)$(bindir)
|
||||||
|
-@if test ! -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); then \
|
||||||
|
for i in 0.0.0 0.0 0; do \
|
||||||
|
if test -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i; then \
|
||||||
|
$(LN_S) $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); \
|
||||||
|
break; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
fi
|
||||||
|
@$(INSTALL_IT)
|
||||||
|
|
||||||
|
install-binaries: build-binaries $(install_binary_targets)
|
||||||
|
|
||||||
|
install-modules: build-modules
|
||||||
|
@test -d modules && \
|
||||||
|
$(mkinstalldirs) $(INSTALL_ROOT)$(EXTENSION_DIR)
|
||||||
|
@echo "Installing shared extensions: $(INSTALL_ROOT)$(EXTENSION_DIR)/"
|
||||||
|
@rm -f modules/*.la >/dev/null 2>&1
|
||||||
|
@$(INSTALL) modules/* $(INSTALL_ROOT)$(EXTENSION_DIR)
|
||||||
|
|
||||||
|
install-headers:
|
||||||
|
-@if test "$(INSTALL_HEADERS)"; then \
|
||||||
|
for i in `echo $(INSTALL_HEADERS)`; do \
|
||||||
|
i=`$(top_srcdir)/build/shtool path -d $$i`; \
|
||||||
|
paths="$$paths $(INSTALL_ROOT)$(phpincludedir)/$$i"; \
|
||||||
|
done; \
|
||||||
|
$(mkinstalldirs) $$paths && \
|
||||||
|
echo "Installing header files: $(INSTALL_ROOT)$(phpincludedir)/" && \
|
||||||
|
for i in `echo $(INSTALL_HEADERS)`; do \
|
||||||
|
if test "$(PHP_PECL_EXTENSION)"; then \
|
||||||
|
src=`echo $$i | $(SED) -e "s#ext/$(PHP_PECL_EXTENSION)/##g"`; \
|
||||||
|
else \
|
||||||
|
src=$$i; \
|
||||||
|
fi; \
|
||||||
|
if test -f "$(top_srcdir)/$$src"; then \
|
||||||
|
$(INSTALL_DATA) $(top_srcdir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \
|
||||||
|
elif test -f "$(top_builddir)/$$src"; then \
|
||||||
|
$(INSTALL_DATA) $(top_builddir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \
|
||||||
|
else \
|
||||||
|
(cd $(top_srcdir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i; \
|
||||||
|
cd $(top_builddir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i) 2>/dev/null || true; \
|
||||||
|
fi \
|
||||||
|
done; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
PHP_TEST_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1'
|
||||||
|
PHP_TEST_SHARED_EXTENSIONS = ` \
|
||||||
|
if test "x$(PHP_MODULES)" != "x"; then \
|
||||||
|
for i in $(PHP_MODULES)""; do \
|
||||||
|
. $$i; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \
|
||||||
|
done; \
|
||||||
|
fi; \
|
||||||
|
if test "x$(PHP_ZEND_EX)" != "x"; then \
|
||||||
|
for i in $(PHP_ZEND_EX)""; do \
|
||||||
|
. $$i; $(top_srcdir)/build/shtool echo -n -- " -d $(ZEND_EXT_TYPE)=$(top_builddir)/modules/$$dlname"; \
|
||||||
|
done; \
|
||||||
|
fi`
|
||||||
|
PHP_DEPRECATED_DIRECTIVES_REGEX = '^(magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*='
|
||||||
|
|
||||||
|
test: all
|
||||||
|
@if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
|
||||||
|
INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \
|
||||||
|
if test "$$INI_FILE"; then \
|
||||||
|
$(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \
|
||||||
|
else \
|
||||||
|
echo > $(top_builddir)/tmp-php.ini; \
|
||||||
|
fi; \
|
||||||
|
INI_SCANNED_PATH=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanned_files())); echo $$a[0];' 2> /dev/null`; \
|
||||||
|
if test "$$INI_SCANNED_PATH"; then \
|
||||||
|
INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \
|
||||||
|
$(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini; \
|
||||||
|
fi; \
|
||||||
|
TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \
|
||||||
|
TEST_PHP_SRCDIR=$(top_srcdir) \
|
||||||
|
CC="$(CC)" \
|
||||||
|
$(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \
|
||||||
|
TEST_RESULT_EXIT_CODE=$$?; \
|
||||||
|
rm $(top_builddir)/tmp-php.ini; \
|
||||||
|
exit $$TEST_RESULT_EXIT_CODE; \
|
||||||
|
else \
|
||||||
|
echo "ERROR: Cannot run tests without CLI sapi."; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
clean:
|
||||||
|
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
|
||||||
|
find . -name \*.lo -o -name \*.o | xargs rm -f
|
||||||
|
find . -name \*.la -o -name \*.a | xargs rm -f
|
||||||
|
find . -name \*.so | xargs rm -f
|
||||||
|
find . -name .libs -a -type d|xargs rm -rf
|
||||||
|
rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_MILTER_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h main/internal_functions_cli.c main/internal_functions.c stamp-h buildmk.stamp Zend/zend_dtrace_gen.h Zend/zend_dtrace_gen.h.bak Zend/zend_config.h TSRM/tsrm_config.h
|
||||||
|
rm -f php7.spec main/build-defs.h scripts/phpize
|
||||||
|
rm -f ext/date/lib/timelib_config.h ext/mbstring/oniguruma/config.h ext/mbstring/libmbfl/config.h ext/oci8/oci8_dtrace_gen.h ext/oci8/oci8_dtrace_gen.h.bak
|
||||||
|
rm -f scripts/man1/phpize.1 scripts/php-config scripts/man1/php-config.1 sapi/cli/php.1 sapi/cgi/php-cgi.1 sapi/phpdbg/phpdbg.1 ext/phar/phar.1 ext/phar/phar.phar.1
|
||||||
|
rm -f sapi/fpm/php-fpm.conf sapi/fpm/init.d.php-fpm sapi/fpm/php-fpm.service sapi/fpm/php-fpm.8 sapi/fpm/status.html
|
||||||
|
rm -f ext/iconv/php_have_bsd_iconv.h ext/iconv/php_have_glibc_iconv.h ext/iconv/php_have_ibm_iconv.h ext/iconv/php_have_iconv.h ext/iconv/php_have_libiconv.h ext/iconv/php_iconv_aliased_libiconv.h ext/iconv/php_iconv_supports_errno.h ext/iconv/php_php_iconv_h_path.h ext/iconv/php_php_iconv_impl.h
|
||||||
|
rm -f ext/phar/phar.phar ext/phar/phar.php
|
||||||
|
if test "$(srcdir)" != "$(builddir)"; then \
|
||||||
|
rm -f ext/phar/phar/phar.inc; \
|
||||||
|
fi
|
||||||
|
$(EGREP) define'.*include/php' $(top_srcdir)/configure | $(SED) 's/.*>//'|xargs rm -f
|
||||||
|
|
||||||
|
prof-gen:
|
||||||
|
CCACHE_DISABLE=1 $(MAKE) PROF_FLAGS=-fprofile-generate all
|
||||||
|
|
||||||
|
prof-clean:
|
||||||
|
find . -name \*.lo -o -name \*.o | xargs rm -f
|
||||||
|
find . -name \*.la -o -name \*.a | xargs rm -f
|
||||||
|
find . -name \*.so | xargs rm -f
|
||||||
|
rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_MILTER_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
|
||||||
|
|
||||||
|
prof-use:
|
||||||
|
CCACHE_DISABLE=1 $(MAKE) PROF_FLAGS=-fprofile-use all
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: all clean install distclean test prof-gen prof-clean prof-use
|
||||||
|
.NOEXPORT:
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
core/cfg.lo: /home/sameye/mermsemr/mermsemr/src/core/cfg.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/cfg.cc -o core/cfg.lo
|
||||||
|
core/cgi.lo: /home/sameye/mermsemr/mermsemr/src/core/cgi.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/cgi.cc -o core/cgi.lo
|
||||||
|
core/clog.lo: /home/sameye/mermsemr/mermsemr/src/core/clog.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/clog.cc -o core/clog.lo
|
||||||
|
core/cvariables.lo: /home/sameye/mermsemr/mermsemr/src/core/cvariables.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/cvariables.cc -o core/cvariables.lo
|
||||||
|
core/exceptions.lo: /home/sameye/mermsemr/mermsemr/src/core/exceptions.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/exceptions.cc -o core/exceptions.lo
|
||||||
|
core/hmac_sha2.lo: /home/sameye/mermsemr/mermsemr/src/core/hmac_sha2.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/hmac_sha2.cc -o core/hmac_sha2.lo
|
||||||
|
core/input.lo: /home/sameye/mermsemr/mermsemr/src/core/input.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/input.cc -o core/input.lo
|
||||||
|
core/list.lo: /home/sameye/mermsemr/mermsemr/src/core/list.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/list.cc -o core/list.lo
|
||||||
|
core/mermsemr.lo: /home/sameye/mermsemr/mermsemr/src/core/mermsemr.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/mermsemr.cc -o core/mermsemr.lo
|
||||||
|
core/mermsemr_api.lo: /home/sameye/mermsemr/mermsemr/src/core/mermsemr_api.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/mermsemr_api.cc -o core/mermsemr_api.lo
|
||||||
|
core/pgsql.lo: /home/sameye/mermsemr/mermsemr/src/core/pgsql.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/pgsql.cc -o core/pgsql.lo
|
||||||
|
core/pgsql_wrapper.lo: /home/sameye/mermsemr/mermsemr/src/core/pgsql_wrapper.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/pgsql_wrapper.cc -o core/pgsql_wrapper.lo
|
||||||
|
core/safestring.lo: /home/sameye/mermsemr/mermsemr/src/core/safestring.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/safestring.cc -o core/safestring.lo
|
||||||
|
core/sha2.lo: /home/sameye/mermsemr/mermsemr/src/core/sha2.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/sha2.cc -o core/sha2.lo
|
||||||
|
core/sha512.lo: /home/sameye/mermsemr/mermsemr/src/core/sha512.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/sha512.cc -o core/sha512.lo
|
||||||
|
core/smtp.lo: /home/sameye/mermsemr/mermsemr/src/core/smtp.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/smtp.cc -o core/smtp.lo
|
||||||
|
core/timer.lo: /home/sameye/mermsemr/mermsemr/src/core/timer.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/timer.cc -o core/timer.lo
|
||||||
|
core/util.lo: /home/sameye/mermsemr/mermsemr/src/core/util.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/util.cc -o core/util.lo
|
||||||
|
core/vars.lo: /home/sameye/mermsemr/mermsemr/src/core/vars.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/core/vars.cc -o core/vars.lo
|
||||||
|
shared_tool/creditcards.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/creditcards.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/creditcards.cc -o shared_tool/creditcards.lo
|
||||||
|
shared_tool/function_agents.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_agents.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_agents.cc -o shared_tool/function_agents.lo
|
||||||
|
shared_tool/function_backoffice.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_backoffice.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_backoffice.cc -o shared_tool/function_backoffice.lo
|
||||||
|
shared_tool/function_cron.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_cron.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_cron.cc -o shared_tool/function_cron.lo
|
||||||
|
shared_tool/function_driver.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_driver.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_driver.cc -o shared_tool/function_driver.lo
|
||||||
|
shared_tool/function_invoice.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_invoice.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_invoice.cc -o shared_tool/function_invoice.lo
|
||||||
|
shared_tool/function_members.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_members.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_members.cc -o shared_tool/function_members.lo
|
||||||
|
shared_tool/function_users.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/function_users.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/function_users.cc -o shared_tool/function_users.lo
|
||||||
|
shared_tool/medTEmails.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/medTEmails.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/medTEmails.cc -o shared_tool/medTEmails.lo
|
||||||
|
shared_tool/medTUpload.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/medTUpload.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/medTUpload.cc -o shared_tool/medTUpload.lo
|
||||||
|
shared_tool/medTrBackOffice.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrBackOffice.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrBackOffice.cc -o shared_tool/medTrBackOffice.lo
|
||||||
|
shared_tool/medTrMembers.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrMembers.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrMembers.cc -o shared_tool/medTrMembers.lo
|
||||||
|
shared_tool/medTrTransporter.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrTransporter.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/medTrTransporter.cc -o shared_tool/medTrTransporter.lo
|
||||||
|
shared_tool/mermsemr_api_main.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/mermsemr_api_main.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/mermsemr_api_main.cc -o shared_tool/mermsemr_api_main.lo
|
||||||
|
shared_tool/payments.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/payments.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/payments.cc -o shared_tool/payments.lo
|
||||||
|
shared_tool/stripe.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/stripe.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/stripe.cc -o shared_tool/stripe.lo
|
||||||
|
shared_tool/stripe_charge.lo: /home/sameye/mermsemr/mermsemr/src/shared_tool/stripe_charge.cc
|
||||||
|
$(LIBTOOL) --mode=compile $(CXX) -I/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1 -I. -I/home/sameye/mermsemr/mermsemr/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/sameye/mermsemr/mermsemr/src/shared_tool/stripe_charge.cc -o shared_tool/stripe_charge.lo
|
||||||
|
$(phplibdir)/mermsemr_api_sameye.la: ./mermsemr_api_sameye.la
|
||||||
|
$(LIBTOOL) --mode=install cp ./mermsemr_api_sameye.la $(phplibdir)
|
||||||
|
|
||||||
|
./mermsemr_api_sameye.la: $(shared_objects_mermsemr_api_sameye) $(MERMSEMR_API_SAMEYE_SHARED_DEPENDENCIES)
|
||||||
|
$(LIBTOOL) --mode=link $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_mermsemr_api_sameye) $(MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
Vendored
+11765
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,78 @@
|
|||||||
|
# This file was generated.
|
||||||
|
# It contains the lists of macros which have been traced.
|
||||||
|
# It can be safely removed.
|
||||||
|
|
||||||
|
@request = (
|
||||||
|
bless( [
|
||||||
|
'0',
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf/autoconf/autoconf.m4f',
|
||||||
|
'aclocal.m4',
|
||||||
|
'configure.in'
|
||||||
|
],
|
||||||
|
{
|
||||||
|
'AM_PROG_F77_C_O' => 1,
|
||||||
|
'_LT_AC_TAGCONFIG' => 1,
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'AC_INIT' => 1,
|
||||||
|
'AC_CANONICAL_TARGET' => 1,
|
||||||
|
'_AM_COND_IF' => 1,
|
||||||
|
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
||||||
|
'AC_SUBST' => 1,
|
||||||
|
'AC_CANONICAL_HOST' => 1,
|
||||||
|
'AC_FC_SRCEXT' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'AC_CONFIG_SUBDIRS' => 1,
|
||||||
|
'AM_PATH_GUILE' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'LT_CONFIG_LTDL_DIR' => 1,
|
||||||
|
'AC_CONFIG_LINKS' => 1,
|
||||||
|
'AC_REQUIRE_AUX_FILE' => 1,
|
||||||
|
'LT_SUPPORTED_TAG' => 1,
|
||||||
|
'm4_sinclude' => 1,
|
||||||
|
'AM_MAINTAINER_MODE' => 1,
|
||||||
|
'AM_NLS' => 1,
|
||||||
|
'AC_FC_PP_DEFINE' => 1,
|
||||||
|
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'AM_MAKEFILE_INCLUDE' => 1,
|
||||||
|
'AM_PROG_CXX_C_O' => 1,
|
||||||
|
'_AM_MAKEFILE_INCLUDE' => 1,
|
||||||
|
'_AM_COND_ENDIF' => 1,
|
||||||
|
'AM_ENABLE_MULTILIB' => 1,
|
||||||
|
'AM_SILENT_RULES' => 1,
|
||||||
|
'AM_PROG_MOC' => 1,
|
||||||
|
'AC_CONFIG_FILES' => 1,
|
||||||
|
'LT_INIT' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'AM_GNU_GETTEXT' => 1,
|
||||||
|
'AM_PROG_AR' => 1,
|
||||||
|
'AC_LIBSOURCE' => 1,
|
||||||
|
'AC_CANONICAL_BUILD' => 1,
|
||||||
|
'AM_PROG_FC_C_O' => 1,
|
||||||
|
'AC_FC_FREEFORM' => 1,
|
||||||
|
'AC_FC_PP_SRCEXT' => 1,
|
||||||
|
'AH_OUTPUT' => 1,
|
||||||
|
'AC_CONFIG_AUX_DIR' => 1,
|
||||||
|
'_AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'AM_PROG_CC_C_O' => 1,
|
||||||
|
'sinclude' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'AC_CANONICAL_SYSTEM' => 1,
|
||||||
|
'AM_XGETTEXT_OPTION' => 1,
|
||||||
|
'AC_CONFIG_HEADERS' => 1,
|
||||||
|
'AC_DEFINE_TRACE_LITERAL' => 1,
|
||||||
|
'AM_POT_TOOLS' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'_AM_COND_ELSE' => 1,
|
||||||
|
'AC_SUBST_TRACE' => 1
|
||||||
|
}
|
||||||
|
], 'Autom4te::Request' )
|
||||||
|
);
|
||||||
|
|
||||||
@@ -0,0 +1,451 @@
|
|||||||
|
m4trace:aclocal.m4:3151: -1- m4_include([build/ax_check_compile_flag.m4])
|
||||||
|
m4trace:configure.in:4: -1- AC_INIT([config.m4])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_forbid([^_?A[CHUM]_])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_forbid([_AC_])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^AS_FLAGS$])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_forbid([^_?m4_])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_forbid([^dnl$])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_forbid([^_?AS_])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([SHELL])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([SHELL])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^SHELL$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([PATH_SEPARATOR])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PATH_SEPARATOR$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE_NAME])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_NAME$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_VERSION$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE_STRING])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_STRING$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE_URL])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_URL$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([exec_prefix], [NONE])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([exec_prefix])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^exec_prefix$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([prefix], [NONE])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([prefix])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^prefix$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([program_transform_name], [s,x,x,])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([program_transform_name])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^program_transform_name$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([bindir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^bindir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([sbindir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^sbindir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([libexecdir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^libexecdir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([datarootdir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^datarootdir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([datadir], ['${datarootdir}'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([datadir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^datadir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([sysconfdir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^sysconfdir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([sharedstatedir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^sharedstatedir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([localstatedir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^localstatedir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([includedir], ['${prefix}/include'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([includedir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^includedir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([oldincludedir], ['/usr/include'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([oldincludedir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^oldincludedir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
|
||||||
|
['${datarootdir}/doc/${PACKAGE_TARNAME}'],
|
||||||
|
['${datarootdir}/doc/${PACKAGE}'])])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([docdir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^docdir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([infodir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^infodir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([htmldir], ['${docdir}'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([htmldir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^htmldir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([dvidir], ['${docdir}'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([dvidir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^dvidir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([pdfdir], ['${docdir}'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([pdfdir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^pdfdir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([psdir], ['${docdir}'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([psdir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^psdir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([libdir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^libdir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([localedir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^localedir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([mandir])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^mandir$])
|
||||||
|
m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_NAME$])
|
||||||
|
m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
|
||||||
|
@%:@undef PACKAGE_NAME])
|
||||||
|
m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
|
||||||
|
m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
|
||||||
|
@%:@undef PACKAGE_TARNAME])
|
||||||
|
m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_VERSION$])
|
||||||
|
m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
|
||||||
|
@%:@undef PACKAGE_VERSION])
|
||||||
|
m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_STRING$])
|
||||||
|
m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
|
||||||
|
@%:@undef PACKAGE_STRING])
|
||||||
|
m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
|
||||||
|
m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
@%:@undef PACKAGE_BUGREPORT])
|
||||||
|
m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE_URL$])
|
||||||
|
m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
|
||||||
|
@%:@undef PACKAGE_URL])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([DEFS])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([DEFS])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^DEFS$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([ECHO_C])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([ECHO_C])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^ECHO_C$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([ECHO_N])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([ECHO_N])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^ECHO_N$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([ECHO_T])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([ECHO_T])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^ECHO_T$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([LIBS])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([LIBS])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^LIBS$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([build_alias])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([build_alias])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^build_alias$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([host_alias])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([host_alias])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^host_alias$])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST([target_alias])
|
||||||
|
m4trace:configure.in:4: -1- AC_SUBST_TRACE([target_alias])
|
||||||
|
m4trace:configure.in:4: -1- m4_pattern_allow([^target_alias$])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST([GREP])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST_TRACE([GREP])
|
||||||
|
m4trace:configure.in:7: -1- m4_pattern_allow([^GREP$])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST([EGREP])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST_TRACE([EGREP])
|
||||||
|
m4trace:configure.in:7: -1- m4_pattern_allow([^EGREP$])
|
||||||
|
m4trace:configure.in:7: -1- _m4_warn([obsolete], [The macro `LT_AC_PROG_SED' is obsolete.
|
||||||
|
You should run autoupdate.], [aclocal.m4:10925: LT_AC_PROG_SED is expanded from...
|
||||||
|
aclocal.m4:2698: PHP_CONFIG_NICE is expanded from...
|
||||||
|
configure.in:7: the top level])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST([SED])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST_TRACE([SED])
|
||||||
|
m4trace:configure.in:7: -1- m4_pattern_allow([^SED$])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST([EGREP])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST_TRACE([EGREP])
|
||||||
|
m4trace:configure.in:7: -1- m4_pattern_allow([^EGREP$])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST([SED])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST_TRACE([SED])
|
||||||
|
m4trace:configure.in:7: -1- m4_pattern_allow([^SED$])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST([CONFIGURE_COMMAND])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST_TRACE([CONFIGURE_COMMAND])
|
||||||
|
m4trace:configure.in:7: -1- m4_pattern_allow([^CONFIGURE_COMMAND$])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST([CONFIGURE_OPTIONS])
|
||||||
|
m4trace:configure.in:7: -1- AC_SUBST_TRACE([CONFIGURE_OPTIONS])
|
||||||
|
m4trace:configure.in:7: -1- m4_pattern_allow([^CONFIGURE_OPTIONS$])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.in:25: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST([CFLAGS])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST_TRACE([CFLAGS])
|
||||||
|
m4trace:configure.in:25: -1- m4_pattern_allow([^CFLAGS$])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST_TRACE([LDFLAGS])
|
||||||
|
m4trace:configure.in:25: -1- m4_pattern_allow([^LDFLAGS$])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST([LIBS])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST_TRACE([LIBS])
|
||||||
|
m4trace:configure.in:25: -1- m4_pattern_allow([^LIBS$])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST_TRACE([CPPFLAGS])
|
||||||
|
m4trace:configure.in:25: -1- m4_pattern_allow([^CPPFLAGS$])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST([CC])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST_TRACE([CC])
|
||||||
|
m4trace:configure.in:25: -1- m4_pattern_allow([^CC$])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST([ac_ct_CC])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST_TRACE([ac_ct_CC])
|
||||||
|
m4trace:configure.in:25: -1- m4_pattern_allow([^ac_ct_CC$])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST_TRACE([EXEEXT])
|
||||||
|
m4trace:configure.in:25: -1- m4_pattern_allow([^EXEEXT$])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
|
||||||
|
m4trace:configure.in:25: -1- AC_SUBST_TRACE([OBJEXT])
|
||||||
|
m4trace:configure.in:25: -1- m4_pattern_allow([^OBJEXT$])
|
||||||
|
m4trace:configure.in:26: -1- AC_SUBST([CPP])
|
||||||
|
m4trace:configure.in:26: -1- AC_SUBST_TRACE([CPP])
|
||||||
|
m4trace:configure.in:26: -1- m4_pattern_allow([^CPP$])
|
||||||
|
m4trace:configure.in:26: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.in:26: -1- AC_SUBST_TRACE([CPPFLAGS])
|
||||||
|
m4trace:configure.in:26: -1- m4_pattern_allow([^CPPFLAGS$])
|
||||||
|
m4trace:configure.in:26: -1- AC_SUBST([CPP])
|
||||||
|
m4trace:configure.in:26: -1- AC_SUBST_TRACE([CPP])
|
||||||
|
m4trace:configure.in:26: -1- m4_pattern_allow([^CPP$])
|
||||||
|
m4trace:configure.in:28: -1- AC_DEFINE_TRACE_LITERAL([NO_MINUS_C_MINUS_O])
|
||||||
|
m4trace:configure.in:28: -1- m4_pattern_allow([^NO_MINUS_C_MINUS_O$])
|
||||||
|
m4trace:configure.in:28: -1- AH_OUTPUT([NO_MINUS_C_MINUS_O], [/* Define to 1 if your C compiler doesn\'t accept -c and -o together. */
|
||||||
|
@%:@undef NO_MINUS_C_MINUS_O])
|
||||||
|
m4trace:configure.in:34: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
|
||||||
|
You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
|
||||||
|
../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
|
||||||
|
../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
|
||||||
|
aclocal.m4:301: PHP_RUNPATH_SWITCH is expanded from...
|
||||||
|
configure.in:34: the top level])
|
||||||
|
m4trace:configure.in:34: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
|
||||||
|
You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
|
||||||
|
../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
|
||||||
|
../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from...
|
||||||
|
aclocal.m4:301: PHP_RUNPATH_SWITCH is expanded from...
|
||||||
|
configure.in:34: the top level])
|
||||||
|
m4trace:configure.in:35: -1- AC_CANONICAL_HOST
|
||||||
|
m4trace:configure.in:35: -1- AC_CANONICAL_BUILD
|
||||||
|
m4trace:configure.in:35: -1- AC_REQUIRE_AUX_FILE([config.sub])
|
||||||
|
m4trace:configure.in:35: -1- AC_REQUIRE_AUX_FILE([config.guess])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([build], [$ac_cv_build])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([build])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^build$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([build_cpu], [$[1]])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([build_cpu])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^build_cpu$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([build_vendor], [$[2]])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([build_vendor])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^build_vendor$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([build_os])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([build_os])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^build_os$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([host], [$ac_cv_host])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([host])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^host$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([host_cpu], [$[1]])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([host_cpu])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^host_cpu$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([host_vendor], [$[2]])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([host_vendor])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^host_vendor$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([host_os])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([host_os])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^host_os$])
|
||||||
|
m4trace:configure.in:35: -1- AC_CANONICAL_TARGET
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([target], [$ac_cv_target])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([target])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^target$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([target_cpu], [$[1]])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([target_cpu])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^target_cpu$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([target_vendor], [$[2]])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([target_vendor])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^target_vendor$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([target_os])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([target_os])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^target_os$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([SHLIB_SUFFIX_NAME])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([SHLIB_SUFFIX_NAME])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^SHLIB_SUFFIX_NAME$])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST([SHLIB_DL_SUFFIX_NAME])
|
||||||
|
m4trace:configure.in:35: -1- AC_SUBST_TRACE([SHLIB_DL_SUFFIX_NAME])
|
||||||
|
m4trace:configure.in:35: -1- m4_pattern_allow([^SHLIB_DL_SUFFIX_NAME$])
|
||||||
|
m4trace:configure.in:133: -1- AC_SUBST([RE2C])
|
||||||
|
m4trace:configure.in:133: -1- AC_SUBST_TRACE([RE2C])
|
||||||
|
m4trace:configure.in:133: -1- m4_pattern_allow([^RE2C$])
|
||||||
|
m4trace:configure.in:134: -1- AC_SUBST([AWK])
|
||||||
|
m4trace:configure.in:134: -1- AC_SUBST_TRACE([AWK])
|
||||||
|
m4trace:configure.in:134: -1- m4_pattern_allow([^AWK$])
|
||||||
|
m4trace:configure.in:136: -1- sinclude([config.m4])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST([CXX])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST_TRACE([CXX])
|
||||||
|
m4trace:config.m4:6: -1- m4_pattern_allow([^CXX$])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST([CXXFLAGS])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST_TRACE([CXXFLAGS])
|
||||||
|
m4trace:config.m4:6: -1- m4_pattern_allow([^CXXFLAGS$])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST([LDFLAGS])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST_TRACE([LDFLAGS])
|
||||||
|
m4trace:config.m4:6: -1- m4_pattern_allow([^LDFLAGS$])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST([LIBS])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST_TRACE([LIBS])
|
||||||
|
m4trace:config.m4:6: -1- m4_pattern_allow([^LIBS$])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST_TRACE([CPPFLAGS])
|
||||||
|
m4trace:config.m4:6: -1- m4_pattern_allow([^CPPFLAGS$])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST([CXX])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST_TRACE([CXX])
|
||||||
|
m4trace:config.m4:6: -1- m4_pattern_allow([^CXX$])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST([ac_ct_CXX])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST_TRACE([ac_ct_CXX])
|
||||||
|
m4trace:config.m4:6: -1- m4_pattern_allow([^ac_ct_CXX$])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST([CXXCPP])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST_TRACE([CXXCPP])
|
||||||
|
m4trace:config.m4:6: -1- m4_pattern_allow([^CXXCPP$])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST_TRACE([CPPFLAGS])
|
||||||
|
m4trace:config.m4:6: -1- m4_pattern_allow([^CPPFLAGS$])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST([CXXCPP])
|
||||||
|
m4trace:config.m4:6: -1- AC_SUBST_TRACE([CXXCPP])
|
||||||
|
m4trace:config.m4:6: -1- m4_pattern_allow([^CXXCPP$])
|
||||||
|
m4trace:config.m4:23: -1- AC_DEFINE_TRACE_LITERAL([COMPILE_DL_MERMSEMR_API_SAMEYE])
|
||||||
|
m4trace:config.m4:23: -1- m4_pattern_allow([^COMPILE_DL_MERMSEMR_API_SAMEYE$])
|
||||||
|
m4trace:config.m4:23: -1- AH_OUTPUT([COMPILE_DL_MERMSEMR_API_SAMEYE], [/* Whether to build mermsemr_api_sameye as dynamic module */
|
||||||
|
@%:@undef COMPILE_DL_MERMSEMR_API_SAMEYE])
|
||||||
|
m4trace:configure.in:149: -1- AC_PROG_LIBTOOL
|
||||||
|
m4trace:configure.in:149: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
|
||||||
|
You should run autoupdate.], [aclocal.m4:3258: AC_PROG_LIBTOOL is expanded from...
|
||||||
|
configure.in:149: the top level])
|
||||||
|
m4trace:configure.in:149: -1- LT_INIT
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
|
||||||
|
m4trace:configure.in:149: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([LIBTOOL])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([LIBTOOL])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^LIBTOOL$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([SED])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([SED])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^SED$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([FGREP])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([FGREP])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^FGREP$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([GREP])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([GREP])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^GREP$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([LD])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([LD])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^LD$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([DUMPBIN])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([DUMPBIN])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^DUMPBIN$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([ac_ct_DUMPBIN])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([DUMPBIN])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([DUMPBIN])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^DUMPBIN$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([NM])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([NM])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^NM$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([LN_S], [$as_ln_s])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([LN_S])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^LN_S$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([OBJDUMP])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([OBJDUMP])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^OBJDUMP$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([OBJDUMP])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([OBJDUMP])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^OBJDUMP$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([DLLTOOL])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([DLLTOOL])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^DLLTOOL$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([DLLTOOL])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([DLLTOOL])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^DLLTOOL$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([AR])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([AR])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^AR$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([ac_ct_AR])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([ac_ct_AR])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^ac_ct_AR$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([STRIP])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([STRIP])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^STRIP$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([RANLIB])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([RANLIB])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^RANLIB$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([AWK])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([AWK])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^AWK$])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([LT_OBJDIR])
|
||||||
|
m4trace:configure.in:149: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^LT_OBJDIR$])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||||
|
*/
|
||||||
|
@%:@undef LT_OBJDIR])
|
||||||
|
m4trace:configure.in:149: -1- LT_SUPPORTED_TAG([CC])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([MANIFEST_TOOL])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^MANIFEST_TOOL$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([DSYMUTIL])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([DSYMUTIL])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^DSYMUTIL$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([NMEDIT])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([NMEDIT])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^NMEDIT$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([LIPO])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([LIPO])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^LIPO$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([OTOOL])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([OTOOL])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^OTOOL$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([OTOOL64])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([OTOOL64])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^OTOOL64$])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
@%:@undef HAVE_DLFCN_H])
|
||||||
|
m4trace:configure.in:149: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^STDC_HEADERS$])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
@%:@undef STDC_HEADERS])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
@%:@undef HAVE_SYS_TYPES_H])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
@%:@undef HAVE_SYS_STAT_H])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
@%:@undef HAVE_STDLIB_H])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
@%:@undef HAVE_STRING_H])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
@%:@undef HAVE_MEMORY_H])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
@%:@undef HAVE_STRINGS_H])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
@%:@undef HAVE_INTTYPES_H])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
@%:@undef HAVE_STDINT_H])
|
||||||
|
m4trace:configure.in:149: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
@%:@undef HAVE_UNISTD_H])
|
||||||
|
m4trace:configure.in:149: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
|
||||||
|
m4trace:configure.in:149: -1- LT_SUPPORTED_TAG([CXX])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([CXXCPP])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([CXXCPP])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^CXXCPP$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([CPPFLAGS])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([CPPFLAGS])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^CPPFLAGS$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([CXXCPP])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([CXXCPP])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^CXXCPP$])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST([LD])
|
||||||
|
m4trace:configure.in:149: -1- AC_SUBST_TRACE([LD])
|
||||||
|
m4trace:configure.in:149: -1- m4_pattern_allow([^LD$])
|
||||||
|
m4trace:configure.in:199: -1- AC_CONFIG_HEADERS([config.h])
|
||||||
|
m4trace:configure.in:201: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
|
||||||
|
m4trace:configure.in:201: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
|
||||||
|
m4trace:configure.in:201: -1- m4_pattern_allow([^LIB@&t@OBJS$])
|
||||||
|
m4trace:configure.in:201: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
|
||||||
|
m4trace:configure.in:201: -1- AC_SUBST_TRACE([LTLIBOBJS])
|
||||||
|
m4trace:configure.in:201: -1- m4_pattern_allow([^LTLIBOBJS$])
|
||||||
|
m4trace:configure.in:201: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# ===========================================================================
|
||||||
|
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||||
|
# ===========================================================================
|
||||||
|
#
|
||||||
|
# SYNOPSIS
|
||||||
|
#
|
||||||
|
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||||
|
#
|
||||||
|
# DESCRIPTION
|
||||||
|
#
|
||||||
|
# Check whether the given FLAG works with the current language's compiler
|
||||||
|
# or gives an error. (Warnings, however, are ignored)
|
||||||
|
#
|
||||||
|
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||||
|
# success/failure.
|
||||||
|
#
|
||||||
|
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||||
|
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||||
|
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||||
|
# force the compiler to issue an error when a bad flag is given.
|
||||||
|
#
|
||||||
|
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
||||||
|
#
|
||||||
|
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||||
|
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||||
|
#
|
||||||
|
# LICENSE
|
||||||
|
#
|
||||||
|
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||||
|
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License as published by the
|
||||||
|
# Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
# option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||||
|
# Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along
|
||||||
|
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||||
|
# gives unlimited permission to copy, distribute and modify the configure
|
||||||
|
# scripts that are the output of Autoconf when processing the Macro. You
|
||||||
|
# need not follow the terms of the GNU General Public License when using
|
||||||
|
# or distributing such scripts, even though portions of the text of the
|
||||||
|
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||||
|
# all other use of the material that constitutes the Autoconf Macro.
|
||||||
|
#
|
||||||
|
# This special exception to the GPL applies to versions of the Autoconf
|
||||||
|
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||||
|
# modified version of the Autoconf Macro, you may extend this special
|
||||||
|
# exception to the GPL to apply to your modified version as well.
|
||||||
|
|
||||||
|
#serial 4
|
||||||
|
|
||||||
|
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||||
|
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||||
|
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||||
|
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||||
|
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||||
|
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||||
|
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||||
|
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||||
|
[AS_VAR_SET(CACHEVAR,[no])])
|
||||||
|
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||||
|
AS_VAR_IF(CACHEVAR,yes,
|
||||||
|
[m4_default([$2], :)],
|
||||||
|
[m4_default([$3], :)])
|
||||||
|
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||||
|
])dnl AX_CHECK_COMPILE_FLAGS
|
||||||
Vendored
+8614
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,75 @@
|
|||||||
|
# +----------------------------------------------------------------------+
|
||||||
|
# | PHP Version 7 |
|
||||||
|
# +----------------------------------------------------------------------+
|
||||||
|
# | Copyright (c) 2000-2006 The PHP Group |
|
||||||
|
# +----------------------------------------------------------------------+
|
||||||
|
# | This source file is subject to version 3.01 of the PHP license, |
|
||||||
|
# | that is bundled with this package in the file LICENSE, and is |
|
||||||
|
# | available through the world-wide-web at the following url: |
|
||||||
|
# | http://www.php.net/license/3_01.txt |
|
||||||
|
# | If you did not receive a copy of the PHP license and are unable to |
|
||||||
|
# | obtain it through the world-wide-web, please send a note to |
|
||||||
|
# | license@php.net so we can mail you a copy immediately. |
|
||||||
|
# +----------------------------------------------------------------------+
|
||||||
|
# | Author: Sascha Schumann <sascha@schumann.cx> |
|
||||||
|
# +----------------------------------------------------------------------+
|
||||||
|
#
|
||||||
|
# $Id$
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
#
|
||||||
|
# echo top_srcdir top_builddir srcdir CPP [CPP-ARGS] filenames | \
|
||||||
|
# awk -f mkdep.awk > dependencies
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
top_srcdir=$1
|
||||||
|
top_builddir=$2
|
||||||
|
srcdir=$3
|
||||||
|
cmd=$4
|
||||||
|
|
||||||
|
for (i = 5; i <= NF; i++) {
|
||||||
|
if (match($i, "^-[A-Z]") == 0)
|
||||||
|
break;
|
||||||
|
cmd=cmd " " $i
|
||||||
|
}
|
||||||
|
|
||||||
|
dif=i-1
|
||||||
|
|
||||||
|
for (; i <= NF; i++)
|
||||||
|
filenames[i-dif]=$i
|
||||||
|
|
||||||
|
no_files=NF-dif
|
||||||
|
|
||||||
|
for(i = 1; i <= no_files; i++) {
|
||||||
|
if (system("test -r " filenames[i]) != 0)
|
||||||
|
continue
|
||||||
|
|
||||||
|
target=filenames[i]
|
||||||
|
sub(srcdir "/", "", target)
|
||||||
|
target2=target
|
||||||
|
sub("\.(c|cpp)$", ".lo", target);
|
||||||
|
sub("\.(c|cpp)$", ".slo", target2);
|
||||||
|
|
||||||
|
for (e in used)
|
||||||
|
delete used[e]
|
||||||
|
|
||||||
|
cmdx=cmd " " filenames[i]
|
||||||
|
done=0
|
||||||
|
while ((cmdx | getline) > 0) {
|
||||||
|
if (match($0, "^# [0-9]* \".*\.h\"") != 0) {
|
||||||
|
if (sub(top_srcdir, "$(top_srcdir)", $3) == 0)
|
||||||
|
sub(top_builddir, "$(top_builddir)", $3)
|
||||||
|
if (substr($3,2,1) != "/" && used[$3] != 1) {
|
||||||
|
if (done == 0)
|
||||||
|
printf(target " " target2 ":")
|
||||||
|
done=1
|
||||||
|
printf(" \\\n\t" substr($3,2,length($3)-2))
|
||||||
|
used[$3] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (done == 1)
|
||||||
|
print "\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
BEGIN {
|
||||||
|
mode=0
|
||||||
|
sources=""
|
||||||
|
}
|
||||||
|
|
||||||
|
mode == 0 && /^LTLIBRARY_SOURCES.*\\$/ {
|
||||||
|
if (match($0, "[^=]*$")) {
|
||||||
|
sources=substr($0, RSTART, RLENGTH-1)
|
||||||
|
}
|
||||||
|
mode=1
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
|
mode == 0 && /^LTLIBRARY_SOURCES.*/ {
|
||||||
|
if (match($0, "[^=]*$")) {
|
||||||
|
sources=substr($0, RSTART, RLENGTH)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mode == 1 && /.*\\$/ {
|
||||||
|
sources=sources substr($0, 0, length - 1)
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
|
mode == 1 {
|
||||||
|
sources=sources $0
|
||||||
|
mode=0
|
||||||
|
}
|
||||||
|
|
||||||
|
END {
|
||||||
|
print sources
|
||||||
|
}
|
||||||
Executable
+1814
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,20 @@
|
|||||||
|
/* confdefs.h */
|
||||||
|
#define PACKAGE_NAME ""
|
||||||
|
#define PACKAGE_TARNAME ""
|
||||||
|
#define PACKAGE_VERSION ""
|
||||||
|
#define PACKAGE_STRING ""
|
||||||
|
#define PACKAGE_BUGREPORT ""
|
||||||
|
#define PACKAGE_URL ""
|
||||||
|
#define COMPILE_DL_MERMSEMR_API_SAMEYE 1
|
||||||
|
#define STDC_HEADERS 1
|
||||||
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
#define HAVE_SYS_STAT_H 1
|
||||||
|
#define HAVE_STDLIB_H 1
|
||||||
|
#define HAVE_STRING_H 1
|
||||||
|
#define HAVE_MEMORY_H 1
|
||||||
|
#define HAVE_STRINGS_H 1
|
||||||
|
#define HAVE_INTTYPES_H 1
|
||||||
|
#define HAVE_STDINT_H 1
|
||||||
|
#define HAVE_UNISTD_H 1
|
||||||
|
#define HAVE_DLFCN_H 1
|
||||||
|
#define LT_OBJDIR ".libs/"
|
||||||
+1558
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,63 @@
|
|||||||
|
/* config.h. Generated from config.h.in by configure. */
|
||||||
|
/* config.h.in. Generated from configure.in by autoheader. */
|
||||||
|
|
||||||
|
/* Whether to build mermsemr_api_sameye as dynamic module */
|
||||||
|
#define COMPILE_DL_MERMSEMR_API_SAMEYE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#define HAVE_DLFCN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#define HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#define HAVE_MEMORY_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#define HAVE_STDINT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#define HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#define HAVE_STRINGS_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#define HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#define HAVE_SYS_STAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#define HAVE_UNISTD_H 1
|
||||||
|
|
||||||
|
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||||
|
*/
|
||||||
|
#define LT_OBJDIR ".libs/"
|
||||||
|
|
||||||
|
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||||
|
/* #undef NO_MINUS_C_MINUS_O */
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#define PACKAGE_BUGREPORT ""
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#define PACKAGE_NAME ""
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#define PACKAGE_STRING ""
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#define PACKAGE_TARNAME ""
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#define PACKAGE_URL ""
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#define PACKAGE_VERSION ""
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#define STDC_HEADERS 1
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
/* config.h.in. Generated from configure.in by autoheader. */
|
||||||
|
|
||||||
|
/* Whether to build mermsemr_api_sameye as dynamic module */
|
||||||
|
#undef COMPILE_DL_MERMSEMR_API_SAMEYE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||||
|
*/
|
||||||
|
#undef LT_OBJDIR
|
||||||
|
|
||||||
|
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||||
|
#undef NO_MINUS_C_MINUS_O
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#undef PACKAGE_URL
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
/* config.h.in. Generated from configure.in by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||||
|
*/
|
||||||
|
#undef LT_OBJDIR
|
||||||
|
|
||||||
|
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||||
|
#undef NO_MINUS_C_MINUS_O
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#undef PACKAGE_URL
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
@@ -0,0 +1,760 @@
|
|||||||
|
This file contains any messages produced by compilers while
|
||||||
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
|
It was created by configure, which was
|
||||||
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
|
$ ./configure
|
||||||
|
|
||||||
|
## --------- ##
|
||||||
|
## Platform. ##
|
||||||
|
## --------- ##
|
||||||
|
|
||||||
|
hostname = merms-ehr-dev
|
||||||
|
uname -m = x86_64
|
||||||
|
uname -r = 3.10.0-957.1.3.el7.x86_64
|
||||||
|
uname -s = Linux
|
||||||
|
uname -v = #1 SMP Thu Nov 29 14:49:43 UTC 2018
|
||||||
|
|
||||||
|
/usr/bin/uname -p = x86_64
|
||||||
|
/bin/uname -X = unknown
|
||||||
|
|
||||||
|
/bin/arch = x86_64
|
||||||
|
/usr/bin/arch -k = unknown
|
||||||
|
/usr/convex/getsysinfo = unknown
|
||||||
|
/usr/bin/hostinfo = unknown
|
||||||
|
/bin/machine = unknown
|
||||||
|
/usr/bin/oslevel = unknown
|
||||||
|
/bin/universe = unknown
|
||||||
|
|
||||||
|
PATH: /usr/local/bin
|
||||||
|
PATH: /usr/bin
|
||||||
|
PATH: /usr/local/sbin
|
||||||
|
PATH: /usr/sbin
|
||||||
|
PATH: /home/sameye/.local/bin
|
||||||
|
PATH: /home/sameye/bin
|
||||||
|
|
||||||
|
|
||||||
|
## ----------- ##
|
||||||
|
## Core tests. ##
|
||||||
|
## ----------- ##
|
||||||
|
|
||||||
|
configure:2209: checking for grep that handles long lines and -e
|
||||||
|
configure:2267: result: /usr/bin/grep
|
||||||
|
configure:2272: checking for egrep
|
||||||
|
configure:2334: result: /usr/bin/grep -E
|
||||||
|
configure:2339: checking for a sed that does not truncate output
|
||||||
|
configure:2403: result: /usr/bin/sed
|
||||||
|
configure:2542: checking for cc
|
||||||
|
configure:2558: found /usr/bin/cc
|
||||||
|
configure:2569: result: cc
|
||||||
|
configure:2600: checking for C compiler version
|
||||||
|
configure:2609: cc --version >&5
|
||||||
|
cc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
|
||||||
|
Copyright (C) 2015 Free Software Foundation, Inc.
|
||||||
|
This is free software; see the source for copying conditions. There is NO
|
||||||
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
configure:2620: $? = 0
|
||||||
|
configure:2609: cc -v >&5
|
||||||
|
Using built-in specs.
|
||||||
|
COLLECT_GCC=cc
|
||||||
|
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
|
||||||
|
Target: x86_64-redhat-linux
|
||||||
|
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
|
||||||
|
Thread model: posix
|
||||||
|
gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
|
||||||
|
configure:2620: $? = 0
|
||||||
|
configure:2609: cc -V >&5
|
||||||
|
cc: error: unrecognized command line option '-V'
|
||||||
|
cc: fatal error: no input files
|
||||||
|
compilation terminated.
|
||||||
|
configure:2620: $? = 4
|
||||||
|
configure:2609: cc -qversion >&5
|
||||||
|
cc: error: unrecognized command line option '-qversion'
|
||||||
|
cc: fatal error: no input files
|
||||||
|
compilation terminated.
|
||||||
|
configure:2620: $? = 4
|
||||||
|
configure:2640: checking whether the C compiler works
|
||||||
|
configure:2662: cc conftest.c >&5
|
||||||
|
configure:2666: $? = 0
|
||||||
|
configure:2714: result: yes
|
||||||
|
configure:2717: checking for C compiler default output file name
|
||||||
|
configure:2719: result: a.out
|
||||||
|
configure:2725: checking for suffix of executables
|
||||||
|
configure:2732: cc -o conftest conftest.c >&5
|
||||||
|
configure:2736: $? = 0
|
||||||
|
configure:2758: result:
|
||||||
|
configure:2780: checking whether we are cross compiling
|
||||||
|
configure:2788: cc -o conftest conftest.c >&5
|
||||||
|
configure:2792: $? = 0
|
||||||
|
configure:2799: ./conftest
|
||||||
|
configure:2803: $? = 0
|
||||||
|
configure:2818: result: no
|
||||||
|
configure:2823: checking for suffix of object files
|
||||||
|
configure:2845: cc -c conftest.c >&5
|
||||||
|
configure:2849: $? = 0
|
||||||
|
configure:2870: result: o
|
||||||
|
configure:2874: checking whether we are using the GNU C compiler
|
||||||
|
configure:2893: cc -c conftest.c >&5
|
||||||
|
configure:2893: $? = 0
|
||||||
|
configure:2902: result: yes
|
||||||
|
configure:2911: checking whether cc accepts -g
|
||||||
|
configure:2931: cc -c -g conftest.c >&5
|
||||||
|
configure:2931: $? = 0
|
||||||
|
configure:2972: result: yes
|
||||||
|
configure:2989: checking for cc option to accept ISO C89
|
||||||
|
configure:3052: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:3052: $? = 0
|
||||||
|
configure:3065: result: none needed
|
||||||
|
configure:3091: checking how to run the C preprocessor
|
||||||
|
configure:3122: cc -E conftest.c
|
||||||
|
configure:3122: $? = 0
|
||||||
|
configure:3136: cc -E conftest.c
|
||||||
|
conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
|
||||||
|
#include <ac_nonexistent.h>
|
||||||
|
^
|
||||||
|
compilation terminated.
|
||||||
|
configure:3136: $? = 1
|
||||||
|
configure: failed program was:
|
||||||
|
| /* confdefs.h */
|
||||||
|
| #define PACKAGE_NAME ""
|
||||||
|
| #define PACKAGE_TARNAME ""
|
||||||
|
| #define PACKAGE_VERSION ""
|
||||||
|
| #define PACKAGE_STRING ""
|
||||||
|
| #define PACKAGE_BUGREPORT ""
|
||||||
|
| #define PACKAGE_URL ""
|
||||||
|
| /* end confdefs.h. */
|
||||||
|
| #include <ac_nonexistent.h>
|
||||||
|
configure:3161: result: cc -E
|
||||||
|
configure:3181: cc -E conftest.c
|
||||||
|
configure:3181: $? = 0
|
||||||
|
configure:3195: cc -E conftest.c
|
||||||
|
conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
|
||||||
|
#include <ac_nonexistent.h>
|
||||||
|
^
|
||||||
|
compilation terminated.
|
||||||
|
configure:3195: $? = 1
|
||||||
|
configure: failed program was:
|
||||||
|
| /* confdefs.h */
|
||||||
|
| #define PACKAGE_NAME ""
|
||||||
|
| #define PACKAGE_TARNAME ""
|
||||||
|
| #define PACKAGE_VERSION ""
|
||||||
|
| #define PACKAGE_STRING ""
|
||||||
|
| #define PACKAGE_BUGREPORT ""
|
||||||
|
| #define PACKAGE_URL ""
|
||||||
|
| /* end confdefs.h. */
|
||||||
|
| #include <ac_nonexistent.h>
|
||||||
|
configure:3226: checking for icc
|
||||||
|
configure:3235: result: no
|
||||||
|
configure:3249: checking for suncc
|
||||||
|
configure:3258: result: no
|
||||||
|
configure:3276: checking whether cc understands -c and -o together
|
||||||
|
configure:3304: cc -c conftest.c -o conftest2.o >&5
|
||||||
|
configure:3308: $? = 0
|
||||||
|
configure:3314: cc -c conftest.c -o conftest2.o >&5
|
||||||
|
configure:3318: $? = 0
|
||||||
|
configure:3373: result: yes
|
||||||
|
configure:3387: checking for system library directory
|
||||||
|
configure:3402: result: lib
|
||||||
|
configure:3409: checking if compiler supports -R
|
||||||
|
configure:3428: cc -o conftest -g -O2 conftest.c -R /usr/lib >&5
|
||||||
|
cc: error: unrecognized command line option '-R'
|
||||||
|
configure:3428: $? = 1
|
||||||
|
configure: failed program was:
|
||||||
|
| /* confdefs.h */
|
||||||
|
| #define PACKAGE_NAME ""
|
||||||
|
| #define PACKAGE_TARNAME ""
|
||||||
|
| #define PACKAGE_VERSION ""
|
||||||
|
| #define PACKAGE_STRING ""
|
||||||
|
| #define PACKAGE_BUGREPORT ""
|
||||||
|
| #define PACKAGE_URL ""
|
||||||
|
| /* end confdefs.h. */
|
||||||
|
|
|
||||||
|
| int
|
||||||
|
| main ()
|
||||||
|
| {
|
||||||
|
|
|
||||||
|
| ;
|
||||||
|
| return 0;
|
||||||
|
| }
|
||||||
|
configure:3438: result: no
|
||||||
|
configure:3443: checking if compiler supports -Wl,-rpath,
|
||||||
|
configure:3462: cc -o conftest -g -O2 conftest.c -Wl,-rpath,/usr/lib >&5
|
||||||
|
configure:3462: $? = 0
|
||||||
|
configure:3472: result: yes
|
||||||
|
configure:3517: checking build system type
|
||||||
|
configure:3531: result: x86_64-unknown-linux-gnu
|
||||||
|
configure:3551: checking host system type
|
||||||
|
configure:3564: result: x86_64-unknown-linux-gnu
|
||||||
|
configure:3584: checking target system type
|
||||||
|
configure:3597: result: x86_64-unknown-linux-gnu
|
||||||
|
configure:3700: checking for PHP prefix
|
||||||
|
configure:3702: result: /usr
|
||||||
|
configure:3704: checking for PHP includes
|
||||||
|
configure:3706: result: -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib
|
||||||
|
configure:3708: checking for PHP extension directory
|
||||||
|
configure:3710: result: /usr/lib64/php/modules
|
||||||
|
configure:3712: checking for PHP installed headers prefix
|
||||||
|
configure:3714: result: /usr/include/php
|
||||||
|
configure:3717: checking if debug is enabled
|
||||||
|
configure:3743: result: no
|
||||||
|
configure:3746: checking if zts is enabled
|
||||||
|
configure:3772: result: no
|
||||||
|
configure:3843: checking for re2c
|
||||||
|
configure:3873: result: no
|
||||||
|
configure:3898: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
|
||||||
|
configure:3912: checking for gawk
|
||||||
|
configure:3929: found /usr/bin/gawk
|
||||||
|
configure:3940: result: gawk
|
||||||
|
configure:3983: checking Whether to enable the "mermsemr_api_sameye" extension
|
||||||
|
configure:4022: result: yes, shared
|
||||||
|
configure:4089: checking for g++
|
||||||
|
configure:4105: found /usr/bin/g++
|
||||||
|
configure:4116: result: g++
|
||||||
|
configure:4143: checking for C++ compiler version
|
||||||
|
configure:4152: g++ --version >&5
|
||||||
|
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
|
||||||
|
Copyright (C) 2015 Free Software Foundation, Inc.
|
||||||
|
This is free software; see the source for copying conditions. There is NO
|
||||||
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
configure:4163: $? = 0
|
||||||
|
configure:4152: g++ -v >&5
|
||||||
|
Using built-in specs.
|
||||||
|
COLLECT_GCC=g++
|
||||||
|
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
|
||||||
|
Target: x86_64-redhat-linux
|
||||||
|
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
|
||||||
|
Thread model: posix
|
||||||
|
gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
|
||||||
|
configure:4163: $? = 0
|
||||||
|
configure:4152: g++ -V >&5
|
||||||
|
g++: error: unrecognized command line option '-V'
|
||||||
|
g++: fatal error: no input files
|
||||||
|
compilation terminated.
|
||||||
|
configure:4163: $? = 4
|
||||||
|
configure:4152: g++ -qversion >&5
|
||||||
|
g++: error: unrecognized command line option '-qversion'
|
||||||
|
g++: fatal error: no input files
|
||||||
|
compilation terminated.
|
||||||
|
configure:4163: $? = 4
|
||||||
|
configure:4167: checking whether we are using the GNU C++ compiler
|
||||||
|
configure:4186: g++ -c conftest.cpp >&5
|
||||||
|
configure:4186: $? = 0
|
||||||
|
configure:4195: result: yes
|
||||||
|
configure:4204: checking whether g++ accepts -g
|
||||||
|
configure:4224: g++ -c -g conftest.cpp >&5
|
||||||
|
configure:4224: $? = 0
|
||||||
|
configure:4265: result: yes
|
||||||
|
configure:4293: checking how to run the C++ preprocessor
|
||||||
|
configure:4320: g++ -E conftest.cpp
|
||||||
|
configure:4320: $? = 0
|
||||||
|
configure:4334: g++ -E conftest.cpp
|
||||||
|
conftest.cpp:9:28: fatal error: ac_nonexistent.h: No such file or directory
|
||||||
|
#include <ac_nonexistent.h>
|
||||||
|
^
|
||||||
|
compilation terminated.
|
||||||
|
configure:4334: $? = 1
|
||||||
|
configure: failed program was:
|
||||||
|
| /* confdefs.h */
|
||||||
|
| #define PACKAGE_NAME ""
|
||||||
|
| #define PACKAGE_TARNAME ""
|
||||||
|
| #define PACKAGE_VERSION ""
|
||||||
|
| #define PACKAGE_STRING ""
|
||||||
|
| #define PACKAGE_BUGREPORT ""
|
||||||
|
| #define PACKAGE_URL ""
|
||||||
|
| /* end confdefs.h. */
|
||||||
|
| #include <ac_nonexistent.h>
|
||||||
|
configure:4359: result: g++ -E
|
||||||
|
configure:4379: g++ -E conftest.cpp
|
||||||
|
configure:4379: $? = 0
|
||||||
|
configure:4393: g++ -E conftest.cpp
|
||||||
|
conftest.cpp:9:28: fatal error: ac_nonexistent.h: No such file or directory
|
||||||
|
#include <ac_nonexistent.h>
|
||||||
|
^
|
||||||
|
compilation terminated.
|
||||||
|
configure:4393: $? = 1
|
||||||
|
configure: failed program was:
|
||||||
|
| /* confdefs.h */
|
||||||
|
| #define PACKAGE_NAME ""
|
||||||
|
| #define PACKAGE_TARNAME ""
|
||||||
|
| #define PACKAGE_VERSION ""
|
||||||
|
| #define PACKAGE_STRING ""
|
||||||
|
| #define PACKAGE_BUGREPORT ""
|
||||||
|
| #define PACKAGE_URL ""
|
||||||
|
| /* end confdefs.h. */
|
||||||
|
| #include <ac_nonexistent.h>
|
||||||
|
configure:5164: checking how to print strings
|
||||||
|
configure:5191: result: printf
|
||||||
|
configure:5212: checking for a sed that does not truncate output
|
||||||
|
configure:5276: result: /usr/bin/sed
|
||||||
|
configure:5294: checking for fgrep
|
||||||
|
configure:5356: result: /usr/bin/grep -F
|
||||||
|
configure:5391: checking for ld used by cc
|
||||||
|
configure:5458: result: /usr/bin/ld
|
||||||
|
configure:5465: checking if the linker (/usr/bin/ld) is GNU ld
|
||||||
|
configure:5480: result: yes
|
||||||
|
configure:5492: checking for BSD- or MS-compatible name lister (nm)
|
||||||
|
configure:5541: result: /usr/bin/nm -B
|
||||||
|
configure:5671: checking the name lister (/usr/bin/nm -B) interface
|
||||||
|
configure:5678: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:5681: /usr/bin/nm -B "conftest.o"
|
||||||
|
configure:5684: output
|
||||||
|
0000000000000000 B some_variable
|
||||||
|
configure:5691: result: BSD nm
|
||||||
|
configure:5694: checking whether ln -s works
|
||||||
|
configure:5698: result: yes
|
||||||
|
configure:5706: checking the maximum length of command line arguments
|
||||||
|
configure:5836: result: 1572864
|
||||||
|
configure:5853: checking whether the shell understands some XSI constructs
|
||||||
|
configure:5863: result: yes
|
||||||
|
configure:5867: checking whether the shell understands "+="
|
||||||
|
configure:5873: result: yes
|
||||||
|
configure:5908: checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format
|
||||||
|
configure:5948: result: func_convert_file_noop
|
||||||
|
configure:5955: checking how to convert x86_64-unknown-linux-gnu file names to toolchain format
|
||||||
|
configure:5975: result: func_convert_file_noop
|
||||||
|
configure:5982: checking for /usr/bin/ld option to reload object files
|
||||||
|
configure:5989: result: -r
|
||||||
|
configure:6063: checking for objdump
|
||||||
|
configure:6079: found /usr/bin/objdump
|
||||||
|
configure:6090: result: objdump
|
||||||
|
configure:6122: checking how to recognize dependent libraries
|
||||||
|
configure:6324: result: pass_all
|
||||||
|
configure:6409: checking for dlltool
|
||||||
|
configure:6439: result: no
|
||||||
|
configure:6469: checking how to associate runtime and link libraries
|
||||||
|
configure:6496: result: printf %s\n
|
||||||
|
configure:6556: checking for ar
|
||||||
|
configure:6572: found /usr/bin/ar
|
||||||
|
configure:6583: result: ar
|
||||||
|
configure:6620: checking for archiver @FILE support
|
||||||
|
configure:6637: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:6637: $? = 0
|
||||||
|
configure:6640: ar cru libconftest.a @conftest.lst >&5
|
||||||
|
configure:6643: $? = 0
|
||||||
|
configure:6648: ar cru libconftest.a @conftest.lst >&5
|
||||||
|
ar: conftest.o: No such file or directory
|
||||||
|
configure:6651: $? = 1
|
||||||
|
configure:6663: result: @
|
||||||
|
configure:6721: checking for strip
|
||||||
|
configure:6737: found /usr/bin/strip
|
||||||
|
configure:6748: result: strip
|
||||||
|
configure:6820: checking for ranlib
|
||||||
|
configure:6836: found /usr/bin/ranlib
|
||||||
|
configure:6847: result: ranlib
|
||||||
|
configure:6924: checking for gawk
|
||||||
|
configure:6951: result: gawk
|
||||||
|
configure:6991: checking command to parse /usr/bin/nm -B output from cc object
|
||||||
|
configure:7111: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:7114: $? = 0
|
||||||
|
configure:7118: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm
|
||||||
|
configure:7121: $? = 0
|
||||||
|
configure:7187: cc -o conftest -g -O2 -Wl,-rpath,/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1/.libs/ -L/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1/.libs/ conftest.c conftstm.o >&5
|
||||||
|
configure:7190: $? = 0
|
||||||
|
configure:7228: result: ok
|
||||||
|
configure:7265: checking for sysroot
|
||||||
|
configure:7295: result: no
|
||||||
|
configure:7372: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:7375: $? = 0
|
||||||
|
configure:7551: checking for mt
|
||||||
|
configure:7581: result: no
|
||||||
|
configure:7601: checking if : is a manifest tool
|
||||||
|
configure:7607: : '-?'
|
||||||
|
configure:7615: result: no
|
||||||
|
configure:8252: checking for ANSI C header files
|
||||||
|
configure:8272: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:8272: $? = 0
|
||||||
|
configure:8345: cc -o conftest -g -O2 -Wl,-rpath,/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1/.libs/ -L/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1/.libs/ conftest.c -lconfig++ -lstdc++ >&5
|
||||||
|
configure:8345: $? = 0
|
||||||
|
configure:8345: ./conftest
|
||||||
|
configure:8345: $? = 0
|
||||||
|
configure:8356: result: yes
|
||||||
|
configure:8369: checking for sys/types.h
|
||||||
|
configure:8369: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:8369: $? = 0
|
||||||
|
configure:8369: result: yes
|
||||||
|
configure:8369: checking for sys/stat.h
|
||||||
|
configure:8369: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:8369: $? = 0
|
||||||
|
configure:8369: result: yes
|
||||||
|
configure:8369: checking for stdlib.h
|
||||||
|
configure:8369: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:8369: $? = 0
|
||||||
|
configure:8369: result: yes
|
||||||
|
configure:8369: checking for string.h
|
||||||
|
configure:8369: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:8369: $? = 0
|
||||||
|
configure:8369: result: yes
|
||||||
|
configure:8369: checking for memory.h
|
||||||
|
configure:8369: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:8369: $? = 0
|
||||||
|
configure:8369: result: yes
|
||||||
|
configure:8369: checking for strings.h
|
||||||
|
configure:8369: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:8369: $? = 0
|
||||||
|
configure:8369: result: yes
|
||||||
|
configure:8369: checking for inttypes.h
|
||||||
|
configure:8369: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:8369: $? = 0
|
||||||
|
configure:8369: result: yes
|
||||||
|
configure:8369: checking for stdint.h
|
||||||
|
configure:8369: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:8369: $? = 0
|
||||||
|
configure:8369: result: yes
|
||||||
|
configure:8369: checking for unistd.h
|
||||||
|
configure:8369: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:8369: $? = 0
|
||||||
|
configure:8369: result: yes
|
||||||
|
configure:8383: checking for dlfcn.h
|
||||||
|
configure:8383: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:8383: $? = 0
|
||||||
|
configure:8383: result: yes
|
||||||
|
configure:8600: checking for objdir
|
||||||
|
configure:8615: result: .libs
|
||||||
|
configure:8886: checking if cc supports -fno-rtti -fno-exceptions
|
||||||
|
configure:8904: cc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5
|
||||||
|
cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C [enabled by default]
|
||||||
|
configure:8908: $? = 0
|
||||||
|
configure:8921: result: no
|
||||||
|
configure:9248: checking for cc option to produce PIC
|
||||||
|
configure:9255: result: -fPIC -DPIC
|
||||||
|
configure:9263: checking if cc PIC flag -fPIC -DPIC works
|
||||||
|
configure:9281: cc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5
|
||||||
|
configure:9285: $? = 0
|
||||||
|
configure:9298: result: yes
|
||||||
|
configure:9327: checking if cc static flag -static works
|
||||||
|
configure:9355: result: no
|
||||||
|
configure:9370: checking if cc supports -c -o file.o
|
||||||
|
configure:9391: cc -c -g -O2 -o out/conftest2.o conftest.c >&5
|
||||||
|
configure:9395: $? = 0
|
||||||
|
configure:9417: result: yes
|
||||||
|
configure:9425: checking if cc supports -c -o file.o
|
||||||
|
configure:9472: result: yes
|
||||||
|
configure:9505: checking whether the cc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
|
||||||
|
configure:10658: result: yes
|
||||||
|
configure:10695: checking whether -lc should be explicitly linked in
|
||||||
|
configure:10703: cc -c -g -O2 conftest.c >&5
|
||||||
|
configure:10706: $? = 0
|
||||||
|
configure:10721: cc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /usr/bin/grep -lc \>/dev/null 2\>\&1
|
||||||
|
configure:10724: $? = 0
|
||||||
|
configure:10738: result: no
|
||||||
|
configure:10898: checking dynamic linker characteristics
|
||||||
|
configure:11409: cc -o conftest -g -O2 -Wl,-rpath,/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1/.libs/ -L/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1/.libs/ -Wl,-rpath -Wl,/foo conftest.c -lconfig++ -lstdc++ >&5
|
||||||
|
configure:11409: $? = 0
|
||||||
|
configure:11635: result: GNU/Linux ld.so
|
||||||
|
configure:11742: checking how to hardcode library paths into programs
|
||||||
|
configure:11767: result: immediate
|
||||||
|
configure:12307: checking whether stripping libraries is possible
|
||||||
|
configure:12312: result: yes
|
||||||
|
configure:12347: checking if libtool supports shared libraries
|
||||||
|
configure:12349: result: yes
|
||||||
|
configure:12352: checking whether to build shared libraries
|
||||||
|
configure:12373: result: yes
|
||||||
|
configure:12376: checking whether to build static libraries
|
||||||
|
configure:12380: result: no
|
||||||
|
configure:12403: checking how to run the C++ preprocessor
|
||||||
|
configure:12469: result: g++ -E
|
||||||
|
configure:12489: g++ -E conftest.cpp
|
||||||
|
configure:12489: $? = 0
|
||||||
|
configure:12503: g++ -E conftest.cpp
|
||||||
|
conftest.cpp:22:28: fatal error: ac_nonexistent.h: No such file or directory
|
||||||
|
#include <ac_nonexistent.h>
|
||||||
|
^
|
||||||
|
compilation terminated.
|
||||||
|
configure:12503: $? = 1
|
||||||
|
configure: failed program was:
|
||||||
|
| /* confdefs.h */
|
||||||
|
| #define PACKAGE_NAME ""
|
||||||
|
| #define PACKAGE_TARNAME ""
|
||||||
|
| #define PACKAGE_VERSION ""
|
||||||
|
| #define PACKAGE_STRING ""
|
||||||
|
| #define PACKAGE_BUGREPORT ""
|
||||||
|
| #define PACKAGE_URL ""
|
||||||
|
| #define COMPILE_DL_MERMSEMR_API_SAMEYE 1
|
||||||
|
| #define STDC_HEADERS 1
|
||||||
|
| #define HAVE_SYS_TYPES_H 1
|
||||||
|
| #define HAVE_SYS_STAT_H 1
|
||||||
|
| #define HAVE_STDLIB_H 1
|
||||||
|
| #define HAVE_STRING_H 1
|
||||||
|
| #define HAVE_MEMORY_H 1
|
||||||
|
| #define HAVE_STRINGS_H 1
|
||||||
|
| #define HAVE_INTTYPES_H 1
|
||||||
|
| #define HAVE_STDINT_H 1
|
||||||
|
| #define HAVE_UNISTD_H 1
|
||||||
|
| #define HAVE_DLFCN_H 1
|
||||||
|
| #define LT_OBJDIR ".libs/"
|
||||||
|
| /* end confdefs.h. */
|
||||||
|
| #include <ac_nonexistent.h>
|
||||||
|
configure:12672: checking for ld used by g++
|
||||||
|
configure:12739: result: /usr/bin/ld -m elf_x86_64
|
||||||
|
configure:12746: checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld
|
||||||
|
configure:12761: result: yes
|
||||||
|
configure:12816: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
|
||||||
|
configure:13821: result: yes
|
||||||
|
configure:13857: g++ -c -g -O2 conftest.cpp >&5
|
||||||
|
configure:13860: $? = 0
|
||||||
|
configure:14380: checking for g++ option to produce PIC
|
||||||
|
configure:14387: result: -fPIC -DPIC
|
||||||
|
configure:14395: checking if g++ PIC flag -fPIC -DPIC works
|
||||||
|
configure:14413: g++ -c -g -O2 -fPIC -DPIC -DPIC conftest.cpp >&5
|
||||||
|
configure:14417: $? = 0
|
||||||
|
configure:14430: result: yes
|
||||||
|
configure:14453: checking if g++ static flag -static works
|
||||||
|
configure:14481: result: no
|
||||||
|
configure:14493: checking if g++ supports -c -o file.o
|
||||||
|
configure:14514: g++ -c -g -O2 -o out/conftest2.o conftest.cpp >&5
|
||||||
|
configure:14518: $? = 0
|
||||||
|
configure:14540: result: yes
|
||||||
|
configure:14545: checking if g++ supports -c -o file.o
|
||||||
|
configure:14592: result: yes
|
||||||
|
configure:14622: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
|
||||||
|
configure:14658: result: yes
|
||||||
|
configure:14799: checking dynamic linker characteristics
|
||||||
|
configure:15470: result: GNU/Linux ld.so
|
||||||
|
configure:15523: checking how to hardcode library paths into programs
|
||||||
|
configure:15548: result: immediate
|
||||||
|
configure:15847: creating ./config.status
|
||||||
|
|
||||||
|
## ---------------------- ##
|
||||||
|
## Running config.status. ##
|
||||||
|
## ---------------------- ##
|
||||||
|
|
||||||
|
This file was extended by config.status, which was
|
||||||
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
|
CONFIG_FILES =
|
||||||
|
CONFIG_HEADERS =
|
||||||
|
CONFIG_LINKS =
|
||||||
|
CONFIG_COMMANDS =
|
||||||
|
$ ./config.status
|
||||||
|
|
||||||
|
on merms-ehr-dev
|
||||||
|
|
||||||
|
config.status:942: creating config.h
|
||||||
|
config.status:1032: config.h is unchanged
|
||||||
|
config.status:1046: executing libtool commands
|
||||||
|
|
||||||
|
## ---------------- ##
|
||||||
|
## Cache variables. ##
|
||||||
|
## ---------------- ##
|
||||||
|
|
||||||
|
ac_cv_build=x86_64-unknown-linux-gnu
|
||||||
|
ac_cv_c_compiler_gnu=yes
|
||||||
|
ac_cv_cxx_compiler_gnu=yes
|
||||||
|
ac_cv_env_CCC_set=
|
||||||
|
ac_cv_env_CCC_value=
|
||||||
|
ac_cv_env_CC_set=
|
||||||
|
ac_cv_env_CC_value=
|
||||||
|
ac_cv_env_CFLAGS_set=
|
||||||
|
ac_cv_env_CFLAGS_value=
|
||||||
|
ac_cv_env_CPPFLAGS_set=
|
||||||
|
ac_cv_env_CPPFLAGS_value=
|
||||||
|
ac_cv_env_CPP_set=
|
||||||
|
ac_cv_env_CPP_value=
|
||||||
|
ac_cv_env_CXXCPP_set=
|
||||||
|
ac_cv_env_CXXCPP_value=
|
||||||
|
ac_cv_env_CXXFLAGS_set=
|
||||||
|
ac_cv_env_CXXFLAGS_value=
|
||||||
|
ac_cv_env_CXX_set=
|
||||||
|
ac_cv_env_CXX_value=
|
||||||
|
ac_cv_env_LDFLAGS_set=
|
||||||
|
ac_cv_env_LDFLAGS_value=
|
||||||
|
ac_cv_env_LIBS_set=
|
||||||
|
ac_cv_env_LIBS_value=
|
||||||
|
ac_cv_env_build_alias_set=
|
||||||
|
ac_cv_env_build_alias_value=
|
||||||
|
ac_cv_env_host_alias_set=
|
||||||
|
ac_cv_env_host_alias_value=
|
||||||
|
ac_cv_env_target_alias_set=
|
||||||
|
ac_cv_env_target_alias_value=
|
||||||
|
ac_cv_header_dlfcn_h=yes
|
||||||
|
ac_cv_header_inttypes_h=yes
|
||||||
|
ac_cv_header_memory_h=yes
|
||||||
|
ac_cv_header_stdc=yes
|
||||||
|
ac_cv_header_stdint_h=yes
|
||||||
|
ac_cv_header_stdlib_h=yes
|
||||||
|
ac_cv_header_string_h=yes
|
||||||
|
ac_cv_header_strings_h=yes
|
||||||
|
ac_cv_header_sys_stat_h=yes
|
||||||
|
ac_cv_header_sys_types_h=yes
|
||||||
|
ac_cv_header_unistd_h=yes
|
||||||
|
ac_cv_host=x86_64-unknown-linux-gnu
|
||||||
|
ac_cv_objext=o
|
||||||
|
ac_cv_path_EGREP='/usr/bin/grep -E'
|
||||||
|
ac_cv_path_FGREP='/usr/bin/grep -F'
|
||||||
|
ac_cv_path_GREP=/usr/bin/grep
|
||||||
|
ac_cv_path_SED=/usr/bin/sed
|
||||||
|
ac_cv_prog_AWK=gawk
|
||||||
|
ac_cv_prog_CPP='cc -E'
|
||||||
|
ac_cv_prog_CXXCPP='g++ -E'
|
||||||
|
ac_cv_prog_ac_ct_AR=ar
|
||||||
|
ac_cv_prog_ac_ct_CC=cc
|
||||||
|
ac_cv_prog_ac_ct_CXX=g++
|
||||||
|
ac_cv_prog_ac_ct_OBJDUMP=objdump
|
||||||
|
ac_cv_prog_ac_ct_RANLIB=ranlib
|
||||||
|
ac_cv_prog_ac_ct_STRIP=strip
|
||||||
|
ac_cv_prog_cc_c89=
|
||||||
|
ac_cv_prog_cc_cc_c_o=yes
|
||||||
|
ac_cv_prog_cc_g=yes
|
||||||
|
ac_cv_prog_cxx_g=yes
|
||||||
|
ac_cv_target=x86_64-unknown-linux-gnu
|
||||||
|
lt_cv_ar_at_file=@
|
||||||
|
lt_cv_archive_cmds_need_lc=no
|
||||||
|
lt_cv_deplibs_check_method=pass_all
|
||||||
|
lt_cv_file_magic_cmd='$MAGIC_CMD'
|
||||||
|
lt_cv_file_magic_test_file=
|
||||||
|
lt_cv_ld_reload_flag=-r
|
||||||
|
lt_cv_nm_interface='BSD nm'
|
||||||
|
lt_cv_objdir=.libs
|
||||||
|
lt_cv_path_LD=/usr/bin/ld
|
||||||
|
lt_cv_path_LDCXX='/usr/bin/ld -m elf_x86_64'
|
||||||
|
lt_cv_path_NM='/usr/bin/nm -B'
|
||||||
|
lt_cv_path_mainfest_tool=no
|
||||||
|
lt_cv_prog_compiler_c_o=yes
|
||||||
|
lt_cv_prog_compiler_c_o_CXX=yes
|
||||||
|
lt_cv_prog_compiler_pic='-fPIC -DPIC'
|
||||||
|
lt_cv_prog_compiler_pic_CXX='-fPIC -DPIC'
|
||||||
|
lt_cv_prog_compiler_pic_works=yes
|
||||||
|
lt_cv_prog_compiler_pic_works_CXX=yes
|
||||||
|
lt_cv_prog_compiler_rtti_exceptions=no
|
||||||
|
lt_cv_prog_compiler_static_works=no
|
||||||
|
lt_cv_prog_compiler_static_works_CXX=no
|
||||||
|
lt_cv_prog_gnu_ld=yes
|
||||||
|
lt_cv_prog_gnu_ldcxx=yes
|
||||||
|
lt_cv_sharedlib_from_linklib_cmd='printf %s\n'
|
||||||
|
lt_cv_shlibpath_overrides_runpath=no
|
||||||
|
lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\'''
|
||||||
|
lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\'''
|
||||||
|
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\'''
|
||||||
|
lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\'''
|
||||||
|
lt_cv_sys_max_cmd_len=1572864
|
||||||
|
lt_cv_to_host_file_cmd=func_convert_file_noop
|
||||||
|
lt_cv_to_tool_file_cmd=func_convert_file_noop
|
||||||
|
php_cv_cc_dashr=no
|
||||||
|
php_cv_cc_rpath=yes
|
||||||
|
|
||||||
|
## ----------------- ##
|
||||||
|
## Output variables. ##
|
||||||
|
## ----------------- ##
|
||||||
|
|
||||||
|
AR='ar'
|
||||||
|
AWK='gawk'
|
||||||
|
CC='cc'
|
||||||
|
CFLAGS='-g -O2'
|
||||||
|
CONFIGURE_COMMAND=' '\''./configure'\'' '
|
||||||
|
CONFIGURE_OPTIONS=''
|
||||||
|
CPP='cc -E'
|
||||||
|
CPPFLAGS=' -DHAVE_CONFIG_H'
|
||||||
|
CXX='g++'
|
||||||
|
CXXCPP='g++ -E'
|
||||||
|
CXXFLAGS='-g -O2'
|
||||||
|
DEFS='-DHAVE_CONFIG_H'
|
||||||
|
DLLTOOL='false'
|
||||||
|
DSYMUTIL=''
|
||||||
|
DUMPBIN=''
|
||||||
|
ECHO_C=''
|
||||||
|
ECHO_N='-n'
|
||||||
|
ECHO_T=''
|
||||||
|
EGREP='/usr/bin/grep -E'
|
||||||
|
EXEEXT=''
|
||||||
|
FGREP='/usr/bin/grep -F'
|
||||||
|
GREP='/usr/bin/grep'
|
||||||
|
LD='/usr/bin/ld -m elf_x86_64'
|
||||||
|
LDFLAGS=' -Wl,-rpath,/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1/.libs/ -L/home/sameye/mermsemr/mermsemr/src/libconfig-1.3.1/.libs/'
|
||||||
|
LIBOBJS=''
|
||||||
|
LIBS='-lconfig++ -lstdc++ '
|
||||||
|
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
|
||||||
|
LIPO=''
|
||||||
|
LN_S='ln -s'
|
||||||
|
LTLIBOBJS=''
|
||||||
|
MANIFEST_TOOL=':'
|
||||||
|
NM='/usr/bin/nm -B'
|
||||||
|
NMEDIT=''
|
||||||
|
OBJDUMP='objdump'
|
||||||
|
OBJEXT='o'
|
||||||
|
OTOOL64=''
|
||||||
|
OTOOL=''
|
||||||
|
PACKAGE_BUGREPORT=''
|
||||||
|
PACKAGE_NAME=''
|
||||||
|
PACKAGE_STRING=''
|
||||||
|
PACKAGE_TARNAME=''
|
||||||
|
PACKAGE_URL=''
|
||||||
|
PACKAGE_VERSION=''
|
||||||
|
PATH_SEPARATOR=':'
|
||||||
|
RANLIB='ranlib'
|
||||||
|
RE2C='exit 0;'
|
||||||
|
SED='/usr/bin/sed'
|
||||||
|
SHELL='/bin/sh'
|
||||||
|
SHLIB_DL_SUFFIX_NAME='so'
|
||||||
|
SHLIB_SUFFIX_NAME='so'
|
||||||
|
STRIP='strip'
|
||||||
|
ac_ct_AR='ar'
|
||||||
|
ac_ct_CC='cc'
|
||||||
|
ac_ct_CXX='g++'
|
||||||
|
ac_ct_DUMPBIN=''
|
||||||
|
bindir='${exec_prefix}/bin'
|
||||||
|
build='x86_64-unknown-linux-gnu'
|
||||||
|
build_alias=''
|
||||||
|
build_cpu='x86_64'
|
||||||
|
build_os='linux-gnu'
|
||||||
|
build_vendor='unknown'
|
||||||
|
datadir='${datarootdir}'
|
||||||
|
datarootdir='${prefix}/share'
|
||||||
|
docdir='${datarootdir}/doc/${PACKAGE}'
|
||||||
|
dvidir='${docdir}'
|
||||||
|
exec_prefix='$(prefix)'
|
||||||
|
host='x86_64-unknown-linux-gnu'
|
||||||
|
host_alias='x86_64-unknown-linux-gnu'
|
||||||
|
host_cpu='x86_64'
|
||||||
|
host_os='linux-gnu'
|
||||||
|
host_vendor='unknown'
|
||||||
|
htmldir='${docdir}'
|
||||||
|
includedir='${prefix}/include'
|
||||||
|
infodir='${datarootdir}/info'
|
||||||
|
libdir='${exec_prefix}/lib'
|
||||||
|
libexecdir='${exec_prefix}/libexec'
|
||||||
|
localedir='${datarootdir}/locale'
|
||||||
|
localstatedir='${prefix}/var'
|
||||||
|
mandir='${datarootdir}/man'
|
||||||
|
oldincludedir='/usr/include'
|
||||||
|
pdfdir='${docdir}'
|
||||||
|
prefix='/usr'
|
||||||
|
program_transform_name='s,x,x,'
|
||||||
|
psdir='${docdir}'
|
||||||
|
sbindir='${exec_prefix}/sbin'
|
||||||
|
sharedstatedir='${prefix}/com'
|
||||||
|
sysconfdir='${prefix}/etc'
|
||||||
|
target='x86_64-unknown-linux-gnu'
|
||||||
|
target_alias=''
|
||||||
|
target_cpu='x86_64'
|
||||||
|
target_os='linux-gnu'
|
||||||
|
target_vendor='unknown'
|
||||||
|
|
||||||
|
## ----------- ##
|
||||||
|
## confdefs.h. ##
|
||||||
|
## ----------- ##
|
||||||
|
|
||||||
|
/* confdefs.h */
|
||||||
|
#define PACKAGE_NAME ""
|
||||||
|
#define PACKAGE_TARNAME ""
|
||||||
|
#define PACKAGE_VERSION ""
|
||||||
|
#define PACKAGE_STRING ""
|
||||||
|
#define PACKAGE_BUGREPORT ""
|
||||||
|
#define PACKAGE_URL ""
|
||||||
|
#define COMPILE_DL_MERMSEMR_API_SAMEYE 1
|
||||||
|
#define STDC_HEADERS 1
|
||||||
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
#define HAVE_SYS_STAT_H 1
|
||||||
|
#define HAVE_STDLIB_H 1
|
||||||
|
#define HAVE_STRING_H 1
|
||||||
|
#define HAVE_MEMORY_H 1
|
||||||
|
#define HAVE_STRINGS_H 1
|
||||||
|
#define HAVE_INTTYPES_H 1
|
||||||
|
#define HAVE_STDINT_H 1
|
||||||
|
#define HAVE_UNISTD_H 1
|
||||||
|
#define HAVE_DLFCN_H 1
|
||||||
|
#define LT_OBJDIR ".libs/"
|
||||||
|
|
||||||
|
configure: exit 0
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
PHP_ARG_ENABLE(mermsemr_api_sameye,
|
||||||
|
[Whether to enable the "mermsemr_api_sameye" extension],
|
||||||
|
[ --enable-mermsemr_api_sameye Enable "mermsemr_api_sameye" extension support])
|
||||||
|
|
||||||
|
if test $PHP_MERMSEMR_API_SAMEYE != "no"; then
|
||||||
|
PHP_REQUIRE_CXX()
|
||||||
|
PHP_SUBST(MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(stdc++, 1, MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
PHP_ADD_INCLUDE(/usr/include/pgsql)
|
||||||
|
PHP_ADD_LIBRARY_WITH_PATH(pq, /usr/lib64, MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(curl, 1, MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(config++, 1, MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(json-c, 1, MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(ssl, 1, MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(z, 1, MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(pcrecpp, 1, MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
PHP_ADD_LIBRARY(gcc_s, 1, MERMSEMR_API_SAMEYE_SHARED_LIBADD)
|
||||||
|
|
||||||
|
LIBCFG_DIR="`pwd`/libconfig-1.3.1"
|
||||||
|
|
||||||
|
PHP_ADD_LIBRARY_WITH_PATH(config++, "$LIBCFG_DIR/.libs/")
|
||||||
|
|
||||||
|
PHP_NEW_EXTENSION(
|
||||||
|
mermsemr_api_sameye,
|
||||||
|
core/*.cc shared_tool/*.cc,
|
||||||
|
$ext_shared,
|
||||||
|
,-I@ext_srcdir@/libconfig-1.3.1)
|
||||||
|
PHP_DEFINE([MERMSEMR_API_SAMEYE_NS],[\"mermsemr_api_sameye\"],[])
|
||||||
|
PHP_DEFINE([MERMSEMR_CONFIG],[\"`pwd|sed s/src//`etc/\"],[])
|
||||||
|
PHP_DEFINE([MERMSEMR_LOG],[\"`pwd|sed s/src//`logs/mermsemr_api_sameye.log\"],[])
|
||||||
|
PHP_DEFINE([TMPL_PREFIX],[\"`pwd|sed s/src//`email/\"],[])
|
||||||
|
PHP_DEFINE([FILELOG_MAX_LEVEL],[9],[])
|
||||||
|
fi
|
||||||
Executable
+6
@@ -0,0 +1,6 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
#
|
||||||
|
# Created by configure
|
||||||
|
|
||||||
|
'./configure' \
|
||||||
|
"$@"
|
||||||
Executable
+1855
File diff suppressed because it is too large
Load Diff
+1773
File diff suppressed because it is too large
Load Diff
+17938
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,201 @@
|
|||||||
|
dnl This file becomes configure.in for self-contained extensions.
|
||||||
|
|
||||||
|
AC_PREREQ(2.59)
|
||||||
|
AC_INIT(config.m4)
|
||||||
|
ifdef([AC_PRESERVE_HELP_ORDER], [AC_PRESERVE_HELP_ORDER], [])
|
||||||
|
|
||||||
|
PHP_CONFIG_NICE(config.nice)
|
||||||
|
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([PHP_EXT_BUILDDIR],[.])dnl
|
||||||
|
AC_DEFUN([PHP_EXT_DIR],[""])dnl
|
||||||
|
AC_DEFUN([PHP_EXT_SRCDIR],[$abs_srcdir])dnl
|
||||||
|
AC_DEFUN([PHP_ALWAYS_SHARED],[
|
||||||
|
ext_output="yes, shared"
|
||||||
|
ext_shared=yes
|
||||||
|
test "[$]$1" = "no" && $1=yes
|
||||||
|
])dnl
|
||||||
|
dnl
|
||||||
|
|
||||||
|
test -z "$CFLAGS" && auto_cflags=1
|
||||||
|
|
||||||
|
abs_srcdir=`(cd $srcdir && pwd)`
|
||||||
|
abs_builddir=`pwd`
|
||||||
|
|
||||||
|
AC_PROG_CC([cc gcc])
|
||||||
|
PHP_DETECT_ICC
|
||||||
|
PHP_DETECT_SUNCC
|
||||||
|
AC_PROG_CC_C_O
|
||||||
|
|
||||||
|
dnl Support systems with system libraries in e.g. /usr/lib64
|
||||||
|
PHP_ARG_WITH(libdir, for system library directory,
|
||||||
|
[ --with-libdir=NAME Look for libraries in .../NAME rather than .../lib], lib, no)
|
||||||
|
|
||||||
|
PHP_RUNPATH_SWITCH
|
||||||
|
PHP_SHLIB_SUFFIX_NAMES
|
||||||
|
|
||||||
|
dnl Find php-config script
|
||||||
|
PHP_ARG_WITH(php-config,,
|
||||||
|
[ --with-php-config=PATH Path to php-config [php-config]], php-config, no)
|
||||||
|
|
||||||
|
dnl For BC
|
||||||
|
PHP_CONFIG=$PHP_PHP_CONFIG
|
||||||
|
prefix=`$PHP_CONFIG --prefix 2>/dev/null`
|
||||||
|
phpincludedir=`$PHP_CONFIG --include-dir 2>/dev/null`
|
||||||
|
INCLUDES=`$PHP_CONFIG --includes 2>/dev/null`
|
||||||
|
EXTENSION_DIR=`$PHP_CONFIG --extension-dir 2>/dev/null`
|
||||||
|
PHP_EXECUTABLE=`$PHP_CONFIG --php-binary 2>/dev/null`
|
||||||
|
|
||||||
|
if test -z "$prefix"; then
|
||||||
|
AC_MSG_ERROR([Cannot find php-config. Please use --with-php-config=PATH])
|
||||||
|
fi
|
||||||
|
|
||||||
|
php_shtool=$srcdir/build/shtool
|
||||||
|
PHP_INIT_BUILD_SYSTEM
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for PHP prefix])
|
||||||
|
AC_MSG_RESULT([$prefix])
|
||||||
|
AC_MSG_CHECKING([for PHP includes])
|
||||||
|
AC_MSG_RESULT([$INCLUDES])
|
||||||
|
AC_MSG_CHECKING([for PHP extension directory])
|
||||||
|
AC_MSG_RESULT([$EXTENSION_DIR])
|
||||||
|
AC_MSG_CHECKING([for PHP installed headers prefix])
|
||||||
|
AC_MSG_RESULT([$phpincludedir])
|
||||||
|
|
||||||
|
dnl Checks for PHP_DEBUG / ZEND_DEBUG / ZTS
|
||||||
|
AC_MSG_CHECKING([if debug is enabled])
|
||||||
|
old_CPPFLAGS=$CPPFLAGS
|
||||||
|
CPPFLAGS="-I$phpincludedir"
|
||||||
|
AC_EGREP_CPP(php_debug_is_enabled,[
|
||||||
|
#include <main/php_config.h>
|
||||||
|
#if ZEND_DEBUG
|
||||||
|
php_debug_is_enabled
|
||||||
|
#endif
|
||||||
|
],[
|
||||||
|
PHP_DEBUG=yes
|
||||||
|
],[
|
||||||
|
PHP_DEBUG=no
|
||||||
|
])
|
||||||
|
CPPFLAGS=$old_CPPFLAGS
|
||||||
|
AC_MSG_RESULT([$PHP_DEBUG])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([if zts is enabled])
|
||||||
|
old_CPPFLAGS=$CPPFLAGS
|
||||||
|
CPPFLAGS="-I$phpincludedir"
|
||||||
|
AC_EGREP_CPP(php_zts_is_enabled,[
|
||||||
|
#include <main/php_config.h>
|
||||||
|
#if ZTS
|
||||||
|
php_zts_is_enabled
|
||||||
|
#endif
|
||||||
|
],[
|
||||||
|
PHP_THREAD_SAFETY=yes
|
||||||
|
],[
|
||||||
|
PHP_THREAD_SAFETY=no
|
||||||
|
])
|
||||||
|
CPPFLAGS=$old_CPPFLAGS
|
||||||
|
AC_MSG_RESULT([$PHP_THREAD_SAFETY])
|
||||||
|
|
||||||
|
dnl Support for building and testing Zend extensions
|
||||||
|
ZEND_EXT_TYPE="zend_extension"
|
||||||
|
PHP_SUBST(ZEND_EXT_TYPE)
|
||||||
|
|
||||||
|
dnl Discard optimization flags when debugging is enabled
|
||||||
|
if test "$PHP_DEBUG" = "yes"; then
|
||||||
|
PHP_DEBUG=1
|
||||||
|
ZEND_DEBUG=yes
|
||||||
|
changequote({,})
|
||||||
|
CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9s]*//g'`
|
||||||
|
CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O[0-9s]*//g'`
|
||||||
|
changequote([,])
|
||||||
|
dnl add -O0 only if GCC or ICC is used
|
||||||
|
if test "$GCC" = "yes" || test "$ICC" = "yes"; then
|
||||||
|
CFLAGS="$CFLAGS -O0"
|
||||||
|
CXXFLAGS="$CXXFLAGS -g -O0"
|
||||||
|
fi
|
||||||
|
if test "$SUNCC" = "yes"; then
|
||||||
|
if test -n "$auto_cflags"; then
|
||||||
|
CFLAGS="-g"
|
||||||
|
CXXFLAGS="-g"
|
||||||
|
else
|
||||||
|
CFLAGS="$CFLAGS -g"
|
||||||
|
CXXFLAGS="$CFLAGS -g"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
PHP_DEBUG=0
|
||||||
|
ZEND_DEBUG=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl Always shared
|
||||||
|
PHP_BUILD_SHARED
|
||||||
|
|
||||||
|
dnl Required programs
|
||||||
|
PHP_PROG_RE2C
|
||||||
|
PHP_PROG_AWK
|
||||||
|
|
||||||
|
sinclude(config.m4)
|
||||||
|
|
||||||
|
enable_static=no
|
||||||
|
enable_shared=yes
|
||||||
|
|
||||||
|
dnl Only allow AC_PROG_CXX and AC_PROG_CXXCPP if they are explicitly called (by PHP_REQUIRE_CXX).
|
||||||
|
dnl Otherwise AC_PROG_LIBTOOL fails if there is no working C++ compiler.
|
||||||
|
AC_PROVIDE_IFELSE([PHP_REQUIRE_CXX], [], [
|
||||||
|
undefine([AC_PROG_CXX])
|
||||||
|
AC_DEFUN([AC_PROG_CXX], [])
|
||||||
|
undefine([AC_PROG_CXXCPP])
|
||||||
|
AC_DEFUN([AC_PROG_CXXCPP], [php_prog_cxxcpp=disabled])
|
||||||
|
])
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
|
||||||
|
all_targets='$(PHP_MODULES) $(PHP_ZEND_EX)'
|
||||||
|
install_targets="install-modules install-headers"
|
||||||
|
phplibdir="`pwd`/modules"
|
||||||
|
CPPFLAGS="$CPPFLAGS -DHAVE_CONFIG_H"
|
||||||
|
CFLAGS_CLEAN='$(CFLAGS)'
|
||||||
|
CXXFLAGS_CLEAN='$(CXXFLAGS)'
|
||||||
|
|
||||||
|
test "$prefix" = "NONE" && prefix="/usr/local"
|
||||||
|
test "$exec_prefix" = "NONE" && exec_prefix='$(prefix)'
|
||||||
|
|
||||||
|
PHP_SUBST(PHP_MODULES)
|
||||||
|
PHP_SUBST(PHP_ZEND_EX)
|
||||||
|
|
||||||
|
PHP_SUBST(all_targets)
|
||||||
|
PHP_SUBST(install_targets)
|
||||||
|
|
||||||
|
PHP_SUBST(prefix)
|
||||||
|
PHP_SUBST(exec_prefix)
|
||||||
|
PHP_SUBST(libdir)
|
||||||
|
PHP_SUBST(prefix)
|
||||||
|
PHP_SUBST(phplibdir)
|
||||||
|
PHP_SUBST(phpincludedir)
|
||||||
|
|
||||||
|
PHP_SUBST(CC)
|
||||||
|
PHP_SUBST(CFLAGS)
|
||||||
|
PHP_SUBST(CFLAGS_CLEAN)
|
||||||
|
PHP_SUBST(CPP)
|
||||||
|
PHP_SUBST(CPPFLAGS)
|
||||||
|
PHP_SUBST(CXX)
|
||||||
|
PHP_SUBST(CXXFLAGS)
|
||||||
|
PHP_SUBST(CXXFLAGS_CLEAN)
|
||||||
|
PHP_SUBST(EXTENSION_DIR)
|
||||||
|
PHP_SUBST(PHP_EXECUTABLE)
|
||||||
|
PHP_SUBST(EXTRA_LDFLAGS)
|
||||||
|
PHP_SUBST(EXTRA_LIBS)
|
||||||
|
PHP_SUBST(INCLUDES)
|
||||||
|
PHP_SUBST(LFLAGS)
|
||||||
|
PHP_SUBST(LDFLAGS)
|
||||||
|
PHP_SUBST(SHARED_LIBTOOL)
|
||||||
|
PHP_SUBST(LIBTOOL)
|
||||||
|
PHP_SUBST(SHELL)
|
||||||
|
PHP_SUBST(INSTALL_HEADERS)
|
||||||
|
|
||||||
|
PHP_GEN_BUILD_DIRS
|
||||||
|
PHP_GEN_GLOBAL_MAKEFILE
|
||||||
|
|
||||||
|
test -d modules || $php_shtool mkdir modules
|
||||||
|
|
||||||
|
AC_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
|
AC_OUTPUT()
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#include "cfg.h"
|
||||||
|
#include "libconfig.h++"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace libconfig;
|
||||||
|
|
||||||
|
Config cfg;
|
||||||
|
|
||||||
|
void CfgReadConfig() {
|
||||||
|
try {
|
||||||
|
/* Load the configuration.. */
|
||||||
|
cfg.readFile(MERMSEMR_CONFIG\
|
||||||
|
"/mermsemr_api.conf");
|
||||||
|
} catch (...) {
|
||||||
|
// failure
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
long CfgReadLong(const char* key) {
|
||||||
|
if (key!=NULL) {
|
||||||
|
try {
|
||||||
|
Setting& s = cfg.lookup(key);
|
||||||
|
long ret = s;
|
||||||
|
return ret;
|
||||||
|
} catch (...) {
|
||||||
|
// failure
|
||||||
|
std::cout << "missing: " << key << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
std::string CfgReadString(const char* key) {
|
||||||
|
if (key!=NULL) {
|
||||||
|
try {
|
||||||
|
return (std::string)cfg.lookup(key);
|
||||||
|
} catch (...) {
|
||||||
|
// failure
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
const char* CfgReadChar(const char* key) {
|
||||||
|
if (key!=NULL) {
|
||||||
|
try {
|
||||||
|
return (const char*)cfg.lookup(key);
|
||||||
|
} catch (...) {
|
||||||
|
// failure
|
||||||
|
std::cout << "missing: " << key << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
vi:ts=2
|
||||||
|
*/
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,42 @@
|
|||||||
|
#include "clog.h"
|
||||||
|
#include "php_mermsemr_log.h"
|
||||||
|
|
||||||
|
void logfmt( TLogLevel level, const char * format, ... ) {
|
||||||
|
try {
|
||||||
|
//FILELog::ReportingLevel() = level;
|
||||||
|
va_list args;
|
||||||
|
va_start (args, format);
|
||||||
|
if (level > FILELOG_MAX_LEVEL) ;
|
||||||
|
else if (level > FILELog::ReportingLevel() || !Output2FILE::Stream()) ;
|
||||||
|
else {
|
||||||
|
FILE *f = Output2FILE::Stream();
|
||||||
|
fprintf(f, "- %s %s [%ld]: %c",
|
||||||
|
NowTime().c_str(),
|
||||||
|
FILELog::ToString(level).c_str(),
|
||||||
|
getpid(),
|
||||||
|
(level > logDEBUG ? level - logDEBUG : 0, '\t'));
|
||||||
|
vfprintf(f, format, args);
|
||||||
|
fprintf(f, "\n");
|
||||||
|
}
|
||||||
|
va_end (args);
|
||||||
|
} catch(const std::exception& e) {
|
||||||
|
FILE_LOG(logERROR) << e.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
void logfmt( TLogLevel level, const char * format, ... ) {
|
||||||
|
try {
|
||||||
|
//FILELog::ReportingLevel() = level;
|
||||||
|
char buffer[2048];
|
||||||
|
va_list args;
|
||||||
|
va_start (args, format);
|
||||||
|
vsprintf (buffer, format, args);
|
||||||
|
//perror (buffer);
|
||||||
|
va_end (args);
|
||||||
|
FILE_LOG(level) << buffer;
|
||||||
|
} catch(const std::exception& e) {
|
||||||
|
FILE_LOG(logERROR) << e.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
@@ -0,0 +1,415 @@
|
|||||||
|
#include <cassert>
|
||||||
|
#include <cstdarg>
|
||||||
|
#include <string>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "cvariables.h"
|
||||||
|
#include "safestring.h"
|
||||||
|
|
||||||
|
CVariables::CVariables( )
|
||||||
|
{
|
||||||
|
var_top = NULL;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void CVariables::Cleanup()
|
||||||
|
{
|
||||||
|
L_Variables * v, *_v;
|
||||||
|
|
||||||
|
v = var_top;
|
||||||
|
|
||||||
|
while (v)
|
||||||
|
{
|
||||||
|
_v = v->next;
|
||||||
|
|
||||||
|
free( v->value );
|
||||||
|
delete v;
|
||||||
|
|
||||||
|
v = _v;
|
||||||
|
}
|
||||||
|
|
||||||
|
var_top = NULL; // Used when the desctructor is called explicitly to cleanup
|
||||||
|
}
|
||||||
|
|
||||||
|
CVariables::~CVariables()
|
||||||
|
{
|
||||||
|
// LOG( "~CVariables()", LOG_MAX );
|
||||||
|
Cleanup();
|
||||||
|
// LOG( "/~CVariables()", LOG_MAX );
|
||||||
|
}
|
||||||
|
|
||||||
|
L_Variables * CVariables::FindVariable( const char * var, bool create/*=false*/ )
|
||||||
|
{
|
||||||
|
L_Variables * v;
|
||||||
|
|
||||||
|
char _var[MAX_CGI_VAR_LEN+1];
|
||||||
|
|
||||||
|
tolower( var, _var, sizeof(_var) );
|
||||||
|
|
||||||
|
if (!var_top && !create)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!var_top)
|
||||||
|
{
|
||||||
|
v = var_top = new L_Variables;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ // Search to see if such variable already exists
|
||||||
|
v = var_top;
|
||||||
|
do {
|
||||||
|
if ( strcmp( v->name, _var )==0 )
|
||||||
|
{
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
if ( v->next)
|
||||||
|
v = v->next;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
} while ( 1 );
|
||||||
|
|
||||||
|
// no variable found
|
||||||
|
|
||||||
|
if ( create )
|
||||||
|
{
|
||||||
|
v->next = new L_Variables;
|
||||||
|
v = v->next;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
v->next = NULL;
|
||||||
|
strncpy( v->name, _var, MAX_CGI_VAR_LEN );
|
||||||
|
|
||||||
|
v->value = NULL; // So we know the space has not been allocated
|
||||||
|
|
||||||
|
return v;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char * CVariables::GetVariable( const char * var )
|
||||||
|
{
|
||||||
|
L_Variables * v;
|
||||||
|
|
||||||
|
v = FindVariable( var );
|
||||||
|
|
||||||
|
if ( !v )
|
||||||
|
return NULL;
|
||||||
|
else
|
||||||
|
return v->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool CVariables::GetBool( char * var, bool test /*= false*/, char * section /*= ""*/ )
|
||||||
|
{
|
||||||
|
L_Variables * v;
|
||||||
|
|
||||||
|
v = FindVariable( var );
|
||||||
|
|
||||||
|
if ( !v )
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char * s = v->value;
|
||||||
|
return
|
||||||
|
strcasecmp( s, "yes" )==0 ||
|
||||||
|
strcasecmp( s, "on" )==0 ||
|
||||||
|
strcasecmp( s, "1" )==0 ||
|
||||||
|
strcasecmp( s, "enable" )==0 ||
|
||||||
|
strcasecmp( s, "enabled" )==0 ||
|
||||||
|
strcasecmp( s, "true" )==0 ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char * CVariables::GetVariable( const char * var, bool test, char * section /*= ""*/ )
|
||||||
|
{
|
||||||
|
L_Variables * v;
|
||||||
|
|
||||||
|
char name_[MAX_CGI_VAR_LEN+1];
|
||||||
|
strsafecpy( name_, test?".":"", sizeof( name_ ) );
|
||||||
|
strsafecat( name_, section, sizeof(name_) );
|
||||||
|
if (section[0])
|
||||||
|
strsafecat( name_, "_", sizeof(name_) );
|
||||||
|
strsafecat( name_, var, sizeof(name_) );
|
||||||
|
|
||||||
|
v = FindVariable( name_ );
|
||||||
|
|
||||||
|
if ( !v )
|
||||||
|
return NULL;
|
||||||
|
else
|
||||||
|
return v->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * CVariables::GetVariable( const char * var, char * result, int size )
|
||||||
|
{
|
||||||
|
L_Variables * v;
|
||||||
|
|
||||||
|
v = FindVariable( var );
|
||||||
|
|
||||||
|
if ( !v )
|
||||||
|
result[0] = 0;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strncpy( result, v->value, size );
|
||||||
|
result[size-1] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
long CVariables::GetVariableLong( char * name, bool *valid /*= NULL*/ )
|
||||||
|
{
|
||||||
|
char var[20];
|
||||||
|
GetVariable( name, var, sizeof(var) );
|
||||||
|
|
||||||
|
// if (!valid)
|
||||||
|
// return atol( var );
|
||||||
|
|
||||||
|
char * ep;
|
||||||
|
long res = strtol( var, &ep, 10 );
|
||||||
|
if (valid)
|
||||||
|
*valid = var[0] && !*ep;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
long CVariables::GetVariableLong( char * name, bool test, char * section /*= ""*/ )
|
||||||
|
{
|
||||||
|
char name_[MAX_CGI_VAR_LEN+1];
|
||||||
|
strsafecpy( name_, test?".":"", sizeof( name_ ) );
|
||||||
|
strsafecat( name_, section, sizeof(name_) );
|
||||||
|
if (section[0])
|
||||||
|
strsafecat( name_, "_", sizeof(name_) );
|
||||||
|
strsafecat( name_, name, sizeof(name_) );
|
||||||
|
|
||||||
|
|
||||||
|
char var[20];
|
||||||
|
GetVariable( name_, var, sizeof(var) );
|
||||||
|
return atol( var );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CVariables::LetInt16( char * var, int value )
|
||||||
|
{
|
||||||
|
L_Variables * v;
|
||||||
|
v = FindVariable( var, true );
|
||||||
|
|
||||||
|
if (v->value)
|
||||||
|
free( v->value );
|
||||||
|
|
||||||
|
char st[10];
|
||||||
|
snprintf( st, sizeof(st), "%d", value);
|
||||||
|
|
||||||
|
v->value = strdup( st );
|
||||||
|
}
|
||||||
|
|
||||||
|
void CVariables::LetStr( const char * var, const char * value ) // NULL-terminated
|
||||||
|
{
|
||||||
|
L_Variables * v;
|
||||||
|
v = FindVariable( var, true );
|
||||||
|
|
||||||
|
if (v->value)
|
||||||
|
free( v->value );
|
||||||
|
|
||||||
|
if ( value )
|
||||||
|
v->value = strdup( value );
|
||||||
|
else
|
||||||
|
v->value = strdup( "" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CVariables::RenameVariable( const char * name, const char * newname )
|
||||||
|
{
|
||||||
|
L_Variables * v;
|
||||||
|
v = FindVariable( name, true );
|
||||||
|
|
||||||
|
//logfmt( FLOG_MAX, "RenameVariable(): '%s'->'%s'", name, newname );
|
||||||
|
|
||||||
|
if ( !v )
|
||||||
|
{
|
||||||
|
//logfmt( FLOG_MAX, "RenameVariable(): Variable '%s' not found", name );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
strsafecpy( v->name, newname, sizeof( v->name ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void CVariables::vLetStrf( char * var, const char * format, va_list ap )
|
||||||
|
{
|
||||||
|
size_t buf_size = 512;
|
||||||
|
char *buffer = new char[buf_size];
|
||||||
|
|
||||||
|
size_t length;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (!buffer) {
|
||||||
|
assert(buffer); // to stop when debugging
|
||||||
|
snprintf(buffer, buf_size, "<alloc problem>");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
length = vsnprintf(buffer, buf_size, format, ap);
|
||||||
|
|
||||||
|
if (length >= 0 && length < buf_size - 1) {
|
||||||
|
// string fits into current buffer
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// otherwise resize buffer :
|
||||||
|
buf_size *= 2;
|
||||||
|
// fprintf(stderr, "Reallocating vstrf-buffer to size=%u\n", buf_size);
|
||||||
|
delete [] buffer;
|
||||||
|
buffer = new char[buf_size];
|
||||||
|
}
|
||||||
|
|
||||||
|
L_Variables * v;
|
||||||
|
v = FindVariable( var, true );
|
||||||
|
|
||||||
|
if (v->value)
|
||||||
|
free( v->value );
|
||||||
|
|
||||||
|
if (buffer) {
|
||||||
|
v->value = strdup( buffer );
|
||||||
|
delete [] buffer;
|
||||||
|
} else {
|
||||||
|
v->value = strdup( "" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CVariables::LetStrf( char * var, const char * format, ... )
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start( ap, format );
|
||||||
|
|
||||||
|
vLetStrf( var, format, ap );
|
||||||
|
|
||||||
|
va_end( ap );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
void CVariables::LetStrf( char * var, const char * format, ... )
|
||||||
|
{
|
||||||
|
char tmp[1000];
|
||||||
|
|
||||||
|
va_list ap;
|
||||||
|
va_start( ap, format );
|
||||||
|
vsnprintf( tmp, sizeof(tmp), format, ap );
|
||||||
|
va_end( ap );
|
||||||
|
|
||||||
|
|
||||||
|
L_Variables * v;
|
||||||
|
v = FindVariable( var, true );
|
||||||
|
|
||||||
|
if (v->value)
|
||||||
|
free( v->value );
|
||||||
|
|
||||||
|
v->value = strdup( tmp );
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void CVariables::StrCat( char * var, const char * format, ... )
|
||||||
|
{
|
||||||
|
char tmp[1000];
|
||||||
|
L_Variables * v;
|
||||||
|
|
||||||
|
v = FindVariable( var, true );
|
||||||
|
|
||||||
|
va_list ap;
|
||||||
|
va_start( ap, format );
|
||||||
|
|
||||||
|
if ( !v->value )
|
||||||
|
vsnprintf( tmp, sizeof(tmp), format, ap );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// logfmt( FLOG_MAX, "v->value='%s'", v->value );
|
||||||
|
strsafecpy( tmp, v->value, sizeof(tmp) );
|
||||||
|
strsafecat( tmp, "<br>", sizeof(tmp) );
|
||||||
|
int len = strlen(tmp);
|
||||||
|
vsnprintf( &tmp[len], sizeof(tmp)-len, format, ap );
|
||||||
|
|
||||||
|
}
|
||||||
|
va_end( ap );
|
||||||
|
|
||||||
|
if (v->value)
|
||||||
|
free( v->value );
|
||||||
|
|
||||||
|
v->value = strdup( tmp );
|
||||||
|
|
||||||
|
// logfmt( FLOG_MAX, "tmp='%s'", tmp );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CVariables::StrCatf( char * var, const char * format, ... )
|
||||||
|
{
|
||||||
|
char tmp[5000];
|
||||||
|
L_Variables * v;
|
||||||
|
|
||||||
|
v = FindVariable( var, true );
|
||||||
|
|
||||||
|
va_list ap;
|
||||||
|
va_start( ap, format );
|
||||||
|
|
||||||
|
if ( !v->value )
|
||||||
|
vsnprintf( tmp, sizeof(tmp), format, ap );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// logfmt( FLOG_MAX, "v->value='%s'", v->value );
|
||||||
|
strsafecpy( tmp, v->value, sizeof(tmp) );
|
||||||
|
//strsafecat( tmp, "<br>", sizeof(tmp) );
|
||||||
|
int len = strlen(tmp);
|
||||||
|
vsnprintf( &tmp[len], sizeof(tmp)-len, format, ap );
|
||||||
|
|
||||||
|
}
|
||||||
|
va_end( ap );
|
||||||
|
|
||||||
|
if (v->value)
|
||||||
|
free( v->value );
|
||||||
|
|
||||||
|
v->value = strdup( tmp );
|
||||||
|
|
||||||
|
// logfmt( FLOG_MAX, "tmp='%s'", tmp );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CVariables::LetStr( char * var, const char * value, int len ) // non-NULL terminated
|
||||||
|
{
|
||||||
|
L_Variables * v;
|
||||||
|
v = FindVariable( var, true );
|
||||||
|
|
||||||
|
if (v->value)
|
||||||
|
free( v->value );
|
||||||
|
|
||||||
|
if ( value )
|
||||||
|
{
|
||||||
|
v->value = (char*)malloc(len+1);
|
||||||
|
memcpy( v->value, value, len );
|
||||||
|
v->value[len] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
v->value = strdup( "" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CVariables::PrintVars( FILE * f /*= stdout*/ )
|
||||||
|
{
|
||||||
|
L_Variables * v;
|
||||||
|
v = var_top;
|
||||||
|
|
||||||
|
fprintf( f, "\nVariable listing (NEW):\n\n" );
|
||||||
|
while ( v )
|
||||||
|
{
|
||||||
|
fprintf( f, "%s[%d] = %s\n", v->name, strlen(v->value), v->value );
|
||||||
|
v = v->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
vi:ts=2
|
||||||
|
*/
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#include "exceptions.h"
|
||||||
|
|
||||||
|
#include "clog.h"
|
||||||
|
|
||||||
|
bad_parameter::bad_parameter( CVars &out, const char *name )
|
||||||
|
{
|
||||||
|
//in["bad_param"] = name;
|
||||||
|
out["bad_param"] = name;
|
||||||
|
|
||||||
|
logfmt( FLOG_MAX, "Bad parameter exception: '%s'", name );
|
||||||
|
}
|
||||||
|
|
||||||
|
err::err( char *msg ) {
|
||||||
|
logfmt( FLOG_MAX, "ERROR: %s", msg );
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,544 @@
|
|||||||
|
/*-
|
||||||
|
* HMAC-SHA-224/256/384/512 implementation
|
||||||
|
* Last update: 06/15/2005
|
||||||
|
* Issue date: 06/15/2005
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Olivier Gay <olivier.gay@a3.epfl.ch>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the project nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "hmac_sha2.h"
|
||||||
|
|
||||||
|
/* HMAC-SHA-224 functions */
|
||||||
|
|
||||||
|
void hmac_sha224_init(hmac_sha224_ctx *ctx, unsigned char *key,
|
||||||
|
unsigned int key_size)
|
||||||
|
{
|
||||||
|
unsigned int fill;
|
||||||
|
unsigned int num;
|
||||||
|
|
||||||
|
unsigned char *key_used;
|
||||||
|
unsigned char key_temp[SHA224_DIGEST_SIZE];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (key_size == SHA224_BLOCK_SIZE) {
|
||||||
|
key_used = key;
|
||||||
|
num = SHA224_BLOCK_SIZE;
|
||||||
|
} else {
|
||||||
|
if (key_size > SHA224_BLOCK_SIZE){
|
||||||
|
key_used = key_temp;
|
||||||
|
num = SHA224_DIGEST_SIZE;
|
||||||
|
sha224(key, key_size, key_used);
|
||||||
|
} else { /* key_size > SHA224_BLOCK_SIZE */
|
||||||
|
key_used = key;
|
||||||
|
num = key_size;
|
||||||
|
}
|
||||||
|
fill = SHA224_BLOCK_SIZE - num;
|
||||||
|
|
||||||
|
memset(ctx->block_ipad + num, 0x36, fill);
|
||||||
|
memset(ctx->block_opad + num, 0x5c, fill);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < num; i++) {
|
||||||
|
ctx->block_ipad[i] = key_used[i] ^ 0x36;
|
||||||
|
ctx->block_opad[i] = key_used[i] ^ 0x5c;
|
||||||
|
}
|
||||||
|
|
||||||
|
sha224_init(&ctx->ctx_inside);
|
||||||
|
sha224_update(&ctx->ctx_inside, ctx->block_ipad, SHA224_BLOCK_SIZE);
|
||||||
|
|
||||||
|
sha224_init(&ctx->ctx_outside);
|
||||||
|
sha224_update(&ctx->ctx_outside, ctx->block_opad,
|
||||||
|
SHA224_BLOCK_SIZE);
|
||||||
|
|
||||||
|
/* for hmac_reinit */
|
||||||
|
memcpy(&ctx->ctx_inside_reinit, &ctx->ctx_inside,
|
||||||
|
sizeof(sha224_ctx));
|
||||||
|
memcpy(&ctx->ctx_outside_reinit, &ctx->ctx_outside,
|
||||||
|
sizeof(sha224_ctx));
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha224_reinit(hmac_sha224_ctx *ctx)
|
||||||
|
{
|
||||||
|
memcpy(&ctx->ctx_inside, &ctx->ctx_inside_reinit,
|
||||||
|
sizeof(sha224_ctx));
|
||||||
|
memcpy(&ctx->ctx_outside, &ctx->ctx_outside_reinit,
|
||||||
|
sizeof(sha224_ctx));
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha224_update(hmac_sha224_ctx *ctx, unsigned char *message,
|
||||||
|
unsigned int message_len)
|
||||||
|
{
|
||||||
|
sha224_update(&ctx->ctx_inside, message, message_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha224_final(hmac_sha224_ctx *ctx, unsigned char *mac,
|
||||||
|
unsigned int mac_size)
|
||||||
|
{
|
||||||
|
unsigned char digest_inside[SHA224_DIGEST_SIZE];
|
||||||
|
unsigned char mac_temp[SHA224_DIGEST_SIZE];
|
||||||
|
|
||||||
|
sha224_final(&ctx->ctx_inside, digest_inside);
|
||||||
|
sha224_update(&ctx->ctx_outside, digest_inside, SHA224_DIGEST_SIZE);
|
||||||
|
sha224_final(&ctx->ctx_outside, mac_temp);
|
||||||
|
memcpy(mac, mac_temp, mac_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha224(unsigned char *key, unsigned int key_size,
|
||||||
|
unsigned char *message, unsigned int message_len,
|
||||||
|
unsigned char *mac, unsigned mac_size)
|
||||||
|
{
|
||||||
|
hmac_sha224_ctx ctx;
|
||||||
|
|
||||||
|
hmac_sha224_init(&ctx, key, key_size);
|
||||||
|
hmac_sha224_update(&ctx, message, message_len);
|
||||||
|
hmac_sha224_final(&ctx, mac, mac_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* HMAC-SHA-256 functions */
|
||||||
|
|
||||||
|
void hmac_sha256_init(hmac_sha256_ctx *ctx, unsigned char *key,
|
||||||
|
unsigned int key_size)
|
||||||
|
{
|
||||||
|
unsigned int fill;
|
||||||
|
unsigned int num;
|
||||||
|
|
||||||
|
unsigned char *key_used;
|
||||||
|
unsigned char key_temp[SHA256_DIGEST_SIZE];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (key_size == SHA256_BLOCK_SIZE) {
|
||||||
|
key_used = key;
|
||||||
|
num = SHA256_BLOCK_SIZE;
|
||||||
|
} else {
|
||||||
|
if (key_size > SHA256_BLOCK_SIZE){
|
||||||
|
key_used = key_temp;
|
||||||
|
num = SHA256_DIGEST_SIZE;
|
||||||
|
sha256(key, key_size, key_used);
|
||||||
|
} else { /* key_size > SHA256_BLOCK_SIZE */
|
||||||
|
key_used = key;
|
||||||
|
num = key_size;
|
||||||
|
}
|
||||||
|
fill = SHA256_BLOCK_SIZE - num;
|
||||||
|
|
||||||
|
memset(ctx->block_ipad + num, 0x36, fill);
|
||||||
|
memset(ctx->block_opad + num, 0x5c, fill);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < num; i++) {
|
||||||
|
ctx->block_ipad[i] = key_used[i] ^ 0x36;
|
||||||
|
ctx->block_opad[i] = key_used[i] ^ 0x5c;
|
||||||
|
}
|
||||||
|
|
||||||
|
sha256_init(&ctx->ctx_inside);
|
||||||
|
sha256_update(&ctx->ctx_inside, ctx->block_ipad, SHA256_BLOCK_SIZE);
|
||||||
|
|
||||||
|
sha256_init(&ctx->ctx_outside);
|
||||||
|
sha256_update(&ctx->ctx_outside, ctx->block_opad,
|
||||||
|
SHA256_BLOCK_SIZE);
|
||||||
|
|
||||||
|
/* for hmac_reinit */
|
||||||
|
memcpy(&ctx->ctx_inside_reinit, &ctx->ctx_inside,
|
||||||
|
sizeof(sha256_ctx));
|
||||||
|
memcpy(&ctx->ctx_outside_reinit, &ctx->ctx_outside,
|
||||||
|
sizeof(sha256_ctx));
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha256_reinit(hmac_sha256_ctx *ctx)
|
||||||
|
{
|
||||||
|
memcpy(&ctx->ctx_inside, &ctx->ctx_inside_reinit,
|
||||||
|
sizeof(sha256_ctx));
|
||||||
|
memcpy(&ctx->ctx_outside, &ctx->ctx_outside_reinit,
|
||||||
|
sizeof(sha256_ctx));
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha256_update(hmac_sha256_ctx *ctx, unsigned char *message,
|
||||||
|
unsigned int message_len)
|
||||||
|
{
|
||||||
|
sha256_update(&ctx->ctx_inside, message, message_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha256_final(hmac_sha256_ctx *ctx, unsigned char *mac,
|
||||||
|
unsigned int mac_size)
|
||||||
|
{
|
||||||
|
unsigned char digest_inside[SHA256_DIGEST_SIZE];
|
||||||
|
unsigned char mac_temp[SHA256_DIGEST_SIZE];
|
||||||
|
|
||||||
|
sha256_final(&ctx->ctx_inside, digest_inside);
|
||||||
|
sha256_update(&ctx->ctx_outside, digest_inside, SHA256_DIGEST_SIZE);
|
||||||
|
sha256_final(&ctx->ctx_outside, mac_temp);
|
||||||
|
memcpy(mac, mac_temp, mac_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha256(unsigned char *key, unsigned int key_size,
|
||||||
|
unsigned char *message, unsigned int message_len,
|
||||||
|
unsigned char *mac, unsigned mac_size)
|
||||||
|
{
|
||||||
|
hmac_sha256_ctx ctx;
|
||||||
|
|
||||||
|
hmac_sha256_init(&ctx, key, key_size);
|
||||||
|
hmac_sha256_update(&ctx, message, message_len);
|
||||||
|
hmac_sha256_final(&ctx, mac, mac_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* HMAC-SHA-384 functions */
|
||||||
|
|
||||||
|
void hmac_sha384_init(hmac_sha384_ctx *ctx, unsigned char *key,
|
||||||
|
unsigned int key_size)
|
||||||
|
{
|
||||||
|
unsigned int fill;
|
||||||
|
unsigned int num;
|
||||||
|
|
||||||
|
unsigned char *key_used;
|
||||||
|
unsigned char key_temp[SHA384_DIGEST_SIZE];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (key_size == SHA384_BLOCK_SIZE) {
|
||||||
|
key_used = key;
|
||||||
|
num = SHA384_BLOCK_SIZE;
|
||||||
|
} else {
|
||||||
|
if (key_size > SHA384_BLOCK_SIZE){
|
||||||
|
key_used = key_temp;
|
||||||
|
num = SHA384_DIGEST_SIZE;
|
||||||
|
sha384(key, key_size, key_used);
|
||||||
|
} else { /* key_size > SHA384_BLOCK_SIZE */
|
||||||
|
key_used = key;
|
||||||
|
num = key_size;
|
||||||
|
}
|
||||||
|
fill = SHA384_BLOCK_SIZE - num;
|
||||||
|
|
||||||
|
memset(ctx->block_ipad + num, 0x36, fill);
|
||||||
|
memset(ctx->block_opad + num, 0x5c, fill);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < num; i++) {
|
||||||
|
ctx->block_ipad[i] = key_used[i] ^ 0x36;
|
||||||
|
ctx->block_opad[i] = key_used[i] ^ 0x5c;
|
||||||
|
}
|
||||||
|
|
||||||
|
sha384_init(&ctx->ctx_inside);
|
||||||
|
sha384_update(&ctx->ctx_inside, ctx->block_ipad, SHA384_BLOCK_SIZE);
|
||||||
|
|
||||||
|
sha384_init(&ctx->ctx_outside);
|
||||||
|
sha384_update(&ctx->ctx_outside, ctx->block_opad,
|
||||||
|
SHA384_BLOCK_SIZE);
|
||||||
|
|
||||||
|
/* for hmac_reinit */
|
||||||
|
memcpy(&ctx->ctx_inside_reinit, &ctx->ctx_inside,
|
||||||
|
sizeof(sha384_ctx));
|
||||||
|
memcpy(&ctx->ctx_outside_reinit, &ctx->ctx_outside,
|
||||||
|
sizeof(sha384_ctx));
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha384_reinit(hmac_sha384_ctx *ctx)
|
||||||
|
{
|
||||||
|
memcpy(&ctx->ctx_inside, &ctx->ctx_inside_reinit,
|
||||||
|
sizeof(sha384_ctx));
|
||||||
|
memcpy(&ctx->ctx_outside, &ctx->ctx_outside_reinit,
|
||||||
|
sizeof(sha384_ctx));
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha384_update(hmac_sha384_ctx *ctx, unsigned char *message,
|
||||||
|
unsigned int message_len)
|
||||||
|
{
|
||||||
|
sha384_update(&ctx->ctx_inside, message, message_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha384_final(hmac_sha384_ctx *ctx, unsigned char *mac,
|
||||||
|
unsigned int mac_size)
|
||||||
|
{
|
||||||
|
unsigned char digest_inside[SHA384_DIGEST_SIZE];
|
||||||
|
unsigned char mac_temp[SHA384_DIGEST_SIZE];
|
||||||
|
|
||||||
|
sha384_final(&ctx->ctx_inside, digest_inside);
|
||||||
|
sha384_update(&ctx->ctx_outside, digest_inside, SHA384_DIGEST_SIZE);
|
||||||
|
sha384_final(&ctx->ctx_outside, mac_temp);
|
||||||
|
memcpy(mac, mac_temp, mac_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha384(unsigned char *key, unsigned int key_size,
|
||||||
|
unsigned char *message, unsigned int message_len,
|
||||||
|
unsigned char *mac, unsigned mac_size)
|
||||||
|
{
|
||||||
|
hmac_sha384_ctx ctx;
|
||||||
|
|
||||||
|
hmac_sha384_init(&ctx, key, key_size);
|
||||||
|
hmac_sha384_update(&ctx, message, message_len);
|
||||||
|
hmac_sha384_final(&ctx, mac, mac_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* HMAC-SHA-512 functions */
|
||||||
|
|
||||||
|
void hmac_sha512_init(hmac_sha512_ctx *ctx, unsigned char *key,
|
||||||
|
unsigned int key_size)
|
||||||
|
{
|
||||||
|
unsigned int fill;
|
||||||
|
unsigned int num;
|
||||||
|
|
||||||
|
unsigned char *key_used;
|
||||||
|
unsigned char key_temp[SHA512_DIGEST_SIZE];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (key_size == SHA512_BLOCK_SIZE) {
|
||||||
|
key_used = key;
|
||||||
|
num = SHA512_BLOCK_SIZE;
|
||||||
|
} else {
|
||||||
|
if (key_size > SHA512_BLOCK_SIZE){
|
||||||
|
key_used = key_temp;
|
||||||
|
num = SHA512_DIGEST_SIZE;
|
||||||
|
sha512(key, key_size, key_used);
|
||||||
|
} else { /* key_size > SHA512_BLOCK_SIZE */
|
||||||
|
key_used = key;
|
||||||
|
num = key_size;
|
||||||
|
}
|
||||||
|
fill = SHA512_BLOCK_SIZE - num;
|
||||||
|
|
||||||
|
memset(ctx->block_ipad + num, 0x36, fill);
|
||||||
|
memset(ctx->block_opad + num, 0x5c, fill);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < num; i++) {
|
||||||
|
ctx->block_ipad[i] = key_used[i] ^ 0x36;
|
||||||
|
ctx->block_opad[i] = key_used[i] ^ 0x5c;
|
||||||
|
}
|
||||||
|
|
||||||
|
sha512_init(&ctx->ctx_inside);
|
||||||
|
sha512_update(&ctx->ctx_inside, ctx->block_ipad, SHA512_BLOCK_SIZE);
|
||||||
|
|
||||||
|
sha512_init(&ctx->ctx_outside);
|
||||||
|
sha512_update(&ctx->ctx_outside, ctx->block_opad,
|
||||||
|
SHA512_BLOCK_SIZE);
|
||||||
|
|
||||||
|
/* for hmac_reinit */
|
||||||
|
memcpy(&ctx->ctx_inside_reinit, &ctx->ctx_inside,
|
||||||
|
sizeof(sha512_ctx));
|
||||||
|
memcpy(&ctx->ctx_outside_reinit, &ctx->ctx_outside,
|
||||||
|
sizeof(sha512_ctx));
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha512_reinit(hmac_sha512_ctx *ctx)
|
||||||
|
{
|
||||||
|
memcpy(&ctx->ctx_inside, &ctx->ctx_inside_reinit,
|
||||||
|
sizeof(sha512_ctx));
|
||||||
|
memcpy(&ctx->ctx_outside, &ctx->ctx_outside_reinit,
|
||||||
|
sizeof(sha512_ctx));
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha512_update(hmac_sha512_ctx *ctx, unsigned char *message,
|
||||||
|
unsigned int message_len)
|
||||||
|
{
|
||||||
|
sha512_update(&ctx->ctx_inside, message, message_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha512_final(hmac_sha512_ctx *ctx, unsigned char *mac,
|
||||||
|
unsigned int mac_size)
|
||||||
|
{
|
||||||
|
unsigned char digest_inside[SHA512_DIGEST_SIZE];
|
||||||
|
unsigned char mac_temp[SHA512_DIGEST_SIZE];
|
||||||
|
|
||||||
|
sha512_final(&ctx->ctx_inside, digest_inside);
|
||||||
|
sha512_update(&ctx->ctx_outside, digest_inside, SHA512_DIGEST_SIZE);
|
||||||
|
sha512_final(&ctx->ctx_outside, mac_temp);
|
||||||
|
memcpy(mac, mac_temp, mac_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha512(unsigned char *key, unsigned int key_size,
|
||||||
|
unsigned char *message, unsigned int message_len,
|
||||||
|
unsigned char *mac, unsigned mac_size)
|
||||||
|
{
|
||||||
|
hmac_sha512_ctx ctx;
|
||||||
|
|
||||||
|
hmac_sha512_init(&ctx, key, key_size);
|
||||||
|
hmac_sha512_update(&ctx, message, message_len);
|
||||||
|
hmac_sha512_final(&ctx, mac, mac_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef TEST_VECTORS
|
||||||
|
|
||||||
|
/* IETF Validation tests */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
void test(unsigned char *vector, unsigned char *digest,
|
||||||
|
unsigned int digest_size)
|
||||||
|
{
|
||||||
|
unsigned char output[2 * SHA512_DIGEST_SIZE + 1];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
output[2 * digest_size] = '\0';
|
||||||
|
|
||||||
|
for (i = 0; i < digest_size ; i++) {
|
||||||
|
sprintf((char *) output + 2*i, "%02x", digest[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("H: %s\n", output);
|
||||||
|
if (strcmp((char *) vector, (char *) output)) {
|
||||||
|
fprintf(stderr, "Test failed.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
static unsigned char *vectors[] =
|
||||||
|
{
|
||||||
|
/* HMAC-SHA-224 */
|
||||||
|
"896fb1128abbdf196832107cd49df33f47b4b1169912ba4f53684b22",
|
||||||
|
"a30e01098bc6dbbf45690f3a7e9e6d0f8bbea2a39e6148008fd05e44",
|
||||||
|
"7fb3cb3588c6c1f6ffa9694d7d6ad2649365b0c1f65d69d1ec8333ea",
|
||||||
|
"6c11506874013cac6a2abc1bb382627cec6a90d86efc012de7afec5a",
|
||||||
|
"0e2aea68a90c8d37c988bcdb9fca6fa8",
|
||||||
|
"95e9a0db962095adaebe9b2d6f0dbce2d499f112f2d2b7273fa6870e",
|
||||||
|
"3a854166ac5d9f023f54d517d0b39dbd946770db9c2b95c9f6f565d1",
|
||||||
|
/* HMAC-SHA-256 */
|
||||||
|
"b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7",
|
||||||
|
"5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843",
|
||||||
|
"773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe",
|
||||||
|
"82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b",
|
||||||
|
"a3b6167473100ee06e0c796c2955552b",
|
||||||
|
"60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54",
|
||||||
|
"9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2",
|
||||||
|
/* HMAC-SHA-384 */
|
||||||
|
"afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59c"
|
||||||
|
"faea9ea9076ede7f4af152e8b2fa9cb6",
|
||||||
|
"af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e"
|
||||||
|
"8e2240ca5e69e2c78b3239ecfab21649",
|
||||||
|
"88062608d3e6ad8a0aa2ace014c8a86f0aa635d947ac9febe83ef4e55966144b"
|
||||||
|
"2a5ab39dc13814b94e3ab6e101a34f27",
|
||||||
|
"3e8a69b7783c25851933ab6290af6ca77a9981480850009cc5577c6e1f573b4e"
|
||||||
|
"6801dd23c4a7d679ccf8a386c674cffb",
|
||||||
|
"3abf34c3503b2a23a46efc619baef897",
|
||||||
|
"4ece084485813e9088d2c63a041bc5b44f9ef1012a2b588f3cd11f05033ac4c6"
|
||||||
|
"0c2ef6ab4030fe8296248df163f44952",
|
||||||
|
"6617178e941f020d351e2f254e8fd32c602420feb0b8fb9adccebb82461e99c5"
|
||||||
|
"a678cc31e799176d3860e6110c46523e",
|
||||||
|
/* HMAC-SHA-512 */
|
||||||
|
"87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cde"
|
||||||
|
"daa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854",
|
||||||
|
"164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea250554"
|
||||||
|
"9758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737",
|
||||||
|
"fa73b0089d56a284efb0f0756c890be9b1b5dbdd8ee81a3655f83e33b2279d39"
|
||||||
|
"bf3e848279a722c806b485a47e67c807b946a337bee8942674278859e13292fb",
|
||||||
|
"b0ba465637458c6990e5a8c5f61d4af7e576d97ff94b872de76f8050361ee3db"
|
||||||
|
"a91ca5c11aa25eb4d679275cc5788063a5f19741120c4f2de2adebeb10a298dd",
|
||||||
|
"415fad6271580a531d4179bc891d87a6",
|
||||||
|
"80b24263c7c1a3ebb71493c1dd7be8b49b46d1f41b4aeec1121b013783f8f352"
|
||||||
|
"6b56d037e05f2598bd0fd2215d6a1e5295e64f73f63f0aec8b915a985d786598",
|
||||||
|
"e37b6a775dc87dbaa4dfa9f96e5e3ffddebd71f8867289865df5a32d20cdc944"
|
||||||
|
"b6022cac3c4982b10d5eeb55c3e4de15134676fb6de0446065c97440fa8c6a58"
|
||||||
|
};
|
||||||
|
|
||||||
|
static unsigned char *messages[] =
|
||||||
|
{
|
||||||
|
"Hi There",
|
||||||
|
"what do ya want for nothing?",
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
"Test With Truncation",
|
||||||
|
"Test Using Larger Than Block-Size Key - Hash Key First",
|
||||||
|
"This is a test using a larger than block-size key "
|
||||||
|
"and a larger than block-size data. The key needs"
|
||||||
|
" to be hashed before being used by the HMAC algorithm."
|
||||||
|
};
|
||||||
|
|
||||||
|
unsigned char mac[SHA512_DIGEST_SIZE];
|
||||||
|
unsigned char *keys[7];
|
||||||
|
unsigned int keys_len[7] = {20, 4, 20, 25, 20, 131, 131};
|
||||||
|
unsigned int messages2and3_len = 50;
|
||||||
|
unsigned int mac_224_size, mac_256_size, mac_384_size, mac_512_size;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < 7; i++) {
|
||||||
|
keys[i] = malloc(keys_len[i]);
|
||||||
|
if (keys[i] == NULL) {
|
||||||
|
fprintf(stderr, "Can't allocate memory\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(keys[0], 0x0b, keys_len[0]);
|
||||||
|
strcpy(keys[1], "Jefe");
|
||||||
|
memset(keys[2], 0xaa, keys_len[2]);
|
||||||
|
for (i = 0; i < keys_len[3]; i++)
|
||||||
|
keys[3][i] = (unsigned char) i + 1;
|
||||||
|
memset(keys[4], 0x0c, keys_len[4]);
|
||||||
|
memset(keys[5], 0xaa, keys_len[5]);
|
||||||
|
memset(keys[6], 0xaa, keys_len[6]);
|
||||||
|
|
||||||
|
messages[2] = malloc(messages2and3_len + 1);
|
||||||
|
messages[3] = malloc(messages2and3_len + 1);
|
||||||
|
|
||||||
|
if (messages[2] == NULL || messages[3] == NULL) {
|
||||||
|
fprintf(stderr, "Can't allocate memory\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
messages[2][messages2and3_len] = '\0';
|
||||||
|
messages[3][messages2and3_len] = '\0';
|
||||||
|
|
||||||
|
memset(messages[2], 0xdd, messages2and3_len);
|
||||||
|
memset(messages[3], 0xcd, messages2and3_len);
|
||||||
|
|
||||||
|
printf("HMAC-SHA-2 IETF Validation tests\n\n");
|
||||||
|
|
||||||
|
for (i = 0; i < 7; i++) {
|
||||||
|
if (i != 4) {
|
||||||
|
mac_224_size = SHA224_DIGEST_SIZE;
|
||||||
|
mac_256_size = SHA256_DIGEST_SIZE;
|
||||||
|
mac_384_size = SHA384_DIGEST_SIZE;
|
||||||
|
mac_512_size = SHA512_DIGEST_SIZE;
|
||||||
|
} else {
|
||||||
|
mac_224_size = 128 / 8; mac_256_size = 128 / 8;
|
||||||
|
mac_384_size = 128 / 8; mac_512_size = 128 / 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Test %d:\n", i + 1);
|
||||||
|
|
||||||
|
hmac_sha224(keys[i], keys_len[i], messages[i], strlen(messages[i]),
|
||||||
|
mac, mac_224_size);
|
||||||
|
test(vectors[i], mac, mac_224_size );
|
||||||
|
hmac_sha256(keys[i], keys_len[i], messages[i], strlen(messages[i]),
|
||||||
|
mac, mac_256_size);
|
||||||
|
test(vectors[7 + i], mac, mac_256_size);
|
||||||
|
hmac_sha384(keys[i], keys_len[i], messages[i], strlen(messages[i]),
|
||||||
|
mac, mac_384_size);
|
||||||
|
test(vectors[14 + i], mac, mac_384_size);
|
||||||
|
hmac_sha512(keys[i], keys_len[i], messages[i], strlen(messages[i]),
|
||||||
|
mac, mac_512_size);
|
||||||
|
test(vectors[21 + i], mac, mac_512_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("All tests passed.\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* TEST_VECTORS */
|
||||||
|
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
#include "input.h"
|
||||||
|
#include "clog.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
void REQ_STRING( CVars &in, const char * name, int min_len, int max_len, const char *regex ) throw (bad_parameter)
|
||||||
|
{
|
||||||
|
int len = in[name].length();
|
||||||
|
char ret[2048]; ret[0] = 0;
|
||||||
|
|
||||||
|
logfmt( FLOG_MAX, "REQ_STRING(%s)", name );
|
||||||
|
|
||||||
|
bool match = reg_match( in[name].c_str(), regex, ret, sizeof(ret) );
|
||||||
|
len = strlen(ret);
|
||||||
|
if ( !match || len < min_len || len > max_len )
|
||||||
|
{
|
||||||
|
logfmt( FLOG_MAX, "Error in parameter '%s', len= %d <= %d <= %d", name, min_len, match, max_len );
|
||||||
|
in[name].set_valid( false );
|
||||||
|
throw bad_parameter( in, name );
|
||||||
|
}
|
||||||
|
|
||||||
|
in[name] = ret;
|
||||||
|
|
||||||
|
CVars::iterator i = in.find( name );
|
||||||
|
i->second.set_valid();
|
||||||
|
|
||||||
|
//logfmt( FLOG_MAX, "i->second.valid()=%d", i->second.valid() );
|
||||||
|
|
||||||
|
// if not match regexp
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
long REQ_LONG( CVars &in, const char *name, long min, long max )
|
||||||
|
{
|
||||||
|
char *end;
|
||||||
|
long r = strtol( in[name].c_str(), &end, 10 );
|
||||||
|
|
||||||
|
if ( in[name].length() && !*end )
|
||||||
|
{
|
||||||
|
in[name].set_valid();
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
in[name].set_valid( false );
|
||||||
|
throw bad_parameter( in, name );
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
bool OptionalSpecified( CVars &in, const char * name )
|
||||||
|
{
|
||||||
|
if ( in.find(name)==in.end() ) return false; // parameter omitted, not even passed from frontend
|
||||||
|
|
||||||
|
return ! reg_match( in[name].c_str(), "^[[:space:]]*$", NULL, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
vi:ts=2
|
||||||
|
*/
|
||||||
|
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "list.h"
|
||||||
|
|
||||||
|
void DestroyList( TList * top )
|
||||||
|
{
|
||||||
|
// LOG( "DestroyList()", LOG_MAX );
|
||||||
|
|
||||||
|
TList * cur = top; unsigned long pos=0;
|
||||||
|
TList * prev;
|
||||||
|
|
||||||
|
while ( cur && cur->text)
|
||||||
|
{
|
||||||
|
free( cur->text );
|
||||||
|
prev = cur;
|
||||||
|
cur = cur->next;
|
||||||
|
delete prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
// LOG( "/DestroyList()", LOG_MAX );
|
||||||
|
}
|
||||||
|
|
||||||
|
TList * Add( TList * list, char * text, long size )
|
||||||
|
{
|
||||||
|
if (!text)
|
||||||
|
return list;
|
||||||
|
|
||||||
|
list->text = new char[ size+1 ];
|
||||||
|
memcpy( list->text, text, size );
|
||||||
|
list->text[size] = 0;
|
||||||
|
|
||||||
|
// logfmt( FLOG_MAX, "Added: '%s'", list->text );
|
||||||
|
|
||||||
|
list->next = new TList;
|
||||||
|
list->next->next = NULL;
|
||||||
|
list->next->text = NULL;
|
||||||
|
|
||||||
|
return list->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TList * AddF( TList * list, char * format, ... )
|
||||||
|
{
|
||||||
|
if (!format)
|
||||||
|
return list;
|
||||||
|
|
||||||
|
int size;
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start( ap, format );
|
||||||
|
size = vsnprintf( NULL, 0, format, ap ) + 1;
|
||||||
|
list->text = new char[ size ];
|
||||||
|
if ( !list->text) return list; // out of mem => do nothing
|
||||||
|
vsnprintf( list->text, size-1, format, ap );
|
||||||
|
va_end( ap );
|
||||||
|
list->text[size] = 0;
|
||||||
|
|
||||||
|
// logfmt( FLOG_MAX, "Added: '%s'", list->text );
|
||||||
|
|
||||||
|
list->next = new TList;
|
||||||
|
list->next->next = NULL;
|
||||||
|
list->next->text = NULL;
|
||||||
|
|
||||||
|
return list->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PrintList( TList * list )
|
||||||
|
{
|
||||||
|
// LOG( "PrintList()", LOG_MAX );
|
||||||
|
|
||||||
|
TList * cur = list;
|
||||||
|
while (cur && cur->text)
|
||||||
|
{
|
||||||
|
// LOG( cur->text, LOG_MAX );
|
||||||
|
cur = cur->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
// LOG( "/PrintList()", LOG_MAX );
|
||||||
|
}
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
#include "mermsemr.h"
|
||||||
|
#include "clog.h"
|
||||||
|
#include "cfg.h"
|
||||||
|
#include "exceptions.h"
|
||||||
|
#include "input.h"
|
||||||
|
#include "mermsemr_api.h"
|
||||||
|
#include "pgsql.h"
|
||||||
|
|
||||||
|
#include "mermsemr_api_main.h"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <libpq-fe.h>
|
||||||
|
|
||||||
|
MermsEmr::MermsEmr() {
|
||||||
|
// Open config
|
||||||
|
this->pFile = fopen(MERMSEMR_LOG, "a");
|
||||||
|
Output2FILE::Stream() = pFile;
|
||||||
|
FILE_LOG(logINFO) << "MERMSEMR is starting...";
|
||||||
|
|
||||||
|
CfgReadConfig();
|
||||||
|
logfmt(logINFO, "Version from config: %s", CfgReadChar("version"));
|
||||||
|
|
||||||
|
// Open database
|
||||||
|
FILE_LOG(logDEBUG) << "Connecting to database...";
|
||||||
|
FILE_LOG(logDEBUG) << "host=" << CfgReadChar("database.host") << ", name=" << CfgReadChar("database.name") << ", user=" << CfgReadChar("database.user") << ", pass=***hidden***, port=" << CfgReadLong("database.port");
|
||||||
|
|
||||||
|
this->db = 0;
|
||||||
|
try {
|
||||||
|
this->db = pgsql_db_connect(CfgReadChar("database.host"),
|
||||||
|
CfgReadChar("database.name"),
|
||||||
|
CfgReadChar("database.user"),
|
||||||
|
CfgReadChar("database.pass"),
|
||||||
|
CfgReadLong("database.port") );
|
||||||
|
} catch (...) {
|
||||||
|
logfmt(logDEBUG, "Exception!");
|
||||||
|
}
|
||||||
|
logfmt(logDEBUG, "Database connection %s", this->db>0?"successful":"failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
long MermsEmr::mermsemr_api(CVars in, CVars &out) {
|
||||||
|
long retval = PHP_API_BAD_PARAM;
|
||||||
|
try {
|
||||||
|
retval = mermsemr_api_main(in, out);
|
||||||
|
} catch (bad_parameter) {
|
||||||
|
out["status"] = "Incorrect input parameter";
|
||||||
|
} catch (...) {
|
||||||
|
out["status"] = "Unhandled exception";
|
||||||
|
}
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* MermsEmr::cfgReadChar(const char *parameter) {
|
||||||
|
return CfgReadChar(parameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
long MermsEmr::cfgReadLong(const char *parameter) {
|
||||||
|
return CfgReadLong(parameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MermsEmr::logMessage(const char *message) {
|
||||||
|
FILE_LOG(logINFO) << message;
|
||||||
|
}
|
||||||
|
|
||||||
|
MermsEmr::~MermsEmr() {
|
||||||
|
FILE_LOG(logINFO) << "MERMSEMR is stopping...";
|
||||||
|
if (db>0) {
|
||||||
|
FILE_LOG(logDEBUG) << "Closing database connection";
|
||||||
|
pgsql_close();
|
||||||
|
}
|
||||||
|
// Do we need it?
|
||||||
|
if (this->pFile) {
|
||||||
|
fclose(this->pFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,304 @@
|
|||||||
|
#include "php_mermsemr_api.h"
|
||||||
|
#include "php_mermsemr_api_ns.h"
|
||||||
|
#include "mermsemr.h"
|
||||||
|
#include "cfg.h"
|
||||||
|
#include "clog.h"
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
#include "safestring.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
#include <ext/standard/info.h>
|
||||||
|
|
||||||
|
zend_object_handlers mermsemr_object_handlers;
|
||||||
|
|
||||||
|
typedef struct _mermsemr_object {
|
||||||
|
MermsEmr *mermsemr;
|
||||||
|
zend_object std;
|
||||||
|
} mermsemr_object;
|
||||||
|
|
||||||
|
static inline mermsemr_object *php_mermsemr_obj_from_obj(zend_object *obj) {
|
||||||
|
return (mermsemr_object*)((char*)(obj) - XtOffsetOf(mermsemr_object, std));
|
||||||
|
}
|
||||||
|
|
||||||
|
#define Z_TSTOBJ_P(zv) php_mermsemr_obj_from_obj(Z_OBJ_P((zv)))
|
||||||
|
|
||||||
|
zend_class_entry *mermsemr_ce;
|
||||||
|
|
||||||
|
#define SET_ENV( env ) \
|
||||||
|
if (NULL != (token = zend_hash_str_find(_SERVER, env, sizeof(env)-1))) {\
|
||||||
|
setenv( env, Z_STRVAL_P(token), 1 ); \
|
||||||
|
logfmt( logINFO, env " = %s", Z_STRVAL_P(token) ); \
|
||||||
|
} else {\
|
||||||
|
unsetenv( env );\
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
PHP_METHOD(MermsEmr, __construct)
|
||||||
|
{
|
||||||
|
HashTable *_SERVER;
|
||||||
|
zval *token;
|
||||||
|
zval *id = getThis();
|
||||||
|
mermsemr_object *intern;
|
||||||
|
|
||||||
|
intern = Z_TSTOBJ_P(id);
|
||||||
|
if(intern != NULL) {
|
||||||
|
intern->mermsemr = new MermsEmr();
|
||||||
|
// Load some _SERVER data into environment
|
||||||
|
zend_string *_server = zend_string_init("_SERVER", strlen("_SERVER"), 0);
|
||||||
|
zend_is_auto_global(_server);
|
||||||
|
if (Z_TYPE(PG(http_globals)[TRACK_VARS_SERVER]) == IS_UNDEF) {
|
||||||
|
logfmt( logINFO, "_SERVER not found" );
|
||||||
|
} else {
|
||||||
|
logfmt( logINFO, "_SERVER found" );
|
||||||
|
_SERVER = Z_ARRVAL(PG(http_globals)[TRACK_VARS_SERVER]);
|
||||||
|
SET_ENV( "REMOTE_ADDR" );
|
||||||
|
SET_ENV( "SERVER_NAME" );
|
||||||
|
SET_ENV( "HTTP_COOKIE" );
|
||||||
|
SET_ENV( "QUERY_STRING" );
|
||||||
|
SET_ENV( "HTTP_X_FORWARDED_FOR" );
|
||||||
|
}
|
||||||
|
zend_string_release(_server);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_METHOD(MermsEmr, mermsemr_api)
|
||||||
|
{
|
||||||
|
zval *param, *param_out;
|
||||||
|
zval *id = getThis();
|
||||||
|
mermsemr_object *intern;
|
||||||
|
CVars input, output;
|
||||||
|
|
||||||
|
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", ¶m, ¶m_out) == FAILURE) {
|
||||||
|
// Bad parameters
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
intern = Z_TSTOBJ_P(id);
|
||||||
|
if(intern != NULL) {
|
||||||
|
// Convert input
|
||||||
|
|
||||||
|
HashTable *hash;
|
||||||
|
zend_string *key, val;
|
||||||
|
ulong num_key;
|
||||||
|
uint key_len;
|
||||||
|
zval *value;
|
||||||
|
convert_to_array_ex( param );
|
||||||
|
hash = HASH_OF( param );
|
||||||
|
zend_hash_internal_pointer_reset( hash );
|
||||||
|
ZEND_HASH_FOREACH_KEY_VAL(hash, num_key, key, value) {
|
||||||
|
if (key) { //HASH_KEY_IS_STRING
|
||||||
|
if (Z_TYPE_P(value) == IS_STRING) {
|
||||||
|
input[ ZSTR_VAL(key) ] = Z_STRVAL_P(value);
|
||||||
|
/*
|
||||||
|
} else if (Z_TYPE_P(value) == IS_LONG) {
|
||||||
|
input[ ZSTR_VAL(key) ] = Z_LVAL_P(value);
|
||||||
|
} else if (Z_TYPE_P(value) == IS_DOUBLE) {
|
||||||
|
input[ ZSTR_VAL(key) ] = Z_DVAL_P(value);
|
||||||
|
} else if (Z_TYPE_P(value) == _IS_BOOL) {
|
||||||
|
input[ ZSTR_VAL(key) ] = Z_BVAL(value) ? 1L : 0L;
|
||||||
|
} else if (Z_TYPE_P(value) == IS_NULL) {
|
||||||
|
input[ ZSTR_VAL(key) ] = ""; */
|
||||||
|
} else {
|
||||||
|
//logfmt( logINFO, "Item %s has unsupported value type", ZSTR_VAL(key) );
|
||||||
|
convert_to_string(value);
|
||||||
|
input[ ZSTR_VAL(key) ] = Z_STRVAL_P(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ZEND_HASH_FOREACH_END();
|
||||||
|
|
||||||
|
long retval = intern->mermsemr->mermsemr_api(input, output);
|
||||||
|
|
||||||
|
// Convert output
|
||||||
|
convert_to_array_ex( param_out );
|
||||||
|
CVars::iterator i;
|
||||||
|
int j = 0;
|
||||||
|
const int out_size = output.size(); // 200
|
||||||
|
const int out_value_size = 200;
|
||||||
|
char out_key[out_value_size], out_value[out_value_size];
|
||||||
|
for ( i=output.begin(); i != output.end() && j<out_size ; i++ ) {
|
||||||
|
bzero(out_key, out_value_size);
|
||||||
|
bzero(out_value, out_value_size);
|
||||||
|
j++;
|
||||||
|
logfmt( logINFO, "RET: %s=%s", i->first.c_str(), i->second.c_str() );
|
||||||
|
strsafecpy( out_key, i->first.c_str(), out_value_size );
|
||||||
|
strsafecpy( out_value, i->second.c_str(), out_value_size );
|
||||||
|
add_assoc_string( param_out, out_key, out_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_LONG(retval);
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_METHOD(MermsEmr, cfgReadChar)
|
||||||
|
{
|
||||||
|
unsigned char *parameter;
|
||||||
|
zval *id = getThis();
|
||||||
|
mermsemr_object *intern;
|
||||||
|
|
||||||
|
if (zend_parse_parameters(
|
||||||
|
ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter) == FAILURE) {
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
intern = Z_TSTOBJ_P(id);
|
||||||
|
if(intern != NULL) {
|
||||||
|
std::string s = intern->mermsemr->cfgReadChar((char*)parameter);
|
||||||
|
RETURN_STRING(s.c_str());
|
||||||
|
}
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_METHOD(MermsEmr, cfgReadLong)
|
||||||
|
{
|
||||||
|
unsigned char *parameter;
|
||||||
|
zval *id = getThis();
|
||||||
|
mermsemr_object *intern;
|
||||||
|
|
||||||
|
if (zend_parse_parameters(
|
||||||
|
ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter) == FAILURE) {
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
intern = Z_TSTOBJ_P(id);
|
||||||
|
if(intern != NULL) {
|
||||||
|
RETURN_LONG(intern->mermsemr->cfgReadLong((char*)parameter));
|
||||||
|
}
|
||||||
|
RETURN_NULL();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_METHOD(MermsEmr, logMessage)
|
||||||
|
{
|
||||||
|
unsigned char *message;
|
||||||
|
zval *id = getThis();
|
||||||
|
mermsemr_object *intern;
|
||||||
|
|
||||||
|
if (zend_parse_parameters(
|
||||||
|
ZEND_NUM_ARGS() TSRMLS_CC, "s", &message) == FAILURE) {
|
||||||
|
RETURN_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
intern = Z_TSTOBJ_P(id);
|
||||||
|
if(intern != NULL) {
|
||||||
|
intern->mermsemr->logMessage((char*)message);
|
||||||
|
RETURN_TRUE;
|
||||||
|
}
|
||||||
|
RETURN_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
const zend_function_entry mermsemr_methods[] = {
|
||||||
|
PHP_ME(MermsEmr, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
|
||||||
|
PHP_ME(MermsEmr, mermsemr_api, NULL, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(MermsEmr, cfgReadChar, NULL, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(MermsEmr, cfgReadLong, NULL, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(MermsEmr, logMessage, NULL, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_FE_END
|
||||||
|
};
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
zend_object *mermsemr_object_new(zend_class_entry *ce TSRMLS_DC)
|
||||||
|
{
|
||||||
|
mermsemr_object *intern = (mermsemr_object*)ecalloc(1,
|
||||||
|
sizeof(mermsemr_object) +
|
||||||
|
zend_object_properties_size(ce));
|
||||||
|
|
||||||
|
zend_object_std_init(&intern->std, ce TSRMLS_CC);
|
||||||
|
object_properties_init(&intern->std, ce);
|
||||||
|
|
||||||
|
intern->std.handlers = &mermsemr_object_handlers;
|
||||||
|
|
||||||
|
return &intern->std;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
static void mermsemr_object_destroy(zend_object *object)
|
||||||
|
{
|
||||||
|
mermsemr_object *my_obj;
|
||||||
|
my_obj = (mermsemr_object*)((char *)
|
||||||
|
object - XtOffsetOf(mermsemr_object, std));
|
||||||
|
|
||||||
|
// Call __destruct() from user-land.
|
||||||
|
zend_objects_destroy_object(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mermsemr_object_free(zend_object *object)
|
||||||
|
{
|
||||||
|
mermsemr_object *my_obj;
|
||||||
|
my_obj = (mermsemr_object *)((char *)
|
||||||
|
object - XtOffsetOf(mermsemr_object, std));
|
||||||
|
delete my_obj->mermsemr;
|
||||||
|
// Free the object using Zend macro.
|
||||||
|
zend_object_std_dtor(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_MINIT_FUNCTION(mermsemr_api_sameye)
|
||||||
|
{
|
||||||
|
zend_class_entry ce;
|
||||||
|
INIT_NS_CLASS_ENTRY(ce, MERMSEMR_API_SAMEYE_NS, "MermsEmr", mermsemr_methods);
|
||||||
|
mermsemr_ce = zend_register_internal_class(&ce TSRMLS_CC);
|
||||||
|
mermsemr_ce->create_object = mermsemr_object_new;
|
||||||
|
|
||||||
|
memcpy(&mermsemr_object_handlers,
|
||||||
|
zend_get_std_object_handlers(),
|
||||||
|
sizeof(mermsemr_object_handlers));
|
||||||
|
|
||||||
|
// Handler for free'ing the object.
|
||||||
|
mermsemr_object_handlers.free_obj = mermsemr_object_free;
|
||||||
|
|
||||||
|
// Handler for the destructor.
|
||||||
|
mermsemr_object_handlers.dtor_obj = mermsemr_object_destroy;
|
||||||
|
|
||||||
|
// Offset into the engine.
|
||||||
|
mermsemr_object_handlers.offset = XtOffsetOf(mermsemr_object, std);
|
||||||
|
|
||||||
|
return SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
PHP_MINFO_FUNCTION(mermsemr_api_sameye)
|
||||||
|
{
|
||||||
|
php_info_print_table_start();
|
||||||
|
php_info_print_table_row(2, "MERMSEMR API support", "enabled");
|
||||||
|
php_info_print_table_row(2, "Log File", MERMSEMR_LOG);
|
||||||
|
php_info_print_table_row(2, "Config File", MERMSEMR_CONFIG"mermsemr_api.conf");
|
||||||
|
php_info_print_table_row(2, "Build Date", __DATE__);
|
||||||
|
php_info_print_table_row(2, "Build Time", __TIME__);
|
||||||
|
php_info_print_table_row(2, "Namespace", MERMSEMR_API_SAMEYE_NS);
|
||||||
|
php_info_print_table_row(2, "Version", PHP_MERMSEMR_API_SAMEYE_EXTVER);
|
||||||
|
php_info_print_table_end();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------ // ------------------------------------------------------------------
|
||||||
|
zend_module_entry mermsemr_api_sameye_module_entry = {
|
||||||
|
#if ZEND_MODULE_API_NO >= 20010901
|
||||||
|
STANDARD_MODULE_HEADER,
|
||||||
|
#endif
|
||||||
|
PHP_MERMSEMR_API_SAMEYE_EXTNAME,
|
||||||
|
NULL, /* Functions */
|
||||||
|
PHP_MINIT(mermsemr_api_sameye),
|
||||||
|
NULL, /* MSHUTDOWN */
|
||||||
|
NULL, /* RINIT */
|
||||||
|
NULL, /* RSHUTDOWN */
|
||||||
|
PHP_MINFO(mermsemr_api_sameye), /* MINFO */
|
||||||
|
#if ZEND_MODULE_API_NO >= 20010901
|
||||||
|
PHP_MERMSEMR_API_SAMEYE_EXTVER,
|
||||||
|
#endif
|
||||||
|
STANDARD_MODULE_PROPERTIES
|
||||||
|
};
|
||||||
|
|
||||||
|
//#ifdef COMPILE_DL_MERMSEMR_API_SAMEYE
|
||||||
|
extern "C" {
|
||||||
|
ZEND_GET_MODULE(mermsemr_api_sameye)
|
||||||
|
}
|
||||||
|
//#endif
|
||||||
@@ -0,0 +1,216 @@
|
|||||||
|
#include "pgsql.h"
|
||||||
|
#include "clog.h"
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
PGconn *conn;
|
||||||
|
|
||||||
|
int pgsql_db_connect(const char*host,const char*name,const char*user,const char*pass,long port)
|
||||||
|
{
|
||||||
|
FILE_LOG(logSQL) << "pgsql_db_connect()";
|
||||||
|
static std::string connection_str;
|
||||||
|
|
||||||
|
if(host) {
|
||||||
|
connection_str+="host=";
|
||||||
|
connection_str+=host;
|
||||||
|
}
|
||||||
|
if(name) {
|
||||||
|
connection_str+=" dbname=";
|
||||||
|
connection_str+=name;
|
||||||
|
}
|
||||||
|
if(user) {
|
||||||
|
connection_str+=" user=";
|
||||||
|
connection_str+=user;
|
||||||
|
}
|
||||||
|
if(pass) {
|
||||||
|
connection_str+=" password=";
|
||||||
|
connection_str+=pass;
|
||||||
|
}
|
||||||
|
if(port>0) {
|
||||||
|
char pdb_port[20];
|
||||||
|
connection_str+=" port=";
|
||||||
|
connection_str+=pgsql_uitoa(port,pdb_port,10);
|
||||||
|
}
|
||||||
|
|
||||||
|
conn = PQconnectdb(connection_str.c_str());
|
||||||
|
if (PQstatus(conn) != CONNECTION_OK) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void pgsql_close()
|
||||||
|
{
|
||||||
|
FILE_LOG(logSQL) << "pgsql_close()";
|
||||||
|
if (PQstatus(conn)==CONNECTION_OK) {
|
||||||
|
PQfinish(conn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int pgsql_exec(const char * format, ... )
|
||||||
|
{
|
||||||
|
FILE_LOG(logSQL) << "pgsql_exec()";
|
||||||
|
char query[16384];
|
||||||
|
va_list args;
|
||||||
|
va_start (args, format);
|
||||||
|
vsprintf (query, format, args);
|
||||||
|
//perror (buffer);
|
||||||
|
va_end (args);
|
||||||
|
|
||||||
|
FILE_LOG(logSQL) << "About to run query: ";
|
||||||
|
FILE_LOG(logSQL) << query;
|
||||||
|
/* Escape any PostgrsSQL-unsafe characters */
|
||||||
|
// user_size = PQescapeStringConn (conn, user_data, username, strlen(username), &pqesc_error);
|
||||||
|
int num = 0;
|
||||||
|
char *cmdTuples = NULL;
|
||||||
|
PGresult *res = PQexec(conn, query);
|
||||||
|
if(!res) {
|
||||||
|
/* Error */
|
||||||
|
FILE_LOG(logSQL) << "Error: NULL result";
|
||||||
|
num = -1;
|
||||||
|
} else {
|
||||||
|
switch (PQresultStatus(res)) {
|
||||||
|
case PGRES_TUPLES_OK:
|
||||||
|
case PGRES_COMMAND_OK:
|
||||||
|
cmdTuples = PQcmdTuples(res);
|
||||||
|
FILE_LOG(logSQL) << "PQcmdTuples: " << cmdTuples;
|
||||||
|
num = atoi(cmdTuples);
|
||||||
|
break;
|
||||||
|
case PGRES_EMPTY_QUERY:
|
||||||
|
case PGRES_BAD_RESPONSE:
|
||||||
|
case PGRES_NONFATAL_ERROR:
|
||||||
|
case PGRES_FATAL_ERROR:
|
||||||
|
case PGRES_COPY_OUT:
|
||||||
|
case PGRES_COPY_IN:
|
||||||
|
num = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (num<0) {
|
||||||
|
FILE_LOG(logSQL) << "Affected rows: ERROR";
|
||||||
|
} else {
|
||||||
|
FILE_LOG(logSQL) << "Affected rows: " << num;
|
||||||
|
}
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
|
const PGresult* pgsql_query(const char * format, ... )
|
||||||
|
{
|
||||||
|
FILE_LOG(logSQL) << "pgsql_query()";
|
||||||
|
char query[16384];
|
||||||
|
va_list args;
|
||||||
|
va_start (args, format);
|
||||||
|
vsprintf (query, format, args);
|
||||||
|
//perror (buffer);
|
||||||
|
va_end (args);
|
||||||
|
|
||||||
|
FILE_LOG(logSQL) << "About to run query: ";
|
||||||
|
FILE_LOG(logSQL) << query;
|
||||||
|
/* Escape any PostgrsSQL-unsafe characters */
|
||||||
|
// user_size = PQescapeStringConn (conn, user_data, username, strlen(username), &pqesc_error);
|
||||||
|
int num = 0;
|
||||||
|
const PGresult *res = PQexec(conn, query);
|
||||||
|
if(!res) {
|
||||||
|
/* Error */
|
||||||
|
num = -1;
|
||||||
|
FILE_LOG(logSQL) << "Error: NULL result";
|
||||||
|
} else {
|
||||||
|
switch (PQresultStatus(res)) {
|
||||||
|
case PGRES_TUPLES_OK:
|
||||||
|
case PGRES_COMMAND_OK:
|
||||||
|
num = PQntuples(res);
|
||||||
|
FILE_LOG(logSQL) << "Found rows: " << num;
|
||||||
|
break;
|
||||||
|
case PGRES_EMPTY_QUERY:
|
||||||
|
case PGRES_BAD_RESPONSE:
|
||||||
|
case PGRES_NONFATAL_ERROR:
|
||||||
|
case PGRES_FATAL_ERROR:
|
||||||
|
case PGRES_COPY_OUT:
|
||||||
|
case PGRES_COPY_IN:
|
||||||
|
num = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (num>0) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
FILE_LOG(logSQL) << "Found rows: " << (num<0?"ERROR":"0");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int pgsql_num_rows(const PGresult *res)
|
||||||
|
{
|
||||||
|
if (res) {
|
||||||
|
return PQntuples(res);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int pgsql_num_fields(const PGresult *res)
|
||||||
|
{
|
||||||
|
if (res) {
|
||||||
|
return PQnfields(res);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
map<const char*,const char*> pgsql_fetch_assoc(const PGresult *res, int row)
|
||||||
|
{
|
||||||
|
map<const char*, const char*> result;
|
||||||
|
if (res) {
|
||||||
|
const int rows = PQntuples(res);
|
||||||
|
if (rows>0 && row<rows) {
|
||||||
|
const int num = PQnfields(res);
|
||||||
|
if (num>0) {
|
||||||
|
for (int i=0; i<num; i++) {
|
||||||
|
result[PQfname(res,i)] = PQgetvalue(res,row,i);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<const char*> pgsql_fetch_row(const PGresult *res, int row)
|
||||||
|
{
|
||||||
|
vector<const char*> result;
|
||||||
|
if (res) {
|
||||||
|
const int rows = PQntuples(res);
|
||||||
|
if (rows>0 && row<rows) {
|
||||||
|
const int num = PQnfields(res);
|
||||||
|
if (num>0) {
|
||||||
|
for (int i=0; i<num; i++) {
|
||||||
|
result.push_back(PQgetvalue(res,row,i));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * pgsql_uitoa(unsigned n, char *s, int radix)
|
||||||
|
{
|
||||||
|
static const char tab[] =
|
||||||
|
"0123456789abcdef";
|
||||||
|
char *p = s;
|
||||||
|
char *q = s;
|
||||||
|
/* generate digits in reverse order */
|
||||||
|
do {
|
||||||
|
*p++ = tab[n % radix];
|
||||||
|
n /= radix;
|
||||||
|
} while (n != 0);
|
||||||
|
*p-- = '\0';
|
||||||
|
/* reverse digits */
|
||||||
|
while (q < p) {
|
||||||
|
int temp = *p;
|
||||||
|
*p-- = *q;
|
||||||
|
*q++ = temp;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
vi:ts=2
|
||||||
|
*/
|
||||||
@@ -0,0 +1,362 @@
|
|||||||
|
#include "pgsql.h"
|
||||||
|
#include "pgsql_wrapper.h"
|
||||||
|
#include "clog.h"
|
||||||
|
#include <safestring.h>
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
#include <cassert>
|
||||||
|
#include <cstdarg>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
void map_to_cvars(map<const char *,const char *>f, CVars &rec)
|
||||||
|
{
|
||||||
|
map<const char *,const char *>::iterator it;
|
||||||
|
for(it = f.begin(); it != f.end(); it++) {
|
||||||
|
logfmt( logINFO, "f[%s] = %s", it->first, it->second );
|
||||||
|
rec[it->first] = it->second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void load_db_record( const char * table, CVars &rec, const char * where, ... )
|
||||||
|
{
|
||||||
|
logfmt( FLOG_MAX, "void load_db_record( const char * table, CVars &rec, const char * where, ... )");
|
||||||
|
|
||||||
|
size_t buf_size = 512;
|
||||||
|
char *buffer = new char[buf_size];
|
||||||
|
|
||||||
|
va_list argPtr;
|
||||||
|
size_t length;
|
||||||
|
std::string cmd;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (!buffer) {
|
||||||
|
assert(buffer); // to stop when debugging
|
||||||
|
cmd = std::string("<alloc problem>", 16);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
va_start(argPtr, where);
|
||||||
|
length = vsnprintf(buffer, buf_size, where, argPtr);
|
||||||
|
va_end(argPtr);
|
||||||
|
|
||||||
|
if (length >= 0 && length < buf_size - 1) {
|
||||||
|
// string fits into current buffer
|
||||||
|
cmd = std::string(buffer, length);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// otherwise resize buffer :
|
||||||
|
buf_size *= 2;
|
||||||
|
// fprintf(stderr, "Reallocating vstrf-buffer to size=%u\n", buf_size);
|
||||||
|
delete [] buffer;
|
||||||
|
buffer = new char[buf_size];
|
||||||
|
}
|
||||||
|
|
||||||
|
const PGresult* res = pgsql_query("SELECT * FROM %s WHERE %s", table, cmd.c_str() );
|
||||||
|
|
||||||
|
if( buffer ) delete [] buffer;
|
||||||
|
|
||||||
|
if (!res || pgsql_num_rows(res)!=1) return;
|
||||||
|
|
||||||
|
map<const char*,const char*>f = pgsql_fetch_assoc(res, 0);
|
||||||
|
logfmt( FLOG_MAX, "load_db_record(%s) num_cols=%d", table, f.size() );
|
||||||
|
if (f.empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
map<const char *,const char *>::iterator it;
|
||||||
|
for(it = f.begin(); it != f.end(); it++) {
|
||||||
|
rec[ it->first ] = it->second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function now supports binary data
|
||||||
|
long load_db_record( CVars &rec, const char * query, ... )
|
||||||
|
{
|
||||||
|
logfmt( FLOG_MAX, "long load_db_record( CVars &rec, const char * query, ... )");
|
||||||
|
|
||||||
|
size_t buf_size = 512;
|
||||||
|
char *buffer = new char[buf_size];
|
||||||
|
|
||||||
|
va_list argPtr;
|
||||||
|
size_t length;
|
||||||
|
std::string cmd;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (!buffer) {
|
||||||
|
assert(buffer); // to stop when debugging
|
||||||
|
cmd = std::string("<alloc problem>", 16);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
va_start(argPtr, query);
|
||||||
|
length = vsnprintf(buffer, buf_size, query, argPtr);
|
||||||
|
va_end(argPtr);
|
||||||
|
|
||||||
|
if (length >= 0 && length < buf_size - 1) {
|
||||||
|
// string fits into current buffer
|
||||||
|
cmd = std::string(buffer, length);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// otherwise resize buffer :
|
||||||
|
buf_size *= 2;
|
||||||
|
// fprintf(stderr, "Reallocating vstrf-buffer to size=%u\n", buf_size);
|
||||||
|
delete [] buffer;
|
||||||
|
buffer = new char[buf_size];
|
||||||
|
}
|
||||||
|
|
||||||
|
const PGresult* res = pgsql_query("%s", cmd.c_str() );
|
||||||
|
|
||||||
|
if( buffer ) delete [] buffer;
|
||||||
|
|
||||||
|
if (!res || pgsql_num_rows(res)!=1) return -1l;
|
||||||
|
|
||||||
|
map<const char*,const char*>f = pgsql_fetch_assoc(res, 0);
|
||||||
|
logfmt( FLOG_MAX, "load_db_record(%s) num_cols=%d", cmd.c_str(), f.size() );
|
||||||
|
if (f.empty()) {
|
||||||
|
return 0l;
|
||||||
|
}
|
||||||
|
|
||||||
|
map<const char *,const char *>::iterator it;
|
||||||
|
for(it = f.begin(); it != f.end(); it++) {
|
||||||
|
rec[ it->first ] = it->second;
|
||||||
|
}
|
||||||
|
return 1l;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX_BINARY_PARS 20
|
||||||
|
|
||||||
|
long insert_db_record( int mode, const char *table, const char *seq, CVars &rec )
|
||||||
|
{
|
||||||
|
CVars::const_iterator i;
|
||||||
|
char cmd[128]; /*cols[1024], vals[1024]; cols[0] = 0; vals[0] = 0;*/
|
||||||
|
bool first = true;
|
||||||
|
string cols, vals;
|
||||||
|
int bind_i = 0;
|
||||||
|
long int sz[MAX_BINARY_PARS]; bzero( sz, sizeof(sz) ); // provides binding for all binary columns simultaneously
|
||||||
|
int binary_i = 0;
|
||||||
|
|
||||||
|
logfmt( FLOG_MAX, "insert_db_record()" );
|
||||||
|
|
||||||
|
snprintf( cmd, sizeof(cmd), "INSERT INTO %s (%%s) VALUES (%%s)", table );
|
||||||
|
|
||||||
|
for ( i=rec.begin(); i != rec.end(); i++ )
|
||||||
|
{
|
||||||
|
NEED_ESC;
|
||||||
|
// logfmt( FLOG_MAX, "'%s': i->second.valid()=%d, db()=%d", i->first.c_str(), i->second.valid(), i->second.db() );
|
||||||
|
|
||||||
|
if ( (DBS_VALID & mode) && !i->second.valid() ) continue;
|
||||||
|
if ( (DBS_STREAM & mode ) && !i->second.db() ) continue;
|
||||||
|
//logfmt( FLOG_MAX, "insert_db_record(): %s = %s", i->first.c_str(), i->second.c_str() );
|
||||||
|
|
||||||
|
cols += string(first?"":",") + i->first;
|
||||||
|
if ( !first ) vals += ",";
|
||||||
|
|
||||||
|
if ( i->second.binary() )
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
vals += '?';
|
||||||
|
sz[binary_i] = i->second.size();
|
||||||
|
char *data = (char*)i->second.data();
|
||||||
|
|
||||||
|
//logfmt( FLOG_MAX, "saving binary parameter '%s', len = %d", i->first.c_str(), i->second.size() );
|
||||||
|
|
||||||
|
SQLBindParameter( st.hstmt, ++bind_i, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, sz[binary_i], 0, data, sz[binary_i], &sz[binary_i] );
|
||||||
|
|
||||||
|
if ( binary_i++ == MAX_BINARY_PARS )
|
||||||
|
{
|
||||||
|
logfmt( FLOG_MAX, "Exceeded maximum allowed binary parameters" );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
throw err("Binary parameters are not supported");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
vals += string("E'") + esc(i->second.c_str()) + "'";
|
||||||
|
|
||||||
|
/*strcatf( cols, sizeof(cols), "%s%s", first?"":",", i->first.c_str() );
|
||||||
|
strcatf( vals, sizeof(vals), "%s'%s'", first?"":",", i->second.c_str() );*/
|
||||||
|
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int res = pgsql_exec( cmd, cols.c_str(), vals.c_str() );
|
||||||
|
|
||||||
|
return curr_val( seq );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void update_db_record( int mode, const char * table, CVars &rec, long id, const char * where, ... ) throw ( bad_parameter )
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start( ap, where );
|
||||||
|
v_update_db_record( mode, table, rec, "id", id, where, ap );
|
||||||
|
va_end( ap );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void update_db_record( int mode, const char * table, CVars &rec, const char *index, long id, const char * where, ... ) throw ( bad_parameter )
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start( ap, where );
|
||||||
|
v_update_db_record( mode, table, rec, index, id, where, ap );
|
||||||
|
va_end( ap );
|
||||||
|
}
|
||||||
|
|
||||||
|
void v_update_db_record( int mode, const char * table, CVars &rec, const char *index, long id, const char * where, va_list ap ) throw ( bad_parameter )
|
||||||
|
{
|
||||||
|
logfmt( FLOG_MAX, "update_db_record()" );
|
||||||
|
int bind_i = 0;
|
||||||
|
|
||||||
|
if ( !id ) throw bad_parameter( rec, "id" );
|
||||||
|
|
||||||
|
CVars::const_iterator i;
|
||||||
|
char cmd[128];
|
||||||
|
bool first = true;
|
||||||
|
string cols;
|
||||||
|
char * wherestr;
|
||||||
|
|
||||||
|
snprintf( cmd, sizeof(cmd), "UPDATE %s SET %%s WHERE %s=%lu AND %%s", table, index, id );
|
||||||
|
|
||||||
|
for ( i=rec.begin(); i != rec.end(); i++ )
|
||||||
|
{
|
||||||
|
NEED_ESC;
|
||||||
|
if ( !i->second.valid() ) continue;
|
||||||
|
if ( (DBS_STREAM & mode) && !i->second.db() ) continue;
|
||||||
|
|
||||||
|
cols += string(first?"":",") + i->first + "=";
|
||||||
|
|
||||||
|
if ( ! i->second.binary() )
|
||||||
|
cols += string("E'") + esc(i->second.c_str()) + "'";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
cols += "?";
|
||||||
|
long int sz = i->second.size();
|
||||||
|
char *data = (char*)i->second.data();
|
||||||
|
|
||||||
|
SQLBindParameter( st.hstmt, ++bind_i, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, sz, 0, data, sz, &sz );
|
||||||
|
*/
|
||||||
|
throw err("Binary data is not supported");
|
||||||
|
}
|
||||||
|
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( where )
|
||||||
|
{
|
||||||
|
int size = vsnprintf( NULL, 0, where, ap ) + 1;
|
||||||
|
wherestr = (char*)malloc( size );
|
||||||
|
if ( !wherestr ) throw err("malloc() error");
|
||||||
|
vsnprintf( wherestr, size, where, ap );
|
||||||
|
}
|
||||||
|
|
||||||
|
int rows = pgsql_exec( cmd, cols.c_str(), where?wherestr:"true" );
|
||||||
|
if ( where )
|
||||||
|
free( wherestr );
|
||||||
|
|
||||||
|
if ( rows!=1 ) throw bad_parameter( rec, "id" );
|
||||||
|
}
|
||||||
|
|
||||||
|
long curr_val( const char *seq )
|
||||||
|
{
|
||||||
|
long size = 20+strlen(seq);
|
||||||
|
char cmd[size];
|
||||||
|
snprintf( cmd, size, "SELECT currval('%s')", seq );
|
||||||
|
logfmt( FLOG_MAX, "%s", cmd);
|
||||||
|
const PGresult* res = pgsql_query( cmd );
|
||||||
|
if (res && pgsql_num_rows(res)>0) {
|
||||||
|
vector<const char *>f = pgsql_fetch_row(res,0);
|
||||||
|
if (!f.empty() && f.size()>0) {
|
||||||
|
return atol(f[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logfmt( FLOG_MAX, "SQL error" );
|
||||||
|
return -1l;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------- class CEscape ----------------
|
||||||
|
|
||||||
|
char * CEscape::New( int sz )
|
||||||
|
{
|
||||||
|
if ( ESCAPE_MAX_VARS==n )
|
||||||
|
{
|
||||||
|
logfmt( FLOG_MAX, "CEscape::New() Maximum number of variables reached" );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
vars[n] = new char[sz];
|
||||||
|
n++;
|
||||||
|
|
||||||
|
return vars[n-1];
|
||||||
|
}
|
||||||
|
|
||||||
|
CEscape::CEscape( char * st )
|
||||||
|
{
|
||||||
|
n = 0;
|
||||||
|
this->st = st;
|
||||||
|
}
|
||||||
|
|
||||||
|
CEscape::~CEscape()
|
||||||
|
{
|
||||||
|
for ( int i=0; i<n; i++ )
|
||||||
|
delete vars[i];
|
||||||
|
n = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * CEscape::Escape( const char * param )
|
||||||
|
{
|
||||||
|
if ( !param ) return NULL;
|
||||||
|
int len = this->EscapeLength(param);
|
||||||
|
return this->EscapeReal( param, New(len), len );
|
||||||
|
}
|
||||||
|
|
||||||
|
int CEscape::EscapeLength( const char * par )
|
||||||
|
{
|
||||||
|
if ( !par ) return 0;
|
||||||
|
|
||||||
|
int i, len = strlen(par), extra = 0;
|
||||||
|
|
||||||
|
for ( i=0; i<len; i++ )
|
||||||
|
if ( par[i]=='\'' || par[i]=='\\' )
|
||||||
|
extra++;
|
||||||
|
|
||||||
|
return len+extra+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * CEscape::EscapeReal( const char * cmd, char * _esc, int sz )
|
||||||
|
{
|
||||||
|
char * c, * c1, * d, *dend;
|
||||||
|
char * esc = _esc?_esc:this->esc;
|
||||||
|
|
||||||
|
if (!sz) sz = sizeof(this->esc);
|
||||||
|
|
||||||
|
c = (char*)cmd; esc[0] = 0; d = esc; dend = d+sz;
|
||||||
|
|
||||||
|
if ( !cmd ) return esc;
|
||||||
|
|
||||||
|
// LOG( cmd, LOG_MAX );
|
||||||
|
|
||||||
|
while ( c<cmd+strlen(cmd) )
|
||||||
|
{
|
||||||
|
c1 = c + strcspn( c, "'\\" ); // apostrophe and backslash
|
||||||
|
|
||||||
|
if ( !*c1 )
|
||||||
|
{
|
||||||
|
strsafecpy( d, c, dend-d );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
strnsafecpy( d, c, c1-c, dend-d );
|
||||||
|
d += strlen(d);
|
||||||
|
//if (*(c1+0)=='\'') strcatf( d, dend-d, "'%c", *c1 );
|
||||||
|
strcatf( d, dend-d, "\\%c", *c1 );
|
||||||
|
d += strlen(d);
|
||||||
|
c = c1+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// LOG( esc, LOG_MAX );
|
||||||
|
|
||||||
|
return esc;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -0,0 +1,179 @@
|
|||||||
|
#include "safestring.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
char * strsafecpy( char * dest, const char * src, int size )
|
||||||
|
{
|
||||||
|
if ( src==dest ) return dest;
|
||||||
|
if ( size<=0 ) return dest;
|
||||||
|
dest[0] = 0;
|
||||||
|
if ( !src ) return dest;
|
||||||
|
|
||||||
|
int len = strlen( src );
|
||||||
|
|
||||||
|
if ( len>=size )
|
||||||
|
len = size-1; // to be safe
|
||||||
|
|
||||||
|
strncpy( dest, src, len );
|
||||||
|
dest[ len ] = 0;
|
||||||
|
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * strnsafecpy( char * dest, const char * src, int n, int size )
|
||||||
|
{
|
||||||
|
if ( size<=0 ) return dest;
|
||||||
|
dest[0] = 0;
|
||||||
|
if ( !src ) return dest;
|
||||||
|
|
||||||
|
if ( n>=size )
|
||||||
|
n = size-1;
|
||||||
|
|
||||||
|
strncpy( dest, src, n );
|
||||||
|
dest[ n ] = 0;
|
||||||
|
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char * strsafecat( char * dest, const char * src, int size )
|
||||||
|
{
|
||||||
|
int len = strlen( src );
|
||||||
|
int start = strlen(dest);
|
||||||
|
size -= start;
|
||||||
|
|
||||||
|
if ( len>=size )
|
||||||
|
len = size-1; // to be safe
|
||||||
|
|
||||||
|
strncat( dest, src, len );
|
||||||
|
dest[ start+len ] = 0;
|
||||||
|
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char * strnsafecat( char * dest, const char * src, int n, int size )
|
||||||
|
{
|
||||||
|
int len = strlen( src );
|
||||||
|
if ( n<len ) len = n;
|
||||||
|
|
||||||
|
int start = strlen(dest);
|
||||||
|
size -= start;
|
||||||
|
|
||||||
|
if ( len>=size )
|
||||||
|
len = size-1; // to be safe
|
||||||
|
|
||||||
|
strncat( dest, src, len );
|
||||||
|
dest[ start+len ] = 0;
|
||||||
|
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char * strcatf( char * dest, int size, const char * fmt, ... )
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start( ap, fmt );
|
||||||
|
|
||||||
|
int len = strlen( dest );
|
||||||
|
|
||||||
|
if ( size-len > 0 )
|
||||||
|
vsnprintf( &dest[len], size-len, fmt, ap );
|
||||||
|
|
||||||
|
dest[ size-1 ] = 0;
|
||||||
|
|
||||||
|
va_end( ap );
|
||||||
|
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char * toupper( char * s, char * dest/*=NULL*/, int sz/*=0*/ )
|
||||||
|
{
|
||||||
|
if (!s) return NULL;
|
||||||
|
char *c = s;
|
||||||
|
char *d = dest?dest:s;
|
||||||
|
|
||||||
|
while (*c) {
|
||||||
|
if (d-dest>=sz-1) break;
|
||||||
|
*d = toupper(*c);
|
||||||
|
c++; d++;
|
||||||
|
}
|
||||||
|
|
||||||
|
*d = 0;
|
||||||
|
|
||||||
|
return dest?dest:s;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * tolower( char * s, char * dest/*=NULL*/, int sz/*=0*/ )
|
||||||
|
{
|
||||||
|
if (!s) return NULL;
|
||||||
|
char *c = s;
|
||||||
|
char *d = dest?dest:s;
|
||||||
|
|
||||||
|
while (*c) {
|
||||||
|
if ( dest && (d-dest>=sz-1) ) break;
|
||||||
|
*d = tolower(*c);
|
||||||
|
c++; d++;
|
||||||
|
}
|
||||||
|
|
||||||
|
*d = 0;
|
||||||
|
|
||||||
|
return dest?dest:s;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char * toupper( const char * s, char * dest, int sz )
|
||||||
|
{
|
||||||
|
return toupper( (char*)s, dest, sz );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char * tolower( const char * s, char * dest, int sz )
|
||||||
|
{
|
||||||
|
return tolower( (char*)s, dest, sz );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char * last_line( char * buf ) // find the last line and return the pointer to its beginning
|
||||||
|
{
|
||||||
|
char * line = buf, *bufend = buf + strlen(buf);
|
||||||
|
|
||||||
|
while ( char * c = strpbrk( line, "\r\n" ) )
|
||||||
|
{
|
||||||
|
c += strspn( c, "\r\n" );
|
||||||
|
|
||||||
|
if ( c==bufend )
|
||||||
|
return line;
|
||||||
|
|
||||||
|
line = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char * safestrdup( const char *s )
|
||||||
|
{
|
||||||
|
return s ? strdup( s ) : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char * strreverse( char *s )
|
||||||
|
{
|
||||||
|
int len = strlen(s);
|
||||||
|
int end = len/2;
|
||||||
|
unsigned char c;
|
||||||
|
|
||||||
|
for ( int i=0; i<end; i++ )
|
||||||
|
{
|
||||||
|
c = s[i];
|
||||||
|
s[i] = s[len-i-1];
|
||||||
|
s[len-i-1] = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,950 @@
|
|||||||
|
/*
|
||||||
|
* FIPS 180-2 SHA-224/256/384/512 implementation
|
||||||
|
* Last update: 02/02/2007
|
||||||
|
* Issue date: 04/30/2005
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005, 2007 Olivier Gay <olivier.gay@a3.epfl.ch>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the project nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#define UNROLL_LOOPS /* Enable loops unrolling */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "sha2.h"
|
||||||
|
|
||||||
|
#define SHFR(x, n) (x >> n)
|
||||||
|
#define ROTR(x, n) ((x >> n) | (x << ((sizeof(x) << 3) - n)))
|
||||||
|
#define ROTL(x, n) ((x << n) | (x >> ((sizeof(x) << 3) - n)))
|
||||||
|
#define CH(x, y, z) ((x & y) ^ (~x & z))
|
||||||
|
#define MAJ(x, y, z) ((x & y) ^ (x & z) ^ (y & z))
|
||||||
|
|
||||||
|
#define SHA256_F1(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22))
|
||||||
|
#define SHA256_F2(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25))
|
||||||
|
#define SHA256_F3(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHFR(x, 3))
|
||||||
|
#define SHA256_F4(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHFR(x, 10))
|
||||||
|
|
||||||
|
#define SHA512_F1(x) (ROTR(x, 28) ^ ROTR(x, 34) ^ ROTR(x, 39))
|
||||||
|
#define SHA512_F2(x) (ROTR(x, 14) ^ ROTR(x, 18) ^ ROTR(x, 41))
|
||||||
|
#define SHA512_F3(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHFR(x, 7))
|
||||||
|
#define SHA512_F4(x) (ROTR(x, 19) ^ ROTR(x, 61) ^ SHFR(x, 6))
|
||||||
|
|
||||||
|
#define UNPACK32(x, str) \
|
||||||
|
{ \
|
||||||
|
*((str) + 3) = (uint8) ((x) ); \
|
||||||
|
*((str) + 2) = (uint8) ((x) >> 8); \
|
||||||
|
*((str) + 1) = (uint8) ((x) >> 16); \
|
||||||
|
*((str) + 0) = (uint8) ((x) >> 24); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define PACK32(str, x) \
|
||||||
|
{ \
|
||||||
|
*(x) = ((uint32) *((str) + 3) ) \
|
||||||
|
| ((uint32) *((str) + 2) << 8) \
|
||||||
|
| ((uint32) *((str) + 1) << 16) \
|
||||||
|
| ((uint32) *((str) + 0) << 24); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define UNPACK64(x, str) \
|
||||||
|
{ \
|
||||||
|
*((str) + 7) = (uint8) ((x) ); \
|
||||||
|
*((str) + 6) = (uint8) ((x) >> 8); \
|
||||||
|
*((str) + 5) = (uint8) ((x) >> 16); \
|
||||||
|
*((str) + 4) = (uint8) ((x) >> 24); \
|
||||||
|
*((str) + 3) = (uint8) ((x) >> 32); \
|
||||||
|
*((str) + 2) = (uint8) ((x) >> 40); \
|
||||||
|
*((str) + 1) = (uint8) ((x) >> 48); \
|
||||||
|
*((str) + 0) = (uint8) ((x) >> 56); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define PACK64(str, x) \
|
||||||
|
{ \
|
||||||
|
*(x) = ((uint64) *((str) + 7) ) \
|
||||||
|
| ((uint64) *((str) + 6) << 8) \
|
||||||
|
| ((uint64) *((str) + 5) << 16) \
|
||||||
|
| ((uint64) *((str) + 4) << 24) \
|
||||||
|
| ((uint64) *((str) + 3) << 32) \
|
||||||
|
| ((uint64) *((str) + 2) << 40) \
|
||||||
|
| ((uint64) *((str) + 1) << 48) \
|
||||||
|
| ((uint64) *((str) + 0) << 56); \
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Macros used for loops unrolling */
|
||||||
|
|
||||||
|
#define SHA256_SCR(i) \
|
||||||
|
{ \
|
||||||
|
w[i] = SHA256_F4(w[i - 2]) + w[i - 7] \
|
||||||
|
+ SHA256_F3(w[i - 15]) + w[i - 16]; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define SHA512_SCR(i) \
|
||||||
|
{ \
|
||||||
|
w[i] = SHA512_F4(w[i - 2]) + w[i - 7] \
|
||||||
|
+ SHA512_F3(w[i - 15]) + w[i - 16]; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define SHA256_EXP(a, b, c, d, e, f, g, h, j) \
|
||||||
|
{ \
|
||||||
|
t1 = wv[h] + SHA256_F2(wv[e]) + CH(wv[e], wv[f], wv[g]) \
|
||||||
|
+ sha256_k[j] + w[j]; \
|
||||||
|
t2 = SHA256_F1(wv[a]) + MAJ(wv[a], wv[b], wv[c]); \
|
||||||
|
wv[d] += t1; \
|
||||||
|
wv[h] = t1 + t2; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define SHA512_EXP(a, b, c, d, e, f, g ,h, j) \
|
||||||
|
{ \
|
||||||
|
t1 = wv[h] + SHA512_F2(wv[e]) + CH(wv[e], wv[f], wv[g]) \
|
||||||
|
+ sha512_k[j] + w[j]; \
|
||||||
|
t2 = SHA512_F1(wv[a]) + MAJ(wv[a], wv[b], wv[c]); \
|
||||||
|
wv[d] += t1; \
|
||||||
|
wv[h] = t1 + t2; \
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 sha224_h0[8] =
|
||||||
|
{0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
|
||||||
|
0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4};
|
||||||
|
|
||||||
|
uint32 sha256_h0[8] =
|
||||||
|
{0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
|
||||||
|
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19};
|
||||||
|
|
||||||
|
uint64 sha384_h0[8] =
|
||||||
|
{0xcbbb9d5dc1059ed8ULL, 0x629a292a367cd507ULL,
|
||||||
|
0x9159015a3070dd17ULL, 0x152fecd8f70e5939ULL,
|
||||||
|
0x67332667ffc00b31ULL, 0x8eb44a8768581511ULL,
|
||||||
|
0xdb0c2e0d64f98fa7ULL, 0x47b5481dbefa4fa4ULL};
|
||||||
|
|
||||||
|
uint64 sha512_h0[8] =
|
||||||
|
{0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL,
|
||||||
|
0x3c6ef372fe94f82bULL, 0xa54ff53a5f1d36f1ULL,
|
||||||
|
0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL,
|
||||||
|
0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL};
|
||||||
|
|
||||||
|
uint32 sha256_k[64] =
|
||||||
|
{0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||||
|
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||||
|
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||||
|
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
||||||
|
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
|
||||||
|
0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
||||||
|
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
|
||||||
|
0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
||||||
|
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
|
||||||
|
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
||||||
|
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
|
||||||
|
0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
||||||
|
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
|
||||||
|
0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
||||||
|
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
|
||||||
|
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2};
|
||||||
|
|
||||||
|
uint64 sha512_k[80] =
|
||||||
|
{0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL,
|
||||||
|
0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL,
|
||||||
|
0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,
|
||||||
|
0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL,
|
||||||
|
0xd807aa98a3030242ULL, 0x12835b0145706fbeULL,
|
||||||
|
0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL,
|
||||||
|
0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL,
|
||||||
|
0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL,
|
||||||
|
0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL,
|
||||||
|
0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL,
|
||||||
|
0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL,
|
||||||
|
0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL,
|
||||||
|
0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL,
|
||||||
|
0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL,
|
||||||
|
0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL,
|
||||||
|
0x06ca6351e003826fULL, 0x142929670a0e6e70ULL,
|
||||||
|
0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL,
|
||||||
|
0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL,
|
||||||
|
0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL,
|
||||||
|
0x81c2c92e47edaee6ULL, 0x92722c851482353bULL,
|
||||||
|
0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL,
|
||||||
|
0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL,
|
||||||
|
0xd192e819d6ef5218ULL, 0xd69906245565a910ULL,
|
||||||
|
0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL,
|
||||||
|
0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL,
|
||||||
|
0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL,
|
||||||
|
0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL,
|
||||||
|
0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL,
|
||||||
|
0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL,
|
||||||
|
0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL,
|
||||||
|
0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL,
|
||||||
|
0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL,
|
||||||
|
0xca273eceea26619cULL, 0xd186b8c721c0c207ULL,
|
||||||
|
0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL,
|
||||||
|
0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL,
|
||||||
|
0x113f9804bef90daeULL, 0x1b710b35131c471bULL,
|
||||||
|
0x28db77f523047d84ULL, 0x32caab7b40c72493ULL,
|
||||||
|
0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL,
|
||||||
|
0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL,
|
||||||
|
0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL};
|
||||||
|
|
||||||
|
/* SHA-256 functions */
|
||||||
|
|
||||||
|
void sha256_transf(sha256_ctx *ctx, const unsigned char *message,
|
||||||
|
unsigned int block_nb)
|
||||||
|
{
|
||||||
|
uint32 w[64];
|
||||||
|
uint32 wv[8];
|
||||||
|
uint32 t1, t2;
|
||||||
|
const unsigned char *sub_block;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
int j;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (i = 0; i < (int) block_nb; i++) {
|
||||||
|
sub_block = message + (i << 6);
|
||||||
|
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
for (j = 0; j < 16; j++) {
|
||||||
|
PACK32(&sub_block[j << 2], &w[j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 16; j < 64; j++) {
|
||||||
|
SHA256_SCR(j);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 0; j < 8; j++) {
|
||||||
|
wv[j] = ctx->h[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 0; j < 64; j++) {
|
||||||
|
t1 = wv[7] + SHA256_F2(wv[4]) + CH(wv[4], wv[5], wv[6])
|
||||||
|
+ sha256_k[j] + w[j];
|
||||||
|
t2 = SHA256_F1(wv[0]) + MAJ(wv[0], wv[1], wv[2]);
|
||||||
|
wv[7] = wv[6];
|
||||||
|
wv[6] = wv[5];
|
||||||
|
wv[5] = wv[4];
|
||||||
|
wv[4] = wv[3] + t1;
|
||||||
|
wv[3] = wv[2];
|
||||||
|
wv[2] = wv[1];
|
||||||
|
wv[1] = wv[0];
|
||||||
|
wv[0] = t1 + t2;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 0; j < 8; j++) {
|
||||||
|
ctx->h[j] += wv[j];
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
PACK32(&sub_block[ 0], &w[ 0]); PACK32(&sub_block[ 4], &w[ 1]);
|
||||||
|
PACK32(&sub_block[ 8], &w[ 2]); PACK32(&sub_block[12], &w[ 3]);
|
||||||
|
PACK32(&sub_block[16], &w[ 4]); PACK32(&sub_block[20], &w[ 5]);
|
||||||
|
PACK32(&sub_block[24], &w[ 6]); PACK32(&sub_block[28], &w[ 7]);
|
||||||
|
PACK32(&sub_block[32], &w[ 8]); PACK32(&sub_block[36], &w[ 9]);
|
||||||
|
PACK32(&sub_block[40], &w[10]); PACK32(&sub_block[44], &w[11]);
|
||||||
|
PACK32(&sub_block[48], &w[12]); PACK32(&sub_block[52], &w[13]);
|
||||||
|
PACK32(&sub_block[56], &w[14]); PACK32(&sub_block[60], &w[15]);
|
||||||
|
|
||||||
|
SHA256_SCR(16); SHA256_SCR(17); SHA256_SCR(18); SHA256_SCR(19);
|
||||||
|
SHA256_SCR(20); SHA256_SCR(21); SHA256_SCR(22); SHA256_SCR(23);
|
||||||
|
SHA256_SCR(24); SHA256_SCR(25); SHA256_SCR(26); SHA256_SCR(27);
|
||||||
|
SHA256_SCR(28); SHA256_SCR(29); SHA256_SCR(30); SHA256_SCR(31);
|
||||||
|
SHA256_SCR(32); SHA256_SCR(33); SHA256_SCR(34); SHA256_SCR(35);
|
||||||
|
SHA256_SCR(36); SHA256_SCR(37); SHA256_SCR(38); SHA256_SCR(39);
|
||||||
|
SHA256_SCR(40); SHA256_SCR(41); SHA256_SCR(42); SHA256_SCR(43);
|
||||||
|
SHA256_SCR(44); SHA256_SCR(45); SHA256_SCR(46); SHA256_SCR(47);
|
||||||
|
SHA256_SCR(48); SHA256_SCR(49); SHA256_SCR(50); SHA256_SCR(51);
|
||||||
|
SHA256_SCR(52); SHA256_SCR(53); SHA256_SCR(54); SHA256_SCR(55);
|
||||||
|
SHA256_SCR(56); SHA256_SCR(57); SHA256_SCR(58); SHA256_SCR(59);
|
||||||
|
SHA256_SCR(60); SHA256_SCR(61); SHA256_SCR(62); SHA256_SCR(63);
|
||||||
|
|
||||||
|
wv[0] = ctx->h[0]; wv[1] = ctx->h[1];
|
||||||
|
wv[2] = ctx->h[2]; wv[3] = ctx->h[3];
|
||||||
|
wv[4] = ctx->h[4]; wv[5] = ctx->h[5];
|
||||||
|
wv[6] = ctx->h[6]; wv[7] = ctx->h[7];
|
||||||
|
|
||||||
|
SHA256_EXP(0,1,2,3,4,5,6,7, 0); SHA256_EXP(7,0,1,2,3,4,5,6, 1);
|
||||||
|
SHA256_EXP(6,7,0,1,2,3,4,5, 2); SHA256_EXP(5,6,7,0,1,2,3,4, 3);
|
||||||
|
SHA256_EXP(4,5,6,7,0,1,2,3, 4); SHA256_EXP(3,4,5,6,7,0,1,2, 5);
|
||||||
|
SHA256_EXP(2,3,4,5,6,7,0,1, 6); SHA256_EXP(1,2,3,4,5,6,7,0, 7);
|
||||||
|
SHA256_EXP(0,1,2,3,4,5,6,7, 8); SHA256_EXP(7,0,1,2,3,4,5,6, 9);
|
||||||
|
SHA256_EXP(6,7,0,1,2,3,4,5,10); SHA256_EXP(5,6,7,0,1,2,3,4,11);
|
||||||
|
SHA256_EXP(4,5,6,7,0,1,2,3,12); SHA256_EXP(3,4,5,6,7,0,1,2,13);
|
||||||
|
SHA256_EXP(2,3,4,5,6,7,0,1,14); SHA256_EXP(1,2,3,4,5,6,7,0,15);
|
||||||
|
SHA256_EXP(0,1,2,3,4,5,6,7,16); SHA256_EXP(7,0,1,2,3,4,5,6,17);
|
||||||
|
SHA256_EXP(6,7,0,1,2,3,4,5,18); SHA256_EXP(5,6,7,0,1,2,3,4,19);
|
||||||
|
SHA256_EXP(4,5,6,7,0,1,2,3,20); SHA256_EXP(3,4,5,6,7,0,1,2,21);
|
||||||
|
SHA256_EXP(2,3,4,5,6,7,0,1,22); SHA256_EXP(1,2,3,4,5,6,7,0,23);
|
||||||
|
SHA256_EXP(0,1,2,3,4,5,6,7,24); SHA256_EXP(7,0,1,2,3,4,5,6,25);
|
||||||
|
SHA256_EXP(6,7,0,1,2,3,4,5,26); SHA256_EXP(5,6,7,0,1,2,3,4,27);
|
||||||
|
SHA256_EXP(4,5,6,7,0,1,2,3,28); SHA256_EXP(3,4,5,6,7,0,1,2,29);
|
||||||
|
SHA256_EXP(2,3,4,5,6,7,0,1,30); SHA256_EXP(1,2,3,4,5,6,7,0,31);
|
||||||
|
SHA256_EXP(0,1,2,3,4,5,6,7,32); SHA256_EXP(7,0,1,2,3,4,5,6,33);
|
||||||
|
SHA256_EXP(6,7,0,1,2,3,4,5,34); SHA256_EXP(5,6,7,0,1,2,3,4,35);
|
||||||
|
SHA256_EXP(4,5,6,7,0,1,2,3,36); SHA256_EXP(3,4,5,6,7,0,1,2,37);
|
||||||
|
SHA256_EXP(2,3,4,5,6,7,0,1,38); SHA256_EXP(1,2,3,4,5,6,7,0,39);
|
||||||
|
SHA256_EXP(0,1,2,3,4,5,6,7,40); SHA256_EXP(7,0,1,2,3,4,5,6,41);
|
||||||
|
SHA256_EXP(6,7,0,1,2,3,4,5,42); SHA256_EXP(5,6,7,0,1,2,3,4,43);
|
||||||
|
SHA256_EXP(4,5,6,7,0,1,2,3,44); SHA256_EXP(3,4,5,6,7,0,1,2,45);
|
||||||
|
SHA256_EXP(2,3,4,5,6,7,0,1,46); SHA256_EXP(1,2,3,4,5,6,7,0,47);
|
||||||
|
SHA256_EXP(0,1,2,3,4,5,6,7,48); SHA256_EXP(7,0,1,2,3,4,5,6,49);
|
||||||
|
SHA256_EXP(6,7,0,1,2,3,4,5,50); SHA256_EXP(5,6,7,0,1,2,3,4,51);
|
||||||
|
SHA256_EXP(4,5,6,7,0,1,2,3,52); SHA256_EXP(3,4,5,6,7,0,1,2,53);
|
||||||
|
SHA256_EXP(2,3,4,5,6,7,0,1,54); SHA256_EXP(1,2,3,4,5,6,7,0,55);
|
||||||
|
SHA256_EXP(0,1,2,3,4,5,6,7,56); SHA256_EXP(7,0,1,2,3,4,5,6,57);
|
||||||
|
SHA256_EXP(6,7,0,1,2,3,4,5,58); SHA256_EXP(5,6,7,0,1,2,3,4,59);
|
||||||
|
SHA256_EXP(4,5,6,7,0,1,2,3,60); SHA256_EXP(3,4,5,6,7,0,1,2,61);
|
||||||
|
SHA256_EXP(2,3,4,5,6,7,0,1,62); SHA256_EXP(1,2,3,4,5,6,7,0,63);
|
||||||
|
|
||||||
|
ctx->h[0] += wv[0]; ctx->h[1] += wv[1];
|
||||||
|
ctx->h[2] += wv[2]; ctx->h[3] += wv[3];
|
||||||
|
ctx->h[4] += wv[4]; ctx->h[5] += wv[5];
|
||||||
|
ctx->h[6] += wv[6]; ctx->h[7] += wv[7];
|
||||||
|
#endif /* !UNROLL_LOOPS */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha256(const unsigned char *message, unsigned int len, unsigned char *digest)
|
||||||
|
{
|
||||||
|
sha256_ctx ctx;
|
||||||
|
|
||||||
|
sha256_init(&ctx);
|
||||||
|
sha256_update(&ctx, message, len);
|
||||||
|
sha256_final(&ctx, digest);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha256_init(sha256_ctx *ctx)
|
||||||
|
{
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < 8; i++) {
|
||||||
|
ctx->h[i] = sha256_h0[i];
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
ctx->h[0] = sha256_h0[0]; ctx->h[1] = sha256_h0[1];
|
||||||
|
ctx->h[2] = sha256_h0[2]; ctx->h[3] = sha256_h0[3];
|
||||||
|
ctx->h[4] = sha256_h0[4]; ctx->h[5] = sha256_h0[5];
|
||||||
|
ctx->h[6] = sha256_h0[6]; ctx->h[7] = sha256_h0[7];
|
||||||
|
#endif /* !UNROLL_LOOPS */
|
||||||
|
|
||||||
|
ctx->len = 0;
|
||||||
|
ctx->tot_len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha256_update(sha256_ctx *ctx, const unsigned char *message,
|
||||||
|
unsigned int len)
|
||||||
|
{
|
||||||
|
unsigned int block_nb;
|
||||||
|
unsigned int new_len, rem_len, tmp_len;
|
||||||
|
const unsigned char *shifted_message;
|
||||||
|
|
||||||
|
tmp_len = SHA256_BLOCK_SIZE - ctx->len;
|
||||||
|
rem_len = len < tmp_len ? len : tmp_len;
|
||||||
|
|
||||||
|
memcpy(&ctx->block[ctx->len], message, rem_len);
|
||||||
|
|
||||||
|
if (ctx->len + len < SHA256_BLOCK_SIZE) {
|
||||||
|
ctx->len += len;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
new_len = len - rem_len;
|
||||||
|
block_nb = new_len / SHA256_BLOCK_SIZE;
|
||||||
|
|
||||||
|
shifted_message = message + rem_len;
|
||||||
|
|
||||||
|
sha256_transf(ctx, ctx->block, 1);
|
||||||
|
sha256_transf(ctx, shifted_message, block_nb);
|
||||||
|
|
||||||
|
rem_len = new_len % SHA256_BLOCK_SIZE;
|
||||||
|
|
||||||
|
memcpy(ctx->block, &shifted_message[block_nb << 6],
|
||||||
|
rem_len);
|
||||||
|
|
||||||
|
ctx->len = rem_len;
|
||||||
|
ctx->tot_len += (block_nb + 1) << 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha256_final(sha256_ctx *ctx, unsigned char *digest)
|
||||||
|
{
|
||||||
|
unsigned int block_nb;
|
||||||
|
unsigned int pm_len;
|
||||||
|
unsigned int len_b;
|
||||||
|
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
int i;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
block_nb = (1 + ((SHA256_BLOCK_SIZE - 9)
|
||||||
|
< (ctx->len % SHA256_BLOCK_SIZE)));
|
||||||
|
|
||||||
|
len_b = (ctx->tot_len + ctx->len) << 3;
|
||||||
|
pm_len = block_nb << 6;
|
||||||
|
|
||||||
|
memset(ctx->block + ctx->len, 0, pm_len - ctx->len);
|
||||||
|
ctx->block[ctx->len] = 0x80;
|
||||||
|
UNPACK32(len_b, ctx->block + pm_len - 4);
|
||||||
|
|
||||||
|
sha256_transf(ctx, ctx->block, block_nb);
|
||||||
|
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
for (i = 0 ; i < 8; i++) {
|
||||||
|
UNPACK32(ctx->h[i], &digest[i << 2]);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
UNPACK32(ctx->h[0], &digest[ 0]);
|
||||||
|
UNPACK32(ctx->h[1], &digest[ 4]);
|
||||||
|
UNPACK32(ctx->h[2], &digest[ 8]);
|
||||||
|
UNPACK32(ctx->h[3], &digest[12]);
|
||||||
|
UNPACK32(ctx->h[4], &digest[16]);
|
||||||
|
UNPACK32(ctx->h[5], &digest[20]);
|
||||||
|
UNPACK32(ctx->h[6], &digest[24]);
|
||||||
|
UNPACK32(ctx->h[7], &digest[28]);
|
||||||
|
#endif /* !UNROLL_LOOPS */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SHA-512 functions */
|
||||||
|
|
||||||
|
void sha512_transf(sha512_ctx *ctx, const unsigned char *message,
|
||||||
|
unsigned int block_nb)
|
||||||
|
{
|
||||||
|
uint64 w[80];
|
||||||
|
uint64 wv[8];
|
||||||
|
uint64 t1, t2;
|
||||||
|
const unsigned char *sub_block;
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
for (i = 0; i < (int) block_nb; i++) {
|
||||||
|
sub_block = message + (i << 7);
|
||||||
|
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
for (j = 0; j < 16; j++) {
|
||||||
|
PACK64(&sub_block[j << 3], &w[j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 16; j < 80; j++) {
|
||||||
|
SHA512_SCR(j);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 0; j < 8; j++) {
|
||||||
|
wv[j] = ctx->h[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 0; j < 80; j++) {
|
||||||
|
t1 = wv[7] + SHA512_F2(wv[4]) + CH(wv[4], wv[5], wv[6])
|
||||||
|
+ sha512_k[j] + w[j];
|
||||||
|
t2 = SHA512_F1(wv[0]) + MAJ(wv[0], wv[1], wv[2]);
|
||||||
|
wv[7] = wv[6];
|
||||||
|
wv[6] = wv[5];
|
||||||
|
wv[5] = wv[4];
|
||||||
|
wv[4] = wv[3] + t1;
|
||||||
|
wv[3] = wv[2];
|
||||||
|
wv[2] = wv[1];
|
||||||
|
wv[1] = wv[0];
|
||||||
|
wv[0] = t1 + t2;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = 0; j < 8; j++) {
|
||||||
|
ctx->h[j] += wv[j];
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
PACK64(&sub_block[ 0], &w[ 0]); PACK64(&sub_block[ 8], &w[ 1]);
|
||||||
|
PACK64(&sub_block[ 16], &w[ 2]); PACK64(&sub_block[ 24], &w[ 3]);
|
||||||
|
PACK64(&sub_block[ 32], &w[ 4]); PACK64(&sub_block[ 40], &w[ 5]);
|
||||||
|
PACK64(&sub_block[ 48], &w[ 6]); PACK64(&sub_block[ 56], &w[ 7]);
|
||||||
|
PACK64(&sub_block[ 64], &w[ 8]); PACK64(&sub_block[ 72], &w[ 9]);
|
||||||
|
PACK64(&sub_block[ 80], &w[10]); PACK64(&sub_block[ 88], &w[11]);
|
||||||
|
PACK64(&sub_block[ 96], &w[12]); PACK64(&sub_block[104], &w[13]);
|
||||||
|
PACK64(&sub_block[112], &w[14]); PACK64(&sub_block[120], &w[15]);
|
||||||
|
|
||||||
|
SHA512_SCR(16); SHA512_SCR(17); SHA512_SCR(18); SHA512_SCR(19);
|
||||||
|
SHA512_SCR(20); SHA512_SCR(21); SHA512_SCR(22); SHA512_SCR(23);
|
||||||
|
SHA512_SCR(24); SHA512_SCR(25); SHA512_SCR(26); SHA512_SCR(27);
|
||||||
|
SHA512_SCR(28); SHA512_SCR(29); SHA512_SCR(30); SHA512_SCR(31);
|
||||||
|
SHA512_SCR(32); SHA512_SCR(33); SHA512_SCR(34); SHA512_SCR(35);
|
||||||
|
SHA512_SCR(36); SHA512_SCR(37); SHA512_SCR(38); SHA512_SCR(39);
|
||||||
|
SHA512_SCR(40); SHA512_SCR(41); SHA512_SCR(42); SHA512_SCR(43);
|
||||||
|
SHA512_SCR(44); SHA512_SCR(45); SHA512_SCR(46); SHA512_SCR(47);
|
||||||
|
SHA512_SCR(48); SHA512_SCR(49); SHA512_SCR(50); SHA512_SCR(51);
|
||||||
|
SHA512_SCR(52); SHA512_SCR(53); SHA512_SCR(54); SHA512_SCR(55);
|
||||||
|
SHA512_SCR(56); SHA512_SCR(57); SHA512_SCR(58); SHA512_SCR(59);
|
||||||
|
SHA512_SCR(60); SHA512_SCR(61); SHA512_SCR(62); SHA512_SCR(63);
|
||||||
|
SHA512_SCR(64); SHA512_SCR(65); SHA512_SCR(66); SHA512_SCR(67);
|
||||||
|
SHA512_SCR(68); SHA512_SCR(69); SHA512_SCR(70); SHA512_SCR(71);
|
||||||
|
SHA512_SCR(72); SHA512_SCR(73); SHA512_SCR(74); SHA512_SCR(75);
|
||||||
|
SHA512_SCR(76); SHA512_SCR(77); SHA512_SCR(78); SHA512_SCR(79);
|
||||||
|
|
||||||
|
wv[0] = ctx->h[0]; wv[1] = ctx->h[1];
|
||||||
|
wv[2] = ctx->h[2]; wv[3] = ctx->h[3];
|
||||||
|
wv[4] = ctx->h[4]; wv[5] = ctx->h[5];
|
||||||
|
wv[6] = ctx->h[6]; wv[7] = ctx->h[7];
|
||||||
|
|
||||||
|
j = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
SHA512_EXP(0,1,2,3,4,5,6,7,j); j++;
|
||||||
|
SHA512_EXP(7,0,1,2,3,4,5,6,j); j++;
|
||||||
|
SHA512_EXP(6,7,0,1,2,3,4,5,j); j++;
|
||||||
|
SHA512_EXP(5,6,7,0,1,2,3,4,j); j++;
|
||||||
|
SHA512_EXP(4,5,6,7,0,1,2,3,j); j++;
|
||||||
|
SHA512_EXP(3,4,5,6,7,0,1,2,j); j++;
|
||||||
|
SHA512_EXP(2,3,4,5,6,7,0,1,j); j++;
|
||||||
|
SHA512_EXP(1,2,3,4,5,6,7,0,j); j++;
|
||||||
|
} while (j < 80);
|
||||||
|
|
||||||
|
ctx->h[0] += wv[0]; ctx->h[1] += wv[1];
|
||||||
|
ctx->h[2] += wv[2]; ctx->h[3] += wv[3];
|
||||||
|
ctx->h[4] += wv[4]; ctx->h[5] += wv[5];
|
||||||
|
ctx->h[6] += wv[6]; ctx->h[7] += wv[7];
|
||||||
|
#endif /* !UNROLL_LOOPS */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha512(const unsigned char *message, unsigned int len,
|
||||||
|
unsigned char *digest)
|
||||||
|
{
|
||||||
|
sha512_ctx ctx;
|
||||||
|
|
||||||
|
sha512_init(&ctx);
|
||||||
|
sha512_update(&ctx, message, len);
|
||||||
|
sha512_final(&ctx, digest);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha512_init(sha512_ctx *ctx)
|
||||||
|
{
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < 8; i++) {
|
||||||
|
ctx->h[i] = sha512_h0[i];
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
ctx->h[0] = sha512_h0[0]; ctx->h[1] = sha512_h0[1];
|
||||||
|
ctx->h[2] = sha512_h0[2]; ctx->h[3] = sha512_h0[3];
|
||||||
|
ctx->h[4] = sha512_h0[4]; ctx->h[5] = sha512_h0[5];
|
||||||
|
ctx->h[6] = sha512_h0[6]; ctx->h[7] = sha512_h0[7];
|
||||||
|
#endif /* !UNROLL_LOOPS */
|
||||||
|
|
||||||
|
ctx->len = 0;
|
||||||
|
ctx->tot_len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha512_update(sha512_ctx *ctx, const unsigned char *message,
|
||||||
|
unsigned int len)
|
||||||
|
{
|
||||||
|
unsigned int block_nb;
|
||||||
|
unsigned int new_len, rem_len, tmp_len;
|
||||||
|
const unsigned char *shifted_message;
|
||||||
|
|
||||||
|
tmp_len = SHA512_BLOCK_SIZE - ctx->len;
|
||||||
|
rem_len = len < tmp_len ? len : tmp_len;
|
||||||
|
|
||||||
|
memcpy(&ctx->block[ctx->len], message, rem_len);
|
||||||
|
|
||||||
|
if (ctx->len + len < SHA512_BLOCK_SIZE) {
|
||||||
|
ctx->len += len;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
new_len = len - rem_len;
|
||||||
|
block_nb = new_len / SHA512_BLOCK_SIZE;
|
||||||
|
|
||||||
|
shifted_message = message + rem_len;
|
||||||
|
|
||||||
|
sha512_transf(ctx, ctx->block, 1);
|
||||||
|
sha512_transf(ctx, shifted_message, block_nb);
|
||||||
|
|
||||||
|
rem_len = new_len % SHA512_BLOCK_SIZE;
|
||||||
|
|
||||||
|
memcpy(ctx->block, &shifted_message[block_nb << 7],
|
||||||
|
rem_len);
|
||||||
|
|
||||||
|
ctx->len = rem_len;
|
||||||
|
ctx->tot_len += (block_nb + 1) << 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha512_final(sha512_ctx *ctx, unsigned char *digest)
|
||||||
|
{
|
||||||
|
unsigned int block_nb;
|
||||||
|
unsigned int pm_len;
|
||||||
|
unsigned int len_b;
|
||||||
|
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
int i;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
block_nb = 1 + ((SHA512_BLOCK_SIZE - 17)
|
||||||
|
< (ctx->len % SHA512_BLOCK_SIZE));
|
||||||
|
|
||||||
|
len_b = (ctx->tot_len + ctx->len) << 3;
|
||||||
|
pm_len = block_nb << 7;
|
||||||
|
|
||||||
|
memset(ctx->block + ctx->len, 0, pm_len - ctx->len);
|
||||||
|
ctx->block[ctx->len] = 0x80;
|
||||||
|
UNPACK32(len_b, ctx->block + pm_len - 4);
|
||||||
|
|
||||||
|
sha512_transf(ctx, ctx->block, block_nb);
|
||||||
|
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
for (i = 0 ; i < 8; i++) {
|
||||||
|
UNPACK64(ctx->h[i], &digest[i << 3]);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
UNPACK64(ctx->h[0], &digest[ 0]);
|
||||||
|
UNPACK64(ctx->h[1], &digest[ 8]);
|
||||||
|
UNPACK64(ctx->h[2], &digest[16]);
|
||||||
|
UNPACK64(ctx->h[3], &digest[24]);
|
||||||
|
UNPACK64(ctx->h[4], &digest[32]);
|
||||||
|
UNPACK64(ctx->h[5], &digest[40]);
|
||||||
|
UNPACK64(ctx->h[6], &digest[48]);
|
||||||
|
UNPACK64(ctx->h[7], &digest[56]);
|
||||||
|
#endif /* !UNROLL_LOOPS */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SHA-384 functions */
|
||||||
|
|
||||||
|
void sha384(const unsigned char *message, unsigned int len,
|
||||||
|
unsigned char *digest)
|
||||||
|
{
|
||||||
|
sha384_ctx ctx;
|
||||||
|
|
||||||
|
sha384_init(&ctx);
|
||||||
|
sha384_update(&ctx, message, len);
|
||||||
|
sha384_final(&ctx, digest);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha384_init(sha384_ctx *ctx)
|
||||||
|
{
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < 8; i++) {
|
||||||
|
ctx->h[i] = sha384_h0[i];
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
ctx->h[0] = sha384_h0[0]; ctx->h[1] = sha384_h0[1];
|
||||||
|
ctx->h[2] = sha384_h0[2]; ctx->h[3] = sha384_h0[3];
|
||||||
|
ctx->h[4] = sha384_h0[4]; ctx->h[5] = sha384_h0[5];
|
||||||
|
ctx->h[6] = sha384_h0[6]; ctx->h[7] = sha384_h0[7];
|
||||||
|
#endif /* !UNROLL_LOOPS */
|
||||||
|
|
||||||
|
ctx->len = 0;
|
||||||
|
ctx->tot_len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha384_update(sha384_ctx *ctx, const unsigned char *message,
|
||||||
|
unsigned int len)
|
||||||
|
{
|
||||||
|
unsigned int block_nb;
|
||||||
|
unsigned int new_len, rem_len, tmp_len;
|
||||||
|
const unsigned char *shifted_message;
|
||||||
|
|
||||||
|
tmp_len = SHA384_BLOCK_SIZE - ctx->len;
|
||||||
|
rem_len = len < tmp_len ? len : tmp_len;
|
||||||
|
|
||||||
|
memcpy(&ctx->block[ctx->len], message, rem_len);
|
||||||
|
|
||||||
|
if (ctx->len + len < SHA384_BLOCK_SIZE) {
|
||||||
|
ctx->len += len;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
new_len = len - rem_len;
|
||||||
|
block_nb = new_len / SHA384_BLOCK_SIZE;
|
||||||
|
|
||||||
|
shifted_message = message + rem_len;
|
||||||
|
|
||||||
|
sha512_transf(ctx, ctx->block, 1);
|
||||||
|
sha512_transf(ctx, shifted_message, block_nb);
|
||||||
|
|
||||||
|
rem_len = new_len % SHA384_BLOCK_SIZE;
|
||||||
|
|
||||||
|
memcpy(ctx->block, &shifted_message[block_nb << 7],
|
||||||
|
rem_len);
|
||||||
|
|
||||||
|
ctx->len = rem_len;
|
||||||
|
ctx->tot_len += (block_nb + 1) << 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha384_final(sha384_ctx *ctx, unsigned char *digest)
|
||||||
|
{
|
||||||
|
unsigned int block_nb;
|
||||||
|
unsigned int pm_len;
|
||||||
|
unsigned int len_b;
|
||||||
|
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
int i;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
block_nb = (1 + ((SHA384_BLOCK_SIZE - 17)
|
||||||
|
< (ctx->len % SHA384_BLOCK_SIZE)));
|
||||||
|
|
||||||
|
len_b = (ctx->tot_len + ctx->len) << 3;
|
||||||
|
pm_len = block_nb << 7;
|
||||||
|
|
||||||
|
memset(ctx->block + ctx->len, 0, pm_len - ctx->len);
|
||||||
|
ctx->block[ctx->len] = 0x80;
|
||||||
|
UNPACK32(len_b, ctx->block + pm_len - 4);
|
||||||
|
|
||||||
|
sha512_transf(ctx, ctx->block, block_nb);
|
||||||
|
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
for (i = 0 ; i < 6; i++) {
|
||||||
|
UNPACK64(ctx->h[i], &digest[i << 3]);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
UNPACK64(ctx->h[0], &digest[ 0]);
|
||||||
|
UNPACK64(ctx->h[1], &digest[ 8]);
|
||||||
|
UNPACK64(ctx->h[2], &digest[16]);
|
||||||
|
UNPACK64(ctx->h[3], &digest[24]);
|
||||||
|
UNPACK64(ctx->h[4], &digest[32]);
|
||||||
|
UNPACK64(ctx->h[5], &digest[40]);
|
||||||
|
#endif /* !UNROLL_LOOPS */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SHA-224 functions */
|
||||||
|
|
||||||
|
void sha224(const unsigned char *message, unsigned int len,
|
||||||
|
unsigned char *digest)
|
||||||
|
{
|
||||||
|
sha224_ctx ctx;
|
||||||
|
|
||||||
|
sha224_init(&ctx);
|
||||||
|
sha224_update(&ctx, message, len);
|
||||||
|
sha224_final(&ctx, digest);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha224_init(sha224_ctx *ctx)
|
||||||
|
{
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < 8; i++) {
|
||||||
|
ctx->h[i] = sha224_h0[i];
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
ctx->h[0] = sha224_h0[0]; ctx->h[1] = sha224_h0[1];
|
||||||
|
ctx->h[2] = sha224_h0[2]; ctx->h[3] = sha224_h0[3];
|
||||||
|
ctx->h[4] = sha224_h0[4]; ctx->h[5] = sha224_h0[5];
|
||||||
|
ctx->h[6] = sha224_h0[6]; ctx->h[7] = sha224_h0[7];
|
||||||
|
#endif /* !UNROLL_LOOPS */
|
||||||
|
|
||||||
|
ctx->len = 0;
|
||||||
|
ctx->tot_len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha224_update(sha224_ctx *ctx, const unsigned char *message,
|
||||||
|
unsigned int len)
|
||||||
|
{
|
||||||
|
unsigned int block_nb;
|
||||||
|
unsigned int new_len, rem_len, tmp_len;
|
||||||
|
const unsigned char *shifted_message;
|
||||||
|
|
||||||
|
tmp_len = SHA224_BLOCK_SIZE - ctx->len;
|
||||||
|
rem_len = len < tmp_len ? len : tmp_len;
|
||||||
|
|
||||||
|
memcpy(&ctx->block[ctx->len], message, rem_len);
|
||||||
|
|
||||||
|
if (ctx->len + len < SHA224_BLOCK_SIZE) {
|
||||||
|
ctx->len += len;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
new_len = len - rem_len;
|
||||||
|
block_nb = new_len / SHA224_BLOCK_SIZE;
|
||||||
|
|
||||||
|
shifted_message = message + rem_len;
|
||||||
|
|
||||||
|
sha256_transf(ctx, ctx->block, 1);
|
||||||
|
sha256_transf(ctx, shifted_message, block_nb);
|
||||||
|
|
||||||
|
rem_len = new_len % SHA224_BLOCK_SIZE;
|
||||||
|
|
||||||
|
memcpy(ctx->block, &shifted_message[block_nb << 6],
|
||||||
|
rem_len);
|
||||||
|
|
||||||
|
ctx->len = rem_len;
|
||||||
|
ctx->tot_len += (block_nb + 1) << 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sha224_final(sha224_ctx *ctx, unsigned char *digest)
|
||||||
|
{
|
||||||
|
unsigned int block_nb;
|
||||||
|
unsigned int pm_len;
|
||||||
|
unsigned int len_b;
|
||||||
|
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
int i;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
block_nb = (1 + ((SHA224_BLOCK_SIZE - 9)
|
||||||
|
< (ctx->len % SHA224_BLOCK_SIZE)));
|
||||||
|
|
||||||
|
len_b = (ctx->tot_len + ctx->len) << 3;
|
||||||
|
pm_len = block_nb << 6;
|
||||||
|
|
||||||
|
memset(ctx->block + ctx->len, 0, pm_len - ctx->len);
|
||||||
|
ctx->block[ctx->len] = 0x80;
|
||||||
|
UNPACK32(len_b, ctx->block + pm_len - 4);
|
||||||
|
|
||||||
|
sha256_transf(ctx, ctx->block, block_nb);
|
||||||
|
|
||||||
|
#ifndef UNROLL_LOOPS
|
||||||
|
for (i = 0 ; i < 7; i++) {
|
||||||
|
UNPACK32(ctx->h[i], &digest[i << 2]);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
UNPACK32(ctx->h[0], &digest[ 0]);
|
||||||
|
UNPACK32(ctx->h[1], &digest[ 4]);
|
||||||
|
UNPACK32(ctx->h[2], &digest[ 8]);
|
||||||
|
UNPACK32(ctx->h[3], &digest[12]);
|
||||||
|
UNPACK32(ctx->h[4], &digest[16]);
|
||||||
|
UNPACK32(ctx->h[5], &digest[20]);
|
||||||
|
UNPACK32(ctx->h[6], &digest[24]);
|
||||||
|
#endif /* !UNROLL_LOOPS */
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef TEST_VECTORS
|
||||||
|
|
||||||
|
/* FIPS 180-2 Validation tests */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
void test(const unsigned char *vector, unsigned char *digest,
|
||||||
|
unsigned int digest_size)
|
||||||
|
{
|
||||||
|
unsigned char output[2 * SHA512_DIGEST_SIZE + 1];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
output[2 * digest_size] = '\0';
|
||||||
|
|
||||||
|
for (i = 0; i < (int) digest_size ; i++) {
|
||||||
|
sprintf((char *) output + 2 * i, "%02x", digest[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("H: %s\n", output);
|
||||||
|
if (strcmp((char *) vector, (char *) output)) {
|
||||||
|
fprintf(stderr, "Test failed.\n");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
static const unsigned char *vectors[4][3] =
|
||||||
|
{ /* SHA-224 */
|
||||||
|
{
|
||||||
|
"23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7",
|
||||||
|
"75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525",
|
||||||
|
"20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67",
|
||||||
|
},
|
||||||
|
/* SHA-256 */
|
||||||
|
{
|
||||||
|
"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",
|
||||||
|
"248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1",
|
||||||
|
"cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0",
|
||||||
|
},
|
||||||
|
/* SHA-384 */
|
||||||
|
{
|
||||||
|
"cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed"
|
||||||
|
"8086072ba1e7cc2358baeca134c825a7",
|
||||||
|
"09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712"
|
||||||
|
"fcc7c71a557e2db966c3e9fa91746039",
|
||||||
|
"9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b"
|
||||||
|
"07b8b3dc38ecc4ebae97ddd87f3d8985",
|
||||||
|
},
|
||||||
|
/* SHA-512 */
|
||||||
|
{
|
||||||
|
"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a"
|
||||||
|
"2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f",
|
||||||
|
"8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018"
|
||||||
|
"501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909",
|
||||||
|
"e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973eb"
|
||||||
|
"de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const unsigned char message1[] = "abc";
|
||||||
|
static const unsigned char message2a[] = "abcdbcdecdefdefgefghfghighijhi"
|
||||||
|
"jkijkljklmklmnlmnomnopnopq";
|
||||||
|
static const unsigned char message2b[] =
|
||||||
|
"abcdefghbcdefghicdefghijdefghijkefghij"
|
||||||
|
"klfghijklmghijklmnhijklmnoijklmnopjklm"
|
||||||
|
"nopqklmnopqrlmnopqrsmnopqrstnopqrstu";
|
||||||
|
unsigned char *message3;
|
||||||
|
unsigned int message3_len = 1000000;
|
||||||
|
unsigned char digest[SHA512_DIGEST_SIZE];
|
||||||
|
|
||||||
|
message3 = malloc(message3_len);
|
||||||
|
if (message3 == NULL) {
|
||||||
|
fprintf(stderr, "Can't allocate memory\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
memset(message3, 'a', message3_len);
|
||||||
|
|
||||||
|
printf("SHA-2 FIPS 180-2 Validation tests\n\n");
|
||||||
|
printf("SHA-224 Test vectors\n");
|
||||||
|
|
||||||
|
sha224(message1, strlen((char *) message1), digest);
|
||||||
|
test(vectors[0][0], digest, SHA224_DIGEST_SIZE);
|
||||||
|
sha224(message2a, strlen((char *) message2a), digest);
|
||||||
|
test(vectors[0][1], digest, SHA224_DIGEST_SIZE);
|
||||||
|
sha224(message3, message3_len, digest);
|
||||||
|
test(vectors[0][2], digest, SHA224_DIGEST_SIZE);
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
printf("SHA-256 Test vectors\n");
|
||||||
|
|
||||||
|
sha256(message1, strlen((char *) message1), digest);
|
||||||
|
test(vectors[1][0], digest, SHA256_DIGEST_SIZE);
|
||||||
|
sha256(message2a, strlen((char *) message2a), digest);
|
||||||
|
test(vectors[1][1], digest, SHA256_DIGEST_SIZE);
|
||||||
|
sha256(message3, message3_len, digest);
|
||||||
|
test(vectors[1][2], digest, SHA256_DIGEST_SIZE);
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
printf("SHA-384 Test vectors\n");
|
||||||
|
|
||||||
|
sha384(message1, strlen((char *) message1), digest);
|
||||||
|
test(vectors[2][0], digest, SHA384_DIGEST_SIZE);
|
||||||
|
sha384(message2b, strlen((char *) message2b), digest);
|
||||||
|
test(vectors[2][1], digest, SHA384_DIGEST_SIZE);
|
||||||
|
sha384(message3, message3_len, digest);
|
||||||
|
test(vectors[2][2], digest, SHA384_DIGEST_SIZE);
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
printf("SHA-512 Test vectors\n");
|
||||||
|
|
||||||
|
sha512(message1, strlen((char *) message1), digest);
|
||||||
|
test(vectors[3][0], digest, SHA512_DIGEST_SIZE);
|
||||||
|
sha512(message2b, strlen((char *) message2b), digest);
|
||||||
|
test(vectors[3][1], digest, SHA512_DIGEST_SIZE);
|
||||||
|
sha512(message3, message3_len, digest);
|
||||||
|
test(vectors[3][2], digest, SHA512_DIGEST_SIZE);
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
printf("All tests passed.\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* TEST_VECTORS */
|
||||||
|
|
||||||
@@ -0,0 +1,262 @@
|
|||||||
|
//jagatsastry.nitk@gmail.com 9th April 09
|
||||||
|
//Implementation of SHA 512
|
||||||
|
#include<iostream>
|
||||||
|
#include<vector>
|
||||||
|
#include<fstream>
|
||||||
|
#include<string>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
typedef unsigned int uint;
|
||||||
|
typedef unsigned long long ullint;
|
||||||
|
|
||||||
|
string fromDecimal(ullint n, ullint b)
|
||||||
|
{
|
||||||
|
string chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
|
string result="";
|
||||||
|
while(n>0)
|
||||||
|
{
|
||||||
|
result=chars.at(n%b)+result;
|
||||||
|
n/=b;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ullint K[80] = {
|
||||||
|
0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL,
|
||||||
|
0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL,
|
||||||
|
0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,
|
||||||
|
0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL,
|
||||||
|
0xd807aa98a3030242ULL, 0x12835b0145706fbeULL,
|
||||||
|
0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL,
|
||||||
|
0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL,
|
||||||
|
0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL,
|
||||||
|
0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL,
|
||||||
|
0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL,
|
||||||
|
0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL,
|
||||||
|
0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL,
|
||||||
|
0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL,
|
||||||
|
0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL,
|
||||||
|
0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL,
|
||||||
|
0x06ca6351e003826fULL, 0x142929670a0e6e70ULL,
|
||||||
|
0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL,
|
||||||
|
0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL,
|
||||||
|
0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL,
|
||||||
|
0x81c2c92e47edaee6ULL, 0x92722c851482353bULL,
|
||||||
|
0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL,
|
||||||
|
0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL,
|
||||||
|
0xd192e819d6ef5218ULL, 0xd69906245565a910ULL,
|
||||||
|
0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL,
|
||||||
|
0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL,
|
||||||
|
0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL,
|
||||||
|
0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL,
|
||||||
|
0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL,
|
||||||
|
0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL,
|
||||||
|
0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL,
|
||||||
|
0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL,
|
||||||
|
0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL,
|
||||||
|
0xca273eceea26619cULL, 0xd186b8c721c0c207ULL,
|
||||||
|
0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL,
|
||||||
|
0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL,
|
||||||
|
0x113f9804bef90daeULL, 0x1b710b35131c471bULL,
|
||||||
|
0x28db77f523047d84ULL, 0x32caab7b40c72493ULL,
|
||||||
|
0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL,
|
||||||
|
0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL,
|
||||||
|
0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL
|
||||||
|
};
|
||||||
|
|
||||||
|
void makeblock(vector<ullint>& ret, string p_msg)
|
||||||
|
{
|
||||||
|
ullint cur=0;
|
||||||
|
int ind=0;
|
||||||
|
for(uint i=0; i<p_msg.size(); i++)
|
||||||
|
{
|
||||||
|
cur = (cur<<8) | (unsigned char)p_msg[i];
|
||||||
|
if(i%8==7)
|
||||||
|
{
|
||||||
|
|
||||||
|
ret.at(ind++)=cur;
|
||||||
|
cur=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Block
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
vector<ullint> msg;
|
||||||
|
|
||||||
|
Block():msg(16, 0) { }
|
||||||
|
|
||||||
|
Block(string p_msg):msg(16, 0)
|
||||||
|
{
|
||||||
|
makeblock(msg, p_msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void split(vector<Block>& blks, string& msg)
|
||||||
|
{
|
||||||
|
cout<<endl<<msg.size()<<endl;;
|
||||||
|
cout<<blks.size()<<endl;
|
||||||
|
cout<<"Splitting into blocks: "<<endl;
|
||||||
|
cout<<endl<<"msgsize: "<<msg.size()*8<<endl;
|
||||||
|
for(uint i=0; i<msg.size(); i+=128)
|
||||||
|
{
|
||||||
|
|
||||||
|
makeblock(blks[i/128].msg, msg.substr(i, 128));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
string mynum(ullint x)
|
||||||
|
{
|
||||||
|
string ret;
|
||||||
|
for(uint i=0; i<8; i++)
|
||||||
|
ret+=char(0);
|
||||||
|
|
||||||
|
for(uint i=8; i>=1; i--) //big endian machine assumed
|
||||||
|
{
|
||||||
|
ret += ((char*)(&x))[i-1];
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define shr(x,n) ((x & 0xFFFFFFFFFFFFFFFFULL) >> n)
|
||||||
|
#define rotr(x,n) (shr(x,n) | (x << (64 - n)))
|
||||||
|
|
||||||
|
ullint ch(ullint x, ullint y, ullint z)
|
||||||
|
{
|
||||||
|
return (x&y) ^ (~x&z);
|
||||||
|
}
|
||||||
|
|
||||||
|
ullint maj(ullint x, ullint y, ullint z)
|
||||||
|
{
|
||||||
|
return (x&y) ^ (y&z) ^ (z&x);
|
||||||
|
}
|
||||||
|
|
||||||
|
ullint fn0(ullint x)
|
||||||
|
{
|
||||||
|
return rotr(x, 28) ^ rotr(x, 34) ^ rotr(x, 39);
|
||||||
|
}
|
||||||
|
|
||||||
|
ullint fn1(ullint x)
|
||||||
|
{
|
||||||
|
return rotr(x, 14) ^ rotr(x, 18) ^ rotr(x, 41);
|
||||||
|
}
|
||||||
|
|
||||||
|
ullint sigma0(ullint x)
|
||||||
|
{
|
||||||
|
return rotr(x, 1) ^ rotr(x, 8) ^ shr(x, 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
ullint sigma1(ullint x)
|
||||||
|
{
|
||||||
|
return rotr(x, 19) ^ rotr(x, 61) ^ shr(x, 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
string hash_sha512_cpp(string msg_arr)
|
||||||
|
{
|
||||||
|
cout<<char(1<<7)<<endl;
|
||||||
|
|
||||||
|
string msg_out, msg;
|
||||||
|
// cout<<"Enter message"<<endl;
|
||||||
|
// ifstream fin("input.txt");
|
||||||
|
// fin>>msg_arr;
|
||||||
|
// cin>>msg_arr;
|
||||||
|
msg=msg_arr;
|
||||||
|
msg_arr += (char)(1<<7);
|
||||||
|
uint cur_len = msg.size()*8 + 8;
|
||||||
|
uint reqd_len = ((msg.size()*8)/1024+1) *1024;
|
||||||
|
uint pad_len = reqd_len - cur_len - 128;
|
||||||
|
|
||||||
|
string pad(pad_len/8, char(0));
|
||||||
|
msg_arr += pad;
|
||||||
|
|
||||||
|
string len_str(mynum(msg.size()*8));
|
||||||
|
cout<<"mynum: "<<mynum(msg.size()*8)<<endl;
|
||||||
|
msg_arr = msg_arr + len_str;
|
||||||
|
|
||||||
|
uint num_blk = msg_arr.size()*8/1024;
|
||||||
|
vector<Block> M(num_blk, Block());
|
||||||
|
split(M, msg_arr);
|
||||||
|
|
||||||
|
ullint H[]={
|
||||||
|
0x6a09e667f3bcc908ULL,
|
||||||
|
0xbb67ae8584caa73bULL,
|
||||||
|
0x3c6ef372fe94f82bULL,
|
||||||
|
0xa54ff53a5f1d36f1ULL,
|
||||||
|
0x510e527fade682d1ULL,
|
||||||
|
0x9b05688c2b3e6c1fULL,
|
||||||
|
0x1f83d9abfb41bd6bULL,
|
||||||
|
0x5be0cd19137e2179ULL
|
||||||
|
};
|
||||||
|
|
||||||
|
for(uint i=0; i<num_blk; i++)
|
||||||
|
{
|
||||||
|
cout<<"Blk no: "<<i<<endl;
|
||||||
|
vector<ullint> W(80, 0);
|
||||||
|
for(uint t=0; t<16; t++)
|
||||||
|
{
|
||||||
|
W[t] = M[i].msg[t];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for(uint t=16; t<80; t++)
|
||||||
|
{
|
||||||
|
W[t] = sigma1(W[t-2]) + W[t-7] + sigma0(W[t-15]) + W[t-16];
|
||||||
|
}
|
||||||
|
|
||||||
|
ullint work[8];
|
||||||
|
for(uint i=0; i<8; i++)
|
||||||
|
work[i] = H[i];
|
||||||
|
|
||||||
|
for(uint t=0; t<80; t++)
|
||||||
|
{
|
||||||
|
|
||||||
|
ullint t1, t2;
|
||||||
|
t1 = work[7] + fn1(work[4]) + ch(work[4], work[5], work[6]) + K[t] + W[t];
|
||||||
|
t2 = fn0(work[0]) + maj(work[0], work[1], work[2]);
|
||||||
|
work[7] = work[6];
|
||||||
|
work[6] = work[5];
|
||||||
|
work[5] = work[4];
|
||||||
|
work[4] = work[3] + t1;
|
||||||
|
work[3] = work[2];
|
||||||
|
work[2] = work[1];
|
||||||
|
work[1] = work[0];
|
||||||
|
work[0] = t1 + t2;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for(uint i=0; i<8; i++)
|
||||||
|
{
|
||||||
|
H[i] = work[i] + H[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
cout<<"Output: "<<endl;
|
||||||
|
cout<<"SHA 512 HASH"<<endl;
|
||||||
|
for(uint i=0; i<8; i++)
|
||||||
|
cout<<H[i]<<" ";
|
||||||
|
cout<<endl;
|
||||||
|
|
||||||
|
cout<<endl<<endl<<endl<<"****************SHA 512 MESSAGE DIGEST IN HEX****************"<<endl<<endl;
|
||||||
|
for(uint i=0; i<8; i++) {
|
||||||
|
cout<<fromDecimal(H[i], 16)<<" ";
|
||||||
|
string msg_tmp = fromDecimal(H[i], 16);
|
||||||
|
// Fix padding
|
||||||
|
while (msg_tmp.length()<16) {
|
||||||
|
msg_tmp = "0"+msg_tmp;
|
||||||
|
}
|
||||||
|
msg_out += msg_tmp;
|
||||||
|
}
|
||||||
|
cout<<endl;
|
||||||
|
|
||||||
|
// system("pause");
|
||||||
|
return msg_out;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <netinet/tcp.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "safestring.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include <arpa/nameser.h>
|
||||||
|
#include <resolv.h>
|
||||||
|
|
||||||
|
//#include "general_types.h"
|
||||||
|
#include "clog.h"
|
||||||
|
//#include "mx.h"
|
||||||
|
#include "smtp.h"
|
||||||
|
#include "timer.h"
|
||||||
|
//#include "socket.h"
|
||||||
|
|
||||||
|
int SMTP2( const char * _server, const char * _from, char * _to, char * _body, const char * _domain, const char * _user, const char * _pass, const char * _name)
|
||||||
|
{
|
||||||
|
// SAF 1/24/03: first copy all data to local structures to avoid race conditions, which is currently causing crashes !
|
||||||
|
// Actually, it wasn't the race condition, it was the fact that '_to' was NULL due to a bug in profile.cpp: "email" was not set
|
||||||
|
|
||||||
|
logfmt( FLOG_MAX, "ESMTP( %s, %s, %s )", _server, _from, _to );
|
||||||
|
|
||||||
|
if ( !_server || !_from || !_to || !_body )
|
||||||
|
{
|
||||||
|
logfmt( FLOG_MAX, "Input parameters server, from, to & body are requied" );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if ( !_to[0])
|
||||||
|
{
|
||||||
|
logfmt( FLOG_MAX, "Empty recipient list" );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int BUF_SIZE = 512+strlen(_server)+strlen(_from)+strlen(_to)+strlen(_domain)+strlen(_user)+strlen(_pass)+strlen(_name)+2*strlen(_body);
|
||||||
|
|
||||||
|
char *subject = NULL, *body = NULL;
|
||||||
|
char *name = new char[BUF_SIZE+1];
|
||||||
|
|
||||||
|
// Prepare body & subject
|
||||||
|
logfmt( FLOG_MAX, "Prepare body" );
|
||||||
|
int lines = 0;
|
||||||
|
int len = strlen( _body );
|
||||||
|
for ( int i=0; i<len; i++ )
|
||||||
|
{
|
||||||
|
int c = _body[i];
|
||||||
|
// Replace ' with "
|
||||||
|
if (c == 39)
|
||||||
|
{
|
||||||
|
_body[i] = '"';
|
||||||
|
}
|
||||||
|
// count LFs
|
||||||
|
if (c == 10)
|
||||||
|
{
|
||||||
|
lines++;
|
||||||
|
}
|
||||||
|
// remove CRs (replace with whitespaces)
|
||||||
|
if (c == 13)
|
||||||
|
{
|
||||||
|
_body[i] = 32;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Locate & extract subject
|
||||||
|
logfmt( FLOG_MAX, "Locate & extract subject" );
|
||||||
|
char *subj = strstr ( _body, "Subject: " );
|
||||||
|
if (subj != NULL)
|
||||||
|
{
|
||||||
|
int k = 0;
|
||||||
|
int n = strlen(subj);
|
||||||
|
for (int i=0; i<n; i++)
|
||||||
|
{
|
||||||
|
int c = subj[i];
|
||||||
|
if (subject != NULL)
|
||||||
|
{
|
||||||
|
name[k++] = c;
|
||||||
|
}
|
||||||
|
if (subject == NULL && c == 10)
|
||||||
|
{
|
||||||
|
if (i > 9)
|
||||||
|
{
|
||||||
|
subject = new char[i+1];
|
||||||
|
memset( subject, 0, i );
|
||||||
|
int j = 9;
|
||||||
|
for (; j<i; j++)
|
||||||
|
{
|
||||||
|
//logfmt( FLOG_MAX, "c=%ld", subj[j] );
|
||||||
|
subject[j-9] = subj[j];
|
||||||
|
//subj[j] = 32;
|
||||||
|
}
|
||||||
|
subject[j] = '\0';
|
||||||
|
logfmt( FLOG_MAX, "Found subject: %s", subject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (subject != NULL)
|
||||||
|
{
|
||||||
|
name[k++] = '\0';
|
||||||
|
body = new char[k];
|
||||||
|
//logfmt( FLOG_MAX, "New body(%ld): %s (%ld)", k, name, strlen(_body) );
|
||||||
|
snprintf( body, k, "%s", name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (subject == NULL)
|
||||||
|
{
|
||||||
|
subject = new char[15];
|
||||||
|
strcpy(subject,"Wrenchboard Support");
|
||||||
|
logfmt( FLOG_MAX, "Subject is not found - defaulting to: %s", subject );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Google
|
||||||
|
/*
|
||||||
|
snprintf( name, BUF_SIZE, EMAIL_PREFIX"/../src/modules/mailsend -smtp %s -f %s -t %s -d %s -name '%s' +cc +bcc -v -starttls -auth-plain -user %s -pass %s -sub '%s' -M '%s'",
|
||||||
|
_server, _from, _to, _domain, _name, _user, _pass, subject, body != NULL ? body : _body );
|
||||||
|
*//*
|
||||||
|
// Virtualmail
|
||||||
|
snprintf( name, BUF_SIZE, EMAIL_PREFIX"/../src/modules/mailsend -smtp %s -f %s -t %s -d %s -name '%s' +cc +bcc -v -port 25 -auth-plain -user %s -pass %s -sub '%s' -M '%s'",
|
||||||
|
_server, _from, _to, _domain, _name, _user, _pass, subject, body != NULL ? body : _body );
|
||||||
|
*/
|
||||||
|
// GoDaddy
|
||||||
|
snprintf( name, BUF_SIZE, EMAIL_PREFIX"/../src/modules/mailsend -smtp %s -f %s -t %s -d %s -name '%s' +cc +bcc -v -port 80 -auth-plain -user %s -pass %s -sub '%s' -M '%s'",
|
||||||
|
_server, _from, _to, _domain, _name, _user, _pass, subject, body != NULL ? body : _body );
|
||||||
|
|
||||||
|
logfmt( FLOG_MAX, "Calling MAILSEND: %s", name);
|
||||||
|
|
||||||
|
FILE * p = popen( name, "r" );
|
||||||
|
|
||||||
|
int c = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
c = fread( name, 1, BUF_SIZE, p );
|
||||||
|
if (c > 0)
|
||||||
|
{
|
||||||
|
logfmt( FLOG_MAX, "%s", name );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logfmt( FLOG_MAX, "\n\nEND OF PIPE OUTPUT\n\n" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (c > 0);
|
||||||
|
|
||||||
|
pclose( p );
|
||||||
|
|
||||||
|
if (name != NULL)
|
||||||
|
{
|
||||||
|
delete name;
|
||||||
|
}
|
||||||
|
if (subject != NULL)
|
||||||
|
{
|
||||||
|
delete subject;
|
||||||
|
}
|
||||||
|
if (body != NULL)
|
||||||
|
{
|
||||||
|
delete body;
|
||||||
|
}
|
||||||
|
logfmt( FLOG_MAX, "/ESMTP()" );
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include "timer.h"
|
||||||
|
|
||||||
|
|
||||||
|
unsigned long stamp()
|
||||||
|
{
|
||||||
|
struct timeval tv;
|
||||||
|
|
||||||
|
gettimeofday( &tv, NULL );
|
||||||
|
|
||||||
|
return tv.tv_sec * 1000000 + tv.tv_usec;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CTimer::CTimer( )
|
||||||
|
{
|
||||||
|
prev = stamp();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CTimer::init( )
|
||||||
|
{
|
||||||
|
prev = stamp();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CTimer::wake( unsigned long usec )
|
||||||
|
{
|
||||||
|
long sleep_time = usec-(stamp()-prev);
|
||||||
|
|
||||||
|
if ( sleep_time>0 )
|
||||||
|
usleep( sleep_time );
|
||||||
|
|
||||||
|
prev = stamp();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool CTimer::timeout( unsigned long usec )
|
||||||
|
{
|
||||||
|
return stamp()-prev > usec;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
unsigned long CTimer::elapsed( )
|
||||||
|
{
|
||||||
|
return stamp()-prev;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,135 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <regex.h>
|
||||||
|
|
||||||
|
#include "safestring.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include "clog.h"
|
||||||
|
|
||||||
|
bool reg_match( const char * input, const char * regexp, char * ret, int sz, int * pos /*= NULL*/ )
|
||||||
|
{
|
||||||
|
regex_t compiled;
|
||||||
|
regmatch_t match[2];
|
||||||
|
|
||||||
|
bool satisfied = false;
|
||||||
|
if ( ret ) ret[0] = 0;
|
||||||
|
|
||||||
|
// logfmt( FLOG_MAX, "Matching '%s' against '%s'", input, regexp );
|
||||||
|
|
||||||
|
if ( regcomp( &compiled, regexp, REG_EXTENDED ) != 0 )
|
||||||
|
{
|
||||||
|
logfmt( logWARNING, "regcomp returned non-0, assuming a match" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
size_t r = regexec( &compiled, input, 2, match, 0 );
|
||||||
|
|
||||||
|
if ( r==0 ) // match
|
||||||
|
{
|
||||||
|
if ( pos )
|
||||||
|
*pos = match[1].rm_so;
|
||||||
|
|
||||||
|
int len = match[1].rm_eo-match[1].rm_so;
|
||||||
|
|
||||||
|
if ( ret )
|
||||||
|
strnsafecpy( ret, &input[ match[1].rm_so ], len, sz );
|
||||||
|
|
||||||
|
satisfied = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
satisfied = false;
|
||||||
|
|
||||||
|
regfree( &compiled );
|
||||||
|
}
|
||||||
|
return satisfied;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char * urlencode( const char * buf, char * text, int sz )
|
||||||
|
{
|
||||||
|
// old char url[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ^_\\-0123456789."; // . ???
|
||||||
|
char url[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.!*'(),"; // $-_.+!*'(), took '+' out
|
||||||
|
int len = strlen(buf);
|
||||||
|
// fprintf(flog, "buf: '%s', len: %d\n", buf, len); fflush(flog);
|
||||||
|
text[0] = 0;
|
||||||
|
for (int i=0; i<len; i++)
|
||||||
|
{
|
||||||
|
int len = strlen(text);
|
||||||
|
|
||||||
|
if (strchr(url, buf[i]))
|
||||||
|
snprintf(&text[len], sz-len, "%c", buf[i]);
|
||||||
|
else
|
||||||
|
snprintf(&text[len], sz-len, "%%%02x", (unsigned char)buf[i]);
|
||||||
|
// fprintf(flog, "%d\n", i); fflush(flog);
|
||||||
|
}
|
||||||
|
// strcpy(buf, text);
|
||||||
|
// Log(text, "Returning:");
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
char * urlencode(const char * buf)
|
||||||
|
{
|
||||||
|
return urlencode( buf, text, sizeof(text) );
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
char * urldecode( char * buf, char * text, int sz)
|
||||||
|
{
|
||||||
|
// Log(buf, "urldecode()");
|
||||||
|
unsigned int c3;
|
||||||
|
char * c2; c2 = buf;
|
||||||
|
unsigned int ch;
|
||||||
|
char * value=text;
|
||||||
|
// int valuelen = sz;
|
||||||
|
|
||||||
|
value[0] = 0;
|
||||||
|
//bool EOS = false;
|
||||||
|
|
||||||
|
while (c2)
|
||||||
|
{
|
||||||
|
c3 = strcspn(c2, "%+"); // "%+"
|
||||||
|
if (c3==strlen(c2))
|
||||||
|
{
|
||||||
|
// strncpy_(&value[strlen(value)], c2, Min0(c3, valuelen-strlen(value)-1, EOS) );
|
||||||
|
strsafecat( value, c2, sz );
|
||||||
|
break; //over
|
||||||
|
}
|
||||||
|
|
||||||
|
// strncpy_(&value[strlen(value)], c2, Min0(c3, valuelen-strlen(value)-1, EOS) );
|
||||||
|
strnsafecat( value, c2, c3, sz );
|
||||||
|
|
||||||
|
// Log(value);
|
||||||
|
// if (EOS) break;
|
||||||
|
|
||||||
|
|
||||||
|
// '+' is actually an allowed symbol per http://www.rfc-editor.org/rfc/rfc1738.txt
|
||||||
|
// but browser rules say space is encoded as '+'
|
||||||
|
// http://www.speakeasy.org/~cgires/readdata/
|
||||||
|
|
||||||
|
if (*(c2+c3)=='+')
|
||||||
|
{
|
||||||
|
// strncpy_(&value[strlen(value)], " ", Min0(1, valuelen-strlen(value)-1, EOS) );
|
||||||
|
strsafecat( value, " ", sz );
|
||||||
|
// if (EOS) break;
|
||||||
|
c2+=c3+1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sscanf(c2+c3+1, "%2x", &ch);
|
||||||
|
strcatf( value, sz, "%c", ch);
|
||||||
|
|
||||||
|
// if (strlen(value)>=valuelen-1)
|
||||||
|
// { EOS = TRUE; break; }
|
||||||
|
|
||||||
|
c2+=c3+3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
value[sz-1] = 0;
|
||||||
|
|
||||||
|
// Log(text, "urldecode returning");
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,372 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include "safestring.h"
|
||||||
|
|
||||||
|
|
||||||
|
#pragma implementation "vars.h"
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
//#include <stl_hashtable.h>
|
||||||
|
//#include <stl_tree.h>
|
||||||
|
|
||||||
|
|
||||||
|
//template _Rb_tree< string const, pair<string const, varstring>, _Select1st<pair<string const, varstring> >, less<string const>, allocator<varstring> >;
|
||||||
|
//template _Rb_tree<long, pair<long const, long>, _Select1st<pair<long const, long> >, less<long>, allocator<long> >;
|
||||||
|
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//template class std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, varstring>, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, varstring> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const>, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, varstring> > >;
|
||||||
|
|
||||||
|
|
||||||
|
// template class _Rb_tree<string const, pair<string const, varstring>, _Select1st<pair<basic_string<char, char_traits<char>, allocator<char> > const, varstring> >, less<basic_string<char, char_traits<char>, allocator<char> > const>, allocator<pair<basic_string<char, char_traits<char>, allocator<char> > const, varstring> > >;
|
||||||
|
|
||||||
|
template class _Rb_tree< string const, pair<string const, varstring>, _Select1st<pair<string const, varstring> >, less<string const>, allocator<pair<string const,varstring> > >;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//::operator=(std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, varstring>, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, varstring> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const>, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, varstring> > > const&);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// default constructor
|
||||||
|
|
||||||
|
varstring::varstring() : string()
|
||||||
|
{
|
||||||
|
validated = false;
|
||||||
|
db_var = false;
|
||||||
|
binary_var = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
varstring::varstring( const char *c ) : string( c )
|
||||||
|
{
|
||||||
|
this->validated = false;
|
||||||
|
db_var = false;
|
||||||
|
binary_var = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
varstring::varstring(const char* c, int len) : string( c, len )
|
||||||
|
{
|
||||||
|
// logfmt( FLOG_MAX, "varstring constructor( c='%s', len=%d )", c, len );
|
||||||
|
validated = false;
|
||||||
|
db_var = false;
|
||||||
|
binary_var = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy constructor
|
||||||
|
|
||||||
|
varstring::varstring( const varstring &c ) : string( c )
|
||||||
|
{
|
||||||
|
// logfmt( FLOG_MAX, "varstring copy constructor, c.validated=%d, value=%s", c.validated, c.c_str() );
|
||||||
|
this->validated = c.validated;
|
||||||
|
this->db_var = c.db_var;
|
||||||
|
this->binary_var = c.binary_var;
|
||||||
|
}
|
||||||
|
|
||||||
|
varstring::varstring( const string &c ) : string( c )
|
||||||
|
{
|
||||||
|
// logfmt( FLOG_MAX, "string->varstring copy constructor, value=%s", c.c_str() );
|
||||||
|
validated = false;
|
||||||
|
db_var = false;
|
||||||
|
binary_var = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
long varstring::Long() const
|
||||||
|
{
|
||||||
|
return atol( c_str() );
|
||||||
|
}
|
||||||
|
|
||||||
|
double varstring::Double()
|
||||||
|
{
|
||||||
|
return atof( c_str() );
|
||||||
|
}
|
||||||
|
|
||||||
|
varstring& varstring::operator=( const char* c )
|
||||||
|
{
|
||||||
|
set_valid( false );
|
||||||
|
string::operator=( c );
|
||||||
|
return *this;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void varstring::operator=( long l )
|
||||||
|
{
|
||||||
|
set_valid( false );
|
||||||
|
char s[20];
|
||||||
|
snprintf( s, sizeof(s), "%ld", l );
|
||||||
|
string::operator=( s );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
varstring& varstring::operator=( const varstring &c )
|
||||||
|
{
|
||||||
|
//set_valid( false );
|
||||||
|
this->validated = c.validated;
|
||||||
|
this->binary_var = c.binary_var;
|
||||||
|
string::operator=( c );
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void varstring::operator=( const string c )
|
||||||
|
{
|
||||||
|
set_valid( false );
|
||||||
|
binary_var = false;
|
||||||
|
string::operator=( c );
|
||||||
|
}
|
||||||
|
|
||||||
|
varstring::operator long()
|
||||||
|
{
|
||||||
|
return this->Long();
|
||||||
|
}
|
||||||
|
|
||||||
|
varstring::operator const char*() // type conversion
|
||||||
|
{
|
||||||
|
return this->c_str();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool varstring::valid() const
|
||||||
|
{
|
||||||
|
return validated;
|
||||||
|
}
|
||||||
|
|
||||||
|
void varstring::set_valid( bool validated /*= true*/ )
|
||||||
|
{
|
||||||
|
this->validated = validated;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bool varstring::db() const
|
||||||
|
{
|
||||||
|
return db_var;
|
||||||
|
}
|
||||||
|
|
||||||
|
void varstring::set_db( bool db /*= true*/ )
|
||||||
|
{
|
||||||
|
this->db_var = db;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bool varstring::binary() const
|
||||||
|
{
|
||||||
|
return this->binary_var;
|
||||||
|
}
|
||||||
|
|
||||||
|
void varstring::set_binary( bool binary_var /*= true*/ )
|
||||||
|
{
|
||||||
|
this->binary_var = binary_var;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ---------------- string_key --------
|
||||||
|
/*
|
||||||
|
string_key& string_key::operator=( const char* c )
|
||||||
|
{
|
||||||
|
// set_valid( false );
|
||||||
|
string::operator=( c );
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void string_key::operator=( long l )
|
||||||
|
{
|
||||||
|
// set_valid( false );
|
||||||
|
char s[20];
|
||||||
|
snprintf( s, sizeof(s), "%ld", l );
|
||||||
|
string::operator=( s );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void string_key::operator=( const string c )
|
||||||
|
{
|
||||||
|
// set_valid( false );
|
||||||
|
string::operator=( c );
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ---------------- CVars -------------
|
||||||
|
|
||||||
|
|
||||||
|
CVars& CVars::operator<<( char const *name )
|
||||||
|
{
|
||||||
|
//logfmt( FLOG_MAX, "CVars << %s", name );
|
||||||
|
|
||||||
|
CVars::iterator i = find( name );
|
||||||
|
if ( i != end() )
|
||||||
|
{
|
||||||
|
i->second.set_db();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CVars& CVars::operator>>( char const *name )
|
||||||
|
{
|
||||||
|
//logfmt( FLOG_MAX, "CVars >> %s", name );
|
||||||
|
|
||||||
|
CVars::iterator i = find( name );
|
||||||
|
if ( i != end() )
|
||||||
|
{
|
||||||
|
i->second.set_db( false );
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CVars::ClearDB()
|
||||||
|
{
|
||||||
|
CVars::iterator i;
|
||||||
|
|
||||||
|
for ( i=begin(); i!=end(); i++ )
|
||||||
|
i->second.set_db( false );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
FORMAT:
|
||||||
|
int count;
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
name,value,
|
||||||
|
bitmap{
|
||||||
|
bool validated;
|
||||||
|
bool db_var; // is this variable to be used in DB updates
|
||||||
|
bool binary_var;
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
//implement << operator??
|
||||||
|
|
||||||
|
long CVars::serialize( unsigned char *&buf ) // this will serialize the data into buf and return the resulting size
|
||||||
|
// it is the responsibility of the caller to free the buffer with free()
|
||||||
|
{
|
||||||
|
long len;
|
||||||
|
CVars::iterator i;
|
||||||
|
int count = 0; // do NOT change this datatype as this will affect data structure below!!!
|
||||||
|
unsigned char *c = buf + sizeof(count);
|
||||||
|
|
||||||
|
|
||||||
|
// Calculate the length
|
||||||
|
|
||||||
|
for ( i=begin(); i!=end(); i++ )
|
||||||
|
{
|
||||||
|
count++;
|
||||||
|
|
||||||
|
int size = i->first.size();
|
||||||
|
c += sizeof(unsigned char); // name should be no longer than 255
|
||||||
|
c += size;
|
||||||
|
|
||||||
|
size = i->second.size();
|
||||||
|
c += sizeof(int);
|
||||||
|
c += size;
|
||||||
|
|
||||||
|
// record bits
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
|
||||||
|
len = c-buf;
|
||||||
|
|
||||||
|
buf = (unsigned char*)malloc( len );
|
||||||
|
|
||||||
|
if ( !buf ) return 0;
|
||||||
|
|
||||||
|
|
||||||
|
// Populate buf
|
||||||
|
|
||||||
|
// first store the number of elements
|
||||||
|
|
||||||
|
*(int*)buf = count;
|
||||||
|
c = buf + sizeof(count);
|
||||||
|
|
||||||
|
for ( i=begin(); i!=end(); i++ )
|
||||||
|
{
|
||||||
|
int size = *(int*)c = i->first.size();
|
||||||
|
c += sizeof(unsigned char);
|
||||||
|
memcpy( c, i->first.data(), size );
|
||||||
|
c += size;
|
||||||
|
|
||||||
|
size = *(int*)c = i->second.size();
|
||||||
|
c += sizeof(int);
|
||||||
|
memcpy( c, i->second.data(), size );
|
||||||
|
c += size;
|
||||||
|
|
||||||
|
// record bits
|
||||||
|
*c = i->second.validated | i->second.db_var << 1 | i->second.binary_var << 2;
|
||||||
|
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int CVars::deserialize( unsigned char *buf, long buf_sz ) // this will initialize the current instance by de-serializing the data from buf
|
||||||
|
{
|
||||||
|
// clear out the underlying map / erase any previous data
|
||||||
|
|
||||||
|
erase( begin(), end() );
|
||||||
|
|
||||||
|
if ( buf_sz < (long)sizeof(int) ) return 0;
|
||||||
|
|
||||||
|
unsigned char *c = buf;
|
||||||
|
int count = *(int*)buf;
|
||||||
|
c += sizeof( count );
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
for ( i=0; i<count; i++ )
|
||||||
|
{
|
||||||
|
if ( c-buf >= buf_sz ) return 0;
|
||||||
|
|
||||||
|
char name[256];
|
||||||
|
|
||||||
|
int size = *(unsigned char*)c;
|
||||||
|
c += sizeof(unsigned char);
|
||||||
|
|
||||||
|
if ( c-buf+size >= buf_sz ) break; // boundary check
|
||||||
|
|
||||||
|
strnsafecpy( name, (char*)c, size, sizeof(name) );
|
||||||
|
c += size;
|
||||||
|
|
||||||
|
if ( c-buf+(long)sizeof(int) >= buf_sz ) break; // boundary check
|
||||||
|
|
||||||
|
size = *(int*)c;
|
||||||
|
c += sizeof(int);
|
||||||
|
|
||||||
|
if ( c-buf+size+1 > buf_sz ) break; // boundary check
|
||||||
|
|
||||||
|
(*this)[name].assign( (char*)c, size );
|
||||||
|
c += size;
|
||||||
|
|
||||||
|
(*this)[name].validated = *c & 1;
|
||||||
|
(*this)[name].db_var = (*c >> 1) & 1;
|
||||||
|
(*this)[name].binary_var = (*c >> 2) & 1;
|
||||||
|
|
||||||
|
c++;
|
||||||
|
|
||||||
|
//printf( "i=%d\n", i );
|
||||||
|
}
|
||||||
|
|
||||||
|
return i; //>0 ? i-1 : 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
#ifndef CFG_H
|
||||||
|
#define CFG_H
|
||||||
|
|
||||||
|
#include "php_mermsemr_config.h"
|
||||||
|
|
||||||
|
void CfgReadConfig();
|
||||||
|
long CfgReadLong(const char* key);
|
||||||
|
//std::string CfgReadString(const char* key);
|
||||||
|
const char* CfgReadChar(const char* key);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,280 @@
|
|||||||
|
#ifndef __dew_cgi_lib
|
||||||
|
#define __dew_cgi_lib
|
||||||
|
|
||||||
|
#include "php_tmpl_prefix.h"
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <utime.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <netinet/tcp.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/timeb.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <ctype.h> // for tolower(char)
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <sqltypes.h>
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#include "clog.h"
|
||||||
|
#include "list.h"
|
||||||
|
#include "cvariables.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define CGI_FLAG_CLEAR (char*)-1
|
||||||
|
|
||||||
|
#define EMAIL_PREFIX TMPL_PREFIX
|
||||||
|
|
||||||
|
enum { METHOD_NONE, METHOD_GET, METHOD_POST };
|
||||||
|
enum { SEQ_NONE, SEQ_REVERSE };
|
||||||
|
|
||||||
|
int Min0(int a, int b, bool & EOS); // Returns the smaller of the two; if it's < 0, returns 0
|
||||||
|
// a = how many to copy; b = limit;
|
||||||
|
|
||||||
|
void strncpy_(char * dst, char * src, int n);
|
||||||
|
|
||||||
|
int GetParam(char * params, char _name[], char value[], int valuelen, char ** end = NULL);
|
||||||
|
|
||||||
|
void CatFile( char * fname, FILE * fout );
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
|
* *
|
||||||
|
* Classes *
|
||||||
|
* *
|
||||||
|
* - Class CVariables defines a set of routines for handling internal *
|
||||||
|
* variables, which are stored by using a linked list *
|
||||||
|
* *
|
||||||
|
* - Class CGIList implements the functionality in template rendering *
|
||||||
|
* by which one can define lists of unknown length from within *
|
||||||
|
* a template. *
|
||||||
|
* *
|
||||||
|
* - Class C_CGI_Form is the most essential class for the CGI interface. *
|
||||||
|
* It enables to obtain variables passed from the browser *
|
||||||
|
* and renders complex templates using CVariables and CGIList *
|
||||||
|
* *
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// The following deals with getting variables from forms
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char * mask, * explanation;
|
||||||
|
|
||||||
|
} pattern_t;
|
||||||
|
|
||||||
|
|
||||||
|
typedef
|
||||||
|
enum { CGI_STRING, CGI_RADIO,
|
||||||
|
CGI_SELECT,
|
||||||
|
CGI_SELECT_LOOKUP,
|
||||||
|
CGI_CHECKBOX,
|
||||||
|
CGI_CHECKBOXLIST, // bit-encoded ULONG
|
||||||
|
CGI_LONG,
|
||||||
|
CGI_FLOAT,
|
||||||
|
CGI_CHECKBOXLIST_ARRAY, // array of ULONGs
|
||||||
|
CGI_RADIO_INT,
|
||||||
|
CGI_SELECT_MUL, // multiple select box
|
||||||
|
CGI_RADIO_INT2, // CGI_RADIO_INT that uses first two letters of the variable name for referencing values
|
||||||
|
CGI_AMOUNT, // currency amount, converts to unsigned long
|
||||||
|
}
|
||||||
|
CGI_VAR_TYPE;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
CGI_VAR_TYPE type;
|
||||||
|
|
||||||
|
// Matching
|
||||||
|
|
||||||
|
int minlen, maxlen;
|
||||||
|
pattern_t *pattern; // ext regular expression; NULL for skip
|
||||||
|
|
||||||
|
char **radio; // for radio buttons, NULL otherwise
|
||||||
|
unsigned char nradio; // number of elements
|
||||||
|
|
||||||
|
// return portion
|
||||||
|
|
||||||
|
void *target; // Where the result should be stored
|
||||||
|
int size; // Don't exceed this !
|
||||||
|
|
||||||
|
// corresponding SQL type
|
||||||
|
int sql_type;
|
||||||
|
|
||||||
|
// more return data
|
||||||
|
bool match;
|
||||||
|
|
||||||
|
|
||||||
|
} CGI_Variable;
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class CGIList;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char * pre, * post;
|
||||||
|
int pre_n, post_n;
|
||||||
|
} Tprepost;
|
||||||
|
|
||||||
|
|
||||||
|
class C_CGI_Form : public CVariables {
|
||||||
|
public:
|
||||||
|
friend class CGIList;
|
||||||
|
|
||||||
|
C_CGI_Form( char * _dir, char * _template_file, char * _global_template=NULL, int _argc=0, char **_argv = NULL );
|
||||||
|
// Instantiates a C_CGI_Form object.
|
||||||
|
// _dir - template directory
|
||||||
|
// _template_file - initial/default template file
|
||||||
|
// _global_template - used to encapsulate templates in a global template
|
||||||
|
// _arc - argc from main()
|
||||||
|
// _argv - argv from main()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
~C_CGI_Form( );
|
||||||
|
|
||||||
|
void Email( char * fname, char * from=NULL );
|
||||||
|
|
||||||
|
bool Form( FILE * fout ); // Render output from current template into opened file 'fout'
|
||||||
|
bool Form( FILE * fout, char * template_file );
|
||||||
|
|
||||||
|
char * FormFile( char * fname ); // Render output from current template into 'fname'
|
||||||
|
|
||||||
|
char * FormBuffer( char * buf );
|
||||||
|
|
||||||
|
/* bool FormBuffer( char * buf, FILE * fout, char * listname = NULL, int listi = 0 );
|
||||||
|
// Render output from current template into buffer*/
|
||||||
|
char * RFormBuffer( char * buf, char * listname = NULL, int listi = 0 );
|
||||||
|
// Render output from current template into buffer using recursion
|
||||||
|
|
||||||
|
#ifdef WITH_LANGUAGE
|
||||||
|
char *translate( char * buf, const char *template_file );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// int GetParam( char name[], char value[], int valuelen );
|
||||||
|
// Scan 'params' for 'name' and return its value in 'value'
|
||||||
|
int GetParam( char name[], char value[], int valuelen, char ** end = NULL, char *start = NULL );
|
||||||
|
int GetParamMul( char name[], TList ** list );
|
||||||
|
|
||||||
|
int GetScreen( char * screens[], int n, const char * scrs = NULL );
|
||||||
|
// Returns current screen index as passed by the browser
|
||||||
|
// and looked up in screens[]
|
||||||
|
int GetCommand( char * commands[], int n );
|
||||||
|
// Returns current command index as passed by the browser
|
||||||
|
// and looked up in commands[]
|
||||||
|
|
||||||
|
void Template( char * _template_file )
|
||||||
|
// Sets the default template to '_template_file'
|
||||||
|
{
|
||||||
|
free( template_file );
|
||||||
|
template_file = (char*)malloc( strlen(TMPL_PREFIX)+1+strlen(_template_file)+1 );
|
||||||
|
sprintf( template_file, "%s/%s", TMPL_PREFIX, _template_file );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GlobalTemplate( char * _template_file )
|
||||||
|
// Sets the global template to '_template_file'
|
||||||
|
{
|
||||||
|
if ( global_template ) free( global_template );
|
||||||
|
global_template = strdup(_template_file);
|
||||||
|
}
|
||||||
|
// void ParseGlobalTemplate(); // Parse the global template file and set 'sectionX' variables
|
||||||
|
void ParseGlobalTemplate( char * fname = NULL );
|
||||||
|
bool ParseNewTemplate( char * fname = NULL );
|
||||||
|
|
||||||
|
void MatchVariable( CGI_Variable * var, bool optional = false, bool flag_if_mismatch = true );
|
||||||
|
// Provides CGI variable mapping and matching functionality
|
||||||
|
// can match against regular expressions etc
|
||||||
|
void SetVariable( CGI_Variable * var );
|
||||||
|
// Sets a variable that may be used in a template
|
||||||
|
void Flag( CGI_Variable * var );
|
||||||
|
// Mark variable as invalid input
|
||||||
|
void Flag( char * var, char * explanation = NULL );
|
||||||
|
// Mark variable as invalid input
|
||||||
|
|
||||||
|
void ClearVariable( CGI_Variable var );
|
||||||
|
|
||||||
|
void GetNextVariable( TList * &cur, char * &c1, char * &c, char * listname, int listi );
|
||||||
|
CGIList * lists[50];
|
||||||
|
int nlists;
|
||||||
|
|
||||||
|
char * params;
|
||||||
|
|
||||||
|
char * template_file;
|
||||||
|
char * global_template;
|
||||||
|
|
||||||
|
unsigned char method, sequence;
|
||||||
|
|
||||||
|
private:
|
||||||
|
char * dir;
|
||||||
|
char * form;
|
||||||
|
|
||||||
|
#ifdef WITH_LANGUAGE
|
||||||
|
char language[10];
|
||||||
|
#endif
|
||||||
|
int argc;
|
||||||
|
char** argv;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class CGIList
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
friend class C_CGI_Form;
|
||||||
|
|
||||||
|
CGIList( C_CGI_Form * _form, char * name );
|
||||||
|
|
||||||
|
// Instantiates a CGI_List object
|
||||||
|
// _form points to the parent form object
|
||||||
|
// name - name of the list as used in template
|
||||||
|
|
||||||
|
~CGIList() { free( listname ); if (form) form->lists[listn] = 0; };
|
||||||
|
|
||||||
|
int CloseElement() { return ++n; };
|
||||||
|
// Move on to the next element in the list.
|
||||||
|
|
||||||
|
void LetStr( char * var, char * value );
|
||||||
|
// Set a CGI list variable using the list name and element number as part of the name
|
||||||
|
|
||||||
|
void LetStrf( char * var, const char * format, ... );
|
||||||
|
|
||||||
|
void LetInt16( char * var, int value );
|
||||||
|
// Set a CGI list variable using the list name and element number as part of the name
|
||||||
|
|
||||||
|
char * GetVariable( char * var, char * result, int size );
|
||||||
|
// Obtain a CGI list variable value using the list name and element number as part of the name
|
||||||
|
|
||||||
|
void LetStr( char * var, const char * format, ... );
|
||||||
|
|
||||||
|
int n;
|
||||||
|
private:
|
||||||
|
C_CGI_Form * form;
|
||||||
|
int listn;
|
||||||
|
char * listname;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class CInputError : public CVariables {
|
||||||
|
public:
|
||||||
|
|
||||||
|
void Add( bool text, const char * name, const char * explanation, ... );
|
||||||
|
char * Get( const char * name, bool *text );
|
||||||
|
void Log();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,191 @@
|
|||||||
|
#ifndef __CLOG_H__
|
||||||
|
#define __CLOG_H__
|
||||||
|
|
||||||
|
#include "php_mermsemr_log.h"
|
||||||
|
#include "php_filelog_max_level.h"
|
||||||
|
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
inline std::string NowTime();
|
||||||
|
|
||||||
|
enum TLogLevel {logERROR, logWARNING, logINFO, logDEBUG, logDEBUG1, logDEBUG2, logDEBUG3, logDEBUG4, logSQL, FLOG_MAX};
|
||||||
|
|
||||||
|
void logfmt( TLogLevel level, const char * format, ... );
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
class Log
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Log();
|
||||||
|
virtual ~Log();
|
||||||
|
std::ostringstream& Get(TLogLevel level = logINFO);
|
||||||
|
public:
|
||||||
|
static TLogLevel& ReportingLevel();
|
||||||
|
static std::string ToString(TLogLevel level);
|
||||||
|
static TLogLevel FromString(const std::string& level);
|
||||||
|
protected:
|
||||||
|
std::ostringstream os;
|
||||||
|
private:
|
||||||
|
Log(const Log&);
|
||||||
|
Log& operator =(const Log&);
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
Log<T>::Log()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
std::ostringstream& Log<T>::Get(TLogLevel level)
|
||||||
|
{
|
||||||
|
os << "- " << NowTime();
|
||||||
|
os << " " << ToString(level);
|
||||||
|
os << " [" << getpid() << "]: ";
|
||||||
|
os << std::string(level > logDEBUG ? level - logDEBUG : 0, '\t');
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
Log<T>::~Log()
|
||||||
|
{
|
||||||
|
os << std::endl;
|
||||||
|
T::Output(os.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
TLogLevel& Log<T>::ReportingLevel()
|
||||||
|
{
|
||||||
|
static TLogLevel reportingLevel = FLOG_MAX;
|
||||||
|
return reportingLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
std::string Log<T>::ToString(TLogLevel level)
|
||||||
|
{
|
||||||
|
static const char* const buffer[] = {"ERROR", "WARNING", "INFO", "DEBUG", "DEBUG1", "DEBUG2", "DEBUG3", "DEBUG4", "SQL", "FLOG_MAX"};
|
||||||
|
return buffer[level];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
TLogLevel Log<T>::FromString(const std::string& level)
|
||||||
|
{
|
||||||
|
if (level == "FLOG_MAX")
|
||||||
|
return FLOG_MAX;
|
||||||
|
if (level == "SQL")
|
||||||
|
return logSQL;
|
||||||
|
if (level == "DEBUG4")
|
||||||
|
return logDEBUG4;
|
||||||
|
if (level == "DEBUG3")
|
||||||
|
return logDEBUG3;
|
||||||
|
if (level == "DEBUG2")
|
||||||
|
return logDEBUG2;
|
||||||
|
if (level == "DEBUG1")
|
||||||
|
return logDEBUG1;
|
||||||
|
if (level == "DEBUG")
|
||||||
|
return logDEBUG;
|
||||||
|
if (level == "INFO")
|
||||||
|
return logINFO;
|
||||||
|
if (level == "WARNING")
|
||||||
|
return logWARNING;
|
||||||
|
if (level == "ERROR")
|
||||||
|
return logERROR;
|
||||||
|
Log<T>().Get(logWARNING) << "Unknown logging level '" << level << "'. Using INFO level as default.";
|
||||||
|
return logINFO;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Output2FILE
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static FILE*& Stream();
|
||||||
|
static void Output(const std::string& msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
inline FILE*& Output2FILE::Stream()
|
||||||
|
{
|
||||||
|
static FILE* pStream = stderr;
|
||||||
|
return pStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void Output2FILE::Output(const std::string& msg)
|
||||||
|
{
|
||||||
|
FILE* pStream = Stream();
|
||||||
|
if (!pStream)
|
||||||
|
return;
|
||||||
|
fprintf(pStream, "%s", msg.c_str());
|
||||||
|
fflush(pStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
|
||||||
|
# if defined (BUILDING_FILELOG_DLL)
|
||||||
|
# define FILELOG_DECLSPEC __declspec (dllexport)
|
||||||
|
# elif defined (USING_FILELOG_DLL)
|
||||||
|
# define FILELOG_DECLSPEC __declspec (dllimport)
|
||||||
|
# else
|
||||||
|
# define FILELOG_DECLSPEC
|
||||||
|
# endif // BUILDING_DBSIMPLE_DLL
|
||||||
|
#else
|
||||||
|
# define FILELOG_DECLSPEC
|
||||||
|
#endif // _WIN32
|
||||||
|
|
||||||
|
class FILELOG_DECLSPEC FILELog : public Log<Output2FILE> {};
|
||||||
|
//typedef Log<Output2FILE> FILELog;
|
||||||
|
|
||||||
|
#ifndef FILELOG_MAX_LEVEL
|
||||||
|
#define FILELOG_MAX_LEVEL FLOG_MAX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define FILE_LOG(level) \
|
||||||
|
if (level > FILELOG_MAX_LEVEL) ;\
|
||||||
|
else if (level > FILELog::ReportingLevel() || !Output2FILE::Stream()) ; \
|
||||||
|
else FILELog().Get(level)
|
||||||
|
|
||||||
|
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
inline std::string NowTime()
|
||||||
|
{
|
||||||
|
const int MAX_LEN = 200;
|
||||||
|
char buffer[MAX_LEN];
|
||||||
|
if (GetTimeFormatA(LOCALE_USER_DEFAULT, 0, 0,
|
||||||
|
"HH':'mm':'ss", buffer, MAX_LEN) == 0)
|
||||||
|
return "Error in NowTime()";
|
||||||
|
|
||||||
|
char result[100] = {0};
|
||||||
|
static DWORD first = GetTickCount();
|
||||||
|
std::sprintf(result, "%s.%03ld", buffer, (long)(GetTickCount() - first) % 1000);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
|
inline std::string NowTime()
|
||||||
|
{
|
||||||
|
char buffer[11];
|
||||||
|
time_t t;
|
||||||
|
time(&t);
|
||||||
|
tm r = {0};
|
||||||
|
strftime(buffer, sizeof(buffer), "%X", localtime_r(&t, &r));
|
||||||
|
struct timeval tv;
|
||||||
|
gettimeofday(&tv, 0);
|
||||||
|
char result[100] = {0};
|
||||||
|
std::sprintf(result, "%s.%03ld", buffer, (long)tv.tv_usec / 1000);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //WIN32
|
||||||
|
|
||||||
|
|
||||||
|
#endif //__LOG_H__
|
||||||
|
|
||||||
|
/*
|
||||||
|
vi:ts=2
|
||||||
|
*/
|
||||||
|
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
/* config.h. Generated from config.h.in by configure. */
|
||||||
|
/* config.h.in. Generated from configure.in by autoheader. */
|
||||||
|
|
||||||
|
/* Whether to build mermsemr_api as dynamic module */
|
||||||
|
#define COMPILE_DL_MERMSEMR_API 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#define HAVE_DLFCN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#define HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#define HAVE_MEMORY_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#define HAVE_STDINT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#define HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#define HAVE_STRINGS_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#define HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#define HAVE_SYS_STAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#define HAVE_UNISTD_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||||
|
/* #undef NO_MINUS_C_MINUS_O */
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#define PACKAGE_BUGREPORT ""
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#define PACKAGE_NAME ""
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#define PACKAGE_STRING ""
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#define PACKAGE_TARNAME ""
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#define PACKAGE_URL ""
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#define PACKAGE_VERSION ""
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#define STDC_HEADERS 1
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#ifndef __mx_creditcards_h__
|
||||||
|
#define __mx_creditcards_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long save_creditcard(CVars in, CVars &out);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
#ifndef __cvariables__
|
||||||
|
#define __cvariables__
|
||||||
|
|
||||||
|
#include "stdarg.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX_CGI_VAR_LEN 50
|
||||||
|
|
||||||
|
typedef struct _L_Variables
|
||||||
|
{
|
||||||
|
char name[MAX_CGI_VAR_LEN+1];
|
||||||
|
char * value;
|
||||||
|
int opts; // options? used by some decendants
|
||||||
|
struct _L_Variables * next;
|
||||||
|
|
||||||
|
} L_Variables;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class CVariables
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
friend class CGIList;
|
||||||
|
|
||||||
|
CVariables( );
|
||||||
|
|
||||||
|
~CVariables( );
|
||||||
|
|
||||||
|
void RenameVariable( const char * name, const char * newname );
|
||||||
|
void LetInt16( char * var, const int value ); // Set the variable to an integer value
|
||||||
|
void LetStr( const char * var, const char * value ); // Set the variable to a string value
|
||||||
|
void LetStrf( char * var, const char * format, ... );
|
||||||
|
void vLetStrf( char * var, const char * format, va_list ap );
|
||||||
|
void LetStr( char * var, const char * value, int len );
|
||||||
|
// Set the variable to a string value and truncate to len
|
||||||
|
|
||||||
|
void StrCat( char * var, const char * format, ... );
|
||||||
|
void StrCatf( char * var, const char * format, ... );
|
||||||
|
|
||||||
|
char * GetVariable( const char * var ); // Obtain the variable value and return its temp location
|
||||||
|
char * GetVariable( const char * var, char * result, int size );
|
||||||
|
// Obtain the variable value and return it in 'result'
|
||||||
|
char * GetVariable( const char * var, bool test, char * section = "" );
|
||||||
|
long GetVariableLong( char * name, bool *valid = NULL );
|
||||||
|
long GetVariableLong( char * name, bool test, char * section = "" );
|
||||||
|
bool GetBool( char * var, bool test = false, char * section = "" );
|
||||||
|
|
||||||
|
void PrintVars( FILE * f = stdout ); // Print out all variables to file pointed to by 'f'
|
||||||
|
|
||||||
|
void Cleanup();
|
||||||
|
|
||||||
|
L_Variables * var, * var_top;
|
||||||
|
|
||||||
|
L_Variables * FindVariable( const char * var, bool create=false );
|
||||||
|
// Obtains the next variable during the template parsing process
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#ifndef __EXCEPTIONS_H__
|
||||||
|
#define __EXCEPTIONS_H__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
class bad_parameter{
|
||||||
|
public:
|
||||||
|
|
||||||
|
bad_parameter( CVars &out, const char *name );
|
||||||
|
};
|
||||||
|
|
||||||
|
class err : public std::exception
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
err( char *msg );
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#ifndef __mx_function_agents_h__
|
||||||
|
#define __mx_function_agents_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long medTrDeviceList(CVars in, CVars &out);
|
||||||
|
long medTrCreateAgent(CVars in, CVars &out);
|
||||||
|
long TranspLoginAdmin(CVars in, CVars &out);
|
||||||
|
long TransporterSessionCheck(long uid, const char *sessionid, int create);
|
||||||
|
long medTrTransporterTransportList(CVars in, CVars &out);
|
||||||
|
long medTrLoadIntepreter(CVars in, CVars &out);
|
||||||
|
long medTrCreateIntepreter(CVars in, CVars &out);
|
||||||
|
long medTrCreateTransporter(CVars in, CVars &out);
|
||||||
|
long medTrTransporterLocationtList(CVars in, CVars &out);
|
||||||
|
long medTrTransporterTranslatortList(CVars in, CVars &out);
|
||||||
|
long medTrUpdateItepreter(CVars in, CVars &out);
|
||||||
|
long medTrLoadTransporter(CVars in, CVars &out);
|
||||||
|
long medTrUpdateTransporter(CVars in, CVars &out);
|
||||||
|
long medTrInterpreterLanguage(CVars in, CVars &out);
|
||||||
|
long medTrInterpreterLangList(CVars in, CVars &out);
|
||||||
|
void GenerateAgentFolder(unsigned long agent_id, char * number, int sz);
|
||||||
|
long medTrAgentLangList(CVars in, CVars &out);
|
||||||
|
long medAssignTranspoter(CVars in, CVars &out);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
#ifndef __mx_function_backoffice_h__
|
||||||
|
#define __mx_function_backoffice_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long LoginBkoAdmin(CVars in, CVars &out);
|
||||||
|
long createBkoAdmin(CVars in, CVars &out);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#ifndef __mx_function_cron_h__
|
||||||
|
#define __mx_function_cron_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#ifndef __mx_function_driver_h__
|
||||||
|
#define __mx_function_driver_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long medTrDriverFunctions(CVars in, CVars &out);
|
||||||
|
long medTrCreateDriver(CVars in, CVars &out);
|
||||||
|
long medTrDriverList(CVars in, CVars &out);
|
||||||
|
long medTrDriverUpdate(CVars in, CVars &out);
|
||||||
|
long medTrLoadDriver(CVars in, CVars &out);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#ifndef __mx_function_invoice_h__
|
||||||
|
#define __mx_function_invoice_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long medTrInvoiceFunctions(CVars in, CVars &out);
|
||||||
|
long medTrGetTransportInvoice(CVars in, CVars &out);
|
||||||
|
long medTrGetMemberInvoice(CVars in, CVars &out);
|
||||||
|
long getMemberInvoiceID( long transport_id );
|
||||||
|
long medTrInvoice(CVars in, CVars &out);
|
||||||
|
long medTSendInvoice(CVars in, CVars &out);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#ifndef __mx_function_members_h__
|
||||||
|
#define __mx_function_members_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
long DeletAallCards(CVars in, CVars &out);
|
||||||
|
long medTMemberLogin(CVars in, CVars &out);
|
||||||
|
long medTrCreateMember(CVars in, CVars &out);
|
||||||
|
long medTrUpdateProfile(CVars in, CVars &out);
|
||||||
|
long kleenNewLundryPickUp(CVars in, CVars &out);
|
||||||
|
long SessionCheck(long uid, const char *sessionid, int create );
|
||||||
|
long medTrUpdateStartProfile(CVars in, CVars &out);
|
||||||
|
long getServiceDetail(long service_id, CVars &out);
|
||||||
|
long medTrMemberTransportList(CVars in, CVars &out);
|
||||||
|
long medTrMemberTransportById(CVars in, CVars &out);
|
||||||
|
long medTrLanguageList(CVars in, CVars &out);
|
||||||
|
long medTrMemberServiceById(CVars in, CVars &out);
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#ifndef __mx_function_users_h__
|
||||||
|
#define __mx_function_users_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long passwordReset(CVars in, CVars &out);
|
||||||
|
long startPassReset(CVars in, CVars &out);
|
||||||
|
long confirmPassReset(CVars in, CVars &out);
|
||||||
|
long completePassReset(CVars in, CVars &out);
|
||||||
|
long userDeleteCard(CVars in, CVars &out);
|
||||||
|
long kleenDryCleanList(CVars in, CVars &out);
|
||||||
|
long getUserCCList(CVars in, CVars &out);
|
||||||
|
long manageUserCCList(CVars in, CVars &out);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,140 @@
|
|||||||
|
/*-
|
||||||
|
* HMAC-SHA-224/256/384/512 implementation
|
||||||
|
* Last update: 06/15/2005
|
||||||
|
* Issue date: 06/15/2005
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Olivier Gay <olivier.gay@a3.epfl.ch>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the project nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _HMAC_SHA2_H
|
||||||
|
#define _HMAC_SHA2_H
|
||||||
|
|
||||||
|
#include "sha2.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
sha224_ctx ctx_inside;
|
||||||
|
sha224_ctx ctx_outside;
|
||||||
|
|
||||||
|
/* for hmac_reinit */
|
||||||
|
sha224_ctx ctx_inside_reinit;
|
||||||
|
sha224_ctx ctx_outside_reinit;
|
||||||
|
|
||||||
|
unsigned char block_ipad[SHA224_BLOCK_SIZE];
|
||||||
|
unsigned char block_opad[SHA224_BLOCK_SIZE];
|
||||||
|
} hmac_sha224_ctx;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
sha256_ctx ctx_inside;
|
||||||
|
sha256_ctx ctx_outside;
|
||||||
|
|
||||||
|
/* for hmac_reinit */
|
||||||
|
sha256_ctx ctx_inside_reinit;
|
||||||
|
sha256_ctx ctx_outside_reinit;
|
||||||
|
|
||||||
|
unsigned char block_ipad[SHA256_BLOCK_SIZE];
|
||||||
|
unsigned char block_opad[SHA256_BLOCK_SIZE];
|
||||||
|
} hmac_sha256_ctx;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
sha384_ctx ctx_inside;
|
||||||
|
sha384_ctx ctx_outside;
|
||||||
|
|
||||||
|
/* for hmac_reinit */
|
||||||
|
sha384_ctx ctx_inside_reinit;
|
||||||
|
sha384_ctx ctx_outside_reinit;
|
||||||
|
|
||||||
|
unsigned char block_ipad[SHA384_BLOCK_SIZE];
|
||||||
|
unsigned char block_opad[SHA384_BLOCK_SIZE];
|
||||||
|
} hmac_sha384_ctx;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
sha512_ctx ctx_inside;
|
||||||
|
sha512_ctx ctx_outside;
|
||||||
|
|
||||||
|
/* for hmac_reinit */
|
||||||
|
sha512_ctx ctx_inside_reinit;
|
||||||
|
sha512_ctx ctx_outside_reinit;
|
||||||
|
|
||||||
|
unsigned char block_ipad[SHA512_BLOCK_SIZE];
|
||||||
|
unsigned char block_opad[SHA512_BLOCK_SIZE];
|
||||||
|
} hmac_sha512_ctx;
|
||||||
|
|
||||||
|
void hmac_sha224_init(hmac_sha224_ctx *ctx, unsigned char *key,
|
||||||
|
unsigned int key_size);
|
||||||
|
void hmac_sha224_reinit(hmac_sha224_ctx *ctx);
|
||||||
|
void hmac_sha224_update(hmac_sha224_ctx *ctx, unsigned char *message,
|
||||||
|
unsigned int message_len);
|
||||||
|
void hmac_sha224_final(hmac_sha224_ctx *ctx, unsigned char *mac,
|
||||||
|
unsigned int mac_size);
|
||||||
|
void hmac_sha224(unsigned char *key, unsigned int key_size,
|
||||||
|
unsigned char *message, unsigned int message_len,
|
||||||
|
unsigned char *mac, unsigned mac_size);
|
||||||
|
|
||||||
|
void hmac_sha256_init(hmac_sha256_ctx *ctx, unsigned char *key,
|
||||||
|
unsigned int key_size);
|
||||||
|
void hmac_sha256_reinit(hmac_sha256_ctx *ctx);
|
||||||
|
void hmac_sha256_update(hmac_sha256_ctx *ctx, unsigned char *message,
|
||||||
|
unsigned int message_len);
|
||||||
|
void hmac_sha256_final(hmac_sha256_ctx *ctx, unsigned char *mac,
|
||||||
|
unsigned int mac_size);
|
||||||
|
void hmac_sha256(unsigned char *key, unsigned int key_size,
|
||||||
|
unsigned char *message, unsigned int message_len,
|
||||||
|
unsigned char *mac, unsigned mac_size);
|
||||||
|
|
||||||
|
void hmac_sha384_init(hmac_sha384_ctx *ctx, unsigned char *key,
|
||||||
|
unsigned int key_size);
|
||||||
|
void hmac_sha384_reinit(hmac_sha384_ctx *ctx);
|
||||||
|
void hmac_sha384_update(hmac_sha384_ctx *ctx, unsigned char *message,
|
||||||
|
unsigned int message_len);
|
||||||
|
void hmac_sha384_final(hmac_sha384_ctx *ctx, unsigned char *mac,
|
||||||
|
unsigned int mac_size);
|
||||||
|
void hmac_sha384(unsigned char *key, unsigned int key_size,
|
||||||
|
unsigned char *message, unsigned int message_len,
|
||||||
|
unsigned char *mac, unsigned mac_size);
|
||||||
|
|
||||||
|
void hmac_sha512_init(hmac_sha512_ctx *ctx, unsigned char *key,
|
||||||
|
unsigned int key_size);
|
||||||
|
void hmac_sha512_reinit(hmac_sha512_ctx *ctx);
|
||||||
|
void hmac_sha512_update(hmac_sha512_ctx *ctx, unsigned char *message,
|
||||||
|
unsigned int message_len);
|
||||||
|
void hmac_sha512_final(hmac_sha512_ctx *ctx, unsigned char *mac,
|
||||||
|
unsigned int mac_size);
|
||||||
|
void hmac_sha512(unsigned char *key, unsigned int key_size,
|
||||||
|
unsigned char *message, unsigned int message_len,
|
||||||
|
unsigned char *mac, unsigned mac_size);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* ! _HMAC_SHA2_H */
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#ifndef __INPUT_H__
|
||||||
|
#define __INPUT_H__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
#include "exceptions.h"
|
||||||
|
|
||||||
|
void REQ_STRING( CVars &in, const char * name, int min_len, int max_len, const char *regex ) throw (bad_parameter);
|
||||||
|
long REQ_LONG( CVars &in, const char *name, long min, long max );
|
||||||
|
bool OptionalSpecified( CVars &in, const char * name );
|
||||||
|
|
||||||
|
#define OPTIONAL(mapname, var) \
|
||||||
|
if ( OptionalSpecified(mapname,var) )
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#ifndef __storeface_list_h__
|
||||||
|
#define __storeface_list_h__
|
||||||
|
|
||||||
|
typedef struct _list
|
||||||
|
{
|
||||||
|
char * text;
|
||||||
|
struct _list * next;
|
||||||
|
} TList;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void DestroyList( TList * top );
|
||||||
|
|
||||||
|
TList * Add( TList * list, char * text, long size );
|
||||||
|
|
||||||
|
TList * AddF( TList * list, char * format, ... );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#ifndef __mx_medTEmails_h__
|
||||||
|
#define __mx_medTEmails_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long member_email_calls(long action, CVars in, CVars &out);
|
||||||
|
long transporter_email_calls(long action, CVars in, CVars &out);
|
||||||
|
long agent_email_calls(long action, CVars in, CVars &out);
|
||||||
|
long cron_email_calls(long action, CVars in, CVars &out);
|
||||||
|
long alert_email_calls(long action, CVars in, CVars &out);
|
||||||
|
long email_test(CVars in, CVars &out);
|
||||||
|
long provider_email_calls(long action, CVars in, CVars &out);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#ifndef __mx_medTUpload_h__
|
||||||
|
#define __mx_medTUpload_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long medtrans_upload(CVars in, CVars &out);
|
||||||
|
long medtrans_download(CVars in, CVars &out);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#ifndef __mx_medTrBackOffice_h__
|
||||||
|
#define __mx_medTrBackOffice_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long backoffice_calls(CVars in, CVars &out);
|
||||||
|
long cron_call(CVars in, CVars &out);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#ifndef __mx_medTrMembers_h__
|
||||||
|
#define __mx_medTrMembers_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long members_call(CVars in, CVars &out);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#ifndef __mx_medTrTransporter_h__
|
||||||
|
#define __mx_medTrTransporter_h__
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long trasnporter_call(CVars in, CVars &out);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#ifndef MERMSEMR_API_MERMSEMR_H
|
||||||
|
#define MERMSEMR_API_MERMSEMR_H
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
// A very simple mermsemr class
|
||||||
|
class MermsEmr {
|
||||||
|
public:
|
||||||
|
MermsEmr();
|
||||||
|
~MermsEmr();
|
||||||
|
long mermsemr_api(CVars in, CVars &out);
|
||||||
|
const char* cfgReadChar(const char *parameter);
|
||||||
|
long cfgReadLong(const char *parameter);
|
||||||
|
void logMessage(const char *message);
|
||||||
|
private:
|
||||||
|
FILE* pFile;
|
||||||
|
int db;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* MERMSEMR_API_MERMSEMR_H */
|
||||||
@@ -0,0 +1,459 @@
|
|||||||
|
#ifndef MERMSEMR_API_H
|
||||||
|
#define MERMSEMR_API_H
|
||||||
|
|
||||||
|
enum {
|
||||||
|
DIR_TARGET, DIR_SOURCE};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
FLAG_INIT, FLAG_START, FLAG_CANCEL, FLAG_FAIL, FLAG_OK
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
WHAT_NEW_CARDADD, WHAT_PICKUP_INITIALPAYMENT
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
PARTNER_STRIPE
|
||||||
|
};
|
||||||
|
|
||||||
|
#define PHP_API_OK 0
|
||||||
|
#define PHP_CREATED_OK 10
|
||||||
|
#define PHP_LOGIN_OK 100
|
||||||
|
#define PHP_API_BAD_PARAM -1
|
||||||
|
#define PHP_VALID_SESSION 505
|
||||||
|
#define PHP_INVALID_SESSION 777
|
||||||
|
|
||||||
|
#define MODE_ADD 100
|
||||||
|
#define MODE_UPDATE 200
|
||||||
|
#define MODE_DELETE 300
|
||||||
|
#define MODE_LIST 400
|
||||||
|
|
||||||
|
#define NEW_CARD 0
|
||||||
|
#define EXISTING_CARD 1
|
||||||
|
#define ACH1 2
|
||||||
|
#define ACH2 3
|
||||||
|
#define BALANCE 4
|
||||||
|
#define INSURANCE 5
|
||||||
|
#define INVOICED 6
|
||||||
|
|
||||||
|
#define INVOICE_PREVIEW 100
|
||||||
|
#define INVOICE_FINAL 200
|
||||||
|
|
||||||
|
#define TRNASPORTER 1
|
||||||
|
#define TRANSLATOR 2
|
||||||
|
|
||||||
|
|
||||||
|
#define MODE_CONFIRM_ASSIGNMENT 100
|
||||||
|
#define MODE_REJECT_ASSIGNMENT 200
|
||||||
|
#define MODE_CANCEL_ASSIGNMENT 210
|
||||||
|
#define MODE_ACTIVATE_ASSIGNMENT 300
|
||||||
|
#define MODE_COMPLETE_ASSIGNMENT 400
|
||||||
|
|
||||||
|
#define MODE_RELEASE_DRIVER_ASSIGNMENT 705
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define MEDTRANS_STRIPE_CHARGE_ONE 90004
|
||||||
|
#define MEDTRANS_STRIPE_CHARGE_NEW 90005
|
||||||
|
#define MEDTRANS_EMAIL_TEST 90006
|
||||||
|
|
||||||
|
#define MEDTRANS_PROCESS_PAYMENT 90011
|
||||||
|
|
||||||
|
#define MEDTRANS_UPLOADS 4505
|
||||||
|
#define MEDTRANS_DOWNLOAD 4506
|
||||||
|
|
||||||
|
// MEDTRANS BACK OFFICE FUNCTION*****************
|
||||||
|
#define MEDTRANS_BKO_START 100000
|
||||||
|
#define MEDTRANS_BKO_LOGIN 100005
|
||||||
|
#define MEDTRANS_BKO_CREATEUSER 100010
|
||||||
|
#define MEDTRANS_BKO_EDITUSER 100011
|
||||||
|
#define MEDTRANS_BKO_UPDATEMEMBER 100012
|
||||||
|
#define MEDTRANS_BKO_ADDREASON 100020
|
||||||
|
#define MERMSEMR_BKO_DELETEALLCARDS 100022
|
||||||
|
#define MERMSEMR_BKO_ADDCARD 100028
|
||||||
|
#define MEDTRANS_BKO_LANGUAGE_STATUS 100030
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define MEDTRANS_BKO_CONFIG_USER_TRANSPORT_PRICING 100100
|
||||||
|
#define MEDTRANS_BKO_CONFIG_USER_TRANSLATOR_PRICING 100101
|
||||||
|
#define MEDTRANS_BKO_CONFIG_USER_CONCIERGE_PRICING 100102
|
||||||
|
#define MEDTRANS_BKO_CONFIG_AGENT_TRANSPORT_PRICING 100103
|
||||||
|
#define MEDTRANS_BKO_CONFIG_AGENT_TRANSLATOR_PRICING 100104
|
||||||
|
#define MEDTRANS_BKO_CONFIG_AGENT_CONCIERGE_PRICING 100105
|
||||||
|
|
||||||
|
#define MEDTRANS_BKO_END 199999
|
||||||
|
// MEDTRANS USER FUNCTIONS***********************
|
||||||
|
#define MEDTRANS_USER_START 200000
|
||||||
|
|
||||||
|
#define MERMSEMR_USER_DRYCLIST 200002
|
||||||
|
#define MEDTRANS_USER_LOGIN 200005 // LOGIN USER
|
||||||
|
#define MEDTRANS_USER_VERIFYSESSION 200007 // VERIFY SESSION
|
||||||
|
|
||||||
|
#define MEDTRANS_USER_CREATE 200010 // CREATE NEW USER
|
||||||
|
#define MERMSEMR_USER_COMPLETEPROFILE 200013 // Required profile update
|
||||||
|
|
||||||
|
#define MEDTRANS_USER_UPDATE 200015 // UPDATING USER PROFILE
|
||||||
|
#define MEDTRANS_USER_PROFILE 200020 // THIS CREATES THE ADDRESS ENTRY
|
||||||
|
#define MERMSEMR_USER_SAVECARDPAYMENT 200021
|
||||||
|
#define MERMSEMR_USER_GETCCLIST 200022
|
||||||
|
|
||||||
|
#define MEDTRANS_USER_NEWLUNDRYPICK 200025 // REQUEST TRANSPORT
|
||||||
|
|
||||||
|
#define MEDTRANS_USER_GET_TRAN_BYID 200030 // REQUEST TRANSPORT BY ID
|
||||||
|
#define MERMSEMR_USER_GETSERVICELIST 200035 // REQUEST TRANSPORT LIST
|
||||||
|
#define MEDTRANS_USER_LUNDRYLOCATION 200040
|
||||||
|
|
||||||
|
#define MEDTRANS_USER_GET_TRANSLLIST 200045 // REQUEST TRANSLATION LIST
|
||||||
|
|
||||||
|
#define MEDTRANS_USER_SENDINVOICE 200059
|
||||||
|
#define MEDTRANS_USER_GET_INVOICE 200060
|
||||||
|
#define MEDTRANS_USER_GETINVOICE 200063
|
||||||
|
|
||||||
|
#define MERMSEMR_USER_CONFIRMPICKUP 200064
|
||||||
|
|
||||||
|
#define MERMSEMR_USER_GETSERVICEITEM 200065
|
||||||
|
#define MEDTRANS_USER_GETCCLIST 200066
|
||||||
|
//#define MEDTRANS_USER_START_PASSRESET 200067
|
||||||
|
//#define MEDTRANS_USER_CONFIRM_RESET 200068
|
||||||
|
//#define MEDTRANS_USER_COMPLETE_PASSRESET 200069
|
||||||
|
|
||||||
|
#define MEDTRANS_USER_PASSRESET 200067
|
||||||
|
|
||||||
|
#define MERMSEMR_USER_DELETECARD 200075
|
||||||
|
|
||||||
|
|
||||||
|
#define RESET_START 100
|
||||||
|
#define RESET_CONFIRM 200
|
||||||
|
#define RESET_COMPLETE 300
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define MEDTRANS_USER_END 299999
|
||||||
|
// MEDTRANS INTERPRETERS ***************************
|
||||||
|
#define MEDTRANS_INTERP_START 300000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define MEDTRANS_INTERP_END 399999
|
||||||
|
// MEDTRANS TRANLATORS ***************************
|
||||||
|
#define MEDTRANS_TRANSP_START 400000
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_LOGIN 400005
|
||||||
|
#define MEDTRANS_LOAD_AGENT 400006
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_VERIFYSESSION 400007
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_CREATE 400010
|
||||||
|
#define MEDTRANS_TRANSP_ADDLOCATION 400020
|
||||||
|
#define MEDTRANS_TRANSP_LISTLOCATION 400021
|
||||||
|
#define MEDTRANS_TRANSP_EDITLOCATION 400022
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_AGENTPROFILE 400024
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_ADDDEVICE 400030
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_GET_TRANSLIST 400040
|
||||||
|
#define MEDTRANS_TRANSP_GET_TRANSPORTER 400041
|
||||||
|
#define MEDTRANS_TRANSP_SET_TRANSSTATUS 400042
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_GETREASON 400043
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_GET_TRANSLATOR 400044
|
||||||
|
#define MEDTRANS_TRANSP_ADD_TRANSLATOR 400045
|
||||||
|
#define MEDTRANS_TRANSP_LIST_TRANSLATOR 400046
|
||||||
|
#define MEDTRANS_TRANSP_EDIT_TRANSLATOR 400047
|
||||||
|
#define MEDTRANS_TRANSP_MANAGELANGUAGE 400049
|
||||||
|
#define MEDTRANS_TRANSP_LANGUAGELIST 400050
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_AGENTLANGUAGE 400051 // LANGUAGE SUPPORTED BY AGENT
|
||||||
|
#define MEDTRANS_TRANSP_GET_TRANSLATORLIST 400052
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSL_SET_TRANSSTATUS 400055
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_DRIVERSCALL 400060
|
||||||
|
#define MEDTRANS_TRANSP_GETINVOICE 400070
|
||||||
|
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_DEVICELIST 405000
|
||||||
|
|
||||||
|
#define TRANSPORT_ASSIGN 100
|
||||||
|
#define TRANSLATE_ASSIGN 200
|
||||||
|
|
||||||
|
|
||||||
|
#define PENDING 0
|
||||||
|
|
||||||
|
#define CONFIRMED 2
|
||||||
|
#define CANCELLED 3
|
||||||
|
|
||||||
|
#define ASSIGNED 4
|
||||||
|
|
||||||
|
#define INPROGRESS 7 // 8,9
|
||||||
|
|
||||||
|
|
||||||
|
#define COMPLETED 5
|
||||||
|
#define SETTLED 9
|
||||||
|
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_ASSIGNTRANSPORT 400080
|
||||||
|
#define MEDTRANS_TRANSP_ASSIGNTRANSLATOR 400085
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_CANCELTRANSLATION 470000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSL_ASSIGNFAIL 490001
|
||||||
|
|
||||||
|
|
||||||
|
#define MEDTRANS_TRANSP_END 499999
|
||||||
|
//***********************************************
|
||||||
|
#define MEDTRANS_PROVIDER_START 500000
|
||||||
|
|
||||||
|
#define MEDTRANS_PROVIDER_CREATE 500010
|
||||||
|
#define MEDTRANS_PROVIDER_LOGIN 500020
|
||||||
|
#define MEDTRANS_PROVIDER_VERIFYSESSION 500021
|
||||||
|
|
||||||
|
#define MEDTRANS_PROVIDER_PROVISION 500022
|
||||||
|
#define MEDTRANS_PROVIDER_SETSTATUS 500023
|
||||||
|
|
||||||
|
#define MEDTRANS_PROVIDER_RESETPASS 500025
|
||||||
|
|
||||||
|
#define MEDTRANS_PROVIDER_PROFILE 500027
|
||||||
|
#define MEDTRANS_PROVIDER_UPDATEPROFILE 500028
|
||||||
|
|
||||||
|
#define MEDTRANS_PROVIDER_TANSPORTLIST 500060
|
||||||
|
#define MEDTRANS_PROVIDER_TRANSLATEIST 500065
|
||||||
|
|
||||||
|
#define MEDTRANS_PROVIDER_END 599999
|
||||||
|
|
||||||
|
//status options
|
||||||
|
#define PROVIDER_DECLINE 3
|
||||||
|
#define PROVIDER_CONFIRM 4
|
||||||
|
#define PROVIDER_COMPLETED 5
|
||||||
|
#define PROVIDER_STARTED 6
|
||||||
|
|
||||||
|
// MEDTRANS CRONS ***************************
|
||||||
|
#define MEDTRANS_CRON_START 900000
|
||||||
|
|
||||||
|
#define CRON_USER_REMINDER 900001
|
||||||
|
#define CRON_TRANSPORTER_REMINDER 900002
|
||||||
|
#define CRON_INTERPRETER_REMINDER 900003
|
||||||
|
#define CRON_PROCESS_DISTANCE 900501
|
||||||
|
|
||||||
|
#define CRON_PROCESS_AUTOASSIGN 900510
|
||||||
|
|
||||||
|
|
||||||
|
#define MEDTRANS_CRON_END 999999
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PAYMENT_MODE 100
|
||||||
|
#define REFUND_MODE 333
|
||||||
|
|
||||||
|
#define OFFER_ACCEPT 100
|
||||||
|
#define OFFER_REJECT 333
|
||||||
|
#define OFFER_CANCEL 222
|
||||||
|
|
||||||
|
#define CONTRACT_NOTIFY_COMPLETE 4
|
||||||
|
#define CONTRACT_REQUEST_CANCEL 3
|
||||||
|
#define CONTRACT_ACCEPT_COMPLETE 5
|
||||||
|
#define CONTRACT_REJECT_COMPLETE 1
|
||||||
|
|
||||||
|
#define SM_PENDING 1
|
||||||
|
#define SM_CANCEL 3
|
||||||
|
#define SM_FAILED 4
|
||||||
|
#define SM_COMPLETED 5
|
||||||
|
|
||||||
|
|
||||||
|
// define email series here
|
||||||
|
#define ACCOUNT_CREATED_MAIL 100
|
||||||
|
#define ACCOUNT_CREATED_ALERT 101
|
||||||
|
#define ACCOUNT_CONTACT_MAIL 102
|
||||||
|
#define ACCOUNT_CONTACT_ALERT 103
|
||||||
|
#define ACCOUNT_PASSWORD_RESET 104
|
||||||
|
#define ACCOUNT_LOGIN_ALERT 105
|
||||||
|
#define ACCOUNT_RESEND_PENDING 106
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define ACCOUNT_SENDMONEY_ALERT 120
|
||||||
|
#define ACCOUNT_START_SENDMONEY 121
|
||||||
|
#define ACCOUNT_COMPLETE_SENDMONEY 122
|
||||||
|
|
||||||
|
|
||||||
|
#define JOBS_CREATED_MAIL 200
|
||||||
|
#define JOBS_INDIVIDUAL_OFFER_MAIL 201
|
||||||
|
#define JOBS_GROUP_OFFER_MAIL 202
|
||||||
|
#define JOBS_MESSAGE_ADDED 203
|
||||||
|
|
||||||
|
#define JOBS_OFFER_ACCEPT_MAIL 207
|
||||||
|
#define JOBS_OFFER_REJECT_MAIL 208
|
||||||
|
#define JOBS_OFFER_CANCEL_MAIL 209
|
||||||
|
|
||||||
|
|
||||||
|
//#define JOBS_CREATED_MAIL 202
|
||||||
|
//#define JOBS_CREATED_MAIL 203
|
||||||
|
|
||||||
|
|
||||||
|
#define PROJ_CREATED_MAIL 300
|
||||||
|
//#define PROJ_CREATED_MAIL 301
|
||||||
|
//#define PROJ_CREATED_MAIL 302
|
||||||
|
//#define PROJ_CREATED_MAIL 303
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//========================
|
||||||
|
|
||||||
|
|
||||||
|
#define MERMSEMR_SESSION_CHECK 299
|
||||||
|
#define MERMSEMR_USER_LOGIN 300
|
||||||
|
#define MERMSEMR_USER_LOGOUT 301
|
||||||
|
#define MERMSEMR_CREATE_ACCOUNT 320
|
||||||
|
|
||||||
|
//**************************************************************
|
||||||
|
#define MERMSEMR_BKO_START 10000
|
||||||
|
|
||||||
|
#define MERMSEMR_BKO_LOGIN 10010
|
||||||
|
#define MERMSEMR_BKO_CREATEUSER 10015
|
||||||
|
#define MERMSEMR_BKO_UPDATEUSER 10020
|
||||||
|
|
||||||
|
|
||||||
|
#define MERMSEMR_BKO_MEMBERADD 100025
|
||||||
|
#define MERMSEMR_BKO_MEMBERUPDT 100026
|
||||||
|
|
||||||
|
#define MERMSEMR_BKO_END 10999
|
||||||
|
//**************************************************************
|
||||||
|
#define MERMSEMR_ACCOUNT_START 11000
|
||||||
|
|
||||||
|
#define MERMSEMR_ACCOUNT_TESTEMAIL 11001
|
||||||
|
#define MERMSEMR_ACCOUNT_PENDING 11010
|
||||||
|
#define MERMSEMR_VERIFY_PENDING_LINK 11015
|
||||||
|
#define MERMSEMR_ACCOUNT_RESETPASS 11016
|
||||||
|
|
||||||
|
#define MERMSEMR_DELETE_PENDING_LINK 11018
|
||||||
|
#define MERMSEMR_RESEND_PENDING_LINK 11019
|
||||||
|
|
||||||
|
#define MERMSEMR_ACCOUNT_CREATEACC 11020
|
||||||
|
#define MERMSEMR_ACCOUNT_LOGIN 11025
|
||||||
|
#define MERMSEMR_FACEBOOK_LOGIN 11026
|
||||||
|
#define MERMSEMR_SEND_CONTACTUS 11030
|
||||||
|
#define MERMSEMR_LOG_MEMBER 11040
|
||||||
|
|
||||||
|
|
||||||
|
#define MERMSEMR_ACCOUNT_END 11999
|
||||||
|
//**************************************************************
|
||||||
|
#define MERMSEMR_GROUP_START 12000
|
||||||
|
|
||||||
|
#define MERMSEMR_GROUP_CREATEGROUP 12010
|
||||||
|
#define MERMSEMR_GROUP_INVITEGROUP 12015
|
||||||
|
#define MERMSEMR_GROUP_ACCEPTGROUP 12020
|
||||||
|
|
||||||
|
#define MERMSEMR_GROUP_END 12999
|
||||||
|
//**************************************************************
|
||||||
|
#define MERMSEMR_JOBS_START 13000
|
||||||
|
|
||||||
|
#define MERMSEMR_JOB_CREATEJOB 13010
|
||||||
|
|
||||||
|
#define MERMSEMR_JOB_GROUP_MEMBER 13015
|
||||||
|
#define MERMSEMR_JOB_DELETE_GROUPMEMBER 13017
|
||||||
|
|
||||||
|
#define MERMSEMR_JOB_CREATE_GROUP 13020
|
||||||
|
#define MERMSEMR_JOB_DELETE_GROUP 13023
|
||||||
|
|
||||||
|
|
||||||
|
#define MERMSEMR_JOB_OFFER_INDVI 13030
|
||||||
|
#define MERMSEMR_JOB_OFFER_GROUP 13031
|
||||||
|
|
||||||
|
#define MERMSEMR_JOB_OFFER_CONCLUDE 13035
|
||||||
|
|
||||||
|
|
||||||
|
#define MERMSEMR_JOBS_END 13999
|
||||||
|
//**************************************************************
|
||||||
|
#define MERMSEMR_CONTRACT_START 14000
|
||||||
|
|
||||||
|
#define MERMSEMR_CONTRACT_MESSAGE 14010
|
||||||
|
#define MERMSEMR_CONTRACT_STATUS 14015
|
||||||
|
#define MERMSEMR_CONTRACT_END 14999
|
||||||
|
//**************************************************************
|
||||||
|
|
||||||
|
#define MERMSEMR_SMONEY_START 33000
|
||||||
|
|
||||||
|
#define MERMSEMR_SMONEY_ADDRECIPIENT 33010
|
||||||
|
#define MERMSEMR_SMONEY_MEMBER 33020
|
||||||
|
#define MERMSEMR_SMONEY_PROCFEE 33025
|
||||||
|
|
||||||
|
#define MERMSEMR_SMONEY_END 33999
|
||||||
|
//**************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define MERMSEMR_LOGIN_SHOP 50501
|
||||||
|
#define MERMSEMR_LOGIN_ADMIN 50502
|
||||||
|
#define MERMSEMR_LOGIN_MANAGER 50503
|
||||||
|
|
||||||
|
#define MERMSEMR_SURVEY_DATA 55000
|
||||||
|
#define MERMSEMR_ADD_SURVEY 55050
|
||||||
|
#define MERMSEMR_LOAD_SURVEY 55055
|
||||||
|
|
||||||
|
|
||||||
|
#define MERMSEMR_COMPLETE_SENDMONEY_INTERSW 555
|
||||||
|
#define MERMSEMR_GETBILLER_INTERSW 556
|
||||||
|
#define MERMSEMR_BILL_PAYMENT_ADVICE_INTERSW 557
|
||||||
|
|
||||||
|
#define MERMSEMR_INTERSW_GETBILLER 556
|
||||||
|
#define MERMSEMR_INTERSW_BILL_PAYMENT_ADVICE 557
|
||||||
|
#define MERMSEMR_INTERSW_GETBILLERPAYMENTINTEMS 558
|
||||||
|
#define MERMSEMR_INTERSW_GETBILLERCATEGORIES 559
|
||||||
|
#define MERMSEMR_INTERSW_DO_TRANSFER 560
|
||||||
|
#define MERMSEMR_INTERSW_QUERY_TRANSACTION 561
|
||||||
|
|
||||||
|
#define MERMSEMR_ADD_MONEYRECIPIENT 600
|
||||||
|
|
||||||
|
#define MERMSEMR_CREATE_USER_ACCOUNT 700
|
||||||
|
#define MERMSEMR_USER_ACCOUNT_LOGIN 710
|
||||||
|
#define MERMSEMR_START_PASSWORDRESET 720
|
||||||
|
#define MERMSEMR_COMPLETE_PASSWORDRESET 730
|
||||||
|
|
||||||
|
#define MERMSEMR_START_ADDMONEY 770
|
||||||
|
#define MERMSEMR_COMPLETE_ADDMONEY 775
|
||||||
|
|
||||||
|
#define MERMSEMR_ADD_MOBILE_TOPUPNUM 900
|
||||||
|
#define MERMSEMR_PROMO_CALL 990
|
||||||
|
|
||||||
|
|
||||||
|
#define MERMSEMR_STOREFACE_GET_ACCOUNT_BALANCE 891
|
||||||
|
|
||||||
|
#define MERMSEMR_LOG_ENTRY 900000
|
||||||
|
#define MERMSEMR_CREDIT_TOPUP 900010
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define MERMSEMR_TOPUP_ORDER 900020
|
||||||
|
#define MERMSEMR_TOPUP_ORDER_PURCHASE 900030
|
||||||
|
#define MERMSEMR_PAYPAL_IPNMSG 900090
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define MERMSEMR_BULKTOPUP_ORDER 700010
|
||||||
|
#define MERMSEMR_BULKTOPUP_ITEM 700020
|
||||||
|
#define MERMSEMR_BULKTOPUP_ITEMUPDATE 700030
|
||||||
|
#define MERMSEMR_BULKTOPUP_DELIVER 700040
|
||||||
|
|
||||||
|
|
||||||
|
#define MERMSEMR_BALANCE_TOPUP_ORDER 800020
|
||||||
|
#define MERMSEMR_BALANCE_TOPUP_PURCHASE 800030
|
||||||
|
#define MERMSEMR_BALANCE_TOPUP_PAYMENT 800040
|
||||||
|
|
||||||
|
#define VIRTUAL_AIRTOPUP 70011
|
||||||
|
|
||||||
|
#define PAY_MODE_BALANCE 0
|
||||||
|
#define PAY_MODE_CCARD 1
|
||||||
|
#define PAY_MODE_BONUS 9
|
||||||
|
|
||||||
|
#define APPROVED_BALANCE 5
|
||||||
|
#define DISAPROVE_BALANCE 3
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#ifndef MERMSEMR_API_MAIN_H
|
||||||
|
#define MERMSEMR_API_MAIN_H
|
||||||
|
|
||||||
|
#include "vars.h"
|
||||||
|
|
||||||
|
long mermsemr_api_main(CVars in, CVars &out);
|
||||||
|
|
||||||
|
#endif
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user