Skip to content

Commit

Permalink
Version 20.0.3
Browse files Browse the repository at this point in the history
  • Loading branch information
bablosoft committed Jul 30, 2017
1 parent f92d427 commit 93d2ded
Show file tree
Hide file tree
Showing 14 changed files with 141 additions and 47 deletions.
11 changes: 8 additions & 3 deletions ChromeWorker/html/toolbox/index.html
Expand Up @@ -2454,7 +2454,7 @@ <h4 class="modal-title tr" id="myModalLabel">Maximum time to perform an action.<


<script type="text/template" id="randomint_code">
<%= variable %> = Math.floor(Math.random() * (<%= max %> - <%= min %> + 1)) + <%= min %>
<%= variable %> = Math.floor(Math.random() * (parseInt(<%= max %>) - parseInt(<%= min %>) + 1)) + parseInt(<%= min %>)
</script>


Expand All @@ -2467,6 +2467,8 @@ <h4 class="modal-title tr" id="myModalLabel">Maximum time to perform an action.<
/*Browser*/
<% if(imagesearch){ %>
<%= waiter %>
<% }else if(query){ %>
;_SELECTOR=<%=query%>;
<% } %>

<%= path %>.exist()!
Expand Down Expand Up @@ -2750,6 +2752,9 @@ <h4 class="modal-title tr" id="myModalLabel">Maximum time to perform an action.<

<script type="text/template" id="length_code">
/*Browser*/
<% if(query){ %>
;_SELECTOR=<%=query%>;
<% } %>
<%= path %>.length()!
<%= variable %> = _result()
</script>
Expand Down Expand Up @@ -6302,7 +6307,7 @@ <h4 class="modal-title tr" id="myModalLabel">Maximum time to perform an action.<
{
imagesearch = path["imagesearch"]
}
var code = loader.GetAdditionalData() + _.template($('#' + State + "_code").html())({variable:"VAR_" + Variable,path: path["path"],waiter: path["waiter"], imagesearch: imagesearch, isvisible: CheckIsvisible})
var code = loader.GetAdditionalData() + _.template($('#' + State + "_code").html())({variable:"VAR_" + Variable,path: path["path"],waiter: path["waiter"], imagesearch: imagesearch, isvisible: CheckIsvisible, query: path["query"]})
code = Normalize(code,0)
BrowserAutomationStudio_Append("", BrowserAutomationStudio_SaveControls() + code, action, DisableIfAdd);
}catch(e)
Expand Down Expand Up @@ -6502,7 +6507,7 @@ <h4 class="modal-title tr" id="myModalLabel">Maximum time to perform an action.<
}
try{
var path = GetPath(loader,true)
var code = loader.GetAdditionalData() + _.template($('#' + State + "_code").html())({variable:"VAR_" + Save,path: path["path"],waiter: path["waiter"]})
var code = loader.GetAdditionalData() + _.template($('#' + State + "_code").html())({variable:"VAR_" + Save,path: path["path"],waiter: path["waiter"], query: path["query"]})
code = Normalize(code,0)
BrowserAutomationStudio_Append("", BrowserAutomationStudio_SaveControls() + code, action, DisableIfAdd);
}catch(e)
Expand Down
54 changes: 34 additions & 20 deletions ChromeWorker/javascriptextensions.cpp
Expand Up @@ -306,35 +306,49 @@ std::string JavaScriptExtensions::GetBasicExtension(bool IsRecord)

"function BrowserAutomationStudio_ScrollToCoordinates(x,y)"
"{"
"var x = Math.floor(x);"
"var y = Math.floor(y);"
"try{"
"var x = Math.floor(x);"
"var y = Math.floor(y);"

"if(x > document.body.scrollLeft && x < document.body.scrollLeft + window.innerWidth && y > document.body.scrollTop && y < document.body.scrollTop + window.innerHeight)"
"if(x > document.body.scrollLeft && x < document.body.scrollLeft + window.innerWidth && y > document.body.scrollTop && y < document.body.scrollTop + window.innerHeight)"
"{"
"var res = document.body.scrollLeft + ',' + document.body.scrollTop + ',' + x.toString() + ',' + y.toString();"
"browser_automation_studio_result(res);"
"return;"
"}"

//"console.log('Moving to coordinates ');"
//"console.log(x - window.innerWidth/2);"
//"console.log(y - window.innerHeight/2);"
"document.body.scrollLeft = x - window.innerWidth/2;"
"document.body.scrollTop = y - window.innerHeight/2;"
"}catch(e)"
"{"
"var res = document.body.scrollLeft + ',' + document.body.scrollTop + ',' + x.toString() + ',' + y.toString();"
"var res = '0,0,' + x.toString() + ',' + y.toString();"
"browser_automation_studio_result(res);"
"return;"
"}"

