Giter Site home page Giter Site logo

mido3ds / c4ian Goto Github PK

View Code? Open in Web Editor NEW
10.0 4.0 1.0 85.89 MB

Command, Control, Communications, Computing & Intelligence through Adhoc Networks

Go 46.94% JavaScript 27.73% Python 9.32% Shell 2.71% HTML 2.68% CSS 10.59% Makefile 0.03%
ad-hoc-network golang infrastructure networks hierarchical-routing netfilter-queue

c4ian's Introduction

C4IAN

C4IAN Logo

Pronounced "Kaian" Tactical Mobile ad-hoc network. Build a network on the go for tactical teams in war and emergency situations.

Supports video/audio streaming and messaging with unicast, multicast and broadcast cababilities.

📝 Table of Content

Problem Statement

Tactical teams face troubles to achieve scalable and reliable communications in the battlefield or during emergencies due to the lack of a network infrastructure and the high mobility of units. They also need a method to collect real time data and analyze it to have a competitive advantage in the battleground.

Motivation

Mobile ad-hoc networks can be formed on the go, without any infrastructure. They promise more flexibility and reliability than manual radio broadcasting. We are interested in building such complex distributed systems.

System Architecture

System Architecture User Clients zhls modules odrmp modules

Development

Follow the rest of READMEs.

Common Requirements

golang 1.15.8

$ sudo apt update && sudo apt install -y wget && (
    set -e
    cd /tmp
    wget -c https://golang.org/dl/go1.15.8.linux-amd64.tar.gz
    sudo tar xvf go1.15.8.linux-amd64.tar.gz
    sudo chown -R root:root ./go
    sudo mv ./go /usr/local
    mkdir -p $HOME/.config/go/1.15/{bin,pkg,src}
    echo >>"$HOME"/.bashrc
    echo 'export GOPATH="$HOME/.config/go/1.15"' >>"$HOME"/.bashrc
    echo 'export PATH="$PATH:/usr/local/go/bin:$GOPATH/bin"' >>"$HOME"/.bashrc
    echo >>"$HOME"/.bashrc
    . "$HOME"/.bashrc
)

For VSCode support:

  • Install Go Extension.
  • Install all the extension's recommended tools.
  • Add "go.gopath": "~/.config/go/1.15/" to your VSCode settings.json file to enable Go extension tools.
  • Open each golang project in its own VSCode session, e.g. $ code src/router to be able to use linter and gopls.

Mininet-Wifi

$ python --version

If it's 3, you are good to go, otherwise do the following:

$ sudo mv /bin/python /bin/python.old
$ sudo ln /bin/python3 /bin/python

It may break your system, in this case reverse it back: sudo m /bin/python.old /bin/python

Then install mininet-wifi:

$ (
    set -e
    sudo apt update
    sudo apt install -y git
    cd /tmp
    git clone git://github.com/intrig-unicamp/mininet-wifi
    sudo mininet-wifi/util/install.sh -Wln
)

yarn

nodejs

python3

python3-pip

python packages: websocket-client, numpy

sudo python3 -m pip install simple-websocket-server numpy

socat

Issues

  • electron: error while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory

[Solution] Run:

$ sudo apt install -y libgconf-2-4

Application Layer

Command Center Client

Command centers are responsible for the central administration and operational management of a group of units. High-end computers with strong CPUs, high power consumption capabilities, and large storage and RAM capabilities are expected to be used as command center clients. The command centers are located near the operation field and have a wide wireless range, allowing them to link to a group of troops in the field. They’re assumed to have limited (or no) mobility

Units

cmd units ui

Map

cmd map

Video Streaming

cmd video streaming

Unit Client

Home

unit home

Audios

unit audios

Chatbox

unit chatbox

Emulation Map

log visualizer

Log visualizer

log visualizer

Demo

English Demo Video

Arabic Demo Video

©️ Developers

Name Email
Abdulrahman Khalid Hassan [email protected]
Ahmad Mahmoud AbdElMen'em [email protected]
Mahmoud Othman Adas [email protected]
Yosry Mohammad Yosry [email protected]

c4ian's People

Contributors

abdulrahman-khalid avatar ahmedmahmoud98 avatar dependabot[bot] avatar mido3ds avatar yosrym93 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

0xsirsaif

c4ian's Issues

[Interzone] segfault in timer.Stop

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x5c70a4]

goroutine 10 [running]:
time.(*Timer).Stop(...)
        /usr/local/go/src/time/sleep.go:76
github.com/mido3ds/C4IAN/src/router/tables.(*Topology).Update(0xc000058000, 0x800000000a000001, 0xc000010090, 0x0, 0x0)
        /home/mahmoud/study/gp/project/src/router/tables/Topology.go:116 +0x604
github.com/mido3ds/C4IAN/src/router/zhls.(*LSRController).sendIntrazoneLSR(0xc000058140, 0xc0000adf00)
        /home/mahmoud/study/gp/project/src/router/zhls/LSR.go:85 +0x8c
github.com/mido3ds/C4IAN/src/router/zhls.(*UnicastController).listenForNeighborhoodChanges(0xc000058180)
        /home/mahmoud/study/gp/project/src/router/zhls/UnicastController.go:42 +0x59
created by github.com/mido3ds/C4IAN/src/router/zhls.(*UnicastController).Start
        /home/mahmoud/study/gp/project/src/router/zhls/UnicastController.go:36 +0x67

Goraph: concurrent map reads and writes

Sometimes goraph breaks with an error "concurrent map reads and writes" probably due to a data race i.e multiple goroutines modifying/reading the graph concurrently.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.