7 fn check_ip() -> Result<(), Box<dyn error::Error>> {
8 let remote_ip = env::var("REMOTE_ADDR")?;
9 let whitelist_ip = env::var("WHITELIST_IP")?;
10 if remote_ip == whitelist_ip {
13 Err(Box::new(io::Error::new(
14 io::ErrorKind::ConnectionRefused,
15 format!("Blocked connection from {}", remote_ip),
20 fn main() -> Result<(), Box<dyn error::Error>> {
23 let mut repo_name = String::new();
24 io::stdin().read_line(&mut repo_name)?;
25 // remove trailing newline
28 let mut opts = git2::RepositoryInitOptions::new();
29 git2::RepositoryInitOptions::bare(&mut opts, true)
30 .mode(git2::RepositoryInitMode::SHARED_GROUP)
32 .template_path(path::Path::new("./templates"));
34 let repo = git2::Repository::init_opts(format!("{}.git", repo_name), &opts)?;
36 let public_user = env::var("USER")?;
37 let public_name = env::var("PUBLIC")?;
38 let public_path = env::var("PATH")?;
42 "{user}@{public}:{path}/{repo}.git",