Inetc plug-in: Difference between revisions
Line 8: | Line 8: | ||
[http://forums.winamp.com/showthread.php?threadid=198596 Forum thread] | [http://forums.winamp.com/showthread.php?threadid=198596 Forum thread] | ||
Very true! Makes a canhge to see someone spell it out like that. :) | |||
== Command line == | == Command line == |
Revision as of 10:31, 15 May 2013
Author: Takhir (talk, contrib) |
Links
Download:
Inetc.zip (81 KB)
Very true! Makes a canhge to see someone spell it out like that. :)
Command line
Plug-in DLL functions (entry points): get, post, head, put
get DLL Function
inetc::get [/PROXY IP:PORT] [/USERNAME PROXY_LOGIN /PASSWORD PROXY_PASSWD] [/NOPROXY] [/NOCANCEL] [/CONNECTTIMEOUT TO_SEC] [/RECEIVETIMEOUT TO_SEC] [/SILENT] [/CAPTION TEXT] [/NOCOOKIES] [/RESUME RETRY_QUESTION] [/POPUP HOST_ALIAS | /BANNER TEXT] [/CANCELTEXT CANCEL_TEXT] [/QUESTION CANCEL_QUESTION] [/USER_AGENT USER_AGENT_TEXT] [/HEADER HEADER_TEXT] [/TRANSLATE LANG_PARAMS] URL1 local_file1 [URL2 local_file2 [...]] [/END]
This call returns "OK" string if successful, error description string if failed (see included InetLoad.cpp file for a full set of status strings). Usage and result processing samples are included to the package.
- /PROXY
- Overwrites current proxy settings, not required in most cases. IE settings will be used by default.
- /USERNAME
- Proxy username (http only).
- /PASSWORD
- Proxy password (http only). For server (http/ftp) authentication it is possible to use URL encoded name and password, for example http://username:password@nsis.sourceforge.net.
- /NOPROXY
- Disables proxy settings for this connection (if any)
- /NOCANCEL
- Prevents download from being interrupted by user (locks Esc, Alt-F4, Cancel handling)
- /CONNECTTIMEOUT -
- Sets INTERNET_OPTION_CONNECT_TIMEOUT, seconds, default - IE current parameter value.
- /RECEIVETIMEOUT -
- Sets INTERNET_OPTION_RECEIVE_TIMEOUT, seconds, default - IE current parameter value.
- /SILENT
- Key hides plug-in' output (both popup dialog and embedded progress bar). Not required if 'SilentInstall silent' mode was defined in script (NSIS 2.03 or later).
- /RESUME
- On the permanent connection/transfer error instead of exit first displays message box with "resume download" question. Useful for dial-up connections and big files - allows user to restore connection and resume download. Default is "Your internet connection seems to have dropped out!\nPlease reconnect and click Retry to resume downloading...".
- /CAPTION
- Defines caption text for /BANNER mode, caption prefix (left of '-') for /POPUP mode and caption for RESUME MessageBox. Default is "InetLoad plug-in" if not set or "".
- /POPUP
- This mode displays detailed download dialog instead of embedded progress bar. Also useful in .onInit function (i.e. not in Section). If HOST_ALIAS is not "", text will replace URL in the dialog - this allows to hide real URL (including password).
- /BANNER
- Displays simple popup dialog (MSI Banner mode) and sets dialog TEXT (up to 3 lines using $\n).
- /CANCELTEXT
- Text for the Cancel button in the NSISdl mode. Default is NSIS dialog Cancel button text (current lang).
- /QUESTION
- Text for the optional MessageBox if user tries to cancel download. If /QUESTION "" was used default "Are you sure that you want to stop download?" will be substituted.
- /USERAGENT
- UserAgent http request header value. Default is "NSIS_Inetc (Mozilla)".
- /HEADER
- Adds or replaces http request header. Common HEADER_TEXT format is "header: value".
- /NOCOOKIES
- Removes cookies from http request
- /END
- Allows to limit plug-in stack reading (optional, required if you stores other vars in the stack).
- /TRANSLATE
- Allows translating plug-in text in the POPUP or "old style" (NSISdl) modes (see Readme for parameters). In the BANNER mode text is also customizable.
post DLL Function
inetc::post TEXT2POST [/PROXY IP:PORT] [/USERNAME PROXY_LOGIN /PASSWORD PROXY_PASSWD] [/NOPROXY] [/NOCANCEL] [/CONNECTTIMEOUT TO_SEC] [/RECEIVETIMEOUT TO_SEC] [/SILENT] [/FILE] [/CAPTION TEXT] [/NOCOOKIES] [/POPUP HOST_ALIAS | /BANNER TEXT] [/CANCELTEXT CANCEL_TEXT] [/USER_AGENT USER_AGENT_TEXT] [/TRANSLATE LANG_PARAMS] URL1 local_file1 [URL2 local_file2 [...]] [/END]
Sets POST http mode and defines text string or file name to be used in the POST (http only). Disables auto re-get. No char replaces used (%20 and others). /FILE option allows to send TEXT2POST file content to server, additional 'Filename:' header added to request this case.
For example
inetc::post "$1" /file "<url to some webserver>/catch.pl" "$2"
will post the contents of file $1 to the catch.pl script on the webserver and it will store the output of that script in the local file $2 The perl script catch.pl has the following lines to get the POSTed file:
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
In the cgi script, the HTTP environment variable HTTP_FILENAME will contain the filename as supplied in $1
head DLL Function
The same as get, but requests http headers only. Writes raw headers to file.
put DLL Function
inetc::put [/PROXY IP:PORT] [/USERNAME PROXY_LOGIN /PASSWORD PROXY_PASSWD] [/NOPROXY] [/NOCANCEL] [/CONNECTTIMEOUT TO_SEC] [/RECEIVETIMEOUT TO_SEC] [/SILENT] [/CAPTION TEXT] [/POPUP HOST_ALIAS | /BANNER TEXT] [/CANCELTEXT CANCEL_TEXT] [/USER_AGENT USER_AGENT_TEXT] [/TRANSLATE LANG_PARAMS] [/NOCOOKIES] URL1 local_file1 [URL2 local_file2 [...]] [/END]
Return value and parameters (if applicable) are the same as for previous entry point.
Examples
inetc::get "http://dl.zvuki.ru/6306/mp3/12.mp3" "$EXEDIR\12.mp3" \ "ftp://dl.zvuki.ru/6306/mp3/11.mp3" "$EXEDIR\11.mp3" Pop $0
inetc::put /BANNER "Cameron Diaz upload in progress..." \ "http://www.dreamgirlswallpaper.co.uk/fiveyearsonline/wallpaper/Cameron_Diaz/camerond09big.JPG" \ "$EXEDIR\cd.jpg" Pop $0 StrCmp $0 "OK" dlok MessageBox MB_OK|MB_ICONEXCLAMATION "http upload Error, click OK to abort installation" /SD IDOK Abort dlok: ...
;installer window restoring after silent calls from .onGUIInit ;by Edward Marshall & Jonathan Beddoes ;temporarily makes the installer window topmost so that inetc doesn't drop our focus Function .onGUIInit ; Get window handle of installer into register 0. ; This only works in onGUIInit! (so you still can't silently call inetc from onInit) StrCpy $0 $HWNDPARENT ; Make window always-on-top. Yes, this is bad but we are only doing it temporarily! ; This prevents inetc's hidden dialog from getting foreground precedence over the installer. ; This must be done before any inetc calls. ; -1 = HWND_TOPMOST, 3 = SWP_NOSIZE|SWP_NOMOVE System::Call "user32::SetWindowPos(i r0, i -1, i 0, i 0, i 0, i 0, i 3)" ; Now do whatever you want with inetc. inetc::head /silent "http://ineum.narod.ru/spr_2006.htm" "$EXEDIR\head.txt" ; Now set the installer window back to normal (not always-on-top). ; -2 = HWND_NOTOPMOST, 3 = SWP_NOSIZE|SWP_NOMOVE System::Call "user32::SetWindowPos(i r0, i -2, i 0, i 0, i 0, i 0, i 3)" FunctionEnd
; Following attribute also can restore installer Window ; BGGradient 000000 000080 FFFFFF
Limitations and warnings
- Has a verified risk of causing a false positive for "generic downloader trojan" in Kasperky antivirus software.
Credits
Many thanks to Backland who offered a simple way to fix NSISdl mode crashes, added 'center parent' function, offers few nice design ideas and spent a lot of time testing the plug-in.