Ouvrez /usr/share/software-center/softwarecenter/backend/scagent.py
et modifiez le début de cette fonction, de sorte qu'elle indique:
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
Vous pouvez laisser le reste comme il est, il ne sera jamais atteint.
Si vous voulez le support de script dans votre <iframe>
, modifier
/usr/share/software-center/softwarecenter/ui/gtk3/widgets/exhibits.py
et trouver settings.set_property("enable-scripts", False)
. Changement False
de True
.
Maintenant faire /var/www/cgi-bin/bannerlist.py
et de le rendre exécutable:
#!/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
}
]))
Cela montre une liste de bannière généré.
Maintenant faire /var/www/cgi-bin/banner.py
et de le rendre exécutable:
#!/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>
""")
Cela démontre une bannière générée.
Vous devrez peut - être effacer le cache centre du logiciel. Vous pouvez le faire en utilisant rm -rf ~/.cache/software-center
.
De toute évidence, vous devez mettre quelque chose /tmp/test.html
pour que la première bannière fonctionne.
Vous devez également en cours d'exécution à 8800 avec serveur Web un cgi-bin
pour que cela fonctionne. Si vous ne l'avez pas, exécutez-le dans 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()"
Vous devez styliser le iframe
pour qu'il remplisse l'espace, mais vous l'avez compris.
Unable to load page - Problem occurred while loading the URL http:localhost:8800cgi-binbanner.py
(la même chose pour la version locale/tmp
). L'ancienne version fonctionnait, mais maintenant elle semble supprimer les barres obliques des URL quelque part. Les expositions sont rassemblées OK, et je peux imprimer le contenu HTML dans la console et les barres obliques sont là, mais sur l'application, elles manquent! Que pourrait-il se passer?curl
de la console. Je pense que cela supprime uniquement les barres obliques dans le message d'erreur.