//"console.log('Moving to coordinates ');"
//"console.log(x - window.innerWidth/2);"
//"console.log(y - window.innerHeight/2);"
"document.body.scrollLeft = x - window.innerWidth/2;"
"document.body.scrollTop = y - window.innerHeight/2;"

"setTimeout(function(){"
"x-=document.body.scrollLeft;"
"if(x<0)x=0;"
"if(x>window.innerWidth-2)x=window.innerWidth-2;"
"x+=document.body.scrollLeft;"
"try{"
"x-=document.body.scrollLeft;"
"if(x<0)x=0;"
"if(x>window.innerWidth-2)x=window.innerWidth-2;"
"x+=document.body.scrollLeft;"

"y-=document.body.scrollTop;"
"if(y<0)y=0;"
"if(y>window.innerHeight-2)y=window.innerHeight-2;"
"y+=document.body.scrollTop;"
"y-=document.body.scrollTop;"
"if(y<0)y=0;"
"if(y>window.innerHeight-2)y=window.innerHeight-2;"
"y+=document.body.scrollTop;"

"var res = document.body.scrollLeft + ',' + document.body.scrollTop + ',' + x.toString() + ',' + y.toString();"
"browser_automation_studio_result(res);"
"var res = document.body.scrollLeft + ',' + document.body.scrollTop + ',' + x.toString() + ',' + y.toString();"
"browser_automation_studio_result(res);"
"}catch(e)"
"{"
"var res = '0,0,' + x.toString() + ',' + y.toString();"
"browser_automation_studio_result(res);"
"return;"
"}"
"}, 100)"
"}"

Expand Down
2 changes: 1 addition & 1 deletion ChromeWorker/main.cpp
Expand Up @@ -1153,7 +1153,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

Client = new PipesClient();
Parser = new CommandParser();
int NumberArgs;
int NumberArgs = Arguments.size();
std::string Lang = ws2s(Arguments[1]);

Translate::SetLanguage(Lang);
Expand Down
6 changes: 3 additions & 3 deletions ChromeWorker/mainapp.cpp
Expand Up @@ -2677,7 +2677,7 @@ void MainApp::HandleMainBrowserEvents()
y = std::stoi(y_string);
}

if(!BrowserEventsEmulator::IsPointOnScreen(x,y,Data->ScrollX, Data->ScrollY, Data->WidthBrowser, Data->HeightBrowser))
if(false/*!BrowserEventsEmulator::IsPointOnScreen(x,y,Data->ScrollX, Data->ScrollY, Data->WidthBrowser, Data->HeightBrowser)*/)
{
IsLastCommandNull = false;
}else
Expand Down Expand Up @@ -2719,7 +2719,7 @@ void MainApp::HandleMainBrowserEvents()
}
MouseEndX = x - Data->ScrollX;
MouseEndY = y - Data->ScrollY;
if(!BrowserEventsEmulator::IsPointOnScreen(x,y,Data->ScrollX, Data->ScrollY, Data->WidthBrowser, Data->HeightBrowser))
if(false/*!BrowserEventsEmulator::IsPointOnScreen(x,y,Data->ScrollX, Data->ScrollY, Data->WidthBrowser, Data->HeightBrowser)*/)
{
IsLastCommandNull = false;
}else
Expand Down Expand Up @@ -3047,7 +3047,7 @@ void MainApp::HandleMainBrowserEvents()
x += ExecuteSearchCoordinatesX + Data->ScrollX;
y += ExecuteSearchCoordinatesY + Data->ScrollY;

