From 5487c596fcdc4dd237171e185fa3b6ae8ccd9338 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Sun, 23 Feb 2014 14:57:12 +0100 Subject: [PATCH] Remove callback sneakery by StatusNet --- CONFIGURE | 26 ---- actions/snapshotadminpanel.php | 255 --------------------------------- lib/adminpanelnav.php | 8 -- lib/default.php | 4 - lib/router.php | 1 - lib/snapshot.php | 213 --------------------------- scripts/reportsnapshot.php | 30 ---- 7 files changed, 537 deletions(-) delete mode 100644 actions/snapshotadminpanel.php delete mode 100644 lib/snapshot.php delete mode 100644 scripts/reportsnapshot.php diff --git a/CONFIGURE b/CONFIGURE index d41f64b44f..c4a43a3dc8 100644 --- a/CONFIGURE +++ b/CONFIGURE @@ -532,32 +532,6 @@ welcome: nickname of a user account that sends welcome messages to new If either of these special user accounts are specified, the users should be created before the configuration is updated. -snapshot --------- - -The software will, by default, send statistical snapshots about the -local installation to a stats server on the status.net Web site. This -data is used by the developers to prioritize development decisions. No -identifying data about users or organizations is collected. The data -is available to the public for review. Participating in this survey -helps StatusNet developers take your needs into account when updating -the software. - -run: string indicating when to run the statistics. Values can be 'web' - (run occasionally at Web time), 'cron' (run from a cron script), - or 'never' (don't ever run). If you set it to 'cron', remember to - schedule the script to run on a regular basis. -frequency: if run value is 'web', how often to report statistics. - Measured in Web hits; depends on how active your site is. - Default is 10000 -- that is, one report every 10000 Web hits, - on average. -reporturl: URL to post statistics to. Defaults to StatusNet developers' - report system, but if they go evil or disappear you may - need to update this to another value. Note: if you - don't want to report stats, it's much better to - set 'run' to 'never' than to set this value to something - nonsensical. - attachments ----------- diff --git a/actions/snapshotadminpanel.php b/actions/snapshotadminpanel.php deleted file mode 100644 index 214b3d648b..0000000000 --- a/actions/snapshotadminpanel.php +++ /dev/null @@ -1,255 +0,0 @@ -. - * - * @category Settings - * @package StatusNet - * @author Zach Copley - * @copyright 2010 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - */ - -if (!defined('STATUSNET')) { - exit(1); -} - -/** - * Manage snapshots - * - * @category Admin - * @package StatusNet - * @author Zach Copley - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - */ -class SnapshotadminpanelAction extends AdminPanelAction -{ - /** - * Returns the page title - * - * @return string page title - */ - function title() - { - // TRANS: Title for admin panel to configure snapshots. - return _m('TITLE','Snapshots'); - } - - /** - * Instructions for using this form. - * - * @return string instructions - */ - function getInstructions() - { - // TRANS: Instructions for admin panel to configure snapshots. - return _('Manage snapshot configuration'); - } - - /** - * Show the snapshots admin panel form - * - * @return void - */ - function showForm() - { - $form = new SnapshotAdminPanelForm($this); - $form->show(); - return; - } - - /** - * Save settings from the form - * - * @return void - */ - function saveSettings() - { - static $settings = array( - 'snapshot' => array('run', 'reporturl', 'frequency') - ); - - $values = array(); - - foreach ($settings as $section => $parts) { - foreach ($parts as $setting) { - $values[$section][$setting] = $this->trimmed($setting); - } - } - - // This throws an exception on validation errors - - $this->validate($values); - - // assert(all values are valid); - - $config = new Config(); - - $config->query('BEGIN'); - - foreach ($settings as $section => $parts) { - foreach ($parts as $setting) { - Config::save($section, $setting, $values[$section][$setting]); - } - } - - $config->query('COMMIT'); - - return; - } - - function validate(&$values) - { - // Validate snapshot run value - - if (!in_array($values['snapshot']['run'], array('web', 'cron', 'never'))) { - // TRANS: Client error displayed on admin panel for snapshots when providing an invalid run value. - $this->clientError(_('Invalid snapshot run value.')); - } - - // Validate snapshot frequency value - - if (!Validate::number($values['snapshot']['frequency'])) { - // TRANS: Client error displayed on admin panel for snapshots when providing an invalid value for frequency. - $this->clientError(_('Snapshot frequency must be a number.')); - } - - // Validate report URL - - if (!is_null($values['snapshot']['reporturl']) - && !common_valid_http_url($values['snapshot']['reporturl'])) { - // TRANS: Client error displayed on admin panel for snapshots when providing an invalid report URL. - $this->clientError(_('Invalid snapshot report URL.')); - } - } -} - -// @todo FIXME: add documentation -class SnapshotAdminPanelForm extends AdminForm -{ - /** - * ID of the form - * - * @return int ID of the form - */ - function id() - { - return 'form_snapshot_admin_panel'; - } - - /** - * class of the form - * - * @return string class of the form - */ - function formClass() - { - return 'form_settings'; - } - - /** - * Action of the form - * - * @return string URL of the action - */ - function action() - { - return common_local_url('snapshotadminpanel'); - } - - /** - * Data elements of the form - * - * @return void - */ - function formData() - { - $this->out->elementStart( - 'fieldset', - array('id' => 'settings_admin_snapshots') - ); - // TRANS: Fieldset legend on admin panel for snapshots. - $this->out->element('legend', null, _m('LEGEND','Snapshots')); - $this->out->elementStart('ul', 'form_data'); - $this->li(); - $snapshot = array( - // TRANS: Option in dropdown for snapshot method in admin panel for snapshots. - 'web' => _('Randomly during web hit'), - // TRANS: Option in dropdown for snapshot method in admin panel for snapshots. - 'cron' => _('In a scheduled job'), - // TRANS: Option in dropdown for snapshot method in admin panel for snapshots. - 'never' => _('Never') - ); - $this->out->dropdown( - 'run', - // TRANS: Dropdown label for snapshot method in admin panel for snapshots. - _('Data snapshots'), - $snapshot, - // TRANS: Dropdown title for snapshot method in admin panel for snapshots. - _('When to send statistical data to status.net servers.'), - false, - $this->value('run', 'snapshot') - ); - $this->unli(); - - $this->li(); - $this->input( - 'frequency', - // TRANS: Input field label for snapshot frequency in admin panel for snapshots. - _('Frequency'), - // TRANS: Input field title for snapshot frequency in admin panel for snapshots. - _('Snapshots will be sent once every N web hits.'), - 'snapshot' - ); - $this->unli(); - - $this->li(); - $this->input( - 'reporturl', - // TRANS: Input field label for snapshot report URL in admin panel for snapshots. - _('Report URL'), - // TRANS: Input field title for snapshot report URL in admin panel for snapshots. - _('Snapshots will be sent to this URL.'), - 'snapshot' - ); - $this->unli(); - $this->out->elementEnd('ul'); - $this->out->elementEnd('fieldset'); - } - - /** - * Action elements - * - * @return void - */ - function formActions() - { - $this->out->submit( - 'submit', - // TRANS: Button text to save snapshot settings. - _m('BUTTON','Save'), - 'submit', - null, - // TRANS: Button title to save snapshot settings. - _('Save snapshot settings.') - ); - } -} diff --git a/lib/adminpanelnav.php b/lib/adminpanelnav.php index 40c4889f27..93a4d36ebb 100644 --- a/lib/adminpanelnav.php +++ b/lib/adminpanelnav.php @@ -134,14 +134,6 @@ class AdminPanelNav extends Menu $menu_title, $action_name == 'sitenoticeadminpanel', 'nav_sitenotice_admin_panel'); } - if (AdminPanelAction::canAdmin('snapshot')) { - // TRANS: Menu item title in administrator navigation panel. - $menu_title = _('Snapshots configuration'); - // TRANS: Menu item in administrator navigation panel. - $this->out->menuItem(common_local_url('snapshotadminpanel'), _m('MENU','Snapshots'), - $menu_title, $action_name == 'snapshotadminpanel', 'nav_snapshot_admin_panel'); - } - if (AdminPanelAction::canAdmin('license')) { // TRANS: Menu item title in administrator navigation panel. $menu_title = _('Set site license'); diff --git a/lib/default.php b/lib/default.php index 6a04b32ddd..65a74d0959 100644 --- a/lib/default.php +++ b/lib/default.php @@ -207,10 +207,6 @@ $default = 'newuser' => array('default' => null, 'welcome' => null), - 'snapshot' => - array('run' => 'web', - 'frequency' => 10000, - 'reporturl' => 'http://status.net/stats/report'), 'attachments' => array('server' => null, 'dir' => INSTALLDIR . '/file/', diff --git a/lib/router.php b/lib/router.php index c8277859de..ad49c8c144 100644 --- a/lib/router.php +++ b/lib/router.php @@ -847,7 +847,6 @@ class Router $m->connect('panel/paths', array('action' => 'pathsadminpanel')); $m->connect('panel/sessions', array('action' => 'sessionsadminpanel')); $m->connect('panel/sitenotice', array('action' => 'sitenoticeadminpanel')); - $m->connect('panel/snapshot', array('action' => 'snapshotadminpanel')); $m->connect('panel/license', array('action' => 'licenseadminpanel')); $m->connect('panel/plugins', array('action' => 'pluginsadminpanel')); diff --git a/lib/snapshot.php b/lib/snapshot.php deleted file mode 100644 index f41efba7d7..0000000000 --- a/lib/snapshot.php +++ /dev/null @@ -1,213 +0,0 @@ -. - * - * @category Stats - * @package StatusNet - * @author Evan Prodromou - * @copyright 2009 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} - -/** - * A snapshot of site stats that can report itself to headquarters - * - * This class will collect statistics on the site and report them to - * a statistics server of the admin's choice. (Default is the big one - * at status.net.) - * - * It can either be called from a cron job, or run occasionally by the - * Web site. - * - * @category Stats - * @package StatusNet - * @author Evan Prodromou - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - * - */ - -class Snapshot -{ - var $stats = null; - - /** - * Constructor for a snapshot - */ - - function __construct() - { - } - - /** - * Static function for reporting statistics - * - * This function checks whether it should report statistics, based on - * the current configuation settings. If it should, it creates a new - * Snapshot object, takes a snapshot, and reports it to headquarters. - * - * @return void - */ - - static function check() - { - switch (common_config('snapshot', 'run')) { - case 'web': - // skip if we're not running on the Web. - if (!isset($_SERVER) || !array_key_exists('REQUEST_METHOD', $_SERVER)) { - break; - } - // Run once every frequency hits - // XXX: do frequency by time (once a week, etc.) rather than - // hits - if (rand() % common_config('snapshot', 'frequency') == 0) { - $snapshot = new Snapshot(); - $snapshot->take(); - $snapshot->report(); - } - break; - case 'cron': - // skip if we're running on the Web - if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) { - break; - } - common_log(LOG_INFO, 'Running snapshot from cron job'); - // We're running from the command line; assume - - $snapshot = new Snapshot(); - $snapshot->take(); - common_log(LOG_INFO, count($snapshot->stats) . " statistics being uploaded."); - $snapshot->report(); - - break; - case 'never': - break; - default: - common_log(LOG_WARNING, "Unrecognized value for snapshot run config."); - } - } - - /** - * Take a snapshot of the server - * - * Builds an array of statistical and configuration data based - * on the local database and config files. We avoid grabbing any - * information that could be personal or private. - * - * @return void - */ - - function take() - { - $this->stats = array(); - - // Some basic identification stuff - - $this->stats['version'] = GNUSOCIAL_VERSION; - $this->stats['phpversion'] = phpversion(); - $this->stats['name'] = common_config('site', 'name'); - $this->stats['root'] = common_root_url(); - - // non-identifying stats on various tables. Primary - // interest is size and rate of activity of service. - - $tables = array('user', - 'notice', - 'subscription', - 'user_group'); - - foreach ($tables as $table) { - $this->tableStats($table); - } - - // stats on some important config options - - $this->stats['theme'] = common_config('site', 'theme'); - $this->stats['dbtype'] = common_config('db', 'type'); - $this->stats['xmpp'] = common_config('xmpp', 'enabled'); - $this->stats['inboxes'] = common_config('inboxes', 'enabled'); - $this->stats['queue'] = common_config('queue', 'enabled'); - $this->stats['license'] = common_config('license', 'url'); - $this->stats['fancy'] = common_config('site', 'fancy'); - $this->stats['private'] = common_config('site', 'private'); - $this->stats['closed'] = common_config('site', 'closed'); - $this->stats['memcached'] = common_config('memcached', 'enabled'); - $this->stats['language'] = common_config('site', 'language'); - $this->stats['timezone'] = common_config('site', 'timezone'); - - } - - /** - * Reports statistics to headquarters - * - * Posts statistics to a reporting server. - * - * @return void - */ - - function report() - { - // XXX: Use OICU2 and OAuth to make authorized requests - - $reporturl = common_config('snapshot', 'reporturl'); - try { - $request = HTTPClient::start(); - $request->post($reporturl, null, $this->stats); - } catch (Exception $e) { - common_log(LOG_WARNING, "Error in snapshot: " . $e->getMessage()); - } - } - - /** - * Updates statistics for a single table - * - * Determines the size of a table and its oldest and newest rows. - * Goal here is to see how active a site is. Note that it - * fills up the instance stats variable. - * - * @param string $table name of table to check - * - * @return void - */ - - function tableStats($table) - { - $inst = DB_DataObject::factory($table); - - $inst->selectAdd(); - $inst->selectAdd('count(*) as cnt, '. - 'min(created) as first, '. - 'max(created) as last'); - - if ($inst->find(true)) { - $this->stats[$table.'count'] = $inst->cnt; - $this->stats[$table.'first'] = $inst->first; - $this->stats[$table.'last'] = $inst->last; - } - - $inst->free(); - unset($inst); - } -} diff --git a/scripts/reportsnapshot.php b/scripts/reportsnapshot.php deleted file mode 100644 index 71f1019ee6..0000000000 --- a/scripts/reportsnapshot.php +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env php -. - */ - -define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); - -$helptext = <<