4月 05

centos搭建golang+gin环境

下载解压

wget https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz
tar zxvf go1.12.1.linux-amd64.tar.gz
mv go /usr/local/
cd /usr/local/go
mkdir -p /usr/local/go/workspacego/src/github.com/

vim /etc/profile

配置部分开始

export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export GOARCH=amd64
export GOOS=linux
export GOPATH=$GOROOT/workspacego
export PATH=.:$PATH:$GOBIN

配置部分结束

配置生效

source /etc/profile

下载源码

mkdir -p $GOPATH/src/golang.org/x/
cd $GOPATH/src/golang.org/x/
git clone https://github.com/golang/net.git net
git clone https://github.com/golang/sys.git sys

下载gin

mkdir -p $GOPATH/src/github.com/
cd $GOPATH/src/github.com/
git clone https://github.com/gin-gonic/gin.git

3月 31

[转载]tornado判断登录和操作权限(装饰器)

判断是否有操作权限

def with_permission(permission):
''''''
 
def _decorator(method):
''''''
@functools.wraps(method)
def wrapper(self, *args, **kwargs):
''''''
user = self.current_user # 这里判断用户是否存在(登录)
if not user:
self.set_status(404)
return
 
if permission in user.permission_list: # 判断用户是否有足够的权限
method(self, *args, **kwargs)
else:
data = {"error": "need permission:%s" % permission}
self.write_json(data, status=403)
return wrapper
return _decorator

转载地址:https://www.bbsmax.com/A/x9J2DbAWd6/

3月 11

python3计算Google Authenticator

Google Authenticator基本上实现了两种类型的密码:

HOTP – 基于HMAC的一次性密码,这意味着密码随着每次呼叫而改变,符合RFC4226
TOTP – 基于时间的一次性密码,每30秒钟更换一次。

Google身份验证器也可以在此处以开放源代码形式提供:code.google.com/p/google-authenticator

python3

# -*- coding:utf-8 -*-
import hmac, base64, struct, hashlib, time

def get_hotp_token(secret, intervals_no):
    key = base64.b32decode(secret, True)
    msg = struct.pack(">Q", intervals_no)
    h = hmac.new(key, msg, hashlib.sha1).digest()
    o = ord(chr(h[19])) & 15
    h = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
    return h

def get_totp_token(secret):
    return get_hotp_token(secret, intervals_no=int(time.time())//30)

print(get_totp_token('xxxxxxxxx'))