PtokaX forum

Archive => Archived 5.1 boards => Conversion Requests => Topic started by: DarkElf on 13 November, 2007, 11:28:28

Title: Network hub pinger redirect Manager convert to new api
Post by: DarkElf on 13 November, 2007, 11:28:28
hi to all, can someone convert this script to the new API (ptokax 0.3.6.0i)??
--    >>>>>>>>>>>>>>>> NOTE from [NL]Daddy-Bear?     For this one, I used a script see below   <<<<<<<<<<<<<<<
-- ======================  Network hub pinger redirect Manager 2.1 ===============================
-- ============= Credits 1ste By ¨?s??t°?s???Hawk????s°??t?s¨ 25-05-04 ===================
-- ============= applied to the new PXWSA by bastya_elvtars ===================

-- ==================== Get PXWSA lib at http://thewildplace.dk/lua/wsa ================
-- =============  Create a folder named libs inside your scripts folder and put pxwsa_l51.dll into there =============

-- ==================== +rdon = enable / +rdoff = disable =========================================

-- NEW

-- ******************************************************************************
-- ================= Switching redirect address setter v1.0 lua 5.1  ====================
-- ******************************************************************************

-- _________________________________________________________________________________________________________

--      The Switching redirect address setter for Ptokax by [NL]Daddy-Bear? (good-evening-hub.no-ip.org:411)  22-11-2006

-- _________________________________________________________________________________________________________


-- =====================  Editable settings  ================================

Bot = frmHub:GetHubBotName() --// Bot name
oflinePingmin = 2 --// Ping tyd between the hubs in minutes which are ofline
OnlinePingmin = 15 --// Ping tyd between the hubs in minutes which are online
DefaultHub = "xxx.no-ip.xxx:2000" --// Third and laaste hub if the others go ofline  !  Address:Port

-- =====================  HUBS ESTABLISH OF THE REDICT  ================================

-- >>>>>>>>>>>>>>>>>>>>>>>..... HUB 1 .....<<<<<<<<<<<<<<<<<<<<<

hub1 = "bla bla bla" --// Address of the first hub where redicts go.
port1 = 489 --// Port of the first hub where redicts go.

-- >>>>>>>>>>>>>>>>>>>>>>>..... HUB 2 .....<<<<<<<<<<<<<<<<<<<<<

hub2 = "bla bla bla" --// Address of the second hub where redicts go.
port2 = 666 --// Port of the second hub where redicts go.

-- >>>>>>>>>>>>>>>>>>>>>>>..... HUB 3 .....<<<<<<<<<<<<<<<<<<<<<

hub3 = "p?p?r?p?" --// Address of the second hub where redicts go.
port3 = 1968 --// Port of the second hub where redicts go.

-- >>>>>>>>>>>>>>>>>>>>>>>..... HUB 4 .....<<<<<<<<<<<<<<<<<<<<<

hub4 = "gne gne gne" --// Address of the second hub where redicts go.
port4 = 4328 --// Port of the second hub where redicts go.
-- =================  Change nothing below !!!!!! ===================
RedirectsEnabled = true --// Do not change
ba = 0 --// Do not change
br = 0 --// Do not change
bx = 0 --// Do not change
mins = 10 --// Do not change
Hub_Adress = {
{hub1,port1},
{hub2,port2},
{hub3,port3},
{hub4,port4},

}
status=0
libinit = package.loadlib(frmHub:GetPtokaXLocation().."/scripts/libs/pxwsa_l51.dll", "_libinit")
assert(libinit,"Cannot load the WSA library!")
libinit()
_M=0
_A=false
Onlinehubs = {}
HubCounter = 1
cnt = 1
function Main()
  WSA.Init()
  SetTimer(1000 * 60 * mins) 
  if RedirectsEnabled == true then
    StartTimer()
  end
end
function ChatArrival(user, data)
  if user.bOperator then
    local data=string.sub(data,1,string.len(data)-1)
    local _,_,cmd = string.find(data,"%b<>%s+(%S+)")
    if cmd=="+rdon" then
      SendPmToOps(frmHub:GetHubBotName()," Redirects enabled ")
      StartTimer()
      RedirectsEnabled = true
return 1
    elseif cmd=="+rdoff" then
      SendPmToOps(frmHub:GetHubBotName()," redirects disabled ")
      StopTimer()
      RedirectsEnabled = false
