]>
jfr.im git - irc/rizon/acid.git/blob - pyva/src/main/python/erepublik/cmd_admin.py
1 from pseudoclient
import sys_base
3 from datetime
import datetime
6 #---------------------------------------------------------------------#
8 from pseudoclient
import cmd_admin
9 from pseudoclient
.cmd_admin
import \
16 #---------------------------------------------------------------------#
18 def admin_chan(self
, source
, target
, pieces
):
19 def subcmd_news(self
, action
, channel
, source
, target
, pieces
):
20 if channel
in self
.channels
:
21 cur_state
= self
.channels
[channel
].news
22 self
.channels
.set(channel
, 'news', not cur_state
)
23 self
.msg(target
, 'Toggled news for channel @b%s@b. Current state: %s.' % (channel
, 'disabled' if cur_state
else 'enabled'))
25 self
.msg(target
, 'Channel @b%s@b is not in the database.' % channel
)
27 def subcmd_mass(self
, action
, channel
, source
, target
, pieces
):
28 if channel
in self
.channels
:
29 cur_state
= self
.channels
[channel
].mass
30 self
.channels
.set(channel
, 'mass', not cur_state
)
31 self
.msg(target
, 'Toggled mass for channel @b%s@b. Current state: %s.' % (channel
, 'disabled' if cur_state
else 'enabled'))
33 self
.msg(target
, 'Channel @b%s@b is not in the database.' % channel
)
35 return cmd_admin
.admin_chan(self
, source
, target
, pieces
, meta
={
42 'extra_info': lambda chan
: ' News: @b%s@b. Mass: @b%s@b.' \
43 % ('enabled' if chan
.news
else 'disabled', 'enabled' if chan
.mass
else 'disabled')
46 #---------------------------------------------------------------------#
48 def admin_user(self
, source
, target
, pieces
):
50 # i am too tired to think about how to write this as a lambda
52 if user
.citizen
!= None:
53 m
+= ' Citizen: @b%s@b.' % user
.citizen
54 if user
.company
!= None:
55 m
+= ' Company: @b%s@b.' % user
.company
56 return m
+ ' Mass: ' + ('enabled.' if user
.mass
else 'disabled.')
58 def subcmd_mass(self
, action
, username
, source
, target
, pieces
):
59 if username
in self
.users
:
60 cur_state
= self
.users
[username
].mass
61 self
.users
.set(username
, 'mass', not cur_state
)
62 self
.msg(target
, 'Toggled mass for user @b%s@b. Current state: %s.' % (username
, 'disabled' if cur_state
else 'enabled'))
64 self
.msg(target
, 'User @b%s@b is not in the database.' % channel
)
66 return cmd_admin
.admin_user(self
, source
, target
, pieces
, meta
={
71 'extra_info': extra_info
74 #---------------------------------------------------------------------#
76 def admin_sys(self
, source
, target
, pieces
):
86 names
.append('options')
87 subsystems
.append(self
.options
)
91 subsystems
.append(self
.users
)
94 names
.append('channels')
95 subsystems
.append(self
.channels
)
99 subsystems
.append(self
.news
)
103 subsystems
.append(self
.auth
)
106 names
.append('antiflood')
107 subsystems
.append(self
.antiflood
)
112 if operation
in ['u', 'update']:
113 for subsystem
in subsystems
:
116 self
.msg(target
, 'Forced update for @b%s@b.' % '@b, @b'.join(names
))
117 elif operation
in ['r', 'reload']:
118 for subsystem
in subsystems
:
121 self
.msg(target
, 'Forced reload for @b%s@b.' % '@b, @b'.join(names
))
122 elif operation
in ['d', 'delay']:
124 for subsystem
in subsystems
:
125 self
.msg(target
, 'Auto-update delay for @b%s@b is %d seconds.' % (subsystem
.name
, subsystem
.delay
))
128 seconds
= int(pieces
[2])
133 self
.msg(target
, 'Auto-update delay must be greater than 10 seconds.')
136 for subsystem
in subsystems
:
137 subsystem
.set_option('update_period', seconds
)
140 self
.msg(target
, 'Auto-update delay for @b%s@b set to @b%d@b seconds.' % ('@b, @b'.join(names
), seconds
))
146 def admin_status(self
, source
, target
, pieces
):
149 elif pieces
[0] == 'on':
151 self
.offline_msg
= None
152 elif pieces
[0] == 'off':
154 self
.offline_msg
= ' '.join(pieces
[1:]) if len(pieces
) > 1 else None
158 self
.msg(target
, 'Module status: @b%s@b' % ('online' if self
.online
else 'offline'))
161 def admin_stats(self
, source
, target
, pieces
):
162 self
.msg(target
, 'Registered users: @b%d@b.' % len(self
.users
.list_all()))
163 self
.msg(target
, 'Registered channels: @b%d@b.' % len(self
.channels
.list_all()))
168 'chan' : (admin_chan
, '<ban|unban|info|add|remove|list|blist|news|mass> <channel> [reason]'),
169 'unreg' : (admin_unregistered
, '<check|list|part> - remove unregistered channels'),
170 'user' : (admin_user
, '<ban|unban|info|add|remove|list|blist|mass> <user> [reason]'),
171 'stats' : (admin_stats
, 'counts registered users and channels'),
172 'db' : (admin_db
, '[on|off] - enables/disables auto commits to db'),
173 'opt' : (admin_opt
, '[get|set|clear] [option] [value] - manipulates options (list all if no arguments)'),
174 'sys' : (admin_sys
, '<subsystem> <operation> [value] - (subsystems: options (o), users (u), channels (c), news (n), auth (a), antiflood (f)) (operations: update (u), reload (r), delay (d))'),
175 'log' : (admin_log
, '[level] - gets or sets the log level (0-7).'),
176 'msg' : (admin_msg
, '<message> - sends a message to all channels'),
177 'status' : (admin_status
, '<on/off> - disables/enables API commands (use when API is down)'),