Commit Graph

270 Commits

Author SHA1 Message Date
Brion Vibber
ec145b73fc Major refactoring of queue handlers to support running multiple sites in one daemon.
Key changes:
* Initialization code moved from common.php to StatusNet class;
  can now switch configurations during runtime.
* As a consequence, configuration files must now be idempotent...
  Be careful with constant, function or class definitions.
* Control structure for daemons/QueueManager/QueueHandler has been refactored;
  the run loop is now managed by IoMaster run via scripts/queuedaemon.php
  IoManager subclasses are woken to handle socket input or polling, and may
  cover multiple sites.
* Plugins can implement notice queue handlers more easily by registering a
  QueueHandler class; no more need to add a daemon.

The new QueueDaemon runs from scripts/queuedaemon.php:

* This replaces most of the old *handler.php scripts; they've been refactored
  to the bare handler classes.
* Spawns multiple child processes to spread load; defaults to CPU count on
  Linux and Mac OS X systems, or override with --threads=N
* When multithreaded, child processes are automatically respawned on failure.
* Threads gracefully shut down and restart when passing a soft memory limit
  (defaults to 90% of memory_limit), limiting damage from memory leaks.
* Support for UDP-based monitoring: http://www.gitorious.org/snqmon

Rough control flow diagram:
QueueDaemon -> IoMaster -> IoManager
                           QueueManager [listen or poll] -> QueueHandler
                           XmppManager [ping & keepalive]
                           XmppConfirmManager [poll updates]

Todo:

* Respawning features not currently available running single-threaded.
* When running single-site, configuration changes aren't picked up.
* New sites or config changes affecting queue subscriptions are not yet
  handled without a daemon restart.
* SNMP monitoring output to integrate with general tools (nagios, ganglia)
* Convert XMPP confirmation message sends to use stomp queue instead of polling
* Convert xmppdaemon.php to IoManager?
* Convert Twitter status, friends import polling daemons to IoManager
* Clean up some error reporting and failure modes
* May need to adjust queue priorities for best perf in backlog/flood cases