if(!BrowserEventsEmulator::IsPointOnScreen(x,y,Data->ScrollX, Data->ScrollY, Data->WidthBrowser, Data->HeightBrowser))
if(false/*!BrowserEventsEmulator::IsPointOnScreen(x,y,Data->ScrollX, Data->ScrollY, Data->WidthBrowser, Data->HeightBrowser)*/)
{
//WORKER_LOG("Failed to move");
IsLastCommandNull = false;
Expand Down
21 changes: 14 additions & 7 deletions Engine/preprocessor.cpp
Expand Up @@ -70,9 +70,16 @@ namespace BrowserAutomationStudioFramework
}
if(str.mid(index,func_name.length()) == func_name)
{
res.IsGotoLabel = true;
res.Index = index;
res.Label = str.mid(IndexBracket + 1,start - IndexBracket-1);
QString Label = str.mid(IndexBracket + 1,start - IndexBracket-1);
if(Label.contains(")!"))
{
res.IsGotoLabel = false;
}else
{
res.IsGotoLabel = true;
res.Index = index;
res.Label = str.mid(IndexBracket + 1,start - IndexBracket-1);
}
return res;
}else
{
Expand Down Expand Up @@ -218,7 +225,7 @@ namespace BrowserAutomationStudioFramework
while(true)
{
int length = Res.length();
int index_start = Res.indexOf(")!", from);
int index_start = Res.lastIndexOf(")!");
from = index_start + 2;
bool is_one_argument = false;
int index_search = index_start - 1;
Expand Down Expand Up @@ -261,7 +268,7 @@ namespace BrowserAutomationStudioFramework
GotoLabelData ParseData = ParseSetGotoLabel(Res,index_start);
if(ParseData.IsGotoLabel)
{
Res = Res.replace(ParseData.Index,index_end - ParseData.Index,"_goto_fast(" + ParseData.Label + ")!");
Res = Res.replace(ParseData.Index,index_end - ParseData.Index,"_fast_goto(" + ParseData.Label + ")!");
GotoData[ParseData.Label] = Encrypt(all,ParanoicLevel);
}else
{
Expand Down Expand Up @@ -292,7 +299,7 @@ namespace BrowserAutomationStudioFramework
GotoLabelData ParseData = ParseSetGotoLabel(Res,index_start);
if(ParseData.IsGotoLabel)
{
Res = Res.replace(ParseData.Index,index_end - ParseData.Index,"_goto_fast(" + ParseData.Label + ")!");
Res = Res.replace(ParseData.Index,index_end - ParseData.Index,"_fast_goto(" + ParseData.Label + ")!");
GotoData[ParseData.Label] = Encrypt(all,ParanoicLevel);
}else
{
Expand Down Expand Up @@ -321,7 +328,7 @@ namespace BrowserAutomationStudioFramework
GotoLabelData ParseData = ParseSetGotoLabel(Res,index_start);
if(ParseData.IsGotoLabel)
{
Res = Res.replace(ParseData.Index,index_end - ParseData.Index,"_goto_fast(" + ParseData.Label + ")!");
Res = Res.replace(ParseData.Index,index_end - ParseData.Index,"_fast_goto(" + ParseData.Label + ")!");
GotoData[ParseData.Label] = Encrypt(all,ParanoicLevel);
}else
{
Expand Down
13 changes: 10 additions & 3 deletions Engine/scripts/engine/worker/httpclient.js
Expand Up @@ -171,11 +171,18 @@ function http_client_post_no_redirect(url, params, post_options, callback)
{
_ensure_http_client();
var p = []
for(var k in params)
if(Object.prototype.toString.call(params) === '[object Array]')
{
p.push(k);
p.push(params[k]);
p = params
}else
{
for(var k in params)
{
p.push(k);
p.push(params[k]);
}
}

var p1 = []
if(typeof(post_options) === "function")
{
Expand Down
16 changes: 14 additions & 2 deletions Engine/scriptworker.cpp
Expand Up @@ -1623,14 +1623,26 @@ namespace BrowserAutomationStudioFramework
{

QString Location = GetActualHttpClient()->GetHeader("Location");

//Relative location
while(Location.startsWith("."))
Location.remove(0,1);

if(Location.startsWith("/"))
if(Location.startsWith("//"))
{
QUrl url = QUrl(GetActualHttpClient()->GetLastUrl());

QUrl urllocation = QUrl(Location);
urllocation.setScheme(url.scheme());
Location = urllocation.toString();

}else if(Location.startsWith("/"))
{
QUrl url = QUrl(GetActualHttpClient()->GetLastUrl());
url.setPath(Location);
QUrl urllocation = QUrl(Location);
url.setPath(urllocation.path());
url.setQuery(urllocation.query());
url.setFragment(urllocation.fragment());

Location = url.toString();
}
Expand Down
4 changes: 2 additions & 2 deletions Engine/subprocessbrowser.cpp
Expand Up @@ -804,8 +804,8 @@ namespace BrowserAutomationStudioFramework
connect(Worker->GetProcessComunicator(),SIGNAL(Received(QString)),NetworkAccessManager,SLOT(Received(QString)));
NetworkAccessManager->setParent(Worker->GetProcessComunicator());

connect(Worker->GetProcessComunicator(),SIGNAL(ProcessFinished()),this,SLOT(WorkerStopped()));
connect(Worker->GetProcessComunicator(),SIGNAL(Error()),this,SLOT(WorkerStopped()));
//connect(Worker->GetProcessComunicator(),SIGNAL(ProcessFinished()),this,SLOT(WorkerStopped()));
//connect(Worker->GetProcessComunicator(),SIGNAL(Error()),this,SLOT(WorkerStopped()));

connect(Worker->GetProcessComunicator(),SIGNAL(Received(QString)),this,SLOT(Received(QString)));
Worker->SetFailMessage(QString("Timeout during creating new process"));
Expand Down
2 changes: 1 addition & 1 deletion Engine/versioninfo.cpp
Expand Up @@ -21,7 +21,7 @@ namespace BrowserAutomationStudioFramework

int VersionInfo::BuildVersion()
{
return 0;
return 3;
}

QString VersionInfo::VersionString()
Expand Down
1 change: 1 addition & 0 deletions Modules/ReCaptcha2/js/captcha2_code.js
Expand Up @@ -4,6 +4,7 @@ BAS_SolveRecaptcha_Method = <%= method %>;
BAS_SolveRecaptcha_Rucaptcha = <%= rucaptcha %>;
BAS_SolveRecaptcha_Serverurl = <%= serverurl %>;
BAS_SolveRecaptcha_Query = <%= query %>;
_SELECTOR = BAS_SolveRecaptcha_Query;
BAS_SolveRecaptcha_Waiter = function()
{
<%= waiter %>
Expand Down
32 changes: 29 additions & 3 deletions Modules/Timezones/dll/moduledll.cpp
Expand Up @@ -8,6 +8,7 @@
#include <QVariant>
#include "GeoIP.h"
#include "GeoIPCity.h"
#include "tmap.h"

extern "C" {

Expand Down Expand Up @@ -104,9 +105,34 @@ extern "C" {
res.insert("country", QString::fromLatin1(record->country_code));
res.insert("latitude", record->latitude);
res.insert("longitude", record->longitude);
res.insert("timezone", GeoIP_time_zone_by_country_and_region(record->country_code,record->region));
res.insert("offset", GeoIP_time_zone_offset_by_country_and_region(record->country_code,record->region));
res.insert("dstoffset", GeoIP_time_zone_dst_offset_by_country_and_region(record->country_code,record->region));
int offset = GeoIP_time_zone_offset_by_country_and_region(record->country_code,record->region);

bool compute = false;
if(offset >= 99999)
{
int id = kdLookupRoot(record->latitude,record->longitude);

if(id>0)
{
const char *region = _timezone_to_region(id);
const char *country = _timezone_to_country(id);
if(region && country)
{
res.insert("timezone", GeoIP_time_zone_by_country_and_region(country,region));
res.insert("offset", GeoIP_time_zone_offset_by_country_and_region(country,region));
res.insert("dstoffset", GeoIP_time_zone_dst_offset_by_country_and_region(country,region));
compute = true;
}
}
}

if(!compute)
{
res.insert("timezone", GeoIP_time_zone_by_country_and_region(record->country_code,record->region));
res.insert("offset", offset);
res.insert("dstoffset", GeoIP_time_zone_dst_offset_by_country_and_region(record->country_code,record->region));
}

GeoIPRecord_delete(record);
}else
{
Expand Down
6 changes: 4 additions & 2 deletions Modules/Timezones/dll/moduledll.pro
Expand Up @@ -8,11 +8,13 @@ SOURCES += moduledll.cpp \
pread.c \
regionName.c \
timeZone.c \
timezoneoffset.c
timezoneoffset.c \
tmap.cpp
HEADERS += moduledll.h \
GeoIP.h \
GeoIP_internal.h \
GeoIPCity.h \
pread.h
pread.h \
tmap.h
LIBS += -lWs2_32

3 changes: 3 additions & 0 deletions README.md
@@ -1,3 +1,6 @@
This repository is not updated regularly, if you want actual source code, check out premium version https://bablosoft.com/shop/BASPremium


# Browser Automation Studio
BrowserAutomationStudio is a solution that allows you to quickly create applications using browser, http client, email client, and other libraries. Programming skills are not required. Main application types: creation of posters, spammers, parsers, uploaders, apps for the social networks.

Expand Down
17 changes: 17 additions & 0 deletions Studio/mainwindow.cpp
Expand Up @@ -778,6 +778,17 @@ QString MainWindow::OpenFromFile(const QString& fileName)

Res->FromViewToModel(&loader);
Res->FromModelToView(WidgetController);

{
QFile f("settings_worker.ini");
if(f.open(QFile::WriteOnly | QFile::Text))
{
QTextStream out(&f);
out<<loader.GetSettingsWorker();
}
f.close();
}

compiler->SetVersion(loader.GetScriptVersion());
compiler->SetName(loader.GetScriptName());
compiler->SetHideBrowsers(loader.GetHideBrowsers());
Expand Down Expand Up @@ -997,6 +1008,11 @@ void MainWindow::New()
{
if(_RecordProcessCommunication)
_RecordProcessCommunication->StopRecorder();
{
QFile f("settings_worker.ini");
f.remove();
}

Output->SetDefaults();
TextEditor->Clear();
SetDefaultText();
Expand All @@ -1011,6 +1027,7 @@ void MainWindow::New()
ConnectionPassword.clear();
SetIsDirty(_DataBaseConnector->HasDatabase());
DatabaseId = QString("Database.") + QString::number(qrand() % 100000);

SetNotModified();
}
}
Expand Down

0 comments on commit 93d2ded

Please sign in to comment.