/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package neembuu.uploader.uploaders;
import shashaank.smallmodule.SmallModule;
import neembuu.uploader.interfaces.Uploader;
import neembuu.uploader.interfaces.Account;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import neembuu.uploader.accounts.FileDenAccount;
import neembuu.uploader.exceptions.NUException;
import neembuu.uploader.exceptions.uploaders.NUFileExtensionException;
import neembuu.uploader.exceptions.uploaders.NUMaxFileSizeException;
import neembuu.uploader.httpclient.NUHttpClient;
import neembuu.uploader.httpclient.httprequest.NUHttpPost;
import neembuu.uploader.interfaces.UploadStatus;
import neembuu.uploader.interfaces.UploaderAccountNecessary;
import neembuu.uploader.interfaces.abstractimpl.AbstractUploader;
import neembuu.uploader.uploaders.common.FileUtils;
import neembuu.uploader.uploaders.common.StringUtils;
import neembuu.uploader.utils.NULogger;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.util.EntityUtils;
/**
*
* @author dinesh
*/
@SmallModule(
exports={FileDen.class,FileDenAccount.class},
interfaces={Uploader.class,Account.class},
name="FileDen.com"
)
public class FileDen extends AbstractUploader implements UploaderAccountNecessary {
FileDenAccount fileDenAccount = (FileDenAccount) getAccountsProvider().getAccount("FileDen.com");
private HttpClient httpclient = NUHttpClient.getHttpClient();
private HttpResponse httpResponse;
private NUHttpPost httpPost;
private String uploadresponse;
private String downloadlink;
private long fileSizeLimit = 1073741824; //1 GB
private ArrayList<String> disallowedExtensions = new ArrayList<String>();
public FileDen() {
host = "FileDen.com";
downURL = UploadStatus.PLEASEWAIT.getLocaleSpecificString();
delURL = UploadStatus.NA.getLocaleSpecificString();
//It has to be successful.. as it won't work without login
if (fileDenAccount.loginsuccessful) {
host = fileDenAccount.username + " | FileDen.com";
}
}
@Override
public void run() {
try {
if (fileDenAccount.loginsuccessful) {
host = fileDenAccount.username + " | FileDen.com";
} else {
host = "FileDen.com";
uploadInvalid();
return;
}
//Check size
if (file.length() > fileSizeLimit) {
throw new NUMaxFileSizeException(fileSizeLimit, file.getName(), fileDenAccount.getHOSTNAME());
}
addExtensions();
//Check extension
if(FileUtils.checkFileExtension(disallowedExtensions, file)){
throw new NUFileExtensionException(file.getName(), host);
}
//Disallowed File Types: html, htm, php, php3, phtml, htaccess, htpasswd, cgi, pl, asp, aspx, cfm, exe, ade, adp, bas, bat, chm, cmd, com, cpl, crt, hlp, hta, inf, ins, isp, jse, lnk, mdb, mde, msc, msi, msp, mst, pcd, pif, reg, scr, sct, shs, url, vbe, vbs, wsc, wsf, wsh, shb, js, vb, ws, mdt, mdw, mdz, shb, scf, pl, pm, dll
uploadInitialising();
httpPost = new NUHttpPost("http://www.fileden.com/upload_old.php");
httpPost.setHeader("Cookie", fileDenAccount.getCookies().toString());
MultipartEntity mpEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
mpEntity.addPart("Filename", new StringBody(file.getName()));
mpEntity.addPart("action", new StringBody("upload"));
mpEntity.addPart("upload_to", new StringBody(""));
mpEntity.addPart("overwrite_option", new StringBody("overwrite"));
mpEntity.addPart("thumbnail_size", new StringBody("small"));
mpEntity.addPart("create_img_tags", new StringBody("1"));
mpEntity.addPart("file0", createMonitoredFileBody());
httpPost.setEntity(mpEntity);
NULogger.getLogger().log(Level.INFO, "executing request {0}", httpPost.getRequestLine());
NULogger.getLogger().info("Now uploading your file into fileden");
uploading();
httpResponse = httpclient.execute(httpPost);
HttpEntity resEntity = httpResponse.getEntity();
NULogger.getLogger().info(httpResponse.getStatusLine().toString());
gettingLink();
if (resEntity != null) {
uploadresponse = EntityUtils.toString(resEntity);
}
//NULogger.getLogger().info(uploadresponse);
//FileUtils.saveInFile("FileDen.html", uploadresponse);
downloadlink = StringUtils.stringBetweenTwoStrings(uploadresponse, "'link':'", "'");
NULogger.getLogger().log(Level.INFO, "Download link : {0}", downloadlink);
downURL = downloadlink;
uploadFinished();
} catch(NUException ex){
ex.printError();
uploadInvalid();
} catch (Exception e) {
Logger.getLogger(FileDen.class.getName()).log(Level.SEVERE, null, e);
uploadFailed();
}
}
/**
* Add all the not allowed extensions.
*/
private void addExtensions(){
disallowedExtensions.add("html");
disallowedExtensions.add("htm");
disallowedExtensions.add("php");
disallowedExtensions.add("php3");
disallowedExtensions.add("phtml");
disallowedExtensions.add("htaccess");
disallowedExtensions.add("htpasswd");
disallowedExtensions.add("cgi");
disallowedExtensions.add("pl");
disallowedExtensions.add("asp");
disallowedExtensions.add("aspx");
disallowedExtensions.add("cfm");
disallowedExtensions.add("exe");
disallowedExtensions.add("ade");
disallowedExtensions.add("adp");
disallowedExtensions.add("bas");
disallowedExtensions.add("bat");
disallowedExtensions.add("chm");
disallowedExtensions.add("cmd");
disallowedExtensions.add("com");
disallowedExtensions.add("cpl");
disallowedExtensions.add("cpl");
disallowedExtensions.add("crt");
disallowedExtensions.add("hlp");
disallowedExtensions.add("hta");
disallowedExtensions.add("inf");
disallowedExtensions.add("ins");
disallowedExtensions.add("isp");
disallowedExtensions.add("jse");
disallowedExtensions.add("lnk");
disallowedExtensions.add("mdb");
disallowedExtensions.add("mde");
disallowedExtensions.add("msc");
disallowedExtensions.add("msi");
disallowedExtensions.add("msp");
disallowedExtensions.add("mst");
disallowedExtensions.add("pcd");
disallowedExtensions.add("pif");
disallowedExtensions.add("reg");
disallowedExtensions.add("scr");
disallowedExtensions.add("sct");
disallowedExtensions.add("shs");
disallowedExtensions.add("url");
disallowedExtensions.add("vbe");
disallowedExtensions.add("vbs");
disallowedExtensions.add("wsc");
disallowedExtensions.add("wsf");
disallowedExtensions.add("wsh");
disallowedExtensions.add("shb");
disallowedExtensions.add("js");
disallowedExtensions.add("vb");
disallowedExtensions.add("ws");
disallowedExtensions.add("mdt");
disallowedExtensions.add("mdw");
disallowedExtensions.add("mdz");
disallowedExtensions.add("shb");
disallowedExtensions.add("scf");
disallowedExtensions.add("pl");
disallowedExtensions.add("pm");
disallowedExtensions.add("dll");
}
}