Detailed code history available in my daemon-work branch:
http://www.gitorious.org/~brion/statusnet/brion-fixes/commits/daemon-work
2010-01-12 20:45:09 -08:00
Brion Vibber
cbc3c7b141 Ticket 2152: avoid fatal when php.ini disables dl via disabled_functions (function_exists returns false even though it exists and cannot be redefined) 2010-01-12 07:24:43 -08:00
Siebrand Mazeland
4af6b7f5c3 Lots of tiny message changes.
* Mostly punctuation updates so that the same message is used consistently in all of StatusNet.
* Some cases of "Title Case" removed, because that does not appear to be used consistently.
2010-01-10 12:26:24 +01:00
Evan Prodromou
2c33e61b94 add default plugins and load them 2010-01-07 16:13:36 -08:00
Evan Prodromou
cc5534d180 First version of Memcache plugin 2010-01-02 21:16:59 -10:00
Evan Prodromou
30c2e2ce83 update to rc2 2009-12-22 16:41:39 -08:00
Zach Copley
5159340bc6 Updated version info 2009-11-20 05:56:02 +00:00
Brion Vibber
1827256d0e Added support for pgettext() and npgettext() to separate contexts for translatable messages that are going to be ambiguous in English original. 2009-11-18 14:57:18 -08:00
Brion Vibber
63ebb033bf Declare global usage in common.php so setup works right when called from phpunit tests
We end up running the tests through a function in PHPUnit, so we don't have automatic global scope at the top level of files all the time...
2009-11-17 16:31:13 -08:00
Brion Vibber
8ab40e7051 Cleanup for bug 1813: workaround sometimes-missing dl() in PHP 5.3 by defining our own bogus function rather than attempting to patch upstream libs. This keeps our fix across upstream versions (or when loading upstream library from outside extlib)
Note that fixes to OpenID libraries in commit fe9473ac78 were lost in just such an update.
2009-11-16 15:45:15 -08:00
brenda
2147ac510f don't offer install.php on check-fancy requests
this time, E_STRICT compliant
2009-11-14 16:52:39 +13:00
Brion Vibber
d8fe5224cb Fix for bug 1974: drop unnecessary define_syslog_variables() call from common.php
The call was moved to this spot in commit 3ea1119e50 (previously init'd later in another func) but doesn't seem to be needed anyway. None of our code uses the variables that this function defines, just the constants -- which are already predefined without the call.

The function is deprecated in PHP 5.3 and gone in 6, so we may as well toss it now.
2009-11-12 09:02:00 -08:00
Craig Andrews
014d6b1d19 Redid how URL shorteners work. This way is much more like how Evan wants events to work (and more like how the rest of SN works). 2009-11-11 14:04:44 -05:00
Evan Prodromou
b7e2e3fd2b Restructure theme.php to define a class Theme
For various reasons, it's nicer to have a class for theme-file paths
and such. So, I've rewritten the code for determining the locations of
theme files to be more OOPy.

I changed all the uses of the two functions in the module (theme_file
and theme_path) to use Theme::file and Theme::path respectively.

I've also removed the code in common.php that require's the module;
using a class means we can autoload it instead.
2009-11-08 17:04:46 -05:00
Brion Vibber
8e64723813 Make unit tests work again by forcing a 'global' on $_have_a_config...
Fix a typo in the error message when no config file found.
2009-11-02 06:14:08 -08:00
Brenda Wallace
f1daca16e2 give some suggestions back to the user when no config file found, and a link to the installer 2009-10-30 10:03:25 +13:00
Brenda Wallace
d5951ebce6 Revert "give some suggestions back to the user when no config file found, and a link to the installer"
This reverts commit 7f5fbee2e3.
2009-10-30 10:02:37 +13:00
Brenda Wallace
7f5fbee2e3 give some suggestions back to the user when no config file found, and a link to the installer 2009-10-30 09:17:19 +13:00
Zach Copley
b4b992bca7 Merge branch '0.9.x' into pluginize-twitter-bridge
* 0.9.x: (247 commits)
  Added in credits.
  Use site's name for basic auth realm
  Make apigroupcreate.php pass phpcs
  Took out some unnecessary intializations
  Implemented create group api
  CamelCase all function names in the API code
  These same params are used in most API actions; moved to base API class
  Missed some of the references to the old TwitterApiAction - removed
  Remove more redundant $formats
  Remove dead code
  Move all basic auth output and processing to base classes
  $format is used by every API action. Set it in the base class.
  Delete action/api.php and rename lib/twitterapi.php to lib/api.php
  New actions for blocks via API
  fix FBConnect so it doesn't muffle EndPrimaryNav
  don't write session if it's unchanged
  Fixed facebook connect primary nav to hide search option when site is private and user is not logged in
  Fixed facebook connect primary nav to obey sms/twitter/openid settings
  Fixed facebook connect login nav to obey openid settings
  Fixed facebook connect nav to obey sms/twitter disabled
  ...
2009-10-13 09:36:26 -07:00
Evan Prodromou
d103522ff3 check the schema 2009-10-01 15:11:12 -04:00
Evan Prodromou
ecb75561af Move configuration defaults to new module and variable
Moved the default values of $config to $default. The code for
setting up $default is moved to lib/default.php.
2009-09-24 22:25:30 -04:00
Zach Copley
0190785b73 Merge branch '0.9.x' into pluginize-twitter-bridge
* 0.9.x: (57 commits)
  Updated csarven emails to csarven@status.net and removed dupes
  statusize new HTTP classes
  dedupe evans
  change all evans to evan@status.net
  add post to curlclient
  fix user-agent for curlclient
  add get to curl client
  add cURL client with HEAD method
  add user agent and correct version check to httpclient
  statusize OpenID plugin
  add http client config value
  update httpclient class
  move httputil to httpclient
  Start a common library for HTTP client stuff
  check correct define (not backwards compatible)
  Fixed broken list items in installer output
  Got rid of a bunch of ugly warnings
  Add Jiminy to notice sources
  Make it impossible to delete self-subscriptions via the API
  Fix bad merge d7ae0ed4fd
  ...
2009-09-16 12:40:22 -07:00
Evan Prodromou
3380b49aec add http client config value 2009-09-15 21:12:59 -04:00
Zach Copley
9d87313eae Merge branch '0.9.x' into pluginize-twitter-bridge
Conflicts:
	plugins/TwitterBridge/twitterauthorization.php
2009-09-08 16:02:57 -07:00
Evan Prodromou
5d09b6b3f0 Merge branch '0.8.x' into 0.9.x
Conflicts:
	EVENTS.txt
	actions/finishremotesubscribe.php
	actions/postnotice.php
	actions/public.php
	actions/remotesubscribe.php
	actions/showstream.php
	actions/updateprofile.php
	actions/userauthorization.php
	classes/laconica.ini
	lib/common.php
	lib/oauthstore.php
	lib/omb.php
2009-08-27 11:16:45 -07:00
Evan Prodromou
089148d286 update version in, and add codename to, lib/common 2009-08-27 08:02:41 -07:00
Evan Prodromou
f1fda6c050 Merge branch '0.8.x' into 0.9.x 2009-08-27 07:56:19 -07:00
Evan Prodromou
6d0a26a407 define LACONICA_VERSION for backwards compatibility 2009-08-26 10:43:44 -04:00
Evan Prodromou
df86aa7214 define LACONICA and accept LACONICA for backwards compatibility 2009-08-26 10:41:36 -04:00
Evan Prodromou
434abed511 add back in /etc/laconica/* for compatibility 2009-08-26 10:34:50 -04:00
Evan Prodromou
e3a53251c0 last scrub of Laconica -> StatusNet 2009-08-26 03:33:43 -04:00
Zach Copley
5efe588174 Moved the rest of the Twitter stuff into the TwitterBridge plugin 2009-08-26 00:59:06 +00:00
Evan Prodromou
3567b9d708 global search and replace for laconica -> statusnet 2009-08-25 18:53:24 -04:00
Evan Prodromou
865b716f09 change LACONICA to STATUSNET 2009-08-25 18:42:34 -04:00
Evan Prodromou
d35b2d3f3c change laconi.ca to status.net 2009-08-25 18:16:46 -04:00
Evan Prodromou
4737563b95 a distributed -> the distributed 2009-08-25 18:14:12 -04:00
Evan Prodromou
c8b8f07af1 change Laconica and Control Yourself to StatusNet in PHP files 2009-08-25 18:12:20 -04:00
Evan Prodromou
ff87732053 Merge branch '0.8.x' into testing
Conflicts:
	actions/twitterauthorization.php
	lib/oauthclient.php
	lib/twitter.php
	lib/twitterapi.php
	lib/twitteroauthclient.php
	scripts/twitterstatusfetcher.php
2009-08-24 16:55:49 -04:00
Zach Copley
e9edaab358 Twitter OAuth server dance working 2009-08-24 11:52:15 -04:00
Evan Prodromou
59beff6b46 Revert "Added configuration option to only allow OpenID logins."
This reverts commit 14b46e2183.

This functionality will need to be rewritten to work with the new
OpenIDPlugin.

Conflicts:

	index.php
	lib/logingroupnav.php
2009-08-21 16:45:42 -04:00
Evan Prodromou
bacef32aac Revert "Added a configuration option to disable OpenID."
This reverts commit 7dc3a90d12.

Conflicts:

	actions/login.php
	actions/register.php
	lib/accountsettingsaction.php
	lib/common.php
	lib/logingroupnav.php
2009-08-21 16:38:39 -04:00
Evan Prodromou
8236037bf0 Merge branch 'dbconfig' into 0.9.x
Conflicts:
	lib/common.php
2009-08-21 16:17:06 -04:00
Evan Prodromou
538dcf2eef load configuration options from database at runtime 2009-08-21 16:14:32 -04:00
Brion Vibber
5c21a371d6 Include php-gettext 1.0.7 into extlibs; loading it up if native gettext extension is not present.
This provides a pure PHP implementation of the gettext functions.

This should help get laconica running on shared hosting environments where PHP's gettext module may not be installed.
Also gets us one step closer to running on Mac OS X 10.5 with Apple's preinstalled PHP, which doesn't provide an easy way to add modules.

Source: http://savannah.nongnu.org/projects/php-gettext
Copyright (c) 2005 Steven Armstrong <sa at c-area dot ch>
GPLv2 or later
2009-08-21 16:01:51 -04:00
Evan Prodromou
b2664e1ae2 Merge branch '0.8.x' into 0.9.x
Conflicts:
	actions/updateprofile.php
	actions/userauthorization.php
	classes/User_group.php
	index.php
	install.php
	lib/accountsettingsaction.php
	lib/logingroupnav.php
2009-08-21 15:42:11 -04:00
Evan Prodromou
a28bbdfb0f configuration options for text limits 2009-08-21 06:33:22 -04:00
Francois Marier
986d95b31e Fix the default value of ['server']['path'] when running from command line scripts
The logic in _sn_to_path() doesn't make sense when not running via a remote server.

Default to the empty string if running from the command line and ['server']['path']
is not set manually in config.php
2009-08-20 17:46:26 +12:00
Jeffery To
7dc3a90d12 Added a configuration option to disable OpenID.
If $config['openid']['enabled'] is set to false, OpenID is removed from
the navigation and direct accesses to OpenID login pages redirect to the
login page.

If OpenID is enabled, $config['site']['openidonly'] is ignored, i.e.
OpenID is required to go OpenID-only.
2009-08-13 22:18:06 +08:00
Craig Andrews
e9ed20a69d Merge commit 'jeff-themovie/0.8.x-openidonly' into 0.8.x 2009-08-10 11:53:35 -04:00
Zach Copley
17dcf1c317 Merge branch 'twitter-oauth' into 0.8.x
Conflicts:

	scripts/getvaliddaemons.php
2009-08-10 07:49:51 +00:00