Exemplo n.º 1
0
    def send_process (self, sock_c: socket.socket, addr: str) -> None:
        while True:
            letter = input()

            date = 'XXX'
            unique_id = 'XXX'
            user_name = 'SERVER'
            title = 'XXX'
            letter = letter
            user_ip = 'XXX'
            password = '******'
            
            message = Message(
                message_json=json.dumps({
                    'unique_id': unique_id,
                    'user_name': user_name,
                    'date': date,
                    'title': title,
                    'letter': letter,
                    'user_ip': user_ip,
                    'password': password
                })
            )
 
            sock_c.send(message.to_json(is_have_secret=False).encode('utf-8'))

            if letter == 'bye':
                print(f'OK, bye {message.user_name}')
                break

        return
Exemplo n.º 2
0
def align_right(msg: Message, time: int, pdf: FPDF):
    """
    Writes the given text into the PDF file. Aligns text right. Handles Image
    :param msg: The Message Object for sender and text
    :param time: Time stamp
    :param pdf: The open PDF file
    :return: Nothing
    """
    global old

    text = "[{0}] {1}:".format(
        str(datetime.fromtimestamp(int(str(time)[:10])))[:16], msg.get_name())

    if old != text:
        pdf.set_font(config.FONT, size=config.FONT_CHATTER)
        pdf.multi_cell(200, config.FONT_CHATTER, txt=text, align='R')
        old = text
    pdf.set_font(config.FONT, size=config.FONT_SIZE)
    if msg.is_img():
        if 150 + pdf.get_y() > config.A4_HEIGHT:
            pdf.add_page()
        pdf.image(msg.get_msg(),
                  w=config.WIDTH,
                  h=config.HEIGHT,
                  x=config.A4_WIDTH - 100)
    else:
        pdf.multi_cell(200,
                       config.FONT_SIZE,
                       txt="{}".format(msg.get_msg()),
                       align='R')
Exemplo n.º 3
0
def send_mails():
	content = sys.stdin.read()
	package_name = get_package_name()
	if not package_name:
		log.error('No package name suggested.')
		exit(1)
	(package,keyword) = get_keyword(package_name)
	message_cl = Message(content, package, keyword)
	message = message_cl.get_message()
	tag = message_cl.get_tag()
	message_cl.set_keyword(tag)
	log.info('(Tag, Keyword): (%s %s)' %(tag, keyword))
	subscribers = Subscribers.get_subscribers_email(package_name, tag) 
	# print package, keyword, message, tag, subscribers
	send_mails_to_all(message_cl, list(subscribers))
Exemplo n.º 4
0
    def send_process(self) -> None:
        while True:
            letter = input()

            date = 'XXX'
            unique_id = 'XXX'
            user_name = 'CLIENT'
            title = 'XXX'
            letter = letter
            user_ip = socket.gethostbyname(self.host)
            password = '******'

            message = Message(message_json=json.dumps({
                'unique_id': unique_id,
                'user_name': user_name,
                'date': date,
                'title': title,
                'letter': letter,
                'user_ip': user_ip,
                'password': password
            }))
            self.post(message)

            if letter == 'bye':
                print(f'OK, bye {user_name}')
                break

        return
Exemplo n.º 5
0
def extract_json(content: list, chatters: dict):
    history = list()
    count = 0
    for j in content:
        chat = dict()
        if "conversations" in j:
            for c in j["conversations"]:
                if "events" in c:
                    for e in c["events"]:
                        sender = e["sender_id"]["chat_id"]
                        timestamp = e["timestamp"]
                        if "chat_message" in e and "message_content" in e[
                                "chat_message"]:
                            msg = e["chat_message"]["message_content"]
                            if "segment" in msg:
                                for s in msg["segment"]:
                                    if "text" in s:
                                        timestamp = int(timestamp) + 1
                                        chat.update({
                                            timestamp:
                                            Message(s["text"], sender, False,
                                                    chatters)
                                        })
                            #if "attachment" in msg:
                            #    for a in msg["attachment"]:
                            #        timestamp = int(timestamp) + 1
                            #        chat.update({timestamp: Message(a["embed_item"]["plus_photo"]["thumbnail"]
                            #                                        ["image_url"], sender, True, chatters)})
        print("Extracted {} messages".format(len(chat)))
        count = count + len(chat)
        history.append(chat)
    print("Total of {} messages found!\n".format(count))
    return history
Exemplo n.º 6
0
def test_from_dict():
    input_dict = dict(text='5: 3 1', channel='2', user='******')
    message = Message.from_dict(input_dict=input_dict, token='5')
    assert message.args == '1'
    assert message.channel == '2'
    assert message.command == '3'
    assert message.user == '4'
Exemplo n.º 7
0
def test_constructor():
    message = Message(args='1', channel='2', command='3', user='******')
    assert isinstance(message, Message)
    assert message.args == '1'
    assert message.channel == '2'
    assert message.command == '3'
    assert message.user == '4'
Exemplo n.º 8
0
    def get_message(self, url, **kwargs):
        base_url = urlparse.urlsplit(url)
        query_args = urlparse.parse_qs(base_url.query)
        query_args.update(kwargs)

        messages = []
        message_type = 'info'
        for arg_name, arg_value in query_args.iteritems():
            if arg_name in ['message', 'msg', 'info']:
                message_type = 'info'
            elif arg_name in [
                    'error', 'err', 'error_message', 'error_msg', 'errormsg'
            ]:
                message_type = 'info'
            if arg_value:
                messages.append(arg_value)
        if messages:
            message = '\n'.join(('<p>%s</p>' % msg for msg in messages))
        else:
            return None

        if message:
            return Message(message, message_type=message_type)
        else:
            return None
Exemplo n.º 9
0
def from_tg_to_vk(vk_id, message: Message):
    vk_bot.loop.run_until_complete(
        vk_bot.write_msg(message=message, peer_id=vk_id))
    chat_listeners = db_persistence.get_chat_listeners(vk_id)
    message._tg_id = message.from_id
    message._from_id = vk_id
    if len(chat_listeners) > 0:
        message.chat_title = vk_bot.loop.run_until_complete(
            vk_bot.get_chat_title(peer_id=vk_id))
        for chat_listener in chat_listeners:
            chat_listener_id = int(chat_listener[0])
            if db_persistence.is_exist(vk_id=chat_listener_id) \
                    and db_persistence.is_fully_registered(chat_listener_id):
                tg_id = db_persistence.get_ids(vk_id=chat_listener_id)[0][2]
                if tg_id != message.tg_id:
                    from_vk_to_tg(tg_id, message)
Exemplo n.º 10
0
    def recv_process(self, sock_c: socket.socket, addr: str) -> None:
        while True:
            message_json = sock_c.recv(BUFSIZE).decode('utf-8')
            message = Message(message_json)
            green_color = '\033[32m'
            end_color = '\033[0m'
            print(f'\n{green_color}{message.letter:>40}{end_color}')

        return
Exemplo n.º 11
0
    def bulletin_board(self) -> None:
        self.connect()

        mode = input('mode >> ')
        if mode == 'read':
            log_list = self.read()

            for message in log_list:
                print('===============================')
                print(f'ユーザー名: {message.user_name}')
                print(f'ID: {message.unique_id}')
                print(f'投稿時刻: {message.date}')
                print('-------------------------------')
                print(f'[{message.title}]')
                print(message.letter, '\n')

            return

        if mode == 'post':
            # 時刻のハッシュ値とランダム文字列を結合し、固有IDを生成
            date = datetime.datetime.now().strftime('%Y/%m/%d_%H:%M:%S')
            unique_id = sha256(date)[0:5] + '%x' % random.randrange(16**10)
            user_name = input('ユーザー名 >> ')
            title = input('タイトル >> ')
            letter = input('本文 >> ')
            user_ip = socket.gethostbyname(self.host)

            password_plain = getpass.getpass('パスワード >> ')
            password_secret = sha256(plain_text=password_plain)
            password_secure = sha256_add(secret_text=password_secret,
                                         addition=date)

            message = Message(
                message_json=json.dumps({
                    'unique_id': unique_id,
                    'user_name': user_name,
                    'date': date,
                    'title': title,
                    'letter': letter,
                    'user_ip': user_ip,
                    'password': password_secure
                }))
            self.post(message)

            return

        if mode == 'delete':
            target_id = input('ID >> ')
            password = hashlib.sha256(
                input('パスワード >> ').encode('utf-8')).hexdigest()
            self.delete(target_id=target_id, password=password)

            return
Exemplo n.º 12
0
    def recv_process(self) -> None:
        while True:
            message_json = self.sock.recv(BUFSIZE).decode('utf-8')
            message = Message(message_json)
            if message.letter == 'bye':
                print(f'OK, bye {message.user_name}')
                break
            green_color = '\033[32m'
            end_color = '\033[0m'
            print(f'\n{green_color}{message.letter:>40}{end_color}')

        return
Exemplo n.º 13
0
 def chat_message(self):
     chat_listeners = db_persistence.get_chat_listeners(self.peer_id)
     if len(chat_listeners) > 0:
         for chat_listener in chat_listeners:
             chat_listener_id = int(chat_listener[0])
             if chat_listener_id != self.from_id:
                 if db_persistence.is_exist(
                         vk_id=chat_listener_id
                 ) and db_persistence.is_fully_registered(chat_listener_id):
                     tg_id = db_persistence.get_ids(
                         vk_id=chat_listener_id)[0][2]
                     self.event.client_info.update(
                         {'from_title': f'{self.from_user}'})
                     self.event.message.update(
                         {'chat_title': self.chat_title})
                     connector.from_vk_to_tg(tg_id,
                                             Message.from_vk(self.event))
Exemplo n.º 14
0
 def read(self) -> List[Message]:
     req = {'mode': 'read', 'json': ''}
     self.sock.send(json.dumps(req).encode('utf-8'))
     log_json = self.sock.recv(BUFSIZE).decode('utf-8')
     log_list = json.loads(log_json)['log']
     return [Message(json.dumps(l)) for l in log_list]
Exemplo n.º 15
0
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

while True:
    command = raw_input("Insert command: ")
    if command == 'connect':
        name = raw_input("Insert name: ")
        print 'Connecting'
        try:
            s.connect((host, port))
            handler = Handler(s, size)
            playing = True
            handler.start()
        except socket.error as msg:
            print 'Cannot connect'
        s.send(json.dumps(Message(name).__dict__))

    elif command == 'send':
        data = raw_input("Insert data: ")
        s.send(json.dumps(Message(data).__dict__))

    elif command == 'recv':
        response = s.recv(size)
        print 'Response: \'' + response + '\''

    elif command == 'leave':
        playing = False
        s.send(json.dumps(Message(command).__dict__))
        break

    else:
Exemplo n.º 16
0
 def post(self, message: Message) -> None:
     req = {
         'mode': 'post',
         'json': message.to_json(is_have_secret=True).encode('utf-8')
     }
     self.sock.send(json.dumps(req).encode('utf-8'))
Exemplo n.º 17
0
def test_repr():
    message = Message(args='1', channel='2', command='3', user='******')
    assert str(message) == 'Args: 1, Channel: 2, Command: 3, User: 4'
Exemplo n.º 18
0
        c = sort_dict(c)
        count2 = 0
        print("Writing PDF Number {}".format(count + 1))
        print("-----------------------\n")
        for key, val in c.items():
            if old is not val.get_name():
                old = val.get_name()
                changes = changes + 1
            if changes % 2 == 0:
                align_left(val, key, pdf)
            else:
                align_right(val, key, pdf)
            count2 = count2 + 1
            print("Wrote {0}/{1} lines".format(count2, len(c)))
        done = done + count2
        pdf.output(path + "/output_{}.pdf".format(count))
        count = count + 1
        print("\n##########################################")
        print("Wrote {0}/{1} PDF files \n{2}% Done\n".format(
            count, len(content), (done / full * 100)))
    return count


if __name__ == "__main__":
    pdf = FPDF()
    pdf.add_page()
    title("Test", pdf)
    align_left(Message("Links", "Dennis", False, dict()), 123456124, pdf)
    align_right(Message("Rechts", "Dennis", False, dict()), 123456124, pdf)
    pdf.output("../output/t.pdf")
Exemplo n.º 19
0
 def nex_handler(message, vk_peer_id):
     user_name = db.get_username_from_tg(message.chat.id)
     vk_msg = Message.from_tg(message, user_name)
     connector.from_tg_to_vk(vk_peer_id, vk_msg)
     db.insert_or_update_tg_state(message.chat.id, TgUserState.INITIAL)
Exemplo n.º 20
0
    def bulletin_board(self, sock_c: socket.socket, addr: str) -> None:
        req_json = sock_c.recv(self.buf_size).decode('utf-8')
        print(req_json, type(req_json))
        req_dict = json.loads(req_json)
        mode = req_dict['mode']

        # メッセージ投稿
        if mode == 'post':
            post_json = req_dict['json']
            message = Message(post_json)

            with open('log/log.json', 'r') as f:
                log_dict = json.load(f)

            log_dict['log'].append(message.to_dict(is_have_secret=True))

            with open('log/log.json', 'w') as f:
                json.dump(log_dict, f, indent=4)

            return

        # ログ呼び出し
        if mode == 'read':
            with open('log/log.json', 'r') as f:
                log_dict = json.load(f)

            # クライアントに送るべきでないデータを除去
            log_dict['log'] = [
                Message(json.dumps(log)).to_dict(is_have_secret=False)
                for log in log_dict['log']
            ]
            print(log_dict)
            sock_c.send(json.dumps(log_dict).encode('utf-8'))

            return

        if mode == 'delete':
            post_dict = req_dict['json']
            target_id, password = post_dict['target_id'], post_dict['password']

            with open('log/log.json', 'r') as f:
                log_dict = json.load(f)
            log_dict['log'] = [
                Message(json.dumps(log)).to_dict(is_have_secret=True)
                for log in log_dict['log']
            ]

            target_idx = [
                i for i, message in enumerate(log_dict['log'])
                if message['unique_id'] == target_id and message['password'] ==
                sha256_add(password, message['date'])
            ]

            print(log_dict)
            log_dict['log'].pop(target_idx[0])

            with open('log/log.json', 'w') as f:
                json.dump(log_dict, f, indent=4)

            return

        sock_c.close()
Exemplo n.º 21
0
 def send(self, destination_socket, data, content_type):
     """
     Sends a message to the socket.
     """
     msg = Message(self.tcpsock.getsockname(), data, content_type)
     destination_socket.sendall(self.encode(msg))
Exemplo n.º 22
0
 def post(self, message: Message) -> None:
     self.sock.send(message.to_json(is_have_secret=True).encode('utf-8'))