determinate determinate

Author Topic: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]  (Read 1695 times)

0 Members and 1 Guest are viewing this topic.

Offline Mutor

  • Global Moderator
  • Forum God
  • *****
  • Posts: 3 854
  • Karma: +395/-18
  • To err is human, to arr is pirate...
    • PxDev
Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« on: January 27, 2008, 05:00:51 pm »
Code: [Select]
--[[

Disclaimer 2.0 LUA 5.1x [Strict] [API 2]

By Mutor 1/27/08

Requires users to agree to hub policy or be kicked from the hub.
-Exemption by profile or nick
-Data saved to file(s) for hub/script restart
-Option for internal Disclaimer text or external file

]]

-- Name for Bot
local Bot = SetMan.GetString(21)
-- File for validated user nicks
local File = "DisclaimerTable.txt"
Exempt = {
["Mutor"] = true,
["YourNick"] = true,
}
-- File for exempt nicks
local ExFile = "DisclaimerExempt.txt"
-- Set your profiles here. [true = Require agreement / false = Exempt]
-- [#] = true/false
local Profiles = {
[-1] = true, --Unregistered User
[0] = false, --Master
[1] = false, --Operator
[2] = true, --Vip
[3] = true, --Registered User
}
-- Disclaimer text -OR- Filename [file expected in scripts folder]
local Disclaimer = "disclaimer.txt"

OnStartup = function()
local Path = Core.GetPtokaXPath().."scripts/"
if Disclaimer:find("%.%a%a%a$") then
if not Disclaimer:find("^"..Path) then Disclaimer = Path..Disclaimer end
local f,e = io.open(Disclaimer)
if f then
Disclaimer = "\n\n"..f:read("*a")
end
end
if not File:find("^"..Path) then File = Path..File end
if loadfile(File) then
dofile(File)
else
Pending = {}
SaveFile(File,Pending,"Pending")
end
if not ExFile:find("^"..Path) then ExFile = Path..ExFile end
if loadfile(ExFile) then
dofile(ExFile)
else
SaveFile(ExFile,Exempt,"Exempt")
end
end

UserConnected = function(user)
if #Disclaimer > 0 and not Exempt[user.sNick] then
if Profiles[user.iProfile] and not Pending[user.sNick] then
Core.SendToUser(user,"<"..Bot.."> "..Disclaimer.."|")
end
end
end
OpConnected,RegConnected = UserConnected,UserConnected

ChatArrival = function(user,data)
if not Exempt[user.sNick] then
if Profiles[user.iProfile] and Core.GetUserValue(user,9) and not Pending[user.sNick]then
local _,_,cmd = data:find("^%b<> (["..SetMan.GetString(29).."]agree)|")
if cmd then
Pending[user.sNick] = {user.sIP,os.date()}
SaveFile(File,Pending,"Pending")
return Core.SendToUser(user,"<"..Bot.."> Thank you for agreeing to our "..
"policy "..user.sNick..". Welcome to "..SetMan.GetString(0).."|"),true
else
Core.SendToUser(user,"<"..Bot.."> You indicated that you don't agree with "..
"the hub's policy. Thanks for stopping by "..user.sNick.."|")
return Core.Kick(user,Bot,"Disagreement with hub policy.")
end
end
end
end

ToArrival,GetINFOArrival = ChatArrival,ChatArrival
SearchArrival,UnknownArrival = ChatArrival,ChatArrival
ConnectToMeArrival,RevConnectToMeArrival,MultiConnectToMeArrival = ChatArrival,ChatArrival,ChatArrival

SaveFile = function(file,table, tablename )
local hFile = io.open (file , "wb")
Serialize(table, tablename, hFile)
hFile:close()
collectgarbage("collect")
end

Serialize = function(tTable, sTableName, hFile, sTab)
sTab = sTab or "";
hFile:write(sTab..sTableName.." = {\n" )
for key, value in pairs(tTable) do
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key)
if(type(value) == "table") then
Serialize(value, sKey, hFile, sTab.."\t")
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value)
hFile:write( sTab.."\t"..sKey.." = "..sValue)
end
hFile:write( ",\n")
end
hFile:write( sTab.."}")
end

