SELINUX homedir

Ingin upload file ke server linux, dan GAGAL. Error log httpd menjelaskan adanya ‘permission denied’ pada direktori upload tersebut. Salah satu penyebabnya adalah SELINUX.


PHP Warning: move_uploaded_file(/home/user/public_html/upload/photo/07314307016.jpg): failed to open stream: Permission denied in /home/...

Untuk membuka nya, beberapa langkah sebagai berikut:


# setsebool -P httpd_enable_homedirs 1
# chcon -t httpd_sys_rw_content_t /home/user/public_html/upload/photo -R

selanjutnya, upload file BERHASIL. 🙂

Categories: Linux

Slims Senayan: How to Install

February 23, 2017 Leave a comment

Slims, Senayan Library Management System adalah sebuah software untuk mengelola perpustakaan yang bersifat opensource dan dapat di download pada situsnya.

Sebenarnya software sudah cukup lama dipublikasikan, hanya saja saya tadi baru punya waktu untuk mencoba untuk mempelajarinya. Saat saya download, versi terakhir adalah Slims 7 dengan nama “Cendana”.

Langkah-langkah instalasi dengan platform Fedora 25 adalah sebagai berikut:

  1. Pastikan MySQL dan PHP5 sudah terinstal dengan baik
  2. Install php-mbstring dan php-gd
    # dnf install php-mbstring php-gd
  3. Create database dan user (contoh), dan beri grant
    mysql> CREATE DATABASE senayan;
    mysql> CREATE USER 'syn@localhost' IDENTIFIED BY 'syn123';
    mysql> GRANT SELECT,INSERT,DELETE,UPDATE on senayan.* to 'syn'@'localhost';
  4. Generate struktur database
    # mysql -u root < senayan.sql
  5. Download slims7_xxxx, kemudian ekstrak ke direktori web, contoh /var/www/html
  6. Agar memudahkan, renama nama direktori yang panjang menjadi simple, misal slims7
    # tar xvfz slims7-cendana-stable-update2.tar.gz
  7. copy sysconfig file
    # cp sysconfig.local.inc-sample.php sysconfig.local.inc.php
  8. Edit sysconfig file, nama database, nama user, password
    # nano sysconfig.local.inc.php
    // database constant
    // change below setting according to your database configuration
    define('DB_NAME', 'senayan');
    define('DB_USERNAME', 'syn');
    define('DB_PASSWORD', 'syn123');
    
  9. Setting SELINUX
    # semanage fcontext -a -t httpd_sys_rw_content_t 'sysconfig.local.inc.php' 
    # restorecon -v 'sysconfig.local.inc.php'
    # ausearch -c 'systemd' --raw | audit2allow -M my-systemd
    # semodule -X 300 -i my-systemd.pp
    # setsebool -P httpd_unified 1
  10. Setting Direktori untuk upload
    # chmod 775 -Rf files
    # chmod 775 -Rf images
    # chmod 775 -Rf repository
    
    # chown user:apache -Rf files
    # chown user:apache -Rf images
    # chown user:apache -Rf repository
    

Akses via browser http://server/slims7/install/install.php, dan ikuti langkahnya.
creeeenggg… sukses..

screenshot-from-2017-02-23-16-46-02

Categories: Uncategorized

Formatting jTable

January 17, 2017 Leave a comment

memformat jTable cukup mudah dengan menggunakan DefaultTableCellRenderer. Berikut sebagai contoh:

    public int irow=2;
    
    private void inisiasiTable() {   
        
        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {"John", "20000", "1000"},
                {"David", "30000", "2000"},
                {"Shania", "40000", "3000"}
            },
            new String [] {
                "Name", "Salary", "Bonus"
            }
        ));
        
        jTable1.setRowHeight(50);
        jTable1.setDefaultRenderer(Object.class, new CustomCellRenderer() );
    }  
    
    public class CustomCellRenderer extends DefaultTableCellRenderer {
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            JLabel l = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            if (row==irow) {
                l.setBackground(Color.yellow);
                if(column==0) {
                    l.setHorizontalAlignment(CENTER);
                    l.setFont(new Font(null, Font.PLAIN, 23));                    
                } else {                    
                    l.setHorizontalAlignment(RIGHT);
                    l.setText(String.format("%,d", Integer.parseInt(value.toString())));
                }
            } else {
                if (column==2 || column==1) {
                    if(Integer.parseInt(value.toString())<3000) {
                        l.setBackground(Color.red);
                    }
                    l.setHorizontalAlignment(RIGHT);
                    l.setText(String.format("%,d", Integer.parseInt(value.toString())));
                } else {
                    l.setHorizontalAlignment(CENTER);
                    l.setFont(new Font(null, Font.PLAIN, 23));
                    l.setBackground(null);
                }
            }
            if(hasFocus) {
                l.setBackground(Color.orange);
            }
            if(isSelected) {
                l.setBackground(Color.PINK);
            }
            
            return l;
        }
    }

Hasilnya kurang lebih seperti ini:

screenshot-from-2017-01-17-12-52-23

Categories: Uncategorized

.htaccess

January 11, 2017 Leave a comment

Ada pertanyaan dari mahasiswa tentang bagaimana men-setting agar sebuah directory tidak dilakukan directory listing oleh httpd.

Sebenarnya banyak cara untuk melakukan itu. Namun yang paling mudah adalah menggunakan .htaccess file.

Sebagai contoh, misal sebuah directory /home/user/public_html/upload menyimpan banyak file .jpg dan .zip, kemudian akan di-disable dari directory listing, maka kita cukup membuat sebuah file .htaccess yang ditempatkan pada directory upload.

gunakan text-editor, dan tambahkan sebuah line:

IndexIgnore *.zip *.jpg 

restart httpd.
done! 🙂

Categories: Uncategorized

Switch php7 to php5

December 19, 2016 Leave a comment

beberapa hari lalu saya upgrade ke fedora 25. lancar, dan cantik. namun, coding aplikasi saya yang menggunakan php hampir semuanya tidak bisa berjalan. wah… kacau nihh.., setelah di teliti, ternyata fedora 25 menggunakan php versi 7 (php7) sebagai paket defaultnya dan menghapus php versi 5.6 (php56) sebelumnya.

memang banyak sekali perbedaan php7 vs php sebelumnya. untuk sementara, daripada menghabiskan waktu mengatasi perbedaan tersebut, saya melakukan switch ke php5.

beberapa langkah yang dilakukan adalah sebagai berikut:

  1. install repositori yang menyimpan php5
    # dnf install  http://rpms.remirepo.net/fedora/remi-release-23.rpm
  2. edit agar repositori tersebut enable
    # nano /etc/yum.repos.d/remi.repo
  3. install php5
    # dnf install php56-php php56-php-mysqlnd
    
  4. switch ke php5
    # update-alternatives --set php /usr/bin/php5.6
    
  5. restart apache
    # service httpd restart
    

dan… aplikasi kembali works! 🙂

Categories: Uncategorized

FC23: Install Laravel

November 7, 2016 Leave a comment

Laravel suatu framework web development yang cukup populer. Berikut ini adalah langkah-langkah dalam instalasi laravel di fedora 23.

1. Install Composer

# dnf install composer

2. Install Laravel

$ composer global require "laravel/installer=~1.1"

3. Setting PATH, edit di /home/user/.bashrc (tambahkan)

COMPOSER_PATH=~/.config/composer/vendor/bin
PATH=$COMPOSER_PATH:$PATH
export PATH

4. Create sebuah Laravel Project (contoh di direktori web berikut)

$ laravel new /home/user/public_html/web

5. Setting Apache httpd berikut, kemudian restart Apache

<VirtualHost *:80>
    ServerAdmin eddys2007@yahoo.com
    DocumentRoot /home/user/public_html/web/public
    ServerName www.yellow-highlight.com
    <Directory /home/user/public_html/web/public>
       AllowOverride ALL
       <IfModule mod_rewrite.c>
          Options -MultiViews
          RewriteEngine On
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteRule ^ index.php [L]
       </IfModule>
    </Directory>
</VirtualHost>

6. Rubah permission untuk direktori storage

$ chmod -R 775 /home/user/public_html/web/storage
# chcon -R -t httpd_sys_rw_content_t storage

Woaaa, logo Laravel akan muncul… 🙂

Categories: Linux

Get JSON data using Java

September 30, 2016 Leave a comment

Mengambil data JSON menggunakan Java juga mudah. Dengan library json-simple.jar yang dapat di download pada situsnya memudahkan untuk meng-ekstrak data. Berikut adalah contoh:

Data asal:

{"student":[
  {"id":"1401010002","name":"DWI LESTARI"},
  {"id":"1401010003","name":"YOANITA YELIANE"}
]} 

Contoh java code:

 
  inputstream = makeHttpGetRequest("http://123.12.13.14/test.php", null);
  scanner = new Scanner(inputstream).useDelimiter("##"); 
  String line = scanner.next();	
  parsejson(line); 

  JSONParser parser = new JSONParser();
  try {
      Object obj = parser.parse(str);
      JSONObject jsonObject = (JSONObject) obj;
      JSONArray arr = (JSONArray) jsonObject.get("student");
      Iterator iterator = arr.iterator();
		while (iterator.hasNext()) {
		    Object objArrayData = iterator.next();
		    System.out.println(objArrayData);
		    
		    Object obj1 = parser.parse(objArrayData.toString());
		    JSONObject jsonObject1 = (JSONObject) obj1;
		    String strId = (String) jsonObject1.get("id");
		    String strName = (String) jsonObject1.get("name");
		    System.out.println(strId, " ", strName);
		}
  } catch (ParseException ex) {
    Logger.getLogger(Osissync.class.getName()).log(Level.SEVERE, null, ex);
  }

hasilnya ada sebagai berikut:

1401010002  DWI LESTARI
1401010003  YOANITA YELIANE
Categories: Uncategorized