MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / ban

Method ban

source/game/StarCommandProcessor.cpp:612–658  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

610}
611
612String CommandProcessor::ban(ConnectionId connectionId, String const& argumentString) {
613 if (auto errorMsg = adminCheck(connectionId, "ban a user"))
614 return *errorMsg;
615
616 auto arguments = m_parser.tokenizeToStringList(argumentString);
617
618 if (arguments.empty())
619 return "No player specified";
620
621 auto toKick = playerCidFromCommand(arguments[0], m_universe);
622 if (!toKick)
623 return strf("No user with specifier {} found.", arguments[0]);
624
625 String reason = arguments[0];
626 if (arguments.size() < 2)
627 reason = m_universe->clientNick(*toKick);
628 else
629 reason = arguments[1];
630
631 pair<bool, bool> type = {true, true};
632
633 if (arguments.size() >= 3) {
634 if (arguments[2] == "ip") {
635 type = {true, false};
636 } else if (arguments[2] == "uuid") {
637 type = {false, true};
638 } else if (arguments[2] == "both") {
639 type = {true, true};
640 } else {
641 return strf("Invalid argument {} passed as ban type to /ban. Options are ip, uuid, or both.", arguments[2]);
642 }
643 }
644
645 Maybe<int> banTime;
646 if (arguments.size() == 4) {
647 try {
648 banTime = lexicalCast<int>(arguments[3]);
649 } catch (BadLexicalCast const&) {
650 return strf("Invalid argument {} passed as ban time to /ban.", arguments[3]);
651 }
652 }
653
654 m_universe->banUser(*toKick, reason, type, banTime);
655
656 return strf("Successfully kicked user with specifier {}. ConnectionId: {}. Reason given: {}",
657 arguments[0], toKick, reason);
658}
659
660String CommandProcessor::unbanIp(ConnectionId connectionId, String const& argumentString) {
661 if (auto errorMsg = adminCheck(connectionId, "unban a user"))

Callers

nothing calls this directly

Calls 6

strfFunction · 0.85
tokenizeToStringListMethod · 0.80
banUserMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45
clientNickMethod · 0.45

Tested by

no test coverage detected