return 1
    end
    end
end

function OnTimer()
if _A then ConnectToHost(Hub_Adress[cnt][1],Hub_Adress[cnt][2]) end
_M=_M+1
if _M== 1 * mins then
_M=0
if cnt > table.maxn(Hub_Adress) then
cnt=1
end
displayhub()
end
end
function ConnectToHost(addy,port)
local status
local err1,err2=WSA.Connect(sock,addy,port)
if err1 then
if err1~=10035 and err1~=10056 then
_A=false
status=1; WSA.Close(sock)
elseif err1==10056 then
_A=false
status=2; WSA.Close(sock)
elseif err1==10035 then
_A=true
return
end
else
_A=false
status=2; WSA.Close(sock)
end
Populate(status)
end
function Populate(status)
   if status == 1 then
    if Active == false then
    elseif Active == true then
      Onlinehubs[Position] = nil
    end
  elseif status==2 then
    if Active == false then
      Onlinehubs[ActiveHubCount] = CurrentChecking
    elseif Active == true then
    end
end
  cnt = cnt + 1
  if (table.maxn(Onlinehubs) == 0)  then
if bx == 0  then  mins = 1
end
bx = bx + 1
br = 1
ba = 0
  else
br = 0
bx = 0
mins = 1
    frmHub:SetRedirectAddress(Onlinehubs[HubCounter])
  end
  if HubCounter >= table.maxn(Onlinehubs) then
    HubCounter = 1
  else
    HubCounter = HubCounter + 1
  end
if ba < 2 and br == 0 then ba = ba + 1
end
if ba == 1 then
names = "\tThe Switching redirect address setter is now started and he is pinging the hubs during 1 minute."
SendPmToOps(Bot,names)
end
if ba > 1 and br == 0 then mins = OnlinePingmin
names = "\tThese "..mins.." minutes the redicts are going to\t"..frmHub:GetRedirectAddress().."\tbecause this hub is *online*."
SendPmToOps(Bot,names)
end
if br == 1 and bx > 1 then bx = 6
mins = oflinePingmin
names = "\tThe redicts are going to\t"..frmHub:GetRedirectAddress().."\tbecause the other hubs are *ofline*.\r\n\t\t\t\tTher will be a check each "..mins.." minutes to see if the are comming *online*."
SendPmToOps(Bot,names)
end
CurrentOnlineHubs()
end
function displayhub()
  _,_,sock=WSA.NewSocket()
  CurrentChecking = Hub_Adress[cnt][1]..":"..Hub_Adress[cnt][2]
  Active = false
  ActiveHubCount = table.maxn(Onlinehubs) + 1
  for index, value in ipairs(Onlinehubs) do
    if value == CurrentChecking then
      Active = true
      Position = index
      break
    end
  end
  ConnectToHost(Hub_Adress[cnt][1],Hub_Adress[cnt][2])
end
function CurrentOnlineHubs()
--  Here you can put a command   eg. hub ..... is online
end
function OnExit() WSA.Dispose(); end

Many thanks (and sorry 4 my english :-P )
Title: Re: Network hub pinger redirect Manager convert to new api
Post by: bastya_elvtars on 13 November, 2007, 18:46:12
There is no PXWSA library for that one, so the answer is: No. Maybe with luasockets it could be done.
Title: Re: Network hub pinger redirect Manager convert to new api
Post by: DarkElf on 13 November, 2007, 19:28:32
and it is possible to make a simple timed redirect changer with the new api?
Title: Re: Network hub pinger redirect Manager convert to new api
Post by: Toast on 14 November, 2007, 06:21:37
Here are some ideas me and Flip Flop talked about for an array based on a similar Script

Array Ideas

Min ADC Version Checker
if a adc client is detected in array then it can be redirected to an adc hub (this eliminates redirection for non adc clients to adc hubs)

Non wanted prefixes and nick names checker
If a non wanted nickname is detected then it redirects it to 127.0.0.1

Known Fake Share Detector
if a know fake share or client is detected then its redirected to 127.0.0.1

Hubsettings Detector
it checks how much the hub handles and if hub is at full it skips the hub and fills the next one
Title: Re: Network hub pinger redirect Manager convert to new api
Post by: DarkElf on 15 November, 2007, 10:10:35
i need only a redirect script that ping a hub from the list, if is online it change the redirect to the addy, or a simple timed redir address changer, it's for a network