HOWTOs
Contents
- 1 Send PDF attached invoices with the invoice notice email
- 2 Use Google Apps SMTP Server for sending email
- 3 Change PDF Charset
- 4 Merging user accounts
- 5 Domain Registration Process
- 6 Domain Transfers
- 7 Domain Renewals
- 8 AWBS Refill Account/Credit System
- 9 Manually Add a Hosting Record
- 10 Hold hosting jobs based on server or package
- 11 Searching in the admin area
- 12 Multiple AWBS Sites using one database
- 13 Adding new admin area pages (Addon Modules)
- 14 Adding new Legal Requirements for Domain Registration
- 15 Enabling CKEditor (WYSIWYG)
Send PDF attached invoices with the invoice notice email
NOTE: The PDF attachment will be sent on cron generated recurring invoices only, or if the admin manually resends an existing invoice.
1. Enable PDF invoices in the Extended System Configuration page of the AWBS Configuration area. Set 'allowpdf' to a value of 1 and save
This will enable pdf viewable invoices both in the admin area invoice manager and the member area invoice area.
2. To get the invoices attached with the invoice notice email, this will only work if you are set to use SMTP mail in AWBS. Configure SMTP mail on the System Options page of the AWBS Configuration. Note: test SMTP mail once configured by using the AWBS mailer and sending a test email to a test account where you can receive the email.
3. Create the directory /includes/pdf/temp with writable permissions.
4.Edit the New Invoice template and add this line after all other content:
<<<<<ATTACH:%%INVOICEID%%>>>>>
Option:
Adding the Extended Config item 'pdfinvoicename' and entering a prefix will cause the invoice.pdf to be named yourprefix[invoicenumber]
- Example: AWBSInvoice- (NO PATH! NO EXTENSION!) - The above example will create an attached invoice named: AWBSInvoice-10342.pdf for invoice 10342
Use Google Apps SMTP Server for sending email
First step in getting GMail working is editing your /includes/smtp_config.php file. This is an example of the smtp_config.php file fully configured for GMail:
<?php
$smtp=new smtp_class;
$this_smtp_config = @mysql_fetch_array(mysql_query("SELECT * FROM module_types WHERE name='smtp'"));
$smtp->host_name=$this_smtp_config['config1']; /* Change this variable to the address of the SMTP server to relay, like "smtp.myisp.com" */
$smtp->host_port=465; /* Change this variable to the port of the SMTP server to use, like 465 */
$smtp->ssl=1; /* Change this variable if the SMTP server requires an secure connection using SSL */
$smtp->localhost=""; /* Your computer address */
$smtp->direct_delivery=0; /* Set to 1 to deliver directly to the recepient SMTP server */
$smtp->timeout=10; /* Set to the number of seconds wait for a successful connection to the SMTP server */
$smtp->data_timeout=20; /* Set to the number seconds wait for sending or retrieving data from the SMTP server. Set to 0 to use the same defined in the timeout variable */
$smtp->debug=0; /* Set to 1 to output the communication with the SMTP server */
//!!!!SETTING DEBUG ON IS A SECURITY RISK!!!!
//!!!!YOUR SMTP PASSWORD WILL BE VISIBLE TO USERS WHEN SMTP RUNS!!!!
//!!!!USE AT YOUR OWN RISK!!!!
$smtp->html_debug=0; /* Set to 1 to format the debug output as HTML */
//$smtp->pop3_auth_host=$this_smtp_config['config1']; /* Set to the POP3 authentication host if your SMTP server requires prior POP3 authentication */
$smtp->user=$this_smtp_config['config2']; /* Set to the user name if the server requires authetication */
$smtp->realm=""; /* Set to the authetication realm, usually the authentication user e-mail domain */
$smtp->password=$this_smtp_config['config3']; /* Set to the authetication password */
$smtp->workstation=""; /* Workstation name for NTLM authentication */
$smtp->authentication_mechanism=""; /* Specify a SASL authentication method like LOGIN, PLAIN, CRAM-MD5, NTLM, etc.. Leave it empty to make the class negotiate if necessary */
?>
Then in your AWBS System Options set the following:
- SMTP Server: smtp.gmail.com
- Username: Enter your Gmail E-Mail Address
- Password: Enter your Gmail Password
If everything is configured as above, and the firewall allows OUTGOING TCP port 465, you should have no problems connecting and sending out via your Gmail account.
(Don't use Port 587 as they recommend, We have found it does not work most of the time)
Change PDF Charset
The PDF Charset encoding can be changed by using a remapped font with the correct encoding.
Please select the appropriate zip below and follow these instructions for installing it on your AWBS:
- Unzip the file
- Merge the new /includes/pdf/pdfinvoice.pdf file with your existing one. (Hint: If you have not modified your pdfinvoice.php file, you can overwrite it)
- Upload all the files in /includes/pdf/font to your AWBS /includes/pdf/font folder
- Test
Font Files for PDF
Merging user accounts
Navigate to the User Manager. Locate the user account you want to merge from (this will be the account that will no longer exist after the merge).
Click the username to enter the user's record. Click the Merge User link at the top (next to Last Login information).
Select the user account you wish to merge to. This will be the account that user will need to use in the future. Type in the Merge Agreement phrase and click the Merge User Records link.
This will delete the old user account and move all invoices, history, packages, journal entries, comments and transactions to the new user account. NOTE: This will NOT move the user's credit card on file.
Domain Registration Process
Once a customer has ordered a domain name on your AWBS site, a new order will appear in your job queue.
If you have configured 'Process all new domain orders immediately' to True in the system options, the order will be in the open area of the queue and process the next time the master_cron.php runs. No further action is required by you in this case, the job will run; registering the domain at the registrar, setting the domain record to a status of closed in the domain manager, emailing the client and a copy to the admin copy-to email, and set the queue job to closed.
If you have configured 'Process all new domain orders immediately' to False, the new order will be in the pending queue.
This means it requires your approval before it will process. Click the approve link if you wish to approve the order, it will then be placed in the open queue for auto processing via the master_cron.php. If you wish to process immediately, click the run link.
If you offer hosting packages (AWBS Hosting Edition only) and a domain was ordered during the hosting signup process, the domain order will follow the hosting settings. In this case if you have set Process all new hosting packages immediately to True in the System Options page, the domain and hosting order will be in the open queue together and run with the master_cron.php.
If you have the Process all new hosting packages immediately set to False in the System Options, the domain and hosting order will both be placed in the pending queue for approval. In this case, you only need to approve the hosting job. Once that is auto run from the open queue (after approval), the domain order will be processed without further action by you.
Note: Only jobs with paid invoices will process. Any orders that have unpaid invoices will remain in the queue until paid. If you wish to process an order prior to payment (not recommended!), click the edit link beside the job, check the box that says Bypass Invoice Check and save. Then click the run link beside the job.
Nameservers;
Domains are registered using nameservers in this priority;
Nameservers assigned to hosting server if ordered while ordering hosting.
Nameservers from user's domain profile.
Nameservers set in the registrar config area.
Errors
If any jobs fail, they will then be placed in the error queue. Click the edit link beside the domain and look in the 'return' field to see what the error was that was returned from the registrar. If nothing is there, check your curl (curl test in AWBS utilities page) and your registrar connection if your registrar has a connection test.
Domain Transfers
Domain Transfer orders are processed through the queue the same way domain registration orders are.
Domain transfer orders initiate the transfer process at the registrar. Your clients should be instructed to unlock their domains at the current registrar and verify they have a valid admin contact email address prior to ordering their transfer. They also should disable any ID protect or hidden whois services at the current registrar prior to ordering the transfer. Many transfer approval emails are filtered as spam, so they should also be advised to disable any spam filtering on their email account until the transfer has completed.
If a transfer fails, you can click the icon to the right beside the failed transfer in the domain manager to see what the fail reason was. (most registrars support this). The transfer can also be restarted from that popup page.
The user can restart his/her transfer from their domain list for free if it fails.
NOTE: Domain transfers that are restarted require the job that is in the closed job queue to reorder the transfer at the registrar. It is recommended that you not 'clean out' transfer orders from the job queue for a timeframe so that your users can restart their transfers without problems.
NOTE: Some tlds require special attention and have different rules for transferring. If you offer .uk domains, it is your responsibility to know the nominet/.uk domain procedures. Consult with your domain provider for procedures on retagging .uk domains and other tlds that you offer for any special requirements.
Domain Renewals
Domain name renewals are ordered by the customer via their domain list. They can click the 'R' icon to order a domain renewal.
Domain renewal orders are processed via the job queue as are all other domain orders. The renewal is a two step process in the queue, first you will see the renwal order. When the renewal order processes it will place a new job in the queue to get the new expire date. Once that second job has run successfully, the customer will see their domain's new expire date in their domain list and their domain will be fully managable again.
AWBS sends clients a 60 day, 30 day, 7 day renewal notice as well as a notice that their domain has expired on the expire date. Clients can renew their domains up to 30 days after expire date.
Expire/renewal notice emails are sent to the email address listed on the AWBS user account.
Auto Renew:
If the auto renew checkbox is checked for a domain, AWBS will send them the normal 60 day renewal notice email. Then at 35 days prior to expire date, AWBS will send out the auto renewal notice instructing the client that their domain will be auto renewed in 5 days if they have an account balance or a credit card on file (credit card on file only applies to onsite supported gateways).
If the account has a balance or a credit card on file, the renewal order will be processed at 30 days prior to expire date. This process will be to start the order, generating an invoice, then take the account credit to pay the invoice or if no credit AWBS will charge the credit card on file. Once the invoice is paid, the order will process and the domain will be renewed.
As of AWBS Version 2.4.1, AWBS will attempt to renew the domain again at 7 days prior to expire, in case the auto renew setting was turned on after the 35 day mark.
Forced Auto Renew:
To set your AWBS system to invoice all domain renewals, in the Extended System Configuration, set the forcearinvandq setting to a value of 1 if you want invoices generated for ALL domain renewals regardless of cc on file status or account credits. If the forcearinvandq setting is not there, use the add record link at the top of the Extended System Configuration page to add it in.
AWBS Refill Account/Credit System
Enable the Account Refill system in the System Options of the AWBS Configuration. The account credit system will not work without this enabled.
How it works: Customers can refill their AWBS account from their member home page.
Account refill orders go to the Open section of the Job Queue and are processed when the master_cron.php runs. Once the master_cron.php runs, if the account refill order has a paid invoice, the credits will show as pending *UNLESS* the user's account is set with 'Trusted' or 'Instant Credits' set to True, in which case the credits will be live when the master_cron.php runs the job queue.
Once the credit is live, the customer can use this credit to pay any new orders or existing open invoices.
Live or pending credits will be automatically used to pay recurring invoices on the invoice due date.
EXCEPTION: If you have dontpayallwcreds set to 1 in the Extended System Configuration AND your customer has configured the Assign Credit Usage to not pay that type of invoice, the credits will not be used.
ADMIN OVERRIDE: IF the admin manually creates an invoice or a non recurring invoice is open in the system and the 'Auto Payment Options' section is set to: 'Enable pay with system credits or credit card on file (applies to onsite processors with recurring support only)', the invoice will be paid using account credits on the invoice due date regardless of the user's Assign Credit Usage settings.
Giving a customer account credits
Please note: if you give a customer credits, this does not show any income from that customer.
Giving account credits should be used when you want to give your customer something for free (perhaps a free month for SLA or other related reason). The other situation you may want to give credits is for your company's account, so you don't have to pay for your hosting packages or domains purchased for your company. Or for testing configuration.
Navigate to the Credit Manager, select the user you wish to give credits to. Click the Add Credits link next to this user's credit row, select 'Add credits to Live' and enter the amount you wish to give them. Click the Save Changes button.
If you do not find the user in the Credit Manager, you'll need to add a record for that user. Click the Add Record link at the top of the Credit Manager page. Select the user account and click the Save Changes button. (Do not make any other changes at this time). Back at the Credit Manager page, locate the user and use the Add Credits link as per the above paragraph.
Manually Add a Hosting Record
To add a new hosting record, add to the job queue and create the account on the server automatically....
1. In the AWBS admin area, go to the Hosting Manager.
2. Click "Add Record"
3. Once the page has loaded, Fill out the following information as needed
Domain: enter the domain name to be hosted Start Date: Leave blank to use today's date or enter date desired Next Renew Date: Enter next due date for payment (should be x days after Next Invoice Date, as per your system options setting) Next Invoice Date: Enter the date an invoice should be generated. Last Renewed On: Leave blank Owner ID: Enter the customer's username you want the hosting package assigned too Referred By: (This is who referred the customer, if an affiliate ID is entered, the affiliate will get credit for the sale) Status: Set to pending Plan: Choose the correct plan Term: choose the correct term Server: Choose the server IP: leave blank NS1: - NS4: leave blank Remote Username: enter the account username that will be used for the hosting package Remote Password: enter the account password that will be used for the hosting package Price Override: (This can be used to "OverRide" the original hosting package price) Void Open Invoices: Leave blank Delete Record: Leave blank
4. Once the information has been edited to your liking, click the "Save Record" button to save the changes.
5. Now click to edit the record. Change to 'active' status and select Do ADD to queue and Do RUN the queue NOW.
This will create the account on the server, set the package active in the user's account and send the email configured for the plan.
To add a new hosting record without running the job queue ( hosting on an unsupported server type or account already on the server )
Same as above except set the status to active and save. No need to go back and edit.
Hold hosting jobs based on server or package
(Note: Applicable versions; AWBS 2.7.4 and newer)
If you have hosting orders provisioning live (Configuration >> System Options >> Activate new hosting packages immediately: True ) but you want jobs going to a certain server to go to the Pending queue to wait for your approval, add this flag to your Extended System Configuration;
[servername]_hold (substitute your server name for [servername], must be server name as shown in the Configuration >> Server Setup >> Server Name field ) set the value to 1
If you have hosting orders provisioning live (Configuration >> System Options >> Activate new hosting packages immediately: True ) but you want jobs using a certain package to go to the Pending queue to wait for your approval, add this flag to your Extended System Configuration;
[planname]_hold (substitute your package name for [planname], must be package name as shown in the Configuration >> Hosting Package Setup >> Package Name field ) set the value to 1
Searching in the admin area
Searches in the admin area use an exact match.
* is the wildcard search character.
Examples:
A search for 'text' for User in the user manager will produce only a user account with the username of 'text'. A search for '*text' will produce a list of user accounts that have anything before text in them. (atext, btext, etc.) A search for 'text*' will produce a list of user accounts that have anything after text in them. (texta, textb, etc.) A search for '*text*' will produce a list of user accounts that have text in them anywhere.
Multiple AWBS Sites using one database
How to setup multiple AWBS sites to use one database
Adding new admin area pages (Addon Modules)
Note: This refers to AWBS version 2.8.0 and newer
Addon modules are located in the admin/includes/modules directory.
To create a new addon module page;
1. Create a new directory in the admin/includes/modules directory.
2. Copy the admin/includes/modules/example_addon/example_addon.php file to your new
directory and rename it as per your directory name.
(Example: you create admin/includes/modules/newpage directory, rename the file to newpage.php )
3. Edit your new file as desired to perform functions you want.
You can use this file for any purpose and return the results to the screen.
Be sure the dir name and the file name are the same!
Any form posts should be addressed as: <form method="post" action="<?=$modulelink?>">
4. A link to your page will appear on the left menu of the admin area in the Addon Modules section.
Adding new Legal Requirements for Domain Registration
Some TLD's require further legal requirements to be met before a registration is allowed to go through. Most of the common TLD's have the pre-requirements added to AWBS already. In the case that you need to offer a domain that is not added, there is a way to add these. This will take some PHP knowledge, and is for the advanced user.
It is a good idea if trying to add your own Domain legal requirements that you have your registrars api documentation available. Specifically any documentation which tells you the required legal requirements, along with their API commands for a TLD.
Registrars Supported: eNom, Bulkregister, Hexonet, Regru
Editing the legalinc.php
Location of the legalinc.php file is as follows:
- eNom: /includes/enom
- Bulkregister: /includes/bulkregister
- Hexonet: /includes/hexonet
- Regru: /includes/regru
Example legalinc.php:
<?php /* AWBS - Advanced Webhost Billing System Copyright (C)2000-2009 Total Online Solutions Inc. http://www.awbs.com< */ if(trim(strtolower($params['cTld']))=="us"){ $data1.="&x-us-nexus-apppurpose=".$params['nexus3']; $data1.="&x-us-nexus-category=".$params['nexus1']; $data1.="&x-us-nexus-validator=".$params['nexus2']; } if(trim(strtolower($params['cTld']))=="eu"){ $data1.="&x-asia-cedcontact=OWNER"; $data1.="&x-eu-accepttrustee-tac=1"; $data1.="&x-eu-registrantlang=".$params['nexus2']; } ?>
You will need to add your new tld to the end of the list before the ?>. You can use the following example to form your code:
if(trim(strtolower($params['cTld']))=="tld"){ $data1.="&api-command1=".$params['nexus1']; $data1.="&api-command2=".$params['nexus2']; $data1.="&api-command3=".$params['nexus3']; }
- Replace tld with your extension.
- Replace api-command1 - api-command3 with the legal requirement strings specified in your registrars API doc. For example, if a requirement is Legal Entity Type, and the api command is legalentitytype you would replace &api-command1= with &legalentitytype=.
- Anything entered into the $data1 value will be sent at the end of the POST string to your registrars API.
Editing Template
Enabling CKEditor (WYSIWYG)
To make use of the new WYSIWYG editor integration follow these steps:
- Use your browser and go to: http://ckeditor.com/download
- Extract the zip and upload the files in ckeditor to /includes/ckeditor
- In your AWBS Setup in the Extended System Configuration add the following setting: ckedit and set the value to 1.
- If all is correct when editing Package Descriptions, HD Tickets, and Contact forms you should now see an editor like the following screenshot: