diff --git a/.gitignore b/.gitignore index dc2c6fa..12772fc 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ fpaste-0.3.4.tar.bz2 /fpaste-0.3.6.tar.bz2 /fpaste-0.3.7.tar.bz2 /fpaste-0.3.7.1.tar.bz2 +/fpaste-0.3.7.2.tar.gz diff --git a/0001-fpaste-0.3.7.1-fedora-production.patch b/0001-fpaste-0.3.7.1-fedora-production.patch deleted file mode 100644 index 4a5655a..0000000 --- a/0001-fpaste-0.3.7.1-fedora-production.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 319b7c0d8f3956e5a2d0e4d4a4cd40c5b18e386c Mon Sep 17 00:00:00 2001 -From: Clint Savage -Date: Fri, 12 Oct 2012 13:04:12 -0600 -Subject: [PATCH] replace fpaste.org with sticky-notes version fpaste.stg.fp.o - ---- - fpaste | 40 +++++++++++++++++++++++++--------------- - 1 file changed, 25 insertions(+), 15 deletions(-) - -diff --git a/fpaste b/fpaste -index 8899397..7073dcd 100755 ---- a/fpaste -+++ b/fpaste -@@ -19,9 +19,10 @@ - VERSION = '0.3.7.1' - USER_AGENT = 'fpaste/' + VERSION - SET_DESCRIPTION_IF_EMPTY = 1 # stdin, clipboard, sysinfo --FPASTE_URL = 'http://fpaste.org/' -+#FPASTE_URL = 'http://fpaste.org/' -+FPASTE_URL = 'http://paste.fedoraproject.org/' - --import os, sys, urllib, urllib2, subprocess -+import os, sys, urllib, urllib2, subprocess, json - from optparse import OptionParser, OptionGroup, SUPPRESS_HELP - - def is_text(text, maxCheck = 100, pctPrintable = 0.75): -@@ -80,7 +81,7 @@ def paste(text, options): - if len(author) > 30: - author = author[0:30-3] + "..." - -- params = urllib.urlencode({'title': title, 'author': author, 'lexer': options.lang, 'content': text, 'expire_options': options.expires}) -+ params = urllib.urlencode({'paste_lang': options.lang, 'paste_data': text, 'api_submit': 'true', 'mode': 'json'}) - pasteSizeKiB = len(params)/1024.0 - - if pasteSizeKiB >= 512: # 512KiB appears to be the current hard limit (20110404); old limit was 16MiB -@@ -110,18 +111,27 @@ def paste(text, options): - print f.read() - return False - -- url = f.geturl() -- if re.match(FPASTE_URL + '?.+', url): -- return url -- elif urllib2.urlparse.urlsplit(url).path == '/static/limit/': -- # instead of returning a 500 server error, fpaste.org now returns "http://fedoraunity.org/static/limit/" if paste too large -- print >> sys.stderr, "Error: paste size (%.1fKiB) exceeded server limit. %s" % (pasteSizeKiB, url) -- return False -- else: -- print >> sys.stderr, "Invalid URL '%s' returned. This should not happen. Use --debug to see server output" % url -- if options.debug: -- print f.read() -- return False -+# response = f.read() -+ response = json.loads(f.read()) -+ id = [i[1]["id"] for i in response.iteritems()].pop() -+# for k,j in i.iteritems(): -+# print j, k -+ -+ url = "{0}{1}".format(FPASTE_URL, id) -+ return url -+ -+# url = f.geturl() -+# if re.match(FPASTE_URL + '?.+', url): -+# return url -+# elif urllib2.urlparse.urlsplit(url).path == '/static/limit/': -+# # instead of returning a 500 server error, fpaste.org now returns "http://fedoraunity.org/static/limit/" if paste too large -+# print >> sys.stderr, "Error: paste size (%.1fKiB) exceeded server limit. %s" % (pasteSizeKiB, url) -+# return False -+# else: -+# print >> sys.stderr, "Invalid URL '%s' returned. This should not happen. Use --debug to see server output" % url -+# if options.debug: -+# print f.read() -+# return False - - - def sysinfo(show_stderr = False, show_successful_cmds = True, show_failed_cmds = True): --- -1.7.11.7 - diff --git a/0002-fpaste-0.3.7.1-remove-smolt-code.patch b/0002-fpaste-0.3.7.1-remove-smolt-code.patch deleted file mode 100644 index fc412bf..0000000 --- a/0002-fpaste-0.3.7.1-remove-smolt-code.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- fpaste.orig 2012-10-19 10:33:40.030190352 +1100 -+++ fpaste 2012-10-19 10:33:47.819151831 +1100 -@@ -195,19 +195,6 @@ - else: - si.append( ('%s' % cmdname, out) ) - -- # public SMOLT url -- try: -- sys.path.append('/usr/share/smolt/client') -- from smolt import get_profile_link, getPubUUID -- from smolt_config import get_config_attr -- smoonurl = get_config_attr("SMOON_URL", "http://smolts.org/") -- pubuuid = getPubUUID() -- puburl = get_profile_link(smoonurl, pubuuid)+os.linesep -- except: -- puburl = None -- si.insert(2, ('Smolt Profile URL', puburl) ) -- -- sys.stderr.write("\n") - - # return in readable indented format - sistr = "=== fpaste %s System Information (fpaste --sysinfo) ===\n" % VERSION diff --git a/0003-fpaste-0.3.7.1-use-expire-option-add-private-option-default-on.patch b/0003-fpaste-0.3.7.1-use-expire-option-add-private-option-default-on.patch deleted file mode 100644 index e205e91..0000000 --- a/0003-fpaste-0.3.7.1-use-expire-option-add-private-option-default-on.patch +++ /dev/null @@ -1,52 +0,0 @@ ---- ../fpaste-0.3.7.1.orig/fpaste 2013-04-14 12:57:06.052643012 +1000 -+++ fpaste 2013-04-14 12:56:14.278796939 +1000 -@@ -81,7 +81,7 @@ - if len(author) > 30: - author = author[0:30-3] + "..." - -- params = urllib.urlencode({'paste_lang': options.lang, 'paste_data': text, 'api_submit': 'true', 'mode': 'json'}) -+ params = urllib.urlencode({'paste_lang': options.lang, 'paste_data': text, 'paste_private': options.make_private, 'paste_expire': options.expires, 'api_submit': 'true', 'mode': 'json'}) - pasteSizeKiB = len(params)/1024.0 - - if pasteSizeKiB >= 512: # 512KiB appears to be the current hard limit (20110404); old limit was 16MiB -@@ -116,8 +116,11 @@ - id = [i[1]["id"] for i in response.iteritems()].pop() - # for k,j in i.iteritems(): - # print j, k -- -- url = "{0}{1}".format(FPASTE_URL, id) -+ if options.make_private == 'yes': -+ private_hash = [i[1]["hash"] for i in response.iteritems()].pop() -+ url = "{0}{1}/{2}".format(FPASTE_URL, id, private_hash) -+ else: -+ url = "{0}{1}".format(FPASTE_URL, id) - return url - - # url = f.geturl() -@@ -242,6 +245,7 @@ - validExpiresOpts = [ '3600', '10800', '43200', '86400' ] - validSyntaxOpts = [ 'abap', 'antlr', 'antlr-as', 'antlr-cpp', 'antlr-csharp', 'antlr-java', 'antlr-objc', 'antlr-perl', 'antlr-python', 'antlr-ruby', 'apacheconf', 'applescript', 'as', 'as3', 'aspx-cs', 'aspx-vb', 'basemake', 'bash', 'bat', 'bbcode', 'befunge', 'boo', 'brainfuck', 'c', 'c-objdump', 'cheetah', 'clojure', 'common-lisp', 'console', 'control', 'cpp', 'cpp-objdump', 'csharp', 'css', 'css+django', 'css+erb', 'css+genshitext', 'css+mako', 'css+myghty', 'css+php', 'css+smarty', 'cython', 'd', 'd-objdump', 'delphi', 'diff', 'django', 'dpatch', 'dylan', 'erb', 'erl', 'erlang', 'evoque', 'fortran', 'gas', 'genshi', 'genshitext', 'glsl', 'gnuplot', 'groff', 'haskell', 'html', 'html+cheetah', 'html+django', 'html+evoque', 'html+genshi', 'html+mako', 'html+myghty', 'html+php', 'html+smarty', 'ini', 'io', 'irc', 'java', 'js', 'js+cheetah', 'js+django', 'js+erb', 'js+genshitext', 'js+mako', 'js+myghty', 'js+php', 'js+smarty', 'jsp', 'lhs', 'lighty', 'llvm', 'logtalk', 'lua', 'make', 'mako', 'matlab', 'matlabsession', 'minid', 'modelica', 'moocode', 'mupad', 'mxml', 'myghty', 'mysql', 'nasm', 'newspeak', 'nginx', 'numpy', 'objdump', 'objective-c', 'ocaml', 'perl', 'php', 'pot', 'pov', 'prolog', 'py3tb', 'pycon', 'pytb', 'python', 'python3', 'ragel', 'ragel-c', 'ragel-cpp', 'ragel-d', 'ragel-em', 'ragel-java', 'ragel-objc', 'ragel-ruby', 'raw', 'rb', 'rbcon', 'rebol', 'redcode', 'rhtml', 'rst', 'scala', 'scheme', 'smalltalk', 'smarty', 'sourceslist', 'splus', 'sql', 'sqlite3', 'squidconf', 'tcl', 'tcsh', 'tex', 'text', 'trac-wiki', 'vala', 'vb.net', 'vim', 'xml', 'xml+cheetah', 'xml+django', 'xml+erb', 'xml+evoque', 'xml+mako', 'xml+myghty', 'xml+php', 'xml+smarty', 'xslt', 'yaml' ] - validClipboardSelectionOpts = [ 'primary', 'secondary', 'clipboard' ] -+ validPrivateOpts = [ 'yes', 'no'] - ext2lang_map = { 'sh':'bash', 'bash':'bash', 'bat':'bat', 'c':'c', 'h':'c', 'cpp':'cpp', 'css':'css', 'html':'html', 'htm':'html', 'ini':'ini', 'java':'java', 'js':'js', 'jsp':'jsp', 'pl':'perl', 'php':'php', 'php3':'php', 'py':'python', 'rb':'rb', 'rhtml':'rhtml', 'sql':'sql', 'sqlite':'sqlite3', 'tcl':'tcl', 'vim':'vim', 'xml':'xml' } - - usage = """\ -@@ -265,6 +269,9 @@ - fpasteOrg_group.add_option('-d', dest='desc', help='description of paste; default appends filename(s)', metavar='"DESCRIPTION"') - fpasteOrg_group.add_option('-l', dest='lang', help='language of content for syntax highlighting; default is "%default"; use "list" to show all ' + str(len(validSyntaxOpts)) + ' supported langs', metavar='"LANGUAGE"') - fpasteOrg_group.add_option('-x', dest='expires', help='time before paste is removed; default is %default seconds; valid options: ' + ', '.join(validExpiresOpts), metavar='EXPIRES') -+ #fpasteOrg_group.add_option('-P', dest='paste_private', help='make paste private; default is %default', + ', '.join(validPrivateOpts), metavar='"PRIVATE"') -+ fpasteOrg_group.add_option('-P', '--private', help='make paste private; default is %default; valid options: ' + ', '.join(validPrivateOpts), dest='make_private', metavar='"PRIVATE"') -+ - parser.add_option_group(fpasteOrg_group) - # other options - fpasteProg_group = OptionGroup(parser, "Input/Output Options") -@@ -278,7 +285,7 @@ - fpasteProg_group.add_option('', '--confirm', dest='confirm', help='print paste, and prompt for confirmation before sending', action="store_true", default=False) - parser.add_option_group(fpasteProg_group) - -- parser.set_defaults(desc='', nick='', lang='text', expires=max(validExpiresOpts), selection='primary') -+ parser.set_defaults(desc='', nick='', lang='text', make_private='yes', expires=max(validExpiresOpts), selection='primary' ) - (options, args) = parser.parse_args() - - if options.lang.lower() == 'list': diff --git a/0004-fpaste-0.3.7.1-add-url-option.patch b/0004-fpaste-0.3.7.1-add-url-option.patch deleted file mode 100644 index 0e11fa7..0000000 --- a/0004-fpaste-0.3.7.1-add-url-option.patch +++ /dev/null @@ -1,46 +0,0 @@ ---- ../fpaste-0.3.7.1.orig/fpaste 2013-04-17 23:10:40.453369217 +1000 -+++ ./fpaste 2013-04-17 23:21:09.274881264 +1000 -@@ -92,7 +92,7 @@ - if not confirm("Send binary data anyway?"): - return False - -- req = urllib2.Request(url=FPASTE_URL, data=params, headers={'User-agent': USER_AGENT}) -+ req = urllib2.Request(url=options.url, data=params, headers={'User-agent': USER_AGENT}) - if options.proxy: - if options.debug: - print >> sys.stderr, "Using proxy: %s" % options.proxy -@@ -118,9 +118,9 @@ - # print j, k - if options.make_private == 'yes': - private_hash = [i[1]["hash"] for i in response.iteritems()].pop() -- url = "{0}{1}/{2}".format(FPASTE_URL, id, private_hash) -+ url = "{0}{1}/{2}".format(options.url, id, private_hash) - else: -- url = "{0}{1}".format(FPASTE_URL, id) -+ url = "{0}{1}".format(options.url, id) - return url - - # url = f.geturl() -@@ -271,6 +271,7 @@ - fpasteOrg_group.add_option('-x', dest='expires', help='time before paste is removed; default is %default seconds; valid options: ' + ', '.join(validExpiresOpts), metavar='EXPIRES') - #fpasteOrg_group.add_option('-P', dest='paste_private', help='make paste private; default is %default', + ', '.join(validPrivateOpts), metavar='"PRIVATE"') - fpasteOrg_group.add_option('-P', '--private', help='make paste private; default is %default; valid options: ' + ', '.join(validPrivateOpts), dest='make_private', metavar='"PRIVATE"') -+ fpasteOrg_group.add_option('-U', '--URL', help='URL of fpaste server; default is %default', dest='url', metavar='"FPASTE URL"') - - parser.add_option_group(fpasteOrg_group) - # other options -@@ -285,9 +286,13 @@ - fpasteProg_group.add_option('', '--confirm', dest='confirm', help='print paste, and prompt for confirmation before sending', action="store_true", default=False) - parser.add_option_group(fpasteProg_group) - -- parser.set_defaults(desc='', nick='', lang='text', make_private='yes', expires=max(validExpiresOpts), selection='primary' ) -+ parser.set_defaults(desc='', nick='', lang='text', make_private='yes', expires=max(validExpiresOpts), selection='primary', url=FPASTE_URL ) - (options, args) = parser.parse_args() - -+ # Check for trailing slash -+ if options.url[-1] != '/': -+ options.url = options.url + '/' -+ - if options.lang.lower() == 'list': - print 'Valid language syntax options:' - for opt in validSyntaxOpts: diff --git a/0005-fpaste-0.3.7.1-enable-shortened-urls.patch b/0005-fpaste-0.3.7.1-enable-shortened-urls.patch deleted file mode 100644 index 0a51306..0000000 --- a/0005-fpaste-0.3.7.1-enable-shortened-urls.patch +++ /dev/null @@ -1,57 +0,0 @@ ---- ../fpaste-0.3.7.1.orig/fpaste 2013-04-17 23:26:12.821180847 +1000 -+++ fpaste 2013-04-17 23:24:46.127666845 +1000 -@@ -64,6 +64,18 @@ - else: - return False - -+def get_shortened_url(long_url): -+ """Get shortened URL from paste data""" -+ req = urllib2.Request(url=long_url+'/', data='mode=json') -+ try: -+ f = urllib2.urlopen(req) -+ except urllib2.URLError: -+ return False -+ -+ for line in f.readlines(): -+ if 'short_url' in line: -+ return json.loads('{' + line +'}')['short_url'] -+ - - def paste(text, options): - '''send text to fpaste.org and return the URL''' -@@ -121,7 +133,12 @@ - url = "{0}{1}/{2}".format(options.url, id, private_hash) - else: - url = "{0}{1}".format(options.url, id) -- return url -+ -+ short_url = get_shortened_url(url) -+ if short_url: -+ return [url, short_url] -+ else: -+ return [url, url] - - # url = f.geturl() - # if re.match(FPASTE_URL + '?.+', url): -@@ -394,7 +411,7 @@ - if not confirm("OK to send?"): - sys.exit(1) - -- url = paste(text, options) -+ [url, short_url] = paste(text, options) - if url: - # try to save URL in clipboard, and warn but don't error - if options.clipout: -@@ -408,7 +425,11 @@ - #parser.error("'xsel' failure. this usually means you're not running X") - print >> sys.stderr, "WARNING: URL not saved to clipboard" - -- print url -+ if url == short_url: -+ print url -+ else: -+ print short_url + " -> " + url -+ - else: - sys.exit(1) - diff --git a/0006-fpaste-0.3.7.1-correct-syntax-options.patch b/0006-fpaste-0.3.7.1-correct-syntax-options.patch deleted file mode 100644 index a880d11..0000000 --- a/0006-fpaste-0.3.7.1-correct-syntax-options.patch +++ /dev/null @@ -1,215 +0,0 @@ ---- fpaste 2013-07-14 01:41:33.990948757 +0100 -+++ fpaste.syn-patch 2013-07-14 01:39:13.848014651 +0100 -@@ -260,10 +260,210 @@ - - def main(): - validExpiresOpts = [ '3600', '10800', '43200', '86400' ] -- validSyntaxOpts = [ 'abap', 'antlr', 'antlr-as', 'antlr-cpp', 'antlr-csharp', 'antlr-java', 'antlr-objc', 'antlr-perl', 'antlr-python', 'antlr-ruby', 'apacheconf', 'applescript', 'as', 'as3', 'aspx-cs', 'aspx-vb', 'basemake', 'bash', 'bat', 'bbcode', 'befunge', 'boo', 'brainfuck', 'c', 'c-objdump', 'cheetah', 'clojure', 'common-lisp', 'console', 'control', 'cpp', 'cpp-objdump', 'csharp', 'css', 'css+django', 'css+erb', 'css+genshitext', 'css+mako', 'css+myghty', 'css+php', 'css+smarty', 'cython', 'd', 'd-objdump', 'delphi', 'diff', 'django', 'dpatch', 'dylan', 'erb', 'erl', 'erlang', 'evoque', 'fortran', 'gas', 'genshi', 'genshitext', 'glsl', 'gnuplot', 'groff', 'haskell', 'html', 'html+cheetah', 'html+django', 'html+evoque', 'html+genshi', 'html+mako', 'html+myghty', 'html+php', 'html+smarty', 'ini', 'io', 'irc', 'java', 'js', 'js+cheetah', 'js+django', 'js+erb', 'js+genshitext', 'js+mako', 'js+myghty', 'js+php', 'js+smarty', 'jsp', 'lhs', 'lighty', 'llvm', 'logtalk', 'lua', 'make', 'mako', 'matlab', 'matlabsession', 'minid', 'modelica', 'moocode', 'mupad', 'mxml', 'myghty', 'mysql', 'nasm', 'newspeak', 'nginx', 'numpy', 'objdump', 'objective-c', 'ocaml', 'perl', 'php', 'pot', 'pov', 'prolog', 'py3tb', 'pycon', 'pytb', 'python', 'python3', 'ragel', 'ragel-c', 'ragel-cpp', 'ragel-d', 'ragel-em', 'ragel-java', 'ragel-objc', 'ragel-ruby', 'raw', 'rb', 'rbcon', 'rebol', 'redcode', 'rhtml', 'rst', 'scala', 'scheme', 'smalltalk', 'smarty', 'sourceslist', 'splus', 'sql', 'sqlite3', 'squidconf', 'tcl', 'tcsh', 'tex', 'text', 'trac-wiki', 'vala', 'vb.net', 'vim', 'xml', 'xml+cheetah', 'xml+django', 'xml+erb', 'xml+evoque', 'xml+mako', 'xml+myghty', 'xml+php', 'xml+smarty', 'xslt', 'yaml' ] -+ validSyntaxOpts = [ "cpp", -+ "diff", -+ "gdb", -+ "javascript", -+ "text", -+ "perl", -+ "php", -+ "python", -+ "ruby", -+ "xml", -+ "abap", -+ "6502acme", -+ "actionscript", -+ "actionscript3", -+ "ada", -+ "algol68", -+ "apache", -+ "applescript", -+ "apt_sources", -+ "asm", -+ "asp", -+ "autoconf", -+ "autohotkey", -+ "autoit", -+ "avisynth", -+ "awk", -+ "bash", -+ "basic4gl", -+ "bf", -+ "bibtex", -+ "blitzbasic", -+ "bnf", -+ "boo", -+ "c", -+ "c_loadrunner", -+ "c_mac", -+ "caddcl", -+ "cadlisp", -+ "cfdg", -+ "cfm", -+ "chaiscript", -+ "cil", -+ "clojure", -+ "cmake", -+ "cobol", -+ "cpp", -+ "cpp-qt", -+ "csharp", -+ "css", -+ "cuesheet", -+ "d", -+ "dcs", -+ "delphi", -+ "diff", -+ "div", -+ "dos", -+ "dot", -+ "e", -+ "ecmascript", -+ "eiffel", -+ "email", -+ "epc", -+ "erlang", -+ "f1", -+ "falcon", -+ "fo", -+ "fortran", -+ "freebasic", -+ "fsharp", -+ "4cs", -+ "gambas", -+ "gdb", -+ "genero", -+ "genie", -+ "gettext", -+ "glsl", -+ "gml", -+ "gnuplot", -+ "go", -+ "groovy", -+ "gwbasic", -+ "haskell", -+ "hicest", -+ "68000devpac", -+ "hq9plus", -+ "html4strict", -+ "icon", -+ "idl", -+ "ini", -+ "inno", -+ "intercal", -+ "io", -+ "j", -+ "java", -+ "java5", -+ "javascript", -+ "jquery", -+ "6502kickass", -+ "kixtart", -+ "klonec", -+ "klonecpp", -+ "latex", -+ "lb", -+ "lisp", -+ "locobasic", -+ "logtalk", -+ "lolcode", -+ "lotusformulas", -+ "lotusscript", -+ "lscript", -+ "lsl2", -+ "lua", -+ "m68k", -+ "magiksf", -+ "make", -+ "mapbasic", -+ "matlab", -+ "mirc", -+ "mmix", -+ "modula2", -+ "modula3", -+ "mpasm", -+ "mxml", -+ "mysql", -+ "newlisp", -+ "nsis", -+ "oberon2", -+ "objc", -+ "objeck", -+ "ocaml", -+ "ocaml-brief" , -+ "oobas", -+ "oracle11", -+ "oracle8", -+ "oxygene", -+ "oz", -+ "pascal", -+ "pcre", -+ "per", -+ "perl", -+ "perl6", -+ "pf", -+ "php", -+ "php-brief", -+ "pic16", -+ "pike", -+ "pixelbender", -+ "plsql", -+ "postgresql", -+ "povray", -+ "powerbuilder", -+ "powershell", -+ "progress", -+ "prolog", -+ "properties", -+ "providex", -+ "purebasic", -+ "python", -+ "q", -+ "qbasic", -+ "rails", -+ "rebol", -+ "reg", -+ "robots", -+ "rpmspec", -+ "rsplus", -+ "ruby", -+ "sas", -+ "scala", -+ "scheme", -+ "scilab", -+ "sdlbasic", -+ "smalltalk", -+ "smarty", -+ "sql", -+ "systemverilog", -+ "6502tasm", -+ "tcl", -+ "teraterm", -+ "text", -+ "thinbasic", -+ "tsql", -+ "typoscript", -+ "unicon", -+ "vala", -+ "vb", -+ "vbnet", -+ "verilog", -+ "vhdl", -+ "vim", -+ "visualfoxpro", -+ "visualprolog", -+ "whitespace", -+ "whois", -+ "winbatch", -+ "xbasic", -+ "xml", -+ "xorg_conf", -+ "xpp", -+ "z80", -+ "zxbasic" ] - validClipboardSelectionOpts = [ 'primary', 'secondary', 'clipboard' ] - validPrivateOpts = [ 'yes', 'no'] -- ext2lang_map = { 'sh':'bash', 'bash':'bash', 'bat':'bat', 'c':'c', 'h':'c', 'cpp':'cpp', 'css':'css', 'html':'html', 'htm':'html', 'ini':'ini', 'java':'java', 'js':'js', 'jsp':'jsp', 'pl':'perl', 'php':'php', 'php3':'php', 'py':'python', 'rb':'rb', 'rhtml':'rhtml', 'sql':'sql', 'sqlite':'sqlite3', 'tcl':'tcl', 'vim':'vim', 'xml':'xml' } -+ ext2lang_map = { 'sh':'bash', 'bash':'bash', 'bat':'bat', 'c':'c', 'h':'c', 'cpp':'cpp', 'css':'css', 'html':'html4strict', 'htm':'html4strict', 'ini':'ini', 'java':'java', 'js':'javascript', 'jsp':'java', 'pl':'perl', 'php':'php', 'php3':'php', 'py':'python', 'rb':'ruby', 'rhtml':'html4strict', 'sql':'sql', 'sqlite':'sql', 'tcl':'tcl', 'vim':'vim', 'xml':'xml' } - - usage = """\ - Usage: %%prog [OPTION]... [FILE]... diff --git a/0007-fpaste-0.3.7.1-correct-expire-options.patch b/0007-fpaste-0.3.7.1-correct-expire-options.patch deleted file mode 100644 index 052d6bc..0000000 --- a/0007-fpaste-0.3.7.1-correct-expire-options.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- fpaste.orig 2014-01-23 15:10:14.966463373 +1100 -+++ fpaste 2014-01-23 15:39:25.037951793 +1100 -@@ -259,7 +259,7 @@ - - - def main(): -- validExpiresOpts = [ '3600', '10800', '43200', '86400' ] -+ validExpiresOpts = [ '1800', '21600', '86400', '604800', '2592000'] - validSyntaxOpts = [ "cpp", - "diff", - "gdb", -@@ -503,7 +503,8 @@ - fpasteProg_group.add_option('', '--confirm', dest='confirm', help='print paste, and prompt for confirmation before sending', action="store_true", default=False) - parser.add_option_group(fpasteProg_group) - -- parser.set_defaults(desc='', nick='', lang='text', make_private='yes', expires=max(validExpiresOpts), selection='primary', url=FPASTE_URL ) -+ parser.set_defaults(desc='', nick='', lang='text', make_private='yes', -+ expires='2592000', selection='primary', url=FPASTE_URL ) - (options, args) = parser.parse_args() - - # Check for trailing slash diff --git a/0008-fpaste-0.3.7.1-remove-description-option.patch b/0008-fpaste-0.3.7.1-remove-description-option.patch deleted file mode 100644 index 1db968f..0000000 --- a/0008-fpaste-0.3.7.1-remove-description-option.patch +++ /dev/null @@ -1,70 +0,0 @@ ---- fpaste.orig 2014-01-23 16:13:28.427862452 +1100 -+++ fpaste 2014-01-23 16:14:07.518576961 +1100 -@@ -86,7 +86,6 @@ - - # if sent data exceeds maxlength, server dies without error returned, so, we'll truncate the input here, - # until the server decides to truncate instead of die -- title = options.desc - author = options.nick - if len(title) > 120: # limits from maxlength attr of fpaste.org form - title = title[0:120-3] + "..." -@@ -483,7 +482,6 @@ - # pastebin-specific options first - fpasteOrg_group = OptionGroup(parser, "fpaste.org Options") - fpasteOrg_group.add_option('-n', dest='nick', help='your nickname; default is "%default"', metavar='"NICKNAME"') -- fpasteOrg_group.add_option('-d', dest='desc', help='description of paste; default appends filename(s)', metavar='"DESCRIPTION"') - fpasteOrg_group.add_option('-l', dest='lang', help='language of content for syntax highlighting; default is "%default"; use "list" to show all ' + str(len(validSyntaxOpts)) + ' supported langs', metavar='"LANGUAGE"') - fpasteOrg_group.add_option('-x', dest='expires', help='time before paste is removed; default is %default seconds; valid options: ' + ', '.join(validExpiresOpts), metavar='EXPIRES') - #fpasteOrg_group.add_option('-P', dest='paste_private', help='make paste private; default is %default', + ', '.join(validPrivateOpts), metavar='"PRIVATE"') -@@ -503,7 +501,7 @@ - fpasteProg_group.add_option('', '--confirm', dest='confirm', help='print paste, and prompt for confirmation before sending', action="store_true", default=False) - parser.add_option_group(fpasteProg_group) - -- parser.set_defaults(desc='', nick='', lang='text', make_private='yes', -+ parser.set_defaults(nick='', lang='text', make_private='yes', - expires='2592000', selection='primary', url=FPASTE_URL ) - (options, args) = parser.parse_args() - -@@ -558,31 +556,19 @@ - parser.error("'xsel' failure. this usually means you're not running X") - if not text: - parser.error("%s clipboard is empty" % options.selection) -- if SET_DESCRIPTION_IF_EMPTY and not options.desc: -- #options.desc = '%s clipboard' % options.selection -- options.desc = summarize_text(text) - elif options.pasteself: - text = open(sys.argv[0]).read() -- options.desc = 'fpaste-' + VERSION - options.lang = 'python' - options.nick = 'Fedora Unity' - elif options.sysinfo: - text = sysinfo(options.debug) -- if SET_DESCRIPTION_IF_EMPTY and not options.desc: -- options.desc = 'fpaste --sysinfo' - elif not args: # read from stdin if no file args supplied - try: - text += sys.stdin.read() - except KeyboardInterrupt: - print >> sys.stderr, "\nUSAGE REMINDER:\n fpaste waits for input when run without file arguments.\n Paste your text, then press on a new line to upload.\n Try `fpaste --help' for more information.\nExiting..." - sys.exit(1) -- if SET_DESCRIPTION_IF_EMPTY and not options.desc: -- options.desc = summarize_text(text) - else: -- if not options.desc: -- options.desc = '%s' % (' + '.join(fileargs)) -- else: -- options.desc = '%s: %s' % (options.desc, ' + '.join(fileargs)) - for i, f in enumerate(args): - if not os.access(f, os.R_OK): - parser.error("file '%s' is not readable" % f) -@@ -591,10 +577,8 @@ - text += '### file %d of %d: %s\n' % (i+1, len(args), fileargs[i]) - text += '#' * 78 + '\n' - text += open(f).read() -- - if options.debug: - print 'nick: "%s"' % options.nick -- print 'desc: "%s"' % options.desc - print 'lang: "%s"' % options.lang - print 'text (%d): "%s ..."' % (len(text), text[:80]) - diff --git a/0009-fpaste-0.3.7.1-better-check-for-kde-and-plasma.patch b/0009-fpaste-0.3.7.1-better-check-for-kde-and-plasma.patch deleted file mode 100644 index 091ef96..0000000 --- a/0009-fpaste-0.3.7.1-better-check-for-kde-and-plasma.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- fpaste.orig 2014-01-23 16:14:31.606400916 +1100 -+++ fpaste 2014-01-23 16:15:04.841157892 +1100 -@@ -161,7 +161,7 @@ - cmdlist = [ - ('OS Release', '''lsb_release -ds''', '''cat /etc/*-release | uniq''', 'cat /etc/issue', 'cat /etc/motd'), - ('Kernel', '''uname -r ; cat /proc/cmdline'''), -- ('Desktop(s) Running', '''ps -eo comm= | egrep '(gnome-session|kdeinit|xfce.?-session|fluxbox|blackbox|hackedbox|ratpoison|enlightenment|icewm-session|od-session|wmaker|wmx|openbox-lxde|openbox-gnome-session|openbox-kde-session|mwm|e16|fvwm|xmonad|sugar-session)' '''), -+ ('Desktop(s) Running', '''ps -eo comm= | egrep '(gnome-session|startkde|startactive|xfce.?-session|fluxbox|blackbox|hackedbox|ratpoison|enlightenment|icewm-session|od-session|wmaker|wmx|openbox-lxde|openbox-gnome-session|openbox-kde-session|mwm|e16|fvwm|xmonad|sugar-session)' '''), - ('Desktop(s) Installed', '''ls -m /usr/share/xsessions/ | sed 's/\.desktop//g' '''), - ('SELinux Status', '''sestatus''', '''/usr/sbin/sestatus''', '''getenforce''', '''grep -v '^#' /etc/sysconfig/selinux'''), - ('SELinux Error Count', '''selinuxenabled && (grep avc: /var/log/messages; ausearch -m avc -ts today)2>/dev/null|egrep -o "comm=\\"[^ ]+"|sort|uniq -c|sort -rn'''), diff --git a/0010-fpaste-0.3.7.1-correct-paste-error-return.patch b/0010-fpaste-0.3.7.1-correct-paste-error-return.patch deleted file mode 100644 index e477607..0000000 --- a/0010-fpaste-0.3.7.1-correct-paste-error-return.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- fpaste.orig 2014-01-23 16:22:05.048073376 +1100 -+++ fpaste 2014-01-23 16:26:21.389182939 +1100 -@@ -82,7 +82,7 @@ - import re - if not text: - print >> sys.stderr, "No text to send." -- return False -+ return [False,False] - - # if sent data exceeds maxlength, server dies without error returned, so, we'll truncate the input here, - # until the server decides to truncate instead of die -@@ -101,7 +101,7 @@ - if not is_text(text): - print >> sys.stderr, "WARNING: your paste looks a lot like binary data instead of text." - if not confirm("Send binary data anyway?"): -- return False -+ return [False,False] - - req = urllib2.Request(url=options.url, data=params, headers={'User-agent': USER_AGENT}) - if options.proxy: -@@ -120,7 +120,7 @@ - print >> sys.stderr, "Server Error: %d - %s" % (e.code, e.msg) - if options.debug: - print f.read() -- return False -+ return [False, False] - - # response = f.read() - response = json.loads(f.read()) diff --git a/0011-fpaste-0.3.7.1-reactivate-nick-password-options.patch b/0011-fpaste-0.3.7.1-reactivate-nick-password-options.patch deleted file mode 100644 index 2505c3d..0000000 --- a/0011-fpaste-0.3.7.1-reactivate-nick-password-options.patch +++ /dev/null @@ -1,99 +0,0 @@ ---- fpaste.orig 2014-01-23 16:32:30.722416350 +1100 -+++ fpaste 2014-01-23 17:20:19.905213882 +1100 -@@ -64,9 +64,16 @@ - else: - return False - --def get_shortened_url(long_url): -+def get_shortened_url(long_url, password): - """Get shortened URL from paste data""" -- req = urllib2.Request(url=long_url+'/', data='mode=json') -+ -+ # NOTE: this uses password, not paste_password -+ if password: -+ params = urllib.urlencode({'mode':'json', 'password': password}) -+ else: -+ params = 'mode=json' -+ -+ req = urllib2.Request(url=long_url+'/', data=params) - try: - f = urllib2.urlopen(req) - except urllib2.URLError: -@@ -87,12 +94,15 @@ - # if sent data exceeds maxlength, server dies without error returned, so, we'll truncate the input here, - # until the server decides to truncate instead of die - author = options.nick -- if len(title) > 120: # limits from maxlength attr of fpaste.org form -- title = title[0:120-3] + "..." -- if len(author) > 30: -- author = author[0:30-3] + "..." -+ if len(author) > 50: -+ author = author[0:50-3] + "..." - -- params = urllib.urlencode({'paste_lang': options.lang, 'paste_data': text, 'paste_private': options.make_private, 'paste_expire': options.expires, 'api_submit': 'true', 'mode': 'json'}) -+ params = urllib.urlencode({'paste_lang': options.lang, 'paste_data': text, -+ 'paste_private': options.make_private, -+ 'paste_expire': options.expires, -+ 'paste_password': options.password, -+ 'paste_user': author, -+ 'api_submit': 'true', 'mode': 'json'}) - pasteSizeKiB = len(params)/1024.0 - - if pasteSizeKiB >= 512: # 512KiB appears to be the current hard limit (20110404); old limit was 16MiB -@@ -133,11 +143,11 @@ - else: - url = "{0}{1}".format(options.url, id) - -- short_url = get_shortened_url(url) -+ short_url = get_shortened_url(url, options.password) - if short_url: - return [url, short_url] - else: -- return [url, url] -+ return [url, False] - - # url = f.geturl() - # if re.match(FPASTE_URL + '?.+', url): -@@ -481,12 +491,12 @@ - - # pastebin-specific options first - fpasteOrg_group = OptionGroup(parser, "fpaste.org Options") -- fpasteOrg_group.add_option('-n', dest='nick', help='your nickname; default is "%default"', metavar='"NICKNAME"') -+ fpasteOrg_group.add_option('-n', dest='nick', help='your nickname; default is "%default";', metavar='"NICKNAME"') - fpasteOrg_group.add_option('-l', dest='lang', help='language of content for syntax highlighting; default is "%default"; use "list" to show all ' + str(len(validSyntaxOpts)) + ' supported langs', metavar='"LANGUAGE"') - fpasteOrg_group.add_option('-x', dest='expires', help='time before paste is removed; default is %default seconds; valid options: ' + ', '.join(validExpiresOpts), metavar='EXPIRES') -- #fpasteOrg_group.add_option('-P', dest='paste_private', help='make paste private; default is %default', + ', '.join(validPrivateOpts), metavar='"PRIVATE"') - fpasteOrg_group.add_option('-P', '--private', help='make paste private; default is %default; valid options: ' + ', '.join(validPrivateOpts), dest='make_private', metavar='"PRIVATE"') - fpasteOrg_group.add_option('-U', '--URL', help='URL of fpaste server; default is %default', dest='url', metavar='"FPASTE URL"') -+ fpasteOrg_group.add_option('-d', '--password', help='password for paste; default is %default', dest='password', metavar='"PASSWORD"') - - parser.add_option_group(fpasteOrg_group) - # other options -@@ -501,8 +511,15 @@ - fpasteProg_group.add_option('', '--confirm', dest='confirm', help='print paste, and prompt for confirmation before sending', action="store_true", default=False) - parser.add_option_group(fpasteProg_group) - -- parser.set_defaults(nick='', lang='text', make_private='yes', -- expires='2592000', selection='primary', url=FPASTE_URL ) -+# Let default be anonymous. -+# p = subprocess.Popen('whoami', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) -+# (out, err) = p.communicate () -+# if p.returncode == 0 and out: -+# user = out[0:-1] -+# else: -+# print >> sys.stderr, "WARNING Could not run whoami. Posting anonymously." -+ -+ parser.set_defaults(nick='', lang='text', make_private='yes', expires='2592000', selection='primary', password='', url=FPASTE_URL ) - (options, args) = parser.parse_args() - - # Check for trailing slash -@@ -610,7 +627,8 @@ - #parser.error("'xsel' failure. this usually means you're not running X") - print >> sys.stderr, "WARNING: URL not saved to clipboard" - -- if url == short_url: -+ if not short_url: -+ print >> sys.stderr, "WARNING: Could not shorten URL" - print url - else: - print short_url + " -> " + url diff --git a/0012-fpaste-0.3.7.1-handle-server-errors.patch b/0012-fpaste-0.3.7.1-handle-server-errors.patch deleted file mode 100644 index 4685808..0000000 --- a/0012-fpaste-0.3.7.1-handle-server-errors.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- fpaste.orig 2014-01-23 19:31:38.279079278 +1100 -+++ fpaste 2014-01-23 19:46:01.387908129 +1100 -@@ -134,6 +134,23 @@ - - # response = f.read() - response = json.loads(f.read()) -+ -+ if 'error' in response['result']: -+ error = response['result']['error'] -+ if error == 'err_spamguard_php': -+ print >> sys.stderr, "Error: Poster's IP address is listed as malicious" -+ elif error == 'err_spamguard_noflood': -+ print >> sys.stderr, "Error: Poster is trying to flood" -+ elif error == 'err_spamguard_stealth': -+ print >> sys.stderr, "Error: The paste triggered the spam filter" -+ elif error == 'err_spamguard_ipban': -+ print >> sys.stderr, "Error: Poster's IP address is banned" -+ elif error == 'err_author_numeric': -+ print >> sys.stderr, "Error: Poster's alias should be alphanumeric" -+ else: -+ print >> sys.stderr, "Error: %s" % error -+ sys.exit(-1) -+ - id = [i[1]["id"] for i in response.iteritems()].pop() - # for k,j in i.iteritems(): - # print j, k diff --git a/0013-fpaste-0.3.7.1-update-man-page.patch b/0013-fpaste-0.3.7.1-update-man-page.patch deleted file mode 100644 index 161de1b..0000000 --- a/0013-fpaste-0.3.7.1-update-man-page.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff --git a/docs/man/en/fpaste.1 b/docs/man/en/fpaste.1 -index febf1ec..8340192 100644 ---- a/docs/man/en/fpaste.1 -+++ b/docs/man/en/fpaste.1 -@@ -17,14 +17,20 @@ show help message and exit - \fB\-n "NICKNAME"\fR - your nickname; default is "" - .TP --\fB\-d "DESCRIPTION"\fR --description of paste; default appends filename(s) -+\fB\-d "PASSWORD", \-\-password="PASSWORD"\fR -+password for paste; default is "" - .TP - \fB\-l "LANGUAGE"\fR --language of content for syntax highlighting; default is "text"; use "list" to show all 160 supported langs -+language of content for syntax highlighting; default is "text"; use "list" to show all 200+ supported langs - .TP - \fB\-x "EXPIRES"\fR --time before paste is removed; default is 86400 seconds; valid options: 3600, 10800, 43200, 86400 -+time before paste is removed; default is 2592000 seconds; valid options: 1800, 21600, 86400, 604800, 2592000 -+.TP -+\fB\-U, \-\-URL "URL"\fR -+URL of fpaste server; default is http://fpaste.org -+.TP -+\fB\-P, \-\-private\fR -+make paste private; default is yes; valid options: yes, no - - .br - .TP -@@ -59,11 +65,11 @@ Paste file foo.txt at fpaste.org - .TP - Paste output of ifconfig to fpaste.org with description "my network config" - .IP --\fBifconfig | fpaste \-d "my network config"\fR -+\fBifconfig | fpaste \fR - .TP - Paste mycode.py to fpaste.org with description as "problem with foo", nickname "codemonkey", and language "python" - .IP --\fBfpaste \-n codemonkey \-d "problem with foo" \-l python mycode.py\fR -+\fBfpaste \-n codemonkey \-l python mycode.py\fR - .TP - Paste mouse\-selected text from the primary X selection clipboard, and then overwrite the same clipboard with the returned fpaste URL - .IP -@@ -78,9 +84,9 @@ To paste the output of more than one program and/or file at a time, use the foll - \fBfpaste <(lsusb) <(lspci)\fR - .br - --\fBfpaste <(fdisk \-l) /etc/grub.conf \-d "grub problem"\fR -+\fBfpaste <(fdisk \-l) /etc/grub.conf \fR - .br --\fB(fdisk \-l ; cat /etc/grub.conf) | fpaste \-d "grub problem"\fR -+\fB(fdisk \-l ; cat /etc/grub.conf) | fpaste \fR - .br - - \fB(uname \-a ; yum repolist) | fpaste\fR diff --git a/fpaste.spec b/fpaste.spec index e8f3279..107781f 100644 --- a/fpaste.spec +++ b/fpaste.spec @@ -1,57 +1,12 @@ Name: fpaste -Version: 0.3.7.1 -Release: 12%{?dist} +Version: 0.3.7.2 +Release: 1%{?dist} Summary: A simple tool for pasting info onto sticky notes instances BuildArch: noarch Group: Applications/Internet License: GPLv3+ URL: https://fedorahosted.org/fpaste/ -Source0: https://fedorahosted.org/released/fpaste/fpaste-%{version}.tar.bz2 - -# Point fpaste to fedora sticky notes staging instance -# Thanks Clint for the patch. -# https://fedorahosted.org/fpaste/ticket/7#comment:1 -Patch0: 0001-%{name}-0.3.7.1-fedora-production.patch - -# Remove smolt data from fpaste -# https://fedorahosted.org/fpaste/ticket/6 -Patch1: 0002-%{name}-0.3.7.1-remove-smolt-code.patch - -# Adds an option to make paste private or public, sets default to on -# Makes use of expiry option -Patch2: 0003-%{name}-0.3.7.1-use-expire-option-add-private-option-default-on.patch - -# Enables user to specify another paste bin url -Patch3: 0004-%{name}-0.3.7.1-add-url-option.patch - -# Returns a short url when possible and prints it -# Checks fpaste server instance url for trailing slash -Patch4: 0005-%{name}-0.3.7.1-enable-shortened-urls.patch - -# Updates the language list to match what sticky server supports -Patch5: 0006-%{name}-0.3.7.1-correct-syntax-options.patch - -# Updates the expiry options to match sticky server, sets default to 30 days -# also -Patch6: 0007-%{name}-0.3.7.1-correct-expire-options.patch - -# Remove description option since sticky notes does not support it -Patch7: 0008-%{name}-0.3.7.1-remove-description-option.patch - -# Better kde/plasma detection -Patch8: 0009-%{name}-0.3.7.1-better-check-for-kde-and-plasma.patch - -# Correct the return value for empty or errored inputs -Patch9: 0010-%{name}-0.3.7.1-correct-paste-error-return.patch - -# Reactivate the nick and password options -Patch10: 0011-%{name}-0.3.7.1-reactivate-nick-password-options.patch - -# Handle server errors properly -Patch11: 0012-%{name}-0.3.7.1-handle-server-errors.patch - -# Update man page -Patch12: 0013-%{name}-0.3.7.1-update-man-page.patch +Source0: https://fedorahosted.org/released/fpaste/fpaste-%{version}.tar.gz %description It is often useful to be able to easily paste text to the Fedora @@ -64,21 +19,6 @@ reason they may be unable to paste something into the pastebin %prep %setup -q -# Patching order is important -%patch0 -p1 -%patch1 -%patch2 -%patch3 -p1 -%patch4 -%patch5 -%patch6 -%patch7 -%patch8 -%patch9 -%patch10 -%patch11 -%patch12 -p1 - %build #nothing required @@ -97,6 +37,10 @@ rm -rf %{buildroot} %{_mandir}/man1/fpaste.1.gz %changelog +* Tue Apr 15 2014 Ankur Sinha 0.3.7.2-1 +- Update to latest upstream release +- Get rid of all patches. They've been merged upstream. + * Fri Apr 04 2014 Ankur Sinha 0.3.7.1-12 - Update man page diff --git a/sources b/sources index ec6696a..a3a4617 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -53201ed0fdd1b9f325c43178adcd8878 fpaste-0.3.7.1.tar.bz2 +dd69969e6f68f3503ed32afaed0c7eed fpaste-0.3.7.2.tar.gz