Sample Disclaimer:
Quote
            PxDev == Terms Of Entry

WARNING:   The owners/admins of this direct connect hub take no responsibility or liability for anything that happens as a result of
reading or downloading anything from the users of this hub or anything contained in subsequent message windows.

DISCLAIMER:  Neither the creators of this Hub nor our Host/ISP are responsible for what you do in this hub or with information recieved
within. Nothing is illegal the way that it is. This hub is intended to be used for educational and entertainment purposes ONLY! Some of the
files and links found within may direct you to content that contain questionable material. It is your choice what you do with such content.
Your actions may cause you to break the law. If you do decide to download anything through this hub or from it's users make sure that you
are the sole owner of a proper license of that software or media and or you have the express written consent of the producers / software
company and any related copyright holders.

LIABILITY:    With respect to files and documents available through this hub, neither Mutor's Archive, nor its creators, make any warranty,
express or implied, including the warranties of merchantability and fitness for a particular purpose, or assume any legal liability or responsibility
for the accuracy, completeness, or usefulness of any information, apparatus,  software, media, product, or process disclosed, or represent
that its use would not infringe privately owned rights.

NOTICE:    For controversial reasons, if you are affiliated with any government, ANTI-Piracy group or any other related group, or were formally
a worker of one you CANNOT enter this DC hub, cannot access any files via this hub and you cannot view any of content or data. If you
enter this site you are not agreeing to these terms and you are violating code 431.322.12 of the Internet Privacy Act and you CANNOT
threaten our ISP(s) or any person(s) or company storing these files, and cannot prosecute any person(s) affiliated with this page which includes
family,friends or individuals who run or enter this hub.

Your actions other than typing ' +agree ' or closing connection to this hub signify, you agree to all terms as stated above, and you affirm
that you are in compliance with all federal, state and local laws concerning the content of this Direct Connect hub.
.
« Last Edit: January 25, 2009, 04:00:05 pm by Mutor »
Respectfully,

Mutor

