mirror of
https://github.com/TimeCrafters/timecrafters_configuration_tool_desktop.git
synced 2025-12-15 13:32:33 +00:00
TACNET fixes for multiple configs
This commit is contained in:
@@ -34,16 +34,16 @@ module TAC
|
|||||||
@config_changed = false
|
@config_changed = false
|
||||||
end
|
end
|
||||||
|
|
||||||
def upload_config
|
def upload_config(config_name)
|
||||||
if @config && @tacnet.connected?
|
if @config && @tacnet.connected?
|
||||||
json = @config.to_json
|
json = @config.to_json
|
||||||
@tacnet.puts(TAC::TACNET::PacketHandler.packet_upload_config(json))
|
@tacnet.puts(TAC::TACNET::PacketHandler.packet_upload_config(config_name, json))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def download_config
|
def download_config(config_name)
|
||||||
if @config && @tacnet.connected?
|
if @config && @tacnet.connected?
|
||||||
@tacnet.puts(TAC::TACNET::PacketHandler.packet_download_config)
|
@tacnet.puts(TAC::TACNET::PacketHandler.packet_download_config(config_name))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,10 @@ module TAC
|
|||||||
PACKET_TYPES = {
|
PACKET_TYPES = {
|
||||||
handshake: 0,
|
handshake: 0,
|
||||||
heartbeat: 1,
|
heartbeat: 1,
|
||||||
download_config: 2,
|
error: 2,
|
||||||
upload_config: 3,
|
|
||||||
|
download_config: 10,
|
||||||
|
upload_config: 11,
|
||||||
|
|
||||||
add_group: 20,
|
add_group: 20,
|
||||||
update_group: 21,
|
update_group: 21,
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ module TAC
|
|||||||
handle_handshake(packet)
|
handle_handshake(packet)
|
||||||
when :heartbeat
|
when :heartbeat
|
||||||
handle_heartbeat(packet)
|
handle_heartbeat(packet)
|
||||||
|
when :error
|
||||||
|
handle_error(packet)
|
||||||
when :download_config
|
when :download_config
|
||||||
handle_download_config(packet)
|
handle_download_config(packet)
|
||||||
when :upload_config
|
when :upload_config
|
||||||
@@ -41,9 +43,14 @@ module TAC
|
|||||||
def handle_heartbeat(packet)
|
def handle_heartbeat(packet)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# TODO: Handle errors
|
||||||
|
def handle_error(packet)
|
||||||
|
end
|
||||||
|
|
||||||
def handle_upload_config(packet)
|
def handle_upload_config(packet)
|
||||||
begin
|
begin
|
||||||
data = JSON.parse(packet.body, symbolize_names: true)
|
config_name, json = packet.body.split(Packet::PROTOCOL_HEADER_SEPERATOR)
|
||||||
|
data = JSON.parse(json, symbolize_names: true)
|
||||||
|
|
||||||
if @host_is_a_connection
|
if @host_is_a_connection
|
||||||
if data.is_a?(Array)
|
if data.is_a?(Array)
|
||||||
@@ -52,9 +59,9 @@ module TAC
|
|||||||
|
|
||||||
elsif data.is_a?(Hash) && data.dig(:config, :spec_version) == TAC::CONFIG_SPEC_VERSION
|
elsif data.is_a?(Hash) && data.dig(:config, :spec_version) == TAC::CONFIG_SPEC_VERSION
|
||||||
$window.push_state(TAC::Dialog::ConfirmDialog, title: "Replace Config", message: "Replace local config\nwith remote config?", callback_method: proc {
|
$window.push_state(TAC::Dialog::ConfirmDialog, title: "Replace Config", message: "Replace local config\nwith remote config?", callback_method: proc {
|
||||||
File.open("#{TAC::ROOT_PATH}/data/config.json", "w") { |f| f.write packet.body }
|
File.open("#{TAC::CONFIGS_PATH}/#{config_name}.json", "w") { |f| f.write json }
|
||||||
|
|
||||||
$window.backend.update_config
|
$window.backend.load_config(config_name)
|
||||||
})
|
})
|
||||||
|
|
||||||
elsif data.is_a?(Hash) && data.dig(:config, :spec_version) < TAC::CONFIG_SPEC_VERSION
|
elsif data.is_a?(Hash) && data.dig(:config, :spec_version) < TAC::CONFIG_SPEC_VERSION
|
||||||
@@ -78,11 +85,20 @@ module TAC
|
|||||||
def handle_download_config(packet)
|
def handle_download_config(packet)
|
||||||
if @host_is_a_connection
|
if @host_is_a_connection
|
||||||
json = JSON.dump($window.backend.config)
|
json = JSON.dump($window.backend.config)
|
||||||
$window.backend.tacnet.puts(PacketHandler.packet_upload_config(json))
|
config = $window.backend.settings.config
|
||||||
|
|
||||||
|
$window.backend.tacnet.puts(PacketHandler.packet_upload_config(config, json))
|
||||||
else
|
else
|
||||||
if $server.active_client && $server.active_client.connected?
|
if $server.active_client && $server.active_client.connected?
|
||||||
json = File.read(TAC::CONFIGS_PATH)
|
settings = TAC::Settings.new
|
||||||
$server.active_client.puts(PacketHandler.packet_upload_config(json))
|
|
||||||
|
if File.exist?("#{TAC::CONFIGS_PATH}/#{settings.config}.json")
|
||||||
|
json = File.read("#{TAC::CONFIGS_PATH}/#{settings.config}.json")
|
||||||
|
|
||||||
|
$server.active_client.puts(PacketHandler.packet_upload_config(settings.config, json))
|
||||||
|
else
|
||||||
|
$server.active_client.puts(PacketHandler.packet_error("NO_SUCH_CONFIG", "No config named #{settings.config}"))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -95,12 +111,16 @@ module TAC
|
|||||||
Packet.create(Packet::PACKET_TYPES[:heartbeat], Packet::PROTOCOL_HEARTBEAT)
|
Packet.create(Packet::PACKET_TYPES[:heartbeat], Packet::PROTOCOL_HEARTBEAT)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.packet_download_config
|
def self.packet_error(error_code, message)
|
||||||
Packet.create(Packet::PACKET_TYPES[:download_config], "")
|
Packet.create(Packet::PACKET_TYPES[:error], error_code.to_s, message.to_s)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.packet_upload_config(string)
|
def self.packet_download_config(config_name)
|
||||||
string = string.gsub("\n", " ")
|
Packet.create(Packet::PACKET_TYPES[:download_config], "#{config_name}")
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.packet_upload_config(config_name, json)
|
||||||
|
string = "#{config_name}#{Packet::PROTOCOL_HEADER_SEPERATOR}#{json.gsub("\n", " ")}"
|
||||||
|
|
||||||
Packet.create(Packet::PACKET_TYPES[:upload_config], string)
|
Packet.create(Packet::PACKET_TYPES[:upload_config], string)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -71,10 +71,11 @@ module TAC
|
|||||||
@active_client = client
|
@active_client = client
|
||||||
# TODO: Backup local config
|
# TODO: Backup local config
|
||||||
# SEND CONFIG
|
# SEND CONFIG
|
||||||
config = File.read(TAC::CONFIGS_PATH)
|
settings = TAC::Settings.new
|
||||||
|
config = File.read("#{TAC::CONFIGS_PATH}/#{settings.config}.json")
|
||||||
|
|
||||||
@active_client.puts(PacketHandler.packet_handshake(@active_client.uuid))
|
@active_client.puts(PacketHandler.packet_handshake(@active_client.uuid))
|
||||||
@active_client.puts(PacketHandler.packet_upload_config(config))
|
@active_client.puts(PacketHandler.packet_upload_config(settings.config, config))
|
||||||
|
|
||||||
log.i(TAG, "Client connected!")
|
log.i(TAG, "Client connected!")
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ require "securerandom"
|
|||||||
|
|
||||||
require_relative "lib/tac"
|
require_relative "lib/tac"
|
||||||
require_relative "lib/logger"
|
require_relative "lib/logger"
|
||||||
|
require_relative "lib/settings"
|
||||||
|
require_relative "lib/config"
|
||||||
|
|
||||||
require_relative "lib/tacnet"
|
require_relative "lib/tacnet"
|
||||||
require_relative "lib/tacnet/packet"
|
require_relative "lib/tacnet/packet"
|
||||||
|
|||||||
Reference in New Issue
Block a user