Buka /usr/share/software-center/softwarecenter/backend/scagent.py
dan edit awal fungsi ini, sehingga dikatakan:
def query_exhibits(self):
import urllib, json
class Obj:
def __init__(self, obj):
self.obj = obj
def __getattr__(self, name):
if name[:2] == "__": return object.__getattr__(self, name)
return self.obj[name]
self.emit("exhibits", [Obj(x) for x in json.loads(urllib.urlopen("http://localhost:8800/cgi-bin/bannerlist.py").read())])
return
Anda dapat meninggalkan sisanya apa adanya, itu tidak akan pernah tercapai.
Jika Anda ingin dukungan skrip di <iframe>
, edit
/usr/share/software-center/softwarecenter/ui/gtk3/widgets/exhibits.py
dan temukan settings.set_property("enable-scripts", False)
. Ubah False
ke True
.
Sekarang buat /var/www/cgi-bin/bannerlist.py
dan buat itu bisa dieksekusi:
#!/usr/bin/env python
import json
print("Content-type: application/json\n")
print(json.dumps([
{
"html": "<iframe src='file:/tmp/test.html'></iframe>",
"title_translated": "Hey dawg",
"click_url": "http://4chan.org",
"package_names": ("gimp"),
"banner_urls": ["file:/"],
"published": True
},
{
"html": "<iframe src='http://localhost:8800/cgi-bin/banner.py'></iframe>",
"title_translated": "Hey dawg",
"click_url": "http://4chan.org",
"package_names": ("gimp"),
"banner_urls": ["file:/"],
"published": True
}
]))
Ini menunjukkan daftar spanduk yang dihasilkan.
Sekarang buat /var/www/cgi-bin/banner.py
dan buat itu bisa dieksekusi:
#!/usr/bin/env python3
import time
print("Content-type: image/svg+xml\n")
print("""
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<rect width="300" height="100"
style="fill:rgba(0,0,255,0.5);stroke-width:1;stroke:rgba(0,0,0,0.5)"/>
<text x="0" y="25" fill="black">Time is """ + str(time.time()) + """</text>
</svg>
""")
Ini menunjukkan spanduk yang dihasilkan.
Anda mungkin perlu menghapus cache pusat perangkat lunak. Anda dapat melakukannya dengan menggunakan rm -rf ~/.cache/software-center
.
Jelas Anda perlu memasukkan sesuatu /tmp/test.html
agar spanduk pertama berfungsi.
Anda juga memerlukan server web yang berjalan di 8800 dengan cgi-bin
agar ini berfungsi. Jika Anda tidak memiliki ini, jalankan ini di Bash:
cd /var/www
python -c "import BaseHTTPServer as h, CGIHTTPServer as c;
i = c.CGIHTTPRequestHandler;
i.cgi_directories = ['/cgi-bin'];
h.HTTPServer(('', 8800),i).serve_forever()"
Anda perlu mendesain iframe
untuk membuatnya mengisi ruang, tetapi Anda mengetahuinya.
Unable to load page - Problem occurred while loading the URL http:localhost:8800cgi-binbanner.py
(sama untuk versi lokal aktif/tmp
). Versi lama berfungsi, tetapi sekarang tampaknya menghapus garis miring URL di suatu tempat. Pameran dikumpulkan OK, dan saya bisa mencetak konten HTML ke konsol dan garis miring ada, tetapi pada aplikasi mereka hilang! Apa yang mungkin terjadi?curl
di konsol. Saya pikir itu hanya menghapus garis miring dalam pesan kesalahan.