Skip to content

Commit

Permalink
Split resynth app from library
Browse files Browse the repository at this point in the history
  • Loading branch information
giannitedesco committed Jan 8, 2022
1 parent 60fad10 commit 0e09a55
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 62 deletions.
21 changes: 17 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
edition = "2018"
name = "resynth"
version = "0.1.2"
version = "0.1.3"
description = "A packet synthesis language"
authors = ["Gianni Tedesco <[email protected]>"]
license = "GPL-3.0-only"
Expand Down Expand Up @@ -44,9 +44,22 @@ lto = true
[dependencies]
pkt = { path = "pkt", version = "0.1.1" }
ezpkt = { path = "ezpkt", version = "0.1.1" }

lazy-regex = "2.2.2"
regex = "1.5.4"
phf = { version = "0.10.1", features = ["macros"] }
clap = "3.0.0"
atty = "0.2.14"
termcolor = "1.1.2"

clap = {version = "3.0.0", optional = true}
atty = {version = "0.2.14", optional = true}
termcolor = {version = "1.1.2", optional = true}

[[bin]]
name = "resynth"
path = "src/cli.rs"
required-features = ["cli"]

[features]
default = [
"cli",
]
cli = ["clap", "atty", "termcolor"]
4 changes: 2 additions & 2 deletions ezpkt/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
edition = "2018"
name = "ezpkt"
version = "0.1.2"
version = "0.1.3"
description = "A packet construction library"
authors = ["Gianni Tedesco <[email protected]>"]
license = "GPL-3.0-only"
Expand All @@ -25,4 +25,4 @@ include = [
]

[dependencies]
pkt = { path = "../pkt", version = "0.1.2" }
pkt = { path = "../pkt", version = "0.1.3" }
2 changes: 1 addition & 1 deletion pkt/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
edition = "2018"
name = "pkt"
version = "0.1.2"
version = "0.1.3"
description = "A packet construction library"
authors = ["Gianni Tedesco <[email protected]>"]
license = "GPL-3.0-only"
Expand Down
57 changes: 2 additions & 55 deletions src/main.rs → src/cli.rs
Original file line number Diff line number Diff line change
@@ -1,60 +1,7 @@
//! # Resynth: A Packet Synthesis Language
//!
//! Resynth is a packet synthesis language. It produces network traffic (in the form of pcap files)
//! from textual descriptions of traffic. It enables version-controlled packets-as-code workflows
//! which can be useful for various packet processing, or security research applications such as
//! DPI engines, or network intrusion detection systems.
//!
//! ## Structure of the Codebase
//! The codebase is split in to several major components
//! - [pkt] A low-level packet generation library which mostly contains structs and consts
//! to do with various network protocols.
//! - [ezpkt] A more high-level packet generation library which provides abstractions around
//! concepts such as flows
//! - [crate] The language compiler and interpreter itself is the root of the crate. In future we
//! will probably move in to its own module at some point in future.
//! - [crate::stdlib] Contains the resynth standard library which is mostly glue to allow resynth
//! programs to use the functionality in [pkt] and [ezpkt]
//!
//! ## Compiler Phases
//! 1. [crate::process_file()] is the basic wrapper function which handles all phases of the
//! compiler
//! 2. [Lexer] uses a static regex to parse each line in to a stream of tokens
//! 3. [Parser] is a hand-written LR-parser which takes a token at a time and whenever a complete
//! [statement](Stmt) is encountered, the [statement](Stmt) is pushed in to a
//! [results vector](Parser::get_results) which can later be [retreived](Parser::get_results)
//! 4. [Program] maintains the execution state of any given program. It takes one statement at a
//! time, and updates the program state based on that. If the program has a [pkt::PcapWriter]
//! attached to it, then any generated packets will be written in to the corresponding pcap file
//! as they are generated.
#[macro_use]
mod macros;
mod err;
mod lex;
mod parse;
mod program;
mod val;
mod libapi;
mod str;
mod object;
mod args;
mod sym;
mod traits;
mod loc;

pub mod stdlib;

#[cfg(test)]
mod test;

use pkt::PcapWriter;

pub use err::Error;
pub use loc::Loc;
pub use lex::{Lexer, EOF, Token};
pub use parse::{Parser, Stmt};
pub use program::Program;
use resynth::{Error, Loc, Lexer, EOF, Parser, Program};
use resynth::{warn, error, ok};

use std::path::{Path, PathBuf};
use std::fs;
Expand Down
53 changes: 53 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
//! # Resynth: A Packet Synthesis Language
//!
//! Resynth is a packet synthesis language. It produces network traffic (in the form of pcap files)
//! from textual descriptions of traffic. It enables version-controlled packets-as-code workflows
//! which can be useful for various packet processing, or security research applications such as
//! DPI engines, or network intrusion detection systems.
//!
//! ## Structure of the Codebase
//! The codebase is split in to several major components
//! - [pkt] A low-level packet generation library which mostly contains structs and consts
//! to do with various network protocols.
//! - [ezpkt] A more high-level packet generation library which provides abstractions around
//! concepts such as flows
//! - [crate] The language compiler and interpreter itself is the root of the crate. In future we
//! will probably move in to its own module at some point in future.
//! - [crate::stdlib] Contains the resynth standard library which is mostly glue to allow resynth
//! programs to use the functionality in [pkt] and [ezpkt]
//!
//! ## Compiler Phases
//! 1. [Lexer] uses a static regex to parse each line in to a stream of tokens
//! 2. [Parser] is a hand-written LR-parser which takes a token at a time and whenever a complete
//! [statement](Stmt) is encountered, the [statement](Stmt) is pushed in to a
//! [results vector](Parser::get_results) which can later be [retreived](Parser::get_results)
//! 3. [Program] maintains the execution state of any given program. It takes one statement at a
//! time, and updates the program state based on that. If the program has a [pkt::PcapWriter]
//! attached to it, then any generated packets will be written in to the corresponding pcap file
//! as they are generated.
#[macro_use]
mod macros;
mod err;
mod lex;
mod parse;
mod program;
mod val;
mod libapi;
mod str;
mod object;
mod args;
mod sym;
mod traits;
mod loc;

pub mod stdlib;

#[cfg(test)]
mod test;

pub use err::Error;
pub use loc::Loc;
pub use lex::{Lexer, EOF, Token};
pub use parse::{Parser, Stmt};
pub use program::Program;

0 comments on commit 0e09a55

Please sign in to comment.