• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python bbs.echo函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中x84.bbs.echo函数的典型用法代码示例。如果您正苦于以下问题:Python echo函数的具体用法?Python echo怎么用?Python echo使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了echo函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: describe_ssh_availability

def describe_ssh_availability(term, session):
    from x84.bbs.ini import CFG
    if session.kind == 'ssh':
        # what a good citizen!
        return

    if not (CFG.has_section('ssh') and
            not CFG.has_option('ssh', 'enabled')
            or CFG.getboolean('ssh', 'enabled')):
        # ssh not enabled
        return

    about_key = (u"You may even use an ssh key, which you can configure from "
                 u"your user profile, " if not session.user.get('pubkey')
                 else u'')
    big_msg = term.bold_blue("Big Brother is Watching You")
    description = (
        "    {term.red}You are using {session.kind}, but ssh is available "
        "on port {ssh_port} of this server.  If you want a secure connection "
        "with shorter latency, we recommend instead to use ssh!  {about_key}"
        "Remember: {big_msg}!"
        .format(term=term,
                session=session,
                ssh_port=ssh_port,
                about_key=about_key,
                big_msg=big_msg)
    )

    echo(u'\r\n\r\n')
    for txt in term.wrap(description, width=min(80, term.width)):
        echo(term.move_x(max(0, (term.width // 2) - 40)))
        echo(term.red(txt.rstrip() + '\r\n'))
    echo(u'\r\n\r\n')
    echo(term.center(term.bold_black('Press any key to continue: ')).rstrip())
    term.inkey()
开发者ID:tehmaze,项目名称:x84,代码行数:35,代码来源:top.py


示例2: prompt_ok

def prompt_ok():
    """
    Prompt user to continue, True if they select yes.
    """
    from x84.bbs import getsession, getterminal, echo, getch, Selector
    session, term = getsession(), getterminal()
    prompt_confirm = u'EVERYthiNG lOOk Ok ?'
    prompt_continue = u'YES (CONtiNUE)'
    prompt_chg = u'NO! (ChANGE)'

    def prompt_ok_dumb():
        """ Dummy terminal prompt for confirm/cancel. """
        echo('\r\n\r\n%s\r\n' % (prompt_confirm,))
        echo('1 - %s\r\n' % (prompt_continue,))
        echo('2 - %s\r\n\r\n' % (prompt_chg,))
        echo('select (1, 2) --> ')
        while True:
            inp = getch()
            if inp == u'1':
                return True
            elif inp == u'2':
                return False
    if session.env.get('TERM') == 'unknown':
        return prompt_ok_dumb()
    sel = Selector(yloc=term.height - 1, xloc=5,
                   width=term.width - 10,
                   left=prompt_continue, right=prompt_chg)
    echo(term.normal)
    echo(term.move(term.height - 2, 0) + term.clear_eol)
    echo(prompt_confirm.center(term.width - 1) + '\r\n')
    echo(term.clear_eol + sel.refresh())
    while True:
        echo(sel.process_keystroke(getch()))
        if sel.selected:
            return True if sel.selection == prompt_continue else False
开发者ID:jonny290,项目名称:yos-x84,代码行数:35,代码来源:nua.py


示例3: redrawlightbar

def redrawlightbar(filer, lighty,lightx,lightbar,start,antalrader): # if the variable lightbar is negative the lightbar will be invisible
    import time
    from x84.bbs import timeago
    term = getterminal()
    echo(term.move(lighty,lightx))

    for i in range (0, term.height - 2):
        echo(term.move(lighty+i,lightx)+u' '*(term.width - lightx)) # erases 60 char. dont want to use clreol. So filenames/directories can be 45 char.

    i2 = 0
    for i in range (start,start+antalrader):
        origtime = filer[i][6].strip()
        secsago = timeago(time.time() - (3600 * 6)- time.mktime(time.strptime(origtime,"%I:%M %p %b %d, %Y")))
        
#       if secsago[-1] == 's':
        secsago = secsago[:-3]
        secsago = u''.join([ u' ' * (5-len(secsago)),  secsago ])
        rightbar = filer[i][5].rjust(19)+u' '+ str(secsago)
        leftbar = filer[i][1][:term.width - len(rightbar) - 5]
        if i2 == lightbar:
            echo(term.move(lighty+i-start-1,lightx)+term.blue_reverse+leftbar[:10]+term.normal)
        else:
            echo(term.move(lighty+i-start-1,lightx)+term.white+leftbar[:10]+term.normal)
        echo(term.move(lighty+i-start-1,term.width - len(rightbar) - 2)+rightbar+term.normal)
        i2 = i2 + 1
开发者ID:jonny290,项目名称:yos-x84,代码行数:25,代码来源:yosindex.py


示例4: refresh

 def refresh():
     """ Refresh screen and return top-left (x, y) location. """
     # set syncterm font to cp437
     if term.kind.startswith('ansi'):
         echo(syncterm_setfont('cp437'))
     echo(u'\r\n\r\n')
     if term.width < width:
         echo(u''.join((
             term.move(term.height, 0),
             u'\r\n\r\n',
             term.bold_red + 'screen too thin! (%s/%s)' % (
                 term.width, width,),
             u'\r\n\r\n',
             u'press any key...',)))
         getch()
         return (None, None)
     if term.height < height:
         echo(u''.join((
             term.move(term.height, 0),
             u'\r\n\r\n',
             term.bold_red + 'screen too short! (%s/%s)' % (
                 term.height, height),
             u'\r\n\r\n',
             u'press any key...',)))
         getch()
         return (None, None)
     xloc = (term.width / 2) - (width / 2)
     yloc = (term.height / 2) - (height / 2)
     echo(u''.join((
         term.normal,
         (u'\r\n' + term.clear_eol) * term.height,
         u''.join([term.move(yloc + abs_y, xloc) + line
                   for abs_y, line in enumerate(otxt)]),)))
     return xloc, yloc
开发者ID:tehmaze,项目名称:x84,代码行数:34,代码来源:si.py


示例5: main

def main():
    session, term = getsession(), getterminal()
    session.activity = 'Viewing Userlist'

    colors = {'highlight': term.red,
              'lowlight': term.green, }

    line_no = display_banner(filepattern=art_file, encoding=art_encoding)

    # get and format userlist
    userlist = (
        u'{sp}{handle} {location} {lastcall}'
        .format(sp=u' ' * 4,
                handle=ur.handle.ljust(username_max_length),
                location=colors['lowlight'](
                    ur.location.ljust(location_max_length)),
                lastcall=timeago(ur.timeago))
        for ur in iter_userlist())

    echo(u'\r\n')

    # display users, using a command-prompt pager.
    prompt_pager(content=userlist,
                 line_no=line_no + 1,
                 colors={'highlight': term.red,
                         'lowlight': term.green,
                         },
                 width=80, breaker=None)
开发者ID:hick,项目名称:x84,代码行数:28,代码来源:userlist.py


示例6: get_centigrade

def get_centigrade():
    """ Blocking prompt for setting C/F preference. """
    from x84.bbs import getterminal, getsession, echo
    term = getterminal()
    session = getsession()
    if bool(session.user.handle == 'anonymous'):
        # anonymous cannot set a preference.
        return

    echo(u''.join((
        u'\r\n\r\n',
        term.yellow(u'Celcius'),
        term.bold_yellow(u'('),
        term.bold_yellow_reverse(u'C'),
        term.bold_yellow(u')'),
        u' or ',
        term.yellow(u'Fahrenheit'),
        term.bold_yellow(u'('),
        term.bold_yellow_reverse(u'F'),
        term.bold_yellow(u')'),
        u'? ')))

    while True:
        inp = term.inkey()
        if inp in (u'c', u'C'):
            session.user['centigrade'] = True
            session.user.save()
            break
        elif inp in (u'f', u'F'):
            session.user['centigrade'] = False
            session.user.save()
            break
        elif inp in (u'q', u'Q', term.KEY_EXIT):
            break
开发者ID:gofore,项目名称:x84,代码行数:34,代码来源:weather.py


示例7: redraw

def redraw(pager, selector):
    """ Redraw pager and selector """
    from x84.bbs import getsession, getterminal, echo
    session, term = getsession(), getterminal()
    session.flush_event('oneliner_update')
    pager.colors['border'] = term.white
    pager.glyphs['top-horiz'] = u''
    pager.glyphs['top-right'] = u''
    pager.glyphs['top-left'] = u''
    pager.glyphs['bot-horiz'] = u''
    pager.glyphs['bot-right'] = u''
    pager.glyphs['bot-left'] = u''
    pager.glyphs['left-vert'] = u''
    pager.glyphs['right-vert'] = u''
    prompt_ole = u'write an oneliner?'
    pager.update(u'\n\n\nFetching ...')
    echo(u''.join((
        pager.refresh(),
        pager.border(),
        term.move(selector.yloc - 2, selector.xloc),
        term.bold_red(prompt_ole.center(selector.width).rstrip()),
        term.clear_eol,
        selector.refresh(),)))
    pager.update(u'\n'.join(get_oltxt()))
    pager.move_end()
    echo(pager.refresh())
开发者ID:hick,项目名称:x84,代码行数:26,代码来源:ol.py


示例8: main

def main(handle=None):
    """ Main procedure. """
    # pylint: disable=R0914,R0912,R0915
    #         Too many local variables
    #         Too many branches
    #         Too many statements
    session, term = getsession(), getterminal()
    session.activity = 'top'

    # attempt to coerce encoding of terminal to match session.
    coerce_terminal_encoding(term, session.encoding)

    # fetch user record
    user = get_user_record(handle)

    # register call
    login(session, user)

    # display art and prompt for quick login
    quick = do_intro_art(term, session)

    echo(term.move_down() * 3)

    # only display news if the account has not
    # yet read the news since last update.
    gosub('news', quick=True)

    if not quick:
        # display last 10 callers, if any
        gosub('lc')

        # one-liners
        gosub('ol')

    goto('main')
开发者ID:hick,项目名称:x84,代码行数:35,代码来源:top.py


示例9: refresh_automsg

 def refresh_automsg(idx):
     """ Refresh automsg database, display automsg of idx, return idx. """
     session.flush_event('automsg')
     autodb = DBProxy('automsg')
     automsgs = sorted(autodb.values()) if len(autodb) else db_firstrecord
     dblen = len(automsgs)
     # bounds check
     if idx < 0:
         idx = dblen - 1
     elif idx > dblen - 1:
         idx = 0
     tm_ago, handle, msg = automsgs[idx]
     asc_ago = u'%s ago' % (timeago(time.time() - tm_ago))
     disp = (u''.join(('\r\n\r\n',
                       term.bold(handle.rjust(max_user)),
                       term.bold_blue(u'/'),
                       term.blue(u'%*d' % (len('%d' % (dblen,)), idx,)),
                       term.bold_blue(u':'),
                       term.blue_reverse(msg.ljust(automsg_len)),
                       term.bold(u'\\'),
                       term.blue(asc_ago),)))
     echo(u''.join((
         u'\r\n\r\n',
         Ansi(disp).wrap(term.width),
     )))
     return idx
开发者ID:jonny290,项目名称:yos-x84,代码行数:26,代码来源:logoff.py


示例10: pak

def pak():
    """ Press any key prompt. """
    from x84.bbs import echo, getch
    msg_pak = u'PRESS ANY kEY'
    echo(u'\r\n%s ... ' % (msg_pak,))
    getch()
    return
开发者ID:quastdog,项目名称:x84,代码行数:7,代码来源:lc.py


示例11: get_article

def get_article(term, articles):
    """ Prompt for an article number, return matching article. """
    moveto_lastline = term.move(term.height, 0)
    width = term.width
    if term.kind.startswith('ansi'):
        # bah syncterm
        moveto_lastline = term.move(term.height - 1, 0)
        width -= 1
    echo(u''.join((
        moveto_lastline + getattr(term, COLOR_MAIN),
        term.center('', width),
        moveto_lastline,
    )))
    echo(u':: enter article #: ')
    article_idx = LineEditor(
        width=len(str(ARTICLE_LIMIT)),
        colors={'highlight': getattr(term, COLOR_MAIN)}
    ).read()
    if article_idx is None:
        # pressed escape
        return None
    try:
        return articles[int(article_idx) - 1]
    except (ValueError, IndexError):
        # not an integer, or out of range
        return None
开发者ID:rostob,项目名称:x84,代码行数:26,代码来源:hackernews.py


示例12: try_pass

def try_pass(user):
    """
    Prompt for password and authenticate, returns True if succesfull.
    """
    # pylint: disable=R0914
    #         Too many local variables
    from x84.bbs import getsession, getterminal, ini, LineEditor, echo
    session, term = getsession(), getterminal()
    prompt_pass = u'\r\n\r\n  pass: '
    status_auth = u'\r\n\r\n  ' + term.yellow_reverse(u"Encrypting ..")
    badpass_msg = (u'\r\n\r\n' + term.red_reverse +
                   u"'%s' login failed." + term.normal)
    max_pass = int(ini.CFG.get('nua', 'max_pass'))
    # prompt for password, disable input tap during, mask input with 'x',
    # and authenticate against user record, performing a script change to
    # topscript if sucessful.
    # pylint: disable=W0212
    #         Access to a protected member _tap_input of a client class
    echo(prompt_pass)
    chk = session._tap_input  # <-- save
    session._tap_input = False
    lne = LineEditor(max_pass)
    lne.hidden = u'x'
    password = lne.read()
    session._tap_input = chk  # restore -->
    if password is not None and 0 != len(password):
        echo(status_auth)
        if user.auth(password):
            return True
    denied(badpass_msg % (user.handle,))
    return False
开发者ID:donfanning,项目名称:x84,代码行数:31,代码来源:matrix.py


示例13: send_passkey

def send_passkey(user):
    """ Send passkey token to user by e-mail. """
    session = getsession()
    passkey = base64.encodestring(os.urandom(50))[:password_max_length]

    email_msg = MIMEText(msg_mailbody.format(bbsname=system_bbsname,
                                             session=session,
                                             user=user,
                                             passkey=passkey))
    email_msg['From'] = msg_mailfrom
    email_msg['To'] = user.email
    email_msg['Subject'] = msg_mailsubj.format(bbsname=system_bbsname)

    try:
        smtp = smtplib.SMTP(mail_smtphost)
        smtp.sendmail(msg_mailfrom, [user.email], email_msg.as_string())
        smtp.quit()
    except Exception as err:
        log.exception(err)
        echo('{0}'.format(err))
        return False

    log.info(u'Password reset token delivered '
             u'to address {0!r} for user {1!r}.'
             .format(user.email, user.handle))
    return passkey
开发者ID:ztaylor,项目名称:x84,代码行数:26,代码来源:pwreset.py


示例14: main

def main():
    """ main entry point. """
    from x84.bbs import getterminal, getsession, echo

    session, term = getsession(), getterminal()
    session.activity = 'looking for a place to drink at'

    # move to bottom of screen, reset attribute
    echo(term.move(term.height, 0) + term.normal)

    # create a new, empty screen
    echo(u'\r\n' * (term.height + 1))
    while True:
        disp_search_help()
        search = get_city()
        if search is None or 0 == len(search):
            return
        item = do_get_random_item(search)
        display_suggestion(item)
        while True:
            # allow re-displaying weather between C/F, even at EOT prompt
            inp = term.inkey()
            if inp.lower() == cf_key:
                get_centigrade()
                break
            elif inp.code == term.KEY_ENTER:
                return
开发者ID:gofore,项目名称:x84,代码行数:27,代码来源:afterheap.py


示例15: show_description

def show_description(term, description, color='white', width=80, **kwargs):
    """
    Display text as given ``color``, left-adjusted ``width``.

    :param str description: description text, may contain terminal attributes,
                            in which case ``color`` should be set to None.
    :param str color: terminal color attribute name, may be None.
    :param int width: left-adjusted width, if this is greater than the current
                      terminal's width, the terminal's width is used instead.
    :param kwargs: all remaining keyword arguments are passed to the built-in
                   :class:`textwrap.TextWrapper`.
    :rtype: int
    :returns: number if lines written
    """
    wide = min(width, term.width)
    xpos = max(0, (term.width // 2) - (wide // 2))

    lines = []
    for line in unicode(description).splitlines():
        if line.strip():
            lines.extend(term.wrap(line, wide, **kwargs))
        else:
            lines.append(u'')

    # output as a single string, reducing latency
    outp = u''.join(
        [getattr(term, color) if color else u''] +
        [u''.join((
            term.move_x(xpos) if xpos else u'',
            txt.rstrip(),
            term.clear_eol,
            u'\r\n')) for txt in lines])
    echo(outp)
    return len(outp.splitlines())
开发者ID:NuSkooler,项目名称:x84,代码行数:34,代码来源:common.py


示例16: disp_msg

def disp_msg(msg):
    """ Display unicode string ``msg`` in yellow. """
    from x84.bbs import getterminal, echo
    term = getterminal()
    echo(u''.join((u'\r\n\r\n',
                   term.bold_yellow('%s ' % (msg,),),
                   term.yellow_reverse_bold(u'...'),)))
开发者ID:quastdog,项目名称:x84,代码行数:7,代码来源:weather.py


示例17: do_select_encoding

def do_select_encoding(term, session):
    editor_colors = {'highlight': term.black_on_green}
    dirty = True
    while True:
        if session.poll_event('refresh') or dirty:
            # attempt to coerce encoding of terminal to match session.
            coerce_terminal_encoding(term, session.encoding)

            # display artwork and prompt
            vertical_padding = 2 if term.height >= 24 else 0
            display_banner(filepattern=art_file,
                           encoding=art_encoding,
                           vertical_padding=vertical_padding)
            display_prompt(term)
            dirty = False

        inp = LineEditor(1, colors=editor_colors).read()

        if inp is None or inp.lower() == 'd':
            break
        elif len(inp):
            # bad input -- reposition cursor for next LineEditor()
            echo(u'\b')
        if inp.lower() == u'u' and session.encoding != 'utf8':
            # switch to utf8,
            session.encoding = 'utf8'
            dirty = True
        elif inp.lower() == 'c' and session.encoding != 'cp437':
            # or cp437
            session.encoding = 'cp437'
            dirty = True
开发者ID:rostob,项目名称:x84,代码行数:31,代码来源:charset.py


示例18: disp_forecast

def disp_forecast(forecast):
    """ Display weather forecast.  """
    from x84.bbs import getterminal, echo, Ansi, getch
    term = getterminal()
    lno = 1
    echo(u'\r\n')
    for key in sorted(forecast.keys()):
        fcast = forecast[key]
        rstr = u''.join((
            term.bold_yellow_underline(fcast['DayCode']),
            u', ',
            u'/'.join(fcast['ObsDate'].split('/', 3)[0:2]),
            term.bold_underline(u':'), u' ',
            u'%s. ' % (
                term.bold(
                    fcast.get('TXT_Long', fcast.get('TXT_Short', u''))),),
            u'hiGH Of %sF, lOW Of %sF. ' % (
                term.bold(fcast.get('High_Temperature')),
                term.bold(fcast.get('Low_Temperature')),),))
        if 0.0 != float(fcast.get('Snow_Amount', '0.0')):
            rstr += u'SNOW AMOUNt %s iN., ' % (
                    term.yellow(fcast.get('Snow_Amount')),)
        if 0.0 != float(fcast.get('Rain_Amount', '0.0')):
            rstr += u'RAiN AMOUNt %s iN., ' % (
                    term.yellow(fcast.get('Snow_Amount')),)
        if 0.0 != float(fcast.get('Precip_Amount', '0.0')):
            rstr += u'PRECiPiTAtiON %s iN., ' % (
                    term.yellow(fcast.get('Precip_Amount')),)
        if 0 != int(fcast.get('TStorm_Prob', '0')):
            rstr += u'thUNdERStORM PRObAbilitY: %s, ' % (
                    term.yellow(fcast.get('TStorm_Prob')),)

        if 0 != len(fcast.get('WindDirection', u'')):
            rstr += u'WiNdS %s ' % (
                    term.yellow(fcast.get('WindDirection')),)
        if 0 != len(fcast.get('WindSpeed', u'')):
            rstr += u'At %sMPh, ' % (
                    term.yellow(fcast.get('WindSpeed')),)
        if 0 != len(fcast.get('WindGust', u'')):
            rstr += u'GUStS Of %sMPh. ' % (
                    term.yellow(fcast.get('WindGust')),)
            if 0 != len(fcast.get('Real_Feel_High', u'')):
                rstr += u'PROdUCiNG '
        if 0 != len(fcast.get('Real_Feel_High', u'')):
            rstr += u'A WiNdCHill HiGh Of %sF, lOW %sF. ' % (
                    term.yellow(
                        fcast.get('Real_Feel_High')),
                    term.yellow(
                        fcast.get('Real_Feel_Low', u'?')),)
        echo(u'\r\n')
        lno += 1
        lines = Ansi(rstr).wrap(min(60, int(term.width * .8))).splitlines()
        for line in lines:
            lno += 1
            echo(line + u'\r\n')
            if 0 == lno % (term.height - 1):
                echo(term.yellow_reverse('--MORE--'))
                if getch() is None:
                    return False
                echo(u'\r\n')
开发者ID:quastdog,项目名称:x84,代码行数:60,代码来源:weather.py


示例19: recv_input

def recv_input(term, editors, edit_idx, inp):
    nextline = False
    editor = editors[edit_idx]

    # position cursor
    echo(editor.fixate())

    if inp.is_sequence:
        echo(editor.process_keystroke(inp.code))
    else:
        echo(editor.process_keystroke(inp))

    # return pressed or at margin (bell)
    nextline = (editor.carriage_returned or
                editor.bell)

    if nextline:
        edit_idx = (0 if edit_idx == len(editors) - 1
                    else edit_idx + 1)
        editor = editors[edit_idx]
        editor.update(u'')
        echo(editor.refresh())
        echo(editor.fixate())

    return editors, edit_idx
开发者ID:tehmaze,项目名称:x84,代码行数:25,代码来源:chat.py


示例20: disp_weather

def disp_weather(weather):
    """ Display today's weather. """
    from x84.bbs import getterminal, echo, Ansi
    term = getterminal()
    rstr = u''.join((u'At ',
                     term.bold(u'%s%s' % (weather.get('City'),
                         u', %s' % (weather['State'],) if ('State' in weather
                             and 0 != len(weather['State'])) else u'',)),
                     term.underline(u':'), u' ',
                     u'%s. ' % (
                     term.bold_yellow(weather.get('WeatherText')),),
                     u'tEMPERAtURE Of %sF, ' % (
                     term.bold(weather.get('Temperature')),),
                     u'RElAtiVE hUMiditY %s. ' % (
                     term.yellow(weather.get('Humidity')),),
                     u'WiNdS %s At %s MPh' % (
                     term.yellow(weather.get('WindDirection')),
                     term.yellow(weather.get('WindSpeed'))),
                     u', PROdUCiNG A WiNdCHill Of %sF. ' % (
                     term.yellow(weather.get('RealFeel')),)
                     if (weather.get('RealFeel', weather.get('Temperature'))
                         != weather.get('Temperature'))
                     else u'. ',
                     u'ThE PRESSURE WAS %s iNChES ANd %s.' % (
                     term.yellow(weather.get('Pressure')),
                     term.yellow(weather.get('Pressure-state')),
                     ),))
    echo(u'\r\n\r\n')
    echo(Ansi(rstr).wrap(min(60, int(term.width * .8))))
开发者ID:quastdog,项目名称:x84,代码行数:29,代码来源:weather.py



注:本文中的x84.bbs.echo函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python bbs.get_ini函数代码示例发布时间:2022-05-26
下一篇:
Python types.Data类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap