def main(): SETTINGS = load_setting(is_server=False) parser = argparse.ArgumentParser(description='Server arguments') parser.add_argument('addr', type=str, nargs='*', default='', help='Clients address') parser.add_argument('port', type=int, nargs='*', default='', help='server port') args = parser.parse_args() if not args.port: server_port = SETTINGS["DEFAULT_PORT"] logger.warning("Успользуются порт сервера по умолчанию") else: server_port = args.port s = socket(AF_INET, SOCK_STREAM) s.bind((args.addr, server_port)) s.listen(SETTINGS['MAX_CONNECTION']) while True: client, addr = s.accept() try: data = get_data_from_message(client.recv(SETTINGS['MAX_PACKAGE_LENGTH'])) logger.debug(f'Сообщение: {data}, было отправлено клиентом: {addr}') except JSONDecodeError: logger.exception('Некорректный формат JSON файла') send_success_code(client) client.close()
def test_load_settings_not_all_param(self): dict_to_json = { "DEFAULT_IP_ADDRESS": "127.0.0.1", "DEFAULT_PORT": 7777, "MAX_CONNECTION": 5, "USER": "******" } with open('test_settings.json', 'w') as f_n: f_n.write(json.dumps(dict_to_json)) with self.assertRaises(ValueError): settings = load_setting(is_server=False, filename='test_settings.json')
def test_load_settings_normal(self): dict_to_json = { "DEFAULT_IP_ADDRESS": "127.0.0.1", "DEFAULT_PORT": 7777, "MAX_CONNECTION": 5, "MAX_PACKAGE_LENGTH": 100000, "USER": "******" } with open('test_settings.json', 'w') as f_n: f_n.write(json.dumps(dict_to_json)) settings = load_setting(is_server=False, filename='test_settings.json') self.assertEqual(settings, dict_to_json)
def parser_args(): """ Чтение аргументов командной строки """ SETTINGS = load_setting(is_server=False, filename='common/settings.json') parser = argparse.ArgumentParser(description='Client arguments') parser.add_argument('addr', type=str, nargs='*', default='', help='Server address') parser.add_argument('port', type=int, nargs='*', default='', help='server port') parser.add_argument('-u', '--username', nargs='*', default='anonymous', help='user name') parser.add_argument('-p', '--password', nargs='*', default='qwe', help='password') args = parser.parse_args() if not args.addr: server_addr = SETTINGS["DEFAULT_IP_ADDRESS"] logger.warning("Успользуются адрес сервера по умолчанию") else: server_addr = args.addr if not args.port: server_port = SETTINGS["DEFAULT_PORT"] logger.warning("Успользуются порт сервера по умолчанию") else: server_port = args.port username = args.username[0] passwd = args.password[0] return server_addr, server_port, username, passwd
def main(): SETTINGS = load_setting(is_server=False) parser = argparse.ArgumentParser(description='Client arguments') parser.add_argument('addr', type=str, nargs='*', default='', help='Server address') parser.add_argument('port', type=int, nargs='*', default='', help='server port') args = parser.parse_args() if not args.addr: server_addr = SETTINGS["DEFAULT_IP_ADDRESS"] logger.warning("Успользуются адрес сервера по умолчанию") else: server_addr = args.addr if not args.port: server_port = SETTINGS["DEFAULT_PORT"] logger.warning("Успользуются порт сервера по умолчанию") else: server_port = args.port s = socket(AF_INET, SOCK_STREAM) # Создать сокет TCP try: s.connect((server_addr, server_port)) # Соединиться с сервером except ConnectionRefusedError: logger.critical('Ошибка при подключении к серверу') sys.exit(1) response = presence(s) logger.debug('Сообщение от сервера: ', response) s.close()
except ValueError: message.warning(config_window, 'Ошибка', 'Порт должен быть числом') else: SETTINGS['DEFAULT_IP_ADDRESS'] = config_window.ip.text() if 1023 < port < 65536: SETTINGS['DEFAULT_PORT'] = str(port) with open('common/settings.json', 'w') as j_file: json.dump(SETTINGS, j_file, indent=4) print(SETTINGS) else: message.warning(config_window, 'Ошибка', 'Порт должен быть от 1024 до 65536') message.information(config_window, 'OK', 'Настройки успешно сохранены!') SETTINGS = load_setting(is_server=False, filename='common/settings.json') parser = argparse.ArgumentParser(description='Server arguments') parser.add_argument('addr', type=str, nargs='*', default='', help='Clients address') parser.add_argument('port', type=int, nargs='*', default='', help='server port') args = parser.parse_args() if not args.port: server_port = int(SETTINGS["DEFAULT_PORT"]) logger.warning("Успользуются порт сервера по умолчанию")