111 lines
3.6 KiB
Text
Executable file
111 lines
3.6 KiB
Text
Executable file
#include "variables.lsl"
|
|
#include "functions.lsl"
|
|
|
|
integer g_iTotalKeys;
|
|
integer g_iProcessedKeys;
|
|
|
|
integer Percent(integer I, integer M)
|
|
{
|
|
return I*100/M;
|
|
}
|
|
|
|
string Progress(integer iProg){
|
|
// 64 chars max, must account for the brackets, percent sign, and the numbers.
|
|
integer iMax = 32;
|
|
iMax -= 2; // Brackets
|
|
iMax -= 6; // Numbers, spaces, % sign
|
|
|
|
integer i=0;
|
|
string sFinal = "[";
|
|
|
|
float fProg = (float)("0."+(string)iProg);
|
|
if(iProg>=100)fProg=1.0;
|
|
if(iProg<10)fProg=(float)("0.0"+(string)iProg);
|
|
|
|
integer pos = llFloor(iMax * fProg);
|
|
for(i=0;i<=iMax;i++){
|
|
if(i < pos) sFinal += "█";
|
|
else if(i == pos)sFinal += ">";
|
|
else sFinal += "░";
|
|
}
|
|
sFinal += "] "+(string)iProg+"%";
|
|
return sFinal;
|
|
}
|
|
|
|
SET_HOVER()
|
|
{
|
|
|
|
llSetText("* BACKING UP *\n"+(string)g_iProcessedKeys+"/"+(string)g_iTotalKeys+"\n"+Progress(Percent(g_iProcessedKeys, g_iTotalKeys)), <1,0,0>,1);
|
|
}
|
|
|
|
string g_sLastDate;
|
|
default
|
|
{
|
|
state_entry()
|
|
{
|
|
llSetTimerEvent(60);
|
|
}
|
|
dataserver(key kID, string sData)
|
|
{
|
|
if(HasDSRequest(kID)!=-1)
|
|
{
|
|
list lMeta = GetMetaList(kID);
|
|
if(llList2String(lMeta,0) == "count")
|
|
{
|
|
g_iTotalKeys = (integer)llGetSubString(sData,2,-1);
|
|
g_iProcessedKeys = 0;
|
|
SET_HOVER();
|
|
|
|
llSleep(0.25);
|
|
UpdateDSRequest(kID, llKeysKeyValue(g_iProcessedKeys, 1), "get_key_name");
|
|
}else if(llList2String(lMeta,0) == "get_key_name")
|
|
{
|
|
llSleep(0.25);
|
|
UpdateDSRequest(kID, llReadKeyValue(llGetSubString(sData,2,-1)), SetDSMeta(["read_value", llGetSubString(sData,2,-1)]));
|
|
} else if(llList2String(lMeta,0) == "read_value"){
|
|
string sKey = llList2String(lMeta,1);
|
|
string sValue = llStringToBase64(llGetSubString(sData,2,-1));
|
|
DeleteDSReq(kID);
|
|
|
|
llSleep(0.5);
|
|
UpdateDSRequest(NULL, llHTTPRequest("https://api.zontreck.com/zni/SLKVPStore.php", [HTTP_METHOD, "POST", HTTP_MIMETYPE, "application/json"], llList2Json(JSON_OBJECT,["op","set", "id", sKey, "val", sValue])), "sv");
|
|
g_iProcessedKeys++;
|
|
SET_HOVER();
|
|
llSleep(0.5);
|
|
if(g_iProcessedKeys <= g_iTotalKeys-1)
|
|
UpdateDSRequest(NULL, llKeysKeyValue(g_iProcessedKeys,1), "get_key_name");
|
|
else {
|
|
llSleep(10);
|
|
//DeleteDSReq(kID);
|
|
llSetText("** Daily Backup **\nLast Completed: "+g_sLastDate, <0,1,0>, 0.5);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
timer()
|
|
{
|
|
if(llGetDate()!=g_sLastDate)
|
|
{
|
|
g_sLastDate = llGetDate();
|
|
llRegionSay(5, "backup");
|
|
llSleep(30);
|
|
llRegionSay(5, "restore9f");
|
|
|
|
llSetText("Please Stand By\nPerforming daily KVP store backup",<1,0,0>,1);
|
|
UpdateDSRequest(NULL, llHTTPRequest("https://api.zontreck.com/zni/SLKVPStore.php", [HTTP_METHOD, "POST", HTTP_MIMETYPE, "application/json"], llList2Json(JSON_OBJECT,["op","clear"])), "sv");
|
|
|
|
llSleep(10);
|
|
UpdateDSRequest(NULL, llKeyCountKeyValue(), "count");
|
|
}
|
|
}
|
|
http_response(key k,integer s,list m,string b)
|
|
{
|
|
if(HasDSRequest(k)!=-1){
|
|
DeleteDSReq(k);
|
|
list lTmp = llParseString2List(b,[";;",";"],[]);
|
|
if(llList2String(lTmp,1) != "OK"){
|
|
llSay(0, "ERROR ("+(string)s+"): "+b);
|
|
}
|
|
}
|
|
}
|
|
}
|