function admin_ip_admin_init($args = array())
{
// проверяем сегменты URL
// получаем из опций секретный сегмент
// если это секретный, то сбрасываем ip
// получаем список разрешенных IP из опций
// получаем текущий IP юзера
// если его нет в разрешенных, то die('no');
global $MSO;
$options_key = 'plugin_admin_ip';
$options = mso_get_option($options_key, 'plugins', array());
if (!isset($options['secret'])) {
$options['secret'] = '';
}
if (!isset($options['ip'])) {
$options['ip'] = '';
}
if ($options['secret'] and mso_segment(3) == $options['secret']) {
// сброс ip
// http://localhost/codeigniter/admin/plugin_admin_ip/secret_to_reset - secret_to_reset
$options['ip'] = '';
mso_add_option($options_key, $options, 'plugins');
mso_redirect('admin/plugin_admin_ip');
// редирект на страницу плагина
}
if ($options['ip']) {
// указаны IP
$ips = explode("\n", $options['ip']);
$curr_ip = $MSO->data['session']['ip_address'];
$ok = false;
// признак, что доступ разрешен
foreach ($ips as $ip) {
if (trim($ip) == $curr_ip) {
$ok = true;
break;
}
}
if (!$ok) {
die('Access denied');
}
// рубим
}
if (!mso_check_allow('admin_ip_admin_page')) {
return $args;
// 'Доступ запрещен';
}
$this_plugin_url = 'plugin_admin_ip';
// url и hook
# добавляем свой пункт в меню админки
# первый параметр - группа в меню
# второй - это действие/адрес в url - http://сайт/admin/demo
# можно использовать добавочный, например demo/edit = http://сайт/admin/demo/edit
# Третий - название ссылки
mso_admin_menu_add('plugins', $this_plugin_url, 'Admin IP');
# прописываем для указаного admin_url_ + $this_plugin_url - (он будет в url)
# связанную функцию именно она будет вызываться, когда
# будет идти обращение по адресу http://сайт/admin/_null
mso_admin_url_hook($this_plugin_url, 'admin_ip_admin_page');
return $args;
}
开发者ID:Kmartynov,项目名称:cms,代码行数:60,代码来源:index.php
示例2: t
$act = false;
}
if ($act) {
$out = t('Выполнено:') . ' ';
foreach ($post['f_check_submit'] as $f_name => $val) {
if ($act == 'activate') {
mso_plugin_activate($f_name);
} elseif ($act == 'deactivate') {
mso_plugin_deactivate($f_name);
} elseif ($act == 'uninstall') {
mso_plugin_uninstall($f_name);
}
# унинстал
$out .= ' • ' . $f_name;
}
mso_redirect('admin/plugins');
} else {
echo '<div class="error">' . t('Ошибка обновления') . '</div>';
}
} else {
echo '<div class="error">' . t('Отметьте необходимые плагины') . '</div>';
}
}
?>
<h1><?php
echo t('Плагины');
?>
</h1>
<p class="info"><?php
echo t('Плагины расширяют стандартные возможности сайта. Здесь вы можете включить или отключить плагины. Если вы деинсталируете плагин, то это удаляет его настройки, что позволяет избежать «замусоривания» базы данных.');
?>
开发者ID:rb2,项目名称:MaxSite-CMS,代码行数:31,代码来源:admin.php
示例3: redirect_custom_page_404
function redirect_custom_page_404($args = false)
{
// это почти аналог redirect_init с той разницей, что
// хук срабатывает только при page_404
// получаем опции
// в опциях all - строки с редиректами
// загоняем их в массив
// смотрим текущий url
// если он есть в редиректах, то редиректимся
$options = mso_get_option('redirect', 'plugins', array());
if (!isset($options['all404'])) {
return $args;
}
// нет опций
$all = explode("\n", $options['all404']);
// разобъем по строкам
if (!$all) {
return $args;
}
// пустой массив
// текущий адрес
$current_url = mso_current_url(true);
foreach ($all as $row) {
$urls = explode('|', $row);
// адрес | редирект | 301, 302
$urls = array_map('trim', $urls);
if (isset($urls[0]) && isset($urls[1]) && $urls[0] && $urls[1]) {
//проверяем, используются ли шаблоны в $urls[0]
if (preg_match("/\\(.*\\)+/", $urls[0])) {
$patern = preg_replace("![\\-\\?]+!", '\\\\$0', $urls[0]);
if (preg_match("!" . $patern . "!i", $current_url, $match)) {
$urls[0] = $match[0];
$cn = count($match);
for ($i = 1; $i < $cn; $i++) {
$urls[1] = str_replace('$' . $i, $match[$i], $urls[1]);
}
}
}
//
if ($current_url != $urls[0]) {
continue;
}
// адреса разные
// совпали, делаем редирект
if (isset($urls[2])) {
mso_redirect($urls[1], true, $urls[2]);
} else {
mso_redirect($urls[1], true);
}
}
}
return $args;
}
function fbauth_init($arg = array())
{
if (mso_segment(1) == 'maxsite-fbauth') {
if (!function_exists('curl_init')) {
die('Не найдено PHP-расширение CURL');
}
if (!function_exists('json_decode')) {
die('Не найдено PHP-расширение JSON');
}
$options = mso_get_option('plugin_fbauth', 'plugins', array());
if (!isset($options['app_id']) or !$options['app_id']) {
die(t('Не задан app_id'));
}
if (!isset($options['app_secret']) or !$options['app_secret']) {
die(t('Не задан app_secret'));
}
$app_id = $options['app_id'];
$app_secret = $options['app_secret'];
$my_url = getinfo('site_url') . 'maxsite-fbauth';
$code = isset($_REQUEST["code"]) ? $_REQUEST["code"] : null;
if (!isset($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . '&scope=email,user_website';
mso_redirect($dialog_url, true);
}
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret=" . $app_secret . "&code=" . $code;
$access_token = fbauth_request($token_url);
$graph_url = "https://graph.facebook.com/me?" . $access_token;
$user0 = fbauth_request($graph_url);
if (strpos($user0, '400 Bad Request') !== false) {
die(t('Ошибка авторизации (400 Bad Request)'));
} else {
$user = json_decode($user0);
if (isset($user->email) and mso_valid_email($user->email)) {
require_once getinfo('common_dir') . 'comments.php';
mso_comuser_auth(array('email' => $user->email, 'comusers_nik' => $user->name));
// echo("Hello " . $user->name);
} else {
// ошибочный или отстутсвующий email
die(t('Не удалось авторизоваться с помощью Facebook. Возможно это связано с тем, что в ответ на запрос сервис не возвратил ваш e-mail'));
}
die;
}
}
return $arg;
}
开发者ID:Kmartynov,项目名称:cms,代码行数:45,代码来源:index.php
示例9: _mso_logout
function _mso_logout()
{
$ci =& get_instance();
$ci->session->sess_destroy();
$url = (isset($_SERVER['HTTP_REFERER']) and $_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
// проверяем, чтобы url был текущего сайта
$pos = strpos($url, getinfo('site_url'));
if ($pos === false or $pos > 0) {
$url = '';
}
// чужой, сбрасываем переход
// сразу же удаляем куку комюзера
$comuser = mso_get_cookie('maxsite_comuser', false);
if ($comuser) {
$name_cookies = 'maxsite_comuser';
$expire = time() - 31500000;
$value = '';
//_pr($url);
// mso_add_to_cookie('mso_edit_form_comuser', '', $expire);
//mso_add_to_cookie($name_cookies, $value, $expire, getinfo('siteurl') . mso_current_url()); // в куку для всего сайта
mso_add_to_cookie($name_cookies, $value, $expire, $url);
// в куку для всего сайта
} elseif ($url) {
mso_redirect($url, true);
} else {
mso_redirect(getinfo('site_url'), true);
}
}
开发者ID:rettebinu,项目名称:cms,代码行数:28,代码来源:common.php
示例10: mso_comuser_lost
function mso_comuser_lost($args = array())
{
global $MSO;
if (!isset($args['css_ok'])) {
$args['css_ok'] = 'comment-ok';
}
if (!isset($args['css_error'])) {
$args['css_error'] = 'comment-error';
}
// если нет опции password_recovery, значит восстанавливаем с учетом номера комюзера во втором сегмента адреса
// если опция есть, значит восстанавливаем без учета id комюзера
if (!isset($args['password_recovery'])) {
$password_recovery = false;
} else {
$password_recovery = true;
}
# id комюзера, который в сессии - какой комюзер
# если комюзер залогинен, то будет $id_session
# если нет, то залогиненности нет
if (isset($MSO->data['session']['comuser']) and $MSO->data['session']['comuser']) {
$id_session = $MSO->data['session']['comuser']['comusers_id'];
} else {
$id_session = false;
}
if ($post = mso_check_post(array('f_session_id', 'f_submit', 'f_comusers_email'))) {
# защита рефера
mso_checkreferer();
# защита сессии - если не нужно закомментировать строчку!
if ($MSO->data['session']['session_id'] != $post['f_session_id']) {
mso_redirect();
}
if (!$password_recovery) {
// получаем номер юзера id из f_submit[]
$id = (int) mso_array_get_key($post['f_submit']);
if (!$id) {
return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный номер пользователя') . '!</div>';
}
# проверяем id в сессии с сабмитом
if ($id_session and $id != $id_session) {
return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный номер пользователя2') . '</div>';
}
}
$comusers_email = trim($post['f_comusers_email']);
if (!$comusers_email) {
return '<div class="' . $args['css_error'] . '">' . tf('Нужно указать email') . '</div>';
}
if (!mso_valid_email($comusers_email)) {
return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный email') . '</div>';
}
$CI =& get_instance();
// проверим есть ли вообще такой юзер
$CI->db->select('comusers_id');
if (!$password_recovery) {
$CI->db->where('comusers_id', $id);
}
// если явно указан id, то ищем по нему
$CI->db->where('comusers_email', $comusers_email);
$query = $CI->db->get('comusers');
if ($query->num_rows() == 0) {
// нет такого комментатора
return '<div class="' . $args['css_error'] . '">' . tf('Неверный email или номер пользователя') . '!</div>';
}
if ($password_recovery) {
// получим id этого комюзера
$res = $query->result_array();
$id = $res[0]['comusers_id'];
}
$comusers_new_password = trim($post['f_comusers_password']);
$comusers_activate_key = trim($post['f_comusers_activate_key']);
if ($comusers_email and !$comusers_activate_key and !$comusers_new_password) {
// проверим есть ли активация
$CI->db->select('comusers_id, comusers_activate_key');
$CI->db->where('comusers_id', $id);
$CI->db->where('comusers_activate_string=comusers_activate_key', '', false);
$CI->db->where('comusers_email', $comusers_email);
$CI->db->limit(1);
$query = $CI->db->get('comusers');
if ($query->num_rows() > 0) {
$comuser = $query->result_array();
// данные комюзера
mso_email_message_new_comuser($id, array('comusers_email' => $comusers_email, 'comusers_activate_key' => $comuser[0]['comusers_activate_key']));
return '<div class="' . $args['css_ok'] . '">' . tf('Код активации отправлен на ваш email') . '!</div>';
} else {
return '<div class="' . $args['css_error'] . '">' . tf('Данный email не зарегистрирован или не активирован') . '</div>';
}
} elseif ($comusers_email and $comusers_new_password and !$comusers_activate_key) {
return '<div class="' . $args['css_error'] . '">' . tf('Для установки нового пароля нужно заполнить все поля!') . '</div>';
} elseif ($comusers_email and !$comusers_new_password and $comusers_activate_key) {
// указан email и код активации, но не указан новый пароль
return '<div class="' . $args['css_error'] . '">' . tf('Для установки нового пароля нужно заполнить все поля!') . '</div>';
}
// если указано поле активации и новый пароль, то сверяем код активации с базой + email + id и если все верно,
// то обновляем пароль
// если же поле активации не указано, то высылаем его на указанный email
$CI->db->select('comusers_id');
$CI->db->where('comusers_id', $id);
$CI->db->where('comusers_activate_key', $comusers_activate_key);
$CI->db->where('comusers_activate_string', $comusers_activate_key);
$CI->db->where('comusers_email', $comusers_email);
$CI->db->limit(1);
//.........这里部分代码省略.........
请发表评论