#!/usr/bin/python
# -*- coding: utf-8 -*-
#Author: Gabriel Bastos Vargas
try:
import lxml.etree
import lxml.builder
import netifaces as ni
import glob
import os
except:
print("Error importing modules.")
print("Have you installed netifaces and lxml? Install them with 'sudo pip install lxml' and 'sudo pip install netifaces'")
# ========= FINDING PKG ========= #
try:
PKG = glob.glob("*.pkg")[0]
except:
print("No .pkg files found.")
exit()
# ============== CREATING SYMBOLIC LINK ============== #
DIR = '/var/www/html'
PKG_PATH = os.path.abspath("./"+PKG)
os.system('sudo ln -s ' + "\'" + PKG_PATH + "\'" + ' ' + DIR)
# ======================================== FINDING PKG ID ======================================== #
try:
RAP = (glob.glob("*.rap")[0])[:-4]
except:
ANS = raw_input("No .rap files found, do you want to insert de package ID manually? [Y/n] ")
if ANS in ('Y','y','yes','YES','yes'):
RAP = raw_input("Insert the package ID: ")
else:
quit()
# ================================ FINDING CONNECTION ================================ #
try:
# --------------------------- WIRED CONNECTION --------------------------- #
ni.ifaddresses('enp2s0')
IP = ni.ifaddresses('enp2s0')[ni.AF_INET][0]['addr']
ANS = raw_input("Wired connection found, do you want to use it? [Y/n] ")
if ANS in ('Y','y','yes','YES','yes'):
print "IP: " + IP
except:
print "No wired connection available, using Wi-Fi instead."
try:
# ------------------------- WI-FI CONNECTION ------------------------- #
ni.ifaddresses('wlp3s0')
IP = ni.ifaddresses('wlp3s0')[ni.AF_INET][0]['addr']
ANS = raw_input("Wi-Fi connection found, do you want to use it? [Y/n] ")
if ANS in ('Y','y','yes','YES','yes'):
print "IP: " + IP
else:
quit()
except:
# ------------------------- CONNECTION ERROR ------------------------- #
print "No Wi-Fi connection available."
quit()
# ========= PKG SOURCE AND ID ========= #
PKG_SRC = "http://" + IP + "/" + PKG
PKG_ID = RAP
# =========== XML TAGS =========== #
E = lxml.builder.ElementMaker()
XMBML = E.XMBML
VIEW = E.View
ATTRIBUTES = E.Attributes
TABLE = E.Table
PAIR = E.Pair
STRING = E.String
ITEMS = E.Items
QUERY = E.Query
ITEM = E.Item
# --- HELPER FUNCION --- #
def CLASS(v):
return {'class': v}
# =================================================== XML BUILDER =================================================== #
the_doc = XMBML(
VIEW(
ATTRIBUTES(
TABLE(
PAIR(STRING('/dev_flash/vsh/resource/explore/icon/fah-xmb.png'),key="icon"),
PAIR(STRING('Direct link to package on PC'),key="title"),
PAIR(STRING('Download and Install a Package from PC via Webserver'),key="info"),
PAIR(STRING('disable'),key="ingame"),key='pkg_main'
)
),
ITEMS(
QUERY(CLASS("type:x-xmb/folder-pixmap"),key="pkg_main",attr="pkg_main",src="#pkg_items")
),id='package_link'
),
VIEW(
ATTRIBUTES(
TABLE(
PAIR(STRING('net_package_install'),key="info"),
PAIR(STRING(PKG_SRC),key="pkg_src"),
PAIR(STRING(PKG_SRC),key="pkg_src_qa"),
PAIR(STRING('tool_pkg_install_pc'),key="content_name"),
PAIR(STRING(PKG_ID),key="content_id"),
PAIR(STRING('/dev_flash/vsh/resource/explore/icon/fah-xmb.png'),key="prod_pict_path"),key='link001'
)
),
ITEMS(
ITEM(CLASS("type:x-xmb/xmlnpsignup"), key="link001", attr="link001")
),id='pkg_items'
),version="1.0"
)
# ======================= WRITING FILE ======================= #
file = open('package_link.xml','w')
file.write(lxml.etree.tostring(the_doc, pretty_print=True))
file.close()
# ====== END ====== #
print("All done.")