183 lines
8.1 KiB
Diff
183 lines
8.1 KiB
Diff
diff -Nuar a/bin/gonullu b/bin/gonullu
|
||
--- a/bin/gonullu 2022-10-18 09:29:21.000000000 +0300
|
||
+++ b/bin/gonullu 2025-02-13 21:22:25.954260012 +0300
|
||
@@ -79,7 +79,7 @@
|
||
|
||
print(args)
|
||
|
||
- farm = Farm('https://ciftlik.pisilinux.org/ciftlik', args.email)
|
||
+ farm = Farm('https://ciftlik.pisilinux.org', args.email)
|
||
volunteer = Volunteer(args)
|
||
|
||
# CTRL+C call_exit'e yönlendirildi. Bu sayede çalışan container silinecek ve öyle çıkış yapılacak.
|
||
diff -Nuar a/gonullu/farm.py b/gonullu/farm.py
|
||
--- a/gonullu/farm.py 2022-10-18 09:29:21.000000000 +0300
|
||
+++ b/gonullu/farm.py 2025-02-13 21:18:27.818237122 +0300
|
||
@@ -1,8 +1,6 @@
|
||
import glob
|
||
import time
|
||
-
|
||
import requests
|
||
-
|
||
from gonullu.log import Log
|
||
|
||
|
||
@@ -19,15 +17,15 @@
|
||
# Get isteğini işleyip json data dönen fonksiyonumuz.
|
||
try:
|
||
response = requests.get('%s/%s' % (self.url, request))
|
||
+ response.raise_for_status() # HTTP hatalarını yakalamak için
|
||
if json:
|
||
self.total_error_time = 10
|
||
return response.json()
|
||
else:
|
||
self.total_error_time = 10
|
||
return response
|
||
- except requests.ConnectionError:
|
||
- self.log.error('Sunucuya %s saniyedir erişilemedi tekrar bağlanmaya çalışıyor!' % self.total_error_time,
|
||
- continued=True)
|
||
+ except requests.exceptions.RequestException as e:
|
||
+ self.log.error('Sunucuya %s saniyedir erişilemedi tekrar bağlanmaya çalışıyor! Hata: %s' % (self.total_error_time, str(e)), continued=True)
|
||
self.total_error_time += 10
|
||
self.total_time = 10
|
||
return -2
|
||
@@ -35,40 +33,52 @@
|
||
def send_file(self, package, binary_path):
|
||
# Oluşan çıktı dosyalarını çiftliğe gönderen fonksiyonumuz.
|
||
output_files = glob.glob('/tmp/gonullu/%s/*.[lpe]*' % package)
|
||
+ if not output_files:
|
||
+ self.log.error('Dosya bulunamadı: /tmp/gonullu/%s/*.[lpe]*' % package)
|
||
+ return False
|
||
+
|
||
for file in output_files:
|
||
- if self.send(file, binary_path):
|
||
- pass
|
||
- else:
|
||
- while not (self.send(file, binary_path)):
|
||
- self.log.warning(message='%s dosyası tekrar gönderilmeye çalışılacak.' % file)
|
||
+ retry_count = 0
|
||
+ max_retries = 15
|
||
+ while retry_count < max_retries:
|
||
+ if self.send(file, binary_path):
|
||
+ break
|
||
+ else:
|
||
+ self.log.warning(message='%s dosyası tekrar gönderilmeye çalışılacak. Deneme: %d' % (file, retry_count + 1))
|
||
self.wait()
|
||
+ retry_count += 1
|
||
+ else:
|
||
+ self.log.error(message='%s dosyası gönderilemedi!' % file)
|
||
+ return False
|
||
return True
|
||
|
||
def send(self, file, binary_path):
|
||
self.log.information(message='%s dosyası gönderiliyor.' % file.split('/')[-1])
|
||
if file.split('.')[-1] in ('err', 'log'):
|
||
- content = open(file, 'r').read()
|
||
- html = open('%s.html' % file, 'w')
|
||
- html.write('<html><body><pre>')
|
||
- html.write(content)
|
||
- html.write('</pre></body></html>')
|
||
- html.close()
|
||
+ with open(file, 'r') as f:
|
||
+ content = f.read()
|
||
+ with open('%s.html' % file, 'w') as html:
|
||
+ html.write('<html><body><pre>')
|
||
+ html.write(content)
|
||
+ html.write('</pre></body></html>')
|
||
file = '%s.html' % file
|
||
|
||
- f = {'file': open(file, 'rb')}
|
||
try:
|
||
- r = requests.post('%s/%s' % (self.url, 'upload'), files=f, data={'binrepopath': binary_path})
|
||
- hashx = self.sha1file(file)
|
||
-
|
||
- file = file.split('/')[-1]
|
||
- if hashx == r.text.strip():
|
||
- self.log.success(message='%s dosyası başarı ile gönderildi.' % file)
|
||
- return True
|
||
- else:
|
||
- self.log.error(message='%s dosyası gönderilemedi!' % file)
|
||
- return False
|
||
- except requests.ConnectionError:
|
||
- self.log.error(message='%s dosyası gönderilemedi!' % file)
|
||
+ with open(file, 'rb') as f:
|
||
+ files = {'file': f}
|
||
+ r = requests.post('%s/%s' % (self.url, 'upload'), files=files, data={'binrepopath': binary_path})
|
||
+ r.raise_for_status() # HTTP hatalarını yakalamak için
|
||
+ hashx = self.sha1file(file)
|
||
+
|
||
+ file = file.split('/')[-1]
|
||
+ if hashx == r.text.strip():
|
||
+ self.log.success(message='%s dosyası başarı ile gönderildi.' % file)
|
||
+ return True
|
||
+ else:
|
||
+ self.log.error(message='%s dosyası gönderilemedi!' % file)
|
||
+ return False
|
||
+ except requests.exceptions.RequestException as e:
|
||
+ self.log.error(message='%s dosyası gönderilemedi! Hata: %s' % (file, str(e)))
|
||
return False
|
||
|
||
def get_package(self):
|
||
@@ -83,7 +93,11 @@
|
||
self.total_time += self.time
|
||
return -2
|
||
|
||
- elif response['state'] == 200:
|
||
+ if not isinstance(response, dict):
|
||
+ self.log.error(message='Geçersiz yanıt alındı!')
|
||
+ return -1
|
||
+
|
||
+ if response['state'] == 200:
|
||
self.log.information(message='Yeni paket bulundu, paketin adı: %s' % response['package'])
|
||
self.total_time = 0
|
||
return response
|
||
@@ -104,10 +118,10 @@
|
||
self.log.get_exit()
|
||
|
||
def wait(self, message='', reset=False):
|
||
- if reset is True:
|
||
+ if reset:
|
||
self.total_time = 0
|
||
|
||
- if not message == '':
|
||
+ if message:
|
||
information_message = '%d saniye%s' % (self.total_time, message)
|
||
self.log.information(message=information_message, continued=True)
|
||
time.sleep(self.time)
|
||
@@ -117,12 +131,12 @@
|
||
return self.total_time
|
||
|
||
def running_process(self):
|
||
- # uygulama çalışmaya devam ettiği sürece siteye bildirim göndereceğiz.
|
||
+ # Uygulama çalışmaya devam ettiği sürece siteye bildirim göndereceğiz.
|
||
# TODO: İlker abiden devam ediyor olan uygulamalar kısmına bunun ile ilgili bir servis isteyeceğiz.
|
||
pass
|
||
|
||
def complete_process(self):
|
||
- # uygulama çalışması bitince çalışacak olan prosedür fonksiyonumuz.
|
||
+ # Uygulama çalışması bitince çalışacak olan prosedür fonksiyonumuz.
|
||
pass
|
||
|
||
@staticmethod
|
||
@@ -137,7 +151,7 @@
|
||
sha = hashlib.sha1()
|
||
with open(filepath, 'rb') as f:
|
||
while True:
|
||
- block = f.read(2 ** 20) # Magic number: one-megabyte blocks.
|
||
+ block = f.read(2 ** 20) # Magic number: one-megabyte blocks.
|
||
if not block:
|
||
break
|
||
sha.update(block)
|
||
diff -Nuar a/gonullu/volunteer.py b/gonullu/volunteer.py
|
||
--- a/gonullu/volunteer.py 2022-10-18 09:29:21.000000000 +0300
|
||
+++ b/gonullu/volunteer.py 2025-02-13 15:09:18.870137077 +0300
|
||
@@ -61,7 +61,7 @@
|
||
sandbox = ' --ignore-sandbox '
|
||
|
||
build_sh = """#!/bin/bash
|
||
-service dbus start && pisi cp && update-ca-certificates && pisi ar pisiBeta https://ciftlik.pisilinux.org/2.0-Beta.1/pisi-index.xml.xz && pisi it --ignore-safety --ignore-dependency autoconf autogen automake binutils bison flex gawk gc gcc gnuconfig guile libmpc libsigsegv libtool-ltdl libtool lzo m4 make mpfr nasm pkgconfig yacc glibc-devel isl %s
|
||
+service dbus start && pisi cp && update-ca-certificates && pisi ar pisiBeta https://beta.pisilinux.org/pisi-index.xml.xz && pisi it --ignore-safety --ignore-dependency autoconf autogen automake binutils bison flex gawk gc gcc gnuconfig guile libmpc libsigsegv libtool-ltdl libtool lzo m4 make mpfr nasm pkgconfig yacc glibc-devel isl %s
|
||
pisi ar core --ignore-check https://github.com/pisilinux/core/raw/master/pisi-index.xml.xz && pisi ar main --ignore-check https://github.com/pisilinux/main/raw/master/pisi-index.xml.xz --at 2
|
||
pisi ur
|
||
sed -i 's/-j5/-j%d/g' /etc/pisi/pisi.conf
|