# BML Proxy Docker

On April 1, 2022 BML enabled [Cloudflares Anti-bot](https://www.cloudflare.com/products/bot-management/) features and all the
 existing scripts to interact with BML API stopped working.
 This repo contains build files for a [proxy](https://git.shihaam.dev/shihaam/bml-proxy) to bypass anti-bot.

## Codebase repo:
- [https://git.shihaam.dev/shihaam/bml-proxy](https://git.shihaam.dev/shihaam/bml-proxy)

## Installation

1. [Install docker](https://docs.docker.com/engine/install/) `curl -fsSL https://get.docker.com | sudo sh`
2. Give yourself docker group and relogin.
`sudo usermod -aG docker $USER;sudo su - $USER`
3. Generate ssh key (if you havent already)
`ssh-keygen`
4. [Add your .pub key to my gitea server](https://git.shihaam.dev/user/settings/keys)
`cat ~/.ssh/id_*.pub`
5. Clone the repo `git clone git@git.shihaam.dev:shihaam/bml-proxy.git`
6. Go to cloned dir `cd bml-proxy`
7. Start the docker container `docker compose up -d`

## How to use
This docker image exposes a proxied BML API on localhost port 3030. Any and all requests to the BML API should instead be made to this proxy instead.

BML API URL = https://bankofmaldives.com.mv/internetbanking/api/ \
Docker Image URL = http://localhost:3030/api/

### Best practices on usage:
It is recommded that you use nginx reverse proxy and cloudflare proxy with this for security and compatability reasons
1. Install Nginx, Certbot, and Nginx Cerbot plugin `sudo apt install nginx python3-certbot python3-certbot-nginx` \
example nginx config: place this is in a file at "/etc/nginx/sites-enabled"
```nginx
server {
  server_name SUB.DOMAIN.COM;
  listen 80;
  location / {
    proxy_pass http://localhost:3030;
  }
}
```
2. Point your sub.doman.com to server IP (its important you disable cloudflare proxy)
3. Use certbot to get SSL `sudo certbot --nginx -d sub.domain.com`
4. Enable Cloudflare to fix encoding issue.
5. Use your programs to request to request to this proxy URL instead of BML URL

#### Example
You would normally hit the following URL to retrieve today's transactions:
```
https://www.bankofmaldives.com.mv/internetbanking/api/account/{BML_ACCOUNT_NUMBER}/history/today
```
With this Docker image you will use the following:
```
https://sub.domain.com/account/{BML_ACCOUNT_NUMBER}/history/today
```

## Disclaimer
This package is no way associated with [Bank of Maldives](https://www.bankofmaldives.com.mv/). 

I am not responsible for any losses incurred from the use of this package.

Use at your own risk.

