mirror of
https://github.com/onionshare/onionshare.git
synced 2025-02-26 01:11:27 -05:00
Merge branch 'master' of github.com:micahflee/onionshare
This commit is contained in:
commit
91abbca21e
@ -1,3 +1,4 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
import os, sys, subprocess, time, hashlib, platform, json, locale, socket, argparse, Queue, inspect, base64
|
import os, sys, subprocess, time, hashlib, platform, json, locale, socket, argparse, Queue, inspect, base64
|
||||||
from random import randint
|
from random import randint
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
@ -152,12 +153,12 @@ def is_root():
|
|||||||
|
|
||||||
def tails_open_port(port):
|
def tails_open_port(port):
|
||||||
if get_platform() == 'Tails':
|
if get_platform() == 'Tails':
|
||||||
print strings["punching_a_hole"]
|
print translated("punching_a_hole")
|
||||||
subprocess.call(['/sbin/iptables', '-I', 'OUTPUT', '-o', 'lo', '-p', 'tcp', '--dport', str(port), '-j', 'ACCEPT'])
|
subprocess.call(['/sbin/iptables', '-I', 'OUTPUT', '-o', 'lo', '-p', 'tcp', '--dport', str(port), '-j', 'ACCEPT'])
|
||||||
|
|
||||||
def tails_close_port(port):
|
def tails_close_port(port):
|
||||||
if get_platform() == 'Tails':
|
if get_platform() == 'Tails':
|
||||||
print strings["closing_hole"]
|
print translated("closing_hole")
|
||||||
subprocess.call(['/sbin/iptables', '-I', 'OUTPUT', '-o', 'lo', '-p', 'tcp', '--dport', str(port), '-j', 'REJECT'])
|
subprocess.call(['/sbin/iptables', '-I', 'OUTPUT', '-o', 'lo', '-p', 'tcp', '--dport', str(port), '-j', 'REJECT'])
|
||||||
|
|
||||||
def load_strings(default="en"):
|
def load_strings(default="en"):
|
||||||
@ -177,6 +178,9 @@ def load_strings(default="en"):
|
|||||||
strings[key] = translated[lang][key]
|
strings[key] = translated[lang][key]
|
||||||
return strings
|
return strings
|
||||||
|
|
||||||
|
def translated(k):
|
||||||
|
return strings[k].encode("utf-8")
|
||||||
|
|
||||||
def file_crunching(filename):
|
def file_crunching(filename):
|
||||||
# calculate filehash, file size
|
# calculate filehash, file size
|
||||||
BLOCKSIZE = 65536
|
BLOCKSIZE = 65536
|
||||||
@ -219,7 +223,7 @@ def start_hidden_service(port):
|
|||||||
except SocketError:
|
except SocketError:
|
||||||
pass
|
pass
|
||||||
if not controller:
|
if not controller:
|
||||||
raise NoTor(strings["cant_connect_ctrlport"].format(controlports))
|
raise NoTor(translated("cant_connect_ctrlport").format(controlports))
|
||||||
controller.authenticate()
|
controller.authenticate()
|
||||||
|
|
||||||
# set up hidden service
|
# set up hidden service
|
||||||
@ -239,7 +243,7 @@ def main():
|
|||||||
|
|
||||||
# check for root in Tails
|
# check for root in Tails
|
||||||
if get_platform() == 'Tails' and not is_root():
|
if get_platform() == 'Tails' and not is_root():
|
||||||
sys.exit(strings["tails_requires_root"])
|
sys.exit(translated("tails_requires_root"))
|
||||||
|
|
||||||
# parse arguments
|
# parse arguments
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
@ -255,7 +259,7 @@ def main():
|
|||||||
stay_open = args.stay_open
|
stay_open = args.stay_open
|
||||||
|
|
||||||
if not (filename and os.path.isfile(filename)):
|
if not (filename and os.path.isfile(filename)):
|
||||||
sys.exit(strings["not_a_file"].format(filename))
|
sys.exit(translated("not_a_file").format(filename))
|
||||||
filename = os.path.abspath(filename)
|
filename = os.path.abspath(filename)
|
||||||
|
|
||||||
port = choose_port()
|
port = choose_port()
|
||||||
@ -263,24 +267,24 @@ def main():
|
|||||||
|
|
||||||
if not local_only:
|
if not local_only:
|
||||||
# try starting hidden service
|
# try starting hidden service
|
||||||
print strings["connecting_ctrlport"].format(port)
|
print translated("connecting_ctrlport").format(port)
|
||||||
try:
|
try:
|
||||||
onion_host = start_hidden_service(port)
|
onion_host = start_hidden_service(port)
|
||||||
except NoTor as e:
|
except NoTor as e:
|
||||||
sys.exit(e.args[0])
|
sys.exit(e.args[0])
|
||||||
|
|
||||||
# startup
|
# startup
|
||||||
print strings["calculating_sha1"]
|
print translated("calculating_sha1")
|
||||||
filehash, filesize = file_crunching(filename)
|
filehash, filesize = file_crunching(filename)
|
||||||
set_file_info(filename, filehash, filesize)
|
set_file_info(filename, filehash, filesize)
|
||||||
tails_open_port(port)
|
tails_open_port(port)
|
||||||
print '\n' + strings["give_this_url"]
|
print '\n' + translated("give_this_url")
|
||||||
if local_only:
|
if local_only:
|
||||||
print 'http://{0}/{1}'.format(local_host, slug)
|
print 'http://{0}/{1}'.format(local_host, slug)
|
||||||
else:
|
else:
|
||||||
print 'http://{0}/{1}'.format(onion_host, slug)
|
print 'http://{0}/{1}'.format(onion_host, slug)
|
||||||
print ''
|
print ''
|
||||||
print strings["ctrlc_to_stop"]
|
print translated("ctrlc_to_stop")
|
||||||
|
|
||||||
# start the web server
|
# start the web server
|
||||||
app.run(port=port)
|
app.run(port=port)
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"closing_hole": "Closing hole in firewall.",
|
"closing_hole": "Closing hole in firewall.",
|
||||||
"calculating_sha1": "Calculating SHA1 checksum.",
|
"calculating_sha1": "Calculating SHA1 checksum.",
|
||||||
"connecting_ctrlport": "Connecting to Tor control port to set up hidden service on port {0}.",
|
"connecting_ctrlport": "Connecting to Tor control port to set up hidden service on port {0}.",
|
||||||
"cant_connect_ctrlport": "Cannot connect to Tor control port on ports {0}. Is Tor running?",
|
"cant_connect_ctrlport": "Cannot connect to Tor control port on port {0}. Is Tor running?",
|
||||||
"give_this_url": "Give this URL to the person you're sending the file to:",
|
"give_this_url": "Give this URL to the person you're sending the file to:",
|
||||||
"ctrlc_to_stop": "Press Ctrl-C to stop server",
|
"ctrlc_to_stop": "Press Ctrl-C to stop server",
|
||||||
"not_a_file": "{0} is not a file.",
|
"not_a_file": "{0} is not a file.",
|
||||||
@ -28,7 +28,16 @@
|
|||||||
"ctrlc_to_stop": "Trykk Ctrl+C for å stoppe serveren.",
|
"ctrlc_to_stop": "Trykk Ctrl+C for å stoppe serveren.",
|
||||||
"not_a_file": "{0} er ikke en fil.",
|
"not_a_file": "{0} er ikke en fil.",
|
||||||
"filesize": "Filstørrelse",
|
"filesize": "Filstørrelse",
|
||||||
"sha1_checksum": "SHA1 sjekksum"
|
"sha1_checksum": "SHA1 sjekksum",
|
||||||
|
"copied_url": "Kopierte URL-en til utklippstavlen",
|
||||||
|
"download_page_loaded": "Nedlastingsside lastet",
|
||||||
|
"download_started": "Nedlasting startet",
|
||||||
|
"download_finished": "Nedlasting fullført",
|
||||||
|
"other_page_loaded": "En annen side har blitt lastet",
|
||||||
|
"tails_requires_root": "OnionShare kan må kjøres som administrator i Tails",
|
||||||
|
"close_on_finish": "Lukk automatisk",
|
||||||
|
"close_countdown": "Lukker om {0} sekunder",
|
||||||
|
"choose_file": "Velg en fil å dele"
|
||||||
}, "es": {
|
}, "es": {
|
||||||
"punching_a_hole": "Abriendo un agujero en el cortafuegos.",
|
"punching_a_hole": "Abriendo un agujero en el cortafuegos.",
|
||||||
"closing_hole": "Cerrando el agujero en el cortafuegos.",
|
"closing_hole": "Cerrando el agujero en el cortafuegos.",
|
||||||
@ -39,8 +48,17 @@
|
|||||||
"ctrlc_to_stop": "Pulse Ctrl-C para detener servidor",
|
"ctrlc_to_stop": "Pulse Ctrl-C para detener servidor",
|
||||||
"not_a_file": "{0} no es un archivo.",
|
"not_a_file": "{0} no es un archivo.",
|
||||||
"filesize": "Tamaño del archivo",
|
"filesize": "Tamaño del archivo",
|
||||||
"sha1_checksum": "Suma de verificación SHA1"
|
"sha1_checksum": "Suma de verificación SHA1",
|
||||||
}, "fr": {
|
"copied_url": "Copiar URL en el portapapeles",
|
||||||
|
"download_page_loaded": "Descargar página cargada.",
|
||||||
|
"download_started": "Descarga comenzó",
|
||||||
|
"download_finished": "Descarga terminado",
|
||||||
|
"other_page_loaded": "Otra página se ha cargado",
|
||||||
|
"tails_requires_root": "Debe ejecutar OnionShare como root en Tails",
|
||||||
|
"close_on_finish": "Cerrar automáticamente.",
|
||||||
|
"close_countdown": "Cierre en {0} segundos...",
|
||||||
|
"choose_file": "Elija un archivo para compartir"
|
||||||
|
}, "fr": {
|
||||||
"punching_a_hole": "Poinçonnage d'un trou dans le pare-feu.",
|
"punching_a_hole": "Poinçonnage d'un trou dans le pare-feu.",
|
||||||
"closing_hole": "Trou de clôture dans le pare-feu.",
|
"closing_hole": "Trou de clôture dans le pare-feu.",
|
||||||
"calculating_sha1": "Calculer un hachage SHA-1.",
|
"calculating_sha1": "Calculer un hachage SHA-1.",
|
||||||
@ -61,7 +79,16 @@
|
|||||||
"ctrlc_to_stop": "Premi Ctrl-C per fermare il server",
|
"ctrlc_to_stop": "Premi Ctrl-C per fermare il server",
|
||||||
"not_a_file": "{0} non è un file.",
|
"not_a_file": "{0} non è un file.",
|
||||||
"filesize": "Grandezza del file",
|
"filesize": "Grandezza del file",
|
||||||
"sha1_checksum": "firma SHA1"
|
"sha1_checksum": "Firma SHA1",
|
||||||
|
"copied_url": "URL copiato negli appunti",
|
||||||
|
"download_page_loaded": "Pagina di download caricata",
|
||||||
|
"download_started": "Download iniziato",
|
||||||
|
"download_finished": "Download finito",
|
||||||
|
"other_page_loaded": "Un altra pagina é stata caricata",
|
||||||
|
"tails_requires_root": "Con Tails devi avviare OnionShare come utente root",
|
||||||
|
"close_on_finish": "Chiudi automaticamente",
|
||||||
|
"close_countdown": "Chiusura in {0} secondi...",
|
||||||
|
"choose_file": "Scegli un file da condividere"
|
||||||
}, "nl": {
|
}, "nl": {
|
||||||
"punching_a_hole": "Een doorgang aan het maken in de firewall.",
|
"punching_a_hole": "Een doorgang aan het maken in de firewall.",
|
||||||
"closing_hole": "Doorgang in de firewall sluiten.",
|
"closing_hole": "Doorgang in de firewall sluiten.",
|
||||||
|
@ -13,7 +13,7 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
sys.path.append(os.path.abspath(onionshare_gui_dir+"/.."))
|
sys.path.append(os.path.abspath(onionshare_gui_dir+"/.."))
|
||||||
import onionshare
|
import onionshare
|
||||||
|
from onionshare import translated
|
||||||
import webapp
|
import webapp
|
||||||
|
|
||||||
window_icon = None
|
window_icon = None
|
||||||
@ -61,7 +61,7 @@ def select_file(strings, filename=None):
|
|||||||
if onionshare.get_platform() == 'Tails':
|
if onionshare.get_platform() == 'Tails':
|
||||||
args['directory'] = '/home/amnesia'
|
args['directory'] = '/home/amnesia'
|
||||||
|
|
||||||
filename = QFileDialog.getOpenFileName(caption=strings['choose_file'], options=QFileDialog.ReadOnly, **args)
|
filename = QFileDialog.getOpenFileName(caption=translated('choose_file'), options=QFileDialog.ReadOnly, **args)
|
||||||
if not filename:
|
if not filename:
|
||||||
return False, False
|
return False, False
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ def select_file(strings, filename=None):
|
|||||||
|
|
||||||
# validate filename
|
# validate filename
|
||||||
if not os.path.isfile(filename):
|
if not os.path.isfile(filename):
|
||||||
alert(strings["not_a_file"].format(filename), QMessageBox.Warning)
|
alert(translated("not_a_file").format(filename), QMessageBox.Warning)
|
||||||
return False, False
|
return False, False
|
||||||
|
|
||||||
filename = os.path.abspath(filename)
|
filename = os.path.abspath(filename)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user