добавлена возможность работы через RCON
This commit is contained in:
parent
b4d6e5e9aa
commit
31d4baebdb
3
.idea/.gitignore
vendored
Normal file
3
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
77
hlna.py
77
hlna.py
@ -6,6 +6,7 @@ from pathlib import Path
|
|||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
from rcon.source import Client
|
||||||
import click
|
import click
|
||||||
import colorama
|
import colorama
|
||||||
import click_completion
|
import click_completion
|
||||||
@ -84,6 +85,7 @@ def config(name_server=list_config):
|
|||||||
data = {}
|
data = {}
|
||||||
cluster_dir_override = ""
|
cluster_dir_override = ""
|
||||||
cluster_id = ""
|
cluster_id = ""
|
||||||
|
rcon_p = []
|
||||||
|
|
||||||
count_cluster = check_int("""Укажите требуется ли кластер?
|
count_cluster = check_int("""Укажите требуется ли кластер?
|
||||||
1. Да
|
1. Да
|
||||||
@ -138,6 +140,7 @@ def config(name_server=list_config):
|
|||||||
data = read_yaml(i)
|
data = read_yaml(i)
|
||||||
port_s.append(data['Port'])
|
port_s.append(data['Port'])
|
||||||
query_p.append(data['QueryPort'])
|
query_p.append(data['QueryPort'])
|
||||||
|
rcon_p.append(data['RCONPort'])
|
||||||
|
|
||||||
if amount_map == 1:
|
if amount_map == 1:
|
||||||
map_s = "TheIsland"
|
map_s = "TheIsland"
|
||||||
@ -176,26 +179,6 @@ def config(name_server=list_config):
|
|||||||
else:
|
else:
|
||||||
name_server.pop(); name_server.append(map_s) # если enter, то ставим последним элементом карту
|
name_server.pop(); name_server.append(map_s) # если enter, то ставим последним элементом карту
|
||||||
|
|
||||||
# while True:
|
|
||||||
# id_server = input("Укажите метку для запуска или конфигурирования этой карты\n")
|
|
||||||
# if id_server == "":
|
|
||||||
# if id_srv == {}:
|
|
||||||
# print_line("Значение по умолчанию")
|
|
||||||
# else:
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# if id_srv != {}: # Если есть хоть какой-то id
|
|
||||||
# # if id_server == id_srv[name_server[-1]]: # тут ошибка !
|
|
||||||
# # break
|
|
||||||
# if id_server in id_srv.values(): # Если введёное уже есть в списке меток
|
|
||||||
# print_line("Метка уже занята")
|
|
||||||
# else:
|
|
||||||
# id_srv[name_server[-1]] = id_server
|
|
||||||
# break
|
|
||||||
# else:
|
|
||||||
# id_srv[name_server[-1]] = id_server
|
|
||||||
# break
|
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
port_server = check_int("Укажите порт Сервера <7777>: \n")
|
port_server = check_int("Укажите порт Сервера <7777>: \n")
|
||||||
if port_server == 0:
|
if port_server == 0:
|
||||||
@ -214,21 +197,28 @@ def config(name_server=list_config):
|
|||||||
if query_p == []:
|
if query_p == []:
|
||||||
query_port = 27015
|
query_port = 27015
|
||||||
else:
|
else:
|
||||||
query_port = max(query_p) + 2
|
query_port = max(query_p) + 1
|
||||||
if query_port is query_p: # если веденный порт есть в списке портов
|
if query_port is query_p: # если веденный порт есть в списке портов
|
||||||
print("Этот порт уже занят")
|
print("Этот порт уже занят")
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
rcon_enabled = True
|
||||||
|
if rcon_p == []:
|
||||||
|
rcon_port = 27020
|
||||||
|
else:
|
||||||
|
rcon_port = max(rcon_p) + 1
|
||||||
|
|
||||||
password_server = input("Укажите пароль Сервера: \n")
|
password_server = input("Укажите пароль Сервера: \n")
|
||||||
|
adminpassword_server = 123
|
||||||
max_players = check_int("Укажите максимальное количество игроков: \n")
|
max_players = check_int("Укажите максимальное количество игроков: \n")
|
||||||
if max_players == 0:
|
if max_players == 0:
|
||||||
max_players = 70
|
max_players = 70
|
||||||
|
|
||||||
yaml_create(cluster_server, map_s, name_server[-1], port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override)
|
yaml_create(cluster_server, map_s, name_server[-1], port_server, query_port, rcon_enabled, rcon_port, adminpassword_server, password_server, max_players, cluster_id, cluster_dir_override)
|
||||||
|
|
||||||
|
|
||||||
def yaml_create(cluster_server, map_s, name_server, port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override):
|
def yaml_create(cluster_server, map_s, name_server, port_server, query_port, rcon_enabled, rcon_port, adminpassword_server, password_server, max_players, cluster_id, cluster_dir_override):
|
||||||
settings_hlna = [
|
settings_hlna = [
|
||||||
{
|
{
|
||||||
'map' : map_s,
|
'map' : map_s,
|
||||||
@ -236,6 +226,9 @@ def yaml_create(cluster_server, map_s, name_server, port_server, query_port, pas
|
|||||||
'SessionName' : name_server,
|
'SessionName' : name_server,
|
||||||
'Port' : port_server,
|
'Port' : port_server,
|
||||||
'QueryPort' : query_port,
|
'QueryPort' : query_port,
|
||||||
|
'RCONEnabled' : rcon_enabled,
|
||||||
|
'RCONPort' : rcon_port,
|
||||||
|
'ServerAdminPassword': adminpassword_server,
|
||||||
'ServerPassword' : password_server,
|
'ServerPassword' : password_server,
|
||||||
'MaxPlayers' : max_players,
|
'MaxPlayers' : max_players,
|
||||||
'ModsId' : mods_id,
|
'ModsId' : mods_id,
|
||||||
@ -321,6 +314,8 @@ def servers(map_server=list_config):
|
|||||||
Кластер id: {data['clusterid']}
|
Кластер id: {data['clusterid']}
|
||||||
Query порт: {data['QueryPort']}
|
Query порт: {data['QueryPort']}
|
||||||
Порт сервера: {data['Port']}
|
Порт сервера: {data['Port']}
|
||||||
|
Rcon включен: {data['RCONEnabled']}
|
||||||
|
Rcon порт : {data['RCONPort']}
|
||||||
Максимальное кол-во игроков: {data['MaxPlayers']}""")
|
Максимальное кол-во игроков: {data['MaxPlayers']}""")
|
||||||
print("-" * 40)
|
print("-" * 40)
|
||||||
|
|
||||||
@ -338,6 +333,8 @@ def servers(map_server=list_config):
|
|||||||
Кластер id: {data['clusterid']}
|
Кластер id: {data['clusterid']}
|
||||||
Query порт: {data['QueryPort']}
|
Query порт: {data['QueryPort']}
|
||||||
Порт сервера: {data['Port']}
|
Порт сервера: {data['Port']}
|
||||||
|
Rcon включен: {data['RCONEnabled']}
|
||||||
|
Rcon порт : {data['RCONPort']}
|
||||||
Максимальное кол-во игроков: {data['MaxPlayers']}""")
|
Максимальное кол-во игроков: {data['MaxPlayers']}""")
|
||||||
print("-" * 40)
|
print("-" * 40)
|
||||||
|
|
||||||
@ -370,14 +367,15 @@ def start(m, name_server=list_config):
|
|||||||
f"steamcmd +force_install_dir {data['ServerPath'] + i} +login anonymous +app_update 376030 +quit")
|
f"steamcmd +force_install_dir {data['ServerPath'] + i} +login anonymous +app_update 376030 +quit")
|
||||||
|
|
||||||
|
|
||||||
def start(i):
|
def starting(i):
|
||||||
os.chdir(data['ServerPath'] + i + "/ShooterGame/Binaries/Linux/")
|
# os.chdir(data['ServerPath'] + i + "/ShooterGame/Binaries/Linux/")
|
||||||
|
os.chdir(dir_server + "Server" + "/ShooterGame/Binaries/Linux/")
|
||||||
os.system(
|
os.system(
|
||||||
f"./ShooterGameServer {i}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?MaxPlayers={data['MaxPlayers']}?GameModIds={data['ModsId']}?listen={data['Listen']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']}")
|
f"./ShooterGameServer {i}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?RCONEnabled={data['RCONEnabled']}?RCONPort={data['RCONPort']}?ServerAdminPassword={data['ServerAdminPassword']}?multihome=127.0.0.1?MaxPlayers={data['MaxPlayers']}?GameModIds={data['ModsId']}?listen={data['Listen']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']}")
|
||||||
|
|
||||||
if x == 0:
|
if x == 0:
|
||||||
print_line("Карта скачана: " + i)
|
print_line("Карта скачана: " + i)
|
||||||
threads = threading.Thread(target=start, args=(starting_map,))
|
threads = threading.Thread(target=starting, args=(starting_map,))
|
||||||
threads.start()
|
threads.start()
|
||||||
else:
|
else:
|
||||||
print(f"Карта {i} не установлена")
|
print(f"Карта {i} не установлена")
|
||||||
@ -410,6 +408,31 @@ def read_yaml(name_server, flag=True):
|
|||||||
data = yaml.load(yamlfile, Loader=yaml.FullLoader)
|
data = yaml.load(yamlfile, Loader=yaml.FullLoader)
|
||||||
return data[0] # возвращаем словарь со всеми значениями
|
return data[0] # возвращаем словарь со всеми значениями
|
||||||
|
|
||||||
|
@hlna.command()
|
||||||
|
@click.argument('c', nargs=1)
|
||||||
|
@click.option('-m', required=True, help="Название карты для применения rcon команды")
|
||||||
|
def rcon(m,c):
|
||||||
|
print_line(c)
|
||||||
|
print_line(m)
|
||||||
|
dict_mapname = {}
|
||||||
|
dict_adminpwd = {}
|
||||||
|
for i in list_config:
|
||||||
|
data = read_yaml(i)
|
||||||
|
dict_mapname[data['RCONPort']] = data['map']
|
||||||
|
dict_adminpwd[data['RCONPort']] = data['ServerAdminPassword']
|
||||||
|
rcon_ports = []
|
||||||
|
for ns, v in dict_mapname.items():
|
||||||
|
print_line(f"переменные v и m {v} & {m}")
|
||||||
|
if v in m:
|
||||||
|
rcon_ports.append(ns)
|
||||||
|
print_line(f"Карта которая запускается {ns}")
|
||||||
|
for port in rcon_ports:
|
||||||
|
print(port)
|
||||||
|
passwd = dict_adminpwd[port]
|
||||||
|
with Client('127.0.0.1', port, passwd=str(passwd)) as client:
|
||||||
|
response = client.run(c)
|
||||||
|
print(response)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
hlna()
|
hlna()
|
||||||
|
Loading…
Reference in New Issue
Block a user