Esempio n. 1
0
 def _ip_check(self, ip_addr):
     "check ip exist or not and return ip object"
     t_sql = Ip.select().where(Ip.addr == ip_addr)
     if t_sql.count():
         return t_sql[0]
     else:
         return Ip.create(addr=ip_addr, country='default')
Esempio n. 2
0
def shorten():
    long_url = request.args.get("url")
    token = request.args.get("token")
    format = request.args.get("format", "simple")
    ip = request.headers.get("X-Forwarded-For")

    if rate_limit_exceeded(ip, token):
        if format == "html":
            return redirect_and_flash(
                render_template("rate_limit_exceeded.html"))
        else:
            abort(429)

    url = Url(url=long_url)
    url.save()

    log_ip = Ip(ip=ip, token=token, time=datetime.now())
    log_ip.save()

    root_url = url_for("index", _external=True, _scheme="https")
    slug = short_url.encode_url(url.id)
    new_url = root_url + slug

    print(new_url)

    if format == "html":
        return redirect_and_flash(
            render_template("new_url.html", new_url=new_url))
    elif format == "json":
        return jsonify(url=new_url)

    return new_url
Esempio n. 3
0
def saveIp(ip):
    """
    ip统计,将ip的地点入库; sina的api
    """
    if web.config.debug:
        d = {'country': u'书记', 'province': u'书记', 'city': u'书记'}
    else:
        url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=%s' % ip
        d = json.loads(urllib2.urlopen(url).read())
    try:
        position = d['country'] + '@' + d['province'] + '@' + d['city']
    except KeyError:
        position = '@@'
    try:
        city = sql_session.query(Ip).filter_by(ip=ip)[0]
        city.visit += 1
    except IndexError:
        city = Ip(ip, 1, position)
        sql_session.add(city)
    sql_session.commit()
    return d['city']
Esempio n. 4
0
def build_first_db():
    """
    Populate a small db with some example entries.
    """
    db.drop_all()
    db.create_all()

    anonymous = Role(name=u'Anonymous', description=u'匿名用户')
    admin = Role(name=u'Admin', description=u'管理员')
    develop = Role(name='Develop', description=u'开发人员')
    test = Role(name='Test', description=u'测试人员')
    ops = Role(name='Ops', description=u'运维人员')

    admin_user = User(real_name=u'admin',
                      email=u'*****@*****.**',
                      login=u"admin",
                      password=generate_password_hash(u"admin"),
                      roles=[admin])

    anonymous_user = User(real_name=u'anonymous',
                          email=u'*****@*****.**',
                          login=u"anonymous",
                          password=generate_password_hash(u"anonymous"),
                          roles=[anonymous])

    ip1 = Ip(
        isp=u'电信',
        use=u'在用',
        ip=u"1.1.1.1",
        mask=(u"255.255.255.0"),
        mac=(u"44a8-422a-20ff"),
        route=(u"1.1.1.254"),
        switch_port=(u"5F-U09 G1/0/32"),
    )

    ip2 = Ip(
        isp=u'电信',
        use=u'在用',
        ip=u"1.1.1.2",
        mask=(u"255.255.255.0"),
        mac=(u"44a8-422a-20ff"),
        route=(u"1.1.1.254"),
        switch_port=(u"5F-U09 G1/0/32"),
    )

    ip3 = Ip(
        isp=u'内网',
        use=u'在用',
        ip=u"1.1.1.3",
        mask=(u"255.255.255.0"),
        mac=(u"44a8-422a-20ff"),
        route=(u"1.1.1.254"),
        switch_port=(u"5F-U09 G1/0/32"),
    )

    ip4 = Ip(
        isp=u'联通',
        use=u'在用',
        ip=u"1.1.1.4",
        mask=(u"255.255.255.0"),
        mac=(u"44a8-422a-20ff"),
        route=(u"1.1.1.254"),
        switch_port=(u"5F-U09 G1/0/32"),
    )

    app1 = App(
        app=u'kf_scsa',
        description=u"客服我也不知道",
        ps=(u"没什么事"),
    )

    app2 = App(
        app=u'gamemanager',
        description=u"游戏我也不知道",
        ps=(u"没什么事"),
    )

    app3 = App(
        app=u'webPlatform',
        description=u"公共我也不知道",
        ps=(u"没什么事"),
    )

    app4 = App(
        app=u'wechat-server2',
        description=u"wx我也不知道",
        ps=(u"没什么事"),
    )

    project1 = Project(project=u'体彩项目', apps=[app1])
    project2 = Project(project=u'福彩项目', apps=[app2])
    project3 = Project(project=u'公共平台项目', apps=[app3])
    project4 = Project(project=u'客服系统项目', apps=[app4])

    device1 = Device(
        device_num=u'02-1331',
        device_name=u'5F-U10',
        idc=u"东莞",
        location=(u"5F-U10"),
        hardware_type=(u"DELL-2U"),
        brand=(u"DELL"),
        fast_repair_code=(u"没什么事"),
        cpu=(u"没什么事"),
        memory=(u"没什么事"),
        disk=(u"没什么事"),
        ips=[ip1],
        apps=[app1],
    )

    device2 = Device(
        device_num=u'02-1331',
        device_name=u'5F-U12',
        idc=u"东莞",
        location=(u"5F-U10"),
        hardware_type=(u"DELL-2U"),
        brand=(u"DELL"),
        fast_repair_code=(u"没什么事"),
        cpu=(u"没什么事"),
        memory=(u"没什么事"),
        disk=(u"没什么事"),
        ips=[ip2],
        apps=[app2],
    )

    platforms_info1 = Platforms_info(
        platform=u'阿里云管理控制台',
        description=u'申请云服务器及域名解析',
        url=u"http://www.aliyun.com/",
        username=u"hhlyadmin",
        password=(u"hhlyadmin"),
        ps=(u"登陆进入后,依次点击:\
                                     	订单管理-我的租用-最后面详细\
                                     	下方图标-进入之后\
                                     	点击IP即可查看流量图"),
    )

    platforms_info2 = Platforms_info(
        platform=u'DNS盾',
        description=u'13322.com域名A记录解析网站',
        url=u"http://www.dnsdun.com",
        username=u"*****@*****.**",
        password=(u"*****@*****.**"),
        ps=(u"登陆进入后"),
    )

    db.session.add(anonymous)
    db.session.add(admin)
    db.session.add(develop)
    db.session.add(test)
    db.session.add(ops)
    db.session.add(admin_user)
    db.session.add(anonymous_user)

    db.session.add(ip1)
    db.session.add(ip2)
    db.session.add(ip3)
    db.session.add(ip4)
    db.session.add(app1)
    db.session.add(app2)
    db.session.add(app3)
    db.session.add(app4)
    db.session.add(project1)
    db.session.add(project2)
    db.session.add(project3)
    db.session.add(project4)
    db.session.add(device1)
    db.session.add(device2)
    db.session.add(platforms_info1)
    db.session.add(platforms_info2)

    db.session.commit()

    return
Esempio n. 5
0
def rate_limit_exceeded(ip, token):
    Ip.delete().where(Ip.time < datetime.now() + timedelta(hours=-1)).execute()
    count = Ip.select().where(Ip.ip == ip).count()
    print(ip + " - " + str(count))
    return count >= URLS_PER_IP_PER_HOUR