#!/usr/bin/lua -- -- rhnop -- -- Copyright (C) 2011-2016 Christian Pointner -- -- This file is part of rhnop. -- -- rhnop is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- any later version. -- -- rhnop is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with rhnop. If not, see . -- socket = require "socket" package.path = package.path .. ";_rhnoplibdir_/?.lua" db = require "db" conf = require "conf" if #arg < 1 then io.stderr:write("too few parameters\n") os.exit(1) end local cnf = conf.load("_rhnopescdir_/nopsyncd." .. arg[1] .. ".conf") src_db = assert(db.init(cnf.src_db, cnf.src_user, cnf.src_pwd, cnf.src_host, cnf.src_port, cnf.src_table)) dst_db = assert(db.init(cnf.dst_db, cnf.dst_user, cnf.dst_pwd, cnf.dst_host, cnf.dst_port, cnf.dst_table)) local sock = assert(socket.tcp()) local ret, err = sock:connect(cnf.sync_host, cnf.sync_port) if ret == nil then print(err) return 1 end print "connection established" local last = dst_db:getLastEntry() print("last timestamp was " .. last) local cur = assert(src_db:findMissingEntries(last)) local cnt = 0 while true do local data = src_db:getNextMissingEntry(cur) if data == nil then break end local ret, err = dst_db:addEntry(data) if ret == nil then print(err) end cnt = cnt + 1 end print("synced " .. cnt .. " Entries") while true do local timestamp = sock:receive('*l') if timestamp == nil then break end data = assert(src_db:getEntry(timestamp)) assert(dst_db:addEntry(data)) end sock:close() return 0