vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Logon to admin account (automated) (https://vborg.vbsupport.ru/showthread.php?t=224098)

MrEyes 09-28-2009 10:01 AM

Logon to admin account (automated)
 
Hello all,

I have various housekeeping scripts that are run by OS level scheduling, one of these is a database backup. During the backup I want the site to be gracefully closed so I knocked up a quick script that set the open/close state of the forum (this would be invoked via wget in my backup script)

Code:

if ($vbulletin->GPC['do'] == 'open')
{
        $vbulletin->options['bbactive'] = '1';
        $vbulletin->options['bbclosedreason'] = '';
        build_datastore('options', serialize($vbulletin->options), 1);
        echo 'Opened';
}
else if ($vbulletin->GPC['do'] == 'close')
{
        $vbulletin->options['bbactive'] = '0';
        $vbulletin->options['bbclosedreason'] = 'This is closed';
        build_datastore('options', serialize($vbulletin->options), 1);
        echo 'Closed';
}

Before anybodies head explodes, this is just the meat of the script. This is all wrapped up in various layers of security and can only be called from localhost.

Now, this will allow me to gracefully close, however it does not allow me to open. The reason for this is that the script technically runs as guest. So when I read in global.php and init vbulletin aborts out as the site is closed. This mean that the open code above is never executed and the site remains closed.

The obvious solution to this problem would be to get the script to login as an administrator (i.e. somebody who is allowed to bypass the close message), however I cannot find anything to do this.

So the question is, how can I automate the login?

--------------- Added [DATE]1254137747[/DATE] at [TIME]1254137747[/TIME] ---------------

Actually I have found an alternative solution that seems to work. It is, shall we say, somewhat hacky but it does seem to work.

In my script I originally had this:

Code:

define('THIS_SCRIPT', 'bbactivetoggle');
The script works if I change this to:

Code:

define('THIS_SCRIPT', 'login');
The reason it works is that there is code in global.php to bypass the forum active check if the page being requested is the login script (without this admins would not be able to login either)

It is a bit hacky but I don't think it will break anything.


All times are GMT. The time now is 09:54 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01004 seconds
  • Memory Usage 1,710KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_code_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (1)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete