Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
N
noblogs-cli
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Noblogs
noblogs-cli
Commits
6e1eccb1
Commit
6e1eccb1
authored
8 years ago
by
lucha
Browse files
Options
Downloads
Patches
Plain Diff
removing noblogs bin, keeping noblogs.in
parent
da4ce5b0
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
bin/noblogs
+0
-430
0 additions, 430 deletions
bin/noblogs
bin/noblogs.in
+16
-0
16 additions, 0 deletions
bin/noblogs.in
with
16 additions
and
430 deletions
bin/noblogs
deleted
100644 → 0
+
0
−
430
View file @
da4ce5b0
#!/suca/dai/php5 -f
<?php
include('/usr/local/lib/noblogs-cli/noblogs.php');
function help() {
?>
Usage: noblogs
<COMMAND>
[
<ARGS>
...]
Known commands:
info BLOG [...]
Print some basic information about one or more blogs.
connectdb BLOG
Connect to the MySQL instance that has the blog db.
get-option OPTION_NAME BLOG [...]
Print the value of an option for the specified blogs.
set-option OPTION_NAME OPTION_VALUE BLOG [...]
Set the value of an option for the specified blogs.
print-all-blogs
Print a list of all existing blog IDs.
print-local-blogs
Print a list of just those blog IDs that are hosted on this
server.
dump-shards
Print a JSON dictionary representing the full backend -> blogs
map.
check-upgrade BLOG [...]
Check whether the specified blogs need to be upgraded.
upgrade BLOG [...]
Upgrade the specified blogs. NOTE: upgrading a blog that is
not local is dangerous! Use the 'on-local-blogs' wrapper.
run-cron BLOG [...]
Run cron jobs for the specified blogs. NOTE: running cron jobs
for a blog that is not local is dangerous! Use the 'on-local-blogs'
wrapper.
fix-rewrites BLOG [...]
Fix broken rewrite rules for the specified blogs. NOTE: dangerous!!!!
close-comments-if-inactive BLOG [...]
Closes old posts for comments on non-active blogs.
remove-network-upgrade-message
Remove the 'network upgrade' message when all the blogs have
been upgraded individually.
update-friend-domains
Update the list of 'friend' email domains.
check-updates
Check for updates of core, plugins and themes.
Options:
-force prints the known updates when not checking for the new ones
-mail sends email to ai-changes@investici.org
-json print JSON output
set-readonly on|off
Set read-only mode for the local noblogs installation. The argument
must be either the literal 'on' or 'off'.
<?php
exit
(
1
);
}
// 'info': Return information about a single blog.
function
do_info
(
$args
)
{
foreach
(
$args
as
$arg
)
{
$blog
=
noblogs_get_blog
(
$arg
);
if
(
!
$blog
)
{
die
(
"Blog not found.
\n
"
);
}
$status
=
'active'
;
if
(
$blog
->
deleted
)
{
$status
=
'deleted'
;
}
elseif
(
$blog
->
archived
)
{
$status
=
'archived'
;
}
$dbinfo
=
noblogs_get_backend_for_blog
(
$blog
->
blog_id
);
echo
"ID:
{
$blog
->
blog_id
}
\n
"
;
echo
"Name:
{
$blog
->
domain
}
\n
"
;
echo
"Host:
{
$dbinfo
[
'host'
]
}
\n
"
;
echo
"Status:
{
$status
}
\n
"
;
echo
"Registered:
{
$blog
->
registered
}
\n
"
;
echo
"Last Update:
{
$blog
->
last_updated
}
\n
"
;
echo
"
\n
"
;
}
}
// 'connectdb': Connect to the database hosting a specific blog.
function
do_connectdb
(
$args
)
{
$blog
=
noblogs_get_blog
(
$args
[
0
]);
if
(
!
$blog
)
{
die
(
"Blog not found.
\n
"
);
}
$backend
=
noblogs_get_backend_for_blog
(
$blog
->
blog_id
);
echo
"ID:
{
$blog
->
blog_id
}
\n
"
;
$cmd
=
"mysql -A -h
{
$backend
[
'host'
]
}
-P
{
$backend
[
'port'
]
}
-u
{
$backend
[
'user'
]
}
-p
{
$backend
[
'password'
]
}
{
$backend
[
'db'
]
}
"
;
echo
"
$cmd
\n
"
;
//system($cmd);
}
// 'get-option': Print the value of a blog option.
function
do_get_option
(
$args
)
{
$option
=
$args
[
0
];
if
(
!
$option
)
{
echo
"Not enough arguments
\n
"
;
help
();
}
foreach
(
array_splice
(
$args
,
1
)
as
$arg
)
{
$blog
=
noblogs_get_blog
(
$arg
);
if
(
!
$blog
)
{
echo
"Blog
{
$arg
}
not found.
\n
"
;
continue
;
}
switch_to_blog
(
$blog
->
blog_id
);
$value
=
get_option
(
$option
);
if
(
$value
)
{
if
(
is_array
(
$value
))
{
// Use JSON as a string representation.
$value
=
json_encode
(
$value
);
}
echo
"
{
$arg
}
:
{
$value
}
\n
"
;
}
restore_current_blog
();
}
}
// 'set-option': Set the value of a blog option.
function
do_set_option
(
$args
)
{
$option
=
array_shift
(
$args
);
if
(
!
$option
)
{
echo
"Not enough arguments
\n
"
;
help
();
}
$value
=
array_shift
(
$args
);
if
(
$value
===
null
)
{
echo
"Not enough arguments
\n
"
;
help
();
}
foreach
(
$args
as
$arg
)
{
$blog
=
noblogs_get_blog
(
$arg
);
if
(
!
$blog
)
{
echo
"Blog
{
$arg
}
not found.
\n
"
;
continue
;
}
switch_to_blog
(
$blog
->
blog_id
);
update_option
(
$option
,
$value
);
$nv
=
get_option
(
$option
);
echo
"
{
$arg
}
:
{
$nv
}
\n
"
;
restore_current_blog
();
}
}
// 'dump-shards': Print a JSON dictionary representing the full map
// of backend -> blogs database mappings.
function
do_dump_shards
(
$args
)
{
$backend_map
=
noblogs_get_backend_map
();
echo
json_encode
(
$backend_map
);
echo
"
\n
"
;
}
// 'print-all-blogs': List all blog IDs.
function
do_print_all_blogs
(
$args
)
{
$blogs
=
noblogs_get_blogs
();
foreach
(
$blogs
as
$blog
)
{
echo
"
{
$blog
->
blog_id
}
\n
"
;
}
}
// 'print-local-blogs': List the blog IDs that are local to this machine.
function
do_print_local_blogs
(
$args
)
{
$local_blogs
=
noblogs_get_local_blogs
();
foreach
(
$local_blogs
as
$b
)
{
echo
$b
.
"
\n
"
;
}
}
// 'remove-network-upgrade-message': Remove the annoying "network
// upgrade necessary" banner from the dashboard.
function
do_remove_network_upgrade_message
(
$args
)
{
global
$wp_db_version
;
update_site_option
(
'wpmu_upgrade_site'
,
$wp_db_version
);
}
// 'check-upgrade': Check if a blog needs to be upgraded.
function
do_check_upgrade
(
$args
)
{
global
$wp_db_version
;
foreach
(
$args
as
$arg
)
{
$blog
=
noblogs_get_blog
(
$arg
);
if
(
!
$blog
)
{
echo
"Blog
{
$arg
}
not found.
\n
"
;
continue
;
}
switch_to_blog
(
$blog
->
blog_id
);
$db_version
=
get_option
(
'db_version'
);
if
(
$db_version
!=
$wp_db_version
)
{
echo
"
{
$arg
}
: UPGRADE
\n
"
;
}
else
{
echo
"
{
$arg
}
: ok
\n
"
;
}
restore_current_blog
();
}
}
// 'upgrade': Upgrade a blog.
function
do_upgrade
(
$args
)
{
include
(
NOBLOGS_ROOT
.
"/wp-admin/includes/upgrade.php"
);
foreach
(
$args
as
$arg
)
{
$blog
=
noblogs_get_blog
(
$arg
);
if
(
!
$blog
)
{
echo
"Blog
{
$arg
}
not found.
\n
"
;
continue
;
}
switch_to_blog
(
$blog
->
blog_id
);
wp_upgrade
();
echo
"
{
$arg
}
: ok
\n
"
;
restore_current_blog
();
}
}
// 'run-cron': Run cron jobs.
function
do_run_cron
(
$args
)
{
foreach
(
$args
as
$arg
)
{
$blog
=
noblogs_get_blog
(
$arg
);
if
(
!
$blog
)
{
echo
"Blog
{
$arg
}
not found.
\n
"
;
continue
;
}
switch_to_blog
(
$blog
->
blog_id
);
noblogs_run_cron_for_current_blog
();
echo
"
{
$arg
}
: ok
\n
"
;
restore_current_blog
();
}
}
// 'fix-rewrites': Fix rewrite rules
function
do_fix_rewrites
(
$args
)
{
global
$wp_rewrite
;
foreach
(
$args
as
$arg
)
{
$blog
=
noblogs_get_blog
(
$arg
);
if
(
!
$blog
)
{
echo
"Blog
{
$arg
}
not found.
\n
"
;
continue
;
}
switch_to_blog
(
$blog
->
blog_id
);
$wp_rewrite
->
init
();
create_initial_taxonomies
();
$wp_rewrite
->
flush_rules
();
echo
"
{
$arg
}
: ok
\n
"
;
restore_current_blog
();
}
}
function
do_update_friend_domains
(
$args
)
{
$domains
=
noblogs_list_friend_domains
();
update_site_option
(
'limited_email_domains'
,
$domains
);
echo
"Update done.
\n
"
;
}
function
do_check_spam
(
$args
)
{
global
$wpdb
;
$spamcount
=
0
;
foreach
(
$args
as
$arg
)
{
$blog
=
noblogs_get_blog
(
$arg
);
if
(
!
$blog
)
{
echo
"Blog
{
$arg
}
not found.
\n
"
;
continue
;
}
$spam
=
$wpdb
->
get_var
(
"SELECT count(*) FROM wp_"
.
$blog
->
blog_id
.
"_comments where comment_approved = 'spam';"
);
$spamcount
+=
$spam
;
printf
(
"%s - %d : %d
\n
"
,
$blog
->
domain
,
$blog
->
blog_id
,
$spam
);
}
printf
(
"Found %d spam comments
\n
"
,
$spamcount
);
}
function
do_nuke_spam
(
$args
)
{
global
$wpdb
;
foreach
(
$args
as
$arg
)
{
$blog
=
noblogs_get_blog
(
$arg
);
if
(
!
$blog
)
{
echo
"Blog
{
$arg
}
not found.
\n
"
;
continue
;
}
$spam
=
$wpdb
->
get_var
(
"DELETE FROM wp_"
.
$blog
->
blog_id
.
"_comments where comment_approved = 'spam' and comment_date < '"
.
date
(
'Y-m-d'
,
time
()
-
(
86400
*
60
))
.
"';"
);
printf
(
"%s - %d : %d
\n
"
,
$blog
->
domain
,
$blog
->
blog_id
,
$spam
);
}
}
function
do_close_comments_if_inactive
(
$args
)
{
global
$wpdb
;
foreach
(
$args
as
$arg
)
{
$blog
=
noblogs_get_blog
(
$arg
);
if
(
!
$blog
)
{
echo
"Blog
{
$arg
}
not found.
\n
"
;
continue
;
}
switch_to_blog
(
$blog
->
blog_id
);
if
(
get_option
(
'close_comments_for_old_posts'
)
==
'1'
)
{
echo
"Blog
{
$blog
->
domain
}
already closed to comments, skipping.
\n
"
;
continue
;
}
else
if
(
noblogs_is_stale
())
{
echo
"Closing comments on blog
{
$blog
->
domain
}
.
\n
"
;
update_option
(
'close_comments_for_old_posts'
,
'1'
);
update_option
(
'close_comments_days_old'
,
'90'
);
}
else
{
echo
"Leaving comments opened on blog
{
$blog
->
domain
}
.
\n
"
;
}
}
}
function
check_updates_parse_flags
(
$args
)
{
$flags
=
array
();
foreach
(
array
(
'json'
,
'force'
,
'mail'
)
as
$f
){
$flags
[
$f
]
=
in_array
(
'-'
.
$f
,
$args
);
}
return
$flags
;
}
// 'check-updates': check for core, plugins and theme updates
function
do_check_updates
(
$args
)
{
$alertmail
=
"root@localhost"
;
$flags
=
check_updates_parse_flags
(
$args
);
global
$wp_version
;
$updates
=
array
();
$updates
[
'core'
]
=
array
();
$updates
[
'plugins'
]
=
array
();
$updates
[
'themes'
]
=
array
();
$txt
=
''
;
$check
=
$flags
[
'force'
];
$check
=
wp_version_check
()
||
$check
;
$check
=
wp_update_plugins
()
||
$check
;
$check
=
wp_update_themes
()
||
$check
;
if
(
!
$check
)
{
$flags
[
'json'
]
||
print
"Check is too soon, exiting
\n
"
;
exit
(
1
);
}
foreach
(
get_site_transient
(
'update_core'
)
->
updates
as
$update
)
{
if
(
$update
->
current
!=
$wp_version
)
{
$txt
.
=
sprintf
(
"Core version: %s
\n\n
"
,
$update
->
current
);
$updates
[
'core'
][]
=
array
(
'version'
=>
$update
->
current
,
'url'
=>
$update
->
package
);
}
}
foreach
(
get_site_transient
(
'update_plugins'
)
->
response
as
$update
)
{
$txt
.
=
sprintf
(
"Plugin: %s
\n
Version: %s
\n
URL: %s
\n\n
"
,
$update
->
slug
,
$update
->
new_version
,
$update
->
package
);
$updates
[
'plugins'
][]
=
array
(
'name'
=>
$update
->
slug
,
'version'
=>
$update
->
new_version
,
'url'
=>
$update
->
package
);
}
foreach
(
get_site_transient
(
'update_themes'
)
->
response
as
$name
=>
$update
)
{
$txt
.
=
sprintf
(
"Theme: %s
\n
Version: %s
\n
URL: %s
\n\n
"
,
$name
,
$update
[
'new_version'
],
$update
[
'package'
]);
$updates
[
'themes'
][]
=
array
(
'name'
=>
$name
,
'version'
=>
$update
[
'new_version'
],
'url'
=>
$update
[
'package'
]);
}
if
(
$flags
[
'mail'
]){
wp_mail
(
$alertmail
,
"[Noblogs-Alert] Updates are available"
,
$txt
);
}
if
(
$flags
[
'json'
]){
print
json_encode
(
$updates
);
}
else
{
print
$txt
;
}
}
// 'set-readonly': toggle readonly mode by modifying .htaccess
function
do_set_readonly
(
$args
)
{
$htaccess
=
NOBLOGS_ROOT
.
'/.htaccess'
;
if
(
$args
[
0
]
==
"on"
)
{
comment_with_markers
(
$htaccess
,
'readonly'
,
false
);
}
elseif
(
$args
[
0
]
==
"off"
)
{
comment_with_markers
(
$htaccess
,
'readonly'
,
true
);
}
else
{
print
"Argument must be either 'on' or 'off'."
;
}
}
// Command-line parsing.
$cmd
=
$argv
[
1
];
if
(
!
$cmd
)
{
help
();
}
$cmd_func
=
"do_"
.
str_replace
(
'-'
,
'_'
,
$cmd
);
if
(
!
function_exists
(
$cmd_func
))
{
echo
"Unknown command '"
.
$cmd
.
"'
\n\n
"
;
help
();
}
call_user_func
(
$cmd_func
,
array_slice
(
$argv
,
2
));
This diff is collapsed.
Click to expand it.
bin/noblogs.in
+
16
−
0
View file @
6e1eccb1
...
@@ -64,6 +64,10 @@ Known commands:
...
@@ -64,6 +64,10 @@ Known commands:
-mail sends email to ai-changes@investici.org
-mail sends email to ai-changes@investici.org
-json print JSON output
-json print JSON output
set-readonly on|off
Set read-only mode for the local noblogs installation. The argument
must be either the literal 'on' or 'off'.
<?php
<?php
exit
(
1
);
exit
(
1
);
}
}
...
@@ -398,6 +402,18 @@ function do_check_updates($args) {
...
@@ -398,6 +402,18 @@ function do_check_updates($args) {
}
}
// 'set-readonly': toggle readonly mode by modifying .htaccess
function
do_set_readonly
(
$args
)
{
$htaccess
=
NOBLOGS_ROOT
.
'/.htaccess'
;
if
(
$args
[
0
]
==
"on"
)
{
comment_with_markers
(
$htaccess
,
'readonly'
,
false
);
}
elseif
(
$args
[
0
]
==
"off"
)
{
comment_with_markers
(
$htaccess
,
'readonly'
,
true
);
}
else
{
print
"Argument must be either 'on' or 'off'."
;
}
}
// Command-line parsing.
// Command-line parsing.
$cmd
=
$argv
[
1
];
$cmd
=
$argv
[
1
];
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment