May 092016
 

Upload FIle with delphi and php

Assalamu’ alaikum wr wb

Upload File

Sekarang kita akan membahas sedikit aplikasi kecil untuk proses upload file dengan menggunakan delphi 7 sebagai client side nya dan php sebagai server side nya.

langsung saja buat form seperti pada gambar di atas.

lalu tulis stricpt di bawah ini :


unit UploadFile;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdMultipartFormData, IdHTTP, HTTPApp, ExtCtrls,
OleCtrls, SHDocVw;

type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Panel1: TPanel;
Button2: TButton;
Button1: TButton;
Edit1: TEdit;
WebBrowser1: TWebBrowser;
ComboBox1: TComboBox;
Edit2: TEdit;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit1.Text := OpenDialog1.FileName;
//OpenDialog1.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TStringStream;
Params: TIdMultipartFormDataStream;
HTTP: TIdHTTP;
url : String;
begin
{
Gambar
Excel
Word
Pdf
Other
}
Case ComboBox1.ItemIndex Of
0 : Begin
url := 'images';
end;
1 : begin
url := 'xls';
end;
2 : begin
url := 'doc';
end;
3 : begin
url := 'pdf';
end;
4 : begin
url := 'other';
end;
end;
Stream := TStringStream.Create('');
try
Params := TIdMultipartFormDataStream.Create;
try
Params.AddFile('fileToUpload', Edit1.Text ,'application/octet-stream');
try
HTTP := TIdHTTP.Create(Self);
HTTP.Post(Edit2.Text + '/upload_' + url + '.php', Params, Stream);
WebBrowser1.Navigate(Edit2.Text + '/upload-' + url);
//WebBrowser1.Refresh;
except
on E: Exception do
ShowMessage('Error encountered during POST: ' + E.Message);
end;
ShowMessage(Stream.DataString);
finally
Params.Free;
end;
finally
Stream.Free;
HTTP.Destroy;
end;
end;

end.

Lalu buat program di sisi server untuk menerima file yang di upload oleh delphi.

berikut source codenya :


<?php
$target_dir = "upload-other/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if(file_exists($target_file)) {
unlink( $target_file);
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
} else {

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>

simpan dengan nama : upload.php

Wassalamu’alaikum wr wb

Feb 202016
 

Preventing DDOS attack from csf firewall.

First make sure DDOS attack is not from open recursive DNS settings. To check and fix that issue please read this article – Preventing DDOS aplification open resolver attack

This article is to set CSF firewall so that any DDOS intentional attack to your server can be prevented.

 

Step 1: open and edit CSF config file. 

vi /etc/csf/csf.conf

 

Settings: 

Enable connection tracking.
CT_LIMIT is max number of connection allowed from one IP, you can set this value as per your server requirement.

CT_LIMIT =100

Set connection tracking interval.

CT_INTERVAL =30

If you want to get possible ddos attack email then enable it.

CT_EMAIL_ALERT =1

If you want to make IP blocks permanent then set this to 1, otherwise blocks
will be temporary and will be cleared after CT_BLOCK_TIME seconds

CT_PERMANENT = 1

If you opt for temporary IP blocks for CT, then the following is the interval
in seconds that the IP will remained blocked for (e.g. 1800 = 30 mins)

CT_BLOCK_TIME = 1800

If you only want to count specific ports (e.g. 80,443) then add the ports
to the following as a comma separated list. E.g. “80,443”

CT_PORTS = 80,23,443

 

These settings will be enough for DDOS attacks but if you are getting more attacks even you have above option configured then we can set few more options.

 

Step 2: Enable distributed attacks

LF_DISTATTACK = 1  

Set the following to the minimum number of unique IP addresses that trigger
LF_DISTATTACK

LF_DISTATTACK_UNIQ = 2

 

Step 3: Enable distributed FTP attacks

LF_DISTFTP = 1

 

Set the following to the minimum number of unique IP addresses that trigger
LF_DISTFTP. LF_DISTFTP_UNIQ must be <= LF_DISTFTP for this to work

LF_DISTFTP_UNIQ = 3

 

If this option is set to 1 the blocks will be permanent
If this option is > 1, the blocks will be temporary for the specified number
of seconds

LF_DISTFTP_PERM =1

 

Step 4: Enable distributed SMTP attacks.

 

LF_DISTSMTP =1

 

Set the following to the minimum number of unique IP addresses that trigger
LF_DISTSMTP. LF_DISTSMTP_UNIQ must be <= LF_DISTSMTP for this to work

LF_DISTSMTP_UNIQ =4

 

If this option is set to 1 the blocks will be permanent
If this option is > 1, the blocks will be temporary for the specified number
of seconds

LF_DISTSMTP_PERM =1

 

This is the interval during which a distributed FTP or SMTP attack is
measured

LF_DIST_INTERVAL = 300

Sumber : http://anandarajpandey.com/2014/04/21/how-to-prevent-ddos-attack-by-csf-firewall/
Feb 142016
 

php convert base64 to image

Assalamu’alaikum wr wb

Bagaimana cara convert base64 menjadi file gambar, itu yang sering saya pikirkan beberapa hari ini. berikut akan saya bagikan cara convert dengan menggunakan php.

function base64_to_jpeg($base64_string, $output_file) {
        $ifp = fopen($output_file, "wb");
        $data = explode(',', $base64_string);
        if(count($data)>0){
            fwrite($ifp, base64_decode($data[1]));
        }else{
            fwrite($ifp, base64_decode($data[0]));
        }
        fclose($ifp);
        return $output_file;
}

Itu source yang bisa dipakai untuk menggunakannya seperti contoh di abah ini

base64_to_jpeg($_POST[‘string_base64’], ‘file.jpg’ )

Silakan dimanfaatkan sesuai dengan kebutuhan, semoga membantu.

Wassalamu’alaikum wr wb

Jan 292016
 

Install rsync in windows

Assalamu’ alaikum wr wb

Rsync digunakan dalam beberapa kasus semisal backup atau syncron data, kalau di linux secara default rsync sudah terinstall nah bagaimana caranya kalo kita menggunakan windows ?

Pada Windows kita bisa menggunakan plugin pihak ke 3 atau program tambahan. Saya mengunakan cwRsync yang dapat di download di websitenya langsung.

Untuk penggunaan rsync sendiri dapat cari dari mbah google.

Berikut link untuk download nya

http://www.rsync.net/resources/binaries/cwRsync_5.4.1_x86_Free.zip

Cara menggunakannya extrack hasil download

Masukkan path ke Environment Variabel, segingga dapat langsung di panggil dalam command promp.

Semoga membantu

Wassalamu’alaikum wr wb

Jan 252016
 

Create MID function in PotsgreSQL

Assalamu’ alaikum wr wb

Kita telah banyak mengenal fungsi – fungsi untuk memecahkan sebuah string, mulai dari left, right, substring. Fungsi yang akan kita buat sekarang terinspirasi dari fungsi yang ada pada microsoft Excel yaitu mid yang digunakan untuk mengambil char dari sebuah string yang lokasinya bisa kita tentukan termasuk juga jumlah char yang akan di ambil.

Pada PostgreSQL belum ada jadi kita akan membuatnya. berikut adalah source nya :


CREATE OR REPLACE FUNCTION mid(kata character varying, mulai integer, panjang integer)
RETURNS character varying AS
$BODY$

BEGIN

RETURN cast ( right(left(kata,mulai-1+panjang) , panjang) as varchar );

END;

$BODY$
LANGUAGE plpgsql VOLATILE
COST 1;
ALTER FUNCTION mid(character varying, integer, integer)
OWNER TO postgres;

Cara penggunaan source diatas cukup dengan memanggilnya dengan cara  sebagai berikut

select mid(‘12345678’,2,2)

Script diatas akan mengambil baris ke 2 dari 12345678 dan mengambil 2 char selanjutnya.

Maka Outputnya adalah sebagai berikut

23

Semoga dapat menambah wawasan teman – teman semua.

Wassalamu’ alaikum wr wb

Jan 222016
 

How To get DataBase Size (PostgreSQL)

Assalamu’alaikum wr wb

Terkadang kita ingin mengecek berapa besarkan ukuran db kita sekarang, berikut adalah script sederhana untuk dapat mengambil ukuran db dengan  mengunakan SQL.


-- Database Size
SELECT pg_size_pretty(pg_database_size('nmdb'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('nmdb.schema.tabel'));

itu dulu bagi – baginya nanti lanjur lagi semoga membantu

Wassalamu’alaikum wr wb

Jan 222016
 

Text Event Focus AngularJs

Assalamu’alaikum wr wb

Setelah beberapa saat tidak menulis artikel dan kemaren sekedar copas dari website lain, kali ini saya akan berbagi tutorial tentang AngularJs, Bagaimana cara membuat directive pada angularjs yang tujuannya saat kita menekan tombol pada keybord akan membuat text langsung berpindah ke text selanjutnya.

Biasanya perintah ini kalau dalam pemrograman visual kita akan menambahkan event onKeyPress pada object textbox, sekarang kita akan membuat sebuah Text Object pada input text.

Berikut adalah source yang dapat kita pakai.

var doeventInput = angular.module('deFocus', []);
doeventInput.directive('deFocus', function () {
 return {
 restrict: 'A',
 link: function(scope, elem, attrs) {
 var frm = angular.element('.form-horizontal');
 elem.bind('keyup', function (e) {
 var atoms = frm.find('input, select');
 toAtom = null;
 for (var i = atoms.length - 1; i &gt;= 0; i--) {
 if (atoms[i] === e.target) {
 //console.log(elem[0].localName);

 if (e.keyCode === 38 &amp;&amp; elem[0].localName != 'select') {
 toAtom = atoms[i - 1];
 break;
 /*} else if (e.keyCode === 40 &amp;&amp; elem[0].localName != 'select') {
 toAtom = atoms[i + 1];
 break;*/
 } else if (e.keyCode === 13) { //Enter
 toAtom = atoms[i + 1];
 break;
 } /*else if (e.keyCode === 9) { //Tab
 toAtom = atoms[i + 1];
 break;
 }*/
 }
 }

 if (toAtom) toAtom.focus();
 return false;
 
 });
 }
 }
});

Untuk penggunaaannay yang pertama tambahkan source dalam app kamu

var app = angular.module(‘NamaApp’,[‘deFocus’]);

Untuk menggunakan dalam object input text dapat melihat contoh

<input de-focus required type=”text”   ng-model=”model”>

Selamat mencoba

Wassalamu’alaikum wr wb

Jan 202016
 

VBA Code To Unlock A Locked Excel Sheet

Assalamu’alaikum wr wb

Lama tidak menulis jadi agak bingung mau mulai dari mana, baiklah sekedar informasi saja, buat semua teman – teman yang mungkin membutuhkan source untuk unlock sheet excel kamu bisa menggunakan script yang ada di bawah ini

Sub PasswordBreaker()
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126

ActiveSheet.Unprotect Chr(i) &amp; Chr(j) &amp; Chr(k) &amp; _
Chr(l) &amp; Chr(m) &amp; Chr(i1) &amp; Chr(i2) &amp; Chr(i3) &amp; _
Chr(i4) &amp; Chr(i5) &amp; Chr(i6) &amp; Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One usable password is " &amp; Chr(i) &amp; Chr(j) &amp; _
Chr(k) &amp; Chr(l) &amp; Chr(m) &amp; Chr(i1) &amp; Chr(i2) &amp; _
Chr(i3) &amp; Chr(i4) &amp; Chr(i5) &amp; Chr(i6) &amp; Chr(n)
ActiveWorkbook.Sheets(1).Select
Range("a1").FormulaR1C1 = Chr(i) &amp; Chr(j) &amp; _
Chr(k) &amp; Chr(l) &amp; Chr(m) &amp; Chr(i1) &amp; Chr(i2) &amp; _
Chr(i3) &amp; Chr(i4) &amp; Chr(i5) &amp; Chr(i6) &amp; Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub

Source di atas hanya untuk unlock sheet bukan untuk unlock excelnya ya.

Source menggunakan baha VB jadi yang biasa pakai VB pasti paham deh, semoga membantu

Sumber  : http://www.theofficeexperts.com/VBASamples/Excel02.htm

Wassalamu’alaikum wr wb

Apr 302015
 

Multi Application on Codeigniter

Assalamu’ alaikum wr wb

Kabar gembira dari codeigniter versi 3 yang ada versi terdahulu kita agak kerepotan saat ingin membuat aplikasi yang membutuhkan beberapa plikasi didalanya kita harus membuat beberpa sub aplikasi yang mungkin akan membuat kita sedikit repot seperti yang pernah saya bahas Multi app with CodeIgniter. Pada codeigniter versi 3 telah menyediakan kemudahan yaitu dengan memperbolehkan kota untuk mebuat subfolder dalam controller.

contoh

application/controllers/subfolder/Namacontroller.php

maka kita dapat memanggilnya dengan

http://webserver/index.php/subfolder/namacontroller/function

Bagaiaman lebih mudah kan. selamat berexploreasi

sumber : Codeigniter [Organizing Your Controllers into Sub-directories]

Wassalamu’alaikum wr wb