Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
359 commits
Select commit Hold shift + click to select a range
656e3a3
Added complete archival logic for pending transactions
PythonHacker24 Jun 5, 2025
2ee72b5
Fixed variable name (temporary)
PythonHacker24 Jun 5, 2025
23a9a0c
Updated config.yaml for PQ
PythonHacker24 Jun 5, 2025
789b498
Updated auth comments for session addition
PythonHacker24 Jun 6, 2025
b3a9840
Added Del in Redis module
PythonHacker24 Jun 6, 2025
ed70708
Successfulyl implemented Redis session deletion for Expire Key
PythonHacker24 Jun 6, 2025
666626c
Fixed Deadlock code in complete Redis and tested
PythonHacker24 Jun 6, 2025
163fe5f
Added GetAllUsernames for cleanup in main
PythonHacker24 Jun 6, 2025
91aebda
Added dummy processing for testing
PythonHacker24 Jun 6, 2025
34068db
Updated config.yaml for test setup
PythonHacker24 Jun 6, 2025
17908f5
Updated and tested docker-compose
PythonHacker24 Jun 6, 2025
7398344
Completed complete clean up logic - deleting session from Redis and U…
PythonHacker24 Jun 6, 2025
b0efdeb
Added testing script for login and create transaction
PythonHacker24 Jun 7, 2025
6e3a5b7
Updated for max_workers
PythonHacker24 Jun 7, 2025
f7ac5a3
Added Request body for transaction scheduling
PythonHacker24 Jun 7, 2025
7e3ef1c
Create token module for JWT handling
PythonHacker24 Jun 7, 2025
1575c08
Fixed deadlocks in redis.go
PythonHacker24 Jun 7, 2025
db85759
Fixed uuid datatype
PythonHacker24 Jun 7, 2025
dba6504
Fixed interact for Redis and PQ functionality
PythonHacker24 Jun 7, 2025
024075e
Implemented transaction scheduling handler
PythonHacker24 Jun 7, 2025
bcb031c
Fixed string type in dbconv
PythonHacker24 Jun 7, 2025
177a285
Updated fcfs scheduler
PythonHacker24 Jun 7, 2025
dfd2ff2
Added flush command for Redis
PythonHacker24 Jun 7, 2025
2357c24
Updated for token module
PythonHacker24 Jun 7, 2025
c15237d
Fixed auth by creating seperate token module (dependency cycle)
PythonHacker24 Jun 7, 2025
464f5a0
Updated main.go for archival support and expiry
PythonHacker24 Jun 7, 2025
f30344c
Added transaction scheduling route
PythonHacker24 Jun 7, 2025
5018f51
updated middleware for username context passing to handlers
PythonHacker24 Jun 7, 2025
51cb16f
Updated schema for status
PythonHacker24 Jun 9, 2025
ac03fd7
sqlc generate output
PythonHacker24 Jun 9, 2025
621ef77
Added checks for invalid types
PythonHacker24 Jun 9, 2025
22cd1cc
Updated debug prints
PythonHacker24 Jun 9, 2025
5d78245
Updated middleware for username and session ID as context parameters
PythonHacker24 Jun 9, 2025
6b9cf46
Updated contextKey type declarations
PythonHacker24 Jun 9, 2025
d137564
Create error channel for session manager and processor with graceful …
PythonHacker24 Jun 9, 2025
7054a2b
Updated aith for token module updates
PythonHacker24 Jun 9, 2025
070e3f2
Updaed handler to get UUID from middleware
PythonHacker24 Jun 9, 2025
dee18d7
Adding session ID (UUID as string) parameter in JWT token
PythonHacker24 Jun 9, 2025
b67c0b9
Updated error channel
PythonHacker24 Jun 9, 2025
5c39313
Updated for error channel
PythonHacker24 Jun 9, 2025
df83834
Updated for changes in context data
PythonHacker24 Jun 9, 2025
7d4612b
Updated for status
PythonHacker24 Jun 9, 2025
326128c
Updated handler for future work on getting sessions and transactions …
PythonHacker24 Jun 9, 2025
387f26e
Updated session creation to return UUID for JWT creation
PythonHacker24 Jun 9, 2025
959239b
New Manager now support error channel
PythonHacker24 Jun 9, 2025
ba70c0a
Removed unnecessary code for Redis
PythonHacker24 Jun 9, 2025
56e3aef
Updated sheduler code error channel
PythonHacker24 Jun 9, 2025
f59275e
Fixed spelling error
PythonHacker24 Jun 9, 2025
20674c9
Fixed spelling error
PythonHacker24 Jun 9, 2025
070c12c
Fixed FSFS comments
PythonHacker24 Jun 9, 2025
1018812
Updated for gorilla websockets
PythonHacker24 Jun 11, 2025
2020e31
Updated for gorilla websocket
PythonHacker24 Jun 11, 2025
6f64d0c
Implemented websocket command handling - clients can send commands to…
PythonHacker24 Jun 11, 2025
571aa8e
Removed thread safety guard since it's not needed
PythonHacker24 Jun 11, 2025
c9decb1
Updated StreamMessage struct
PythonHacker24 Jun 11, 2025
4658d81
Added socket upgrader to manager for upgrading sockets connection
PythonHacker24 Jun 11, 2025
228384f
Worked on setting up user session and user transactions streaming
PythonHacker24 Jun 11, 2025
c674aa0
Added echo of token to copy JWT
PythonHacker24 Jun 11, 2025
40972ec
Created complete Redis hash to websocket message compliant function
PythonHacker24 Jun 11, 2025
28c9d7b
Completed stream_user.go for basic websocket streaming
PythonHacker24 Jun 11, 2025
8a20cd3
Updated web socket commands
PythonHacker24 Jun 11, 2025
ade9353
Updated websocket streaming stuct
PythonHacker24 Jun 11, 2025
098803e
Improved custom upgrader (allows all for now)
PythonHacker24 Jun 11, 2025
a808825
Removed dashboard view
PythonHacker24 Jun 11, 2025
5e1c5eb
Worked on handler for session
PythonHacker24 Jun 11, 2025
ab02d5d
Updated Redis module for subscribe and hast get all
PythonHacker24 Jun 11, 2025
eb47794
Updated routes for user session streaming
PythonHacker24 Jun 11, 2025
e48f9ff
Added the transaction streaming route
PythonHacker24 Jun 12, 2025
6ed7dba
go.mod for ws_test
PythonHacker24 Jun 12, 2025
b9ea55b
Added ws_test for websocket testing with commands support
PythonHacker24 Jun 12, 2025
62798f9
Completed Transactions streaming
PythonHacker24 Jun 12, 2025
ad8e979
Added model for trasnactions streaming
PythonHacker24 Jun 12, 2025
c4478fa
Added case for websocket command handling
PythonHacker24 Jun 12, 2025
6c78337
Added transactions streaming functions - tested completely
PythonHacker24 Jun 12, 2025
8a85364
Added transaction stream data builder
PythonHacker24 Jun 12, 2025
66dd489
Added a test portion for gRPC testing
PythonHacker24 Jun 30, 2025
407b071
Created function to create client pool
PythonHacker24 Jun 30, 2025
d319141
Monitor gRPC pool of connection to daemon
PythonHacker24 Jun 30, 2025
3fdd3ac
Model for gRPC pool for daemon connection
PythonHacker24 Jun 30, 2025
39e5664
Updated for transaction struct
PythonHacker24 Jun 30, 2025
1e2fddf
Updated for transaction struct
PythonHacker24 Jun 30, 2025
3f83815
Updated transactions type
PythonHacker24 Jun 30, 2025
3d3c597
Updated for transaction structure
PythonHacker24 Jun 30, 2025
2fae117
Commented out admin streaming
PythonHacker24 Jun 30, 2025
a707415
Updated users streaming
PythonHacker24 Jun 30, 2025
7895672
Updated transaction entry
PythonHacker24 Jun 30, 2025
a60841a
Utils updated for max age
PythonHacker24 Jun 30, 2025
0d4a23a
Updated README.md
PythonHacker24 Jun 30, 2025
fb1343e
Updated mod and sum
PythonHacker24 Jun 30, 2025
8ddacdd
Added proto files as per daemons
PythonHacker24 Jun 30, 2025
5586120
Generated proto
PythonHacker24 Jun 30, 2025
e6af242
Added gRPC pools to permProcessor
PythonHacker24 Jul 2, 2025
b55c02d
Implemented transaction execution via remote daemons on fcfs
PythonHacker24 Jul 2, 2025
c367b53
Added function to find file server from given filepath
PythonHacker24 Jul 2, 2025
f88643a
Changed transaction value passing to referencing
PythonHacker24 Jul 2, 2025
8b1282e
Modified to store pending transactions in txpending
PythonHacker24 Jul 2, 2025
0cc282f
Made it to store pending and results into different lists in Redis
PythonHacker24 Jul 2, 2025
6729300
Updated test.sh script
PythonHacker24 Jul 2, 2025
91b4313
Updated for file system and search base
PythonHacker24 Jul 2, 2025
fefd5aa
Search base upated with remote server
PythonHacker24 Jul 2, 2025
0e3d43a
Removed multiple ACL changes and added success param
PythonHacker24 Jul 2, 2025
44b4786
Find file server with path
PythonHacker24 Jul 2, 2025
d0abc42
Added remote transaction execution
PythonHacker24 Jul 2, 2025
0ef23b6
Now uses reference to transaction than value passing
PythonHacker24 Jul 2, 2025
64bb742
Updated to remotely execute transactions
PythonHacker24 Jul 2, 2025
f23a4fb
Added place for gRPC pool to handle all over the processor
PythonHacker24 Jul 2, 2025
e9c53c6
Added local transaction execution for BeeGFS like systems
PythonHacker24 Jul 3, 2025
6d9de21
Added local transaction handling into perm-processor
PythonHacker24 Jul 3, 2025
1f3b55c
Added a not
PythonHacker24 Jul 3, 2025
807986b
Updated gitignore
PythonHacker24 Jul 3, 2025
300d704
Added BeeGFS Docker Compose (not tested yet)
PythonHacker24 Jul 3, 2025
18ea894
Fixed error returning in clientpool.go
PythonHacker24 Jul 8, 2025
2c59089
Updated AddTransaction
PythonHacker24 Jul 8, 2025
9fb4492
Added localtxn and fixed it's imports
PythonHacker24 Jul 8, 2025
1500ee8
Updated the control flow for logging and context
PythonHacker24 Jul 8, 2025
7fe474c
Updated pending_transactions sql structure
PythonHacker24 Jul 8, 2025
502c8ed
Updated results_transactions sql structure
PythonHacker24 Jul 8, 2025
3136c8e
Removed unified transactions for splitting them (for reloading pendin…
PythonHacker24 Jul 8, 2025
d50d4ad
Updated schema for pending and transactions results
PythonHacker24 Jul 8, 2025
80eb995
Added logs volume for docker compose
PythonHacker24 Jul 8, 2025
e6781f3
Updated some notes here
PythonHacker24 Jul 8, 2025
d4bbabf
Added some notes here
PythonHacker24 Jul 8, 2025
3e7dc51
Created txn redis for functions related to transactions for Redis
PythonHacker24 Jul 8, 2025
70733dd
session redis seperated from normal redis for session related functions
PythonHacker24 Jul 8, 2025
5acd9ce
Removed unified redis functions for clarity
PythonHacker24 Jul 8, 2025
4143d0c
Updated interaction with transactions for expiry and more!
PythonHacker24 Jul 8, 2025
3e72b79
Updated dbconv for new pending and results schema
PythonHacker24 Jul 8, 2025
b56326f
Updated to adhere new Redis schema
PythonHacker24 Jul 8, 2025
774ce3c
HDel function added
PythonHacker24 Jul 8, 2025
7fcbba7
Removed unified transactions sql
PythonHacker24 Jul 8, 2025
a4b3d5c
Updated sql models
PythonHacker24 Jul 8, 2025
5ad492c
Updated with sqlc for new postgresql schema
PythonHacker24 Jul 8, 2025
7536d9e
sqlc generated for new schema
PythonHacker24 Jul 9, 2025
fff908d
schema.sql updated ExecStatus
PythonHacker24 Jul 9, 2025
ecf71fc
sqlc generated code for new schema
PythonHacker24 Jul 9, 2025
838edb0
Added HIncrBy()
PythonHacker24 Jul 9, 2025
4ab6498
Updated code for updating status of the session in Redis and session …
PythonHacker24 Jul 9, 2025
8e3ebea
Updated for testing
PythonHacker24 Jul 9, 2025
a38c4e9
Updated for NFS mounting
PythonHacker24 Jul 9, 2025
6bd1909
Updated for acl downloads
PythonHacker24 Jul 9, 2025
84a61bf
Updated for storing transactions in list
PythonHacker24 Jul 9, 2025
ced7719
Updated functions for incrementing completed and failed transactions …
PythonHacker24 Jul 9, 2025
dc1fb53
Updated dbconv.go for ExecStatus
PythonHacker24 Jul 9, 2025
59e68fa
Added tarballs for amd/arm64 systems
PythonHacker24 Jul 12, 2025
06562f0
Added duration for transactions
PythonHacker24 Jul 12, 2025
32c6ed4
Added vendor dependencies for no-internet builds
PythonHacker24 Jul 12, 2025
83643bf
Updated Makefile for new building for tarballs and bins
PythonHacker24 Jul 12, 2025
59d7b41
Updated go.mod and go.sum
PythonHacker24 Jul 12, 2025
4d04a77
Updated .gitignore
PythonHacker24 Jul 12, 2025
25939f1
Uploaded binaries for Linux builds
PythonHacker24 Jul 12, 2025
9737139
Updated routes for archive session
PythonHacker24 Jul 23, 2025
b94e6f9
Uploaded updates binaries
PythonHacker24 Jul 23, 2025
ad8b6da
Replaced old tarballs with no Xattrs
PythonHacker24 Jul 23, 2025
1c3edaa
Updated for sessions.sql
PythonHacker24 Jul 23, 2025
2d74311
function for pending_transactions_archive
PythonHacker24 Jul 23, 2025
3159aee
Generated new sqlc files
PythonHacker24 Jul 23, 2025
1401370
Added handlers for streaming to dashboards
PythonHacker24 Jul 23, 2025
19b634d
Added archival sockets
PythonHacker24 Jul 23, 2025
84ce9b4
Added archived sessions streaming
PythonHacker24 Jul 23, 2025
59cd212
cleanup
PythonHacker24 Jul 23, 2025
c558024
Updated Makefile for --no-xattrs
PythonHacker24 Jul 23, 2025
d022ce3
Packaged with gtar (GNU Tar)
PythonHacker24 Jul 23, 2025
6cec347
Updated Makefile for using gtar
PythonHacker24 Jul 23, 2025
3f11922
Added query auth middleware
PythonHacker24 Jul 26, 2025
3a0d89e
Fix route for session streaming
PythonHacker24 Jul 26, 2025
81ca933
Updated context cancellation
PythonHacker24 Jul 26, 2025
0f1cde6
Updated ws_test for query jwt token
PythonHacker24 Jul 26, 2025
379ba48
Updated halder by removing some comments
PythonHacker24 Jul 26, 2025
c243669
Updated params in a function
PythonHacker24 Jul 26, 2025
aa82e75
Updated interface to any type
PythonHacker24 Jul 26, 2025
ffecb57
Fix null pointer dereferencing for response
PythonHacker24 Jul 26, 2025
ebacde1
Updated Query Middleware for better websocket standards
PythonHacker24 Aug 2, 2025
d06e513
Updated routes of websockets for query and CORS
PythonHacker24 Aug 2, 2025
ffb2b55
Removed unnecessary code
PythonHacker24 Aug 2, 2025
7ab3139
Added Pending and Active seperate transactions
PythonHacker24 Aug 2, 2025
7c2994d
Added seperation of pending and active transactions
PythonHacker24 Aug 2, 2025
e8b0edf
added context cancellation
PythonHacker24 Aug 2, 2025
f249fda
Added example transactions payload for reference
PythonHacker24 Aug 2, 2025
9bdff0f
Updated handler for sepration of transactions
PythonHacker24 Aug 2, 2025
57134ef
Moved test.sh to development
PythonHacker24 Aug 5, 2025
c9b394e
updated config for jwt expiry = session time
PythonHacker24 Aug 5, 2025
8e66fd2
Work in progress with traversal
PythonHacker24 Aug 5, 2025
8541a10
Updated token to take JWT expiry same as session expiry
PythonHacker24 Aug 5, 2025
5385318
CN replaced with UID (Username)
PythonHacker24 Aug 5, 2025
d023fe7
Traversal testing added
PythonHacker24 Aug 5, 2025
fdb4322
Stress transactions scheduling added
PythonHacker24 Aug 5, 2025
f662575
Openldap and Phpldapadmin env created with docker
PythonHacker24 Aug 5, 2025
9d16bf6
Updated for note
PythonHacker24 Aug 5, 2025
1e637bb
Created latest build
PythonHacker24 Aug 5, 2025
fd36430
removed dump.rdb
PythonHacker24 Aug 5, 2025
60dbd55
Added route for LDAP search
PythonHacker24 Aug 6, 2025
e853c2a
Renamed models to model
PythonHacker24 Aug 6, 2025
33ee6ec
Implemented extract function for ldap search
PythonHacker24 Aug 6, 2025
b09eed6
added handler to interface with ldap search
PythonHacker24 Aug 6, 2025
6d9fa31
created model for ldap search user
PythonHacker24 Aug 6, 2025
8297370
Added and optimized handlers for CORs
PythonHacker24 Aug 10, 2025
a412d0a
Built binary
PythonHacker24 Aug 10, 2025
514c800
Added builds for cross-platform
PythonHacker24 Aug 10, 2025
620a90c
Added handlers
PythonHacker24 Aug 10, 2025
90c357a
Added search extractor
PythonHacker24 Aug 10, 2025
add33de
Added search handler
PythonHacker24 Aug 10, 2025
e29e9e3
Updated config
PythonHacker24 Aug 10, 2025
f5d6084
Updated data types
PythonHacker24 Aug 10, 2025
793cf52
Removed unnecessary websockets and planning to convert it into blanks
PythonHacker24 Aug 10, 2025
0ce7721
Added more functions to interact
PythonHacker24 Aug 10, 2025
b8e0b94
interface{} to any conversion
PythonHacker24 Aug 10, 2025
ac98c12
Removed data types from socket
PythonHacker24 Aug 10, 2025
49d233a
moved interface{} to any
PythonHacker24 Aug 10, 2025
ee99155
Updated routes for archival
PythonHacker24 Aug 12, 2025
d16de84
new make build
PythonHacker24 Aug 12, 2025
d75ca82
New bin with build
PythonHacker24 Aug 12, 2025
254e2ac
Updated postgreSQL conn with pool
PythonHacker24 Aug 12, 2025
8125e3e
Updated query for results archive
PythonHacker24 Aug 12, 2025
83c43d3
Updated with sqlc generate
PythonHacker24 Aug 12, 2025
9568072
Updated vendor
PythonHacker24 Aug 12, 2025
edb6d2e
Added new module for pool
PythonHacker24 Aug 12, 2025
7b87212
Removed unnecessary handles
PythonHacker24 Aug 12, 2025
bc250bd
Updated for archival reques
PythonHacker24 Aug 12, 2025
166d228
Updated handler for sessions archive and transactions
PythonHacker24 Aug 12, 2025
c9931e5
Updated binary with changes
PythonHacker24 Aug 15, 2025
c2a8ab6
updated commands for docker pruning for fast development
PythonHacker24 Aug 15, 2025
95d43ff
Removed symlinks and fd, switching to plain getfacl
PythonHacker24 Aug 15, 2025
6fbb5eb
Updated config for Rocky
PythonHacker24 Aug 15, 2025
17ebad0
updated config for rocky test system
PythonHacker24 Aug 18, 2025
099781e
transprocessor
PythonHacker24 Aug 18, 2025
16f30f7
compiled new binary
PythonHacker24 Aug 18, 2025
9705f2f
Updated CORS for Authorization Header
PythonHacker24 Aug 18, 2025
ecc154d
updated for CORS
PythonHacker24 Aug 18, 2025
298db69
Created new binary
PythonHacker24 Aug 19, 2025
8a2440e
Updated localtxn for logic of path resolution
PythonHacker24 Aug 19, 2025
820e348
Updated absolutePath
PythonHacker24 Aug 19, 2025
1b231e0
Added logic to resolve local path
PythonHacker24 Aug 19, 2025
2632bb5
Added testing path for beegfs-system
PythonHacker24 Aug 19, 2025
016b8ef
Added archive for admin
PythonHacker24 Aug 20, 2025
0154038
Added error handling for Expire session
PythonHacker24 Aug 20, 2025
7fe2d1b
Updated error handling for fcfs
PythonHacker24 Aug 20, 2025
eea4cca
Added error handling for json encoder
PythonHacker24 Aug 20, 2025
6128e06
Updated README.md
PythonHacker24 Aug 20, 2025
939f2ce
Removed issues
PythonHacker24 Aug 20, 2025
dbdb625
Added error handling
PythonHacker24 Aug 20, 2025
da89356
Added error handling for remote txns
PythonHacker24 Aug 20, 2025
44f8d9c
Added new type
PythonHacker24 Aug 20, 2025
df11061
Added error handling
PythonHacker24 Aug 20, 2025
cef0b4e
Added error handling redis
PythonHacker24 Aug 20, 2025
4566486
Updated for custom type
PythonHacker24 Aug 20, 2025
f407259
Removed stream admin (for future work)
PythonHacker24 Aug 20, 2025
ab496c5
make vendor
PythonHacker24 Aug 20, 2025
5225d45
make package
PythonHacker24 Aug 20, 2025
cdea0d2
Updated lint check with make
PythonHacker24 Aug 20, 2025
63b1ace
Updated linting is gocilint is not available
PythonHacker24 Aug 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
25 changes: 25 additions & 0 deletions .github/workflows/format.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# .github/workflows/gofmt.yml
# .github/workflows/lint.yml
name: Lint Check

on:
push:
branches:
- '**'

jobs:
lint:
name: Run make lint
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.24.2'

- name: Run lint
run: make lint
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Binary files
/bin/
# Debug logs
/logs/

# for macOS dev environments
.DS_Store
Expand Down
29 changes: 29 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# --- Build stage ---
FROM golang:latest AS builder

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download

COPY . .

RUN make

# --- Final image ---
FROM debian:latest

WORKDIR /app

# Copy only the built binary
COPY --from=builder /app/bin/laclm ./bin/laclm

# Install bash in case needed
# RUN apt-get update && apt-get install -y bash && rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt-get install -y bash acl && rm -rf /var/lib/apt/lists/*

EXPOSE 8080

# Default command to run your Go app
CMD ["./bin/laclm", "--config", "config.yaml"]
69 changes: 55 additions & 14 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,29 +1,47 @@
APP_NAME = laclm
CMD_DIR = ./cmd/$(APP_NAME)
BIN_DIR = ./bin
BIN_PATH = $(BIN_DIR)/$(APP_NAME)
APP_NAME := laclm
CMD_DIR := ./cmd/$(APP_NAME)
BIN_DIR := ./bin
BUILD_DIR := ./build

GOFILES := $(shell find . -name '*.go' -type f)

.PHONY: all build clean run test lint build-linux build-mac build-win
# Target platforms: OS_ARCH
TARGETS := \
linux_amd64 \
linux_arm64

.PHONY: all build build-cross clean run test lint vendor package

## Default target
all: build

## Build the app
build: $(GOFILES)
## Build for local OS/arch using vendored deps
build: vendor $(GOFILES)
@echo "Building $(APP_NAME)..."
@mkdir -p $(BIN_DIR)
go build -o $(BIN_PATH) $(CMD_DIR)
GOOS="" GOARCH="" go build -mod=vendor -o $(BIN_DIR)/$(APP_NAME) $(CMD_DIR)

## Build cross-compiled binaries for all Linux targets
build-cross: vendor $(GOFILES)
@echo "Cross building for targets: $(TARGETS)"
@mkdir -p $(BIN_DIR)
@for target in $(TARGETS); do \
OS=$${target%_*}; \
ARCH=$${target#*_}; \
OUT=$(BIN_DIR)/$(APP_NAME)-$$OS-$$ARCH; \
echo "Building $$OUT..."; \
GOOS=$$OS GOARCH=$$ARCH go build -mod=vendor -o $$OUT $(CMD_DIR); \
done

## Run the app
run: build
@echo "Running $(APP_NAME)..."
@$(BIN_PATH)
@$(BIN_DIR)/$(APP_NAME)

## Clean build artifacts
## Clean build and package directories
clean:
@echo "Cleaning..."
@rm -rf $(BIN_DIR)
@rm -rf $(BIN_DIR) $(BUILD_DIR) vendor

## Run tests
test:
Expand All @@ -32,9 +50,32 @@ test:

## Lint (requires golangci-lint)
lint:
@if ! command -v golangci-lint >/dev/null 2>&1; then \
echo "Installing golangci-lint..."; \
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest; \
fi
@echo "Linting..."
@golangci-lint run

## Cross-build for Linux
build-linux:
GOOS=linux GOARCH=amd64 go build -o $(BIN_DIR)/$(APP_NAME)-linux $(CMD_DIR)
## Vendor dependencies
vendor:
@echo "Vendoring dependencies..."
go mod vendor

## Package full project source (with vendor) for each target
package: clean vendor
@echo "Packaging full source tarballs for: $(TARGETS)"
@mkdir -p $(BUILD_DIR)
@for target in $(TARGETS); do \
OS=$${target%_*}; \
ARCH=$${target#*_}; \
NAME=$(APP_NAME)-$$OS-$$ARCH; \
TARBALL=$$NAME-source.tar.gz; \
echo "Creating $$TARBALL..."; \
mkdir -p tmp/$$NAME; \
cp -r * tmp/$$NAME; \
rm -rf tmp/$$NAME/$(BUILD_DIR) tmp/$$NAME/$(BIN_DIR); \
gtar -czf $(BUILD_DIR)/$$TARBALL -C tmp $$NAME; \
rm -rf tmp/$$NAME; \
done
@rm -rf tmp
154 changes: 136 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,152 @@
# Backend Component - Linux ACL Management Interface
<div align="center">

Securing Linux Storage with ACLs: An Open-Source Web Management Interface for Enhanced Data Protection.
# Linux ACL Management Interface - Backend Component

Progress Docs: https://pythonhacker24.github.io/linux-acl-management/
<img width="600" hegith="600" src="https://github.com/user-attachments/assets/a1625f58-0cd8-4df9-babc-31547b18d55a">

## Documentation
A robust web-based management interface for Linux Access Control Lists (ACLs), designed to enhance data protection and simplify ACL administration. This project provides a modern, user-friendly solution for managing file system permissions in Linux environments.

To be written ...
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

[View Documentation](https://pythonhacker24.github.io/linux-acl-management/)

## Progress Report
</div>

To be written ...
## Project Summary

Institutional departments, such as the Biomedical Informatics (BMI) Department of Emory University School of Medicine, manage vast amounts of data, often reaching petabyte scales across multiple Linux-based storage servers. Researchers storing data in these systems need a streamlined way to modify ACLs to grant or revoke access for collaborators. Currently, the IT team at BMI is responsible for manually handling these ACL modifications, which is time-consuming, error-prone, and inefficient, especially as data volume and user demands grow. To address this challenge at BMI and similar institutions worldwide, a Web Management Interface is needed to allow users to modify ACLs securely. This solution would eliminate the burden on IT teams by enabling on-demand permission management while ensuring security and reliability. The proposed system will feature a robust and highly configurable backend, high-speed databases, orchestration daemons for file storage servers, and an intuitive frontend. The proposal includes an in-depth analysis of required components, high-level and low-level design considerations, technology selection, and the demonstration of a functional prototype as proof of concept. The goal is to deliver a production-ready, secure, scalable, and reliable system for managing ACLs across multiple servers hosting filesystems such as NFS, BeeGFS, and others. This solution will streamline access control management and prepare it for deployment at BMI and other institutions worldwide, significantly reducing the manual workload for IT teams.

## Features

- Intuitive web interface for ACL management
- High-performance backend written in Go
- Real-time ACL updates
- Comprehensive ACL reporting and visualization
- Integration with OpenLDAP for authentication

## Quick Start

### Prerequisites

- Go 1.20 or higher
- Docker (optional)
- Redis
- OpenLDAP server

### Local Installation

1. Clone the repository:
```bash
git clone https://github.com/PythonHacker24/linux-acl-management.git
cd linux-acl-management
```

2. Install dependencies:
```bash
go mod download
```

3. Build the application:
```bash
go build -o acl-manager
```

### Production Build

For production build, it is recommended to use the Makefile. This allows you to build the complete binary on locally for security purposes. Since the project is in development mode, complete local build is not possible since dependencies are managed via GitHub and external vendors. Tarball based complete local builds will be developed in later stages.

1. Clone the repository:
```bash
git clone https://github.com/yourusername/linux-acl-management.git
cd linux-acl-management
```

2. Use make:
```bash
make build
```

3. Execute the binary
```bash
./bin/laclm --config config.yaml
```

### Docker Testbench Deployment

A simulated environment has been developed on docker-compose for testing and experimenting purposes. It's not a production level build but a training ground for testing your config.yaml file for specific scenario.

```bash
docker-compose up -d
```

A complete optional Docker based deployment option will be developed in later stages of development

## Usage

1. Configure your settings in `config.yaml`

2. Start the server:
```bash
./laclm --config <config.yaml>
```

3. Access the api at `http://<ip-address>:<port>`

For detailed usage instructions, please refer to our [documentation](https://pythonhacker24.github.io/linux-acl-management/).

## Project Structure

```
.
├── cmd/ # Application entry points
├── internal/ # Private application code
├── pkg/ # Public library code
├── api/ # API definitions and handlers
├── docs/ # Documentation
└── deployments/ # Deployment configurations
```

## Development

### Branches

- `main`: Production-ready code
- `development-v<version>`: Development branches for specific versions

### Contributing

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct and development process.

## About

- **Organization:** Department of Biomedical Informatics, Emory University
- **Program:** Google Summer of Code 2025
- **Contributor:** Aditya Patil
- **Mentors:** Robert Tweedy, Mahmoud Zeydabadinezhad, PhD
This project is developed as part of Google Summer of Code 2025, in collaboration with the Department of Biomedical Informatics at Emory University.

This project is part of Google Summer of Code 2025, undertaken with the Department of Biomedical Informatics at Emory University.
### Team

## Technologies Used
- **Contributor:** Aditya Patil
- **Mentors:**
- Robert Tweedy
- Mahmoud Zeydabadinezhad, PhD

### Technologies

- **Programming Languages:** Golang
- **Frameworks/Libraries:** net/http
- **Standards/Protocols:** gRPC, REST
- **Tools:** Tarball, Redis, Docker, OpenLDAP
- **Backend:** Golang, net/http
- **API:** gRPC, REST
- **Infrastructure:** Docker, Redis, OpenLDAP
- **Packaging:** Tarball

## License

This project is licensed under the MIT License - see the LICENSE file for details.
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- Department of Biomedical Informatics, Emory University
- Google Summer of Code Program
- Open Source Community
Loading