=-=-=-=-=-=-=-==-=-=-=
[ Ptokax Admins Hub ] Ptokax Help Hub
[ Mutor's Ptokax Archive Website ] Scripting Forum
[ Dynamic Downloads ] API 2
[ Microsoft IIS serving PxWeb 1.0d ] API 2
[ WebReg 1.1.2.0 ] Web Based Hub Reg

Offline WhiteKnuckles

  • Member
  • ***
  • Posts: 25
  • Karma: +3/-3
Re: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« Reply #1 on: January 25, 2009, 03:23:30 pm »
I have tried using this script however every time it simply kicks the users before any opportunity to type in +agree is given.  The kicking happens immediately the disclaimer is displayed.
I have other scripts running before this one on startup.
Is there anything I need to change my end or is their a problem with the script?

Offline Mutor

  • Global Moderator
  • Forum God
  • *****
  • Posts: 3 854
  • Karma: +395/-18
  • To err is human, to arr is pirate...
    • PxDev
Re: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« Reply #2 on: January 25, 2009, 04:03:35 pm »
I have updated the script for the change in
path to PtokaX that came after it was written.

Do understand that the user must send the agree
command before they or their client sends anything
else. This includes Searches or R/CTMS' etc.
« Last Edit: January 25, 2009, 04:05:10 pm by Mutor »
Respectfully,

Mutor

=-=-=-=-=-=-=-==-=-=-=
[ Ptokax Admins Hub ] Ptokax Help Hub
[ Mutor's Ptokax Archive Website ] Scripting Forum
[ Dynamic Downloads ] API 2
[ Microsoft IIS serving PxWeb 1.0d ] API 2
[ WebReg 1.1.2.0 ] Web Based Hub Reg

Offline WhiteKnuckles

  • Member
  • ***
  • Posts: 25
  • Karma: +3/-3
Re: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« Reply #3 on: January 26, 2009, 10:37:42 am »
Thanks for the update.
Is there anyway that the user could be prompted for a yes/no type response?
It would be commone for the client to sent R/CTMS where there are files in the download queue.

I have updated the script for the change in
path to PtokaX that came after it was written.

Do understand that the user must send the agree
command before they or their client sends anything
else. This includes Searches or R/CTMS' etc.

Offline Mutor

  • Global Moderator
  • Forum God
  • *****
  • Posts: 3 854
  • Karma: +395/-18
  • To err is human, to arr is pirate...
    • PxDev
Re: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« Reply #4 on: January 26, 2009, 10:57:30 pm »
Well what would we do on a no response?
I could just ignore the Search & R/CTM requests
until that user agrees to policy, if that would help.

The intent here [as was originally requested] is that
the user could not really use any feature of the hub
until they had physically agreed to the policy. I would
be inclined to mod to suit. I see your needs are some-
what different than that of the original request.
Respectfully,

Mutor

=-=-=-=-=-=-=-==-=-=-=
[ Ptokax Admins Hub ] Ptokax Help Hub
[ Mutor's Ptokax Archive Website ] Scripting Forum
[ Dynamic Downloads ] API 2
[ Microsoft IIS serving PxWeb 1.0d ] API 2
[ WebReg 1.1.2.0 ] Web Based Hub Reg

Offline CrazyGuy

  • Global Moderator
  • Viking
  • *****
  • Posts: 533
  • Karma: +82/-20
    • ˜”°º•=-_The NightHawk_-=•º°”˜
Re: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« Reply #5 on: January 26, 2009, 11:37:08 pm »
I believe I've once written a script that suits his needs more.
Lemmy look it up, possibly convert it and see how that goes tomorrow before you'll edit this 1 :)

Offline Mutor

  • Global Moderator
  • Forum God
  • *****
  • Posts: 3 854
  • Karma: +395/-18
  • To err is human, to arr is pirate...
    • PxDev
Disclaimer 2.0b LUA 5.1x [Strict] [API 2]
« Reply #6 on: January 27, 2009, 02:22:49 am »
It was a quick edit.   :P

Code: [Select]
--[[

Disclaimer 2.0b LUA 5.1x [Strict] [API 2]

By Mutor 1/27/08

Requires users to agree to hub policy or be kicked from the hub.
-Exemption by profile or nick
-Data saved to file(s) for hub/script restart
-Option for internal Disclaimer text or external file

+Changes from 2.0 01/26/09
+Added function to stall searches, file xfers etc. for unconfirmed users.
+Added 'AgreeCmd' setting, provides custom command option.
->[First command prefix from GUI will be prepended to AgreeCmd]

]]

-- "Botname" ["" = hub bot]
local Bot = ""
-- File for validated user nicks
local File = "DisclaimerTable.txt"
-- User nick names that are expemt from check, as table
Exempt = {
["Mutor"] = true,
["YourNick"] = true,
}
-- File for exempt nicks
local ExFile = "DisclaimerExempt.txt"
-- Set your profiles here. [true = Require agreement / false = Exempt]
-- [#] = true/false
local Profiles = {
[-1] = true, --Unregistered User
[0] = false, --Master
[1] = false, --Operator
[2] = true, --Vip
[3] = true, --Registered User
}
-- Disclaimer text -OR- Filename [file expected in scripts folder]
local Disclaimer = "disclaimer.txt"
-- Required word or phrase that confirms user's agreement with policy
local AgreeCmd = "agree"

OnStartup = function()
if Bot == "" then Bot = SetMan.GetString(21) end
local Path = Core.GetPtokaXPath().."scripts/"
if Disclaimer:find("%.%a%a%a$") then
if not Disclaimer:find("^"..Path) then Disclaimer = Path..Disclaimer end
local f,e = io.open(Disclaimer)
if f then Disclaimer = "\n\n"..f:read("*a") end
end
if not File:find("^"..Path) then File = Path..File end
if loadfile(File) then
dofile(File)
else
Pending = {}
SaveFile(File,Pending,"Pending")
end
if not ExFile:find("^"..Path) then ExFile = Path..ExFile end
if loadfile(ExFile) then dofile(ExFile) else SaveFile(ExFile,Exempt,"Exempt") end
end

UserConnected = function(user)
if #Disclaimer > 0 and not Exempt[user.sNick] then
if Profiles[user.iProfile] and not Pending[user.sNick] then
local prompt = "\r\n\r\n\tYou must type "..SetMan.GetString(29):sub(1,1)..
AgreeCmd.." to continue using this hub. Typing anything else will cause you"..
"to be disconnected from "..SetMan.GetString(0)..".\r\n\r\n"
Core.SendToUser(user,"<"..Bot.."> "..Disclaimer..prompt.."|")
end
end
end
OpConnected,RegConnected = UserConnected,UserConnected

ChatArrival = function(user,data)
if not Exempt[user.sNick] then
if Profiles[user.iProfile] and Core.GetUserValue(user,9) and not Pending[user.sNick] then
local _,_,cmd = data:find("^%b<> (["..SetMan.GetString(29).."]"..AgreeCmd..")|")
if cmd then
Pending[user.sNick] = {user.sIP,os.date()}
SaveFile(File,Pending,"Pending")
return Core.SendToUser(user,"<"..Bot.."> Thank you for agreeing to our "..
"policy "..user.sNick..". Welcome to "..SetMan.GetString(0).."|"),true
else
Core.SendToUser(user,"<"..Bot.."> You indicated that you don't agree with "..
"the hub's policy. Thanks for stopping by "..user.sNick.."|")
return Core.Kick(user,Bot,"Disagreement with hub policy.")
end
end
end
end

Stall = function(user,data)
if not Pending[user.sNick] then
return true
end
end

ToArrival,GetINFOArrival,SearchArrival,UnknownArrival,ConnectToMeArrival,RevConnectToMeArrival = Stall,Stall,Stall,Stall,Stall,Stall

SaveFile = function(file,table, tablename )
local hFile = io.open (file , "wb")
Serialize(table, tablename, hFile)
hFile:close()
collectgarbage("collect")
end

Serialize = function(tTable, sTableName, hFile, sTab)
sTab = sTab or "";
hFile:write(sTab..sTableName.." = {\n" )
for key, value in pairs(tTable) do
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key)
if(type(value) == "table") then
Serialize(value, sKey, hFile, sTab.."\t")
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value)
hFile:write( sTab.."\t"..sKey.." = "..sValue)
end
hFile:write( ",\n")
end
hFile:write( sTab.."}")
end
Respectfully,

Mutor

=-=-=-=-=-=-=-==-=-=-=
[ Ptokax Admins Hub ] Ptokax Help Hub
[ Mutor's Ptokax Archive Website ] Scripting Forum
[ Dynamic Downloads ] API 2
[ Microsoft IIS serving PxWeb 1.0d ] API 2
[ WebReg 1.1.2.0 ] Web Based Hub Reg

Offline WhiteKnuckles

  • Member
  • ***
  • Posts: 25
  • Karma: +3/-3
Re: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« Reply #7 on: January 27, 2009, 01:49:19 pm »
That makes sense then.  I Might look to modify access rights until they agree to the policy.
I assume by your response that it is not possible to put a y/n question to them.  I have seen another script that prompts for user input called MLIB2.0 (a release request script written for the old version of Ptoka but works fine after applying the Converter app to it)

Well what would we do on a no response?
I could just ignore the Search & R/CTM requests
until that user agrees to policy, if that would help.

The intent here [as was originally requested] is that
the user could not really use any feature of the hub
until they had physically agreed to the policy. I would
be inclined to mod to suit. I see your needs are some-
what different than that of the original request.

Offline CrazyGuy

  • Global Moderator
  • Viking
  • *****
  • Posts: 533
  • Karma: +82/-20
    • ˜”°º•=-_The NightHawk_-=•º°”˜
Re: Disclaimer 2.0b LUA 5.1x [Strict] [API 2]
« Reply #8 on: January 27, 2009, 03:35:54 pm »
It was a quick edit.   :P

Aight, saves me looking it up ;)

Offline Mutor

  • Global Moderator
  • Forum God
  • *****
  • Posts: 3 854
  • Karma: +395/-18
  • To err is human, to arr is pirate...
    • PxDev
Re: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« Reply #9 on: January 27, 2009, 11:25:28 pm »
I assume by your response that it is not possible to put a y/n question to them.

It is quite possible, and yet I still have the same question.
The point being it is required for users to agree, doing anything
else is disagreeing. I did add the option for you to use you own
command [a command prefix will be appended to that command].
For example if you wanted to use 'yes' as the command, the script
would add the first command prefix as set in the GUI and thus the
users command would be !yes anything else including !no, no uh uh
or any chat whatsoever would be failure to agree and thus a disconnect.
Respectfully,

Mutor

=-=-=-=-=-=-=-==-=-=-=
[ Ptokax Admins Hub ] Ptokax Help Hub
[ Mutor's Ptokax Archive Website ] Scripting Forum
[ Dynamic Downloads ] API 2
[ Microsoft IIS serving PxWeb 1.0d ] API 2
[ WebReg 1.1.2.0 ] Web Based Hub Reg

Offline Mutor

  • Global Moderator
  • Forum God
  • *****
  • Posts: 3 854
  • Karma: +395/-18
  • To err is human, to arr is pirate...
    • PxDev
Disclaimer 2.0c LUA 5.1x [Strict] [API 2]
« Reply #10 on: May 23, 2010, 08:30:11 pm »
Code: [Select]
--[[

Disclaimer 2.0c LUA 5.1x [Strict] [API 2]

By Mutor 1/27/08

Requires users to agree to hub policy or be kicked from the hub.
-Exemption by profile or nick
-Data saved to file(s) for hub/script restart
-Option for internal Disclaimer text or external file

+Changes from 2.0 01/26/09
+Added function to stall searches, file xfers etc. for unconfirmed users.
+Added 'AgreeCmd' setting, provides custom command option.
->[First command prefix from GUI will be prepended to AgreeCmd]


+Changes from 2.0b 05/23/10
+Added kick on pm
-Removed pending table and associated functions.
]]

-- "Botname" ["" = hub bot]
local Bot = ""
-- File for validated user nicks
local File = "DisclaimerTable.txt"
-- User nick names that are expemt from check, as table
Exempt = {
["Mutor"] = true,
["YourNick"] = true,
}
-- File for exempt nicks
local ExFile = "DisclaimerExempt.txt"
-- Set your profiles here. [true = Require agreement / false = Exempt]
-- [#] = true/false
local Profiles = {
[-1] = true, --Unregistered User
[0] = false, --Master
[1] = false, --Operator
[2] = true, --Vip
[3] = true, --Registered User
}
-- Disclaimer text -OR- Filename [file expected in scripts folder]
local Disclaimer = "disclaimer.txt"
-- Required word or phrase that confirms user's agreement with policy
local AgreeCmd = "agree"

OnStartup = function()
if Bot == "" then Bot = SetMan.GetString(21) end
local Path = Core.GetPtokaXPath().."scripts/"
if Disclaimer:find("%.%a%a%a$") then
if not Disclaimer:find("^"..Path) then Disclaimer = Path..Disclaimer end
local f,e = io.open(Disclaimer)
if f then Disclaimer = "\n\n"..f:read("*a") end
end
if not File:find("^"..Path) then File = Path..File end
if not ExFile:find("^"..Path) then ExFile = Path..ExFile end
if loadfile(ExFile) then dofile(ExFile) else SaveFile(ExFile,Exempt,"Exempt") end
end

UserConnected = function(user)
if Profiles[user.iProfile] and #Disclaimer > 0 and not Exempt[user.sNick] then
local prompt = "\r\n\r\n\tYou must type "..SetMan.GetString(29):sub(1,1)..
AgreeCmd.." to continue using this hub. Typing anything else will cause you"..
"to be disconnected from "..SetMan.GetString(0)..".\r\n\r\n"
Core.SendToUser(user,"<"..Bot.."> "..Disclaimer..prompt.."|")
end
end
OpConnected,RegConnected = UserConnected,UserConnected

ChatArrival = function(user,data)
if not Exempt[user.sNick] and Profiles[user.iProfile] then
local _,_,cmd = data:find("%b<> (["..SetMan.GetString(29).."]"..AgreeCmd..")|")
if cmd then
if not Exempt[user.sNick] then
Exempt[user.sNick] = true
SaveFile(ExFile,Exempt,"Exempt")
end
return Core.SendToUser(user,"<"..Bot.."> Thank you for agreeing to our "..
"policy "..user.sNick..". Welcome to "..SetMan.GetString(0).."|"),true
else
Core.SendToUser(user,"<"..Bot.."> You indicated that you don't agree with "..
"the hub's policy. Thanks for stopping by "..user.sNick.."|")
return Core.Kick(user,Bot,"Disagreement with hub policy.")
end
end
end
ToArrival = ChatArrival

Stall = function(user,data)
if not Exempt[user.sNick] and Profiles[user.iProfile] then
return true
end
end

GetINFOArrival,SearchArrival,UnknownArrival,ConnectToMeArrival,RevConnectToMeArrival = Stall,Stall,Stall,Stall,Stall

SaveFile = function(file,table, tablename )
local hFile = io.open (file , "wb")
Serialize(table, tablename, hFile)
hFile:close()
collectgarbage("collect")
end

Serialize = function(tTable, sTableName, hFile, sTab)
sTab = sTab or "";
hFile:write(sTab..sTableName.." = {\n" )
for key, value in pairs(tTable) do
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key)
if(type(value) == "table") then
Serialize(value, sKey, hFile, sTab.."\t")
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value)
hFile:write( sTab.."\t"..sKey.." = "..sValue)
end
hFile:write( ",\n")
end
hFile:write( sTab.."}")
end
« Last Edit: May 23, 2010, 09:30:32 pm by Mutor »
Respectfully,

Mutor

=-=-=-=-=-=-=-==-=-=-=
[ Ptokax Admins Hub ] Ptokax Help Hub
[ Mutor's Ptokax Archive Website ] Scripting Forum
[ Dynamic Downloads ] API 2
[ Microsoft IIS serving PxWeb 1.0d ] API 2
[ WebReg 1.1.2.0 ] Web Based Hub Reg

Offline Annie

  • Double Ace
  • *
  • Posts: 110
  • Karma: +13/-5
Re: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« Reply #11 on: May 25, 2010, 04:29:27 pm »
Great script.  I have added it in  its been over 5 minutes and I still havent got disconnected for not typing !agree

Offline lUk3f1l3w4lK3R

  • Junior Member
  • **
  • Posts: 23
  • Karma: +4/-0
Re: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« Reply #12 on: May 25, 2010, 07:50:16 pm »
Great script.  I have added it in  its been over 5 minutes and I still havent got disconnected for not typing !agree

You can stay as long as you want on the hub when you dont type !agree
but as soon as you type anythingelse in main chat then you will be disconnected
and you get a message that you dont agree and therefore get disconnected.
If you dont agree to the disclaimer then you will also be kicked when you send a pm.
There is no option in this script that disconnect a user automatically after a few minutes if he dont type !agree

Offline onkel

  • Junior Member
  • **
  • Posts: 22
  • Karma: +0/-0
Re: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« Reply #13 on: May 25, 2010, 10:27:26 pm »
tja,

can the user download?

and must he do this for everythime he enter hub?

/onkel

Offline Mutor

  • Global Moderator
  • Forum God
  • *****
  • Posts: 3 854
  • Karma: +395/-18
  • To err is human, to arr is pirate...
    • PxDev
Re: Disclaimer 2.0 LUA 5.1x [Strict] [API 2]
« Reply #14 on: May 25, 2010, 11:18:05 pm »
No the user may not chat, pm, download or search until they agree.
They are kicked if they type anything else in main chat, they are
not kicked for pm, download or search attempts, these functions
are merely blocked for them.
Respectfully,

Mutor

=-=-=-=-=-=-=-==-=-=-=
[ Ptokax Admins Hub ] Ptokax Help Hub
[ Mutor's Ptokax Archive Website ] Scripting Forum
[ Dynamic Downloads ] API 2
[ Microsoft IIS serving PxWeb 1.0d ] API 2
[ WebReg 1.1.2.0 ] Web Based Hub Reg

 

determinate determinate
guestbook