The World Hammer Ball (WHB) is the global governing body for Hammer Ball, and the Hammer Ball Association of India (HBAI) operates under WHB as its national affiliate. We are committed to developing and nurturing Hammer Ball as a recognized sport nationwide. We aim to build a strong sporting culture by organizing district, state, national, and international tournaments, providing training programs, and ensuring fair opportunities for all players.
A triangular zone where throwers deliver precise, strategic balls to hitters for scoring powerful runs.
Special corner boxes inside the pitch where skilled hitters position to strike and control the ball effectively.
Marked running paths between hitter zones where players quickly sprint to complete scoring runs after striking.
Fielders positioned smartly in home, inner, and outer fields to stop runs and create dismissals efficiently.
A specially crafted wooden bat designed to strike power shots with control, speed, and long-distance precision.
A double-layered, injury-safe ball (80–120g) built for grip, bounce, durability, and smooth controlled throwing action.
A standard-sized field with well-marked zones, visible boundaries, and structured sections to ensure fair gameplay.
A specialized area near home field where keepers protect, defend goals, and coordinate the team’s defensive strategy.
import librouteros api = librouteros.connect( host='192.168.88.1', username='admin', password='', port=8728, # default API port (plaintext) use_ssl=False ) resources = api(cmd='/system/resource/print') print(f"Board: {resources[0]['board-name']}") print(f"Uptime: {resources[0]['uptime']}") print(f"CPU Load: {resources[0]['cpu-load']}%")
import asyncio from librouteros import connect async def get_interfaces(): loop = asyncio.get_event_loop() api = await loop.run_in_executor(None, connect, '192.168.88.1', 'admin', '') result = await loop.run_in_executor(None, api, '/interface/print') return result
api(cmd='/queue/simple/add', name='client-limited', target='192.168.88.100/32', max_limit='5M/5M', comment='api-created') For production, always use SSL on port 8729.
api(cmd='/ip/dhcp-server/lease/add', address='192.168.88.50', mac_address='AA:BB:CC:DD:EE:FF', comment='printer-api') To verify:
print(f"Active connections: TCP={tcp_count}, UDP={udp_count}") Limit a client’s bandwidth via script.
import ssl ssl_context = ssl.create_default_context() api_ssl = librouteros.connect( host='192.168.88.1', username='admin', password='', port=8729, use_ssl=True, ssl_wrapper=ssl_context )
If you manage more than one MikroTik router, logging into WinBox or WebFig for every small change gets old fast. The MikroTik API lets you script configuration, gather data, and react to network events — all from your own code.
def toggle_rule(comment, enable=True): rule = api(cmd='/ip/firewall/filter/print', .proplist='.id', comment=comment) if rule: cmd = '/ip/firewall/filter/enable' if enable else '/ip/firewall/filter/disable' api(cmd, .id=rule[0]['.id']) print(f"Rule '{comment}' {'enabled' if enable else 'disabled'}") toggle_rule('block-torrent', enable=False) Example 4: Get Active Connections by Protocol Monitor live traffic from Python.
Try the examples above, then modify them to fit your network. Next week, I’ll cover for live graphing.
conns = api(cmd='/ip/firewall/connection/print') tcp_count = sum(1 for c in conns if c['protocol'] == 'tcp') udp_count = sum(1 for c in conns if c['protocol'] == 'udp')
Let me know in the comments. Want the code as a ready-to-use Python script? Download the gist here.
Board: RB750Gr3 Uptime: 3d5h12m CPU Load: 7% Automating DHCP reservations.
leases = api(cmd='/ip/dhcp-server/lease/print') for lease in leases: if lease['comment'] == 'printer-api': print(f"Lease: {lease['address']} -> {lease['mac-address']}") Toggle a rule by comment (safer than index).
import librouteros api = librouteros.connect( host='192.168.88.1', username='admin', password='', port=8728, # default API port (plaintext) use_ssl=False ) resources = api(cmd='/system/resource/print') print(f"Board: {resources[0]['board-name']}") print(f"Uptime: {resources[0]['uptime']}") print(f"CPU Load: {resources[0]['cpu-load']}%")
import asyncio from librouteros import connect async def get_interfaces(): loop = asyncio.get_event_loop() api = await loop.run_in_executor(None, connect, '192.168.88.1', 'admin', '') result = await loop.run_in_executor(None, api, '/interface/print') return result
api(cmd='/queue/simple/add', name='client-limited', target='192.168.88.100/32', max_limit='5M/5M', comment='api-created') For production, always use SSL on port 8729.
api(cmd='/ip/dhcp-server/lease/add', address='192.168.88.50', mac_address='AA:BB:CC:DD:EE:FF', comment='printer-api') To verify:
print(f"Active connections: TCP={tcp_count}, UDP={udp_count}") Limit a client’s bandwidth via script.
import ssl ssl_context = ssl.create_default_context() api_ssl = librouteros.connect( host='192.168.88.1', username='admin', password='', port=8729, use_ssl=True, ssl_wrapper=ssl_context )
If you manage more than one MikroTik router, logging into WinBox or WebFig for every small change gets old fast. The MikroTik API lets you script configuration, gather data, and react to network events — all from your own code.
def toggle_rule(comment, enable=True): rule = api(cmd='/ip/firewall/filter/print', .proplist='.id', comment=comment) if rule: cmd = '/ip/firewall/filter/enable' if enable else '/ip/firewall/filter/disable' api(cmd, .id=rule[0]['.id']) print(f"Rule '{comment}' {'enabled' if enable else 'disabled'}") toggle_rule('block-torrent', enable=False) Example 4: Get Active Connections by Protocol Monitor live traffic from Python.
Try the examples above, then modify them to fit your network. Next week, I’ll cover for live graphing.
conns = api(cmd='/ip/firewall/connection/print') tcp_count = sum(1 for c in conns if c['protocol'] == 'tcp') udp_count = sum(1 for c in conns if c['protocol'] == 'udp')
Let me know in the comments. Want the code as a ready-to-use Python script? Download the gist here.
Board: RB750Gr3 Uptime: 3d5h12m CPU Load: 7% Automating DHCP reservations.
leases = api(cmd='/ip/dhcp-server/lease/print') for lease in leases: if lease['comment'] == 'printer-api': print(f"Lease: {lease['address']} -> {lease['mac-address']}") Toggle a rule by comment (safer than index).
Delhi |
National Championships
VSMarch 15, 2024
|
Mumbai |
Bangalore |
State Championships
VSApril 20, 2024
|
Chennai |
Delhi |
State Finals
3 : 1Feb 28, 2024
|
Mumbai |
Bangalore |
District Finals
2 : 0Feb 20, 2024
|
Chennai |
HAMMER BALL ASSOCIATION OF INDIA IS GOING TO BE ADD A NEW CHAPTER IN November 2025. THAT IS 2ND JUNIOR NATIONAL (U-19) CHAMPIONSHIP 2025 TO BE HELD SO...
| Pos | State | P | W | L | PTS |
|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 | |
| 2 | 0 | 0 | 0 | 0 | |
| 3 | 0 | 0 | 0 | 0 | |
| 4 | 0 | 0 | 0 | 0 | |
| 5 | 0 | 0 | 0 | 0 | |
| 6 | 0 | 0 | 0 | 0 | |
| 7 | 0 | 0 | 0 | 0 | |
| 8 | 0 | 0 | 0 | 0 |