예제 #1
0
    def authenticate(self, memberid, ws):
        if (memberid == None):
            self.guest = True
            for x in self.transaction.buffer:
                self.write(ws, x)

            return

        self.user = User(int(memberid))

        try:
            self.user.update()
        except Exception as e:
            print 'API call failed: %r' % (e)
            reactor.stop()

        # if this user opened two tabs make sure we use the same MessageLimiter to stop flooding
        for proto in self.transaction.connections.keys():
            if (proto != self and proto.user != None
                    and proto.user.mid == self.user.mid):
                self.limiter = proto.limiter

        if (self.limiter == None):
            self.limiter = MessageLimiter()

        self.editlimiter = MessageLimiter(0.2)

        for x in self.transaction.buffer:
            self.write(ws, x)
예제 #2
0
파일: server.py 프로젝트: shi-gy15/FaTP
 def handle_user(self, cmd: Command):
     username = cmd.param
     if self.x.client.authed:
         self.send_response(230, 'Already logged in.')
     else:
         self.x.client.user = User(username)
         self.send_response(331, 'Specify password.')
예제 #3
0
	def authenticate(self, memberid, ws):
		if(memberid == None):
			self.guest = True
			for x in self.transaction.buffer:
				self.write(ws, x)

			return

		self.user = User(int(memberid))

		try:
			self.user.update()
		except Exception as e:
			print 'API call failed: %r' % (e)
			reactor.stop()

		# if this user opened two tabs make sure we use the same MessageLimiter to stop flooding
		for proto in self.transaction.connections.keys():
			if(proto != self and proto.user != None and proto.user.mid == self.user.mid):
				self.limiter = proto.limiter

		if(self.limiter == None):
			self.limiter = MessageLimiter()

		self.editlimiter = MessageLimiter(0.2)

		for x in self.transaction.buffer:
			self.write(ws, x)
예제 #4
0
def get_user(input_key):
    YAML_PATH = 'conf/conf.yaml'
    with open(YAML_PATH, 'r') as f:
        data = yaml.load(f)
    app = App(**data['app'])
    setting = data["users"][input_key]
    user = User(app, input_key, **setting)
    return user
예제 #5
0
def get_users():
    YAML_PATH = 'conf/conf.yaml'
    with open(YAML_PATH, 'r') as f:
        data = yaml.load(f)
    app = App(**data['app'])
    users = [
        User(app, user, **setting) for user, setting in data['users'].items()
    ]
    return users
예제 #6
0
def addUser(update: Update, context: CallbackContext):
    global state
    bot = update.message.bot
    user = getUser(update.message.chat_id, state.users)
    if user.permissions >= 7:
        new_user = getUser(update.message.contact.user_id, state.users)
        if new_user is None:
            new_user = User(update.message.contact, 3)
            state.users.append(new_user)
            saveState()
        result = bot.send_message(text=buildMessage(new_user.contact.first_name + " added as user."), chat_id=update.message.chat_id, reply_markup=makeKeyboard(user))
        user.message_id = result['message_id']
예제 #7
0
def test_act_raise_value_error():
    test_user = User(username="******",
                     first_name="Test",
                     last_name="User")

    type_of_action = "be_idle"

    with pytest.raises(ValueError) as excinfo:
        act(user=test_user,
            type_of_action=type_of_action)
    msg = str(excinfo.value)
    assert msg == f"Invalid action. type_of_action was {type_of_action} instead of" \
                  f" one of ['register', 'borrow', 'return', 'withdraw'] "
예제 #8
0
def start(update: Update, context: CallbackContext) -> None:
    global state
    user = getUser(update.message.chat_id, state.users)
    if user is None:
        if str(update.message.from_user.id) in admins:
            user = User(Contact("", update.message.from_user.first_name, user_id=update.message.from_user.id), 7)
            state.users.append(user)
            saveState()
        else:
            kb = [[KeyboardButton('/start')]]
            kb_markup = ReplyKeyboardMarkup(kb)
            message = "No access rights. Contact an admin."
            context.bot.send_message(chat_id=update.message.chat_id, text=message, reply_markup=kb_markup)
            return
    if user.permissions == 0:
        kb = [[KeyboardButton('/start')]]
        kb_markup = ReplyKeyboardMarkup(kb)
        message = "No access rights. Contact an admin."
        context.bot.send_message(chat_id=update.message.chat_id, text=message, reply_markup=kb_markup)
        return
            
    message = buildMessage("Welcome")
    result = context.bot.send_message(chat_id=update.message.chat_id, text=message, reply_markup=makeKeyboard(user))
    user.message_id = result['message_id']
