aboutsummaryrefslogtreecommitdiffstats
path: root/install
diff options
context:
space:
mode:
Diffstat (limited to 'install')
-rw-r--r--install/INSTALL.txt270
-rw-r--r--install/database.sql921
-rw-r--r--install/htconfig.sample.php93
3 files changed, 1284 insertions, 0 deletions
diff --git a/install/INSTALL.txt b/install/INSTALL.txt
new file mode 100644
index 000000000..e6adbba7d
--- /dev/null
+++ b/install/INSTALL.txt
@@ -0,0 +1,270 @@
+
+Friendica Installation
+
+We've tried very hard to ensure that Friendica will run on commodity hosting
+platforms - such as those used to host Wordpress blogs and Drupal websites.
+But be aware that Friendica is more than a simple web application. It is a
+complex communications system which more closely resembles an email server
+than a web server. For reliability and performance, messages are delivered in
+the background and are queued for later delivery when sites are down. This
+kind of functionality requires a bit more of the host system than the typical
+blog. Not every PHP/MySQL hosting provider will be able to support Friendica.
+Many will. But please review the requirements and confirm these with your
+hosting provider prior to installation.
+
+Before you begin: Choose a domain name or subdomain name for your server.
+Put some thought into this - because changing it is currently not-supported.
+Things will break, and some of your friends may have difficulty communicating
+with you. We plan to address this limitation in a future release. Also decide
+if you wish to connect with members of the Diaspora network, as this will
+impact the installation requirements.
+
+Decide if you will use SSL and obtain an SSL cert. Communications with the
+Diaspora network MAY require both SSL AND an SSL cert signed by a CA which is
+recognised by the major browsers. Friendica will work with self-signed certs
+but Diaspora communication may not. For best results, install your cert PRIOR
+to installing Friendica and when visiting your site for the initial
+installation in step 5, please use the https: link. (Use the http: or non-SSL
+link if your cert is self-signed).
+
+
+1. Requirements
+ - Apache with mod-rewrite enabled and "Options All" so you can use a
+local .htaccess file
+
+ - PHP 5.3+. The later the better.
+
+ - PHP *command line* access with register_argc_argv set to true in the
+php.ini file [or see 'poormancron' in section 8]
+
+ - curl, gd (with at least jpeg support), mysql, mbstring, mcrypt, and openssl extensions
+
+ - some form of email server or email gateway such that PHP mail() works
+
+ - Mysql 5.x
+
+ - ability to schedule jobs with cron (Linux/Mac) or Scheduled Tasks
+(Windows) [Note: other options are presented in Section 8 of this document]
+
+ - Installation into a top-level domain or sub-domain (without a
+directory/path component in the URL) is preferred. This is REQUIRED if
+you wish to communicate with the Diaspora network.
+
+2. Unpack the Friendica files into the root of your web server document area.
+
+ - If you copy the directory tree to your webserver, make sure
+ that you also copy .htaccess - as "dot" files are often hidden
+ and aren't normally copied.
+
+3. Create an empty database and note the access details (hostname, username,
+password, database name).
+
+
+4. If you know in advance that it will be impossible for the web server to
+write or create files in your web directory, create an empty file called
+.htconfig.php and make it writable by the web server.
+
+5. Visit your website with a web browser and follow the instructions. Please
+note any error messages and correct these before continuing. If you are using
+SSL with a known signature authority (recommended), use the https: link to your
+website. If you are using a self-signed cert or no cert, use the http: link.
+
+6. *If* the automated installation fails for any reason, check the following:
+
+ - ".htconfig.php" exists
+ If not, edit htconfig.php and change system settings. Rename
+to .htconfig.php
+ - Database is populated.
+ If not, import the contents of "database.sql" with phpmyadmin
+or mysql command line
+
+7. At this point visit your website again, and register your personal account.
+Registration errors should all be recoverable automatically.
+If you get any *critical* failure at this point, it generally indicates the
+database was not installed correctly. You might wish to move/rename
+.htconfig.php to another name and empty (called 'dropping') the database
+tables, so that you can start fresh.
+
+****************************************************************************
+****************************************************************************
+******** THIS NEXT STEP IS IMPORTANT!!!! ***********
+****************************************************************************
+****************************************************************************
+
+8. Set up a cron job or scheduled task to run the poller once every 5-10
+minutes to pick up the recent "public" postings of your friends. Example:
+
+ cd /base/directory; /path/to/php include/poller.php
+
+Change "/base/directory", and "/path/to/php" as appropriate for your situation.
+
+If you are using a Linux server, run "crontab -e" and add a line like the
+one shown, substituting for your unique paths and settings:
+
+*/10 * * * * cd /home/myname/mywebsite; /usr/bin/php include/poller.php
+
+You can generally find the location of PHP by executing "which php". If you
+have troubles with this section please contact your hosting provider for
+assistance. Friendica will not work correctly if you cannot perform this step.
+
+You should also be sure that $a->config['php_path'] is set correctly, it should
+look like (changing it to the correct PHP location)
+
+$a->config['php_path'] = '/usr/local/php53/bin/php'
+
+Alternative: You may be able to use the 'poormancron' plugin to perform this
+step if you are using a recent Friendica release. 'poormancron' may result in
+perfomance and memory issues and is only suitable for small sites with one or
+two users and a handful of contacts. To do this, edit the file
+".htconfig.php" and look for a line describing your plugins. On a fresh
+installation, it will look like
+
+$a->config['system']['addon'] = 'js_upload';
+
+This indicates the "js_upload" addon module is enabled. You may add additional
+addons/plugins using this same line in the configuration file. Change it to
+read
+
+$a->config['system']['addon'] = 'js_upload,poormancron';
+
+and save your changes.
+
+
+
+#####################################################################
+
+ If things don't work...
+
+#####################################################################
+
+
+#####################################################################
+- If you get the message
+ "System is currently unavailable. Please try again later"
+#####################################################################
+
+ Check your database settings. It usually means your database could not
+be opened or accessed. If the database resides on the same machine, check that
+the database server name is "localhost".
+
+#####################################################################
+- 500 Internal Error
+#####################################################################
+
+ This could be the result of one of our Apache directives not being
+supported by your version of Apache. Examine your apache server logs.
+ You might remove the line "Options -Indexes" from the .htaccess file if
+you are using a Windows server as this has been known to cause problems.
+Also check your file permissions. Your website and all contents must generally
+be world-readable.
+
+ It is likely that your web server reported the source of the problem in
+its error log files. Please review these system error logs to determine what
+caused the problem. Often this will need to be resolved with your hosting
+provider or (if self-hosted) your web server configuration.
+
+#####################################################################
+- 400 and 4xx "File not found" errors
+#####################################################################
+
+ First check your file permissions. Your website and all contents must
+generally be world-readable.
+
+ Ensure that mod-rewite is installed and working, and that your
+.htaccess file is being used. To verify the latter, create a file test.out
+containing the word "test" in the top directory of Friendica, make it world
+readable and point your web browser to
+
+http://yoursitenamehere.com/test.out
+
+ This file should be blocked. You should get a permission denied message.
+
+ If you see the word "test" your Apache configuration is not allowing
+your .htaccess file to be used (there are rules in this file to block access
+to any file with .out at the end, as these are typically used for system logs).
+
+ Make certain the .htaccess file exists and is readable by everybody, then
+look for the existence of "AllowOverride None" in the Apache server
+configuration for your site. This will need to be changed to
+"AllowOverride All".
+
+ If you do not see the word "test", your .htaccess is working, but it is
+likely that mod-rewrite is not installed in your web server or is not working.
+
+ On most flavour of Linux,
+
+% a2enmod rewrite
+% /etc/init.d/apache2 restart
+
+ Consult your hosting provider, experts on your particular Linux
+distribution or (if Windows) the provider of your Apache server software if
+you need to change either of these and can not figure out how. There is
+a lot of help available on the web. Google "mod-rewrite" along with the
+name of your operating system distribution or Apache package (if using
+Windows).
+
+
+#####################################################################
+- If you are unable to write the file .htconfig.php during installation
+due to permissions issues:
+#####################################################################
+
+ create an empty file with that name and give it world-write permission.
+For Linux:
+
+% touch .htconfig.php
+% chmod 777 .htconfig.php
+
+Retry the installation. As soon as the database has been created,
+
+******* this is important *********
+
+% chmod 755 .htconfig.php
+
+#####################################################################
+- Some configurations with "suhosin" security are configured without
+an ability to run external processes. Friendica requires this ability.
+Following are some notes provided by one of our members.
+#####################################################################
+
+On my server I use the php protection system Suhosin
+[http://www.hardened-php.net/suhosin/]. One of the things it does is to block
+certain functions like proc_open, as configured in /etc/php5/conf.d/suhosin.ini:
+
+ suhosin.executor.func.blacklist = proc_open, ...
+
+For those sites like Friendica that really need these functions they can be
+enabled, e.g. in /etc/apache2/sites-available/friendica:
+
+ <Directory /var/www/friendica/>
+ php_admin_value suhosin.executor.func.blacklist none
+ php_admin_value suhosin.executor.eval.blacklist none
+ </Directory>
+
+This enables every function for Friendica if accessed via browser, but not for
+the cronjob that is called via php command line. I attempted to enable it for
+cron by using something like
+
+ */10 * * * * cd /var/www/friendica/friendica/ && sudo -u www-data /usr/bin/php
+-d suhosin.executor.func.blacklist=none -d suhosin.executor.eval.blacklist=none
+-f include/poller.php
+
+This worked well for simple test cases, but the friendica-cron still failed with
+a fatal error:
+suhosin[22962]: ALERT - function within blacklist called: proc_open() (attacker
+'REMOTE_ADDR not set', file '/var/www/friendica/friendica/boot.php', line 1341)
+
+After a while I noticed, that include/poller.php calls further php script via
+proc_open. These scripts themselves also use proc_open and fail, because they
+are NOT called with -d suhosin.executor.func.blacklist=none.
+
+So the simple solution is to put the correct parameters into .htconfig.php:
+ // Location of PHP command line processor
+ $a->config['php_path'] = '/usr/bin/php -d suhosin.executor.func.blacklist=none
+-d suhosin.executor.eval.blacklist=none';
+
+
+This is obvious as soon as you notice that the friendica-cron uses proc_open to
+execute php-scripts that also use proc_open, but it took me quite some time to
+find that out. I hope this saves some time for other people using suhosin with
+function blacklists.
diff --git a/install/database.sql b/install/database.sql
new file mode 100644
index 000000000..5c0e2d85b
--- /dev/null
+++ b/install/database.sql
@@ -0,0 +1,921 @@
+SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+
+
+CREATE TABLE IF NOT EXISTS `abook` (
+ `abook_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `abook_account` int(10) unsigned NOT NULL,
+ `abook_channel` int(10) unsigned NOT NULL,
+ `abook_xchan` char(255) NOT NULL DEFAULT '',
+ `abook_my_perms` int(11) NOT NULL DEFAULT '0',
+ `abook_their_perms` int(11) NOT NULL DEFAULT '0',
+ `abook_closeness` tinyint(3) unsigned NOT NULL DEFAULT '255',
+ `abook_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `abook_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `abook_connnected` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `abook_flags` int(11) NOT NULL DEFAULT '0',
+ `abook_profile` char(64) NOT NULL DEFAULT '',
+ PRIMARY KEY (`abook_id`),
+ KEY `abook_account` (`abook_account`),
+ KEY `abook_channel` (`abook_channel`),
+ KEY `abook_xchan` (`abook_xchan`),
+ KEY `abook_my_perms` (`abook_my_perms`),
+ KEY `abook_their_perms` (`abook_their_perms`),
+ KEY `abook_closeness` (`abook_closeness`),
+ KEY `abook_created` (`abook_created`),
+ KEY `abook_updated` (`abook_updated`),
+ KEY `abook_connnected` (`abook_connnected`),
+ KEY `abook_flags` (`abook_flags`),
+ KEY `abook_profile` (`abook_profile`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `account` (
+ `account_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `account_parent` int(10) unsigned NOT NULL DEFAULT '0',
+ `account_default_channel` int(10) unsigned NOT NULL DEFAULT '0',
+ `account_salt` char(32) NOT NULL DEFAULT '',
+ `account_password` char(255) NOT NULL DEFAULT '',
+ `account_email` char(255) NOT NULL DEFAULT '',
+ `account_language` char(16) NOT NULL DEFAULT 'en',
+ `account_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `account_lastlog` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `account_flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `account_roles` int(10) unsigned NOT NULL DEFAULT '0',
+ `account_reset` char(255) NOT NULL DEFAULT '',
+ `account_expires` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `account_expire_notified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `account_service_class` char(32) NOT NULL DEFAULT '',
+ PRIMARY KEY (`account_id`),
+ KEY `account_email` (`account_email`),
+ KEY `account_service_class` (`account_service_class`),
+ KEY `account_parent` (`account_parent`),
+ KEY `account_flags` (`account_flags`),
+ KEY `account_roles` (`account_roles`),
+ KEY `account_lastlog` (`account_lastlog`),
+ KEY `account_expires` (`account_expires`),
+ KEY `account_default_channel` (`account_default_channel`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `addon` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `name` char(255) NOT NULL,
+ `version` char(255) NOT NULL,
+ `installed` tinyint(1) NOT NULL DEFAULT '0',
+ `hidden` tinyint(1) NOT NULL DEFAULT '0',
+ `timestamp` bigint(20) NOT NULL DEFAULT '0',
+ `plugin_admin` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `hidden` (`hidden`),
+ KEY `name` (`name`),
+ KEY `installed` (`installed`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `attach` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `hash` char(64) NOT NULL DEFAULT '',
+ `filename` char(255) NOT NULL DEFAULT '',
+ `filetype` char(64) NOT NULL DEFAULT '',
+ `filesize` int(10) unsigned NOT NULL DEFAULT '0',
+ `data` longblob NOT NULL,
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `aid` (`aid`),
+ KEY `uid` (`uid`),
+ KEY `hash` (`hash`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `auth_codes` (
+ `id` varchar(40) NOT NULL,
+ `client_id` varchar(20) NOT NULL,
+ `redirect_uri` varchar(200) NOT NULL,
+ `expires` int(11) NOT NULL,
+ `scope` varchar(250) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `cache` (
+ `k` char(255) NOT NULL,
+ `v` text NOT NULL,
+ `updated` datetime NOT NULL,
+ PRIMARY KEY (`k`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `challenge` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `challenge` char(255) NOT NULL,
+ `dfrn-id` char(255) NOT NULL,
+ `expire` int(11) NOT NULL,
+ `type` char(255) NOT NULL,
+ `last_update` char(255) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `channel` (
+ `channel_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `channel_account_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_primary` tinyint(1) unsigned NOT NULL DEFAULT '0',
+ `channel_name` char(255) NOT NULL DEFAULT '',
+ `channel_address` char(255) NOT NULL DEFAULT '',
+ `channel_guid` char(255) NOT NULL DEFAULT '',
+ `channel_guid_sig` char(255) NOT NULL DEFAULT '',
+ `channel_hash` char(255) NOT NULL DEFAULT '',
+ `channel_timezone` char(128) NOT NULL DEFAULT 'UTC',
+ `channel_location` char(255) NOT NULL DEFAULT '',
+ `channel_theme` char(255) NOT NULL DEFAULT '',
+ `channel_startpage` char(255) NOT NULL DEFAULT '',
+ `channel_pubkey` text NOT NULL,
+ `channel_prvkey` text NOT NULL,
+ `channel_notifyflags` int(10) unsigned NOT NULL DEFAULT '65535',
+ `channel_pageflags` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_max_anon_mail` int(10) unsigned NOT NULL DEFAULT '10',
+ `channel_max_friend_req` int(10) unsigned NOT NULL DEFAULT '10',
+ `channel_expire_days` int(11) NOT NULL DEFAULT '0',
+ `channel_passwd_reset` char(255) NOT NULL DEFAULT '',
+ `channel_default_gid` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_allow_cid` mediumtext NOT NULL,
+ `channel_allow_gid` mediumtext NOT NULL,
+ `channel_deny_cid` mediumtext NOT NULL,
+ `channel_deny_gid` mediumtext NOT NULL,
+ `channel_r_stream` tinyint(3) unsigned NOT NULL DEFAULT '128',
+ `channel_r_profile` tinyint(3) unsigned NOT NULL DEFAULT '128',
+ `channel_r_photos` tinyint(3) unsigned NOT NULL DEFAULT '128',
+ `channel_r_abook` tinyint(3) unsigned NOT NULL DEFAULT '128',
+ `channel_w_stream` tinyint(3) unsigned NOT NULL DEFAULT '128',
+ `channel_w_wall` tinyint(3) unsigned NOT NULL DEFAULT '128',
+ `channel_w_tagwall` tinyint(3) unsigned NOT NULL DEFAULT '128',
+ `channel_w_comment` tinyint(3) unsigned NOT NULL DEFAULT '128',
+ `channel_w_mail` tinyint(3) unsigned NOT NULL DEFAULT '128',
+ `channel_w_photos` tinyint(3) unsigned NOT NULL DEFAULT '128',
+ `channel_w_chat` tinyint(3) unsigned NOT NULL DEFAULT '128',
+ PRIMARY KEY (`channel_id`),
+ KEY `channel_account_id` (`channel_account_id`),
+ KEY `channel_primary` (`channel_primary`),
+ KEY `channel_name` (`channel_name`),
+ KEY `channel_address` (`channel_address`),
+ KEY `channel_timezone` (`channel_timezone`),
+ KEY `channel_location` (`channel_location`),
+ KEY `channel_theme` (`channel_theme`),
+ KEY `channel_notifyflags` (`channel_notifyflags`),
+ KEY `channel_pageflags` (`channel_pageflags`),
+ KEY `channel_max_anon_mail` (`channel_max_anon_mail`),
+ KEY `channel_max_friend_req` (`channel_max_friend_req`),
+ KEY `channel_default_gid` (`channel_default_gid`),
+ KEY `channel_r_stream` (`channel_r_stream`),
+ KEY `channel_r_profile` (`channel_r_profile`),
+ KEY `channel_r_photos` (`channel_r_photos`),
+ KEY `channel_r_abook` (`channel_r_abook`),
+ KEY `channel_w_stream` (`channel_w_stream`),
+ KEY `channel_w_wall` (`channel_w_wall`),
+ KEY `channel_w_tagwall` (`channel_w_tagwall`),
+ KEY `channel_w_comment` (`channel_w_comment`),
+ KEY `channel_w_mail` (`channel_w_mail`),
+ KEY `channel_w_photos` (`channel_w_photos`),
+ KEY `channel_w_chat` (`channel_w_chat`),
+ KEY `channel_guid` (`channel_guid`),
+ KEY `channel_guid_sig` (`channel_guid_sig`),
+ KEY `channel_hash` (`channel_hash`),
+ KEY `channel_expire_days` (`channel_expire_days`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `clients` (
+ `client_id` varchar(20) NOT NULL,
+ `pw` varchar(20) NOT NULL,
+ `redirect_uri` varchar(200) NOT NULL,
+ `name` text,
+ `icon` text,
+ `uid` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`client_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `config` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cat` char(255) CHARACTER SET ascii NOT NULL,
+ `k` char(255) CHARACTER SET ascii NOT NULL,
+ `v` text NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `access` (`cat`,`k`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `contact` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(11) NOT NULL COMMENT 'owner uid',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `my_perms` int(10) unsigned NOT NULL DEFAULT '0',
+ `their_perms` int(10) unsigned NOT NULL DEFAULT '0',
+ `self` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'boolean 1 == info for local UID, primarily name and photo to use in item displays.',
+ `remote_self` tinyint(1) NOT NULL DEFAULT '0',
+ `rel` tinyint(1) NOT NULL DEFAULT '0',
+ `duplex` tinyint(1) NOT NULL DEFAULT '0',
+ `network` char(255) NOT NULL,
+ `name` char(255) NOT NULL,
+ `nick` char(255) NOT NULL,
+ `attag` char(255) NOT NULL,
+ `photo` text NOT NULL COMMENT 'remote photo URL initially until approved',
+ `thumb` text NOT NULL,
+ `micro` text NOT NULL,
+ `site_pubkey` text NOT NULL,
+ `issued_id` char(255) NOT NULL,
+ `dfrn_id` char(255) NOT NULL,
+ `url` char(255) NOT NULL,
+ `nurl` char(255) NOT NULL,
+ `addr` char(255) NOT NULL,
+ `alias` char(255) NOT NULL,
+ `pubkey` text NOT NULL,
+ `prvkey` text NOT NULL,
+ `batch` char(255) NOT NULL,
+ `request` text NOT NULL,
+ `notify` char(255) NOT NULL,
+ `poll` text NOT NULL,
+ `confirm` text NOT NULL,
+ `poco` text NOT NULL,
+ `aes_allow` tinyint(1) NOT NULL DEFAULT '0',
+ `last_update` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `success_update` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `name_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `uri_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `avatar_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `term_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `priority` tinyint(3) NOT NULL,
+ `blocked` tinyint(1) NOT NULL DEFAULT '1',
+ `readonly` tinyint(1) NOT NULL DEFAULT '0',
+ `writable` tinyint(1) NOT NULL DEFAULT '0',
+ `forum` tinyint(1) NOT NULL DEFAULT '0',
+ `prv` tinyint(1) NOT NULL DEFAULT '0',
+ `hidden` tinyint(1) NOT NULL DEFAULT '0',
+ `archive` tinyint(1) NOT NULL DEFAULT '0',
+ `pending` tinyint(1) NOT NULL DEFAULT '1',
+ `rating` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0-5 reputation, 0 unknown, 1 call police, 5 inscrutable',
+ `reason` text NOT NULL COMMENT 'why a rating was given - will help friends decide to make friends or not',
+ `closeness` tinyint(2) NOT NULL DEFAULT '99',
+ `info` mediumtext NOT NULL,
+ `profile_id` int(11) NOT NULL DEFAULT '0' COMMENT 'which profile to display - 0 is public default',
+ `bdyear` char(4) NOT NULL COMMENT 'birthday notify flag',
+ `bd` date NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `self` (`self`),
+ KEY `blocked` (`blocked`),
+ KEY `readonly` (`readonly`),
+ KEY `network` (`network`),
+ KEY `name` (`name`),
+ KEY `nick` (`nick`),
+ KEY `attag` (`attag`),
+ KEY `addr` (`addr`),
+ KEY `url` (`url`),
+ KEY `batch` (`batch`),
+ KEY `nurl` (`nurl`),
+ KEY `pending` (`pending`),
+ KEY `hidden` (`hidden`),
+ KEY `archive` (`archive`),
+ KEY `forum` (`forum`),
+ KEY `notify` (`notify`),
+ KEY `my_perms` (`my_perms`),
+ KEY `their_perms` (`their_perms`),
+ KEY `aid` (`aid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `deliverq` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cmd` char(32) NOT NULL,
+ `item` int(11) NOT NULL,
+ `contact` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `item` (`item`),
+ KEY `contact` (`contact`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `event` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `account` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(11) NOT NULL,
+ `cid` int(11) NOT NULL,
+ `message_id` char(255) NOT NULL,
+ `created` datetime NOT NULL,
+ `edited` datetime NOT NULL,
+ `start` datetime NOT NULL,
+ `finish` datetime NOT NULL,
+ `summary` text NOT NULL,
+ `desc` text NOT NULL,
+ `location` text NOT NULL,
+ `type` char(255) NOT NULL,
+ `nofinish` tinyint(1) NOT NULL DEFAULT '0',
+ `adjust` tinyint(1) NOT NULL DEFAULT '1',
+ `ignore` tinyint(1) NOT NULL DEFAULT '0',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `cid` (`cid`),
+ KEY `uri` (`message_id`),
+ KEY `type` (`type`),
+ KEY `start` (`start`),
+ KEY `finish` (`finish`),
+ KEY `adjust` (`adjust`),
+ KEY `nofinish` (`nofinish`),
+ KEY `ignore` (`ignore`),
+ KEY `account` (`account`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `fcontact` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `url` char(255) NOT NULL,
+ `name` char(255) NOT NULL,
+ `photo` char(255) NOT NULL,
+ `request` char(255) NOT NULL,
+ `nick` char(255) NOT NULL,
+ `addr` char(255) NOT NULL,
+ `batch` char(255) NOT NULL,
+ `notify` char(255) NOT NULL,
+ `poll` char(255) NOT NULL,
+ `confirm` char(255) NOT NULL,
+ `priority` tinyint(1) NOT NULL,
+ `network` char(32) NOT NULL,
+ `alias` char(255) NOT NULL,
+ `pubkey` text NOT NULL,
+ `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `addr` (`addr`),
+ KEY `network` (`network`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `ffinder` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(10) unsigned NOT NULL,
+ `cid` int(10) unsigned NOT NULL,
+ `fid` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `cid` (`cid`),
+ KEY `fid` (`fid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `fserver` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `server` char(255) NOT NULL,
+ `posturl` char(255) NOT NULL,
+ `key` text NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `server` (`server`),
+ KEY `server_2` (`server`),
+ KEY `posturl` (`posturl`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `fsuggest` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL,
+ `cid` int(11) NOT NULL,
+ `name` char(255) NOT NULL,
+ `url` char(255) NOT NULL,
+ `request` char(255) NOT NULL,
+ `photo` char(255) NOT NULL,
+ `note` text NOT NULL,
+ `created` datetime NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `gcign` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL,
+ `gcid` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `gcid` (`gcid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `gcontact` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` char(255) NOT NULL,
+ `url` char(255) NOT NULL,
+ `nurl` char(255) NOT NULL,
+ `photo` char(255) NOT NULL,
+ `connect` char(255) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `nurl` (`nurl`),
+ KEY `name` (`name`),
+ KEY `url` (`url`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `glink` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cid` int(11) NOT NULL,
+ `uid` int(11) NOT NULL,
+ `gcid` int(11) NOT NULL,
+ `zcid` int(11) NOT NULL,
+ `updated` datetime NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `cid` (`cid`),
+ KEY `uid` (`uid`),
+ KEY `gcid` (`gcid`),
+ KEY `zcid` (`zcid`),
+ KEY `updated` (`updated`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `group` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(10) unsigned NOT NULL,
+ `visible` tinyint(1) NOT NULL DEFAULT '0',
+ `deleted` tinyint(1) NOT NULL DEFAULT '0',
+ `name` char(255) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `visible` (`visible`),
+ KEY `deleted` (`deleted`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `group_member` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(10) unsigned NOT NULL,
+ `gid` int(10) unsigned NOT NULL,
+ `contact-id` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `gid` (`gid`),
+ KEY `contact-id` (`contact-id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `guid` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `guid` char(64) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `guid` (`guid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `hook` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `hook` char(255) NOT NULL,
+ `file` char(255) NOT NULL,
+ `function` char(255) NOT NULL,
+ `priority` int(11) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `hook` (`hook`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `hubloc` (
+ `hubloc_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `hubloc_guid` char(255) NOT NULL DEFAULT '',
+ `hubloc_guid_sig` char(255) NOT NULL,
+ `hubloc_hash` char(255) NOT NULL,
+ `hubloc_flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `hubloc_url` char(255) NOT NULL DEFAULT '',
+ `hubloc_url_sig` char(255) NOT NULL,
+ `hubloc_callback` char(255) NOT NULL DEFAULT '',
+ `hubloc_connect` char(255) NOT NULL DEFAULT '',
+ `hubloc_sitekey` text NOT NULL,
+ PRIMARY KEY (`hubloc_id`),
+ KEY `hubloc_url` (`hubloc_url`),
+ KEY `hubloc_guid` (`hubloc_guid`),
+ KEY `hubloc_flags` (`hubloc_flags`),
+ KEY `hubloc_guid_sig` (`hubloc_guid_sig`),
+ KEY `hubloc_url_sig` (`hubloc_url_sig`),
+ KEY `hubloc_connect` (`hubloc_connect`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `intro` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(10) unsigned NOT NULL,
+ `fid` int(11) NOT NULL DEFAULT '0',
+ `contact-id` int(11) NOT NULL,
+ `knowyou` tinyint(1) NOT NULL,
+ `duplex` tinyint(1) NOT NULL DEFAULT '0',
+ `note` text NOT NULL,
+ `hash` char(255) NOT NULL,
+ `datetime` datetime NOT NULL,
+ `blocked` tinyint(1) NOT NULL DEFAULT '1',
+ `ignore` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `fid` (`fid`),
+ KEY `hash` (`hash`),
+ KEY `datetime` (`datetime`),
+ KEY `blocked` (`blocked`),
+ KEY `ignore` (`ignore`),
+ KEY `contact-id` (`contact-id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `item` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uri` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `wall` tinyint(1) NOT NULL DEFAULT '0',
+ `parent` int(10) unsigned NOT NULL DEFAULT '0',
+ `parent_uri` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+ `thr_parent` char(255) NOT NULL DEFAULT '',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `received` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `owner_xchan` char(255) NOT NULL DEFAULT '',
+ `author_xchan` char(255) NOT NULL DEFAULT '',
+ `title` char(255) NOT NULL DEFAULT '',
+ `body` mediumtext NOT NULL,
+ `app` char(255) NOT NULL DEFAULT '',
+ `lang` char(64) NOT NULL DEFAULT '',
+ `verb` char(255) NOT NULL DEFAULT '',
+ `obj_type` char(255) NOT NULL DEFAULT '',
+ `object` text NOT NULL,
+ `tgt_type` char(255) NOT NULL DEFAULT '',
+ `target` text NOT NULL,
+ `postopts` text NOT NULL,
+ `plink` char(255) NOT NULL DEFAULT '',
+ `resource_id` char(255) NOT NULL DEFAULT '',
+ `resource_type` char(16) NOT NULL DEFAULT '',
+ `attach` mediumtext NOT NULL,
+ `inform` mediumtext NOT NULL,
+ `location` char(255) NOT NULL DEFAULT '',
+ `coord` char(255) NOT NULL DEFAULT '',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ `item_restrict` int(11) NOT NULL DEFAULT '0',
+ `item_flags` int(11) NOT NULL DEFAULT '0',
+ `item_private` tinyint(4) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `uri` (`uri`),
+ KEY `uid` (`uid`),
+ KEY `parent` (`parent`),
+ KEY `created` (`created`),
+ KEY `edited` (`edited`),
+ KEY `received` (`received`),
+ KEY `wall` (`wall`),
+ KEY `uid_commented` (`uid`,`commented`),
+ KEY `uid_created` (`uid`,`created`),
+ KEY `parent_uri` (`parent_uri`),
+ KEY `aid` (`aid`),
+ KEY `owner_xchan` (`owner_xchan`),
+ KEY `author_xchan` (`author_xchan`),
+ KEY `resource_type` (`resource_type`),
+ KEY `item_restrict` (`item_restrict`),
+ KEY `item_flags` (`item_flags`),
+ KEY `uid_uri` (`uri`,`uid`),
+ KEY `commented` (`commented`),
+ KEY `verb` (`verb`),
+ KEY `item_private` (`item_private`),
+ FULLTEXT KEY `title` (`title`),
+ FULLTEXT KEY `body` (`body`),
+ FULLTEXT KEY `allow_cid` (`allow_cid`),
+ FULLTEXT KEY `allow_gid` (`allow_gid`),
+ FULLTEXT KEY `deny_cid` (`deny_cid`),
+ FULLTEXT KEY `deny_gid` (`deny_gid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `item_id` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `iid` int(11) NOT NULL,
+ `uid` int(11) NOT NULL,
+ `sid` char(255) NOT NULL,
+ `service` char(255) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `sid` (`sid`),
+ KEY `service` (`service`),
+ KEY `iid` (`iid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `locks` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `name` char(128) NOT NULL,
+ `locked` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `mail` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(10) unsigned NOT NULL,
+ `guid` char(64) NOT NULL,
+ `from-name` char(255) NOT NULL,
+ `from-photo` char(255) NOT NULL,
+ `from-url` char(255) NOT NULL,
+ `contact-id` char(255) NOT NULL,
+ `convid` int(11) NOT NULL,
+ `title` char(255) NOT NULL,
+ `body` mediumtext NOT NULL,
+ `seen` tinyint(1) NOT NULL,
+ `reply` tinyint(1) NOT NULL DEFAULT '0',
+ `replied` tinyint(1) NOT NULL,
+ `unknown` tinyint(1) NOT NULL DEFAULT '0',
+ `uri` char(255) NOT NULL,
+ `parent_uri` char(255) NOT NULL,
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `reply` (`reply`),
+ KEY `uid` (`uid`),
+ KEY `guid` (`guid`),
+ KEY `seen` (`seen`),
+ KEY `uri` (`uri`),
+ KEY `created` (`created`),
+ KEY `convid` (`convid`),
+ KEY `unknown` (`unknown`),
+ KEY `contact-id` (`contact-id`),
+ KEY `parent_uri` (`parent_uri`),
+ KEY `aid` (`aid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `manage` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL,
+ `mid` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `mid` (`mid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `notify` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `hash` char(64) NOT NULL,
+ `name` char(255) NOT NULL,
+ `url` char(255) NOT NULL,
+ `photo` char(255) NOT NULL,
+ `date` datetime NOT NULL,
+ `msg` mediumtext NOT NULL,
+ `uid` int(11) NOT NULL,
+ `link` char(255) NOT NULL,
+ `parent` int(11) NOT NULL,
+ `seen` tinyint(1) NOT NULL DEFAULT '0',
+ `type` int(11) NOT NULL,
+ `verb` char(255) NOT NULL,
+ `otype` char(16) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `type` (`type`),
+ KEY `seen` (`seen`),
+ KEY `uid` (`uid`),
+ KEY `date` (`date`),
+ KEY `hash` (`hash`),
+ KEY `parent` (`parent`),
+ KEY `link` (`link`),
+ KEY `otype` (`otype`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `notify-threads` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `notify-id` int(11) NOT NULL,
+ `master-parent-item` int(10) unsigned NOT NULL DEFAULT '0',
+ `parent-item` int(10) unsigned NOT NULL DEFAULT '0',
+ `receiver-uid` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `master-parent-item` (`master-parent-item`),
+ KEY `receiver-uid` (`receiver-uid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `outq` (
+ `outq_hash` char(255) NOT NULL,
+ `outq_account` int(10) unsigned NOT NULL DEFAULT '0',
+ `outq_channel` int(10) unsigned NOT NULL DEFAULT '0',
+ `outq_xchan` char(255) NOT NULL DEFAULT '',
+ `outq_hub` char(255) NOT NULL DEFAULT '',
+ `outq_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `outq_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `outq_msg` mediumtext NOT NULL,
+ PRIMARY KEY (`outq_hash`),
+ KEY `outq_account` (`outq_account`),
+ KEY `outq_channel` (`outq_channel`),
+ KEY `outq_xchan` (`outq_xchan`),
+ KEY `outq_hub` (`outq_hub`),
+ KEY `outq_created` (`outq_created`),
+ KEY `outq_updated` (`outq_updated`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `pconfig` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL DEFAULT '0',
+ `cat` char(255) CHARACTER SET ascii NOT NULL,
+ `k` char(255) CHARACTER SET ascii NOT NULL,
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `access` (`uid`,`cat`,`k`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `photo` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(10) unsigned NOT NULL,
+ `contact-id` int(10) unsigned NOT NULL DEFAULT '0',
+ `guid` char(64) NOT NULL,
+ `resource_id` char(255) NOT NULL,
+ `created` datetime NOT NULL,
+ `edited` datetime NOT NULL,
+ `title` char(255) NOT NULL,
+ `desc` text NOT NULL,
+ `album` char(255) NOT NULL,
+ `filename` char(255) NOT NULL,
+ `type` char(128) NOT NULL DEFAULT 'image/jpeg',
+ `height` smallint(6) NOT NULL,
+ `width` smallint(6) NOT NULL,
+ `data` mediumblob NOT NULL,
+ `scale` tinyint(3) NOT NULL,
+ `profile` tinyint(1) NOT NULL DEFAULT '0',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `resource-id` (`resource_id`),
+ KEY `album` (`album`),
+ KEY `scale` (`scale`),
+ KEY `profile` (`profile`),
+ KEY `type` (`type`),
+ KEY `contact-id` (`contact-id`),
+ KEY `aid` (`aid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `profile` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `profile_guid` char(64) NOT NULL DEFAULT '',
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(11) NOT NULL,
+ `profile_name` char(255) NOT NULL,
+ `is_default` tinyint(1) NOT NULL DEFAULT '0',
+ `hide_friends` tinyint(1) NOT NULL DEFAULT '0',
+ `name` char(255) NOT NULL,
+ `pdesc` char(255) NOT NULL,
+ `dob` char(32) NOT NULL DEFAULT '0000-00-00',
+ `address` char(255) NOT NULL,
+ `locality` char(255) NOT NULL,
+ `region` char(255) NOT NULL,
+ `postal_code` char(32) NOT NULL,
+ `country_name` char(255) NOT NULL,
+ `hometown` char(255) NOT NULL,
+ `gender` char(32) NOT NULL,
+ `marital` char(255) NOT NULL,
+ `with` text NOT NULL,
+ `howlong` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `sexual` char(255) NOT NULL,
+ `politic` char(255) NOT NULL,
+ `religion` char(255) NOT NULL,
+ `pub_keywords` text NOT NULL,
+ `prv_keywords` text NOT NULL,
+ `likes` text NOT NULL,
+ `dislikes` text NOT NULL,
+ `about` text NOT NULL,
+ `summary` char(255) NOT NULL,
+ `music` text NOT NULL,
+ `book` text NOT NULL,
+ `tv` text NOT NULL,
+ `film` text NOT NULL,
+ `interest` text NOT NULL,
+ `romance` text NOT NULL,
+ `work` text NOT NULL,
+ `education` text NOT NULL,
+ `contact` text NOT NULL,
+ `homepage` char(255) NOT NULL,
+ `photo` char(255) NOT NULL,
+ `thumb` char(255) NOT NULL,
+ `publish` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `guid` (`profile_guid`,`uid`),
+ KEY `uid` (`uid`),
+ KEY `locality` (`locality`),
+ KEY `hometown` (`hometown`),
+ KEY `gender` (`gender`),
+ KEY `marital` (`marital`),
+ KEY `sexual` (`sexual`),
+ KEY `publish` (`publish`),
+ KEY `aid` (`aid`),
+ KEY `is_default` (`is_default`),
+ KEY `hide_friends` (`hide_friends`),
+ KEY `postal_code` (`postal_code`),
+ KEY `country_name` (`country_name`),
+ KEY `profile_guid` (`profile_guid`),
+ FULLTEXT KEY `pub_keywords` (`pub_keywords`),
+ FULLTEXT KEY `prv_keywords` (`prv_keywords`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `profile_check` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(10) unsigned NOT NULL,
+ `cid` int(10) unsigned NOT NULL DEFAULT '0',
+ `dfrn_id` char(255) NOT NULL,
+ `sec` char(255) NOT NULL,
+ `expire` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `cid` (`cid`),
+ KEY `dfrn_id` (`dfrn_id`),
+ KEY `sec` (`sec`),
+ KEY `expire` (`expire`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `queue` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `cid` int(11) NOT NULL,
+ `network` char(32) NOT NULL,
+ `created` datetime NOT NULL,
+ `last` datetime NOT NULL,
+ `content` mediumtext NOT NULL,
+ `batch` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `cid` (`cid`),
+ KEY `network` (`network`),
+ KEY `created` (`created`),
+ KEY `last` (`last`),
+ KEY `batch` (`batch`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `register` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `hash` char(255) NOT NULL,
+ `created` datetime NOT NULL,
+ `uid` int(10) unsigned NOT NULL,
+ `password` char(255) NOT NULL,
+ `language` char(16) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `hash` (`hash`),
+ KEY `created` (`created`),
+ KEY `uid` (`uid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `session` (
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `sid` char(255) NOT NULL,
+ `data` text NOT NULL,
+ `expire` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `sid` (`sid`),
+ KEY `expire` (`expire`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `spam` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL,
+ `spam` int(11) NOT NULL DEFAULT '0',
+ `ham` int(11) NOT NULL DEFAULT '0',
+ `term` char(255) NOT NULL,
+ `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `spam` (`spam`),
+ KEY `ham` (`ham`),
+ KEY `term` (`term`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `term` (
+ `tid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `oid` int(10) unsigned NOT NULL,
+ `otype` tinyint(3) unsigned NOT NULL,
+ `type` tinyint(3) unsigned NOT NULL,
+ `term` char(255) NOT NULL,
+ `url` char(255) NOT NULL,
+ PRIMARY KEY (`tid`),
+ KEY `oid` (`oid`),
+ KEY `otype` (`otype`),
+ KEY `type` (`type`),
+ KEY `term` (`term`),
+ KEY `uid` (`uid`),
+ KEY `aid` (`aid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `tokens` (
+ `id` varchar(40) NOT NULL,
+ `secret` text NOT NULL,
+ `client_id` varchar(20) NOT NULL,
+ `expires` int(11) NOT NULL,
+ `scope` varchar(200) NOT NULL,
+ `uid` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `client_id` (`client_id`),
+ KEY `expires` (`expires`),
+ KEY `uid` (`uid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `xchan` (
+ `xchan_hash` char(255) NOT NULL,
+ `xchan_guid` char(255) NOT NULL DEFAULT '',
+ `xchan_guid_sig` char(255) NOT NULL DEFAULT '',
+ `xchan_pubkey` text NOT NULL,
+ `xchan_photo_mimetype` char(32) NOT NULL DEFAULT 'image/jpeg',
+ `xchan_photo_l` char(255) NOT NULL DEFAULT '',
+ `xchan_photo_m` char(255) NOT NULL DEFAULT '',
+ `xchan_photo_s` char(255) NOT NULL DEFAULT '',
+ `xchan_addr` char(255) NOT NULL DEFAULT '',
+ `xchan_profile` char(255) NOT NULL DEFAULT '',
+ `xchan_name` char(255) NOT NULL DEFAULT '',
+ `xchan_network` char(255) NOT NULL DEFAULT '',
+ `xchan_photo_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `xchan_name_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`xchan_hash`),
+ KEY `xchan_guid` (`xchan_guid`),
+ KEY `xchan_addr` (`xchan_addr`),
+ KEY `xchan_profile` (`xchan_profile`),
+ KEY `xchan_name` (`xchan_name`),
+ KEY `xchan_network` (`xchan_network`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
diff --git a/install/htconfig.sample.php b/install/htconfig.sample.php
new file mode 100644
index 000000000..dc46d646c
--- /dev/null
+++ b/install/htconfig.sample.php
@@ -0,0 +1,93 @@
+<?php
+
+// If automatic system installation fails:
+
+// Copy or rename this file to .htconfig.php
+
+// Why .htconfig.php? Because it contains sensitive information which could
+// give somebody complete control of your database. Apache's default
+// configuration denies access to and refuses to serve any file beginning
+// with .ht
+
+// Then set the following for your MySQL installation
+
+$db_host = 'your.mysqlhost.com';
+$db_user = 'mysqlusername';
+$db_pass = 'mysqlpassword';
+$db_data = 'mysqldatabasename';
+
+// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
+// It can be changed later and only applies to timestamps for anonymous viewers.
+
+$default_timezone = 'America/Los_Angeles';
+
+// What is your site name?
+
+$a->config['sitename'] = "Friendica Social Network";
+
+// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
+// Be certain to create your own personal account before setting
+// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on
+// the registration page. REGISTER_APPROVE requires you set 'admin_email'
+// to the email address of an already registered person who can authorise
+// and/or approve/deny the request.
+
+// In order to perform system administration via the admin panel, admin_email
+// must precisely match the email address of the person logged in.
+
+$a->config['system']['register_policy'] = REGISTER_OPEN;
+$a->config['register_text'] = '';
+$a->config[system']['admin_email'] = '';
+
+// Maximum size of an imported message, 0 is unlimited
+
+$a->config['max_import_size'] = 200000;
+
+// maximum size of uploaded photos
+
+$a->config['system']['maximagesize'] = 800000;
+
+// Location of PHP command line processor
+
+$a->config['php_path'] = 'php';
+
+// You shouldn't need to change anything else.
+// Location of global directory submission page.
+
+$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit';
+$a->config['system']['directory_search_url'] = 'http://dir.friendika.com/directory?search=';
+
+// PuSH - aka pubsubhubbub URL. This makes delivery of public posts as fast as private posts
+
+$a->config['system']['huburl'] = 'http://pubsubhubbub.appspot.com';
+
+// Server-to-server private message encryption (RINO) is allowed by default.
+// Encryption will only be provided if this setting is true and the
+// PHP mcrypt extension is installed on both systems
+
+$a->config['system']['rino_encrypt'] = true;
+
+// allowed themes (change this from admin panel after installation)
+
+$a->config['system']['allowed_themes'] = 'dispy,quattro,vier,darkzero,duepuntozero,greenzero,purplezero,slackr,diabook';
+
+// default system theme
+
+$a->config['system']['theme'] = 'duepuntozero';
+
+
+// By default allow pseudonyms
+
+$a->config['system']['no_regfullname'] = true;
+
+// If set to true the priority settings of ostatus contacts are used
+$a->config['system']['ostatus_use_priority'] = false;
+
+// If enabled, all items are cached in the given directory
+$a->config['system']['itemcache'] = "";
+
+// If enabled, the lockpath is used for a lockfile to check if the poller is running
+$a->config['system']['lockpath'] = "";
+
+// If enabled, the MyBB fulltext engine is used
+// $a->config['system']['use_fulltext_engine'] = true;