first commit
This commit is contained in:
+74
@@ -0,0 +1,74 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
BUILD_DIR=`dirname $0`
|
||||
# Get coregrade_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/
|
||||
|
||||
#####echo "Generating interswitch proxy..."
|
||||
#####cd shared_tool/soap
|
||||
#####wsdl2h -ninterswitch -Ninterswitch -qinterswitch -o QuickTellerService.h https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc?wsdl
|
||||
#wsdl2h -o QuickTellerService.h https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc?wsdl
|
||||
#####soapcpp2 -n -pinterswitch -qinterswitch -1 -C -i -I/usr/share/gsoap/import/ QuickTellerService.h
|
||||
#soapcpp2 -C -i -I/usr/share/gsoap/import/ QuickTellerService.h
|
||||
## copy C++
|
||||
#cp soapC.cpp ../soapC.cc
|
||||
#cp soapBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp ../soapBasicHttpBinding_USCOREQuickTellerServiceProxy.cc
|
||||
## copy headers
|
||||
#cp soapH.h ../../include/
|
||||
#cp soapBasicHttpBinding_USCOREQuickTellerServiceProxy.h ../../include/
|
||||
#cp BasicHttpBinding_USCOREQuickTellerService.nsmap ../../include/
|
||||
#cp soapStub.h ../../include/
|
||||
# copy C++
|
||||
#####cp interswitchC.cpp ../interswitchC.cc
|
||||
#####cp interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp ../interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc
|
||||
# copy headers
|
||||
#####cp interswitchH.h ../../include/
|
||||
#####cp interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h ../../include/
|
||||
#####cp interswitch.nsmap ../../include/
|
||||
#####cp interswitchStub.h ../../include/
|
||||
#####cd ../..
|
||||
echo "Generating paylid proxy..."
|
||||
cd shared_tool/paylid
|
||||
wsdl2h -npaylid -Npaylid -qpaylid -o PaylidService.h http://www.paylid.com/rsl/service.php?wsdl
|
||||
soapcpp2 -n -ppaylid -qpaylid -1 -C -i -I/usr/share/gsoap/import/ PaylidService.h
|
||||
# copy C++
|
||||
cp paylidC.cpp ../paylidC.cc
|
||||
cp paylidpaylidwsdlBindingProxy.cpp ../paylidpaylidwsdlBindingProxy.cc
|
||||
# copy headers
|
||||
cp paylidH.h ../../include/
|
||||
cp paylidStub.h ../../include/
|
||||
cp paylid.nsmap ../../include/
|
||||
cp paylidpaylidwsdlBindingProxy.h ../../include/
|
||||
cd ../..
|
||||
|
||||
# Generate extension
|
||||
phpize
|
||||
./configure --enable-coregrade_api
|
||||
echo "done."
|
||||
cd $BUILD_DIR
|
||||
echo $BUILD_DIR
|
||||
echo $WORK_DIR
|
||||
echo $USER
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Get coregrade_api root directory
|
||||
cd ..
|
||||
WORK_DIR=`pwd`
|
||||
# Checking user
|
||||
if [ "$USER" = "root" ]
|
||||
then
|
||||
echo "Do not run as root!"
|
||||
exit 1
|
||||
fi
|
||||
# Configure extension
|
||||
cd $WORK_DIR/src/
|
||||
|
||||
echo "Generating interswitch proxy..."
|
||||
cd shared_tool/soap
|
||||
wsdl2h -ninterswitch -Ninterswitch -qinterswitch -o QuickTellerService.h https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc?wsdl
|
||||
#wsdl2h -o QuickTellerService.h https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc?wsdl
|
||||
soapcpp2 -n -pinterswitch -qinterswitch -1 -C -i -I/usr/share/gsoap/import/ QuickTellerService.h
|
||||
#soapcpp2 -C -i -I/usr/share/gsoap/import/ QuickTellerService.h
|
||||
## copy C++
|
||||
#cp soapC.cpp ../soapC.cc
|
||||
#cp soapBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp ../soapBasicHttpBinding_USCOREQuickTellerServiceProxy.cc
|
||||
## copy headers
|
||||
#cp soapH.h ../../include/
|
||||
#cp soapBasicHttpBinding_USCOREQuickTellerServiceProxy.h ../../include/
|
||||
#cp BasicHttpBinding_USCOREQuickTellerService.nsmap ../../include/
|
||||
#cp soapStub.h ../../include/
|
||||
# copy C++
|
||||
cp interswitchC.cpp ../interswitchC.cc
|
||||
cp interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp ../interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc
|
||||
# copy headers
|
||||
cp interswitchH.h ../../include/
|
||||
cp interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h ../../include/
|
||||
cp interswitch.nsmap ../../include/
|
||||
cp interswitchStub.h ../../include/
|
||||
cd ../..
|
||||
@@ -0,0 +1,48 @@
|
||||
To: {{email}}
|
||||
Subject: {{site_name}} - Pending Signup - Verify {{email}}
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
<center>
|
||||
<table cellpadding="1" cellspacing="2" border="0" style="width:550px; font-size:12px;color:#333333;border-width: 1px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td><span align=center><img src="http://{{server_name}}/img/logo-email.png" alt="{{site_name}}"></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}},
|
||||
</td></tr><tr><td>
|
||||
Welcome to {{site_name}}!. In order to complete your registration , click or copy the link below into the browser to set your password.
|
||||
</td></tr><tr><td style="height:20px; background-color:#CEF6E3">
|
||||
Click Link : https://{{server_name}}/vemail.html?vlnk={{verify_link}}
|
||||
<br></td></tr><tr><td>
|
||||
{{site_name}} gives empowers you to form, find and join one or more groups. As a group member you will receive the benefit of wholesale prices on leading brands from reputable sellers on the purchases you need for your home, your business or your life!
|
||||
</td></tr><tr><td>
|
||||
|
||||
</td></tr><tr><td>
|
||||
Get in touch if you need further support at http://{{server_name}}/contact.html?vlnk=PLK-000634115584-000836017814-000634115584
|
||||
</td></tr><tr><td>
|
||||
{{site_name}} Team
|
||||
</td></tr><tr><td>
|
||||
{{server_name}}
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extgroup.html">To learn more about Groups click here</a>
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extrewards.html">To learn more about Group Rewards click here</a>
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extoffers.html">To see Offers click here</a>
|
||||
</td></tr><tr><td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
To: {{email}}
|
||||
Subject: Welcome to {{site_name}}
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
<center>
|
||||
<table cellpadding="1" cellspacing="2" border="0" style="width:550px; font-size:12px;color:#333333;border-width: 1px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td><span align=center><img src="http://{{server_name}}/img/logo-email.png" alt="{{site_name}}"></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}},
|
||||
</td></tr><tr><td>
|
||||
Welcome to {{site_name}}!.
|
||||
</td></tr><tr><td>
|
||||
{{site_name}} gives empowers you to form, find and join one or more groups. As a group member you will receive the benefit of wholesale prices on leading brands from reputable sellers on the purchases you need for your home, your business or your life!
|
||||
</td></tr><tr><td>
|
||||
|
||||
</td></tr><tr><td>
|
||||
Get in touch if you need further support at http://{{server_name}}/contact.html?vlnk=PLK-000634115584-000836017814-000634115584
|
||||
</td></tr><tr><td>
|
||||
{{site_name}} Team
|
||||
</td></tr><tr><td>
|
||||
{{server_name}}
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extgroup.html">To learn more about Groups click here</a>
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extrewards.html">To learn more about Group Rewards click here</a>
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extoffers.html">To see Offers click here</a>
|
||||
</td></tr><tr><td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
To: {{email}}
|
||||
Subject: {{group_name}} - Group Added
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
<center>
|
||||
<table cellpadding="1" cellspacing="2" border="0" style="width:550px; font-size:12px;color:#333333;border-width: 1px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td><span align=center><img src="http://{{server_name}}/img/logo-email.png" alt="{{site_name}}"></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
You have created <b>{{group_name}} </b>,
|
||||
</td></tr><tr><td>
|
||||
{{description}}
|
||||
</td></tr><tr><td>
|
||||
{{site_name}} gives empowers you to form, find and join one or more groups. As a group member you will receive the benefit of wholesale prices on leading brands from reputable sellers on the purchases you need for your home, your business or your life!
|
||||
</td></tr><tr><td>
|
||||
|
||||
</td></tr><tr><td>
|
||||
Get in touch if you need further support at http://{{server_name}}/contact.html?vlnk=PLK-000634115584-000836017814-000634115584
|
||||
</td></tr><tr><td>
|
||||
{{site_name}} Team
|
||||
</td></tr><tr><td>
|
||||
{{server_name}}
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extgroup.html">To learn more about Groups click here</a>
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extrewards.html">To learn more about Group Rewards click here</a>
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extoffers.html">To see Offers click here</a>
|
||||
</td></tr><tr><td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
To: {{email}}
|
||||
Subject: Welcome to Group : {{group_name}}
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
<center>
|
||||
<table cellpadding="1" cellspacing="2" border="0" style="width:550px; font-size:12px;color:#333333;border-width: 1px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td><span align=center><img src="http://{{server_name}}/img/logo-email.png" alt="{{site_name}}"></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}},
|
||||
</td></tr><tr><td>
|
||||
Welcome to {{site_name}}!.
|
||||
</td></tr><tr><td>
|
||||
{{site_name}} gives empowers you to form, find and join one or more groups. As a group member you will receive the benefit of wholesale prices on leading brands from reputable sellers on the purchases you need for your home, your business or your life!
|
||||
</td></tr><tr><td>
|
||||
|
||||
</td></tr><tr><td>
|
||||
Get in touch if you need further support at http://{{server_name}}/contact.html?vlnk=PLK-000634115584-000836017814-000634115584
|
||||
</td></tr><tr><td>
|
||||
{{site_name}} Team
|
||||
</td></tr><tr><td>
|
||||
{{server_name}}
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extgroup.html">To learn more about Groups click here</a>
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extrewards.html">To learn more about Group Rewards click here</a>
|
||||
</td></tr><tr><td>
|
||||
<a href="http://{{server_name}}/extoffers.html">To see Offers click here</a>
|
||||
</td></tr><tr><td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic Account Created Alert
|
||||
<html>
|
||||
<head>
|
||||
<style type="text/css">
|
||||
.tftable {font-size:12px;color:#333333;width:100%;border-width: 1px;border-color: #9dcc7a;border-collapse: collapse;}
|
||||
.tftable th {font-size:12px;background-color:#abd28e;border-width: 1px;padding: 4px;border-style: solid;border-color: #9dcc7a;text-align:left;}
|
||||
.tftable tr2 {background-color:#bedda7;}
|
||||
.tftable td {font-size:14px;border-width: 0px;padding: 4px;border-style: solid;border-color: #9dcc7a;}
|
||||
.tftable tr2:hover {background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
<center>
|
||||
<table cellpadding="2" cellspacing="2" border="1" id="dt2" style="width:250px; font-family: "Times New Roman", Georgia, Serif;font-size:14px;background-color:#abd28e;">
|
||||
|
||||
<tbody>
|
||||
|
||||
|
||||
<tr >
|
||||
<td colspan="2"><h3>Customer</h3></td>
|
||||
</tr>
|
||||
|
||||
<tr >
|
||||
<td class="left" style="width:100px">Firstname</td>
|
||||
<td>{{firstname}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left" style="width:100px">Lastname</td>
|
||||
<td>{{lastname}}</td>
|
||||
</tr>
|
||||
|
||||
<tr >
|
||||
<td class="left" style="width:100px">Email</td>
|
||||
<td>{{email2}}</td>
|
||||
</tr>
|
||||
|
||||
<tr >
|
||||
<td class="left" style="width:100px">Balance Naira</td>
|
||||
<td>{{balance2}} Naira</td>
|
||||
</tr>
|
||||
|
||||
<tr >
|
||||
<td class="left" style="width:100px">Balance Dollars</td>
|
||||
<td>{{dollar_balance2}} Dollars</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="left" style="width:100px">FaceBook</td>
|
||||
<td>{{fbid}} </td>
|
||||
</tr>
|
||||
|
||||
<tr >
|
||||
<td class="left" style="width:100px">Country</td>
|
||||
<td>{{country}} </td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
IP - Intelligence
|
||||
<table cellpadding="2" cellspacing="2" border="1" id="dt2" style="width:250px; font-family: "Times New Roman", Georgia, Serif;font-size:14px">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>VAR</th>
|
||||
<th class="essential">VALUE</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ><td class="left" style="width:100px">IP</td><td>{{loc}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">country_code</td><td>{{country_code}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">country_name</td><td>{{country_name}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">continent_code</td><td>{{continent_code}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">continent_name</td><td>{{continent_name}}</td></tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</center>
|
||||
|
||||
|
||||
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic Alerts Completed Balance Update [{{appramt2}} Naira] for {{firstname}}, {{lastname}}
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
|
||||
|
||||
<tr><td><span align=center><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></span></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;height:10px;">
|
||||
<span align="center">
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:10px; width:100px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td style="width:100px">Date and time :</td><td>{{balance_date}}</td></tr>
|
||||
<tr><td style="width:100px">Amount :</td><td> N{{appramt2}}</td></tr>
|
||||
<tr><td style="width:100px">Current Balance :</td><td> N{{balance2}}</td></tr>
|
||||
<tr><td style="width:100px">Transaction Fee :</td><td> N0:00</td></tr>
|
||||
</table>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
IP - Intelligence
|
||||
<table cellpadding="2" cellspacing="2" border="1" id="dt2" style="width:250px; font-family: "Times New Roman", Georgia, Serif;font-size:14px">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>VAR</th>
|
||||
<th class="essential">VALUE</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ><td class="left" style="width:100px">IP</td><td>{{loc}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">country_code</td><td>{{country_code}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">country_name</td><td>{{country_name}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">continent_code</td><td>{{continent_code}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">continent_name</td><td>{{continent_name}}</td></tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic We have Completed Your Balance Update [{{appramt2}} Naira]
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
|
||||
|
||||
<tr><td><span align=center><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}}, {{lastname}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Thank you for using PayQuic Services. We have completed processing your balance update as shown below:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;height:10px;">
|
||||
<span align="center">
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:10px; width:100px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td style="width:100px">Date and time :</td><td>{{balance_date}}</td></tr>
|
||||
<tr><td style="width:100px">Amount :</td><td> N{{appramt2}}</td></tr>
|
||||
<tr><td style="width:100px">Current Balance :</td><td> N{{balance2}}</td></tr>
|
||||
<tr><td style="width:100px">Transaction Fee :</td><td> N0:00</td></tr>
|
||||
</table>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
For further support go to our website at www.payquic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM.
|
||||
Thank you for choosing PayQuic.
|
||||
PayQuic Team.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic Welcome Airtime Gift for {{email}}
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
|
||||
Dear {{firstname}},
|
||||
<br>
|
||||
Thank you for signing up for PayQuic. As a reward for signing up, we are giving you N100 gift to use top up any phone as you please by November 7th, 2014.
|
||||
|
||||
Simply login to your PayQuic account and you will see N100 in your PayQuic balance. Use the balance by midnight on November 7th to instantly top up any phone. Enter the phone number and amount of N100 as shown in the graphic below.
|
||||
|
||||
To redeem your N100 gift NOW, <a href="http://www.payquic.com/">click here.</a>
|
||||
<br>
|
||||
For further support go to our website at www.payquic.com or call 0909003208 between the hours of 8am and 5pm on weekdays.
|
||||
<br>
|
||||
Thank you for choosing PayQuic.<br>
|
||||
PayQuic Team.
|
||||
</table>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td><a href="http://www.payquic.com/"><img src="https://www.payquic.com/img/payquic_air_email.png" alt="image topup with payquic"></a></td></tr>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic - Password Reset for {{email}} with {{lost_added}}
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td><span align=center><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
As you requested, your password has been reset.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
If it was not at your request, then please contact PayQuic support immediately.
|
||||
|
||||
For further support go to our website at www.PayQuic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM.
|
||||
Thank you for choosing PayQuic.
|
||||
PayQuic Team.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
To: {{email}}
|
||||
Subject: payQuic bonus offer on airtime top-ups
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
|
||||
|
||||
<tr><td><span align=center><a href="http://www.payquic.com"><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></a></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}}, {{lastname}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
It's election weekend. Take advantage of payQuic's bonus offer on airtime top-ups.
|
||||
|
||||
Get 10% bonus when you buy airtime for yourself or top-up for friends and family this weekend.
|
||||
|
||||
This offer is valid until Sunday March 29th at 11pm Nigeria time. It's quick and easy!
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
For further information go to our website at www.payquic.com
|
||||
Thank you for choosing PayQuic - your quick airtime purchase center.
|
||||
PayQuic Team
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,41 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic topUp with SMS
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
|
||||
|
||||
<tr><td><span align=center><a href="http://www.payquic.com"><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></a></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}}, {{lastname}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Do you know you can topup your phone quickly by adding money to your payquic balance.
|
||||
|
||||
Then topup any phone number by sending <b>Q#PIN#MSISDN#amount</b> to 38123 from your Etisalat line.
|
||||
|
||||
Top up on the go any time. Set up your pin by visiting PayQuic portal today.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
For further information go to our website at www.payquic.com
|
||||
Thank you for choosing PayQuic - your quick airtime purchase center.
|
||||
PayQuic Team
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,53 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic - Password Reset for {{email}}
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td><span align=center><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
We have initiated your password reset process as requested as by you on {{lost_added}}:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;height:10px;">
|
||||
<span align="center">
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:10px; width:300px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td style="width:130px;text-align:left;">Click the link</td><td>https://{{site}}/creset.html?rlink={{reset_link}}</td></tr>
|
||||
<tr><td style="width:130px;text-align:left;">Link will expire</td><td>{{expire}}</td></tr>
|
||||
</table>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
If it was not at your request, then please contact PayQuic support immediately.
|
||||
|
||||
For further support go to our website at www.PayQuic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM.
|
||||
Thank you for choosing PayQuic.
|
||||
PayQuic Team.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
To: {{email}}
|
||||
Subject: JubaBox-Welcome to JubaBox
|
||||
|
||||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
When space travel became a profitable enterprise due to
|
||||
asteroid mining and production in a vacuum-environment, it
|
||||
took no time at all for humanity to settle down on most of the
|
||||
planets and moons of our solar system. The ensuing economic
|
||||
boom allowed for great advances in technological research. Soon it
|
||||
became possible to travel vast distances in space. In the beginning,
|
||||
before warp (space-bending) technology, the distance between two
|
||||
star systems seemed an unconquerable obstacle. Later, jump gates,
|
||||
merging gravity with negative energy, created stable wormholes
|
||||
which made travel between two distant places of space feasible
|
||||
within moments. Humanity swarmed out to distant star systems at
|
||||
an increasing rate.
|
||||
The next breakthrough was the development of jump drives based
|
||||
on warp technology. The early versions of jump drives were only
|
||||
capable of handling short distances, but later it became possible to
|
||||
jump between star systems without the need for jump gates. This
|
||||
enabled human expansion to spread across the universe like a viral
|
||||
outbreak. Soon, human settlements appeared in hundreds of star
|
||||
systems, dozens of which grew into huge colonies. Unfortunately,
|
||||
the process of expansion became more and more difficult due to
|
||||
bureaucracy. Almost every star system within jump range was now
|
||||
sold out before the actual colonization took place. Many had to wait
|
||||
years for their chance at a new home on a new world.
|
||||
This all changed suddenly when a new, natural wormhole was
|
||||
discovered near the Canopus system. Although this phenomena had
|
||||
already been proven to exist, this was the first occasion such a
|
||||
miracle had been found. The probes sent into the wormhole showed
|
||||
that the passage through it was stable, and that a new galaxy awaited
|
||||
explorers on the other side. Speculation was endless. This could be a
|
||||
galaxy far from our Milky Way, a galaxy clear across the universe,
|
||||
maybe another dimension, or even a parallel universe.
|
||||
The wormhole was called EVE, because new worlds meant new
|
||||
beginnings for many. A decision was made to build jump gates on
|
||||
both sides of EVE, but travel would be restricted only to special,
|
||||
reinforced ships fit to travel through the wormhole. Then came the
|
||||
news that scientists predicted EVE would close within a few
|
||||
decades. To maximize the opportunities EVE offered, people and
|
||||
equipment were transported to the other side and bases were
|
||||
established in the new system.
|
||||
The system on the other side of EVE was appropriately dubbed
|
||||
New Eden. The two gates built on either side of EVE had to be
|
||||
huge, since the nature of the wormhole was rather unpredictable.
|
||||
These were the greatest structures mankind had ever built. It took
|
||||
two hundred years even with the new, greater economic potential of
|
||||
humanity to construct them. New Eden was declared free for
|
||||
everyone who could venture there. Those who reached unclaimed
|
||||
spots first got the right to build a base there. Hundreds of
|
||||
companies started their own exploration and colonizing ventures to
|
||||
the new worlds as soon as the gates opened.
|
||||
Although EVE closed while construction of New Eden was still in
|
||||
progress, the gates remained operational, but after 70 years of
|
||||
flawless operation, tragedy struck. An unexplained phenomenon
|
||||
destroyed the gates and caused a severe magneto-gravitational
|
||||
anomaly. The phenomenon made the gates useless, but, worse, it
|
||||
collapsed the fragile stability of the newly prospering society in New
|
||||
Eden. The EVE gates still exist, but ships daring to fly close to them
|
||||
are destroyed by the harmful gravitational storms.
|
||||
The effect of this catastrophe was instant and dramatic. Every
|
||||
settlement that was dependent on the highly developed industry of
|
||||
New Eden or on the Old World, found itself isolated. Most of the
|
||||
colonies, due to their relative newness, were not yet self-sustainable.
|
||||
The lack of oxygen, food and water sentenced many of the colonies
|
||||
to extinction. Those few settlements which survived slowly lost their
|
||||
knowledge and ability to produce hi-tech industry, because they
|
||||
lacked the tools or equipment to sustain it.
|
||||
The surviving enclaves lived separately from each other for eons.
|
||||
As time passed, environmental influences caused minor changes in
|
||||
their appearance and made them different from each other.
|
||||
Eventually, the survivors reclaimed space travel and reentered the
|
||||
cosmos of New Eden.
|
||||
The world of EVE is inhabited by five
|
||||
major races: Amarr, Caldari, Minmatar,
|
||||
Gallente and Jove. All of these races are of
|
||||
human origin; their ancestors entered this little
|
||||
part of the universe thousands of years ago
|
||||
through the natural wormhole. Though most
|
||||
of the first settlements collapsed when the
|
||||
wormhole suddenly closed, a few survived.
|
||||
Today.s races are the descendants of those scattered colonies.
|
||||
The largest of the five main empires, the Amarr Empire is a
|
||||
sprawling patchwork of feudal-like provinces held together by the
|
||||
might of the Emperor. spanning 40% of the inhabited solar
|
||||
systems. Religion has always played a big part in Amarrian politics
|
||||
and the Amarrians believe they are the rightful masters of the
|
||||
universe, souring their relations with their neighbours. Another
|
||||
source of ill-feeling on the part of the other empires is the fact that
|
||||
the Amarrians embrace slavery. The Amarr Emperor is the head of a
|
||||
ritualistic, authoritarian imperial state, and below him are the Five
|
||||
Heirs, the heads of the five royal families from which a new
|
||||
emperor is chosen. The Emperor.s authority is unquestioned and
|
||||
absolute, but the archaic and bureaucratic system of government
|
||||
makes it difficult for him to exert his rule unless directly in person.
|
||||
Otherwise, the Five Heirs rule in his name, dividing the huge
|
||||
empire between them. The Emperor and the Five Heirs can expect
|
||||
to live for at least 500 years. Extensive cyber-implants keep their
|
||||
frail bodies alive, even when their organs begin to fail. These cyber
|
||||
enhancements date back many millennia, and have become a
|
||||
symbol of royal divinity in the eyes of the Amarrians.
|
||||
Always a deeply religious people, religion remains of great
|
||||
importance to every Amarrian, a fervour which, at various times,
|
||||
has been responsible both for great good and great evil. Shortly after
|
||||
recovering from the closure of EVE, they began to expand their
|
||||
realm at the expense of neighbouring states. The nations they
|
||||
conquered were enslaved, a practice justified by their religion. Ever
|
||||
since, the Amarrians have enslaved every nation and race they have
|
||||
encountered and today slavery is an essential part of Amarr society.
|
||||
This has, of course, tainted their relations with other races,
|
||||
especially the individualistic Gallenteans.
|
||||
The Amarrians were the first of the races in EVE to re-discover
|
||||
warp technology, notably jump gate technology. After accomplishing
|
||||
this more than 2,000 years ago, they immediately began expanding to
|
||||
nearby solar systems, slowly building up their empire in the process.
|
||||
On the way, they encountered two human races, both of whom
|
||||
suffered the fate of being enslaved by the far more powerful
|
||||
Amarrians. In recent years however, the Amarrians have begun to run
|
||||
into serious opposition. First they met the Gallente Federation.
|
||||
Although smaller, the Amarrians soon found the economic and
|
||||
military might of the Gallenteans to be a match for their own.
|
||||
Soon after, the Jovians arrived on the scene and the Amarrians
|
||||
made a futile attempt to subjugate them, resulting in a humiliating
|
||||
defeat. To make matters worse, the Minmatars, enslaved for centuries
|
||||
by the Amarrians, used the opportunity to rebel against their masters.
|
||||
Since these fateful events two centuries ago, the Amarrians have
|
||||
learned restraint. They have slowed down their expansion and are less
|
||||
forceful in their dealings with other races, but still view themselves as
|
||||
the most powerful race in EVE, if only because of their sheer numbers.
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic - We have Completed Your Bonus TopUp of {{recipient_no}} with {{amount2}} Naira
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td><span align=center><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></span></td></tr>
|
||||
<tr style="height:10px;'>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}} {{lastname}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="height:10px;'>
|
||||
<td style="font-size:12px; text-alig:left;height:10px;">
|
||||
<span align="justify">
|
||||
In fulfillment of our airtime gift offer, we have just credited your mobile number {{recipient_no}} with N{{amount2}}.
|
||||
Thank you for using PayQuic and come back and shop soon.
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="height:10px;'>
|
||||
<td style="font-size:12px; text-alig:left;height:10px;">
|
||||
<span align="justify">
|
||||
You can add balance to your PayQuic account, using your debit card, that way your subsequent transactions go even faster.
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="height:10px;'>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Tell your friends about PayQuic. It's quick and easy to use. To buy airtime now, click <a href='http://www.payquic.com/topup/'>here</a>.
|
||||
|
||||
PayQuic Team
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,49 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic - We have Completed Your Bonus TopUp of {{recipient_no}} with {{amount2}} Naira
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td><span align=center><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}} {{lastname}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;height:10px;">
|
||||
<span align="justify">
|
||||
In fulfillment of our airtime gift offer, we have just credited your mobile number {{recipient_no}} with N{{amount2}}.
|
||||
Thank you for using PayQuic and come back and shop soon.
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;height:10px;">
|
||||
<span align="justify">
|
||||
You can add balance to your PayQuic account, using your debit card, that way your subsequent transactions go even faster.
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Tell your friends about PayQuic. It's quick and easy to use. To buy airtime now, click <a href='http://www.payquic.com/topup/'>here</a>.
|
||||
|
||||
PayQuic Team
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,51 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic - We have Completed Your TopUp of {{recipient_no}} with {{amount2}} Naira
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td><span align=center><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Thank you for using PayQuic. We have completed your top up transaction:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;height:10px;">
|
||||
<span align="center">
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:10px; width:100px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td style="width:100px">Date and time :</td><td>{{trans_date}}</td></tr>
|
||||
<tr><td style="width:100px">Amount :</td><td> N{{amount2}}</td></tr>
|
||||
<tr><td style="width:100px">Recipient :</td><td> {{recipient_no}}</td></tr>
|
||||
<tr><td style="width:100px">Order No :</td><td> <b>{{orderid}}</b></td></tr>
|
||||
</table>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
This is your confirmation email that the airtime topup has been completed. We appreciate your business.
|
||||
For further support go to our website at www.PayQuic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM.
|
||||
Thank you for choosing PayQuic.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic - We are Processing Your TopUp of {{recipient_no}} with {{amount2}} Naira
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td><span align=center><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Thank you for using PayQuic TopUp. We have received your request for airtime top up as shown below:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;height:10px;">
|
||||
<span align="center">
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:10px; width:300px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td style="width:130px">Date and time :</td><td>{{trans_date}}</td></tr>
|
||||
<tr><td style="width:130px">Amount :</td><td> N{{amount2}}</td></tr>
|
||||
<tr><td style="width:130px">Recipient :</td><td> {{recipient_no}}</td></tr>
|
||||
<tr><td style="width:130px">Order No :</td><td> <b>{{orderid}}</b></td></tr>
|
||||
<tr><td style="width:130px">Payment Reference :</td><td> <b>{{payref}}</b></td></tr>
|
||||
|
||||
</table>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
You will receive a confirmation email as soon as the top up has been delivered.
|
||||
For further support go to our website at www.PayQuic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM.
|
||||
Thank you for choosing PayQuic.
|
||||
PayQuic Team.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic Alert Processing TopUp Payment Order No {{orderid}} of {{recipient_no}} with {{amount2}} Naira
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td><span align=center><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></span></td></tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;height:10px;">
|
||||
<span align="center">
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:10px; width:300px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
<tr><td style="width:130px">Firstname :</td><td>{{firstname}}</td></tr>
|
||||
<tr><td style="width:130px">Lastname :</td><td>{{lastname}}</td></tr>
|
||||
<tr><td style="width:130px">Email :</td><td>{{email2}}</td></tr>
|
||||
<tr><td style="width:130px">Date and time :</td><td>{{trans_date}}</td></tr>
|
||||
<tr><td style="width:130px">Amount :</td><td> N{{amount2}}</td></tr>
|
||||
<tr><td style="width:130px">Recipient :</td><td> {{recipient_no}}</td></tr>
|
||||
<tr><td style="width:130px">Order No :</td><td> <b>{{orderid}}</b></td></tr>
|
||||
<tr><td style="width:130px">Payment Reference :</td><td> <b>{{payref}}</b></td></tr>
|
||||
|
||||
</table>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</table>
|
||||
|
||||
<br>
|
||||
IP - Intelligence
|
||||
<table cellpadding="2" cellspacing="2" border="1" id="dt2" style="width:250px; font-family: "Times New Roman", Georgia, Serif;font-size:14px">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>VAR</th>
|
||||
<th class="essential">VALUE</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ><td class="left" style="width:100px">IP</td><td>{{loc}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">country_code</td><td>{{country_code}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">country_name</td><td>{{country_name}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">continent_code</td><td>{{continent_code}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">continent_name</td><td>{{continent_name}}</td></tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
To: {{email}}
|
||||
Subject: PayQuic Transaction Notification Airtime Top up
|
||||
<html>
|
||||
<head>
|
||||
<style type="text/css">
|
||||
.tftable {font-size:12px;color:#333333;width:100%;border-width: 1px;border-color: #9dcc7a;border-collapse: collapse;}
|
||||
.tftable th {font-size:12px;background-color:#abd28e;border-width: 1px;padding: 4px;border-style: solid;border-color: #9dcc7a;text-align:left;}
|
||||
.tftable tr2 {background-color:#bedda7;}
|
||||
.tftable td {font-size:14px;border-width: 0px;padding: 4px;border-style: solid;border-color: #9dcc7a;}
|
||||
.tftable tr2:hover {background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" class="tftable" id="dt2" style="width:250px">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th class="essential"></th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td class="left" style="width:100px">Payment Mode</td>
|
||||
<td class="right" ><b>{{paymode}}</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left" style="width:100px">Delivery Status</td>
|
||||
<td class="right" ><b>{{completed}} - PaymentCode : {{paymentcode}}, ResponseCode : {{responsecode}}, TransRef: {{transactionref}}</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left" style="width:100px">Order Number</td>
|
||||
<td class="right" >{{orderid}}</td>
|
||||
</tr>
|
||||
<tr class="even gradeC">
|
||||
<td class="left" style="width:100px">Date</td>
|
||||
<td class="right" >{{added}}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="left" style="width:100px">Order Number</td>
|
||||
<td class="right" >{{orderid}}</td>
|
||||
</tr>
|
||||
<tr class="even gradeC">
|
||||
<td colspan="2"><h3>Customer</h3></td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr >
|
||||
<td class="left" style="width:100px">Firstname</td>
|
||||
<td class="right" >{{firstname}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left" style="width:100px">Lastname</td>
|
||||
<td class="right" >{{lastname}}</td>
|
||||
</tr>
|
||||
|
||||
<tr >
|
||||
<td class="left" style="width:100px">Email</td>
|
||||
<td class="right" >{{email2}}</td>
|
||||
</tr>
|
||||
|
||||
<tr >
|
||||
<td class="left" style="width:100px">Balance</td>
|
||||
<td class="right" >{{balance2}} Naira</td>
|
||||
</tr>
|
||||
|
||||
<tr >
|
||||
<td class="left" style="width:100px">Country</td>
|
||||
<td class="right" >{{country}} Naira</td>
|
||||
</tr>
|
||||
<tr class="even gradeC">
|
||||
<td colspan="2"><h3>Recipient</h3></td>
|
||||
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="left" style="width:100px">Recipient</td>
|
||||
<td class="right" >{{recipient_no}}</td>
|
||||
</tr>
|
||||
<tr >
|
||||
<td class="left" style="width:100px">Amount</td>
|
||||
<td class="right" >{{amount2}} Naira</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<br>
|
||||
IP - Intelligence
|
||||
<table cellpadding="2" cellspacing="2" border="1" id="dt2" style="width:250px; font-family: "Times New Roman", Georgia, Serif;font-size:14px">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>VAR</th>
|
||||
<th class="essential">VALUE</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ><td class="left" style="width:100px">IP</td><td>{{loc}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">country_code</td><td>{{country_code}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">country_name</td><td>{{country_name}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">continent_code</td><td>{{continent_code}}</td></tr>
|
||||
<tr ><td class="left" style="width:100px">continent_name</td><td>{{continent_name}}</td></tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<b>Note:</b><br>
|
||||
<table cellpadding="2" cellspacing="2" border="0" class="tftable" id="dt2" style="width:450px">
|
||||
|
||||
<tbody>
|
||||
<tr class="even gradeC">
|
||||
<td colspan="2"><h3>You can get here with a card only if we have taken payment </h3></td>
|
||||
</tr>
|
||||
|
||||
<tr class="even gradeC">
|
||||
<td colspan="2"><h3>Delivery status blank - we did not deliver the aritime successfully </h3></td>
|
||||
</tr>
|
||||
<tr class="even gradeC">
|
||||
<td colspan="2"><h3>If the payment is balance , we automatically return the payment , with card we have to handle this </h3></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
To: {{email}}
|
||||
Subject: Welcome to PayQuic
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
<table cellpadding="2" cellspacing="2" border="0" style="height:30px; width:400px; font-size:12px;color:#333333;width:100%;border-width: 0px;border-color: #9dcc7a;border-collapse: collapse;">
|
||||
|
||||
|
||||
<tr><td><span align=center><img src="http://www.payquic.com/images/logo.png" alt="PayQuic"></span></td></tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Dear {{firstname}}, {{lastname}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Welcome to PayQuic. You have successfully signed up for a PayQuic account.
|
||||
From your account you can:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;height:10px;">
|
||||
*Buy airtime instantly to specified recipients
|
||||
*Add balance to your account for even quicker airtime refills in the future
|
||||
*Use different funding options - e.g debit cards, balance, bank transfer etc.
|
||||
*Manage and track transactions. You can also view transaction history including purchases, bill payment and funding history.
|
||||
*Pay for services and pay bills for yourself and other recipients.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="font-size:12px; text-alig:left;">
|
||||
Use your username, {{email2}}, and the password you provided at account creation to login to PayQuic portal anytime.
|
||||
For further support go to our website at www.payquic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM EST
|
||||
Thank you for choosing PayQuic - your quick airtime purchase center.
|
||||
PayQuic Team
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
# COREGRADE API configuration file
|
||||
version = "1.0";
|
||||
|
||||
system:
|
||||
{
|
||||
live = "0";
|
||||
};
|
||||
|
||||
|
||||
database:
|
||||
{
|
||||
host = "127.0.0.1";
|
||||
name = "coregrade_test";
|
||||
user = "coregrade";
|
||||
pass = "coregrade";
|
||||
port = 5432;
|
||||
};
|
||||
|
||||
mailsend:
|
||||
{
|
||||
from = "demo@coregrade.com";
|
||||
server = "virtualmail.chiefsoft.com";
|
||||
domain = "coregrade.com";
|
||||
user = "demo@coregrade.com";
|
||||
pass = "demo001";
|
||||
name = "CoreGrade Support";
|
||||
};
|
||||
|
||||
|
||||
interswitch:
|
||||
{
|
||||
soap_endpoint = "https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc";
|
||||
entity_code = "MBA";
|
||||
terminal_id = "3MBA0001";
|
||||
master_key = "2D1A2518252A1B1A2A23281F242518212123221D272C1C26";
|
||||
pin = "2009";
|
||||
prefix = "1176";
|
||||
keyfile = "/etc/paylid/paylid_test.pem";
|
||||
password = "password";
|
||||
cacert = "/etc/paylid/stageserv.interswitchng.com.pem";
|
||||
version = 0;
|
||||
};
|
||||
|
||||
interswitch_orig:
|
||||
{
|
||||
soap_endpoint = "http://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc";
|
||||
entity_code = "PLI";
|
||||
terminal_id = "3PLI0001";
|
||||
master_key = "2D1A2518252A1B1A2A23281F242518212123221D272C1C26";
|
||||
pin = "2009";
|
||||
keyfile = "/etc/paylid/paylid.pem";
|
||||
password = "password";
|
||||
cacert = "/etc/paylid/services.interswitchng.com.pem";
|
||||
version = 0;
|
||||
};
|
||||
|
||||
paylid:
|
||||
{
|
||||
soap_endpoint = "https://oameye.works.storeface.com/rsl/service.php";
|
||||
terminal_id = "INTERRA001";
|
||||
master_key = "29832d0e1a51eff1cb673feda90293abec053aa5b81f9649d9ed53de86f79ed7";
|
||||
};
|
||||
|
||||
transnotif:
|
||||
{
|
||||
topupemail = "ses66181@gmail.com,oladeji@gmail.com,ameye@chiefsoft.com";
|
||||
topalert = "demo@coregrade.com";
|
||||
};
|
||||
|
||||
webpay:
|
||||
{
|
||||
url = "https://stageserv.interswitchng.com/test_paydirect/pay";
|
||||
status_url = "https://stageserv.interswitchng.com/test_paydirect/api/v1/gettransaction.json";
|
||||
product_id= "4012";
|
||||
pay_item_id = "4012";
|
||||
mac = "CAEEA12CBE1121AE6E9CB6BC87F9B8B47DECD10668B703B7CC0CEDC90DAE30DADC9548541373FF554DAFD18A7ECED00465195E688159A3955E5B38764A341722";
|
||||
return_url = "tranx_noti.php";
|
||||
topup_return_url = "tranx_topup.php";
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,246 @@
|
||||
srcdir = /home/oameye/coregrade/coregrade/src
|
||||
builddir = /home/oameye/coregrade/coregrade/src
|
||||
top_srcdir = /home/oameye/coregrade/coregrade/src
|
||||
top_builddir = /home/oameye/coregrade/coregrade/src
|
||||
EGREP = /bin/grep -E
|
||||
SED = /bin/sed
|
||||
CONFIGURE_COMMAND = './configure' '--enable-coregrade_api'
|
||||
CONFIGURE_OPTIONS = '--enable-coregrade_api'
|
||||
SHLIB_SUFFIX_NAME = so
|
||||
SHLIB_DL_SUFFIX_NAME = so
|
||||
ZEND_EXT_TYPE = zend_extension
|
||||
RE2C = exit 0;
|
||||
AWK = gawk
|
||||
COREGRADE_API_SHARED_LIBADD = -Wl,-rpath,/usr/lib64 -L/usr/lib64 -lpq -lstdc++ -lcurl -lconfig++ -lgsoapssl++ -lssl -lz
|
||||
shared_objects_coregrade_api = core/XmlElements.lo core/XmlParser.lo core/cfg.lo core/cgi.lo core/clog.lo core/coregrade.lo core/coregrade_api.lo core/cvariables.lo core/exceptions.lo core/hmac_sha2.lo core/input.lo core/list.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/account.lo shared_tool/coregrade_api_main.lo shared_tool/email.lo shared_tool/envC.lo shared_tool/groups.lo shared_tool/interswitch.lo shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.lo shared_tool/interswitchC.lo shared_tool/interswitch_sendmoney.lo shared_tool/namespaces.lo shared_tool/paylid.lo shared_tool/paylidC.lo shared_tool/paylidpaylidwsdlBindingProxy.lo shared_tool/storeface.lo shared_tool/topups.lo
|
||||
PHP_PECL_EXTENSION = coregrade_api
|
||||
PHP_MODULES = $(phplibdir)/coregrade_api.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/oameye/coregrade/coregrade/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/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -L/home/oameye/coregrade/coregrade/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); \
|
||||
rm $(top_builddir)/tmp-php.ini; \
|
||||
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) $(OVERALL_TARGET) modules/* libs/*
|
||||
|
||||
distclean: clean
|
||||
rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h stamp-h sapi/apache/libphp$(PHP_MAJOR_VERSION).module buildmk.stamp
|
||||
$(EGREP) define'.*include/php' $(top_srcdir)/configure | $(SED) 's/.*>//'|xargs rm -f
|
||||
|
||||
.PHONY: all clean install distclean test
|
||||
.NOEXPORT:
|
||||
core/XmlElements.lo: /home/oameye/coregrade/coregrade/src/core/XmlElements.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/XmlElements.cc -o core/XmlElements.lo
|
||||
core/XmlParser.lo: /home/oameye/coregrade/coregrade/src/core/XmlParser.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/XmlParser.cc -o core/XmlParser.lo
|
||||
core/cfg.lo: /home/oameye/coregrade/coregrade/src/core/cfg.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cfg.cc -o core/cfg.lo
|
||||
core/cgi.lo: /home/oameye/coregrade/coregrade/src/core/cgi.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cgi.cc -o core/cgi.lo
|
||||
core/clog.lo: /home/oameye/coregrade/coregrade/src/core/clog.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/clog.cc -o core/clog.lo
|
||||
core/coregrade.lo: /home/oameye/coregrade/coregrade/src/core/coregrade.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/coregrade.cc -o core/coregrade.lo
|
||||
core/coregrade_api.lo: /home/oameye/coregrade/coregrade/src/core/coregrade_api.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/coregrade_api.cc -o core/coregrade_api.lo
|
||||
core/cvariables.lo: /home/oameye/coregrade/coregrade/src/core/cvariables.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cvariables.cc -o core/cvariables.lo
|
||||
core/exceptions.lo: /home/oameye/coregrade/coregrade/src/core/exceptions.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/exceptions.cc -o core/exceptions.lo
|
||||
core/hmac_sha2.lo: /home/oameye/coregrade/coregrade/src/core/hmac_sha2.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/hmac_sha2.cc -o core/hmac_sha2.lo
|
||||
core/input.lo: /home/oameye/coregrade/coregrade/src/core/input.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/input.cc -o core/input.lo
|
||||
core/list.lo: /home/oameye/coregrade/coregrade/src/core/list.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/list.cc -o core/list.lo
|
||||
core/pgsql.lo: /home/oameye/coregrade/coregrade/src/core/pgsql.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/pgsql.cc -o core/pgsql.lo
|
||||
core/pgsql_wrapper.lo: /home/oameye/coregrade/coregrade/src/core/pgsql_wrapper.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/pgsql_wrapper.cc -o core/pgsql_wrapper.lo
|
||||
core/safestring.lo: /home/oameye/coregrade/coregrade/src/core/safestring.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/safestring.cc -o core/safestring.lo
|
||||
core/sha2.lo: /home/oameye/coregrade/coregrade/src/core/sha2.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/sha2.cc -o core/sha2.lo
|
||||
core/sha512.lo: /home/oameye/coregrade/coregrade/src/core/sha512.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/sha512.cc -o core/sha512.lo
|
||||
core/smtp.lo: /home/oameye/coregrade/coregrade/src/core/smtp.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/smtp.cc -o core/smtp.lo
|
||||
core/timer.lo: /home/oameye/coregrade/coregrade/src/core/timer.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/timer.cc -o core/timer.lo
|
||||
core/util.lo: /home/oameye/coregrade/coregrade/src/core/util.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/util.cc -o core/util.lo
|
||||
core/vars.lo: /home/oameye/coregrade/coregrade/src/core/vars.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/vars.cc -o core/vars.lo
|
||||
shared_tool/account.lo: /home/oameye/coregrade/coregrade/src/shared_tool/account.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/account.cc -o shared_tool/account.lo
|
||||
shared_tool/coregrade_api_main.lo: /home/oameye/coregrade/coregrade/src/shared_tool/coregrade_api_main.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/coregrade_api_main.cc -o shared_tool/coregrade_api_main.lo
|
||||
shared_tool/email.lo: /home/oameye/coregrade/coregrade/src/shared_tool/email.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/email.cc -o shared_tool/email.lo
|
||||
shared_tool/envC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/envC.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/envC.cc -o shared_tool/envC.lo
|
||||
shared_tool/groups.lo: /home/oameye/coregrade/coregrade/src/shared_tool/groups.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/groups.cc -o shared_tool/groups.lo
|
||||
shared_tool/interswitch.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitch.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitch.cc -o shared_tool/interswitch.lo
|
||||
shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc -o shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.lo
|
||||
shared_tool/interswitchC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitchC.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitchC.cc -o shared_tool/interswitchC.lo
|
||||
shared_tool/interswitch_sendmoney.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitch_sendmoney.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitch_sendmoney.cc -o shared_tool/interswitch_sendmoney.lo
|
||||
shared_tool/namespaces.lo: /home/oameye/coregrade/coregrade/src/shared_tool/namespaces.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/namespaces.cc -o shared_tool/namespaces.lo
|
||||
shared_tool/paylid.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylid.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylid.cc -o shared_tool/paylid.lo
|
||||
shared_tool/paylidC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylidC.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylidC.cc -o shared_tool/paylidC.lo
|
||||
shared_tool/paylidpaylidwsdlBindingProxy.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc -o shared_tool/paylidpaylidwsdlBindingProxy.lo
|
||||
shared_tool/storeface.lo: /home/oameye/coregrade/coregrade/src/shared_tool/storeface.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/storeface.cc -o shared_tool/storeface.lo
|
||||
shared_tool/topups.lo: /home/oameye/coregrade/coregrade/src/shared_tool/topups.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/topups.cc -o shared_tool/topups.lo
|
||||
$(phplibdir)/coregrade_api.la: ./coregrade_api.la
|
||||
$(LIBTOOL) --mode=install cp ./coregrade_api.la $(phplibdir)
|
||||
|
||||
./coregrade_api.la: $(shared_objects_coregrade_api) $(COREGRADE_API_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_coregrade_api) $(COREGRADE_API_SHARED_LIBADD)
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
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); \
|
||||
rm $(top_builddir)/tmp-php.ini; \
|
||||
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) $(OVERALL_TARGET) modules/* libs/*
|
||||
|
||||
distclean: clean
|
||||
rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h stamp-h sapi/apache/libphp$(PHP_MAJOR_VERSION).module buildmk.stamp
|
||||
$(EGREP) define'.*include/php' $(top_srcdir)/configure | $(SED) 's/.*>//'|xargs rm -f
|
||||
|
||||
.PHONY: all clean install distclean test
|
||||
.NOEXPORT:
|
||||
@@ -0,0 +1,78 @@
|
||||
core/XmlElements.lo: /home/oameye/coregrade/coregrade/src/core/XmlElements.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/XmlElements.cc -o core/XmlElements.lo
|
||||
core/XmlParser.lo: /home/oameye/coregrade/coregrade/src/core/XmlParser.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/XmlParser.cc -o core/XmlParser.lo
|
||||
core/cfg.lo: /home/oameye/coregrade/coregrade/src/core/cfg.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cfg.cc -o core/cfg.lo
|
||||
core/cgi.lo: /home/oameye/coregrade/coregrade/src/core/cgi.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cgi.cc -o core/cgi.lo
|
||||
core/clog.lo: /home/oameye/coregrade/coregrade/src/core/clog.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/clog.cc -o core/clog.lo
|
||||
core/coregrade.lo: /home/oameye/coregrade/coregrade/src/core/coregrade.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/coregrade.cc -o core/coregrade.lo
|
||||
core/coregrade_api.lo: /home/oameye/coregrade/coregrade/src/core/coregrade_api.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/coregrade_api.cc -o core/coregrade_api.lo
|
||||
core/cvariables.lo: /home/oameye/coregrade/coregrade/src/core/cvariables.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cvariables.cc -o core/cvariables.lo
|
||||
core/exceptions.lo: /home/oameye/coregrade/coregrade/src/core/exceptions.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/exceptions.cc -o core/exceptions.lo
|
||||
core/hmac_sha2.lo: /home/oameye/coregrade/coregrade/src/core/hmac_sha2.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/hmac_sha2.cc -o core/hmac_sha2.lo
|
||||
core/input.lo: /home/oameye/coregrade/coregrade/src/core/input.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/input.cc -o core/input.lo
|
||||
core/list.lo: /home/oameye/coregrade/coregrade/src/core/list.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/list.cc -o core/list.lo
|
||||
core/pgsql.lo: /home/oameye/coregrade/coregrade/src/core/pgsql.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/pgsql.cc -o core/pgsql.lo
|
||||
core/pgsql_wrapper.lo: /home/oameye/coregrade/coregrade/src/core/pgsql_wrapper.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/pgsql_wrapper.cc -o core/pgsql_wrapper.lo
|
||||
core/safestring.lo: /home/oameye/coregrade/coregrade/src/core/safestring.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/safestring.cc -o core/safestring.lo
|
||||
core/sha2.lo: /home/oameye/coregrade/coregrade/src/core/sha2.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/sha2.cc -o core/sha2.lo
|
||||
core/sha512.lo: /home/oameye/coregrade/coregrade/src/core/sha512.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/sha512.cc -o core/sha512.lo
|
||||
core/smtp.lo: /home/oameye/coregrade/coregrade/src/core/smtp.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/smtp.cc -o core/smtp.lo
|
||||
core/timer.lo: /home/oameye/coregrade/coregrade/src/core/timer.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/timer.cc -o core/timer.lo
|
||||
core/util.lo: /home/oameye/coregrade/coregrade/src/core/util.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/util.cc -o core/util.lo
|
||||
core/vars.lo: /home/oameye/coregrade/coregrade/src/core/vars.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/vars.cc -o core/vars.lo
|
||||
shared_tool/account.lo: /home/oameye/coregrade/coregrade/src/shared_tool/account.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/account.cc -o shared_tool/account.lo
|
||||
shared_tool/coregrade_api_main.lo: /home/oameye/coregrade/coregrade/src/shared_tool/coregrade_api_main.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/coregrade_api_main.cc -o shared_tool/coregrade_api_main.lo
|
||||
shared_tool/email.lo: /home/oameye/coregrade/coregrade/src/shared_tool/email.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/email.cc -o shared_tool/email.lo
|
||||
shared_tool/envC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/envC.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/envC.cc -o shared_tool/envC.lo
|
||||
shared_tool/groups.lo: /home/oameye/coregrade/coregrade/src/shared_tool/groups.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/groups.cc -o shared_tool/groups.lo
|
||||
shared_tool/interswitch.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitch.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitch.cc -o shared_tool/interswitch.lo
|
||||
shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc -o shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.lo
|
||||
shared_tool/interswitchC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitchC.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitchC.cc -o shared_tool/interswitchC.lo
|
||||
shared_tool/interswitch_sendmoney.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitch_sendmoney.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitch_sendmoney.cc -o shared_tool/interswitch_sendmoney.lo
|
||||
shared_tool/namespaces.lo: /home/oameye/coregrade/coregrade/src/shared_tool/namespaces.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/namespaces.cc -o shared_tool/namespaces.lo
|
||||
shared_tool/paylid.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylid.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylid.cc -o shared_tool/paylid.lo
|
||||
shared_tool/paylidC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylidC.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylidC.cc -o shared_tool/paylidC.lo
|
||||
shared_tool/paylidpaylidwsdlBindingProxy.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc -o shared_tool/paylidpaylidwsdlBindingProxy.lo
|
||||
shared_tool/storeface.lo: /home/oameye/coregrade/coregrade/src/shared_tool/storeface.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/storeface.cc -o shared_tool/storeface.lo
|
||||
shared_tool/topups.lo: /home/oameye/coregrade/coregrade/src/shared_tool/topups.cc
|
||||
$(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/topups.cc -o shared_tool/topups.lo
|
||||
$(phplibdir)/coregrade_api.la: ./coregrade_api.la
|
||||
$(LIBTOOL) --mode=install cp ./coregrade_api.la $(phplibdir)
|
||||
|
||||
./coregrade_api.la: $(shared_objects_coregrade_api) $(COREGRADE_API_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_coregrade_api) $(COREGRADE_API_SHARED_LIBADD)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Vendored
+11587
File diff suppressed because it is too large
Load Diff
Vendored
+8614
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,75 @@
|
||||
# +----------------------------------------------------------------------+
|
||||
# | PHP Version 5 |
|
||||
# +----------------------------------------------------------------------+
|
||||
# | 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
+1807
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_COREGRADE_API 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 coregrade_api as dynamic module */
|
||||
#define COMPILE_DL_COREGRADE_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 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 coregrade_api as dynamic module */
|
||||
#undef COMPILE_DL_COREGRADE_API
|
||||
|
||||
/* 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,761 @@
|
||||
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 --enable-coregrade_api
|
||||
|
||||
## --------- ##
|
||||
## Platform. ##
|
||||
## --------- ##
|
||||
|
||||
hostname = localhost.localdomain
|
||||
uname -m = x86_64
|
||||
uname -r = 3.10.0-1062.9.1.el7.x86_64
|
||||
uname -s = Linux
|
||||
uname -v = #1 SMP Fri Dec 6 15:49:49 UTC 2019
|
||||
|
||||
/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: /bin
|
||||
PATH: /usr/bin
|
||||
PATH: /usr/local/sbin
|
||||
PATH: /usr/sbin
|
||||
PATH: /home/oameye/.local/bin
|
||||
PATH: /home/oameye/bin
|
||||
|
||||
|
||||
## ----------- ##
|
||||
## Core tests. ##
|
||||
## ----------- ##
|
||||
|
||||
configure:2209: checking for grep that handles long lines and -e
|
||||
configure:2267: result: /bin/grep
|
||||
configure:2272: checking for egrep
|
||||
configure:2334: result: /bin/grep -E
|
||||
configure:2339: checking for a sed that does not truncate output
|
||||
configure:2403: result: /bin/sed
|
||||
configure:2537: checking for cc
|
||||
configure:2553: found /bin/cc
|
||||
configure:2564: result: cc
|
||||
configure:2595: checking for C compiler version
|
||||
configure:2604: cc --version >&5
|
||||
cc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)
|
||||
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:2615: $? = 0
|
||||
configure:2604: 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-39) (GCC)
|
||||
configure:2615: $? = 0
|
||||
configure:2604: cc -V >&5
|
||||
cc: error: unrecognized command line option '-V'
|
||||
cc: fatal error: no input files
|
||||
compilation terminated.
|
||||
configure:2615: $? = 4
|
||||
configure:2604: cc -qversion >&5
|
||||
cc: error: unrecognized command line option '-qversion'
|
||||
cc: fatal error: no input files
|
||||
compilation terminated.
|
||||
configure:2615: $? = 4
|
||||
configure:2635: checking whether the C compiler works
|
||||
configure:2657: cc conftest.c >&5
|
||||
configure:2661: $? = 0
|
||||
configure:2709: result: yes
|
||||
configure:2712: checking for C compiler default output file name
|
||||
configure:2714: result: a.out
|
||||
configure:2720: checking for suffix of executables
|
||||
configure:2727: cc -o conftest conftest.c >&5
|
||||
configure:2731: $? = 0
|
||||
configure:2753: result:
|
||||
configure:2775: checking whether we are cross compiling
|
||||
configure:2783: cc -o conftest conftest.c >&5
|
||||
configure:2787: $? = 0
|
||||
configure:2794: ./conftest
|
||||
configure:2798: $? = 0
|
||||
configure:2813: result: no
|
||||
configure:2818: checking for suffix of object files
|
||||
configure:2840: cc -c conftest.c >&5
|
||||
configure:2844: $? = 0
|
||||
configure:2865: result: o
|
||||
configure:2869: checking whether we are using the GNU C compiler
|
||||
configure:2888: cc -c conftest.c >&5
|
||||
configure:2888: $? = 0
|
||||
configure:2897: result: yes
|
||||
configure:2906: checking whether cc accepts -g
|
||||
configure:2926: cc -c -g conftest.c >&5
|
||||
configure:2926: $? = 0
|
||||
configure:2967: result: yes
|
||||
configure:2984: checking for cc option to accept ISO C89
|
||||
configure:3047: cc -c -g -O2 conftest.c >&5
|
||||
configure:3047: $? = 0
|
||||
configure:3060: result: none needed
|
||||
configure:3086: checking how to run the C preprocessor
|
||||
configure:3117: cc -E conftest.c
|
||||
configure:3117: $? = 0
|
||||
configure:3131: 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:3131: $? = 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:3156: result: cc -E
|
||||
configure:3176: cc -E conftest.c
|
||||
configure:3176: $? = 0
|
||||
configure:3190: 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:3190: $? = 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:3221: checking for icc
|
||||
configure:3230: result: no
|
||||
configure:3244: checking for suncc
|
||||
configure:3253: result: no
|
||||
configure:3271: checking whether cc understands -c and -o together
|
||||
configure:3299: cc -c conftest.c -o conftest2.o >&5
|
||||
configure:3303: $? = 0
|
||||
configure:3309: cc -c conftest.c -o conftest2.o >&5
|
||||
configure:3313: $? = 0
|
||||
configure:3368: result: yes
|
||||
configure:3382: checking for system library directory
|
||||
configure:3397: result: lib
|
||||
configure:3404: checking if compiler supports -R
|
||||
configure:3423: cc -o conftest -g -O2 conftest.c -R /usr/lib >&5
|
||||
cc: error: unrecognized command line option '-R'
|
||||
configure:3423: $? = 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:3433: result: no
|
||||
configure:3438: checking if compiler supports -Wl,-rpath,
|
||||
configure:3457: cc -o conftest -g -O2 conftest.c -Wl,-rpath,/usr/lib >&5
|
||||
configure:3457: $? = 0
|
||||
configure:3467: result: yes
|
||||
configure:3512: checking build system type
|
||||
configure:3526: result: x86_64-unknown-linux-gnu
|
||||
configure:3546: checking host system type
|
||||
configure:3559: result: x86_64-unknown-linux-gnu
|
||||
configure:3579: checking target system type
|
||||
configure:3592: result: x86_64-unknown-linux-gnu
|
||||
configure:3695: checking for PHP prefix
|
||||
configure:3697: result: /usr
|
||||
configure:3699: checking for PHP includes
|
||||
configure:3701: 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:3703: checking for PHP extension directory
|
||||
configure:3705: result: /usr/lib64/php/modules
|
||||
configure:3707: checking for PHP installed headers prefix
|
||||
configure:3709: result: /usr/include/php
|
||||
configure:3712: checking if debug is enabled
|
||||
configure:3738: result: no
|
||||
configure:3741: checking if zts is enabled
|
||||
configure:3767: result: no
|
||||
configure:3838: checking for re2c
|
||||
configure:3868: result: no
|
||||
configure:3893: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
|
||||
configure:3907: checking for gawk
|
||||
configure:3924: found /bin/gawk
|
||||
configure:3935: result: gawk
|
||||
configure:3978: checking Whether to enable the "coregrade_api" extension
|
||||
configure:4017: result: yes, shared
|
||||
configure:4084: checking for g++
|
||||
configure:4100: found /bin/g++
|
||||
configure:4111: result: g++
|
||||
configure:4138: checking for C++ compiler version
|
||||
configure:4147: g++ --version >&5
|
||||
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)
|
||||
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:4158: $? = 0
|
||||
configure:4147: 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-39) (GCC)
|
||||
configure:4158: $? = 0
|
||||
configure:4147: g++ -V >&5
|
||||
g++: error: unrecognized command line option '-V'
|
||||
g++: fatal error: no input files
|
||||
compilation terminated.
|
||||
configure:4158: $? = 4
|
||||
configure:4147: g++ -qversion >&5
|
||||
g++: error: unrecognized command line option '-qversion'
|
||||
g++: fatal error: no input files
|
||||
compilation terminated.
|
||||
configure:4158: $? = 4
|
||||
configure:4162: checking whether we are using the GNU C++ compiler
|
||||
configure:4181: g++ -c conftest.cpp >&5
|
||||
configure:4181: $? = 0
|
||||
configure:4190: result: yes
|
||||
configure:4199: checking whether g++ accepts -g
|
||||
configure:4219: g++ -c -g conftest.cpp >&5
|
||||
configure:4219: $? = 0
|
||||
configure:4260: result: yes
|
||||
configure:4288: checking how to run the C++ preprocessor
|
||||
configure:4315: g++ -E conftest.cpp
|
||||
configure:4315: $? = 0
|
||||
configure:4329: 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:4329: $? = 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:4354: result: g++ -E
|
||||
configure:4374: g++ -E conftest.cpp
|
||||
configure:4374: $? = 0
|
||||
configure:4388: 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:4388: $? = 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:5112: checking how to print strings
|
||||
configure:5139: result: printf
|
||||
configure:5160: checking for a sed that does not truncate output
|
||||
configure:5224: result: /bin/sed
|
||||
configure:5242: checking for fgrep
|
||||
configure:5304: result: /bin/grep -F
|
||||
configure:5339: checking for ld used by cc
|
||||
configure:5406: result: /bin/ld
|
||||
configure:5413: checking if the linker (/bin/ld) is GNU ld
|
||||
configure:5428: result: yes
|
||||
configure:5440: checking for BSD- or MS-compatible name lister (nm)
|
||||
configure:5489: result: /bin/nm -B
|
||||
configure:5619: checking the name lister (/bin/nm -B) interface
|
||||
configure:5626: cc -c -g -O2 conftest.c >&5
|
||||
configure:5629: /bin/nm -B "conftest.o"
|
||||
configure:5632: output
|
||||
0000000000000000 B some_variable
|
||||
configure:5639: result: BSD nm
|
||||
configure:5642: checking whether ln -s works
|
||||
configure:5646: result: yes
|
||||
configure:5654: checking the maximum length of command line arguments
|
||||
configure:5784: result: 1572864
|
||||
configure:5801: checking whether the shell understands some XSI constructs
|
||||
configure:5811: result: yes
|
||||
configure:5815: checking whether the shell understands "+="
|
||||
configure:5821: result: yes
|
||||
configure:5856: checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format
|
||||
configure:5896: result: func_convert_file_noop
|
||||
configure:5903: checking how to convert x86_64-unknown-linux-gnu file names to toolchain format
|
||||
configure:5923: result: func_convert_file_noop
|
||||
configure:5930: checking for /bin/ld option to reload object files
|
||||
configure:5937: result: -r
|
||||
configure:6011: checking for objdump
|
||||
configure:6027: found /bin/objdump
|
||||
configure:6038: result: objdump
|
||||
configure:6070: checking how to recognize dependent libraries
|
||||
configure:6272: result: pass_all
|
||||
configure:6357: checking for dlltool
|
||||
configure:6387: result: no
|
||||
configure:6417: checking how to associate runtime and link libraries
|
||||
configure:6444: result: printf %s\n
|
||||
configure:6504: checking for ar
|
||||
configure:6520: found /bin/ar
|
||||
configure:6531: result: ar
|
||||
configure:6568: checking for archiver @FILE support
|
||||
configure:6585: cc -c -g -O2 conftest.c >&5
|
||||
configure:6585: $? = 0
|
||||
configure:6588: ar cru libconftest.a @conftest.lst >&5
|
||||
configure:6591: $? = 0
|
||||
configure:6596: ar cru libconftest.a @conftest.lst >&5
|
||||
ar: conftest.o: No such file or directory
|
||||
configure:6599: $? = 1
|
||||
configure:6611: result: @
|
||||
configure:6669: checking for strip
|
||||
configure:6685: found /bin/strip
|
||||
configure:6696: result: strip
|
||||
configure:6768: checking for ranlib
|
||||
configure:6784: found /bin/ranlib
|
||||
configure:6795: result: ranlib
|
||||
configure:6872: checking for gawk
|
||||
configure:6899: result: gawk
|
||||
configure:6939: checking command to parse /bin/nm -B output from cc object
|
||||
configure:7059: cc -c -g -O2 conftest.c >&5
|
||||
configure:7062: $? = 0
|
||||
configure:7066: /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:7069: $? = 0
|
||||
configure:7135: cc -o conftest -g -O2 -Wl,-rpath,/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -L/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ conftest.c conftstm.o >&5
|
||||
configure:7138: $? = 0
|
||||
configure:7176: result: ok
|
||||
configure:7213: checking for sysroot
|
||||
configure:7243: result: no
|
||||
configure:7320: cc -c -g -O2 conftest.c >&5
|
||||
configure:7323: $? = 0
|
||||
configure:7499: checking for mt
|
||||
configure:7529: result: no
|
||||
configure:7549: checking if : is a manifest tool
|
||||
configure:7555: : '-?'
|
||||
configure:7563: result: no
|
||||
configure:8200: checking for ANSI C header files
|
||||
configure:8220: cc -c -g -O2 conftest.c >&5
|
||||
configure:8220: $? = 0
|
||||
configure:8293: cc -o conftest -g -O2 -Wl,-rpath,/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -L/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ conftest.c -lconfig++ -lstdc++ >&5
|
||||
configure:8293: $? = 0
|
||||
configure:8293: ./conftest
|
||||
configure:8293: $? = 0
|
||||
configure:8304: result: yes
|
||||
configure:8317: checking for sys/types.h
|
||||
configure:8317: cc -c -g -O2 conftest.c >&5
|
||||
configure:8317: $? = 0
|
||||
configure:8317: result: yes
|
||||
configure:8317: checking for sys/stat.h
|
||||
configure:8317: cc -c -g -O2 conftest.c >&5
|
||||
configure:8317: $? = 0
|
||||
configure:8317: result: yes
|
||||
configure:8317: checking for stdlib.h
|
||||
configure:8317: cc -c -g -O2 conftest.c >&5
|
||||
configure:8317: $? = 0
|
||||
configure:8317: result: yes
|
||||
configure:8317: checking for string.h
|
||||
configure:8317: cc -c -g -O2 conftest.c >&5
|
||||
configure:8317: $? = 0
|
||||
configure:8317: result: yes
|
||||
configure:8317: checking for memory.h
|
||||
configure:8317: cc -c -g -O2 conftest.c >&5
|
||||
configure:8317: $? = 0
|
||||
configure:8317: result: yes
|
||||
configure:8317: checking for strings.h
|
||||
configure:8317: cc -c -g -O2 conftest.c >&5
|
||||
configure:8317: $? = 0
|
||||
configure:8317: result: yes
|
||||
configure:8317: checking for inttypes.h
|
||||
configure:8317: cc -c -g -O2 conftest.c >&5
|
||||
configure:8317: $? = 0
|
||||
configure:8317: result: yes
|
||||
configure:8317: checking for stdint.h
|
||||
configure:8317: cc -c -g -O2 conftest.c >&5
|
||||
configure:8317: $? = 0
|
||||
configure:8317: result: yes
|
||||
configure:8317: checking for unistd.h
|
||||
configure:8317: cc -c -g -O2 conftest.c >&5
|
||||
configure:8317: $? = 0
|
||||
configure:8317: result: yes
|
||||
configure:8331: checking for dlfcn.h
|
||||
configure:8331: cc -c -g -O2 conftest.c >&5
|
||||
configure:8331: $? = 0
|
||||
configure:8331: result: yes
|
||||
configure:8548: checking for objdir
|
||||
configure:8563: result: .libs
|
||||
configure:8834: checking if cc supports -fno-rtti -fno-exceptions
|
||||
configure:8852: 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:8856: $? = 0
|
||||
configure:8869: result: no
|
||||
configure:9196: checking for cc option to produce PIC
|
||||
configure:9203: result: -fPIC -DPIC
|
||||
configure:9211: checking if cc PIC flag -fPIC -DPIC works
|
||||
configure:9229: cc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5
|
||||
configure:9233: $? = 0
|
||||
configure:9246: result: yes
|
||||
configure:9275: checking if cc static flag -static works
|
||||
configure:9303: result: no
|
||||
configure:9318: checking if cc supports -c -o file.o
|
||||
configure:9339: cc -c -g -O2 -o out/conftest2.o conftest.c >&5
|
||||
configure:9343: $? = 0
|
||||
configure:9365: result: yes
|
||||
configure:9373: checking if cc supports -c -o file.o
|
||||
configure:9420: result: yes
|
||||
configure:9453: checking whether the cc linker (/bin/ld -m elf_x86_64) supports shared libraries
|
||||
configure:10606: result: yes
|
||||
configure:10643: checking whether -lc should be explicitly linked in
|
||||
configure:10651: cc -c -g -O2 conftest.c >&5
|
||||
configure:10654: $? = 0
|
||||
configure:10669: cc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep -lc \>/dev/null 2\>\&1
|
||||
configure:10672: $? = 0
|
||||
configure:10686: result: no
|
||||
configure:10846: checking dynamic linker characteristics
|
||||
configure:11357: cc -o conftest -g -O2 -Wl,-rpath,/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -L/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -Wl,-rpath -Wl,/foo conftest.c -lconfig++ -lstdc++ >&5
|
||||
configure:11357: $? = 0
|
||||
configure:11583: result: GNU/Linux ld.so
|
||||
configure:11690: checking how to hardcode library paths into programs
|
||||
configure:11715: result: immediate
|
||||
configure:12255: checking whether stripping libraries is possible
|
||||
configure:12260: result: yes
|
||||
configure:12295: checking if libtool supports shared libraries
|
||||
configure:12297: result: yes
|
||||
configure:12300: checking whether to build shared libraries
|
||||
configure:12321: result: yes
|
||||
configure:12324: checking whether to build static libraries
|
||||
configure:12328: result: no
|
||||
configure:12351: checking how to run the C++ preprocessor
|
||||
configure:12417: result: g++ -E
|
||||
configure:12437: g++ -E conftest.cpp
|
||||
configure:12437: $? = 0
|
||||
configure:12451: 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:12451: $? = 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_COREGRADE_API 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:12620: checking for ld used by g++
|
||||
configure:12687: result: /bin/ld -m elf_x86_64
|
||||
configure:12694: checking if the linker (/bin/ld -m elf_x86_64) is GNU ld
|
||||
configure:12709: result: yes
|
||||
configure:12764: checking whether the g++ linker (/bin/ld -m elf_x86_64) supports shared libraries
|
||||
configure:13769: result: yes
|
||||
configure:13805: g++ -c -g -O2 conftest.cpp >&5
|
||||
configure:13808: $? = 0
|
||||
configure:14328: checking for g++ option to produce PIC
|
||||
configure:14335: result: -fPIC -DPIC
|
||||
configure:14343: checking if g++ PIC flag -fPIC -DPIC works
|
||||
configure:14361: g++ -c -g -O2 -fPIC -DPIC -DPIC conftest.cpp >&5
|
||||
configure:14365: $? = 0
|
||||
configure:14378: result: yes
|
||||
configure:14401: checking if g++ static flag -static works
|
||||
configure:14429: result: no
|
||||
configure:14441: checking if g++ supports -c -o file.o
|
||||
configure:14462: g++ -c -g -O2 -o out/conftest2.o conftest.cpp >&5
|
||||
configure:14466: $? = 0
|
||||
configure:14488: result: yes
|
||||
configure:14493: checking if g++ supports -c -o file.o
|
||||
configure:14540: result: yes
|
||||
configure:14570: checking whether the g++ linker (/bin/ld -m elf_x86_64) supports shared libraries
|
||||
configure:14606: result: yes
|
||||
configure:14747: checking dynamic linker characteristics
|
||||
configure:15418: result: GNU/Linux ld.so
|
||||
configure:15471: checking how to hardcode library paths into programs
|
||||
configure:15496: result: immediate
|
||||
configure:15796: 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 localhost.localdomain
|
||||
|
||||
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='/bin/grep -E'
|
||||
ac_cv_path_FGREP='/bin/grep -F'
|
||||
ac_cv_path_GREP=/bin/grep
|
||||
ac_cv_path_SED=/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=/bin/ld
|
||||
lt_cv_path_LDCXX='/bin/ld -m elf_x86_64'
|
||||
lt_cv_path_NM='/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'\'' '\''--enable-coregrade_api'\'''
|
||||
CONFIGURE_OPTIONS=' '\''--enable-coregrade_api'\'''
|
||||
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='/bin/grep -E'
|
||||
EXEEXT=''
|
||||
FGREP='/bin/grep -F'
|
||||
GREP='/bin/grep'
|
||||
LD='/bin/ld -m elf_x86_64'
|
||||
LDFLAGS=' -Wl,-rpath,/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -L/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/'
|
||||
LIBOBJS=''
|
||||
LIBS='-lconfig++ -lstdc++ '
|
||||
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
|
||||
LIPO=''
|
||||
LN_S='ln -s'
|
||||
LTLIBOBJS=''
|
||||
MANIFEST_TOOL=':'
|
||||
NM='/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='/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_COREGRADE_API 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,31 @@
|
||||
PHP_ARG_ENABLE(coregrade_api,
|
||||
[Whether to enable the "coregrade_api" extension],
|
||||
[ --enable-coregrade_api Enable "coregrade_api" extension support])
|
||||
|
||||
if test $PHP_COREGRADE_API != "no"; then
|
||||
PHP_REQUIRE_CXX()
|
||||
PHP_SUBST(COREGRADE_API_SHARED_LIBADD)
|
||||
PHP_ADD_LIBRARY(stdc++, 1, COREGRADE_API_SHARED_LIBADD)
|
||||
PHP_ADD_INCLUDE(/usr/include/pgsql)
|
||||
PHP_ADD_LIBRARY_WITH_PATH(pq, /usr/lib64, COREGRADE_API_SHARED_LIBADD)
|
||||
PHP_ADD_LIBRARY(curl, 1, COREGRADE_API_SHARED_LIBADD)
|
||||
PHP_ADD_LIBRARY(config++, 1, COREGRADE_API_SHARED_LIBADD)
|
||||
PHP_ADD_LIBRARY(gsoapssl++, 1, COREGRADE_API_SHARED_LIBADD)
|
||||
PHP_ADD_LIBRARY(ssl, 1, COREGRADE_API_SHARED_LIBADD)
|
||||
PHP_ADD_LIBRARY(z, 1, COREGRADE_API_SHARED_LIBADD)
|
||||
|
||||
LIBCFG_DIR="`pwd`/libconfig-1.3.1"
|
||||
|
||||
PHP_ADD_LIBRARY_WITH_PATH(config++, "$LIBCFG_DIR/.libs/")
|
||||
|
||||
PHP_NEW_EXTENSION(
|
||||
coregrade_api,
|
||||
core/*.cc shared_tool/*.cc,
|
||||
$ext_shared,
|
||||
,-I@ext_srcdir@/libconfig-1.3.1)
|
||||
PHP_DEFINE([COREGRADE_API_NS],[\"coregrade_api_`id -u -n`\"],[])
|
||||
PHP_DEFINE([COREGRADE_CONFIG],[\"`pwd|sed s/src//`etc/\"],[])
|
||||
PHP_DEFINE([COREGRADE_LOG],[\"`pwd|sed s/src//`logs/coregrade_api.log\"],[])
|
||||
PHP_DEFINE([TMPL_PREFIX],[\"`pwd|sed s/src//`email/\"],[])
|
||||
PHP_DEFINE([FILELOG_MAX_LEVEL],[9],[])
|
||||
fi
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Created by configure
|
||||
|
||||
'./configure' \
|
||||
'--enable-coregrade_api' \
|
||||
"$@"
|
||||
Executable
+1855
File diff suppressed because it is too large
Load Diff
+1791
File diff suppressed because it is too large
Load Diff
+17887
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,202 @@
|
||||
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_DEBUG])
|
||||
|
||||
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
|
||||
touch .deps
|
||||
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
AC_OUTPUT()
|
||||
@@ -0,0 +1,283 @@
|
||||
//****************************************************************************
|
||||
// Filename: SimpleXMLParser.h
|
||||
// Copyright 1999 Daniel X. Pape. All rights reserved.
|
||||
//
|
||||
// Description: implementation of the Element classes.
|
||||
//
|
||||
//****************************************************************************
|
||||
// Revision History:
|
||||
// Thursday, July 08, 1999 - Original. Heavily based on "A Simple XML
|
||||
// Parser" by Sebastien Andrivet. See Documentation.
|
||||
//****************************************************************************
|
||||
|
||||
#include "XmlElements.h"
|
||||
|
||||
|
||||
|
||||
// Our namespace
|
||||
namespace SimpleXMLParser
|
||||
{
|
||||
|
||||
// Null element
|
||||
static ElementNull s_nullElem;
|
||||
ElementNull& Element::nullElem = s_nullElem;
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Constructor
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
Attribute::Attribute(const std::string& name, const std::string& value)
|
||||
: name_(name), value_(value)
|
||||
{
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Add
|
||||
// Desc: Adds the string to the value
|
||||
// ***************************************************************************
|
||||
void
|
||||
Value::Add(const std::string& strText)
|
||||
{
|
||||
value_ += strText;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Add
|
||||
// Desc: Adds the character to the value
|
||||
// ***************************************************************************
|
||||
void
|
||||
Value::Add(char c)
|
||||
{
|
||||
value_ += c;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: string conversion operator
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
Value::operator const std::string&() const
|
||||
{
|
||||
return(value_);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Constructor
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
Element::Element(const std::string& strName)
|
||||
: name_(strName)
|
||||
{
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: IsNull
|
||||
// Desc: All elements are not null except Element::nullElem
|
||||
// ***************************************************************************
|
||||
bool
|
||||
Element::IsNull() const
|
||||
{
|
||||
return(false);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Constructor
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
ElementTag::ElementTag(const std::string& strName)
|
||||
: Element(strName)
|
||||
{
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Destructor
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
ElementTag::~ElementTag()
|
||||
{
|
||||
// Destroy attributes
|
||||
// for(Attributes::iterator itAttrib = attributes_.begin();
|
||||
// itAttrib != attributes_.end(); ++itAttrib)
|
||||
// delete *itAttrib;
|
||||
|
||||
// Destroy childs
|
||||
for(Elements::iterator itElem = children_.begin();
|
||||
itElem != children_.end(); ++itElem)
|
||||
delete *itElem;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: AddChild
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
bool
|
||||
ElementTag::AddChild(Element* pChild)
|
||||
{
|
||||
children_.push_back(pChild);
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: GetChildren
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
const Elements*
|
||||
ElementTag::GetChildren() const
|
||||
{
|
||||
return(children_.empty() ? 0 : &children_);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: FindChild
|
||||
// Desc: Find a child called szName starting at it
|
||||
// ***************************************************************************
|
||||
bool
|
||||
ElementTag::FindChild(const char * szName,
|
||||
Elements::const_iterator& it) const
|
||||
{
|
||||
for(; it != children_.end(); ++it)
|
||||
{
|
||||
if((*it)->GetName() == szName)
|
||||
return(true);
|
||||
}
|
||||
|
||||
return(false);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: GetChild
|
||||
// Desc: Get the nth element called szName
|
||||
// ***************************************************************************
|
||||
const Element&
|
||||
ElementTag::GetChild(const char * szName, int nIndex) const
|
||||
{
|
||||
Elements::const_iterator it = children_.begin();
|
||||
|
||||
// Count the number of match to skip (less 1)
|
||||
// Bug#0001: was ++nIndex instead of ++nCount
|
||||
for(int nCount = 0; nCount < nIndex; ++nCount)
|
||||
{
|
||||
if(!FindChild(szName, it))
|
||||
return nullElem;
|
||||
++it;
|
||||
}
|
||||
|
||||
// Last search (we skip nIndex - 1)
|
||||
if(!FindChild(szName, it))
|
||||
return nullElem;
|
||||
|
||||
return(**it);
|
||||
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: GetAttributes
|
||||
// Desc: return 0 if no attributes
|
||||
// ***************************************************************************
|
||||
const Attributes*
|
||||
ElementTag::GetAttributes() const
|
||||
{
|
||||
return(attributes_.empty() ? 0 : &attributes_);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: GetAttributeValue
|
||||
// Desc: return "" if attribute doesn't exist
|
||||
// ***************************************************************************
|
||||
const std::string
|
||||
ElementTag::GetAttributeValue(const std::string& attr) const
|
||||
{
|
||||
Attributes::const_iterator a_it = attributes_.find(attr);
|
||||
if(a_it != attributes_.end())
|
||||
return (*a_it).second;
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Constructor
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
ElementSimple::ElementSimple(const std::string& strName)
|
||||
: Element(strName)
|
||||
{
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: AddChild
|
||||
// Desc: Do nothing for ElementSimple ... no children.
|
||||
// ***************************************************************************
|
||||
bool
|
||||
ElementSimple::AddChild(Element* /*pChild*/)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Destructor
|
||||
// Desc: No children.
|
||||
// ***************************************************************************
|
||||
const Elements*
|
||||
ElementSimple::GetChildren() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: GetChild
|
||||
// Desc: Get the nth element called szName - return nullElem.
|
||||
// ***************************************************************************
|
||||
const Element&
|
||||
ElementSimple::GetChild(const char * /*szName*/, int /*nIndex*/) const
|
||||
{
|
||||
return nullElem;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: GetAttributes
|
||||
// Desc: No attributes - return 0
|
||||
// ***************************************************************************
|
||||
const Attributes*
|
||||
ElementSimple::GetAttributes() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: GetAttributeValue
|
||||
// Desc: No attributes - return ""
|
||||
// ***************************************************************************
|
||||
const std::string ElementSimple::GetAttributeValue(const std::string&) const
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Constructor
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
ElementComment::ElementComment(const std::string& strComment)
|
||||
: ElementSimple("!")
|
||||
{
|
||||
AddValue(strComment);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Constructor
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
ElementNull::ElementNull()
|
||||
: ElementSimple("")
|
||||
{
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: IsNull
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
bool ElementNull::IsNull() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} // end namespace
|
||||
|
||||
@@ -0,0 +1,971 @@
|
||||
//****************************************************************************
|
||||
// Filename: XmlElements.h
|
||||
// Copyright 1999 Daniel X. Pape. All rights reserved.
|
||||
//
|
||||
// Description: A set of classes for reading and parsing simple XML files.
|
||||
//
|
||||
//****************************************************************************
|
||||
// Revision History:
|
||||
// Thursday, July 08, 1999 - Original. Heavily based on "A Simple XML
|
||||
// Parser" by Sebastien Andrivet. See Documentation.
|
||||
//****************************************************************************
|
||||
|
||||
#include "XmlParser.h"
|
||||
|
||||
using std::string;
|
||||
using std::auto_ptr;
|
||||
|
||||
|
||||
// Macro to get the number of elements in a array
|
||||
#ifndef elemof
|
||||
#define elemof(array) (sizeof(array) / sizeof((array)[0]))
|
||||
#endif
|
||||
|
||||
// Our namespace
|
||||
namespace SimpleXMLParser
|
||||
{
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Constructor
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
XmlParser::XmlParser()
|
||||
: source_(0), sourceCurrent_(0), sourceEnd_(0),
|
||||
line_(1), column_(1), xmlVersion_("1.0")
|
||||
{
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: SyntaxError
|
||||
// Desc: Syntax error (throw exception)
|
||||
// ***************************************************************************
|
||||
void XmlParser::SyntaxError()
|
||||
{
|
||||
throw XmlException(line_, column_);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: NextChar
|
||||
// Desc: Next char (next position)
|
||||
// ***************************************************************************
|
||||
char XmlParser::NextChar()
|
||||
{
|
||||
if(sourceCurrent_ >= sourceEnd_) return(0);
|
||||
char c = *sourceCurrent_++;
|
||||
|
||||
// Skip \r if any
|
||||
if(c == '\r')
|
||||
{
|
||||
if(sourceCurrent_ >= sourceEnd_) return(0);
|
||||
c = *sourceCurrent_++;
|
||||
}
|
||||
|
||||
if(c == '\n')
|
||||
++line_, column_ = 1;
|
||||
else
|
||||
++column_;
|
||||
|
||||
return(c);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: PreviousChar
|
||||
// Desc: Previous position
|
||||
// ***************************************************************************
|
||||
void XmlParser::PreviousChar()
|
||||
{
|
||||
if(sourceCurrent_ - 1 < source_)
|
||||
sourceCurrent_ = source_;
|
||||
else
|
||||
sourceCurrent_ -= 1;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseString
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseString(const char* str)
|
||||
{
|
||||
Bookmark bookmark(*this);
|
||||
|
||||
// not end of string ?
|
||||
while(*str != 0)
|
||||
{
|
||||
// Next char
|
||||
char c = NextChar();
|
||||
// Same ?
|
||||
if(c != *str)
|
||||
{
|
||||
// Not the same so revert back to
|
||||
// the previous position
|
||||
bookmark.Restore();
|
||||
return(false);
|
||||
}
|
||||
|
||||
// Next char of the string
|
||||
++str;
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseStringNoCase
|
||||
// Desc: Read the given string (not case sensitive)
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseStringNoCase(const char* str)
|
||||
{
|
||||
Bookmark bookmark(*this);
|
||||
|
||||
// not end of string ?
|
||||
while(*str != 0)
|
||||
{
|
||||
// Next char
|
||||
char c = NextChar();
|
||||
// Same (not case sensitive) ?
|
||||
if(LowCase(c) != LowCase(*str))
|
||||
{
|
||||
// Not the same so revert back to
|
||||
// the previous position
|
||||
bookmark.Restore();
|
||||
return(false);
|
||||
}
|
||||
|
||||
// Next char of the string
|
||||
++str;
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseNumber
|
||||
// Desc: Read a (decimal) number
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseNumber(int& n)
|
||||
{
|
||||
char c = NextChar();
|
||||
|
||||
if(!IsDigit(c))
|
||||
return(false); // not a number
|
||||
|
||||
n = 0;
|
||||
while(IsDigit(c))
|
||||
{
|
||||
// Compute new number
|
||||
n = n * 10 + c - '0';
|
||||
// Next char
|
||||
c = NextChar();
|
||||
}
|
||||
|
||||
// The current char if not part of the number
|
||||
PreviousChar();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseHexNumber
|
||||
// Desc: Read an hexadecimal number
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseHexNumber(int& n)
|
||||
{
|
||||
char c = NextChar();
|
||||
|
||||
if(!IsHexDigit(c))
|
||||
return(false);
|
||||
|
||||
n = 0;
|
||||
// Read all digits possible
|
||||
while(IsHexDigit(c))
|
||||
{
|
||||
// Compute new number
|
||||
n = n * 16 + HexDigitValue(c);
|
||||
// Next char
|
||||
c = NextChar();
|
||||
}
|
||||
|
||||
// The current char if not part of the number
|
||||
PreviousChar();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseChar
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseChar(char c)
|
||||
{
|
||||
if(NextChar() != c)
|
||||
{
|
||||
PreviousChar();
|
||||
return(false);
|
||||
}
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseSpaces
|
||||
// Desc: Read One or more spaces
|
||||
// S ::= (#x20 | #x9 | #xD | #xA)+
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseSpaces()
|
||||
{
|
||||
char c = NextChar();
|
||||
if(!IsSpace(c))
|
||||
{
|
||||
PreviousChar();
|
||||
return(false);
|
||||
}
|
||||
|
||||
do c = NextChar();
|
||||
while(IsSpace(c));
|
||||
|
||||
PreviousChar();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseDeclBegining
|
||||
// Desc: Parse a declaration (like: version = )
|
||||
// S <szString> Eq
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseDeclBegining(const char * szString)
|
||||
{
|
||||
// Parse: S
|
||||
char c = NextChar();
|
||||
if(!IsSpace(c))
|
||||
{
|
||||
PreviousChar();
|
||||
return(false);
|
||||
}
|
||||
ParseSpaces();
|
||||
|
||||
// Parse: <szString>
|
||||
if(!ParseString(szString))
|
||||
return(false);
|
||||
|
||||
// Parse: Eq
|
||||
if(!ParseEq())
|
||||
SyntaxError();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseXMLDecl
|
||||
// Desc: Parse XML declaration
|
||||
// XMLDecl ::= '<?xml' VersionInfo EncodingDecl? S? '?>'
|
||||
// Marker: '<?xml'
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseXMLDecl()
|
||||
{
|
||||
// Parse: '<?xml'
|
||||
if(!ParseStringNoCase("<?xml"))
|
||||
return(false);
|
||||
|
||||
// Parse: VersionInfo EncodingDecl? SDDecl? S? '?>'
|
||||
if(!ParseVersionInfo(xmlVersion_))
|
||||
SyntaxError();
|
||||
|
||||
// Parse EncodingDecl (optional)
|
||||
ParseEncodingDecl();
|
||||
// Parse S (spaces) (optional)
|
||||
ParseSpaces();
|
||||
|
||||
// Parse end of declaration '?>'
|
||||
if(!ParseString("?>"))
|
||||
SyntaxError();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseEq
|
||||
// Desc: Parse equal sign
|
||||
// Eq ::= S? '=' S?
|
||||
// Marker: '='
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseEq()
|
||||
{
|
||||
// Record the current position
|
||||
Bookmark bookmark(*this);
|
||||
|
||||
// Parse spaces (optional)
|
||||
ParseSpaces();
|
||||
// Is an equal sign ?
|
||||
if(!ParseChar('='))
|
||||
{
|
||||
// No, so revert to the previous position
|
||||
bookmark.Restore();
|
||||
return(false);
|
||||
}
|
||||
// Skip spaces if any
|
||||
ParseSpaces();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseVersionInfo
|
||||
// Desc: Parse XML version
|
||||
// VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ")
|
||||
// Marker: 'version'
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseVersionInfo(string& version)
|
||||
{
|
||||
// Parse: S 'version' Eq
|
||||
if(!ParseDeclBegining("version"))
|
||||
return(false);
|
||||
|
||||
// Parse: (' VersionNum ' | " VersionNum ")
|
||||
char c = NextChar();
|
||||
if(c != '\'' && c != '\"')
|
||||
SyntaxError();
|
||||
|
||||
// Parse version number and check the delimiter
|
||||
if(!ParseVersionNum(version) || NextChar() != c)
|
||||
SyntaxError();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseVersionNum
|
||||
// Desc: Parse XML version number
|
||||
// VersionNum ::= ([a-zA-Z0-9_.:] | '-')+
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseVersionNum(string& version)
|
||||
{
|
||||
// Record the current position
|
||||
Bookmark bookmark(*this);
|
||||
|
||||
char c = NextChar();
|
||||
// Is an allowed character ?
|
||||
if(!IsAlphaDigitEx(c))
|
||||
return(false);
|
||||
|
||||
c = NextChar();
|
||||
// Get as more char as possible
|
||||
while(IsAlphaDigitEx(c))
|
||||
c = NextChar();
|
||||
|
||||
// Current character is not part of the version num.
|
||||
PreviousChar();
|
||||
|
||||
// Get the version number
|
||||
bookmark.GetSubString(version);
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseEncodingDecl
|
||||
// Desc: Parse XML encoding declaration
|
||||
// EncodingDecl ::= S 'encoding' Eq
|
||||
// ('"' EncName '"' | "'" EncName "'")
|
||||
// Marker: 'encoding'
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseEncodingDecl()
|
||||
{
|
||||
// Parse: S 'encoding' Eq
|
||||
if(!ParseDeclBegining("encoding"))
|
||||
return(false);
|
||||
|
||||
// Parse: ('"' EncName '"' | "'" EncName "'")
|
||||
char c = NextChar();
|
||||
if(c != '\'' && c != '\"')
|
||||
SyntaxError();
|
||||
|
||||
// Parse encoding name and check delimiter
|
||||
// Bug#0002: Was ParseEncName() instead of !ParseEncName()
|
||||
if(!ParseEncName() || NextChar() != c)
|
||||
SyntaxError();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseEncName
|
||||
// Desc: Parse encoding name
|
||||
// EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseEncName()
|
||||
{
|
||||
char c = NextChar();
|
||||
// Is an allowed character ?
|
||||
if(!IsAlpha(c))
|
||||
return(false);
|
||||
|
||||
c = NextChar();
|
||||
// Get as more char as possible
|
||||
while(IsAlphaDigitEx(c))
|
||||
c = NextChar();
|
||||
|
||||
// Current character is not part of the version num.
|
||||
PreviousChar();
|
||||
|
||||
// In this version, the encoding is not used
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseMiscs
|
||||
// Desc: Parse Comments, spaces, etc.
|
||||
// Misc*
|
||||
// Misc ::= Comment | S
|
||||
// ***************************************************************************
|
||||
void XmlParser::ParseMiscs()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
// Parse spaces if any
|
||||
ParseSpaces();
|
||||
|
||||
// Parse comment if any
|
||||
auto_ptr<ElementComment> pElem(ParseComment());
|
||||
if(0 == pElem.get())
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseComment
|
||||
// Desc: Parse comment and construct an element
|
||||
// Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
|
||||
// ***************************************************************************
|
||||
ElementComment* XmlParser::ParseComment()
|
||||
{
|
||||
// Check the start of the comment
|
||||
if(!ParseString("<!--"))
|
||||
return(0);
|
||||
|
||||
// Record the current position to extract later the
|
||||
// content of the comment
|
||||
Bookmark bookmark(*this);
|
||||
for(;;)
|
||||
{
|
||||
// Look for the end of the comment
|
||||
if(ParseString("--"))
|
||||
{
|
||||
// Really the end ?
|
||||
if(!ParseChar('>'))
|
||||
SyntaxError();
|
||||
break;
|
||||
}
|
||||
|
||||
// End of document ?
|
||||
if(NextChar() == 0)
|
||||
SyntaxError();
|
||||
}
|
||||
|
||||
// Extract the content of the comment
|
||||
string strComment;
|
||||
bookmark.GetSubString(strComment, 3);
|
||||
|
||||
// Construct an element
|
||||
return(new ElementComment(strComment));
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseName
|
||||
// Desc: Read a name (letters, digits and special chars)
|
||||
// Name ::= (Letter | '_' | ':') (NameChar)*
|
||||
// NameChar ::= Letter | Digit | '.' | '-' |
|
||||
// '_' | ':' | CombiningChar | Extender
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseName(string& name)
|
||||
{
|
||||
// Record the current position to extract later the name
|
||||
Bookmark bookmark(*this);
|
||||
|
||||
char c = NextChar();
|
||||
// Is allowed ?
|
||||
if(!IsAlpha(c) && c != '_' && c != ':')
|
||||
{
|
||||
PreviousChar();
|
||||
return(false);
|
||||
}
|
||||
|
||||
// Get as more (allowed) char as possible
|
||||
for(;;)
|
||||
{
|
||||
c = NextChar();
|
||||
// Is allowed ?
|
||||
if(!IsAlphaDigitEx(c))
|
||||
break;
|
||||
}
|
||||
|
||||
// Current character is not part of the version num.
|
||||
PreviousChar();
|
||||
|
||||
// Extract the name
|
||||
bookmark.GetSubString(name);
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseReference
|
||||
// Desc: Parse reference
|
||||
// Reference ::= EntityRef | CharRef
|
||||
// EntityRef ::= '&' Name ';'
|
||||
// CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'
|
||||
// Marker: '&'
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseReference(char& cRef)
|
||||
{
|
||||
// Begin like a reference ?
|
||||
if(!ParseChar('&'))
|
||||
return(false);
|
||||
|
||||
char c = NextChar();
|
||||
// EntityRef ? (not a CharRef)
|
||||
if(c != '#')
|
||||
{
|
||||
// It is an EntityRef
|
||||
PreviousChar();
|
||||
// Get the name of the reference and check the end (';')
|
||||
string strReferenceName;
|
||||
if(!ParseName(strReferenceName) || !ParseChar(';'))
|
||||
SyntaxError();
|
||||
// Look for the reference
|
||||
if(!MapReferenceName(strReferenceName, cRef))
|
||||
SyntaxError();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// It is a CharRef
|
||||
c = NextChar();
|
||||
// Compute the value (character code)
|
||||
int n = 0;
|
||||
// Hexadecimal ?
|
||||
if(c == 'x')
|
||||
{
|
||||
// Get the value
|
||||
if(!ParseHexNumber(n))
|
||||
SyntaxError();
|
||||
}
|
||||
else
|
||||
{
|
||||
PreviousChar();
|
||||
// Get the value
|
||||
if(!ParseNumber(n))
|
||||
SyntaxError();
|
||||
}
|
||||
|
||||
// Check the end of the reference
|
||||
if(!ParseChar(';'))
|
||||
SyntaxError();
|
||||
|
||||
// Return the character with the computed code
|
||||
cRef = static_cast<char>(n);
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseAttValue
|
||||
// Desc: Parse attribute value
|
||||
// '"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'"
|
||||
// Marker: '"' | "'"
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseAttValue(string& value)
|
||||
{
|
||||
// Get the value delimiter (quote or apostrophe)
|
||||
char cDelim = NextChar();
|
||||
if(cDelim != '\'' && cDelim != '\"')
|
||||
{
|
||||
PreviousChar();
|
||||
return(false);
|
||||
}
|
||||
|
||||
// Record the current position to extract later the value
|
||||
Bookmark bookmark(*this);
|
||||
|
||||
char c = NextChar();
|
||||
// Search the end of the value
|
||||
while(c != cDelim)
|
||||
{
|
||||
switch(c)
|
||||
{
|
||||
case 0: // end of document
|
||||
SyntaxError();
|
||||
|
||||
case '<': // Tag
|
||||
SyntaxError();
|
||||
|
||||
case '&': // Reference
|
||||
{
|
||||
PreviousChar();
|
||||
// Put what we already have in the value
|
||||
string before;
|
||||
bookmark.GetSubString(before);
|
||||
value += before;
|
||||
|
||||
char c;
|
||||
// Get the reference
|
||||
if(!ParseReference(c))
|
||||
SyntaxError();
|
||||
|
||||
// Put the char in the value
|
||||
value += c;
|
||||
// Record the new position (after the reference)
|
||||
bookmark.Reset();
|
||||
}
|
||||
//break;
|
||||
// fall-though intentional -- DXP
|
||||
default:
|
||||
// Next character
|
||||
c = NextChar();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Put the remaining of the value
|
||||
string remaining;
|
||||
bookmark.GetSubString(remaining, 1);
|
||||
value += remaining;
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseAttribute
|
||||
// Desc: Parse Attribute
|
||||
// Attribute ::= Name Eq AttValue
|
||||
// Marker: Name
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseAttribute(ElementTag* elem)
|
||||
{
|
||||
// Get attribute name
|
||||
string name;
|
||||
if(!ParseName(name))
|
||||
return(false);
|
||||
|
||||
// Get attribute value after the equal sign
|
||||
string value;
|
||||
if(!ParseEq() || !ParseAttValue(value))
|
||||
SyntaxError();
|
||||
|
||||
// Construct an Attribute object and add it to the element
|
||||
elem->AddAttribute(name, value);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseCDATA
|
||||
// Desc: Parse CDATA
|
||||
// CDSect ::= '<![CDATA[' CData ']]>'
|
||||
// CData ::= (Char* - (Char* ']]>' Char*))
|
||||
// Marker: '<![CDATA['
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseCDATA(Element& elem)
|
||||
{
|
||||
// Parse: <![CDATA[
|
||||
if(!ParseString("<![CDATA["))
|
||||
return(false);
|
||||
|
||||
Bookmark bookmark(*this);
|
||||
// Parse: CData
|
||||
for(;;)
|
||||
{
|
||||
// End of CDATA ?
|
||||
if(ParseString("]]>"))
|
||||
break;
|
||||
|
||||
// Is character allowed ?
|
||||
if(!IsXmlChar(NextChar()))
|
||||
SyntaxError();
|
||||
}
|
||||
|
||||
// Get CDATA content and add it as-is to the value
|
||||
string strCDATA;
|
||||
bookmark.GetSubString(strCDATA, 3);
|
||||
elem.AddValue(strCDATA);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseTagBegining
|
||||
// Desc: Parse start tag and construct an element
|
||||
// '<' Name (S Attribute)* S?
|
||||
// Marker: '<'
|
||||
// ***************************************************************************
|
||||
ElementTag* XmlParser::ParseTagBegining()
|
||||
{
|
||||
// Parse: '<'
|
||||
if(!ParseChar('<'))
|
||||
return(0);
|
||||
|
||||
// Get the name of the tag
|
||||
string strName;
|
||||
if(!ParseName(strName))
|
||||
SyntaxError();
|
||||
|
||||
// Construct an element object
|
||||
auto_ptr<ElementTag> pElem(new ElementTag(strName));
|
||||
|
||||
// Parse: (S Attribute)* S?
|
||||
while(ParseSpaces() && ParseAttribute(pElem.get()))
|
||||
;
|
||||
|
||||
// return the element to the caller
|
||||
return(pElem.release());
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseETag
|
||||
// Desc: Parse end tag
|
||||
// ETag ::= '</' Name S? '>'
|
||||
// Marker: '</'
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseETag(Element& elem)
|
||||
{
|
||||
// Is an End tag ?
|
||||
if(!ParseString("</"))
|
||||
return(false);
|
||||
|
||||
// Get the tag name
|
||||
string endTagName;
|
||||
if(!ParseName(endTagName))
|
||||
SyntaxError();
|
||||
|
||||
// Start and end tag names must match
|
||||
if(endTagName != elem.GetName())
|
||||
SyntaxError();
|
||||
|
||||
// Skip spaces
|
||||
ParseSpaces();
|
||||
// End of the tag
|
||||
if(!ParseChar('>'))
|
||||
SyntaxError();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseMarkup
|
||||
// Desc: Parse markups like comments, CDATA, elements, etc.
|
||||
// Comment begins with '<!--'
|
||||
// CDSect begins with '<![CDATA['
|
||||
// element begins with '<'
|
||||
// ***************************************************************************
|
||||
bool XmlParser::ParseMarkup(Element& elem)
|
||||
{
|
||||
// Try to read a comment
|
||||
auto_ptr<ElementComment> comment(ParseComment());
|
||||
if(0 != comment.get())
|
||||
{
|
||||
// Add it to the element
|
||||
if(!elem.AddChild(comment.release()))
|
||||
SyntaxError();
|
||||
return(true);
|
||||
}
|
||||
|
||||
// Try to read a CDATA
|
||||
if(ParseCDATA(elem))
|
||||
return(true);
|
||||
|
||||
// Try to read an element
|
||||
auto_ptr<ElementTag> tag(ParseElement());
|
||||
if(0 != tag.get())
|
||||
{
|
||||
if(!elem.AddChild(tag.release()))
|
||||
SyntaxError();
|
||||
return(true);
|
||||
}
|
||||
|
||||
return(false);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseContentETag
|
||||
// Desc: Parse element content and end tag
|
||||
// content ::= (element | CharData | Reference | CDSect | Comment)*
|
||||
// CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
|
||||
// Reference begins with '&'
|
||||
// ***************************************************************************
|
||||
void XmlParser::ParseContentETag(ElementTag& elem)
|
||||
{
|
||||
// Record the current position to extract later the content
|
||||
Bookmark bookmark(*this);
|
||||
|
||||
char c = NextChar();
|
||||
for(;;)
|
||||
{
|
||||
// "]]>" not allowed in content
|
||||
if(ParseString("]]>"))
|
||||
SyntaxError();
|
||||
|
||||
switch(c)
|
||||
{
|
||||
case 0: // End of document
|
||||
SyntaxError();
|
||||
break;
|
||||
|
||||
case '&':
|
||||
case '<':
|
||||
{
|
||||
PreviousChar();
|
||||
|
||||
// Put what we already have in the value
|
||||
string value;
|
||||
bookmark.GetSubString(value);
|
||||
elem.AddValue(value);
|
||||
|
||||
// Tag or reference ?
|
||||
if(c == '&')
|
||||
{
|
||||
// Get the reference
|
||||
if(!ParseReference(c))
|
||||
SyntaxError();
|
||||
|
||||
// Add it to the value
|
||||
elem.AddValue(c);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Is an end tag ?
|
||||
if(ParseETag(elem))
|
||||
return;
|
||||
else if(!ParseMarkup(elem))
|
||||
SyntaxError();
|
||||
}
|
||||
|
||||
bookmark.Reset();
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Next char
|
||||
c = NextChar();
|
||||
}
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseElement
|
||||
// Desc: Parse element and construct an object
|
||||
// element ::= EmptyElemTag | STag content ETag
|
||||
// EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
|
||||
// STag ::= '<' Name (S Attribute)* S? '>'
|
||||
// Marker: '<'
|
||||
// ***************************************************************************
|
||||
ElementTag* XmlParser::ParseElement()
|
||||
{
|
||||
// Begining of element (start tag)
|
||||
auto_ptr<ElementTag> tag(ParseTagBegining());
|
||||
if(tag.get() == 0)
|
||||
return(0);
|
||||
|
||||
char c = NextChar();
|
||||
if(c == '/') // Empty tag ?
|
||||
{
|
||||
c = NextChar();
|
||||
if(c != '>')
|
||||
SyntaxError();
|
||||
|
||||
return(tag.release());
|
||||
}
|
||||
|
||||
// End of the tag
|
||||
if(c != '>')
|
||||
SyntaxError();
|
||||
|
||||
// Parse the remaining of the element
|
||||
ParseContentETag(*tag);
|
||||
return(tag.release());
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: ParseDocument
|
||||
// Desc: Parse document and construct a (root) element
|
||||
// document ::= XMLDecl? Misc* element Misc*
|
||||
// ***************************************************************************
|
||||
Element* XmlParser::ParseDocument()
|
||||
{
|
||||
// XML declaration (optional)
|
||||
ParseXMLDecl();
|
||||
ParseMiscs();
|
||||
|
||||
// Get the root element
|
||||
auto_ptr<Element> elem(ParseElement());
|
||||
if(0 == elem.get())
|
||||
SyntaxError();
|
||||
|
||||
ParseMiscs();
|
||||
|
||||
return(elem.release());
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Parse
|
||||
// Desc: parse document
|
||||
// ***************************************************************************
|
||||
Element& XmlParser::Parse(const char * szSource, int nSourceSize)
|
||||
{
|
||||
source_ = szSource;
|
||||
sourceCurrent_ = source_;
|
||||
sourceEnd_ = source_ + nSourceSize;
|
||||
line_ = column_ = 1;
|
||||
|
||||
// Get the root eleement
|
||||
#ifdef _MSC_VER
|
||||
rootElem_ = std::auto_ptr<Element>(ParseDocument());
|
||||
#else
|
||||
rootElem_.reset(ParseDocument());
|
||||
#endif
|
||||
|
||||
return(*rootElem_);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Entity references
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Map a name to a character
|
||||
struct MapReference
|
||||
{
|
||||
const char * szName;
|
||||
char c;
|
||||
};
|
||||
|
||||
// Predefined refererences
|
||||
static const MapReference s_MapReference[] =
|
||||
{
|
||||
{ "lt", '<' },
|
||||
{ "gt", '>' },
|
||||
{ "amp", '&' },
|
||||
// { "apos", '\"' },
|
||||
// { "quot", '\'' } DXP
|
||||
{ "apos", '\'' },
|
||||
{ "quot", '\"' }
|
||||
};
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: MapReferenceName
|
||||
// Desc: Find the reference strName and return its equivalent
|
||||
// ***************************************************************************
|
||||
bool XmlParser::MapReferenceName(const string& strName, char& c)
|
||||
{
|
||||
for(unsigned int nIndex = 0; nIndex < elemof(s_MapReference); ++nIndex)
|
||||
{
|
||||
// Same name ?
|
||||
if(strName == s_MapReference[nIndex].szName)
|
||||
{
|
||||
// return the equivalent
|
||||
c = s_MapReference[nIndex].c;
|
||||
return(true);
|
||||
}
|
||||
}
|
||||
|
||||
return(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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(COREGRADE_CONFIG\
|
||||
"/coregrade_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_coregrade_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,75 @@
|
||||
#include "coregrade.h"
|
||||
#include "clog.h"
|
||||
#include "cfg.h"
|
||||
#include "exceptions.h"
|
||||
#include "input.h"
|
||||
#include "coregrade_api.h"
|
||||
#include "pgsql.h"
|
||||
|
||||
#include "coregrade_api_main.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <libpq-fe.h>
|
||||
|
||||
CoreGrade::CoreGrade() {
|
||||
// Open config
|
||||
this->pFile = fopen(COREGRADE_LOG, "a");
|
||||
Output2FILE::Stream() = pFile;
|
||||
FILE_LOG(logINFO) << "COREGRADE 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 CoreGrade::coregrade_api(CVars in, CVars &out) {
|
||||
long retval = PHP_API_BAD_PARAM;
|
||||
try {
|
||||
retval = coregrade_api_main(in, out);
|
||||
} catch (bad_parameter) {
|
||||
out["status"] = "Incorrect input parameter";
|
||||
} catch (...) {
|
||||
out["status"] = "Unhandled exception";
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
const char* CoreGrade::cfgReadChar(const char *parameter) {
|
||||
return CfgReadChar(parameter);
|
||||
}
|
||||
|
||||
long CoreGrade::cfgReadLong(const char *parameter) {
|
||||
return CfgReadLong(parameter);
|
||||
}
|
||||
|
||||
void CoreGrade::logMessage(const char *message) {
|
||||
FILE_LOG(logINFO) << message;
|
||||
}
|
||||
|
||||
CoreGrade::~CoreGrade() {
|
||||
FILE_LOG(logINFO) << "COREGRADE 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,266 @@
|
||||
#include "php_coregrade_api.h"
|
||||
#include "php_coregrade_api_ns.h"
|
||||
#include "coregrade.h"
|
||||
#include "cfg.h"
|
||||
#include "clog.h"
|
||||
#include "vars.h"
|
||||
|
||||
#include "safestring.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <map>
|
||||
|
||||
#include <ext/standard/info.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
zend_object_handlers coregrade_object_handlers;
|
||||
|
||||
struct coregrade_object {
|
||||
zend_object std;
|
||||
CoreGrade *coregrade;
|
||||
};
|
||||
|
||||
zend_class_entry *coregrade_ce;
|
||||
|
||||
void coregrade_free_storage(void *object TSRMLS_DC)
|
||||
{
|
||||
coregrade_object *obj = (coregrade_object *)object;
|
||||
delete obj->coregrade;
|
||||
|
||||
zend_hash_destroy(obj->std.properties);
|
||||
FREE_HASHTABLE(obj->std.properties);
|
||||
|
||||
efree(obj);
|
||||
}
|
||||
|
||||
zend_object_value coregrade_create_handler(zend_class_entry *type TSRMLS_DC)
|
||||
{
|
||||
zval *tmp;
|
||||
zend_object_value retval;
|
||||
|
||||
coregrade_object *obj = (coregrade_object *)emalloc(sizeof(coregrade_object));
|
||||
memset(obj, 0, sizeof(coregrade_object));
|
||||
obj->std.ce = type;
|
||||
|
||||
ALLOC_HASHTABLE(obj->std.properties);
|
||||
zend_hash_init(obj->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
|
||||
#if PHP_VERSION_ID < 50399
|
||||
zend_hash_copy(obj->std.properties, &type->default_properties,
|
||||
(copy_ctor_func_t)zval_add_ref, (void *)&tmp, sizeof(zval *));
|
||||
#else
|
||||
object_properties_init((zend_object*) &(obj->std), type);
|
||||
#endif
|
||||
retval.handle = zend_objects_store_put(obj, NULL,
|
||||
coregrade_free_storage, NULL TSRMLS_CC);
|
||||
retval.handlers = &coregrade_object_handlers;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#define SET_ENV( env ) \
|
||||
if (zend_hash_find(Z_ARRVAL_PP(array), env, sizeof(env), (void **) &token) == SUCCESS) {\
|
||||
setenv( env, Z_STRVAL_PP(token), 1 ); \
|
||||
logfmt( logINFO, env " = %s", Z_STRVAL_PP(token) ); \
|
||||
} else {\
|
||||
unsetenv( env );\
|
||||
}
|
||||
|
||||
PHP_METHOD(CoreGrade, __construct)
|
||||
{
|
||||
CoreGrade *coregrade = NULL;
|
||||
zval *object = getThis();
|
||||
|
||||
coregrade = new CoreGrade();
|
||||
coregrade_object *obj = (coregrade_object *)zend_object_store_get_object(object TSRMLS_CC);
|
||||
obj->coregrade = coregrade;
|
||||
|
||||
zval **array;
|
||||
zval **token;
|
||||
|
||||
zend_is_auto_global("_SERVER", sizeof("_SERVER")-1 TSRMLS_CC);
|
||||
if (zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &array) == SUCCESS &&
|
||||
Z_TYPE_PP(array) == IS_ARRAY) {
|
||||
logfmt( logINFO, "_SERVER found" );
|
||||
SET_ENV( "REMOTE_ADDR" );
|
||||
SET_ENV( "SERVER_NAME" );
|
||||
SET_ENV( "HTTP_COOKIE" );
|
||||
SET_ENV( "QUERY_STRING" );
|
||||
SET_ENV( "HTTP_X_FORWARDED_FOR" );
|
||||
} else {
|
||||
logfmt( logINFO, "_SERVER not found" );
|
||||
}
|
||||
}
|
||||
PHP_METHOD(CoreGrade, coregrade_api)
|
||||
{
|
||||
zval *param, *param_out;
|
||||
CVars input, output;
|
||||
CoreGrade *coregrade;
|
||||
coregrade_object *obj = (coregrade_object *)zend_object_store_get_object(
|
||||
getThis() TSRMLS_CC);
|
||||
coregrade = obj->coregrade;
|
||||
if (coregrade != NULL) {
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char *>("zz"), ¶m, ¶m_out ) == FAILURE ) {
|
||||
// Bad parameters
|
||||
RETURN_NULL();
|
||||
}
|
||||
if (!PZVAL_IS_REF(param_out)) {
|
||||
// out is not a reference
|
||||
/* This is not relevant in PHP 5.4 */
|
||||
#if PHP_VERSION_ID < 50399
|
||||
zend_error(E_WARNING, "Second parameter wasn't passed by reference");
|
||||
RETURN_NULL();
|
||||
#endif
|
||||
}
|
||||
HashTable *hash;
|
||||
char *key;
|
||||
uint key_len;
|
||||
zval **value;
|
||||
|
||||
convert_to_array_ex( ¶m );
|
||||
hash = HASH_OF( param );
|
||||
zend_hash_internal_pointer_reset( hash );
|
||||
|
||||
while ( zend_hash_get_current_key( hash, &key, /*num_index*/ NULL, /*duplicate*/ false ) == HASH_KEY_IS_STRING ) {
|
||||
zend_hash_get_current_data( hash, (void**)&value );
|
||||
convert_to_string_ex( value );
|
||||
input[ key ] = Z_STRVAL_PP(value);
|
||||
zend_hash_move_forward( hash );
|
||||
}
|
||||
|
||||
long retval = coregrade->coregrade_api(input, output);
|
||||
|
||||
convert_to_array_ex( ¶m_out );
|
||||
|
||||
CVars::iterator i;
|
||||
int j = 0;
|
||||
char out_key[200], out_value[200];
|
||||
for ( i=output.begin(); i != output.end() && j<200 ; i++ ) {
|
||||
j++;
|
||||
logfmt( logINFO, "RET: %s=%s", i->first.c_str(), i->second.c_str() );
|
||||
strsafecpy( out_key, i->first.c_str(), sizeof(out_key) );
|
||||
strsafecpy( out_value, i->second.c_str(), sizeof(out_value) );
|
||||
add_assoc_string( param_out, out_key, out_value, true );
|
||||
}
|
||||
|
||||
RETURN_LONG(retval);
|
||||
}
|
||||
RETURN_NULL();
|
||||
}
|
||||
PHP_METHOD(CoreGrade, cfgReadChar)
|
||||
{
|
||||
CoreGrade *coregrade;
|
||||
coregrade_object *obj = (coregrade_object *)zend_object_store_get_object(
|
||||
getThis() TSRMLS_CC);
|
||||
coregrade = obj->coregrade;
|
||||
if (coregrade != NULL) {
|
||||
char *parameter;
|
||||
int parameter_len;
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char *>("s"), ¶meter, ¶meter_len) == FAILURE) {
|
||||
RETURN_NULL();
|
||||
}
|
||||
if (parameter_len == 0) {
|
||||
RETURN_NULL();
|
||||
}
|
||||
RETURN_STRING(coregrade->cfgReadChar(parameter),1);
|
||||
}
|
||||
RETURN_NULL();
|
||||
}
|
||||
PHP_METHOD(CoreGrade, cfgReadLong)
|
||||
{
|
||||
CoreGrade *coregrade;
|
||||
coregrade_object *obj = (coregrade_object *)zend_object_store_get_object(
|
||||
getThis() TSRMLS_CC);
|
||||
coregrade = obj->coregrade;
|
||||
if (coregrade != NULL) {
|
||||
char *parameter;
|
||||
int parameter_len;
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char *>("s"), ¶meter, ¶meter_len) == FAILURE) {
|
||||
RETURN_NULL();
|
||||
}
|
||||
if (parameter_len == 0) {
|
||||
RETURN_NULL();
|
||||
}
|
||||
RETURN_LONG(coregrade->cfgReadLong(parameter));
|
||||
}
|
||||
RETURN_NULL();
|
||||
}
|
||||
PHP_METHOD(CoreGrade, logMessage)
|
||||
{
|
||||
CoreGrade *coregrade;
|
||||
coregrade_object *obj = (coregrade_object *)zend_object_store_get_object(
|
||||
getThis() TSRMLS_CC);
|
||||
coregrade = obj->coregrade;
|
||||
if (coregrade != NULL) {
|
||||
char *message;
|
||||
int message_len;
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast<char *>("s"), &message, &message_len) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
if (message_len == 0) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
coregrade->logMessage((const char *)message);
|
||||
}
|
||||
RETURN_TRUE;
|
||||
}
|
||||
#if PHP_VERSION_ID < 50399
|
||||
function_entry coregrade_methods[] = {
|
||||
#else
|
||||
zend_function_entry coregrade_methods[] = {
|
||||
#endif
|
||||
PHP_ME(CoreGrade, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
|
||||
PHP_ME(CoreGrade, coregrade_api, NULL, ZEND_ACC_PUBLIC)
|
||||
PHP_ME(CoreGrade, cfgReadChar, NULL, ZEND_ACC_PUBLIC)
|
||||
PHP_ME(CoreGrade, cfgReadLong, NULL, ZEND_ACC_PUBLIC)
|
||||
PHP_ME(CoreGrade, logMessage, NULL, ZEND_ACC_PUBLIC)
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
PHP_MINIT_FUNCTION(coregrade_api)
|
||||
{
|
||||
zend_class_entry ce;
|
||||
INIT_NS_CLASS_ENTRY(ce, COREGRADE_API_NS, "CoreGrade", coregrade_methods);
|
||||
//INIT_CLASS_ENTRY(ce, "CoreGrade", coregrade_methods);
|
||||
coregrade_ce = zend_register_internal_class(&ce TSRMLS_CC);
|
||||
coregrade_ce->create_object = coregrade_create_handler;
|
||||
memcpy(&coregrade_object_handlers,
|
||||
zend_get_std_object_handlers(), sizeof(zend_object_handlers));
|
||||
coregrade_object_handlers.clone_obj = NULL;
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
PHP_MINFO_FUNCTION(coregrade_api)
|
||||
{
|
||||
php_info_print_table_start();
|
||||
php_info_print_table_row(2, "COREGRADE API support", "enabled");
|
||||
php_info_print_table_row(2, "Log File", COREGRADE_LOG);
|
||||
php_info_print_table_row(2, "Config File", COREGRADE_CONFIG"coregrade_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, "COREGRADE API Version", PHP_COREGRADE_API_EXTVER);
|
||||
php_info_print_table_end();
|
||||
}
|
||||
|
||||
zend_module_entry coregrade_api_module_entry = {
|
||||
#if ZEND_MODULE_API_NO >= 20010901
|
||||
STANDARD_MODULE_HEADER,
|
||||
#endif
|
||||
COREGRADE_API_NS,
|
||||
NULL, /* Functions */
|
||||
PHP_MINIT(coregrade_api),
|
||||
NULL, /* MSHUTDOWN */
|
||||
NULL, /* RINIT */
|
||||
NULL, /* RSHUTDOWN */
|
||||
PHP_MINFO(coregrade_api), /* MINFO */
|
||||
#if ZEND_MODULE_API_NO >= 20010901
|
||||
PHP_COREGRADE_API_EXTVER,
|
||||
#endif
|
||||
STANDARD_MODULE_PROPERTIES
|
||||
};
|
||||
|
||||
#ifdef COMPILE_DL_COREGRADE_API
|
||||
extern "C" {
|
||||
ZEND_GET_MODULE(coregrade_api)
|
||||
}
|
||||
#endif
|
||||
@@ -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,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,352 @@
|
||||
#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 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("'") + 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("'") + 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);
|
||||
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,165 @@
|
||||
#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,"PayLid 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 );
|
||||
|
||||
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,235 @@
|
||||
//****************************************************************************
|
||||
// Filename: XmlElements.h
|
||||
// Copyright 1999 Daniel X. Pape. All rights reserved.
|
||||
//
|
||||
// Description: A set of classes for reading and parsing simple XML files.
|
||||
//
|
||||
//****************************************************************************
|
||||
// Revision History:
|
||||
// Thursday, July 08, 1999 - Original. Heavily based on "A Simple XML
|
||||
// Parser" by Sebastien Andrivet. See Documentation.
|
||||
//****************************************************************************
|
||||
|
||||
#ifndef _XMLELEMENTS_H_
|
||||
#define _XMLELEMENTS_H_
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// Disable stupid MSVC warning about identifiers > 255 chars long
|
||||
#pragma warning (disable: 4786)
|
||||
#endif
|
||||
|
||||
// STL
|
||||
#include <memory>
|
||||
|
||||
#include "XmlFwdDecls.h"
|
||||
|
||||
namespace SimpleXMLParser
|
||||
{
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
class Attribute;
|
||||
class Element;
|
||||
class ElementNull;
|
||||
|
||||
typedef std::map<std::string, std::string> Attributes;
|
||||
typedef std::vector<Element*> Elements;
|
||||
|
||||
// ***************************************************************************
|
||||
// Class: Attribute
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
class Attribute
|
||||
{
|
||||
std::string name_;
|
||||
std::string value_;
|
||||
|
||||
public:
|
||||
|
||||
Attribute(const std::string& name, const std::string& value);
|
||||
|
||||
const std::string& GetName() const;
|
||||
const std::string& GetValue() const;
|
||||
};
|
||||
|
||||
// ***************************************************************************
|
||||
// Class: Value
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
class Value
|
||||
{
|
||||
std::string value_;
|
||||
|
||||
public:
|
||||
|
||||
void Add(const std::string& text);
|
||||
void Add(char c);
|
||||
|
||||
// Conversion operator
|
||||
operator const std::string&() const;
|
||||
};
|
||||
|
||||
// ***************************************************************************
|
||||
// Class: Element
|
||||
// Desc: Abstract base class for markup tags
|
||||
// ***************************************************************************
|
||||
class Element
|
||||
{
|
||||
private:
|
||||
const std::string name_;
|
||||
Value value_;
|
||||
|
||||
public:
|
||||
|
||||
static ElementNull& nullElem; // null element (singleton)
|
||||
|
||||
Element(const std::string& strName);
|
||||
virtual ~Element() { }
|
||||
|
||||
void AddValue(const std::string& strText);
|
||||
void AddValue(char c);
|
||||
|
||||
const std::string& GetName() const;
|
||||
const Value& GetValue() const;
|
||||
|
||||
const Element& operator()(const char * szName, int nIndex = 0) const;
|
||||
|
||||
virtual bool IsNull() const;
|
||||
|
||||
virtual bool AddChild(Element* pChild) = 0;
|
||||
|
||||
virtual const Elements* GetChildren() const = 0;
|
||||
virtual const Element& GetChild(const char * szName,
|
||||
int nIndex = 0) const = 0;
|
||||
|
||||
virtual const Attributes* GetAttributes() const = 0;
|
||||
virtual const std::string GetAttributeValue(const std::string&) const = 0;
|
||||
};
|
||||
|
||||
// ***************************************************************************
|
||||
// Class: ElementTag
|
||||
// Desc: Element of the form <name>...</name> or <name/>. Can
|
||||
// contain other elements and may have attributes
|
||||
// ***************************************************************************
|
||||
class ElementTag : public Element
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
ElementTag(const std::string& strName);
|
||||
~ElementTag();
|
||||
|
||||
void AddAttribute(std::string& strName, std::string& strValue);
|
||||
|
||||
virtual bool AddChild(Element* pChild);
|
||||
|
||||
virtual const Elements* GetChildren() const;
|
||||
virtual const Element& GetChild(const char * szName, int nIndex = 0) const;
|
||||
|
||||
virtual const Attributes* GetAttributes() const;
|
||||
virtual const std::string GetAttributeValue(const std::string&) const;
|
||||
|
||||
private:
|
||||
|
||||
bool FindChild(const char * szName, Elements::const_iterator& it) const;
|
||||
|
||||
Attributes attributes_;
|
||||
Elements children_;
|
||||
|
||||
};
|
||||
|
||||
// ***************************************************************************
|
||||
// Class: ElementSimple
|
||||
// Desc: Element without children (like comments)
|
||||
// ***************************************************************************
|
||||
class ElementSimple: public Element
|
||||
{
|
||||
public:
|
||||
ElementSimple(const std::string& strName);
|
||||
|
||||
virtual bool AddChild(Element* pChild);
|
||||
|
||||
virtual const Elements* GetChildren() const;
|
||||
virtual const Element& GetChild(const char * szName, int nIndex = 0) const;
|
||||
|
||||
virtual const Attributes* GetAttributes() const;
|
||||
virtual const std::string GetAttributeValue(const std::string&) const;
|
||||
};
|
||||
|
||||
// ***************************************************************************
|
||||
// Class: ElementComment
|
||||
// Desc: Element named "!"
|
||||
// ***************************************************************************
|
||||
class ElementComment : public ElementSimple
|
||||
{
|
||||
public:
|
||||
ElementComment(const std::string& strComment);
|
||||
};
|
||||
|
||||
// ***************************************************************************
|
||||
// Class: ElementNull
|
||||
// Desc: Element::nullElem
|
||||
// ***************************************************************************
|
||||
class ElementNull : public ElementSimple
|
||||
{
|
||||
public:
|
||||
ElementNull();
|
||||
|
||||
private:
|
||||
virtual bool IsNull() const;
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Attribute of a tag
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
inline const std::string& Attribute::GetName() const
|
||||
{
|
||||
return(name_);
|
||||
}
|
||||
|
||||
inline const std::string& Attribute::GetValue() const
|
||||
{
|
||||
return(value_);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Element
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
inline const std::string& Element::GetName() const
|
||||
{
|
||||
return(name_);
|
||||
}
|
||||
|
||||
inline const Value& Element::GetValue() const
|
||||
{
|
||||
return(value_);
|
||||
}
|
||||
|
||||
inline void Element::AddValue(const std::string& strText)
|
||||
{
|
||||
value_.Add(strText);
|
||||
}
|
||||
|
||||
inline void Element::AddValue(char c)
|
||||
{
|
||||
value_.Add(c);
|
||||
}
|
||||
|
||||
inline const Element&
|
||||
Element::operator()(const char * szName, int nIndex) const
|
||||
{
|
||||
return(GetChild(szName, nIndex));
|
||||
}
|
||||
|
||||
inline void
|
||||
ElementTag::AddAttribute(std::string& strName, std::string& strValue)
|
||||
{
|
||||
attributes_[strName] = strValue;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
//****************************************************************************
|
||||
// Filename: XmlFwdDecls.h
|
||||
// Copyright 1999 Daniel X. Pape. All rights reserved.
|
||||
//
|
||||
// Description: Just some forward declarations for external classes to
|
||||
// include.
|
||||
//
|
||||
//****************************************************************************
|
||||
// Revision History:
|
||||
// Tuesday, September 28, 1999 - Original
|
||||
//****************************************************************************
|
||||
|
||||
#ifndef _XMLFWDDECLS_H_
|
||||
#define _XMLFWDDECLS_H_
|
||||
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
namespace SimpleXMLParser
|
||||
{
|
||||
|
||||
class Attribute;
|
||||
class Element;
|
||||
class ElementNull;
|
||||
|
||||
typedef std::map<std::string, std::string> Attributes;
|
||||
typedef std::vector<Element*> Elements;
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,282 @@
|
||||
//****************************************************************************
|
||||
// Filename: XmlParser.h
|
||||
// Copyright 1999 Daniel X. Pape. All rights reserved.
|
||||
//
|
||||
// Description: A set of classes for reading and parsing simple XML files.
|
||||
//
|
||||
//****************************************************************************
|
||||
// Revision History:
|
||||
// Thursday, July 08, 1999 - Original. Heavily based on "A Simple XML
|
||||
// Parser" by Sebastien Andrivet. See Documentation.
|
||||
//****************************************************************************
|
||||
|
||||
#ifndef _XMLPARSER_H_
|
||||
#define _XMLPARSER_H_
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// Disable stupid MSVC warning about identifiers > 255 chars long
|
||||
#pragma warning (disable: 4786)
|
||||
#endif
|
||||
|
||||
// STL
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
#include "XmlElements.h"
|
||||
|
||||
namespace SimpleXMLParser
|
||||
{
|
||||
|
||||
// ***************************************************************************
|
||||
// Class: XmlException
|
||||
// Desc: parsing error
|
||||
// ***************************************************************************
|
||||
class XmlException
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
XmlException(int line, int column);
|
||||
|
||||
int GetLine() const;
|
||||
int GetColumn() const;
|
||||
|
||||
private:
|
||||
|
||||
int line_;
|
||||
int column_;
|
||||
|
||||
};
|
||||
|
||||
// ***************************************************************************
|
||||
// Class: XmlParser
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
class XmlParser
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
XmlParser();
|
||||
|
||||
Element& Parse(const char * szSource, int nSourceSize);
|
||||
|
||||
private:
|
||||
|
||||
XmlParser(const XmlParser&);
|
||||
XmlParser& operator=(const XmlParser&);
|
||||
|
||||
// ***********************************************************************
|
||||
// Class: Bookmark
|
||||
// Desc: record the current position in the document
|
||||
// ***********************************************************************
|
||||
class Bookmark
|
||||
{
|
||||
private:
|
||||
Bookmark(const Bookmark&);
|
||||
Bookmark& operator=(const Bookmark&);
|
||||
|
||||
XmlParser& parser_; // XmlParser
|
||||
const char* sourceCurrent_; // Position recorded
|
||||
int line_; // Line recorded
|
||||
int column_; // Column recorded
|
||||
|
||||
public:
|
||||
Bookmark(XmlParser& reader);
|
||||
// Change back the position
|
||||
void Restore();
|
||||
// Get the sub-string between the current and
|
||||
// the recorded positions
|
||||
void GetSubString(std::string& strString, int nNumEndSkip = 0);
|
||||
// Record the current position
|
||||
void Reset();
|
||||
};
|
||||
|
||||
friend class Bookmark;
|
||||
|
||||
const char* source_; // XML document
|
||||
const char* sourceCurrent_; // Current position
|
||||
const char* sourceEnd_; // End of the document
|
||||
int line_; // Current line
|
||||
int column_; // Current column
|
||||
|
||||
std::string xmlVersion_; // Version of XML used in doc.
|
||||
std::auto_ptr<Element> rootElem_; // Root element
|
||||
|
||||
// parsing
|
||||
|
||||
char NextChar();
|
||||
void PreviousChar();
|
||||
|
||||
// All of these following member functions can throw exceptions
|
||||
|
||||
bool ParseSpaces();
|
||||
bool ParseString(const char* pString);
|
||||
bool ParseStringNoCase(const char* pString);
|
||||
bool ParseNumber(int& nNum);
|
||||
bool ParseHexNumber(int& nNum);
|
||||
bool ParseChar(char c);
|
||||
bool ParseName(std::string& strName);
|
||||
|
||||
bool ParseDeclBegining(const char * szString);
|
||||
bool ParseXMLDecl();
|
||||
bool ParseEq();
|
||||
bool ParseVersionInfo(std::string& strVersion);
|
||||
bool ParseVersionNum(std::string& strVersion);
|
||||
bool ParseEncodingDecl();
|
||||
bool ParseEncName();
|
||||
void ParseMiscs();
|
||||
bool ParseReference(char& c);
|
||||
bool ParseAttValue(std::string& strValue);
|
||||
bool ParseAttribute(ElementTag* pElem);
|
||||
bool ParseETag(Element& element);
|
||||
void ParseContentETag(ElementTag& element);
|
||||
bool ParseMarkup(Element& element);
|
||||
bool ParseCDATA(Element& element);
|
||||
|
||||
ElementComment* ParseComment();
|
||||
ElementTag* ParseTagBegining();
|
||||
ElementTag* ParseElement();
|
||||
Element* ParseDocument();
|
||||
|
||||
bool MapReferenceName(const std::string& strName, char& c);
|
||||
|
||||
void SyntaxError();
|
||||
};
|
||||
|
||||
inline XmlException::XmlException(int line, int column)
|
||||
: line_(line), column_(column)
|
||||
{
|
||||
}
|
||||
|
||||
inline int XmlException::GetLine() const
|
||||
{
|
||||
return(line_);
|
||||
}
|
||||
|
||||
inline int XmlException::GetColumn() const
|
||||
{
|
||||
return(column_);
|
||||
}
|
||||
|
||||
inline XmlParser::Bookmark::Bookmark(XmlParser& reader)
|
||||
: parser_(reader), sourceCurrent_(reader.sourceCurrent_),
|
||||
line_(0), column_(0)
|
||||
{
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: Restore
|
||||
// Desc: Change back the position
|
||||
// ***************************************************************************
|
||||
inline void XmlParser::Bookmark::Restore()
|
||||
{
|
||||
parser_.sourceCurrent_ = sourceCurrent_;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: GetSubString
|
||||
// Desc: Get the sub-string between the current and the recorded positions
|
||||
// ***************************************************************************
|
||||
inline void XmlParser::Bookmark::GetSubString(std::string& strString, int nNumEndSkip)
|
||||
{
|
||||
// ASSERT(parser_.sourceCurrent_ + nNumEndSkip >= sourceCurrent_);
|
||||
strString = std::string(sourceCurrent_, parser_.sourceCurrent_ -
|
||||
sourceCurrent_ - nNumEndSkip);
|
||||
}
|
||||
|
||||
inline void XmlParser::Bookmark::Reset()
|
||||
{
|
||||
sourceCurrent_ = parser_.sourceCurrent_;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: IsSpace
|
||||
// Desc: Space, tabulation, line feed or return
|
||||
// ***************************************************************************
|
||||
inline bool IsSpace(char c)
|
||||
{
|
||||
return(c == ' ' || c == '\t' || c == '\r' || c == '\n');
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: IsAlpha
|
||||
// Desc: [a-zA-Z]
|
||||
// ***************************************************************************
|
||||
inline bool IsAlpha(char c)
|
||||
{
|
||||
return((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'));
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: IsDigit
|
||||
// Desc: [0-9]
|
||||
// ***************************************************************************
|
||||
inline bool IsDigit(char c)
|
||||
{
|
||||
return(c >= '0' && c <= '9');
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: IsHexDigit
|
||||
// Desc: [0-9a-fA-F]
|
||||
// ***************************************************************************
|
||||
inline bool IsHexDigit(char c)
|
||||
{
|
||||
return(IsDigit(c) || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: HexDigitValue
|
||||
// Desc: [0-9a-fA-F]
|
||||
// ***************************************************************************
|
||||
inline int HexDigitValue(char c)
|
||||
{
|
||||
return((c >= '0' && c <= '9') ? c - '0'
|
||||
: ((c >= 'a' && c <= 'f') ? c - 'a' + 10
|
||||
: c - 'A' + 10));
|
||||
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: IsAlphaDigit
|
||||
// Desc: [a-zA-Z0-9]
|
||||
// ***************************************************************************
|
||||
inline bool IsAlphaDigit(char c)
|
||||
{
|
||||
return(IsAlpha(c) || IsDigit(c));
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: IsAlphaDigitEx
|
||||
// Desc: [a-zA-Z0-9_.:] | '-'
|
||||
// ***************************************************************************
|
||||
inline bool IsAlphaDigitEx(char c)
|
||||
{
|
||||
return(IsAlphaDigit(c) || c == '_' || c == '.' || c == ':' || c == '-');
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: LowCase
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
inline char LowCase(char c)
|
||||
{
|
||||
return(c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
// Function: IsXmlChar
|
||||
// Desc:
|
||||
// ***************************************************************************
|
||||
inline bool IsXmlChar(char c)
|
||||
{
|
||||
return(c == 0x9 || c == 0xa || c == 0xd || c >= 0x20);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#ifndef __mx_account_h__
|
||||
#define __mx_account_h__
|
||||
|
||||
#include "vars.h"
|
||||
|
||||
|
||||
long account_calls(CVars in, CVars &out);
|
||||
long CreateCoreGradeAccount(CVars in, CVars &out);
|
||||
long CreateCoreGradeAccountPending(CVars in, CVars &out);
|
||||
long LoginCoreGradeAccount( CVars in, CVars &out );
|
||||
long SessionCheck(long uid, const char *sessionid, int create );
|
||||
long account_session_check(CVars in, CVars out);
|
||||
|
||||
long CompleteAddCustomerBalance(CVars in, CVars &out);
|
||||
long InitiateAddCustomerBalance(CVars in, CVars &out);
|
||||
long DeliverMobilseEtisalat(CVars in, CVars &out);
|
||||
long GateDeliverMobilseEtisalat(CVars in, CVars &out);
|
||||
long ETSL_configure(CVars in, CVars &out);
|
||||
long AddMobileTopuNumber(CVars in, CVars &out);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#ifndef CFG_H
|
||||
#define CFG_H
|
||||
|
||||
#include "php_coregrade_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_coregrade_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 coregrade_api as dynamic module */
|
||||
#define COMPILE_DL_COREGRADE_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,20 @@
|
||||
#ifndef COREGRADE_API_COREGRADE_H
|
||||
#define COREGRADE_API_COREGRADE_H
|
||||
|
||||
#include "vars.h"
|
||||
|
||||
// A very simple coregrade class
|
||||
class CoreGrade {
|
||||
public:
|
||||
CoreGrade();
|
||||
~CoreGrade();
|
||||
long coregrade_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 /* COREGRADE_API_COREGRADE_H */
|
||||
@@ -0,0 +1,103 @@
|
||||
#ifndef COREGRADE_API_H
|
||||
#define COREGRADE_API_H
|
||||
|
||||
#define PHP_API_OK 0
|
||||
#define PHP_API_BAD_PARAM -1
|
||||
|
||||
#define COREGRADE_SESSION_CHECK 299
|
||||
#define COREGRADE_USER_LOGIN 300
|
||||
#define COREGRADE_USER_LOGOUT 301
|
||||
#define COREGRADE_CREATE_ACCOUNT 320
|
||||
|
||||
//**************************************************************
|
||||
#define COREGRADE_BKO_START 10000
|
||||
|
||||
#define COREGRADE_BKO_LOGIN 10010
|
||||
#define COREGRADE_BKO_CREATEUSER 10015
|
||||
#define COREGRADE_BKO_UPDATEUSER 10020
|
||||
|
||||
#define COREGRADE_BKO_END 10999
|
||||
//**************************************************************
|
||||
#define COREGRADE_ACCOUNT_START 11000
|
||||
|
||||
#define COREGRADE_ACCOUNT_TESTEMAIL 11001
|
||||
#define COREGRADE_ACCOUNT_PENDING 11010
|
||||
#define COREGRADE_VERIFY_PENDING_LINK 11015
|
||||
#define COREGRADE_ACCOUNT_CREATEACC 11020
|
||||
#define COREGRADE_ACCOUNT_LOGIN 11025
|
||||
|
||||
#define COREGRADE_ACCOUNT_END 11999
|
||||
//**************************************************************
|
||||
#define COREGRADE_GROUP_START 12000
|
||||
|
||||
#define COREGRADE_GROUP_CREATEGROUP 12010
|
||||
#define COREGRADE_GROUP_INVITEGROUP 12015
|
||||
#define COREGRADE_GROUP_ACCEPTGROUP 12020
|
||||
|
||||
#define COREGRADE_GROUP_END 12999
|
||||
//**************************************************************
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define COREGRADE_COMPLETE_SENDMONEY_INTERSW 555
|
||||
#define COREGRADE_GETBILLER_INTERSW 556
|
||||
#define COREGRADE_BILL_PAYMENT_ADVICE_INTERSW 557
|
||||
|
||||
#define COREGRADE_INTERSW_GETBILLER 556
|
||||
#define COREGRADE_INTERSW_BILL_PAYMENT_ADVICE 557
|
||||
#define COREGRADE_INTERSW_GETBILLERPAYMENTINTEMS 558
|
||||
#define COREGRADE_INTERSW_GETBILLERCATEGORIES 559
|
||||
#define COREGRADE_INTERSW_DO_TRANSFER 560
|
||||
#define COREGRADE_INTERSW_QUERY_TRANSACTION 561
|
||||
|
||||
#define COREGRADE_ADD_MONEYRECIPIENT 600
|
||||
|
||||
#define COREGRADE_CREATE_USER_ACCOUNT 700
|
||||
#define COREGRADE_USER_ACCOUNT_LOGIN 710
|
||||
#define COREGRADE_START_PASSWORDRESET 720
|
||||
#define COREGRADE_COMPLETE_PASSWORDRESET 730
|
||||
|
||||
#define COREGRADE_START_ADDMONEY 770
|
||||
#define COREGRADE_COMPLETE_ADDMONEY 775
|
||||
|
||||
#define COREGRADE_ADD_MOBILE_TOPUPNUM 900
|
||||
#define COREGRADE_PROMO_CALL 990
|
||||
|
||||
|
||||
#define COREGRADE_STOREFACE_GET_ACCOUNT_BALANCE 891
|
||||
|
||||
#define COREGRADE_LOG_ENTRY 900000
|
||||
#define COREGRADE_CREDIT_TOPUP 900010
|
||||
|
||||
|
||||
|
||||
#define COREGRADE_TOPUP_ORDER 900020
|
||||
#define COREGRADE_TOPUP_ORDER_PURCHASE 900030
|
||||
#define COREGRADE_PAYPAL_IPNMSG 900090
|
||||
|
||||
|
||||
|
||||
#define COREGRADE_BULKTOPUP_ORDER 700010
|
||||
#define COREGRADE_BULKTOPUP_ITEM 700020
|
||||
#define COREGRADE_BULKTOPUP_ITEMUPDATE 700030
|
||||
#define COREGRADE_BULKTOPUP_DELIVER 700040
|
||||
|
||||
|
||||
#define COREGRADE_BALANCE_TOPUP_ORDER 800020
|
||||
#define COREGRADE_BALANCE_TOPUP_PURCHASE 800030
|
||||
#define COREGRADE_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 COREGRADE_API_MAIN_H
|
||||
#define COREGRADE_API_MAIN_H
|
||||
|
||||
#include "vars.h"
|
||||
|
||||
long coregrade_api_main(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,35 @@
|
||||
#ifndef __mx_email_h__
|
||||
#define __mx_email_h__
|
||||
|
||||
#include "vars.h"
|
||||
|
||||
long AccountPendingMail(CVars in);
|
||||
long WelcomeAccountMail(CVars in);
|
||||
long GroupCreateMemberMail(CVars in);
|
||||
long CreateCoreGradeGroupMail(CVars in);
|
||||
|
||||
|
||||
|
||||
long send_email(CVars in, CVars &out);
|
||||
long SystemStatus();
|
||||
long VirtualAirSaleAlert(CVars in);
|
||||
void SendAccountCreateAlert(long customer_id);
|
||||
long VirtualAirSaleCustomer(CVars in);
|
||||
void CustomerBalanceEmail(CVars in);
|
||||
void PaymentAlert(CVars in);
|
||||
void BalanceUpdateAlert(CVars in);
|
||||
void CustomerEmailWelcome(CVars in);
|
||||
long CustomerAirSale(CVars in);
|
||||
long CustomerAirSalePayment(CVars in);
|
||||
long CustomerAirBonus(CVars in);
|
||||
long CustomerBalanceBonusEmail(CVars in);
|
||||
long StartPassResetEmail(CVars in);
|
||||
long CompletePassResetEmail(CVars in);
|
||||
long SendPromoEmail(CVars in);
|
||||
long SendBalanceRequestAlert(CVars in);
|
||||
long SendBalanceCompleteAlert(CVars in);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,378 @@
|
||||
/* envH.h
|
||||
Generated by gSOAP 2.8.16 from env.h
|
||||
|
||||
Copyright(C) 2000-2013, Robert van Engelen, Genivia Inc. All Rights Reserved.
|
||||
The generated code is released under one of the following licenses:
|
||||
GPL or Genivia's license for commercial use.
|
||||
This program is released under the GPL with the additional exemption that
|
||||
compiling, linking, and/or using OpenSSL is allowed.
|
||||
*/
|
||||
|
||||
#ifndef envH_H
|
||||
#define envH_H
|
||||
#include "envStub.h"
|
||||
#ifndef WITH_NOIDREF
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*);
|
||||
|
||||
SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap);
|
||||
|
||||
SOAP_FMAC3 void * SOAP_FMAC4 env_instantiate(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 env_fdelete(struct soap_clist*);
|
||||
SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*);
|
||||
|
||||
#ifndef SOAP_TYPE_byte
|
||||
#define SOAP_TYPE_byte (3)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*);
|
||||
SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*);
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*);
|
||||
|
||||
#ifndef soap_write_byte
|
||||
#define soap_write_byte(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_byte(soap, data),0) || soap_put_byte(soap, data, "byte", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*);
|
||||
|
||||
#ifndef soap_read_byte
|
||||
#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef SOAP_TYPE_int
|
||||
#define SOAP_TYPE_int (1)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*);
|
||||
SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*);
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*);
|
||||
|
||||
#ifndef soap_write_int
|
||||
#define soap_write_int(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_int(soap, data),0) || soap_put_int(soap, data, "int", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*);
|
||||
|
||||
#ifndef soap_read_int
|
||||
#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_SOAP_ENV__Fault
|
||||
#define SOAP_TYPE_SOAP_ENV__Fault (14)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*);
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*);
|
||||
|
||||
#ifndef soap_write_SOAP_ENV__Fault
|
||||
#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Fault(soap, data),0) || soap_put_SOAP_ENV__Fault(soap, data, "SOAP-ENV:Fault", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*);
|
||||
|
||||
#ifndef soap_read_SOAP_ENV__Fault
|
||||
#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*);
|
||||
|
||||
inline struct SOAP_ENV__Fault * soap_new_SOAP_ENV__Fault(struct soap *soap, int n = -1) { return soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL); }
|
||||
|
||||
inline struct SOAP_ENV__Fault * soap_new_req_SOAP_ENV__Fault(struct soap *soap) { struct SOAP_ENV__Fault *_p = soap_instantiate_SOAP_ENV__Fault(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Fault(soap, _p); } return _p; }
|
||||
|
||||
inline struct SOAP_ENV__Fault * soap_new_set_SOAP_ENV__Fault(struct soap *soap, char *faultcode, char *faultstring, char *faultactor, struct SOAP_ENV__Detail *detail, struct SOAP_ENV__Code *SOAP_ENV__Code, struct SOAP_ENV__Reason *SOAP_ENV__Reason, char *SOAP_ENV__Node, char *SOAP_ENV__Role, struct SOAP_ENV__Detail *SOAP_ENV__Detail) { struct SOAP_ENV__Fault *_p = soap_instantiate_SOAP_ENV__Fault(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Fault(soap, _p); _p->faultcode = faultcode; _p->faultstring = faultstring; _p->faultactor = faultactor; _p->detail = detail; _p->SOAP_ENV__Code = SOAP_ENV__Code; _p->SOAP_ENV__Reason = SOAP_ENV__Reason; _p->SOAP_ENV__Node = SOAP_ENV__Node; _p->SOAP_ENV__Role = SOAP_ENV__Role; _p->SOAP_ENV__Detail = SOAP_ENV__Detail; } return _p; }
|
||||
|
||||
inline void soap_delete_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p) { soap_delete(soap, p); }
|
||||
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_SOAP_ENV__Reason
|
||||
#define SOAP_TYPE_SOAP_ENV__Reason (13)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*);
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*);
|
||||
|
||||
#ifndef soap_write_SOAP_ENV__Reason
|
||||
#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Reason(soap, data),0) || soap_put_SOAP_ENV__Reason(soap, data, "SOAP-ENV:Reason", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*);
|
||||
|
||||
#ifndef soap_read_SOAP_ENV__Reason
|
||||
#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*);
|
||||
|
||||
inline struct SOAP_ENV__Reason * soap_new_SOAP_ENV__Reason(struct soap *soap, int n = -1) { return soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL); }
|
||||
|
||||
inline struct SOAP_ENV__Reason * soap_new_req_SOAP_ENV__Reason(struct soap *soap) { struct SOAP_ENV__Reason *_p = soap_instantiate_SOAP_ENV__Reason(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Reason(soap, _p); } return _p; }
|
||||
|
||||
inline struct SOAP_ENV__Reason * soap_new_set_SOAP_ENV__Reason(struct soap *soap, char *SOAP_ENV__Text) { struct SOAP_ENV__Reason *_p = soap_instantiate_SOAP_ENV__Reason(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Reason(soap, _p); _p->SOAP_ENV__Text = SOAP_ENV__Text; } return _p; }
|
||||
|
||||
inline void soap_delete_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p) { soap_delete(soap, p); }
|
||||
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_SOAP_ENV__Detail
|
||||
#define SOAP_TYPE_SOAP_ENV__Detail (10)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*);
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*);
|
||||
|
||||
#ifndef soap_write_SOAP_ENV__Detail
|
||||
#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Detail(soap, data),0) || soap_put_SOAP_ENV__Detail(soap, data, "SOAP-ENV:Detail", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*);
|
||||
|
||||
#ifndef soap_read_SOAP_ENV__Detail
|
||||
#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*);
|
||||
|
||||
inline struct SOAP_ENV__Detail * soap_new_SOAP_ENV__Detail(struct soap *soap, int n = -1) { return soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL); }
|
||||
|
||||
inline struct SOAP_ENV__Detail * soap_new_req_SOAP_ENV__Detail(struct soap *soap, int __type, void *fault) { struct SOAP_ENV__Detail *_p = soap_instantiate_SOAP_ENV__Detail(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Detail(soap, _p); _p->__type = __type; _p->fault = fault; } return _p; }
|
||||
|
||||
inline struct SOAP_ENV__Detail * soap_new_set_SOAP_ENV__Detail(struct soap *soap, char *__any, int __type, void *fault) { struct SOAP_ENV__Detail *_p = soap_instantiate_SOAP_ENV__Detail(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Detail(soap, _p); _p->__any = __any; _p->__type = __type; _p->fault = fault; } return _p; }
|
||||
|
||||
inline void soap_delete_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p) { soap_delete(soap, p); }
|
||||
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_SOAP_ENV__Code
|
||||
#define SOAP_TYPE_SOAP_ENV__Code (8)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*);
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*);
|
||||
|
||||
#ifndef soap_write_SOAP_ENV__Code
|
||||
#define soap_write_SOAP_ENV__Code(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Code(soap, data),0) || soap_put_SOAP_ENV__Code(soap, data, "SOAP-ENV:Code", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*);
|
||||
|
||||
#ifndef soap_read_SOAP_ENV__Code
|
||||
#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*);
|
||||
|
||||
inline struct SOAP_ENV__Code * soap_new_SOAP_ENV__Code(struct soap *soap, int n = -1) { return soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL); }
|
||||
|
||||
inline struct SOAP_ENV__Code * soap_new_req_SOAP_ENV__Code(struct soap *soap) { struct SOAP_ENV__Code *_p = soap_instantiate_SOAP_ENV__Code(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Code(soap, _p); } return _p; }
|
||||
|
||||
inline struct SOAP_ENV__Code * soap_new_set_SOAP_ENV__Code(struct soap *soap, char *SOAP_ENV__Value, struct SOAP_ENV__Code *SOAP_ENV__Subcode) { struct SOAP_ENV__Code *_p = soap_instantiate_SOAP_ENV__Code(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Code(soap, _p); _p->SOAP_ENV__Value = SOAP_ENV__Value; _p->SOAP_ENV__Subcode = SOAP_ENV__Subcode; } return _p; }
|
||||
|
||||
inline void soap_delete_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p) { soap_delete(soap, p); }
|
||||
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_SOAP_ENV__Header
|
||||
#define SOAP_TYPE_SOAP_ENV__Header (7)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*);
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*);
|
||||
|
||||
#ifndef soap_write_SOAP_ENV__Header
|
||||
#define soap_write_SOAP_ENV__Header(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Header(soap, data),0) || soap_put_SOAP_ENV__Header(soap, data, "SOAP-ENV:Header", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*);
|
||||
|
||||
#ifndef soap_read_SOAP_ENV__Header
|
||||
#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*);
|
||||
|
||||
inline struct SOAP_ENV__Header * soap_new_SOAP_ENV__Header(struct soap *soap, int n = -1) { return soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL); }
|
||||
|
||||
inline struct SOAP_ENV__Header * soap_new_req_SOAP_ENV__Header(struct soap *soap) { struct SOAP_ENV__Header *_p = soap_instantiate_SOAP_ENV__Header(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Header(soap, _p); } return _p; }
|
||||
|
||||
inline struct SOAP_ENV__Header * soap_new_set_SOAP_ENV__Header(struct soap *soap) { struct SOAP_ENV__Header *_p = soap_instantiate_SOAP_ENV__Header(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Header(soap, _p); } return _p; }
|
||||
|
||||
inline void soap_delete_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p) { soap_delete(soap, p); }
|
||||
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_PointerToSOAP_ENV__Reason
|
||||
#define SOAP_TYPE_PointerToSOAP_ENV__Reason (16)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*);
|
||||
|
||||
#ifndef soap_write_PointerToSOAP_ENV__Reason
|
||||
#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_PointerToSOAP_ENV__Reason(soap, data),0) || soap_put_PointerToSOAP_ENV__Reason(soap, data, "SOAP-ENV:Reason", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*);
|
||||
|
||||
#ifndef soap_read_PointerToSOAP_ENV__Reason
|
||||
#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_PointerToSOAP_ENV__Detail
|
||||
#define SOAP_TYPE_PointerToSOAP_ENV__Detail (15)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*);
|
||||
|
||||
#ifndef soap_write_PointerToSOAP_ENV__Detail
|
||||
#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_PointerToSOAP_ENV__Detail(soap, data),0) || soap_put_PointerToSOAP_ENV__Detail(soap, data, "SOAP-ENV:Detail", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*);
|
||||
|
||||
#ifndef soap_read_PointerToSOAP_ENV__Detail
|
||||
#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_PointerToSOAP_ENV__Code
|
||||
#define SOAP_TYPE_PointerToSOAP_ENV__Code (9)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*);
|
||||
|
||||
#ifndef soap_write_PointerToSOAP_ENV__Code
|
||||
#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_PointerToSOAP_ENV__Code(soap, data),0) || soap_put_PointerToSOAP_ENV__Code(soap, data, "SOAP-ENV:Code", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*);
|
||||
|
||||
#ifndef soap_read_PointerToSOAP_ENV__Code
|
||||
#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE__QName
|
||||
#define SOAP_TYPE__QName (5)
|
||||
#endif
|
||||
|
||||
#define soap_default__QName(soap, a) soap_default_string(soap, a)
|
||||
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize__QName(struct soap*, char *const*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*);
|
||||
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*);
|
||||
|
||||
#ifndef soap_write__QName
|
||||
#define soap_write__QName(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize__QName(soap, data),0) || soap_put__QName(soap, data, "byte", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*);
|
||||
|
||||
#ifndef soap_read__QName
|
||||
#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef SOAP_TYPE_string
|
||||
#define SOAP_TYPE_string (4)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*);
|
||||
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*);
|
||||
|
||||
#ifndef soap_write_string
|
||||
#define soap_write_string(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_string(soap, data),0) || soap_put_string(soap, data, "byte", NULL) || soap_end_send(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*);
|
||||
|
||||
#ifndef soap_read_string
|
||||
#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error )
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/* End of envH.h */
|
||||
@@ -0,0 +1,163 @@
|
||||
/* envStub.h
|
||||
Generated by gSOAP 2.8.16 from env.h
|
||||
|
||||
Copyright(C) 2000-2013, Robert van Engelen, Genivia Inc. All Rights Reserved.
|
||||
The generated code is released under one of the following licenses:
|
||||
GPL or Genivia's license for commercial use.
|
||||
This program is released under the GPL with the additional exemption that
|
||||
compiling, linking, and/or using OpenSSL is allowed.
|
||||
*/
|
||||
|
||||
#ifndef envStub_H
|
||||
#define envStub_H
|
||||
#include "stdsoap2.h"
|
||||
#if GSOAP_VERSION != 20816
|
||||
# error "GSOAP VERSION MISMATCH IN GENERATED CODE: PLEASE REINSTALL PACKAGE"
|
||||
#endif
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
* *
|
||||
* Enumerations *
|
||||
* *
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
* *
|
||||
* Types with Custom Serializers *
|
||||
* *
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
* *
|
||||
* Classes and Structs *
|
||||
* *
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
#if 0 /* volatile type: do not declare here, declared elsewhere */
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_SOAP_ENV__Header
|
||||
#define SOAP_TYPE_SOAP_ENV__Header (7)
|
||||
/* SOAP Header: */
|
||||
struct SOAP_ENV__Header
|
||||
{
|
||||
public:
|
||||
int soap_type() const { return 7; } /* = unique id SOAP_TYPE_SOAP_ENV__Header */
|
||||
#ifdef WITH_NOEMPTYSTRUCT
|
||||
private:
|
||||
char dummy; /* dummy member to enable compilation */
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_SOAP_ENV__Code
|
||||
#define SOAP_TYPE_SOAP_ENV__Code (8)
|
||||
/* SOAP Fault Code: */
|
||||
struct SOAP_ENV__Code
|
||||
{
|
||||
public:
|
||||
char *SOAP_ENV__Value; /* optional element of type xsd:QName */
|
||||
struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */
|
||||
public:
|
||||
int soap_type() const { return 8; } /* = unique id SOAP_TYPE_SOAP_ENV__Code */
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_SOAP_ENV__Detail
|
||||
#define SOAP_TYPE_SOAP_ENV__Detail (10)
|
||||
/* SOAP-ENV:Detail */
|
||||
struct SOAP_ENV__Detail
|
||||
{
|
||||
public:
|
||||
char *__any;
|
||||
int __type; /* any type of element <fault> (defined below) */
|
||||
void *fault; /* transient */
|
||||
public:
|
||||
int soap_type() const { return 10; } /* = unique id SOAP_TYPE_SOAP_ENV__Detail */
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_SOAP_ENV__Reason
|
||||
#define SOAP_TYPE_SOAP_ENV__Reason (13)
|
||||
/* SOAP-ENV:Reason */
|
||||
struct SOAP_ENV__Reason
|
||||
{
|
||||
public:
|
||||
char *SOAP_ENV__Text; /* optional element of type xsd:string */
|
||||
public:
|
||||
int soap_type() const { return 13; } /* = unique id SOAP_TYPE_SOAP_ENV__Reason */
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_SOAP_ENV__Fault
|
||||
#define SOAP_TYPE_SOAP_ENV__Fault (14)
|
||||
/* SOAP Fault: */
|
||||
struct SOAP_ENV__Fault
|
||||
{
|
||||
public:
|
||||
char *faultcode; /* optional element of type xsd:QName */
|
||||
char *faultstring; /* optional element of type xsd:string */
|
||||
char *faultactor; /* optional element of type xsd:string */
|
||||
struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */
|
||||
struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */
|
||||
struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */
|
||||
char *SOAP_ENV__Node; /* optional element of type xsd:string */
|
||||
char *SOAP_ENV__Role; /* optional element of type xsd:string */
|
||||
struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */
|
||||
public:
|
||||
int soap_type() const { return 14; } /* = unique id SOAP_TYPE_SOAP_ENV__Fault */
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/******************************************************************************\
|
||||
* *
|
||||
* Typedefs *
|
||||
* *
|
||||
\******************************************************************************/
|
||||
|
||||
#ifndef SOAP_TYPE__QName
|
||||
#define SOAP_TYPE__QName (5)
|
||||
typedef char *_QName;
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE__XML
|
||||
#define SOAP_TYPE__XML (6)
|
||||
typedef char *_XML;
|
||||
#endif
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
* *
|
||||
* Externals *
|
||||
* *
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/* End of envStub.h */
|
||||
@@ -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,13 @@
|
||||
#ifndef __mx_groups_h__
|
||||
#define __mx_groups_h__
|
||||
|
||||
#include "vars.h"
|
||||
|
||||
|
||||
long groups_calls(CVars in, CVars &out);
|
||||
long CreateCoreGradeGroup(CVars in, CVars &out);
|
||||
long CoreGradeGroupCreateMember(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,37 @@
|
||||
#ifndef __INTERSWITCH_H__
|
||||
#define __INTERSWITCH_H__
|
||||
|
||||
#include "vars.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <ext/hash_map>
|
||||
|
||||
using namespace std;
|
||||
using namespace __gnu_cxx;
|
||||
|
||||
/*****************************************************************************/
|
||||
struct eqstr{
|
||||
bool operator()(const char* s1, const char* s2) const {
|
||||
return strcmp(s1,s2)==0;
|
||||
}
|
||||
};
|
||||
/*****************************************************************************/
|
||||
|
||||
long interswitch_config_ssl(const char *keyfile, const char *password, const char *cacert, long version);
|
||||
long interswitch_getBillers(const char *endpoint, const char *tid, int billerId, int categoryId, int channelId, const char *billerName, char *status, long(*save)(hash_map<const char*, const char*, hash<const char*>, eqstr>));
|
||||
long interswitch_getBillerPaymentItems(const char *endpoint, const char *tid, int billerId, char *status, long(*save)(const char*, hash_map<const char*, const char*, hash<const char*>, eqstr>));
|
||||
long interswitch_getBillerCategories(const char *endpoint, char *error, long(*save)(hash_map<const char*, const char*, hash<const char*>, eqstr>));
|
||||
string interswitch_getBankCodes(const char *endpoint, const char *tid, char *status);
|
||||
string interswitch_queryTransaction(const char *endpoint, const char *tid, const char *transferCode, const char *requestReference, char *status, char *transactionResponseCode);
|
||||
long interswitch_getBalance(const char *endpoint, const char *tid, const char *mkey, const char *pin, char *status);
|
||||
string interswitch_transferFunds(const char *endpoint, const char *tid, const char *mkey, const char *pin, char *error, const char *account, const char *uniqueRef, const char *bankCode, long currency, long amount ,CVars trans_info);
|
||||
string interswitch_SendBillPaymentAdvice(const char *endpoint, const char *tid, long amount, const char *paymentCode, long customerId, const char *requestReference, char *status, char *transactionRef,char *customer_mobile,char *customer_email);
|
||||
string interswitch_doTransfer(const char *endpoint, const char *tid, CVars trans_info, char *error);
|
||||
//char * interswitch_pinChange(const char *tid, const char *mkey, const char *pin, char *status);
|
||||
long interswitch_test();
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
vi:ts=2
|
||||
*/
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
#include "interswitchH.h"
|
||||
SOAP_NMAC struct Namespace interswitch_namespaces[] =
|
||||
{
|
||||
{"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://schemas.xmlsoap.org/soap/envelope/", NULL},
|
||||
{"SOAP-ENC", "http://www.w3.org/2003/05/soap-encoding", "http://www.w3.org/2003/05/soap-encoding", NULL},
|
||||
{"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL},
|
||||
{"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL},
|
||||
{"interswitch2", "http://schemas.microsoft.com/2003/10/Serialization/", NULL, NULL},
|
||||
{"interswitch", "http://services.interswitchng.com/quicktellerservice/", NULL, NULL},
|
||||
{NULL, NULL, NULL, NULL}
|
||||
};
|
||||
@@ -0,0 +1,171 @@
|
||||
/* interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h
|
||||
Generated by gSOAP 2.7.16 from QuickTellerService.h
|
||||
Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved.
|
||||
This part of the software is released under one of the following licenses:
|
||||
GPL, the gSOAP public license, or Genivia's license for commercial use.
|
||||
*/
|
||||
|
||||
#ifndef interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy_H
|
||||
#define interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy_H
|
||||
#include "interswitchH.h"
|
||||
|
||||
namespace interswitch {
|
||||
|
||||
class SOAP_CMAC BasicHttpBinding_USCOREQuickTellerServiceProxy : public soap
|
||||
{ public:
|
||||
/// Endpoint URL of service 'BasicHttpBinding_USCOREQuickTellerServiceProxy' (change as needed)
|
||||
const char *soap_endpoint;
|
||||
/// Constructor
|
||||
BasicHttpBinding_USCOREQuickTellerServiceProxy();
|
||||
/// Constructor with copy of another engine state
|
||||
BasicHttpBinding_USCOREQuickTellerServiceProxy(const struct soap&);
|
||||
/// Constructor with engine input+output mode control
|
||||
BasicHttpBinding_USCOREQuickTellerServiceProxy(soap_mode iomode);
|
||||
/// Constructor with engine input and output mode control
|
||||
BasicHttpBinding_USCOREQuickTellerServiceProxy(soap_mode imode, soap_mode omode);
|
||||
/// Destructor frees deserialized data
|
||||
virtual ~BasicHttpBinding_USCOREQuickTellerServiceProxy();
|
||||
/// Initializer used by constructors
|
||||
virtual void BasicHttpBinding_USCOREQuickTellerServiceProxy_init(soap_mode imode, soap_mode omode);
|
||||
/// Delete all deserialized data (uses soap_destroy and soap_end)
|
||||
virtual void destroy();
|
||||
/// Disables and removes SOAP Header from message
|
||||
virtual void soap_noheader();
|
||||
/// Get SOAP Fault structure (NULL when absent)
|
||||
virtual const SOAP_ENV__Fault *soap_fault();
|
||||
/// Get SOAP Fault string (NULL when absent)
|
||||
virtual const char *soap_fault_string();
|
||||
/// Get SOAP Fault detail as string (NULL when absent)
|
||||
virtual const char *soap_fault_detail();
|
||||
/// Force close connection (normally automatic, except for send_X ops)
|
||||
virtual int soap_close_socket();
|
||||
/// Print fault
|
||||
virtual void soap_print_fault(FILE*);
|
||||
#ifndef WITH_LEAN
|
||||
/// Print fault to stream
|
||||
virtual void soap_stream_fault(std::ostream&);
|
||||
/// Put fault into buffer
|
||||
virtual char *soap_sprint_fault(char *buf, size_t len);
|
||||
#endif
|
||||
|
||||
/// Web service operation 'ValidateCustomer' (returns error code or SOAP_OK)
|
||||
virtual int ValidateCustomer(_interswitch__ValidateCustomer *interswitch__ValidateCustomer, _interswitch__ValidateCustomerResponse *interswitch__ValidateCustomerResponse);
|
||||
|
||||
/// Web service operation 'DoTransfer' (returns error code or SOAP_OK)
|
||||
virtual int DoTransfer(_interswitch__DoTransfer *interswitch__DoTransfer, _interswitch__DoTransferResponse *interswitch__DoTransferResponse);
|
||||
|
||||
/// Web service operation 'CancelTransfer' (returns error code or SOAP_OK)
|
||||
virtual int CancelTransfer(_interswitch__CancelTransfer *interswitch__CancelTransfer, _interswitch__CancelTransferResponse *interswitch__CancelTransferResponse);
|
||||
|
||||
/// Web service operation 'SendSessionKey' (returns error code or SOAP_OK)
|
||||
virtual int SendSessionKey(_interswitch__SendSessionKey *interswitch__SendSessionKey, _interswitch__SendSessionKeyResponse *interswitch__SendSessionKeyResponse);
|
||||
|
||||
/// Web service operation 'QueryTransfer' (returns error code or SOAP_OK)
|
||||
virtual int QueryTransfer(_interswitch__QueryTransfer *interswitch__QueryTransfer, _interswitch__QueryTransferResponse *interswitch__QueryTransferResponse);
|
||||
|
||||
/// Web service operation 'AuthoriseCashOut' (returns error code or SOAP_OK)
|
||||
virtual int AuthoriseCashOut(_interswitch__AuthoriseCashOut *interswitch__AuthoriseCashOut, _interswitch__AuthoriseCashOutResponse *interswitch__AuthoriseCashOutResponse);
|
||||
|
||||
/// Web service operation 'AuthoriseAccountCashOut' (returns error code or SOAP_OK)
|
||||
virtual int AuthoriseAccountCashOut(_interswitch__AuthoriseAccountCashOut *interswitch__AuthoriseAccountCashOut, _interswitch__AuthoriseAccountCashOutResponse *interswitch__AuthoriseAccountCashOutResponse);
|
||||
|
||||
/// Web service operation 'ReverseCashOut' (returns error code or SOAP_OK)
|
||||
virtual int ReverseCashOut(_interswitch__ReverseCashOut *interswitch__ReverseCashOut, _interswitch__ReverseCashOutResponse *interswitch__ReverseCashOutResponse);
|
||||
|
||||
/// Web service operation 'StatusCheck' (returns error code or SOAP_OK)
|
||||
virtual int StatusCheck(_interswitch__StatusCheck *interswitch__StatusCheck, _interswitch__StatusCheckResponse *interswitch__StatusCheckResponse);
|
||||
|
||||
/// Web service operation 'QueryTransaction' (returns error code or SOAP_OK)
|
||||
virtual int QueryTransaction(_interswitch__QueryTransaction *interswitch__QueryTransaction, _interswitch__QueryTransactionResponse *interswitch__QueryTransactionResponse);
|
||||
|
||||
/// Web service operation 'GetSystemSettings' (returns error code or SOAP_OK)
|
||||
virtual int GetSystemSettings(_interswitch__GetSystemSettings *interswitch__GetSystemSettings, _interswitch__GetSystemSettingsResponse *interswitch__GetSystemSettingsResponse);
|
||||
|
||||
/// Web service operation 'CreateUser' (returns error code or SOAP_OK)
|
||||
virtual int CreateUser(_interswitch__CreateUser *interswitch__CreateUser, _interswitch__CreateUserResponse *interswitch__CreateUserResponse);
|
||||
|
||||
/// Web service operation 'ActivateUser' (returns error code or SOAP_OK)
|
||||
virtual int ActivateUser(_interswitch__ActivateUser *interswitch__ActivateUser, _interswitch__ActivateUserResponse *interswitch__ActivateUserResponse);
|
||||
|
||||
/// Web service operation 'UpdateUser' (returns error code or SOAP_OK)
|
||||
virtual int UpdateUser(_interswitch__UpdateUser *interswitch__UpdateUser, _interswitch__UpdateUserResponse *interswitch__UpdateUserResponse);
|
||||
|
||||
/// Web service operation 'ChangePassword' (returns error code or SOAP_OK)
|
||||
virtual int ChangePassword(_interswitch__ChangePassword *interswitch__ChangePassword, _interswitch__ChangePasswordResponse *interswitch__ChangePasswordResponse);
|
||||
|
||||
/// Web service operation 'ResetPassword' (returns error code or SOAP_OK)
|
||||
virtual int ResetPassword(_interswitch__ResetPassword *interswitch__ResetPassword, _interswitch__ResetPasswordResponse *interswitch__ResetPasswordResponse);
|
||||
|
||||
/// Web service operation 'AuthenticateUser' (returns error code or SOAP_OK)
|
||||
virtual int AuthenticateUser(_interswitch__AuthenticateUser *interswitch__AuthenticateUser, _interswitch__AuthenticateUserResponse *interswitch__AuthenticateUserResponse);
|
||||
|
||||
/// Web service operation 'AuthenticateUserSecurityToken' (returns error code or SOAP_OK)
|
||||
virtual int AuthenticateUserSecurityToken(_interswitch__AuthenticateUserSecurityToken *interswitch__AuthenticateUserSecurityToken, _interswitch__AuthenticateUserSecurityTokenResponse *interswitch__AuthenticateUserSecurityTokenResponse);
|
||||
|
||||
/// Web service operation 'GetUser' (returns error code or SOAP_OK)
|
||||
virtual int GetUser(_interswitch__GetUser *interswitch__GetUser, _interswitch__GetUserResponse *interswitch__GetUserResponse);
|
||||
|
||||
/// Web service operation 'GetBillers' (returns error code or SOAP_OK)
|
||||
virtual int GetBillers(_interswitch__GetBillers *interswitch__GetBillers, _interswitch__GetBillersResponse *interswitch__GetBillersResponse);
|
||||
|
||||
/// Web service operation 'GetLatestBillers' (returns error code or SOAP_OK)
|
||||
virtual int GetLatestBillers(_interswitch__GetLatestBillers *interswitch__GetLatestBillers, _interswitch__GetLatestBillersResponse *interswitch__GetLatestBillersResponse);
|
||||
|
||||
/// Web service operation 'GetFeaturedBillers' (returns error code or SOAP_OK)
|
||||
virtual int GetFeaturedBillers(_interswitch__GetFeaturedBillers *interswitch__GetFeaturedBillers, _interswitch__GetFeaturedBillersResponse *interswitch__GetFeaturedBillersResponse);
|
||||
|
||||
/// Web service operation 'GetBillerPaymentItems' (returns error code or SOAP_OK)
|
||||
virtual int GetBillerPaymentItems(_interswitch__GetBillerPaymentItems *interswitch__GetBillerPaymentItems, _interswitch__GetBillerPaymentItemsResponse *interswitch__GetBillerPaymentItemsResponse);
|
||||
|
||||
/// Web service operation 'GetBillerCategories' (returns error code or SOAP_OK)
|
||||
virtual int GetBillerCategories(_interswitch__GetBillerCategories *interswitch__GetBillerCategories, _interswitch__GetBillerCategoriesResponse *interswitch__GetBillerCategoriesResponse);
|
||||
|
||||
/// Web service operation 'DoBillPaymentInquiry' (returns error code or SOAP_OK)
|
||||
virtual int DoBillPaymentInquiry(_interswitch__DoBillPaymentInquiry *interswitch__DoBillPaymentInquiry, _interswitch__DoBillPaymentInquiryResponse *interswitch__DoBillPaymentInquiryResponse);
|
||||
|
||||
/// Web service operation 'AuthenticateCustomer' (returns error code or SOAP_OK)
|
||||
virtual int AuthenticateCustomer(_interswitch__AuthenticateCustomer *interswitch__AuthenticateCustomer, _interswitch__AuthenticateCustomerResponse *interswitch__AuthenticateCustomerResponse);
|
||||
|
||||
/// Web service operation 'SendBillPaymentAdvice' (returns error code or SOAP_OK)
|
||||
virtual int SendBillPaymentAdvice(_interswitch__SendBillPaymentAdvice *interswitch__SendBillPaymentAdvice, _interswitch__SendBillPaymentAdviceResponse *interswitch__SendBillPaymentAdviceResponse);
|
||||
|
||||
/// Web service operation 'SendPayments' (returns error code or SOAP_OK)
|
||||
virtual int SendPayments(_interswitch__SendPayments *interswitch__SendPayments, _interswitch__SendPaymentsResponse *interswitch__SendPaymentsResponse);
|
||||
|
||||
/// Web service operation 'AddCustomerBillerAccount' (returns error code or SOAP_OK)
|
||||
virtual int AddCustomerBillerAccount(_interswitch__AddCustomerBillerAccount *interswitch__AddCustomerBillerAccount, _interswitch__AddCustomerBillerAccountResponse *interswitch__AddCustomerBillerAccountResponse);
|
||||
|
||||
/// Web service operation 'GetCustomerBillerAccounts' (returns error code or SOAP_OK)
|
||||
virtual int GetCustomerBillerAccounts(_interswitch__GetCustomerBillerAccounts *interswitch__GetCustomerBillerAccounts, _interswitch__GetCustomerBillerAccountsResponse *interswitch__GetCustomerBillerAccountsResponse);
|
||||
|
||||
/// Web service operation 'GetCustomerPayments' (returns error code or SOAP_OK)
|
||||
virtual int GetCustomerPayments(_interswitch__GetCustomerPayments *interswitch__GetCustomerPayments, _interswitch__GetCustomerPaymentsResponse *interswitch__GetCustomerPaymentsResponse);
|
||||
|
||||
/// Web service operation 'AddBillerCustomer' (returns error code or SOAP_OK)
|
||||
virtual int AddBillerCustomer(_interswitch__AddBillerCustomer *interswitch__AddBillerCustomer, _interswitch__AddBillerCustomerResponse *interswitch__AddBillerCustomerResponse);
|
||||
|
||||
/// Web service operation 'GetCollectionsAccount' (returns error code or SOAP_OK)
|
||||
virtual int GetCollectionsAccount(_interswitch__GetCollectionsAccount *interswitch__GetCollectionsAccount, _interswitch__GetCollectionsAccountResponse *interswitch__GetCollectionsAccountResponse);
|
||||
|
||||
/// Web service operation 'GetBillersCollectionsAccount' (returns error code or SOAP_OK)
|
||||
virtual int GetBillersCollectionsAccount(_interswitch__GetBillersCollectionsAccount *interswitch__GetBillersCollectionsAccount, _interswitch__GetBillersCollectionsAccountResponse *interswitch__GetBillersCollectionsAccountResponse);
|
||||
|
||||
/// Web service operation 'EditCustomerBillerAccount' (returns error code or SOAP_OK)
|
||||
virtual int EditCustomerBillerAccount(_interswitch__EditCustomerBillerAccount *interswitch__EditCustomerBillerAccount, _interswitch__EditCustomerBillerAccountResponse *interswitch__EditCustomerBillerAccountResponse);
|
||||
|
||||
/// Web service operation 'ResendActivationToken' (returns error code or SOAP_OK)
|
||||
virtual int ResendActivationToken(_interswitch__ResendActivationToken *interswitch__ResendActivationToken, _interswitch__ResendActivationTokenResponse *interswitch__ResendActivationTokenResponse);
|
||||
|
||||
/// Web service operation 'DoCustomProcessing' (returns error code or SOAP_OK)
|
||||
virtual int DoCustomProcessing(_interswitch__DoCustomProcessing *interswitch__DoCustomProcessing, _interswitch__DoCustomProcessingResponse *interswitch__DoCustomProcessingResponse);
|
||||
|
||||
/// Web service operation 'CreateBiller' (returns error code or SOAP_OK)
|
||||
virtual int CreateBiller(_interswitch__CreateBiller *interswitch__CreateBiller, _interswitch__CreateBillerResponse *interswitch__CreateBillerResponse);
|
||||
|
||||
/// Web service operation 'VerifyBiller' (returns error code or SOAP_OK)
|
||||
virtual int VerifyBiller(_interswitch__VerifyBiller *interswitch__VerifyBiller, _interswitch__VerifyBillerResponse *interswitch__VerifyBillerResponse);
|
||||
};
|
||||
|
||||
} // namespace interswitch
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,28 @@
|
||||
#ifndef __INTERSITCH_SENDMONEY_H__
|
||||
#define __INTERSITCH_SENDMONEY_H__
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "vars.h"
|
||||
#include "interswitch.h"
|
||||
|
||||
extern "C" {
|
||||
|
||||
long INTW_configure(CVars in, CVars &out);
|
||||
long INTW_getBillersSave(hash_map<const char*, const char*, hash<const char*>, eqstr> saveData);
|
||||
long INTW_getBillers(CVars in, CVars &out);
|
||||
long INTW_getSaveGeneric(const char *table, hash_map<const char*, const char*, hash<const char*>, eqstr> saveData);
|
||||
long INTW_getBillerPaymentItems(CVars in, CVars &out);
|
||||
long INTW_getBillerCategories(CVars in, CVars &out );
|
||||
long INTW_sendBillPaymentAdvice(CVars in, CVars &out );
|
||||
long INTW_doTransfer(CVars in, CVars &out );
|
||||
long INTW_queryTransaction(CVars in, CVars &out );
|
||||
long INTW_doServiceTransfer(CVars in, CVars &out );
|
||||
long do_transferPayment(CVars pm);
|
||||
long INTW_querySendMoneyTransaction(CVars in, CVars &out);
|
||||
long INTW_doCompleteSavedTransfer(CVars in, CVars &out);
|
||||
|
||||
|
||||
}
|
||||
|
||||
#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,13 @@
|
||||
#ifndef __PAYLID_H__
|
||||
#define __PAYLID_H__
|
||||
|
||||
long storeface_getAccountBalance(const char *endpoint, const char *tid, const char *key, char *status);
|
||||
long storeface_transferFund(const char *endpoint, const char *tid, const char *toDestination, const char *key, char *status);
|
||||
long storeface_checkTransferStatus(const char *endpoint, const char *tid, const char *transactionRef, const char *key, char *status);
|
||||
long storeface_directAirTimeTopUp(const char *endpoint, const char *tid, const char *topupData, const char *key, char *status, long &delivery_status);
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
vi:ts=2
|
||||
*/
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
#include "paylidH.h"
|
||||
SOAP_NMAC struct Namespace paylid_namespaces[] =
|
||||
{
|
||||
{"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope", NULL},
|
||||
{"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding", NULL},
|
||||
{"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL},
|
||||
{"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL},
|
||||
{"paylid", "urn:paylidwsdl", NULL, NULL},
|
||||
{NULL, NULL, NULL, NULL}
|
||||
};
|
||||
@@ -0,0 +1,730 @@
|
||||
/* paylidH.h
|
||||
Generated by gSOAP 2.7.16 from PaylidService.h
|
||||
Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved.
|
||||
This part of the software is released under one of the following licenses:
|
||||
GPL, the gSOAP public license, or Genivia's license for commercial use.
|
||||
*/
|
||||
|
||||
#ifndef paylidH_H
|
||||
#define paylidH_H
|
||||
#include "paylidStub.h"
|
||||
|
||||
namespace paylid {
|
||||
#ifndef WITH_NOIDREF
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int);
|
||||
SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*);
|
||||
#endif
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*);
|
||||
|
||||
SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist*);
|
||||
SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*);
|
||||
|
||||
SOAP_FMAC3 void* SOAP_FMAC4 soap_container_id_forward(struct soap*, const char*, void*, size_t, int, int, size_t, unsigned int);
|
||||
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_container_insert(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_byte
|
||||
#define SOAP_TYPE_paylid_byte (3)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*);
|
||||
SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*);
|
||||
|
||||
#define soap_write_byte(soap, data) ( soap_begin_send(soap) || paylid::soap_put_byte(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*);
|
||||
|
||||
#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_int
|
||||
#define SOAP_TYPE_paylid_int (1)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*);
|
||||
SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*);
|
||||
|
||||
#define soap_write_int(soap, data) ( soap_begin_send(soap) || paylid::soap_put_int(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*);
|
||||
|
||||
#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_std__string
|
||||
#define SOAP_TYPE_paylid_std__string (9)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__string(struct soap*, std::string *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__string(struct soap*, const std::string *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__string(struct soap*, const char*, int, const std::string*, const char*);
|
||||
SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_std__string(struct soap*, const char*, std::string*, const char*);
|
||||
|
||||
#define soap_write_std__string(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__string(struct soap*, const std::string *, const char*, const char*);
|
||||
|
||||
#define soap_read_std__string(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_std__string(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_std__string(struct soap*, std::string *, const char*, const char*);
|
||||
|
||||
#define soap_new_std__string(soap, n) soap_instantiate_std__string(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_std__string(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 std::string * SOAP_FMAC2 soap_instantiate_std__string(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_std__string(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_SOAP_ENV__Fault
|
||||
#define SOAP_TYPE_paylid_SOAP_ENV__Fault (48)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*);
|
||||
|
||||
#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Fault(soap, data), 0) || paylid::soap_put_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*);
|
||||
|
||||
#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*);
|
||||
|
||||
#define soap_new_SOAP_ENV__Fault(soap, n) soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_SOAP_ENV__Fault(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_SOAP_ENV__Reason
|
||||
#define SOAP_TYPE_paylid_SOAP_ENV__Reason (47)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*);
|
||||
|
||||
#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Reason(soap, data), 0) || paylid::soap_put_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*);
|
||||
|
||||
#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*);
|
||||
|
||||
#define soap_new_SOAP_ENV__Reason(soap, n) soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_SOAP_ENV__Reason(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_SOAP_ENV__Detail
|
||||
#define SOAP_TYPE_paylid_SOAP_ENV__Detail (44)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*);
|
||||
|
||||
#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Detail(soap, data), 0) || paylid::soap_put_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*);
|
||||
|
||||
#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*);
|
||||
|
||||
#define soap_new_SOAP_ENV__Detail(soap, n) soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_SOAP_ENV__Detail(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_SOAP_ENV__Code
|
||||
#define SOAP_TYPE_paylid_SOAP_ENV__Code (42)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*);
|
||||
|
||||
#define soap_write_SOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Code(soap, data), 0) || paylid::soap_put_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*);
|
||||
|
||||
#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*);
|
||||
|
||||
#define soap_new_SOAP_ENV__Code(soap, n) soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_SOAP_ENV__Code(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_SOAP_ENV__Header
|
||||
#define SOAP_TYPE_paylid_SOAP_ENV__Header (41)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*);
|
||||
|
||||
#define soap_write_SOAP_ENV__Header(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Header(soap, data), 0) || paylid::soap_put_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*);
|
||||
|
||||
#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*);
|
||||
|
||||
#define soap_new_SOAP_ENV__Header(soap, n) soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_SOAP_ENV__Header(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanks
|
||||
#define SOAP_TYPE_paylid_paylid__getSupportedBanks (40)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getSupportedBanks(struct soap*, struct paylid__getSupportedBanks *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getSupportedBanks(struct soap*, const struct paylid__getSupportedBanks *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getSupportedBanks(struct soap*, const char*, int, const struct paylid__getSupportedBanks *, const char*);
|
||||
SOAP_FMAC3 struct paylid__getSupportedBanks * SOAP_FMAC4 soap_in_paylid__getSupportedBanks(struct soap*, const char*, struct paylid__getSupportedBanks *, const char*);
|
||||
|
||||
#define soap_write_paylid__getSupportedBanks(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getSupportedBanks(soap, data), 0) || paylid::soap_put_paylid__getSupportedBanks(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getSupportedBanks(struct soap*, const struct paylid__getSupportedBanks *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__getSupportedBanks(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getSupportedBanks(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__getSupportedBanks * SOAP_FMAC4 soap_get_paylid__getSupportedBanks(struct soap*, struct paylid__getSupportedBanks *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__getSupportedBanks(soap, n) soap_instantiate_paylid__getSupportedBanks(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__getSupportedBanks(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__getSupportedBanks * SOAP_FMAC2 soap_instantiate_paylid__getSupportedBanks(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getSupportedBanks(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanksResponse
|
||||
#define SOAP_TYPE_paylid_paylid__getSupportedBanksResponse (37)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getSupportedBanksResponse(struct soap*, struct paylid__getSupportedBanksResponse *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getSupportedBanksResponse(struct soap*, const struct paylid__getSupportedBanksResponse *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getSupportedBanksResponse(struct soap*, const char*, int, const struct paylid__getSupportedBanksResponse *, const char*);
|
||||
SOAP_FMAC3 struct paylid__getSupportedBanksResponse * SOAP_FMAC4 soap_in_paylid__getSupportedBanksResponse(struct soap*, const char*, struct paylid__getSupportedBanksResponse *, const char*);
|
||||
|
||||
#define soap_write_paylid__getSupportedBanksResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getSupportedBanksResponse(soap, data), 0) || paylid::soap_put_paylid__getSupportedBanksResponse(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getSupportedBanksResponse(struct soap*, const struct paylid__getSupportedBanksResponse *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__getSupportedBanksResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getSupportedBanksResponse(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__getSupportedBanksResponse * SOAP_FMAC4 soap_get_paylid__getSupportedBanksResponse(struct soap*, struct paylid__getSupportedBanksResponse *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__getSupportedBanksResponse(soap, n) soap_instantiate_paylid__getSupportedBanksResponse(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__getSupportedBanksResponse(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__getSupportedBanksResponse * SOAP_FMAC2 soap_instantiate_paylid__getSupportedBanksResponse(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getSupportedBanksResponse(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getTrxStatus
|
||||
#define SOAP_TYPE_paylid_paylid__getTrxStatus (36)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getTrxStatus(struct soap*, struct paylid__getTrxStatus *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getTrxStatus(struct soap*, const struct paylid__getTrxStatus *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getTrxStatus(struct soap*, const char*, int, const struct paylid__getTrxStatus *, const char*);
|
||||
SOAP_FMAC3 struct paylid__getTrxStatus * SOAP_FMAC4 soap_in_paylid__getTrxStatus(struct soap*, const char*, struct paylid__getTrxStatus *, const char*);
|
||||
|
||||
#define soap_write_paylid__getTrxStatus(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getTrxStatus(soap, data), 0) || paylid::soap_put_paylid__getTrxStatus(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getTrxStatus(struct soap*, const struct paylid__getTrxStatus *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__getTrxStatus(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getTrxStatus(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__getTrxStatus * SOAP_FMAC4 soap_get_paylid__getTrxStatus(struct soap*, struct paylid__getTrxStatus *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__getTrxStatus(soap, n) soap_instantiate_paylid__getTrxStatus(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__getTrxStatus(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__getTrxStatus * SOAP_FMAC2 soap_instantiate_paylid__getTrxStatus(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getTrxStatus(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getTrxStatusResponse
|
||||
#define SOAP_TYPE_paylid_paylid__getTrxStatusResponse (33)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getTrxStatusResponse(struct soap*, struct paylid__getTrxStatusResponse *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getTrxStatusResponse(struct soap*, const struct paylid__getTrxStatusResponse *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getTrxStatusResponse(struct soap*, const char*, int, const struct paylid__getTrxStatusResponse *, const char*);
|
||||
SOAP_FMAC3 struct paylid__getTrxStatusResponse * SOAP_FMAC4 soap_in_paylid__getTrxStatusResponse(struct soap*, const char*, struct paylid__getTrxStatusResponse *, const char*);
|
||||
|
||||
#define soap_write_paylid__getTrxStatusResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getTrxStatusResponse(soap, data), 0) || paylid::soap_put_paylid__getTrxStatusResponse(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getTrxStatusResponse(struct soap*, const struct paylid__getTrxStatusResponse *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__getTrxStatusResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getTrxStatusResponse(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__getTrxStatusResponse * SOAP_FMAC4 soap_get_paylid__getTrxStatusResponse(struct soap*, struct paylid__getTrxStatusResponse *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__getTrxStatusResponse(soap, n) soap_instantiate_paylid__getTrxStatusResponse(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__getTrxStatusResponse(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__getTrxStatusResponse * SOAP_FMAC2 soap_instantiate_paylid__getTrxStatusResponse(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getTrxStatusResponse(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getAccount
|
||||
#define SOAP_TYPE_paylid_paylid__getAccount (32)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccount(struct soap*, struct paylid__getAccount *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccount(struct soap*, const struct paylid__getAccount *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccount(struct soap*, const char*, int, const struct paylid__getAccount *, const char*);
|
||||
SOAP_FMAC3 struct paylid__getAccount * SOAP_FMAC4 soap_in_paylid__getAccount(struct soap*, const char*, struct paylid__getAccount *, const char*);
|
||||
|
||||
#define soap_write_paylid__getAccount(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccount(soap, data), 0) || paylid::soap_put_paylid__getAccount(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccount(struct soap*, const struct paylid__getAccount *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__getAccount(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccount(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__getAccount * SOAP_FMAC4 soap_get_paylid__getAccount(struct soap*, struct paylid__getAccount *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__getAccount(soap, n) soap_instantiate_paylid__getAccount(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__getAccount(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__getAccount * SOAP_FMAC2 soap_instantiate_paylid__getAccount(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccount(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getAccountResponse
|
||||
#define SOAP_TYPE_paylid_paylid__getAccountResponse (29)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountResponse(struct soap*, struct paylid__getAccountResponse *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountResponse(struct soap*, const struct paylid__getAccountResponse *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountResponse(struct soap*, const char*, int, const struct paylid__getAccountResponse *, const char*);
|
||||
SOAP_FMAC3 struct paylid__getAccountResponse * SOAP_FMAC4 soap_in_paylid__getAccountResponse(struct soap*, const char*, struct paylid__getAccountResponse *, const char*);
|
||||
|
||||
#define soap_write_paylid__getAccountResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccountResponse(soap, data), 0) || paylid::soap_put_paylid__getAccountResponse(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountResponse(struct soap*, const struct paylid__getAccountResponse *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__getAccountResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__getAccountResponse * SOAP_FMAC4 soap_get_paylid__getAccountResponse(struct soap*, struct paylid__getAccountResponse *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__getAccountResponse(soap, n) soap_instantiate_paylid__getAccountResponse(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__getAccountResponse(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__getAccountResponse * SOAP_FMAC2 soap_instantiate_paylid__getAccountResponse(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountResponse(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__currentXrate
|
||||
#define SOAP_TYPE_paylid_paylid__currentXrate (28)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__currentXrate(struct soap*, struct paylid__currentXrate *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__currentXrate(struct soap*, const struct paylid__currentXrate *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__currentXrate(struct soap*, const char*, int, const struct paylid__currentXrate *, const char*);
|
||||
SOAP_FMAC3 struct paylid__currentXrate * SOAP_FMAC4 soap_in_paylid__currentXrate(struct soap*, const char*, struct paylid__currentXrate *, const char*);
|
||||
|
||||
#define soap_write_paylid__currentXrate(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__currentXrate(soap, data), 0) || paylid::soap_put_paylid__currentXrate(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__currentXrate(struct soap*, const struct paylid__currentXrate *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__currentXrate(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__currentXrate(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__currentXrate * SOAP_FMAC4 soap_get_paylid__currentXrate(struct soap*, struct paylid__currentXrate *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__currentXrate(soap, n) soap_instantiate_paylid__currentXrate(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__currentXrate(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__currentXrate * SOAP_FMAC2 soap_instantiate_paylid__currentXrate(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__currentXrate(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__currentXrateResponse
|
||||
#define SOAP_TYPE_paylid_paylid__currentXrateResponse (25)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__currentXrateResponse(struct soap*, struct paylid__currentXrateResponse *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__currentXrateResponse(struct soap*, const struct paylid__currentXrateResponse *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__currentXrateResponse(struct soap*, const char*, int, const struct paylid__currentXrateResponse *, const char*);
|
||||
SOAP_FMAC3 struct paylid__currentXrateResponse * SOAP_FMAC4 soap_in_paylid__currentXrateResponse(struct soap*, const char*, struct paylid__currentXrateResponse *, const char*);
|
||||
|
||||
#define soap_write_paylid__currentXrateResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__currentXrateResponse(soap, data), 0) || paylid::soap_put_paylid__currentXrateResponse(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__currentXrateResponse(struct soap*, const struct paylid__currentXrateResponse *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__currentXrateResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__currentXrateResponse(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__currentXrateResponse * SOAP_FMAC4 soap_get_paylid__currentXrateResponse(struct soap*, struct paylid__currentXrateResponse *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__currentXrateResponse(soap, n) soap_instantiate_paylid__currentXrateResponse(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__currentXrateResponse(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__currentXrateResponse * SOAP_FMAC2 soap_instantiate_paylid__currentXrateResponse(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__currentXrateResponse(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUp
|
||||
#define SOAP_TYPE_paylid_paylid__directAirTimeTopUp (24)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__directAirTimeTopUp(struct soap*, struct paylid__directAirTimeTopUp *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__directAirTimeTopUp(struct soap*, const struct paylid__directAirTimeTopUp *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__directAirTimeTopUp(struct soap*, const char*, int, const struct paylid__directAirTimeTopUp *, const char*);
|
||||
SOAP_FMAC3 struct paylid__directAirTimeTopUp * SOAP_FMAC4 soap_in_paylid__directAirTimeTopUp(struct soap*, const char*, struct paylid__directAirTimeTopUp *, const char*);
|
||||
|
||||
#define soap_write_paylid__directAirTimeTopUp(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__directAirTimeTopUp(soap, data), 0) || paylid::soap_put_paylid__directAirTimeTopUp(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__directAirTimeTopUp(struct soap*, const struct paylid__directAirTimeTopUp *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__directAirTimeTopUp(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__directAirTimeTopUp(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__directAirTimeTopUp * SOAP_FMAC4 soap_get_paylid__directAirTimeTopUp(struct soap*, struct paylid__directAirTimeTopUp *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__directAirTimeTopUp(soap, n) soap_instantiate_paylid__directAirTimeTopUp(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__directAirTimeTopUp(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__directAirTimeTopUp * SOAP_FMAC2 soap_instantiate_paylid__directAirTimeTopUp(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__directAirTimeTopUp(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse
|
||||
#define SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse (21)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__directAirTimeTopUpResponse(struct soap*, struct paylid__directAirTimeTopUpResponse *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__directAirTimeTopUpResponse(struct soap*, const struct paylid__directAirTimeTopUpResponse *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__directAirTimeTopUpResponse(struct soap*, const char*, int, const struct paylid__directAirTimeTopUpResponse *, const char*);
|
||||
SOAP_FMAC3 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC4 soap_in_paylid__directAirTimeTopUpResponse(struct soap*, const char*, struct paylid__directAirTimeTopUpResponse *, const char*);
|
||||
|
||||
#define soap_write_paylid__directAirTimeTopUpResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__directAirTimeTopUpResponse(soap, data), 0) || paylid::soap_put_paylid__directAirTimeTopUpResponse(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__directAirTimeTopUpResponse(struct soap*, const struct paylid__directAirTimeTopUpResponse *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__directAirTimeTopUpResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__directAirTimeTopUpResponse(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC4 soap_get_paylid__directAirTimeTopUpResponse(struct soap*, struct paylid__directAirTimeTopUpResponse *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__directAirTimeTopUpResponse(soap, n) soap_instantiate_paylid__directAirTimeTopUpResponse(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__directAirTimeTopUpResponse(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC2 soap_instantiate_paylid__directAirTimeTopUpResponse(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__directAirTimeTopUpResponse(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatus
|
||||
#define SOAP_TYPE_paylid_paylid__checkTransferStatus (20)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__checkTransferStatus(struct soap*, struct paylid__checkTransferStatus *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__checkTransferStatus(struct soap*, const struct paylid__checkTransferStatus *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__checkTransferStatus(struct soap*, const char*, int, const struct paylid__checkTransferStatus *, const char*);
|
||||
SOAP_FMAC3 struct paylid__checkTransferStatus * SOAP_FMAC4 soap_in_paylid__checkTransferStatus(struct soap*, const char*, struct paylid__checkTransferStatus *, const char*);
|
||||
|
||||
#define soap_write_paylid__checkTransferStatus(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__checkTransferStatus(soap, data), 0) || paylid::soap_put_paylid__checkTransferStatus(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__checkTransferStatus(struct soap*, const struct paylid__checkTransferStatus *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__checkTransferStatus(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__checkTransferStatus(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__checkTransferStatus * SOAP_FMAC4 soap_get_paylid__checkTransferStatus(struct soap*, struct paylid__checkTransferStatus *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__checkTransferStatus(soap, n) soap_instantiate_paylid__checkTransferStatus(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__checkTransferStatus(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__checkTransferStatus * SOAP_FMAC2 soap_instantiate_paylid__checkTransferStatus(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__checkTransferStatus(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatusResponse
|
||||
#define SOAP_TYPE_paylid_paylid__checkTransferStatusResponse (17)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__checkTransferStatusResponse(struct soap*, struct paylid__checkTransferStatusResponse *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__checkTransferStatusResponse(struct soap*, const struct paylid__checkTransferStatusResponse *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__checkTransferStatusResponse(struct soap*, const char*, int, const struct paylid__checkTransferStatusResponse *, const char*);
|
||||
SOAP_FMAC3 struct paylid__checkTransferStatusResponse * SOAP_FMAC4 soap_in_paylid__checkTransferStatusResponse(struct soap*, const char*, struct paylid__checkTransferStatusResponse *, const char*);
|
||||
|
||||
#define soap_write_paylid__checkTransferStatusResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__checkTransferStatusResponse(soap, data), 0) || paylid::soap_put_paylid__checkTransferStatusResponse(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__checkTransferStatusResponse(struct soap*, const struct paylid__checkTransferStatusResponse *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__checkTransferStatusResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__checkTransferStatusResponse(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__checkTransferStatusResponse * SOAP_FMAC4 soap_get_paylid__checkTransferStatusResponse(struct soap*, struct paylid__checkTransferStatusResponse *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__checkTransferStatusResponse(soap, n) soap_instantiate_paylid__checkTransferStatusResponse(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__checkTransferStatusResponse(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__checkTransferStatusResponse * SOAP_FMAC2 soap_instantiate_paylid__checkTransferStatusResponse(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__checkTransferStatusResponse(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__transferFund
|
||||
#define SOAP_TYPE_paylid_paylid__transferFund (16)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__transferFund(struct soap*, struct paylid__transferFund *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__transferFund(struct soap*, const struct paylid__transferFund *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__transferFund(struct soap*, const char*, int, const struct paylid__transferFund *, const char*);
|
||||
SOAP_FMAC3 struct paylid__transferFund * SOAP_FMAC4 soap_in_paylid__transferFund(struct soap*, const char*, struct paylid__transferFund *, const char*);
|
||||
|
||||
#define soap_write_paylid__transferFund(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__transferFund(soap, data), 0) || paylid::soap_put_paylid__transferFund(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__transferFund(struct soap*, const struct paylid__transferFund *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__transferFund(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__transferFund(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__transferFund * SOAP_FMAC4 soap_get_paylid__transferFund(struct soap*, struct paylid__transferFund *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__transferFund(soap, n) soap_instantiate_paylid__transferFund(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__transferFund(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__transferFund * SOAP_FMAC2 soap_instantiate_paylid__transferFund(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__transferFund(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__transferFundResponse
|
||||
#define SOAP_TYPE_paylid_paylid__transferFundResponse (13)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__transferFundResponse(struct soap*, struct paylid__transferFundResponse *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__transferFundResponse(struct soap*, const struct paylid__transferFundResponse *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__transferFundResponse(struct soap*, const char*, int, const struct paylid__transferFundResponse *, const char*);
|
||||
SOAP_FMAC3 struct paylid__transferFundResponse * SOAP_FMAC4 soap_in_paylid__transferFundResponse(struct soap*, const char*, struct paylid__transferFundResponse *, const char*);
|
||||
|
||||
#define soap_write_paylid__transferFundResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__transferFundResponse(soap, data), 0) || paylid::soap_put_paylid__transferFundResponse(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__transferFundResponse(struct soap*, const struct paylid__transferFundResponse *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__transferFundResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__transferFundResponse(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__transferFundResponse * SOAP_FMAC4 soap_get_paylid__transferFundResponse(struct soap*, struct paylid__transferFundResponse *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__transferFundResponse(soap, n) soap_instantiate_paylid__transferFundResponse(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__transferFundResponse(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__transferFundResponse * SOAP_FMAC2 soap_instantiate_paylid__transferFundResponse(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__transferFundResponse(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getAccountBalance
|
||||
#define SOAP_TYPE_paylid_paylid__getAccountBalance (12)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountBalance(struct soap*, struct paylid__getAccountBalance *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountBalance(struct soap*, const struct paylid__getAccountBalance *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountBalance(struct soap*, const char*, int, const struct paylid__getAccountBalance *, const char*);
|
||||
SOAP_FMAC3 struct paylid__getAccountBalance * SOAP_FMAC4 soap_in_paylid__getAccountBalance(struct soap*, const char*, struct paylid__getAccountBalance *, const char*);
|
||||
|
||||
#define soap_write_paylid__getAccountBalance(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccountBalance(soap, data), 0) || paylid::soap_put_paylid__getAccountBalance(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountBalance(struct soap*, const struct paylid__getAccountBalance *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__getAccountBalance(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccountBalance(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__getAccountBalance * SOAP_FMAC4 soap_get_paylid__getAccountBalance(struct soap*, struct paylid__getAccountBalance *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__getAccountBalance(soap, n) soap_instantiate_paylid__getAccountBalance(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__getAccountBalance(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__getAccountBalance * SOAP_FMAC2 soap_instantiate_paylid__getAccountBalance(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountBalance(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getAccountBalanceResponse
|
||||
#define SOAP_TYPE_paylid_paylid__getAccountBalanceResponse (8)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountBalanceResponse(struct soap*, struct paylid__getAccountBalanceResponse *);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountBalanceResponse(struct soap*, const struct paylid__getAccountBalanceResponse *);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountBalanceResponse(struct soap*, const char*, int, const struct paylid__getAccountBalanceResponse *, const char*);
|
||||
SOAP_FMAC3 struct paylid__getAccountBalanceResponse * SOAP_FMAC4 soap_in_paylid__getAccountBalanceResponse(struct soap*, const char*, struct paylid__getAccountBalanceResponse *, const char*);
|
||||
|
||||
#define soap_write_paylid__getAccountBalanceResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccountBalanceResponse(soap, data), 0) || paylid::soap_put_paylid__getAccountBalanceResponse(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountBalanceResponse(struct soap*, const struct paylid__getAccountBalanceResponse *, const char*, const char*);
|
||||
|
||||
#define soap_read_paylid__getAccountBalanceResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccountBalanceResponse(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct paylid__getAccountBalanceResponse * SOAP_FMAC4 soap_get_paylid__getAccountBalanceResponse(struct soap*, struct paylid__getAccountBalanceResponse *, const char*, const char*);
|
||||
|
||||
#define soap_new_paylid__getAccountBalanceResponse(soap, n) soap_instantiate_paylid__getAccountBalanceResponse(soap, n, NULL, NULL, NULL)
|
||||
|
||||
|
||||
#define soap_delete_paylid__getAccountBalanceResponse(soap, p) soap_delete(soap, p)
|
||||
|
||||
SOAP_FMAC1 struct paylid__getAccountBalanceResponse * SOAP_FMAC2 soap_instantiate_paylid__getAccountBalanceResponse(struct soap*, int, const char*, const char*, size_t*);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountBalanceResponse(struct soap*, int, int, void*, size_t, const void*, size_t);
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_PointerToSOAP_ENV__Reason
|
||||
#define SOAP_TYPE_paylid_PointerToSOAP_ENV__Reason (50)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*);
|
||||
|
||||
#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_PointerToSOAP_ENV__Reason(soap, data), 0) || paylid::soap_put_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*);
|
||||
|
||||
#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_PointerToSOAP_ENV__Detail
|
||||
#define SOAP_TYPE_paylid_PointerToSOAP_ENV__Detail (49)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*);
|
||||
|
||||
#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_PointerToSOAP_ENV__Detail(soap, data), 0) || paylid::soap_put_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*);
|
||||
|
||||
#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef WITH_NOGLOBAL
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_PointerToSOAP_ENV__Code
|
||||
#define SOAP_TYPE_paylid_PointerToSOAP_ENV__Code (43)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *);
|
||||
SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*);
|
||||
|
||||
#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_PointerToSOAP_ENV__Code(soap, data), 0) || paylid::soap_put_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*);
|
||||
|
||||
#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid__QName
|
||||
#define SOAP_TYPE_paylid__QName (5)
|
||||
#endif
|
||||
|
||||
#define soap_default__QName(soap, a) soap_default_string(soap, a)
|
||||
|
||||
|
||||
#define soap_serialize__QName(soap, a) soap_serialize_string(soap, a)
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*);
|
||||
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*);
|
||||
|
||||
#define soap_write__QName(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize__QName(soap, data), 0) || paylid::soap_put__QName(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*);
|
||||
|
||||
#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*);
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_string
|
||||
#define SOAP_TYPE_paylid_string (4)
|
||||
#endif
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **);
|
||||
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*);
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*);
|
||||
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*);
|
||||
|
||||
#define soap_write_string(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_string(soap, data), 0) || paylid::soap_put_string(soap, data, NULL, NULL) || soap_end_send(soap) )
|
||||
|
||||
SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*);
|
||||
|
||||
#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap) )
|
||||
|
||||
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*);
|
||||
|
||||
} // namespace paylid
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/* End of paylidH.h */
|
||||
@@ -0,0 +1,334 @@
|
||||
/* paylidStub.h
|
||||
Generated by gSOAP 2.7.16 from PaylidService.h
|
||||
Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved.
|
||||
This part of the software is released under one of the following licenses:
|
||||
GPL, the gSOAP public license, or Genivia's license for commercial use.
|
||||
*/
|
||||
|
||||
#ifndef paylidStub_H
|
||||
#define paylidStub_H
|
||||
#include <vector>
|
||||
#define SOAP_NAMESPACE_OF_paylid "urn:paylidwsdl"
|
||||
#ifndef WITH_NONAMESPACES
|
||||
#define WITH_NONAMESPACES
|
||||
#endif
|
||||
#ifndef WITH_NOGLOBAL
|
||||
#define WITH_NOGLOBAL
|
||||
#endif
|
||||
#include "stdsoap2.h"
|
||||
|
||||
namespace paylid {
|
||||
|
||||
/******************************************************************************\
|
||||
* *
|
||||
* Enumerations *
|
||||
* *
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
* *
|
||||
* Types with Custom Serializers *
|
||||
* *
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
* *
|
||||
* Classes and Structs *
|
||||
* *
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
#if 0 /* volatile type: do not redeclare here */
|
||||
|
||||
#endif
|
||||
|
||||
#if 0 /* volatile type: do not redeclare here */
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getAccountBalanceResponse
|
||||
#define SOAP_TYPE_paylid_paylid__getAccountBalanceResponse (8)
|
||||
/* paylid:getAccountBalanceResponse */
|
||||
struct paylid__getAccountBalanceResponse
|
||||
{
|
||||
public:
|
||||
std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */
|
||||
std::string Data; /* required element of type xsd:string */
|
||||
std::string Hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getAccountBalance
|
||||
#define SOAP_TYPE_paylid_paylid__getAccountBalance (12)
|
||||
/* paylid:getAccountBalance */
|
||||
struct paylid__getAccountBalance
|
||||
{
|
||||
public:
|
||||
std::string terminalID; /* required element of type xsd:string */
|
||||
std::string hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__transferFundResponse
|
||||
#define SOAP_TYPE_paylid_paylid__transferFundResponse (13)
|
||||
/* paylid:transferFundResponse */
|
||||
struct paylid__transferFundResponse
|
||||
{
|
||||
public:
|
||||
std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */
|
||||
std::string Data; /* required element of type xsd:string */
|
||||
std::string Hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__transferFund
|
||||
#define SOAP_TYPE_paylid_paylid__transferFund (16)
|
||||
/* paylid:transferFund */
|
||||
struct paylid__transferFund
|
||||
{
|
||||
public:
|
||||
std::string terminalID; /* required element of type xsd:string */
|
||||
std::string toDestination; /* required element of type xsd:string */
|
||||
std::string hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatusResponse
|
||||
#define SOAP_TYPE_paylid_paylid__checkTransferStatusResponse (17)
|
||||
/* paylid:checkTransferStatusResponse */
|
||||
struct paylid__checkTransferStatusResponse
|
||||
{
|
||||
public:
|
||||
std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */
|
||||
std::string Data; /* required element of type xsd:string */
|
||||
std::string Hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatus
|
||||
#define SOAP_TYPE_paylid_paylid__checkTransferStatus (20)
|
||||
/* paylid:checkTransferStatus */
|
||||
struct paylid__checkTransferStatus
|
||||
{
|
||||
public:
|
||||
std::string terminalID; /* required element of type xsd:string */
|
||||
std::string transactionRef; /* required element of type xsd:string */
|
||||
std::string hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse
|
||||
#define SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse (21)
|
||||
/* paylid:directAirTimeTopUpResponse */
|
||||
struct paylid__directAirTimeTopUpResponse
|
||||
{
|
||||
public:
|
||||
std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */
|
||||
std::string Data; /* required element of type xsd:string */
|
||||
std::string Hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUp
|
||||
#define SOAP_TYPE_paylid_paylid__directAirTimeTopUp (24)
|
||||
/* paylid:directAirTimeTopUp */
|
||||
struct paylid__directAirTimeTopUp
|
||||
{
|
||||
public:
|
||||
std::string terminalID; /* required element of type xsd:string */
|
||||
std::string topupData; /* required element of type xsd:string */
|
||||
std::string hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__currentXrateResponse
|
||||
#define SOAP_TYPE_paylid_paylid__currentXrateResponse (25)
|
||||
/* paylid:currentXrateResponse */
|
||||
struct paylid__currentXrateResponse
|
||||
{
|
||||
public:
|
||||
std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */
|
||||
std::string Data; /* required element of type xsd:string */
|
||||
std::string Hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__currentXrate
|
||||
#define SOAP_TYPE_paylid_paylid__currentXrate (28)
|
||||
/* paylid:currentXrate */
|
||||
struct paylid__currentXrate
|
||||
{
|
||||
public:
|
||||
std::string terminalID; /* required element of type xsd:string */
|
||||
std::string topupData; /* required element of type xsd:string */
|
||||
std::string hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getAccountResponse
|
||||
#define SOAP_TYPE_paylid_paylid__getAccountResponse (29)
|
||||
/* paylid:getAccountResponse */
|
||||
struct paylid__getAccountResponse
|
||||
{
|
||||
public:
|
||||
std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */
|
||||
std::string Data; /* required element of type xsd:string */
|
||||
std::string Hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getAccount
|
||||
#define SOAP_TYPE_paylid_paylid__getAccount (32)
|
||||
/* paylid:getAccount */
|
||||
struct paylid__getAccount
|
||||
{
|
||||
public:
|
||||
std::string terminalID; /* required element of type xsd:string */
|
||||
std::string topupData; /* required element of type xsd:string */
|
||||
std::string hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getTrxStatusResponse
|
||||
#define SOAP_TYPE_paylid_paylid__getTrxStatusResponse (33)
|
||||
/* paylid:getTrxStatusResponse */
|
||||
struct paylid__getTrxStatusResponse
|
||||
{
|
||||
public:
|
||||
std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */
|
||||
std::string Data; /* required element of type xsd:string */
|
||||
std::string Hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getTrxStatus
|
||||
#define SOAP_TYPE_paylid_paylid__getTrxStatus (36)
|
||||
/* paylid:getTrxStatus */
|
||||
struct paylid__getTrxStatus
|
||||
{
|
||||
public:
|
||||
std::string terminalID; /* required element of type xsd:string */
|
||||
std::string topupData; /* required element of type xsd:string */
|
||||
std::string hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanksResponse
|
||||
#define SOAP_TYPE_paylid_paylid__getSupportedBanksResponse (37)
|
||||
/* paylid:getSupportedBanksResponse */
|
||||
struct paylid__getSupportedBanksResponse
|
||||
{
|
||||
public:
|
||||
std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */
|
||||
std::string Data; /* required element of type xsd:string */
|
||||
std::string Hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanks
|
||||
#define SOAP_TYPE_paylid_paylid__getSupportedBanks (40)
|
||||
/* paylid:getSupportedBanks */
|
||||
struct paylid__getSupportedBanks
|
||||
{
|
||||
public:
|
||||
std::string terminalID; /* required element of type xsd:string */
|
||||
std::string topupData; /* required element of type xsd:string */
|
||||
std::string hmac; /* required element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_SOAP_ENV__Header
|
||||
#define SOAP_TYPE_paylid_SOAP_ENV__Header (41)
|
||||
/* SOAP Header: */
|
||||
struct SOAP_ENV__Header
|
||||
{
|
||||
#ifdef WITH_NOEMPTYSTRUCT
|
||||
private:
|
||||
char dummy; /* dummy member to enable compilation */
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_SOAP_ENV__Code
|
||||
#define SOAP_TYPE_paylid_SOAP_ENV__Code (42)
|
||||
/* SOAP Fault Code: */
|
||||
struct SOAP_ENV__Code
|
||||
{
|
||||
public:
|
||||
char *SOAP_ENV__Value; /* optional element of type xsd:QName */
|
||||
struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_SOAP_ENV__Detail
|
||||
#define SOAP_TYPE_paylid_SOAP_ENV__Detail (44)
|
||||
/* SOAP-ENV:Detail */
|
||||
struct SOAP_ENV__Detail
|
||||
{
|
||||
public:
|
||||
int __type; /* any type of element <fault> (defined below) */
|
||||
void *fault; /* transient */
|
||||
char *__any;
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_SOAP_ENV__Reason
|
||||
#define SOAP_TYPE_paylid_SOAP_ENV__Reason (47)
|
||||
/* SOAP-ENV:Reason */
|
||||
struct SOAP_ENV__Reason
|
||||
{
|
||||
public:
|
||||
char *SOAP_ENV__Text; /* optional element of type xsd:string */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid_SOAP_ENV__Fault
|
||||
#define SOAP_TYPE_paylid_SOAP_ENV__Fault (48)
|
||||
/* SOAP Fault: */
|
||||
struct SOAP_ENV__Fault
|
||||
{
|
||||
public:
|
||||
char *faultcode; /* optional element of type xsd:QName */
|
||||
char *faultstring; /* optional element of type xsd:string */
|
||||
char *faultactor; /* optional element of type xsd:string */
|
||||
struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */
|
||||
struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */
|
||||
struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */
|
||||
char *SOAP_ENV__Node; /* optional element of type xsd:string */
|
||||
char *SOAP_ENV__Role; /* optional element of type xsd:string */
|
||||
struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */
|
||||
};
|
||||
#endif
|
||||
|
||||
/******************************************************************************\
|
||||
* *
|
||||
* Typedefs *
|
||||
* *
|
||||
\******************************************************************************/
|
||||
|
||||
#ifndef SOAP_TYPE_paylid__QName
|
||||
#define SOAP_TYPE_paylid__QName (5)
|
||||
typedef char *_QName;
|
||||
#endif
|
||||
|
||||
#ifndef SOAP_TYPE_paylid__XML
|
||||
#define SOAP_TYPE_paylid__XML (6)
|
||||
typedef char *_XML;
|
||||
#endif
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
* *
|
||||
* Externals *
|
||||
* *
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
} // namespace paylid
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/* End of paylidStub.h */
|
||||
@@ -0,0 +1,78 @@
|
||||
/* paylidpaylidwsdlBindingProxy.h
|
||||
Generated by gSOAP 2.7.16 from PaylidService.h
|
||||
Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved.
|
||||
This part of the software is released under one of the following licenses:
|
||||
GPL, the gSOAP public license, or Genivia's license for commercial use.
|
||||
*/
|
||||
|
||||
#ifndef paylidpaylidwsdlBindingProxy_H
|
||||
#define paylidpaylidwsdlBindingProxy_H
|
||||
#include "paylidH.h"
|
||||
|
||||
namespace paylid {
|
||||
|
||||
class SOAP_CMAC paylidwsdlBindingProxy : public soap
|
||||
{ public:
|
||||
/// Endpoint URL of service 'paylidwsdlBindingProxy' (change as needed)
|
||||
const char *soap_endpoint;
|
||||
/// Constructor
|
||||
paylidwsdlBindingProxy();
|
||||
/// Constructor with copy of another engine state
|
||||
paylidwsdlBindingProxy(const struct soap&);
|
||||
/// Constructor with engine input+output mode control
|
||||
paylidwsdlBindingProxy(soap_mode iomode);
|
||||
/// Constructor with engine input and output mode control
|
||||
paylidwsdlBindingProxy(soap_mode imode, soap_mode omode);
|
||||
/// Destructor frees deserialized data
|
||||
virtual ~paylidwsdlBindingProxy();
|
||||
/// Initializer used by constructors
|
||||
virtual void paylidwsdlBindingProxy_init(soap_mode imode, soap_mode omode);
|
||||
/// Delete all deserialized data (uses soap_destroy and soap_end)
|
||||
virtual void destroy();
|
||||
/// Disables and removes SOAP Header from message
|
||||
virtual void soap_noheader();
|
||||
/// Get SOAP Fault structure (NULL when absent)
|
||||
virtual const SOAP_ENV__Fault *soap_fault();
|
||||
/// Get SOAP Fault string (NULL when absent)
|
||||
virtual const char *soap_fault_string();
|
||||
/// Get SOAP Fault detail as string (NULL when absent)
|
||||
virtual const char *soap_fault_detail();
|
||||
/// Force close connection (normally automatic, except for send_X ops)
|
||||
virtual int soap_close_socket();
|
||||
/// Print fault
|
||||
virtual void soap_print_fault(FILE*);
|
||||
#ifndef WITH_LEAN
|
||||
/// Print fault to stream
|
||||
virtual void soap_stream_fault(std::ostream&);
|
||||
/// Put fault into buffer
|
||||
virtual char *soap_sprint_fault(char *buf, size_t len);
|
||||
#endif
|
||||
|
||||
/// Web service operation 'getAccountBalance' (returns error code or SOAP_OK)
|
||||
virtual int getAccountBalance(std::string terminalID, std::string hmac, struct paylid__getAccountBalanceResponse &_param_1);
|
||||
|
||||
/// Web service operation 'transferFund' (returns error code or SOAP_OK)
|
||||
virtual int transferFund(std::string terminalID, std::string toDestination, std::string hmac, struct paylid__transferFundResponse &_param_2);
|
||||
|
||||
/// Web service operation 'checkTransferStatus' (returns error code or SOAP_OK)
|
||||
virtual int checkTransferStatus(std::string terminalID, std::string transactionRef, std::string hmac, struct paylid__checkTransferStatusResponse &_param_3);
|
||||
|
||||
/// Web service operation 'directAirTimeTopUp' (returns error code or SOAP_OK)
|
||||
virtual int directAirTimeTopUp(std::string terminalID, std::string topupData, std::string hmac, struct paylid__directAirTimeTopUpResponse &_param_4);
|
||||
|
||||
/// Web service operation 'currentXrate' (returns error code or SOAP_OK)
|
||||
virtual int currentXrate(std::string terminalID, std::string topupData, std::string hmac, struct paylid__currentXrateResponse &_param_5);
|
||||
|
||||
/// Web service operation 'getAccount' (returns error code or SOAP_OK)
|
||||
virtual int getAccount(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getAccountResponse &_param_6);
|
||||
|
||||
/// Web service operation 'getTrxStatus' (returns error code or SOAP_OK)
|
||||
virtual int getTrxStatus(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getTrxStatusResponse &_param_7);
|
||||
|
||||
/// Web service operation 'getSupportedBanks' (returns error code or SOAP_OK)
|
||||
virtual int getSupportedBanks(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getSupportedBanksResponse &_param_8);
|
||||
};
|
||||
|
||||
} // namespace paylid
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,28 @@
|
||||
#ifndef __PGSQL_H__
|
||||
#define __PGSQL_H__
|
||||
|
||||
#include <libpq-fe.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int pgsql_db_connect(const char*host,const char*name,const char*user,const char*pass,long port);
|
||||
int pgsql_exec(const char * format, ... );
|
||||
const PGresult* pgsql_query(const char * format, ... );
|
||||
int pgsql_num_rows(const PGresult *res);
|
||||
int pgsql_num_fields(const PGresult *res);
|
||||
map<const char*,const char*> pgsql_fetch_assoc(const PGresult *res, int row);
|
||||
vector<const char*> pgsql_fetch_row(const PGresult *res, int row);
|
||||
void pgsql_close();
|
||||
char* pgsql_uitoa(unsigned n, char *s, int radix);
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
vi:ts=2
|
||||
*/
|
||||
@@ -0,0 +1,41 @@
|
||||
#ifndef __PGSQL_WRAPPER_H__
|
||||
#define __PGSQL_WRAPPER_H__
|
||||
|
||||
#include "exceptions.h"
|
||||
|
||||
enum { DBS_ALL=0, DBS_VALID=1, DBS_STREAM=2 };
|
||||
|
||||
class CEscape;
|
||||
|
||||
#define NEED_ESC CEscape __esc( cmd );
|
||||
#define esc( param ) __esc.Escape( param )
|
||||
|
||||
#define ESCAPE_MAX_VARS 50
|
||||
|
||||
void load_db_record( const char * table, CVars &rec, const char * where, ... );
|
||||
long load_db_record( CVars &rec, const char * query, ... );
|
||||
long insert_db_record( int mode, const char *table, const char *seq, CVars &rec );
|
||||
void update_db_record( int mode, const char * table, CVars &rec, long id, const char * where=NULL, ... ) throw ( bad_parameter );
|
||||
void v_update_db_record( int mode, const char * table, CVars &rec, const char *index, long id, const char * where=NULL, va_list ap=NULL ) throw ( bad_parameter );
|
||||
void update_db_record( int mode, const char * table, CVars &rec, const char *index, long id, const char * where=NULL, ... ) throw ( bad_parameter );
|
||||
long curr_val( const char *seq );
|
||||
|
||||
class CEscape
|
||||
{
|
||||
public:
|
||||
char * New( int sz );
|
||||
CEscape( char * st );
|
||||
~CEscape();
|
||||
char * Escape( const char * param );
|
||||
|
||||
private:
|
||||
char * vars[ESCAPE_MAX_VARS];
|
||||
int n;
|
||||
char * st;
|
||||
char esc[1000];
|
||||
int EscapeLength( const char * par ); // Calculate the required buffer size for escaped par
|
||||
char *EscapeReal( const char * cmd, char * _esc=NULL, int sz=0 ); // Escape a string for SQL server
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef PHP_COREGRADE_API_H
|
||||
#define PHP_COREGRADE_API_H
|
||||
|
||||
#define PHP_COREGRADE_API_EXTNAME "coregrade_api"
|
||||
#define PHP_COREGRADE_API_EXTVER "0.1"
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
extern "C" {
|
||||
#include "php.h"
|
||||
}
|
||||
|
||||
extern zend_module_entry coregrade_api_module_entry;
|
||||
#define phpext_coregrade_api_ptr &coregrade_api_module_entry;
|
||||
|
||||
#endif /* PHP_COREGRADE_API_H */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user