api version of CMD_RESELLER_STATS.
newCount files owned by apache to Users disk usage
Any files uploaded by apache (eg: using php) will be owned by apache and not reflected in the system quotas. This will go though and count all files owned by apache in the users home directory and include them in the Users disk usage.
newPlugin System (SKINS)
Ability to add plugins without needing to change the skin for each update.
Plugins will be placed in:
Each plugin will have a name (go figure 😃 ) ... inside that: (eg. plug_name)
inside the plug_name directory, we'll have a plugin.conf file with the following (example):
name=Hello World id=hello_world author=JBMC-Software version=1.0 update_url=http://www.directadmin.com/hello_world.tar.gz active=yes installed=yes
Most of it is self explanitory, but the update_url, if you have it in that file will allow DA to update the script when the admin clicks an "update" button in the plugins manager page. active=yes or no would be to turn it on and off.
installed=yes or no would be to figure out if it's been installed yet.(or uninstalled)
inside the plug_name directory will be 4 directories:
user reseller admin images
inside those directories will store the actual files to be viewed. The output of those files should only be html snippets as they will be inserted into an |OUTPUT| token on a plugins.html page in the skin. Users will only be able to acces the files that are available at their level. user, reseller, and admin must have an index.html file with the html snippet code for DA to start with when viewing the plugin at the respective access level. The images directory will store images.
The files for the plugin (index.html etc).. but be executable (755) by the user calling it (user logged into da). They must be scripts with the proper interpreter lines at the top, eg:
DA wil not tokenize these scripts so all data is passed via the environment.
All output on the stdout is inserted into the |OUTPUT| token on the skins page. No data from the strerr will be retrieved. The return value of the script isn't not checked, so errors should be directed to the stdout.
There are no file_user.conf files like in the skins. The plugins system will allow files to be accessed directly, eg:
|PLUGIN_0_ADMIN_TXT| |PLUGIN_1_ADMIN_TXT| |PLUGIN_2_ADMIN_TXT| |PLUGIN_3_ADMIN_TXT|
OR for image based skins with icons:
|PLUGIN_0_ADMIN_IMG| |PLUGIN_1_ADMIN_IMG| |PLUGIN_2_ADMIN_IMG| |PLUGIN_3_ADMIN_IMG|
|PLUGIN_0_RESELLER_IMG| ... |PLUGIN_0_RESELLER_TXT| ...
user/show_domain.html or user/show_domain_advanced.html
|PLUGIN_0_IMG| |PLUGIN_1_IMG| ...
|PLUGIN_0_TXT| |PLUGIN_1_TXT| ...
Those tokens will be added add global tokens, so you can really add them anywhere.
see included skins for details.. main token: |OUTPUT|
newSubdomain Bandwidth API
Returns a list of integers of kilobytes transferred as reported by the webalizer.hist file. If the file does not exist, zero is returned.
newability to set TTL per record type
Set the named.db to work like the following:
|?A_TIME=14400| |?NS_TIME=14400| |?MX_TIME=14400| |?CNAME_TIME=14400| |?PTR_TIME=14400| $TTL 14400 @ IN SOA |NS1| |EMAIL| ( |SERIAL| 7200 3600 1209600 86400 ) |NS| |A| |MX| |CNAME| |PTR|
newShow bandwidth history and API. (SKINS)
Show usage settings for previous months.
Put link in user_stats.html as /CMD_USER_HISTORY?domain=|domain|
(domain is not required, but just to make sure it shows up in the |TREE|)
|?TREE=» <a class=tree href="/CMD_SHOW_DOMAIN?domain=\`domain\`">\`domain\`</a> » <a class=tree href="/CMD_USER_STATS?domain=\`domain\`">User Stats for \`USERNAME\`</a> » <a class=tree href="/CMD_USER_HISTORY?domain=\`domain\`">User History</a>| |?HELP_SECTION=www.site-helper.com/stats.html| |HTM_USER_TOP| <b>User History</b><br> |HISTORY| |HTM_USER_BOTTOM|
The Api returns the list of past months. All resets done within the same month will be added together. Since the reset is done on the first day of the month, all resets done on the first day of the month, including all days from the previous month (except the first day from the previous month) will be included in the last months totals. The default DA install does 1 reset per month on the 1st day. A format example is as follows:
%32%30%30%34 %30%35=bandwidth%3D%31%34%34.%30%33%35%26quota%3D%32%32.%39%32%30%30%34 %30%36=bandwidth%3D%31%34%36.%30%33%35%26quota%3D%32%32.%39
Where decoded it looks like (it's all sent on one line):
2004 05=bandwidth=144.035"a=22.9 2004 06=bandwidth=146.035"a=22.9
All previous months will be included in the one query.
newtemplate for proftpd virtualhosts
template system for virtualhosts in the /etc/profptd.vhosts.conf.
<VirtualHost |ip|> ServerName "|ServerName|" ExtendedLog |ExtendedLog| WRITE,READ userlog AuthUserFile |AuthUserFile| |EXTRA| </VirtualHost>
The EXTRA token will be reservd for any possible additions required to the template at a future date. It will be empty for now.
newServer Load (api and admin panel)
Add a display for the current server load, as well as an api for it.
It's has been added to the admin stats.
The API is called:
and can be used by both Resellers and Admins. The return value is:
where the values of one,five and fifteen are the load averages (url encoded)
newDomain pointers API
domain=domain.com action=add from=domain2.com alias=yes (dont pass 'alias' at all for 'no')
domain=domain.com action=delete select0=domain2.com (select1=domain3.com) (...)
newNew Enhanced Skin
Including new skin with all DirectAdmin updates.
New language feature. Languages can be added and set through DA. The environmental variable "LANGUAGE" will be passed to all scripts in the skins and to the plugins system.
All language text will be place in the file of the name name in a directory called "lang" with the language right after.
Example, engligsh (en):
the language file would be:
The format of the language file is a simple TOKEN=text. When the language is changed, the "en" is changed to the new language.
You are not required to have a language for each html file available.
A page can include the language file from another html page by loading it with |LF_OTHERFILE| where LF_OTHERFILE is specified in the files_*.conf, eg:
With that, all tokens/text from the content_main.html language file would be loaded into the html file that calls |LF_OTHERFILE|
fixedCMD_API_POP quota usage fix
Usages were all being returned as zero. Caused because program didn't have the required permission to read the directory. Both the quota and usage will be in bytes.
fixedBackup restore uses old NS's
When moving a user to a new server, the restore uses the old nameservers. This fix will create the user with the ns's set by the Reseller on his Nameserver's screen.
There is also a report of the NS values being entered incorrectly:
domain.com NS ns1.domain.com. <-- domain.com... NS ns1.domain.com. <-- domain.com. NS ns2.domain.com.
Unable to duplicate the period problem.
fixedDomain Pointers not restored with backup
Domain Pointers not restored with backup.
fixedOutlook reg files to use different http request format
change outlook reg file download to use:
fixedDNS zone reader
fix the dns zone reader to handle arbitrary length subdomains (for people who insist on using 800 character domain names 😃 )
Added check to make sure A record value is an IP address.
Added check to make sure CNAME doesn't exist before adding A record.
Added check to make sure A doesn't exist before adding CNAME record.
fixedRemoval of a protected directory user prevents login
When a user is removed from the list of users setup to work on a password protected directory, the .htpasswd has it's permissions changed to 600 from 644. This prevents apache from reading the .htpasswd file thus preventing login.
In the filemanager, go to:
and set the permissions on the .htpasswd file to 644.
fixedphpmyadmin version errors
Fix phpMyAdmin version in the install script.
Note that we now use a symbolic link from /var/www/html/phpMyAdmin to the appropriate phpMyAdmin version directory. If you're changing phpMyAdmin versions, the aliases in your /etc/httpd/conf/httpd.conf will need to be updated.
fixedTicket system shows "today" for all date with same day of month
Havn't confirmed this yet.. report is that the time in the ticket/message system reports "today" for all days with the same day of month.
fixedCopy User backup data as different user when creating backup
If the user already has all of his space used up, he won't be able to create a backup file. If a Reseller tries to create a backup, the User's username is used so the backup would exceed the alloted space allowed. This fix will copy the data as root, but still compess the tar.gz if the user is doing the backup. If the Reseller does the backup, then the tar.gz will be compressed as root, as it's always been.