예제 #9
0
    def run_simulation(self):
        dai_price = self.dai_price
        # dai_price = 1
        iterations = 500

        users = [
            User(self.initial_distribution[i], self.rho)
            for i in range(len(self.initial_distribution))
        ]

        market_dai = 0
        log("simulation start with %d" % iterations, self.filename,
            self.logger)

        for i in range(iterations):
            total_market_dai = 0
            stats = []

            # compute proposed asset allocation
            for j in range(self.sample_size):
                risk_param = self.risk_params[j]

                proposed_assets = optimize(users[j].getAssets(), self.rho,
                                           self.txf, self.cdpRate, risk_param,
                                           self.eth_price, dai_price, False)

                old_assets = users[j].getAssets()
                stats.append([old_assets, proposed_assets])

            # perform buy/sell adjustment, if market player in action
            if self.market:
                updated_stats = find_actual_allocation(stats, dai_price,
                                                       self.eth_price,
                                                       self.rho, self.txf)
            else:
                updated_stats = stats

            # update dai price
            for j in range(self.sample_size):
                old_assets, new_assets = updated_stats[j]
                proposed_assets = stats[j][1]

                users[j].setAssets(new_assets)
                self.final_distribution[j] = new_assets

                # total_market_dai keeps track of total DAI demand! BUY - SELL - MINTED_DAI
                total_market_dai += (proposed_assets[2] - old_assets[2])
                cdpDAI = (new_assets[3] - old_assets[3]
                          ) * self.eth_price / dai_price / self.rho

                # I think selling DAI equates to the same effect produced by CDP DAI generation
                total_market_dai -= cdpDAI

            market_dai = total_market_dai

            if i % LOG_ITER == 0:
                log("Total DAI in market %d" % market_dai, self.filename,
                    self.logger)

            if abs(total_market_dai) < 10:
                if i % LOG_ITER == 0:
                    log("DAI Price settling %.6f" % dai_price, self.filename,
                        self.logger)
                break
            elif total_market_dai < 0:
                dai_price -= price_update(total_market_dai)
            else:
                dai_price += price_update(total_market_dai)

            if i % LOG_ITER == 0:
                log("DAI Price update %.6f" % dai_price, self.filename,
                    self.logger)

        for i in range(len(self.final_distribution)):
            log(
                "Investor %d Final Assets: %s" %
                (i + 1, getAssetLogString(self.final_distribution[i])),
                self.filename, self.logger)

        log("simulation ends", self.filename, self.logger)
        return dai_price, market_dai
예제 #10
0
def load_user(user_id):
    return User.get(user_id)
            jsonReview["text"] = jsonReview["text"].lower()
            review = Review(jsonReview)
            reviews.append(review)
            userIdsWithReviews.add(review.userId)
            reviewIds.add(review.id)
            bizToReviewCount[review.bizId] += 1
reviewsRead.close()

#get all the users that wrote reviews for the businesses above
users = []
userIdToUser = {}
n = 0
for line in userRead:
    jsonUser = json.loads(line)
    if jsonUser['review_count'] >= minUserReviews and jsonUser['user_id'] in userIdsWithReviews:
        user = User(jsonUser)
        users.append(user)
        userIdToUser[user.id] = user
        n += 1
        if n >= maxUsers:
            break

# get all the other reviews for the users in our set that are NOT for the restaurants we have
userIds = userIdToUser.keys()
reviewsRead = open('../yelp_academic_dataset_review.json')
for line in reviewsRead:
    jsonReview = json.loads(line)
    if jsonReview['user_id'] in userIds and (jsonReview['user_id'] + jsonReview['business_id']) not in reviewIds:
        jsonReview["text"] = jsonReview["text"].lower()
        review = Review(jsonReview)
        reviews.append(review)
