user friendly pastebin uploader

By BrAndo on Jul 31, 2008

Simply uploads to your choice of paste.stirk.org or pastebin.com (i normally only use paste.stirk.org but i believe pastebin.com supports bigger posts?)

heres the main dialog
Image

other features include pastebin downloader to view your saved pastes
Image

and edit your settings in a seperate dialog
Image

; I used brackets everywhere cuz i think its neater for giant codes
dialog paste {
  title "Pastebin uploader V0.3"
  size -1 -1 359 240
  option dbu
  edit "", 1, 3 2 353 183, multi return autovs vsbar
  text "Description:", 2, 5 199 32 8
  edit "", 3, 42 198 82 10, autohs
  text "Author:", 4, 5 212 25 8
  edit "", 5, 42 211 82 10, autohs
  combo 6, 42 225 82 11, drop
  text "Highlighting:", 7, 5 226 32 8
  check "Password protected", 8, 131 211 61 10
  edit "", 9, 130 225 67 10, disable
  check "Save URL automatically", 10, 131 198 69 10
  button "&Upload", 11, 206 199 41 11
  button "&Close", 12, 310 199 41 11
  button "&Saved URLs", 13, 258 199 41 11
  text "URL:", 14, 209 221 15 8
  edit "", 15, 228 220 84 10, read autohs
  button "&Clpb", 16, 320 220 29 9
  text "Bytes:", 17, 5 187 19 8
  text "0", 18, 31 187 33 8, right
  text "Lines:", 19, 81 187 17 8
  text "0", 20, 106 187 35 8, right
  text "Status:", 21, 156 187 19 8
  text "Ready", 22, 190 187 161 8, right
  menu "File", 23
  item "Save draft", 24, 23
  item "Load draft", 25, 23
  item "Delete drafts...", 31, 23
  item break, 33, 23
  item "Saved URLs", 35, 23
  item break, 36, 23
  item "Exit", 26, 23, cancel
  menu "Edit", 27
  item "Clear text", 32, 27
  item "Clipboard text", 28, 27
  item "Load from clipboard", 29, 27
  item break, 34, 27
  item "Edit settings", 30, 27
}
dialog saved {
  title "Saved URLS"
  size -1 -1 359 212
  option dbu
  list 1, 3 2 101 197, size
  edit "", 5, 108 2 248 197, read multi autovs vsbar
  button "+ URL", 2, 5 200 30 10
  button "- URL", 3, 38 200 30 10
  button "Close", 4, 71 200 30 10, cancel
  text "URL:", 6, 112 201 17 8
  edit "", 7, 136 200 84 10, read autohs
  button "Clpb", 8, 222 201 18 9
  button "Clpb content", 9, 311 201 44 9
  text "", 10, 245 201 63 8, center
}
dialog psettings {
  title "Pastebin settings"
  size -1 -1 191 186
  option dbu
  box "Defaults", 1, 4 1 183 83
  text "Description:", 2, 9 10 30 8
  radio "None", 3, 43 9 27 10, group
  radio "Other", 4, 70 9 25 10
  edit "", 5, 96 9 85 10, disable
  text "Author:", 6, 9 25 21 8
  radio "None", 7, 43 24 25 10, group
  radio "Other", 8, 70 24 26 10
  edit "", 9, 96 24 85 10, disable
  text "Highlighting:", 10, 9 56 31 8
  combo 12, 61 54 120 11, drop
  check "Save URL automatically", 11, 9 70 69 10
  text "Password:", 13, 9 40 25 8
  radio "None", 14, 43 39 25 10, group
  radio "PW", 15, 70 39 24 10
  edit "", 16, 96 39 85 10, disable
  box "Other settings", 17, 4 132 183 36
  text "Update content counter every", 18, 9 142 74 8
  edit "", 19, 84 141 16 10
  text "seconds", 20, 102 142 25 8
  check "Prompt when deleting saved URLs / drafts", 21, 9 155 116 10
  button "&Done", 22, 14 172 75 10
  button "&Cancel", 23, 101 172 75 10, cancel
  box "Pastebin", 24, 4 84 183 48
  radio "Paste.stirk.org", 25, 9 94 49 10, group
  radio "Pastebin.com", 26, 9 106 44 10
  text "Keep paste retained for", 27, 9 118 60 8
  combo 28, 78 116 102 11, disable drop
}
alias paste {
  if (!$isdir(pastebin)) { 
    mkdir pastebin 
    hmake paste
    hmake pset
    tokenize 126 description~author~password~highlighting 1~SaveURL 1~count 1~prompt 1~pastebin 1~expiry f~sw -m
    hadd pset $*
  }
  if ($dialog(paste)) { dialog -v paste }
  else {
    hadd pset sw $iif(-?* iswm $1,$1,-m)
    dialog $hget(pset,sw) paste paste
  }
}
alias paste.lines {
  var %line 1, %bytes
  while (%line <= $did(paste,1).lines) {
    inc %bytes $len($did(paste,1,%line))
    inc %line
  }
  did -ra paste 18 %bytes
  did -ra paste 20 $iif($did(paste,1) == $null,0,$calc(%line - 1))
}
alias paste.hl {
  var %x $2-
  if ($1 == 1) {
    tokenize 32 None applescript asp bash c csharp css delphi html4script java java5 javascript lisp mirc mysql objc oracle8 perl php $&
      plsql python ruby sql tcl vb vbnet xml
  }
  else {
    tokenize 126 None~ABAP~ActionScript~Ada~AppleScript~ASP~AutoIt~Bash~ $+ $&
      BNF~C~C++~C#~ColdFusion~CSS~D~Delphi~Diff~DOS~Eiffel~Fortran~ $+ $&
      FreeBasic~Genero~Groovy~Haskell~HTML~IDL~INI~Java~Javascript~Latex~Lisp~ $+ $&
      Lua~MatLab~MPASM~mIRC~MySQL~OCaml~Pascal~Perl~PHP~PL/SQL~ $+ $&
      Python~Rails~Robots~Ruby~Scheme~Smalltalk~Smarty~SQL~TCL~VisualBasic~VB.NET~VisualFoxPro~XML
  }
  did -a %x $*
}
alias html {
  var %x $regsubex($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)|x09/g,$null)
  %x = $regsubex(%x,/&x23(d+);/g,$chr(1))
  if ($regex(%x,/&w+;/)) { 
    %x = $replace(%x,&quot;,",&apos;,',&amp;,&,&lt;,<,&gt;,>, $+ $&
      &nbsp;, ,&yen;,¥,&copy;,©,&laquo;,«,&bull;,•,&lsaquo;,‹,&rsaquo;,›)
  }
  return %x
}
alias urlenc { return $regsubex($1-,/(W|s)/g,$chr(37) $+ $base($asc(1),10,16,2)) }
on *:start:{ 
  hmake paste
  hload paste pastebinpaste.dat 
  hmake pset
  hload pset pastebinpset.dat
}
on *:exit:{ 
  hsave paste pastebinpaste.dat
  hsave pset pastebinpset.dat
}
menu * {
  Pastebin:{ paste }
}
on *:dialog:paste:*:*:{
  if ($devent == init) {
    did -a $dname 3 $hget(pset,description)
    did -a $dname 5 $hget(pset,author)
    paste.hl $hget(pset,pastebin) $dname 6
    did -c $dname 6 $hget(pset,highlighting)
    if ($hget(pset,SaveURL)) { did -c $dname 10 }
    if ($hget(pset,password)) { 
      did -c $dname 8
      did -ea $dname 9 $v1
    }
    .timerpaste 0 $hget(pset,count) paste.lines
  }
  elseif ($devent == sclick) { 
    if ($did == 8) { 
      if ($hget(pset,pastebin) == 2) {
        did -ra $dname 22 Pastebin.com does not support password protection
        did -u $dname 8
      }
      else { did $iif($did(8).state,-e,-rb) $dname 9 }
    }
    elseif ($did == 13) { dialog $iif($dialog(saved),-v,$hget(pset,sw)) saved saved }
    elseif ($did == 11) && ($did(1) != $null) {
      if ($sock(paste)) { did -ra $dname 22 Upload in progress }
      else {
        if ($did(8).state) && ($did(9) == $null) {
          did -b $dname 9
          did -u $dname 8
        }
        did -ra $dname 22 Uploading...
        did -r $dname 15
        sockopen paste $iif($hget(pset,pastebin) == 1,paste.stirk.org,pastebin.com) 80
      }
    }
    elseif ($did == 16) && ($did(15)) { clipboard $did(15) }
    elseif ($did == 12) {
      .timerpaste off
      dialog -x $dname
    }
  }
  elseif ($devent == menu) { 
    ;ADD EXTENSIONS
    if ($did == 24) && ($did(1) != $null) {
      var %fn $input(Save as (file name),oe,Save draft)
      if ($isfile(pastebin $+ %fn $+ .txt)) {
        if ($input(File name already exists. Overwrite?,yn,Save draft)) { .remove pastebin $+ %fn $+ .txt }
        else { var %fn $false }
      }
      if (%fn) {
        var %x 1
        while (%x <= $did(1).lines) {
          write pastebin $+ %fn $+ $iif(*.txt !iswm %fn,.txt) $did(1,%x)
          inc %x
        }
        did -ra $dname 22 Saved as $qt(%fn)
      }
    }
    elseif ($did == 25) {
      var %fn $sfile($mircdirPastebin)
      if ($regex(%fn,/.(txt|ini|mrc|dat)$/i)) {
        var %x 1
        did -r $dname 1
        while (%x <= $lines(%fn)) {
          did -a $dname 1 $read(%fn,n,%x) $+ $crlf
          inc %x
        }
        did -ra $dname 22 Loaded $qt($nopath(%fn))
      }
    }
    elseif ($did == 31) {
      if ($msfile($mircdirPastebin,Delete files,Delete)) {
        var %x 1
        if ($hget(pset,prompt)) && (!$input(Are you sure you wish to delete $msfile(0) files?,yn,Delete drafts)) { return }
        while ($msfile(%x)) {
          if (*pastebin*.txt iswm $v1) { .remove $qt($v2) }
          inc %x
        }
      }
      did -ra $dname 22 Deleted $msfile(0) saved drafts.
    }
    elseif ($did == 35) { dialog $iif($dialog(saved),-v,$hget(pset,sw)) saved saved }
    elseif ($did == 28) && ($did(1) != $null) { 
      var %x 1
      clipboard
      while (%x <= $did(1).lines) {
        clipboard -a $+ $iif($v1 < $v2,n) $did(1,%x)
        inc %x
      }
    }
    elseif ($did == 32) { did -r $dname 1 }
    elseif ($did == 29) {
      did -r $dname 1
      .comopen cb wscript.shell
      .comclose cb $com(cb,sendkeys,1,bstr,^v)
    }
    elseif ($did == 30) { dialog $iif($dialog(psettings),-v,$hget(pset,sw)) psettings psettings }
  }
  elseif ($devent == close) { .timerpaste off }
}
on *:dialog:saved:*:*:{
  if ($devent == init) {
    var %x 1
    while ($hget(paste,%x).item) {
      did -a $dname 1 $v1
      inc %x
    }
  }
  elseif ($devent == sclick) {
    if ($did == 1) && ($did(1).seltext) {
      sockclose pload
      sockopen pload $iif(stirk isin $v1,paste.stirk.org,pastebin.com) 80
      did -ra $dname 5 Loading page...
      did -ra $dname 7 $did(1).seltext
    }
    elseif ($did == 2) {
      var %i $input(Add url (Pastebin.com/paste.stirk.org ONLY),oe,Add URL)
      if ($regex(%i,/^(?:http://)?(paste.stirk.org|pastebin.com)/w+$/i)) {
        did -a $dname 1 %i
        hadd paste %i
      }
    }
    elseif ($did == 3) && ($hfind(paste,$did(1).seltext)) {
      if ($hget(pset,prompt)) && (!$input(Are you sure you wish to delete this URL?,yn,Delete URL)) { return }
      hdel paste $hfind(paste,$did(1).seltext)
      did -d $dname 1 $did(1).sel
    }
    elseif ($did == 8) && ($did(7)) { clipboard $v1 }
    elseif ($did == 9) && ($did(5) != $null) {
      var %x 1
      clipboard
      while (%x <= $did(5).lines) {
        clipboard -a $+ $iif($v1 < $v2,n) $did(5,%x)
        inc %x
      }
    }
  }
}
on *:dialog:psettings:*:*:{
  if ($devent == init) {
    if ($hget(pset,description)) {
      did -ae $dname 5 $v1
      did -c $dname 4
    }
    else { did -c $dname 3 }
    if ($hget(pset,author)) {
      did -ae $dname 9 $v1
      did -c $dname 8
    }
    else { did -c $dname 7 }
    if ($hget(pset,password)) {
      did -ae $dname 16 $v1
      did -c $dname 15
    }
    else { did -c $dname 14 }
    paste.hl $hget(pset,pastebin) $dname 12
    did -c $dname 12 $hget(pset,highlighting)
    if ($hget(pset,SaveURL)) { did -c $dname 11 }
    did -c $dname $iif($hget(pset,pastebin) == 1,25,26)
    tokenize 32 Day Month Forever
    did -a $dname 28 $*
    did -c $dname 28 $didwm(28,$hget(pset,expiry) $+ *)
    if ($hget(pset,pastebin) == 2) { did -e $dname 28 }
    did -a $dname 19 $hget(pset,count)
    if ($hget(pset,prompt)) { did -c $dname 21 }
  }
  elseif ($devent == sclick) {
    if ($istok(4 8 15,$did,32)) { did -e $dname $calc($did + 1) }
    elseif ($istok(3 7 14,$did,32)) { did -rb $dname $calc($did + 2) }
    elseif ($did == 23) { dialog -x $dname }
    elseif ($did == 22) { 
      dialog -x paste
      hadd pset description $did(5)
      hadd pset Author $did(9)
      hadd pset password $iif($did(25).state,$did(16))
      hadd pset highlighting $did(12).sel
      hadd pset SaveURL $did(11).state
      hadd pset count $iif($did(19) isnum 0-10,$v1,1)
      hadd pset Prompt $did(21).state
      hadd pset pastebin $iif($did(25).state,1,2)
      hadd pset expiry $lower($left($did(28),1))
      .timer 1 0 dialog $hget(pset,sw) paste paste
      dialog -x $dname
    }
    elseif ($did == 25) { 
      did -b $dname 28
      did -r $dname 12
      paste.hl 1 $dname 12
      did -c $dname 12 1
    }
    elseif ($did == 26) {
      did -e $dname 28
      did -r $dname 12
      paste.hl 2 $dname 12
      did -c $dname 12 1
    }
  }
}
on *:sockopen:paste:{
  if ($sockerr) {
    did -ra paste 22 Error uploading content.
    sockclose $sockname
    return
  }
  var %x 1, %s sockwrite -n $sockname
  while (%x <= $did(paste,1).lines) {
    bset -t &cont $calc($bvar(&cont,0) + 1) $urlenc($did(paste,1,%x)) $+ $lf
    inc %x
  }
  if ($hget(pset,pastebin) == 1) {
    bset -t &head 1 input_text=
    bcopy &head 12 &cont 1 $bvar(&cont,0)
    bset -t &head $bvar(&head,0) &description= $+ $did(paste,3) $+ &name= $+ $did(paste,5) $+ $&
      &input_password= $+ $did(paste,9) $+ &input_language= $+ $did(paste,6)
  }
  else {
    bset -t &head 1 parent_pid=&format= $+ $iif($did(paste,6) == none,text,$v1) $+ &code2=
    bcopy &head $calc($bvar(&head,0) + 1) &cont 1 $bvar(&cont,0)
    bset -t &head $bvar(&head,0) &poster= $+ $did(paste,5) $+ &paste=Send&expiry= $+ $hget(pset,expiry) $+ &email=
  }
  %s POST / HTTP/1.0
  %s Host: $sock($sockname).addr
  %s Content-Type: application/x-www-form-urlencoded
  %s Content-Length: $bvar(&head,0)
  %s
  %s &head
}
on *:sockread:paste:{
  if ($sockerr) {
    did -ra paste 22 Error uploading content.
    sockclose $sockname
    return
  }
  var %a
  sockread %a
  if ($hget(pset,pastebin) == 1) && ($regex(%a,/^<meta.+url=(.+?)"/i)) { var %url $regml(1) }
  elseif (Location: *pastebin.com* iswm %a) { var %url $gettok(%a,2,32) }
  if (%url) {
    did -ra paste 22 Upload successful. Ready
    did -a paste 15 %url
    if ($did(paste,10).state) { hadd paste %url }
    sockclose $sockname
  }
}
on *:sockopen:pload:{
  sockwrite -n $sockname GET / $+ $gettok($remove($did(saved,1).seltext,http://),2,47) HTTP/1.0
  sockwrite $sockname Host: $sock($sockname).addr $+ $str($crlf,2)
}
on *:sockread:pload:{
  var %a
  sockread %a
  if (<textarea isin %a) {
    did -r saved 5
    if ($html(%a) != $null) { did -a saved 5 $html(%a) $+ $crlf }
    sockmark $sockname $true
  }
  elseif ($sock($sockname).mark) { did -a saved 5 $html(%a) $+ $crlf }
  if (</textarea> isin %a) { sockclose $sockname }
}
on *:sockclose:pload:{ did -ra saved 5 Entry does not exist. }

Comments

Sign in to comment.
PuNkTuReD   -  Aug 10, 2008

i tried posting and
when i added a description it would not post
without the description it did post but all s\'s were turned into 1\'s

once ya get the bugs kinked out this is going to be a great script.
ill still give it a 7 for now and will gladly up that once bugs r gone.

 Respond  
SnoFox   -  Aug 09, 2008

mIRC v6.31 - I\'ve loaded the script and all works fine except:
s and W (Case sensitive) are turned into ones (1) on upload to the site... Wtf?
I\'m no noob, but I\'m a bit too tired to look into it right now. Fifteen Till One in the morning. ^.^
I\'d check up on that 20 line thing if you haven\'t already.
Great script, though. I look forward to any fixes - I\'ll sure use it.

 Respond  
ShAmPi   -  Aug 02, 2008
  • /hadd: no such table \'pset\' (line 101, pastebin.mrc)

And yes I have the latest mirc version

 Respond  
AHBARAR   -  Jul 31, 2008

Me Says: Brando u did nice work just fix the buggies if there is an try it more than 1 more time to see if it work 100 % or no so u can always get the best rating ever >:) keep up the good work

 Respond  
BrAndo   -  Jul 31, 2008

and yeah sorry for assuming that most people used up to date versions of mirc

 Respond  
BrAndo   -  Jul 31, 2008

and H_M \"Also, the way it\'s built, this doesn\'t send all the text, it only would send like 20 lines and that\'s it\"

http://paste.stirk.org/33244 < same code uploaded with the dialog, 418 lines

 Respond  
BrAndo   -  Jul 31, 2008

your loading it with /paste or the menu right..

 Respond  
Eugenio   -  Jul 31, 2008

tag along much ?
Im using 6.32 and it works fine for me cept for one error on load, people on other versions seem to FAIL

 Respond  
xplo   -  Jul 31, 2008

not working proprelly. got a 2 from me.

 Respond  
Eugenio   -  Jul 31, 2008

rofl

 Respond  
~Sonny   -  Jul 31, 2008

Rofl. I was being a smart ass. -.-

 Respond  
Eugenio   -  Jul 31, 2008

Actually he didnt \"rip\"
The idea isnt yours to copy right and infact hes has more features is smaller and cleaner.

/me rates sammie\'s 1

 Respond  
~Sonny   -  Jul 31, 2008

EPIC RIPPER. </3!
/me rates -1
;p

 Respond  
H_M   -  Jul 31, 2008

This doesn\'t even load for me, I keep getting * /hadd: no such table \'pset\' (line 101, script23)
and different errors on load

Also, the way it\'s built, this doesn\'t send all the text, it only would send like 20 lines and that\'s it

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.