From: <chr...@us...> - 2018-11-26 19:35:27
|
Revision: 13396 http://sourceforge.net/p/xoops/svn/13396 Author: chronolabscoop Date: 2018-11-26 19:35:19 +0000 (Mon, 26 Nov 2018) Log Message: ----------- Emails/Aliases Account's Propogation REST API Services - v1.0.7 Modified Paths: -------------- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/.htaccess *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/README.md *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/help.php *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/include/functions.php *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/include/version.php *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/index.php *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/include/config.php *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/language/english/install.php *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/sql/mysql.mail_users.sql *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/sql/mysql.mail_virtual.sql Removed Paths: ------------- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/data/emails.localhost/ Modified: *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/.htaccess =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/.htaccess 2018-11-01 13:07:22 UTC (rev 13395) +++ *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/.htaccess 2018-11-26 19:35:19 UTC (rev 13396) @@ -17,5 +17,5 @@ RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/([0-9a-z])/activation.html ./activation.php?version=$1&mode=activation&emailkey=$2&actkey=$3 [L,NC,QSA] RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/(aliases|emails|domains).api ./index.php?version=$1&authkey=$2&mode=$3 [L,NC,QSA] RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/(aliases|domains|users)/(raw|html|serial|json|xml).api ./index.php?version=$1&authkey=$2&mode=$3&format=$4 [L,NC,QSA] -RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/([0-9a-z]{32})/(emails|pgpkeys)/(raw|html|serial|json|xml).api ./index.php?version=$1&authkey=$2&key=$3&mode=$4&format=$5 [L,NC,QSA] +RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/([0-9a-z]{32})/(emails|pgpkeys|aliases)/(raw|html|serial|json|xml).api ./index.php?version=$1&authkey=$2&key=$3&mode=$4&format=$5 [L,NC,QSA] RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/([0-9a-z]{32})/(edit|delete)/(email|alias|domain|user)/(raw|html|serial|json|xml).api ./index.php?version=$1&authkey=$2&key=$3&mode=$4&type=$5&format=$6 [L,NC,QSA] Modified: *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/README.md =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/README.md 2018-11-01 13:07:22 UTC (rev 13395) +++ *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/README.md 2018-11-26 19:35:19 UTC (rev 13396) @@ -2,12 +2,14 @@ # Emails/Aliases Account's Propogation REST API Services -## Version: 1.0.4 (stable) +## Version: 1.0.7 (stable) -### Author: Dr. Simon Antony Roberts <simon@snails.email> +### Author: Dr. Simon Antony Roberts <simon@ordinance.space> #### Demo: http://emails.snails.email +[](http://www.youtube.com/watch?v=MK4CwDk_bXE) + This API allows for a REST API to generate email addresses with IMAP, POP, SMTP resolve as well as maintenance and a client directory for each domain which can be assigned. The installation include configuration of dovecove in a number of linux formats, but you will have to still configure manually your postfix smtp relay settings, these are not included in the instructions for installation. This REST API allows for configuration of email account remotely from other websites and sources via REST API calling, and it is protected by the requirement of using an admin username and password for this defining purposes! @@ -37,7 +39,7 @@ RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/([0-9a-z])/activation.html ./activation.php?version=$1&mode=activation&emailkey=$2&actkey=$3 [L,NC,QSA] RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/(aliases|emails|domains).api ./index.php?version=$1&authkey=$2&mode=$3 [L,NC,QSA] RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/(aliases|domains|users)/(raw|html|serial|json|xml).api ./index.php?version=$1&authkey=$2&mode=$3&format=$4 [L,NC,QSA] - RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/([0-9a-z]{32})/(emails|pgpkeys)/(raw|html|serial|json|xml).api ./index.php?version=$1&authkey=$2&key=$3&mode=$4&format=$5 [L,NC,QSA] + RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/([0-9a-z]{32})/(emails|pgpkeys|aliases)/(raw|html|serial|json|xml).api ./index.php?version=$1&authkey=$2&key=$3&mode=$4&format=$5 [L,NC,QSA] RewriteRule ^v([0-9]{1,2})/([0-9a-z]{32})/([0-9a-z]{32})/(edit|delete)/(email|alias|domain|user)/(raw|html|serial|json|xml).api ./index.php?version=$1&authkey=$2&key=$3&mode=$4&type=$5&format=$6 [L,NC,QSA] ## Scheduled Cron Job Details., Modified: *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/help.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/help.php 2018-11-01 13:07:22 UTC (rev 13395) +++ *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/help.php 2018-11-26 19:35:19 UTC (rev 13396) @@ -147,11 +147,11 @@ <h2>PGPKEY Document Output</h2> <p>This is done with the <em>pgpkey.api</em> extension at the end of the url, you replace the example address with either a domain! You can also include PGP Keys with emailing the key in the body or as an attachment to: <strong><em><?php echo API_EMAIL_PGP_KEYS; ?></em></strong></p> <blockquote> - <?php echo getHTMLForm('newpgpkey', $authkey); ?> + <?php echo getHTMLForm('addpgpkey', $authkey); ?> </blockquote> <h3>This the HTML Code surrounding the api call</h3> <pre style="max-height: 300px; overflow: scroll;"> - <?php echo htmlspecialchars(getHTMLForm('newpgpkey', $authkey)); ?> + <?php echo htmlspecialchars(getHTMLForm('addpgpkey', $authkey)); ?> </pre> <h2>RAW Document Output</h2> <p>This is done with the <em>raw.api</em> extension at the end of the url, you replace the example address with either a domain, an IPv4 or IPv6 address the following example is of calls to the api</p> Modified: *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/include/functions.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/include/functions.php 2018-11-01 13:07:22 UTC (rev 13395) +++ *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/include/functions.php 2018-11-26 19:35:19 UTC (rev 13396) @@ -453,6 +453,90 @@ } +if (!function_exists("addEmail")) { + /** + * addEmail() + * + * @param mixed $email + * @param mixed $antispam + * @return bool|mixed + */ + function addAlias($authkey, $name = '', $username = '', $domainkey = '', $destination = '', $callback = '', $format = 'json') + { + $return = checkAuthKey($authkey); + if (empty($return)) + { + if (strlen($domainkey)==32) { + $domainid = getDomainID($domainkey); + $sql = "SELECT `domain`, `pid`, `zonekey` FROM `" . $GLOBALS['APIDB']->prefix('domains') . "` WHERE `id` = '$domainid'"; + list($domain, $pid, $zonekey) = $GLOBALS['APIDB']->fetchRow($GLOBALS['APIDB']->queryF($sql)); + $domainpath = implode(DS, array_reverse(explode('.', $domain))); + } else + $return = array('code' => 501, 'aliaskey' => md5(NULL. 'alias'), 'errors' => array('123' => 'Domain Key not Found!!!')); + + if (empty($return) && !checkEmail($destination)) + $return = array('code' => 501, 'aliaskey' => md5(NULL. 'alias'), 'errors' => array('126' => 'Destination Email Address is not an addressed formating correctly!!!')); + + if (empty($return)) + { + $sql = "SELECT COUNT(*) FROM `" . $GLOBALS['APIDB']->prefix('mail_virtual') . "` WHERE ((`email` LIKE '$username@$domain' OR `email_full` = '$username@$domain') AND `destination` = '$destination')"; + list($count) = $GLOBALS['APIDB']->fetchRow($GLOBALS['APIDB']->queryF($sql)); + if ($count==0) + { + $sql = "INSERT INTO `" . $GLOBALS['APIDB']->prefix('mail_virtual') . "` (`name`, `email`, `email_full`, `destination`, `domainid`, `uid`, `pid`, `created`, `callback`) VALUES ('" . $GLOBALS['APIDB']->escape($name) . "', '$username@$domain', '$username@$domain', '$destination', '$domainid', '" . $GLOBALS['uid'] . "', '$pid', UNIX_TIMESTAMP(), '" . $GLOBALS['APIDB']->escape($callback) . "')"; + if ($GLOBALS['APIDB']->queryF($sql)) + { + $sql = "SELECT md5(concat(`id`, '" . API_URL . "', 'alias')) FROM `" . $GLOBALS['APIDB']->prefix('mail_virtual') . "` WHERE `id` = '".$GLOBALS['APIDB']->getInsertId()."'"; + list($aliaskey) = $GLOBALS['APIDB']->fetchRow($GLOBALS['APIDB']->queryF($sql)); + $_SESSION['aliaskey'] = $aliaskey; + setcookie('aliaskey', $_SESSION['aliaskey'], 3600 + $time, '/', API_COOKIE_DOMAIN); + + if (!is_dir($maildir)) + mkdir($maildir, 0777, true); + + if (!is_dir(API_MAILDIR_PATH . DS . $domainpath . DS . '.pgp-keys')) + mkdir(API_MAILDIR_PATH . DS . $domainpath . DS . '.pgp-keys', 0777, true); + + if (!file_exists(API_MAILDIR_PATH . DS . $domainpath . DS . '.pgp-keys' . DS . $username . '@' . $domain . ".asc")) { + if (file_exists($script = dirname(__DIR__) . DS . 'crons' . DS . 'generate-pgpkeys.sh')) + $sh = file($script); + else { + $sh = array(); + $sh[] = "unlink \"" . dirname(__DIR__) . DS . 'crons' . DS . 'generate-pgpkeys.sh' . "\"\n"; + } + + writeRawFile($diz = API_MAILDIR_PATH . DS . $domainpath . DS . '.pgp-keys' . DS . "$username@$domain.diz", str_replace('%name', "$username@$domain", str_replace('%email', "$username@$domain", str_replace('%subbits', mt_rand(API_MINBITS_PGP_KEYS, API_MAXBITS_PGP_KEYS), str_replace('%bits', mt_rand(API_MINBITS_PGP_KEYS, API_MAXBITS_PGP_KEYS), file_get_contents(__DIR__ . DS . 'data' . DS . 'gen-key-script.diz')))))); + $sh[] = "gpg --batch --gen-key \"$diz\"\n"; + $sh[] = "unlink \"$diz\"\n"; + $sh[] = "gpg --armor --export $username@$domain > \"" . API_MAILDIR_PATH . DS . $domainpath . DS . '.pgp-keys' . DS . $username . '@' . $domain . ".asc\"\n"; + foreach(file(__DIR__ . DS . 'data' . DS . 'keyservers-hostnames.diz') as $keyserver) + $sh[] = "gpg --keyserver " . str_replace(array("\n", "\r", "\t"), "", trim($keyserver)) . " --send-key $username@$domain\n"; + writeRawFile($script, implode("", $sh)); + + if (strlen($callback) > 0) + addCallback($callback, array('op' => 'created-alias', 'aliaskey' => $aliaskey, 'alias' => '$username@$domain', 'username' => $username, 'domain' => $domain, 'domainkey' => $domainkey, 'destination' => $destination)); + + $return = array('code' => 201, 'aliaskey' => $_SESSION['aliaskey'], 'errors' => array()); + } else { + + if (strlen($callback) > 0) + addCallback($callback, array('op' => 'created-alias', 'aliaskey' => $aliaskey, 'alias' => '$username@$domain', 'username' => $username, 'domain' => $domain, 'domainkey' => $domainkey, 'destination' => $destination, 'pgpkey' => file_get_contents(API_MAILDIR_PATH . DS . $domainpath . DS . '.pgp-keys' . DS . $username . '@' . $domain . ".asc"))); + + $return = array('code' => 201, 'aliaskey' => $_SESSION['aliaskey'], 'errors' => array()); + } + } else { + $return = array('code' => 501, 'emailkey' => md5(NULL. 'email'), 'errors' => array('sql' => $sql, $GLOBALS['APIDB']->errno() => $GLOBALS['APIDB']->error())); + } + } else { + $return = array('code' => 501, 'emailkey' => md5(NULL. 'email'), 'errors' => array('103' => 'Record Already Exists!!!')); + } + } + } + return $return; + } +} + + if (!function_exists("addUser")) { /** * checkEmail() @@ -713,6 +797,61 @@ } } + +if (!function_exists("getEmail")) { + /** + * checkEmail() + * + * @param mixed $email + * @param mixed $antispam + * @return bool|mixed + */ + function getEmail($authkey, $emailkey = '', $format = 'json') + { + $return = checkAuthKey($authkey); + if (empty($return)) + { + $return['code'] = 201; + $sql = "SELECT * FROM `" . $GLOBALS['APIDB']->prefix('mail_users') . "` WHERE `id` = " . getEmailID($emailkey); + $result = $GLOBALS['APIDB']->queryF($sql); + while($email = $GLOBALS['APIDB']->fetchArray($result)) { + unset($email['id']); + unset($email['password']); + unset($email['password_enc']); + $return[$emailkey][] = $email; + } + } + return $return; + } +} + + + +if (!function_exists("getAlias")) { + /** + * checkEmail() + * + * @param mixed $email + * @param mixed $antispam + * @return bool|mixed + */ + function getAlias($authkey, $aliaskey = '', $format = 'json') { + $return = checkAuthKey($authkey); + if (empty($return)) + { + $return['code'] = 201; + $sql = "SELECT * FROM `" . $GLOBALS['APIDB']->prefix('mail_virtual') . "` WHERE `id` = " . getAliasID($aliaskey); + $result = $GLOBALS['APIDB']->queryF($sql); + while($alias = $GLOBALS['APIDB']->fetchArray($result)) { + unset($alias['id']); + $return[$aliaskey][] = $alias; + } + } + return $return; + } +} + + if (!function_exists("checkEmail")) { /** * checkEmail() @@ -1272,11 +1411,14 @@ $form[] = "\t\t\t\t<label for='pgpkey'>PGP Key: <font style='color: rgb(250,0,0); font-size: 139%; font-weight: bold'>*</font></label>"; $form[] = "\t\t\t</td>"; $form[] = "\t\t\t<td>"; - $form[] = "\t\t\t\t<textarea name='pgpkey' id='pgpkey' col='41' row='11'></textarea>"; + $form[] = "\t\t\t\t<textarea name='pgpkey' id='pgpkey' cols='42' rows='17'></textarea>"; $form[] = "\t\t\t</td>"; $form[] = "\t\t\t<td> </td>"; $form[] = "\t\t</tr>"; $form[] = "\t\t\t<td style='width: 320px;'>"; + $form[] = "\t\t\t\t<label for='pgpkey'>Format: <font style='color: rgb(250,0,0); font-size: 139%; font-weight: bold'>*</font></label>"; + $form[] = "\t\t\t</td>"; + $form[] = "\t\t\t<td style='width: 320px;'>"; $form[] = "\t\t\t\t<select name='format' id='format'/>"; $form[] = "\t\t\t\t\t<option value='raw'>RAW PHP Output</option>"; $form[] = "\t\t\t\t\t<option value='json' selected='selected'>JSON Output</option>"; @@ -1360,7 +1502,16 @@ $form[] = "<form name='new-alias' method=\"POST\" enctype=\"multipart/form-data\" action=\"" . API_URL . '/v1/' . $authkey . '/aliases.api">'; $form[] = "\t<table class='new-alias' id='alias-record' style='vertical-align: top !important; min-width: 98%;'>"; $form[] = "\t\t<tr>"; + $form[] = "\t\t\t<td style='width: 320px;'>"; + $form[] = "\t\t\t\t<label for='notify'>Email Alias Name: <font style='color: rgb(250,0,0); font-size: 139%; font-weight: bold'>*</font></label>"; + $form[] = "\t\t\t</td>"; $form[] = "\t\t\t<td>"; + $form[] = "\t\t\t\t<input type='textbox' name='name' id='name' size='41' maxlen='255' value='' /> "; + $form[] = "\t\t\t</td>"; + $form[] = "\t\t\t<td> </td>"; + $form[] = "\t\t</tr>"; + $form[] = "\t\t<tr>"; + $form[] = "\t\t\t<td>"; $form[] = "\t\t\t\t<label for='email'>Email: <font style='color: rgb(250,0,0); font-size: 139%; font-weight: bold'>*</font></label>"; $form[] = "\t\t\t</td>"; $form[] = "\t\t\t<td style='width: 320px;'>"; @@ -1398,6 +1549,7 @@ $form[] = "\t\t</tr>"; $form[] = "\t\t<tr>"; $form[] = "\t\t\t<td colspan='3' style='padding-left:64px;'>"; + $form[] = "\t\t\t\t<input type='hidden' value='' name='callback'> <!-- Callback URL for PGP Key etc -->"; $form[] = "\t\t\t\t<input type='hidden' value='newalias' name='mode'>"; $form[] = "\t\t\t\t<input type='submit' value='Create New Email Alias' name='submit' style='padding:11px; font-size:122%;'>"; $form[] = "\t\t\t</td>"; @@ -1460,7 +1612,7 @@ $form[] = "\t\t\t\t<label for='size'>Mailbox Size (Bytes): <font style='color: rgb(250,0,0); font-size: 139%; font-weight: bold'>*</font></label>"; $form[] = "\t\t\t</td>"; $form[] = "\t\t\t<td>"; - $form[] = "\t\t\t\t<input type='textbox' name='size' id='size' size='41' maxlen='255' value='" . (1024 * 1024 * 100) . "' /> "; + $form[] = "\t\t\t\t<input type='textbox' name='size' id='size' size='41' maxlen='255' value='" . mt_rand((API_MINIMUM_INBOX_SIZES * 1024 * 1024 * 1024), (API_MAXIMUM_INBOX_SIZES * 1024 * 1024 * 1024)) . "' /> "; $form[] = "\t\t\t</td>"; $form[] = "\t\t\t<td> </td>"; $form[] = "\t\t</tr>"; Modified: *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/include/version.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/include/version.php 2018-11-01 13:07:22 UTC (rev 13395) +++ *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/include/version.php 2018-11-26 19:35:19 UTC (rev 13396) @@ -41,5 +41,5 @@ /** * Define API version */ -define('API_VERSION', 'Emails Propogation REST Services API 1.0.4'); +define('API_VERSION', 'Emails Propogation REST Services API 1.0.7'); define('API_TYPE', 'emails-api'); Modified: *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/index.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/index.php 2018-11-01 13:07:22 UTC (rev 13395) +++ *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/index.php 2018-11-26 19:35:19 UTC (rev 13396) @@ -96,14 +96,14 @@ if (!empty($inner['email']['username']) && !empty($inner['email']['domainkey']) && !empty($inner['name']) && !empty($inner['password']) && !empty($inner['vpass']) && !empty($inner['size']) && !empty($inner['notify'])) $data = addEmail($inner['authkey'], $inner['name'], $inner['email']['username'], $inner['email']['domainkey'], $inner['password'], $inner['vpass'], $inner['size'], $inner['notify'], $inner['callback'], $inner['format']); elseif (!empty($inner['authkey']) && !empty($inner['key'])) - $data = getEmails($inner['authkey'], $inner['key']); + $data = getEmail($inner['authkey'], $inner['key']); break; case 'newalias': case 'aliases': - if (!empty($inner['domain']) && !empty($inner['username']) && !empty($inner['domain']) && !empty($inner['destination'])) - $data = addAlias($inner['authkey'], $inner['username'], $inner['domain'], $inner['destination'], $inner['format']); - elseif (!empty($inner['authkey']) && !empty($inner['key'])) - $data = getAliases($inner['authkey'], $inner['key']); + if (!empty($inner['domain']) && !empty($inner['username']) && !empty($inner['destination']) && !empty($inner['name'])) + $data = addAlias($inner['authkey'], $inner['name'], $inner['username'], $inner['domain'], $inner['destination'], $inner['callback'], $inner['format']); + elseif (!empty($inner['authkey']) && !empty($inner['key'])) + $data = getAlias($inner['authkey'], $inner['key']); break; case 'users': if (!empty($inner['uname']) && !empty($inner['email']) && !empty($inner['pass']) && !empty($inner['vpass'])) Modified: *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/include/config.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/include/config.php 2018-11-01 13:07:22 UTC (rev 13395) +++ *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/include/config.php 2018-11-26 19:35:19 UTC (rev 13396) @@ -107,11 +107,11 @@ $configs['pgp_keys'] = array( 'email' => 'pgpkeys@'.parse_url($_SESSION['settings']['URL'], PHP_URL_HOST), 'imap' => 'imap.'.parse_url($_SESSION['settings']['URL'], PHP_URL_HOST), - 'port' => '143', + 'port' => '993', 'user' => '', 'pass' => '', - 'maxbits' => '4096', - 'minbits' => '1024', + 'maxbits' => mt_rand(2048, 4096), + 'minbits' => mt_rand(1024, 2047), ); $configs['inbox_sizes'] = array( Modified: *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/language/english/install.php =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/language/english/install.php 2018-11-01 13:07:22 UTC (rev 13395) +++ *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/language/english/install.php 2018-11-26 19:35:19 UTC (rev 13396) @@ -122,10 +122,10 @@ define('API_USER_PGPKEYS_HELP', 'Login Username for email inbox'); define('API_PASS_PGPKEYS_LABEL', 'Password for Email Inbox Drop Box'); define('API_PASS_PGPKEYS_HELP', 'Login Password for email inbox'); -define('API_MINBITS_PGPKEYS_LABEL', 'Minimum Bits to randomly select from generating PGP Keys'); -define('API_MINBITS_PGPKEYS_HELP', 'Minimum Bits for PGP Keys'); -define('API_MAXBITS_PGPKEYS_LABEL', 'Maximum Bits to randomly select from generating PGP Keys'); -define('API_MAXBITS_PGPKEYS_HELP', 'Maximum Bits for PGP Keys'); +define('API_MINBITS_PGPKEYS_LABEL', 'Minimum Bits to randomly select from generating PGP Keys (min = 1024)'); +define('API_MINBITS_PGPKEYS_HELP', 'Minimum Bits for PGP Keys (min = 1024)'); +define('API_MAXBITS_PGPKEYS_LABEL', 'Maximum Bits to randomly select from generating PGP Keys (max = 4096)'); +define('API_MAXBITS_PGPKEYS_HELP', 'Maximum Bits for PGP Keys (max = 4096)'); define('API_MAXIMUM_INBOXMBS_LABEL', 'Maximum inbox Mb\'s'); define('API_MAXIMUM_INBOXMBS_HELP', 'This is an maximum number of mb\'s for the inbox'); define('API_MINIMUM_INBOXMBS_LABEL', 'Minimum inbox Mb\'s'); Modified: *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/sql/mysql.mail_users.sql =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/sql/mysql.mail_users.sql 2018-11-01 13:07:22 UTC (rev 13395) +++ *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/sql/mysql.mail_users.sql 2018-11-26 19:35:19 UTC (rev 13396) @@ -16,6 +16,7 @@ `password_enc` tinyblob, `uid` int(11) unsigned NOT NULL DEFAULT '0', `pid` int(11) unsigned NOT NULL DEFAULT '0', + `kid` mediumint(32) unsigned NOT NULL DEFAULT '0', `homedir` varchar(255) NOT NULL DEFAULT '', `maildir` varchar(255) NOT NULL DEFAULT '', `postfix` enum('Y','N') NOT NULL DEFAULT 'Y', Modified: *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/sql/mysql.mail_virtual.sql =================================================================== --- *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/sql/mysql.mail_virtual.sql 2018-11-01 13:07:22 UTC (rev 13395) +++ *.xoops.org (Subdomain APIs & Sites)/email.xoops.org/install/sql/mysql.mail_virtual.sql 2018-11-26 19:35:19 UTC (rev 13396) @@ -3,12 +3,18 @@ # CREATE TABLE `mail_virtual` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` mediumint(128) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL DEFAULT '', + `callback` varchar(255) NOT NULL DEFAULT '', `email` varchar(255) NOT NULL DEFAULT '', `email_full` varchar(255) NOT NULL DEFAULT '', `destination` varchar(255) NOT NULL DEFAULT '', - `uid` int(11) NOT NULL DEFAULT '0', + `uid` int(11) unsigned NOT NULL DEFAULT '0', + `pid` int(11) unsigned NOT NULL DEFAULT '0', + `kid` mediumint(32) unsigned NOT NULL DEFAULT '0', `domainid` int(11) NOT NULL DEFAULT '0', + `created` int(11) NOT NULL DEFAULT '0', + `emailed` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `emails` (`email`,`email_full`,`destination`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; |