예제 #12
0
class ShoutboxWSProtocol(BaseShoutboxWSProtocol):
	def connectionMade(self, ws):
		self.user = None
		self.guest = False
		self.limiter = None

		self.registerHandler('auth', self.authenticate, verifyAuth.__get__(self, self.__class__))
		self.registerHandler('m', self.messageReceived, verifyMsg.__get__(self, self.__class__))
		self.registerHandler('rem', self.removeMessage, verifyRemove.__get__(self, self.__class__))
		self.registerHandler('edit', self.editMessage, verifyEdit.__get__(self, self.__class__))

		self.write(ws, '', raw='PLEASE_AUTH')
		
	def messageReceived(self, data, ws):
		data = data.decode('utf8')
		data = unicodedata.normalize('NFKD', data).encode('ascii','replace')

		m = '<%s> %s' % (self.user.username, data)
		print m

		if(data.startswith('/')):
			if(data == '/clear' and self.transaction.isMod(self.user.mid)):
				self.transaction.sendMessage('')
				self.transaction.buffer = []
				return

			return

		m = Shout(self.user, data)
		self.transaction.pushBuffer(m)
		self.transaction.sendMessage(m)

	def authenticate(self, memberid, ws):
		if(memberid == None):
			self.guest = True
			for x in self.transaction.buffer:
				self.write(ws, x)

			return

		self.user = User(int(memberid))

		try:
			self.user.update()
		except Exception as e:
			print 'API call failed: %r' % (e)
			reactor.stop()

		# if this user opened two tabs make sure we use the same MessageLimiter to stop flooding
		for proto in self.transaction.connections.keys():
			if(proto != self and proto.user != None and proto.user.mid == self.user.mid):
				self.limiter = proto.limiter

		if(self.limiter == None):
			self.limiter = MessageLimiter()

		self.editlimiter = MessageLimiter(0.2)

		for x in self.transaction.buffer:
			self.write(ws, x)

	def removeMessage(self, data, ws):
		m = self.transaction.getByID(data)

		if(m):
			if(self.transaction.isMod(self.user)):
				self.transaction.removeBuffer(m)
				self.transaction.sendMessage(data, raw='rem')
			else:
				self.disconnect()

	def editMessage(self, data, ws):
		m = self.transaction.getByID(data[0])

		if(m):
			if(m.user.mid == self.user.mid or self.transaction.isMod(self.user) or not isinstance(m, Shout)):
				m.edit(data[1])

				for proto, connection in self.transaction.connections.iteritems():
					proto.write(connection, '%s|%s' % (data[0], m.render(self.transaction, proto.user)), raw='edit')
			else:
				self.disconnect()
예제 #13
0
class ShoutboxWSProtocol(BaseShoutboxWSProtocol):
    def connectionMade(self, ws):
        self.user = None
        self.guest = False
        self.limiter = None

        self.registerHandler('auth', self.authenticate,
                             verifyAuth.__get__(self, self.__class__))
        self.registerHandler('m', self.messageReceived,
                             verifyMsg.__get__(self, self.__class__))
        self.registerHandler('rem', self.removeMessage,
                             verifyRemove.__get__(self, self.__class__))
        self.registerHandler('edit', self.editMessage,
                             verifyEdit.__get__(self, self.__class__))

        self.write(ws, '', raw='PLEASE_AUTH')

    def messageReceived(self, data, ws):
        data = data.decode('utf8')
        data = unicodedata.normalize('NFKD', data).encode('ascii', 'replace')

        m = '<%s> %s' % (self.user.username, data)
        print m

        if (data.startswith('/')):
            if (data == '/clear' and self.transaction.isMod(self.user.mid)):
                self.transaction.sendMessage('')
                self.transaction.buffer = []
                return

            return

        m = Shout(self.user, data)
        self.transaction.pushBuffer(m)
        self.transaction.sendMessage(m)

    def authenticate(self, memberid, ws):
        if (memberid == None):
            self.guest = True
            for x in self.transaction.buffer:
                self.write(ws, x)

            return

        self.user = User(int(memberid))

        try:
            self.user.update()
        except Exception as e:
            print 'API call failed: %r' % (e)
            reactor.stop()

        # if this user opened two tabs make sure we use the same MessageLimiter to stop flooding
        for proto in self.transaction.connections.keys():
            if (proto != self and proto.user != None
                    and proto.user.mid == self.user.mid):
                self.limiter = proto.limiter

        if (self.limiter == None):
            self.limiter = MessageLimiter()

        self.editlimiter = MessageLimiter(0.2)

        for x in self.transaction.buffer:
            self.write(ws, x)

    def removeMessage(self, data, ws):
        m = self.transaction.getByID(data)

        if (m):
            if (self.transaction.isMod(self.user)):
                self.transaction.removeBuffer(m)
                self.transaction.sendMessage(data, raw='rem')
            else:
                self.disconnect()

    def editMessage(self, data, ws):
        m = self.transaction.getByID(data[0])

        if (m):
            if (m.user.mid == self.user.mid
                    or self.transaction.isMod(self.user)
                    or not isinstance(m, Shout)):
                m.edit(data[1])

                for proto, connection in self.transaction.connections.iteritems(
                ):
                    proto.write(
                        connection,
                        '%s|%s' %
                        (data[0], m.render(self.transaction, proto.user)),
                        raw='edit')
            else:
                self.disconnect()
