diff --git a/blackout.tgz b/blackout.tgz new file mode 100644 index 000000000..2c0f6cf7e Binary files /dev/null and b/blackout.tgz differ diff --git a/blackout/README b/blackout/README new file mode 100644 index 000000000..c1dfd02ce --- /dev/null +++ b/blackout/README @@ -0,0 +1,48 @@ +Name: blackout +Description: Blackout your ~friendica node during a given period +License: MIT +Version: 1.0 +Author: Tobias Diekershoff + +About +===== + +This plugin will allow you to enter a date/time periode during which +all your ~friendica visitors from the web will be redirected to a page +you can configure in the admin panel as well. + +Calls to the API and the communication with other ~friendica nodes is +not effected from this plugin. + +If you enter a period the current date would be affected none of the +currently logged in users will be effected as well. But if they log +out they can't login again. That way you dear admin can double check +the entered time periode and fix typos without having to hack the +database directly. + +Requirements +============ + +THIS ADDON REQUIRES PHP VERSION 5.3 OR HIGHER. + +License +======= + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/blackout/admin.tpl b/blackout/admin.tpl new file mode 100644 index 000000000..25922193d --- /dev/null +++ b/blackout/admin.tpl @@ -0,0 +1,11 @@ +{{ inc field_input.tpl with $field=$startdate }}{{ endinc }} +{{ inc field_input.tpl with $field=$enddate }}{{ endinc }} +{{ inc field_input.tpl with $field=$rurl }}{{ endinc }} + +
Note: The redirect will be active from the moment you +press the submit button. Users currently logged in will not be +thrown out but can't login again after logging out should the blackout is +still in place.
+ +
diff --git a/blackout/blackout.php b/blackout/blackout.php new file mode 100644 index 000000000..1171b890c --- /dev/null +++ b/blackout/blackout.php @@ -0,0 +1,115 @@ + + * + * About + * ===== + * + * This plugin will allow you to enter a date/time periode during which + * all your ~friendica visitors from the web will be redirected to a page + * you can configure in the admin panel as well. + * + * Calls to the API and the communication with other ~friendica nodes is + * not effected from this plugin. + * + * If you enter a period the current date would be affected none of the + * currently logged in users will be effected as well. But if they log + * out they can't login again. That way you dear admin can double check + * the entered time periode and fix typos without having to hack the + * database directly. + * + * Requirements + * ============ + * + * THIS ADDON REQUIRES PHP VERSION 5.3 OR HIGHER. + * + * License + * ======= + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + + +function blackout_install() { + register_hook('page_header', 'addon/blackout/blackout.php', 'blackout_redirect'); +} + +function blackout_uninstall() { + unregister_hook('page_header', 'addon/blackout/blackout.php', 'blackout_redirect'); +} +function blackout_redirect ($a, $b) { + // if we have a logged in user, don't throw her out + if (local_user()) { + return true; + } + // else... + $mystart = get_config('blackout','begindate'); + $myend = get_config('blackout','enddate'); + $myurl = get_config('blackout','url'); + $now = time(); + $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart); + $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend); + if ( $date1 && $date2 ) { + $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart)->format('U'); + $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend)->format('U'); + } else { + $date1 = 0; + $date2 = 0; + } + if (( $date1 <= $now ) && ( $now <= $date2 )) { + logger('redirecting user to blackout page'); + goaway($myurl); + } +} + +function blackout_plugin_admin(&$a, &$o) { + $mystart = get_config('blackout','begindate'); + if (! is_string($mystart)) { $mystart = "YYYY-MM-DD:hhmm"; } + $myend = get_config('blackout','enddate'); + if (! is_string($myend)) { $myend = "YYYY-MM-DD:hhmm"; } + $myurl = get_config('blackout','url'); + if (! is_string($myurl)) { $myurl = "http://www.example.com"; } + $t = file_get_contents( dirname(__file__)."/admin.tpl" ); + $o = replace_macros($t, array( + '$submit' => t('Submit'), + '$rurl' => array("rurl", "Redirect URL", $myurl, "all your visitors from the web will be redirected to this URL"), + '$startdate' => array("startdate", "Begin of the Blackout
(YYYY-MM-DD hh:mm)", $mystart, "format is YYYY year, MM month, DD day, hh hour and mm minute"), + '$enddate' => array("enddate", "End of the Blackout
(YYYY-MM-DD hh:mm)", $myend, ""), + + )); + $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart); + $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend); + if ($date2 < $date1) { + $o = "
The end-date is prior to the start-date of the blackout, you should fix this.
" . $o; + } else { + $o = '

Please double check that the current settings for the blackout. Begin will be '.$mystart.' and it will end '.$myend.'.

' . $o; + } +} +function blackout_plugin_admin_post (&$a) { + $begindate = trim($_POST['startdate']); + $enddate = trim($_POST['enddate']); + $url = trim($_POST['rurl']); + set_config('blackout','begindate',$begindate); + set_config('blackout','enddate',$enddate); + set_config('blackout','url',$url); +}