예제 #1
0
def channels_menu(item):
    import channelselector
    from core import channeltools
    from core.item import Item
    from platformcode import config, platformtools
    from specials import setting

    names = []
    ids = []

    channel_list = channelselector.filterchannels("all")
    for channel in channel_list:
        if not channel.channel:
            continue
        channel_parameters = channeltools.get_channel_parameters(
            channel.channel)
        if channel_parameters["has_settings"]:
            names.append(channel.title)
            ids.append(channel.channel)

    select = platformtools.dialog_select(config.get_localized_string(60537),
                                         names)
    if select != -1:
        ID = ids[select]

        it = Item(channel='settings', action="channel_config", config=ID)

        setting.channel_config(it)
        return channels_menu(item)
예제 #2
0
def registerOrLogin():
    if config.get_setting(
            'username',
            channel='altadefinizionecommunity') and config.get_setting(
                'password', channel='altadefinizionecommunity'):
        if login():
            return True

    action = platformtools.dialog_yesno(
        'AltadefinizioneCommunity',
        'Questo server necessita di un account, ne hai già uno oppure vuoi tentare una registrazione automatica?',
        yeslabel='Accedi',
        nolabel='Tenta registrazione',
        customlabel='Annulla')
    if action == 1:  # accedi
        from specials import setting
        from core.item import Item
        user_pre = config.get_setting('username',
                                      channel='altadefinizionecommunity')
        password_pre = config.get_setting('password',
                                          channel='altadefinizionecommunity')
        setting.channel_config(Item(config='altadefinizionecommunity'))
        user_post = config.get_setting('username',
                                       channel='altadefinizionecommunity')
        password_post = config.get_setting('password',
                                           channel='altadefinizionecommunity')

        if user_pre != user_post or password_pre != password_post:
            return registerOrLogin()
        else:
            return []
    elif action == 0:  # tenta registrazione
        import random
        import string
        logger.debug('Registrazione automatica in corso')
        mailbox = Gmailnator()
        randPsw = ''.join(
            random.choice(string.ascii_letters + string.digits)
            for i in range(10))
        logger.debug('email: ' + mailbox.address)
        logger.debug('pass: '******'email': reg['email'],
                                             'password': reg['password']
                                         },
                                         cloudscraper=True)

        if regPost.url == register_url:
            error = scrapertools.htmlclean(
                scrapertools.find_single_match(
                    regPost.data, 'Impossibile proseguire.*?</div>'))
            error = scrapertools.unescape(
                scrapertools.re.sub('\n\s+', ' ', error))
            platformtools.dialog_ok('AltadefinizioneCommunity', error)
            return False
        if reg['email'] == mailbox.address:
            if "L'indirizzo email risulta già registrato" in regPost.data:
                # httptools.downloadpage(baseUrl + '/forgotPassword', post={'email': reg['email']})
                platformtools.dialog_ok('AltadefinizioneCommunity',
                                        'Indirizzo mail già utilizzato')
                return False
            mail = mailbox.waitForMail()
            if mail:
                checkUrl = scrapertools.find_single_match(
                    mail.body,
                    '<a href="([^"]+)[^>]+>Verifica').replace(r'\/', '/')
                logger.debug('CheckURL: ' + checkUrl)
                httptools.downloadpage(checkUrl, cloudscraper=True)
                config.set_setting('username',
                                   mailbox.address,
                                   channel='altadefinizionecommunity')
                config.set_setting('password',
                                   randPsw,
                                   channel='altadefinizionecommunity')
                platformtools.dialog_ok(
                    'AltadefinizioneCommunity',
                    'Registrato automaticamente con queste credenziali:\nemail:'
                    + mailbox.address + '\npass: '******'AltadefinizioneCommunity',
                    'Impossibile registrarsi automaticamente')
                return False
        else:
            platformtools.dialog_ok(
                'AltadefinizioneCommunity',
                'Hai modificato la mail quindi KoD non sarà in grado di effettuare la verifica in autonomia, apri la casella '
                + reg['email'] + ' e clicca sul link. Premi ok quando fatto')
        logger.debug('Registrazione completata')
    else:
        return False

    return True