예제 #14
0
파일: Login.py 프로젝트: rambosir/TTG
    def login_12306(self, url, username, password):
        # 开始登录
        self.login_btn.SetLabel(u'开始登录...')
        randCode = ','.join(self.pos)
        data = {
            'randCode': randCode,
            'loginUserDTO.user_name': username,
            'userDTO.password': password
        }

        login_res = Req.post(url, data, Common.headers)
        res_data_obj = Req.zippedDecompress(login_res)
        print(res_data_obj)

        if res_data_obj:
            res_rs = json.loads(res_data_obj)
            data, msg = res_rs.get('data'), res_rs.get('messages')
            #
            if data and data.get('loginCheck') == 'Y':
                self.login_btn.SetLabel(u'登录成功...')
                # 登录
                self.login_btn.SetLabel(u'正在初始化...')
                Req.post(Common.ulogin_url, {}, Common.headers)
                # 初始化my12306
                Req.get(Common.init_my12306_url, Common.headers)
                print(Common.headers)

                # 初始化leftTicket init
                Common.headers['Referer'] = Common.init_my12306_url
                print(Common.headers)
                left_res = Req.get(Common.left_ticket_url, Common.headers)
                if left_res:
                    left_res_html = Req.zippedDecompress(left_res)
                    html_reg = r'</title>(.*?)</head>'
                    all_list = re.findall(html_reg, left_res_html, re.S | re.M)

                    # 查找到动态js,找到,执行
                    if all_list:
                        script_reg = r'(?<=src=\").+?(?=\")|(?<=src=\').+?(?=\')'
                        script_list = re.findall(script_reg, all_list[0],
                                                 re.S | re.M)
                        if script_list:
                            self.dynamic_js_init(Common.headers['Origin'] +
                                                 script_list[-1])
                            # Req.get(HEADERS['Origin'] + script_list[-1], HEADERS)

                # self.Close(True)
                self.login_btn.SetLabel(u'正在获取联系人...')
                user = u.User(username, password)

                # 获取当前登录帐号的联系人
                passenger_data, two_isOpenClick, other_isOpenClick = Common.GetPassenger(
                    Common.headers)
                self.login_btn.SetLabel(u'获取联系人成功...')

                return dict(user=user,
                            passenger_data=passenger_data,
                            login_frame=self,
                            two_isOpenClick=two_isOpenClick,
                            other_isOpenClick=other_isOpenClick)

                # 显示登录后主窗体
                # wx.CallAfter(MainFrame, user=user, headers=Common.headers, passenger_data=passenger_data,
                #              login_frame=self,
                #              two_isOpenClick=two_isOpenClick, other_isOpenClick=other_isOpenClick)
                # MainFrame(user, HEADERS, passenger_data, self)

            else:
                # wx.CallAfter(self.maintenance_time, msg[0])
                return self.maintenance_time(msg[0])