add user count and uptime to stats
This commit is contained in:
parent
4d4d035757
commit
ad5231463f
@ -17,13 +17,14 @@
|
|||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import re
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
import sqlalchemy.orm
|
import sqlalchemy.orm
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from rsbbs import __version__
|
from rsbbs import __version__
|
||||||
from rsbbs import Console, Parser
|
from rsbbs import Console, Parser
|
||||||
from rsbbs.models import Message
|
from rsbbs.models import Message, User
|
||||||
|
|
||||||
|
|
||||||
class Plugin():
|
class Plugin():
|
||||||
@ -49,16 +50,30 @@ class Plugin():
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
|
||||||
|
def get_user_count(self) -> int:
|
||||||
|
with self.api.controller.session() as session:
|
||||||
|
try:
|
||||||
|
count = session.execute(sqlalchemy.select(
|
||||||
|
sqlalchemy.func.count(User.id))).scalar_one()
|
||||||
|
return int(count)
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(e)
|
||||||
|
|
||||||
def get_uptime(self) -> str:
|
def get_uptime(self) -> str:
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
['uptime'], capture_output=True, text=True)
|
['uptime'], capture_output=True, text=True)
|
||||||
return result.stdout
|
uptime = result.stdout
|
||||||
|
find = r'.*up\s(.+?),\s*?(\d+?):(\d+?).*'
|
||||||
|
replace = r'\1, \2 hour(s), \3 minutes'
|
||||||
|
response = re.sub(find, replace, uptime)
|
||||||
|
return response
|
||||||
|
|
||||||
def run(self, args) -> None:
|
def run(self, args) -> None:
|
||||||
"""Show some stats."""
|
"""Show some stats."""
|
||||||
response = []
|
response = []
|
||||||
response.append(f"[RSBBS-{__version__}] listening on "
|
response.append(f"[RSBBS-{__version__}] listening on "
|
||||||
f"{self.api.config.callsign} ")
|
f"{self.api.config.callsign} ")
|
||||||
|
response.append(f"Users: {self.get_user_count()}")
|
||||||
response.append(f"Messages: {self.get_message_count()}")
|
response.append(f"Messages: {self.get_message_count()}")
|
||||||
response.append(f"Uptime: {self.get_uptime()}")
|
response.append(f"Uptime: {self.get_uptime()}")
|
||||||
self.api.write_output('\r\n'.join(response))
|
self.api.write_output('\r\n'.join(response))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user