Skip to content

Commit fcda199

Browse files
authored
Merge pull request #5 from GitHubNull/support_progress_num_arg
support process num arg for sqlmapapi.
2 parents c813622 + a0a90eb commit fcda199

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

lib/utils/api.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -355,8 +355,11 @@ def is_admin(token):
355355
return DataStore.admin_token == token
356356

357357

358-
def perform_task():
358+
def perform_task(num_cores=None):
359359
# logger.debug('perform_task...')
360+
global MAX_TASKS_NUMBER
361+
362+
local_max_tasks_number = MAX_TASKS_NUMBER if num_cores is None or num_cores == 0 else num_cores
360363

361364
# 计算在扫描的任务的数量
362365
with DataStore.tasks_lock:
@@ -379,9 +382,9 @@ def perform_task():
379382
else:
380383
running_task_count += 1
381384

382-
if running_task_count < MAX_TASKS_NUMBER:
385+
if running_task_count < local_max_tasks_number:
383386
for task in runnable_list:
384-
if running_task_count < MAX_TASKS_NUMBER:
387+
if running_task_count < local_max_tasks_number:
385388
if task.start_datetime is not None:
386389
if datetime.datetime.now() >= task.start_datetime:
387390
running_task_count += 1
@@ -398,22 +401,22 @@ def perform_task():
398401
task.status = TaskStatus.Running
399402

400403

401-
def run_task(interval):
404+
def run_task(interval, num_cores):
402405
logger.debug("run_task...")
403406
try:
404407
while True:
405408
# 执行定时任务
406-
perform_task()
409+
perform_task(num_cores)
407410
# 等待一定时间
408411
time.sleep(interval)
409412
except KeyboardInterrupt:
410413
print("定时任务已停止")
411414

412415

413-
def schedule_task(interval):
416+
def schedule_task(interval, num_cores):
414417
logger.debug("schedule_task...")
415418
# 创建后台线程
416-
thread = threading.Thread(target=run_task, args=(interval,))
419+
thread = threading.Thread(target=run_task, args=(interval, num_cores, ))
417420
# 设置线程为守护线程
418421
thread.setDaemon(True)
419422
# 启动线程
@@ -1190,7 +1193,7 @@ def version(token=None):
11901193
return jsonize({"success": True, "version": VERSION_STRING.split('/')[-1]})
11911194

11921195

1193-
def server(host=RESTAPI_DEFAULT_ADDRESS, port=RESTAPI_DEFAULT_PORT, adapter=RESTAPI_DEFAULT_ADAPTER, username=None, password=None):
1196+
def server(host=RESTAPI_DEFAULT_ADDRESS, port=RESTAPI_DEFAULT_PORT, adapter=RESTAPI_DEFAULT_ADAPTER, username=None, password=None, num_cores=None):
11941197
"""
11951198
REST-JSON API server
11961199
"""
@@ -1218,7 +1221,7 @@ def server(host=RESTAPI_DEFAULT_ADDRESS, port=RESTAPI_DEFAULT_PORT, adapter=REST
12181221
DataStore.current_db.init()
12191222

12201223
# 开启定时任务
1221-
schedule_task(1)
1224+
schedule_task(1, num_cores)
12221225

12231226
# Run RESTful API
12241227
try:

sqlmapapi.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,14 @@ def main():
6060
apiparser.add_option("--adapter", help="Server (bottle) adapter to use (default \"%s\")" % RESTAPI_DEFAULT_ADAPTER, default=RESTAPI_DEFAULT_ADAPTER, action="store")
6161
apiparser.add_option("--username", help="Basic authentication username (optional)", action="store")
6262
apiparser.add_option("--password", help="Basic authentication password (optional)", action="store")
63+
64+
# Add an option to specify the number of CPU cores
65+
apiparser.add_option("-n", "--num-cores", help="Number of CPU cores to use", type="int", action="store", default=0)
6366
(args, _) = apiparser.parse_args()
6467

6568
# Start the client or the server
6669
if args.server:
67-
server(args.host, args.port, adapter=args.adapter, username=args.username, password=args.password)
70+
server(args.host, args.port, adapter=args.adapter, username=args.username, password=args.password, num_cores=args.num_cores)
6871
elif args.client:
6972
client(args.host, args.port, username=args.username, password=args.password)
7073
else:

0 commit comments

Comments
 (0)