Пример #1
0
def main():
    # Read in the config
    config = configparser.ConfigParser()
    config.read('config.ini')

    # Setup Mattermost connection
    mm = mattermost.MMApi(config["mattermost"]["url"])
    mm.login(bearer=config["mattermost"]["token"])
    user = mm.get_user()

    # Check for team id
    if "team_id" not in config["mattermost"]:
        available_teams = mm.get_teams()
        eprint("No team_id set in config.ini, please select one:")
        for team in available_teams:
            eprint(f" - {team['display_name']}: {team['id']}")
        return

    # Check for channel id
    if "channel_id" not in config["mattermost"]:
        available_channels = mm.get_channels_for_user(
            user["id"], config["mattermost"]["team_id"])
        eprint("No channel_id set in config.ini, please select one:")
        for channel in available_channels:
            eprint(f" - {channel['display_name']}: {channel['id']}")
        return

    mm_ws = mattermost.ws.MMws(lambda mm_ws, data: handle_ws(mm_ws, data, pty),
                               mm, config["mattermost"]["ws_url"])

    # Spawn a new bash shell, sending all output to Mattermost
    pty.spawn("/bin/bash", lambda fd: read_from_pty(fd, mm, config))
    pty.fork()
Пример #2
0
    def __init__(self, mattermost_config):
        self._host = mattermost_config.get("mm_host")
        self._port = mattermost_config.get("mm_port")

        self._mattermost = mattermost.MMApi("http://{}:{}/api".format(
            self._host, self._port))
        self._mattermost.login(bearer=mattermost_config.get("mm_access_token"))

        self._team = self.get_team_by_name(mattermost_config.get("mm_team"))
        self._channel = self._mattermost.get_channel_by_name(
            team_id=self._team.get("id"),
            channel_name=mattermost_config.get("mm_channel"))
def main():
    show_usage = False
    mm_api = None
    chan_id = None

    if "MM_APIURL" in os.environ:
        mm_api = mattermost.MMApi(os.environ["MM_APIURL"])
    else:
        show_usage = True


    if ("MM_USER" in os.environ and "MM_PASS" in os.environ) or ("MM_BEARER" in os.environ):
        if "MM_BEARER" in os.environ:
            mm_api.login(bearer=os.environ["MM_BEARER"])
        else:
            mm_api.login(os.environ["MM_USER"], os.environ["MM_PASS"])
    else:
        show_usage = True


    if "MM_CHANID" in os.environ:
        chan_id = os.environ["MM_CHANID"]
    else:
        show_usage = True


    if len(sys.argv) < 1 or len(sys.argv) > 3:
        show_usage = True


    if show_usage:
        print(cleandoc("""required ENV-parameters: MM_APIURL, MM_USER+MM_PASS or MM_BEARER, MM_CHANID.
            arguments: [PREFIX] [SUFFIX]
            """))
        sys.exit(1)


    prefix = suffix = ""
    try:
        prefix = sys.argv[1].replace("\\n", "\n")
        suffix = sys.argv[2].replace("\\n", "\n")
    except:
        pass

    print("Posting to channel:" +str(mm_api.create_post(chan_id, prefix+sys.stdin.read()+suffix, props={"from_webhook":"true"})))

    mm_api.logout()
Пример #4
0
import sys
import time
import random
import shelve
import datetime

from insults import list_of_insults

GAME_MUTEX = Lock()

# Read in the config
config = configparser.ConfigParser()
config.read('config.ini')

# Setup Mattermost connection
mm = mattermost.MMApi(config["mattermost"]["url"])
mm.login(bearer=config["mattermost"]["token"])
user = mm.get_user()

# Setup randomkick config
active_users_since = int(config["randomkick"]["active_users_since_minutes"])

# Setup duel config
duel_max_game_ticks = int(config["duel"]["max_game_tick"])

# Setup shelve storage
shelve_location = config["stats"]["location"]
with shelve.open(shelve_location) as db:
    if 'russianroulette' not in db:
        db['russianroulette'] = []
    if 'randomkick' not in db:
Пример #5
0
        if record.levelno in (logging.ERROR, logging.CRITICAL):
            raise SystemExit(-1)


logging.basicConfig(handlers=[ExitOnErrorHandler()],
                    format='%(levelname)s: %(message)s',
                    level=LOG_LEVEL)

DRY_RUN = '--dryrun' in sys.argv
if DRY_RUN:
    logging.info("Dry run.  Nothing will be created.")

g = Github(GITHUB_KEY)
r = g.get_repo(GITHUB_REPO)
GITHUB_USER = g.get_user().login
mm = mattermost.MMApi(MATTERMOST_URL)
mm.login(MATTERMOST_LOGIN, MATTERMOST_PW)

# Retrieve Issues from github
d = datetime.datetime.now() - datetime.timedelta(days=3)
issue_search = {'state': 'open', 'since': d}
all_issues = r.get_issues(**issue_search)

# filter messages that need some attention
pending_issues = []
for i in all_issues:
    skip = False
    labels = []
    for l in i.raw_data['labels']:
        l = l['name']
        if l.startswith("area") or l.startswith("team") or l.endswith(