#-*- coding=utf-8 -*- from base_view import * ###########################################安装 def check_mongo(host,port,user,password,db): try: mongo = MongoClient(host=host,port=int(port),connect=False,serverSelectionTimeoutMS=3) mon_db=eval('mongo.{}'.format(db)) if GetConfig_pre('MONGO_PASSWORD')!='': try: mon_db.authenticate(user,password) except: return False try: mon_db.items.remove() except: return False except: return False return True def check_redis(host,port,password,db): try: if password!='': pool=redis.ConnectionPool(host=host,port=int(port),db=db,password=password,socket_connect_timeout=3) redis_client=redis.Redis(connection_pool=pool) else: pool=redis.ConnectionPool(host=host,port=int(port),db=db,socket_connect_timeout=3) redis_client=redis.Redis(connection_pool=pool) try: redis_client.exists('test') return True except: return False except: return False @admin.route('/install',methods=['POST','GET']) def install(): step=request.args.get('step',0,type=int) user=request.args.get('user','A') if request.method=='POST': if step==3: od_type=request.form.get('od_type','nocn') set_config('od_type',od_type,user) elif step==4: od_type=request.form.get('od_type','nocn') od_prefix=request.form.get('od_prefix') client_id=request.form.get('client_id') client_secret=request.form.get('client_secret') set_config('client_id',client_id,user) set_config('client_secret',client_secret,user) if od_type=='cn': set_config('app_url','https://{}-my.sharepoint.cn/'.format(od_prefix),user) login_url=GetLoginUrl(client_id=client_id,redirect_uri=GetConfig('redirect_uri'),od_type=od_type) else: client_secret=request.form.get('client_secret') client_id=request.form.get('client_id') code=request.form.get('code') od_type=request.form.get('od_type','nocn') #授权 headers={'Content-Type':'application/x-www-form-urlencoded'} headers.update(default_headers) data=AuthData.format(client_id=client_id,redirect_uri=urllib.quote(GetConfig('redirect_uri')),client_secret=urllib.quote(client_secret),code=code) if od_type=='cn': data+='&resource=00000003-0000-0ff1-ce00-000000000000' url=GetOAuthUrl(od_type) r=requests.post(url,data=data,headers=headers,verify=False) Atoken=json.loads(r.text) if Atoken.get('access_token'): with open(os.path.join(config_dir,'data/{}_Atoken.json'.format(user)),'w') as f: json.dump(Atoken,f,ensure_ascii=False) refresh_token=Atoken.get('refresh_token') token=ReFreshToken(refresh_token,user) if token.get('error'): return jsonify(token) token['expires_on']=str(time.time()+3599) with open(os.path.join(config_dir,'data/{}_token.json'.format(user)),'w') as f: json.dump(token,f,ensure_ascii=False) with open(os.path.join(config_dir,'.install'),'w') as f: f.write('4.0') config_path=os.path.join(config_dir,'self_config.py') with open(config_path,'r') as f: text=f.read() redis_client.set('users',re.findall('od_users=([\w\W]*})',text)[0]) return make_response('