Work on actually creating repos

This commit is contained in:
Jamie Cameron
2019-04-21 16:53:41 -07:00
parent ca0e907fcd
commit 046efee6e8
5 changed files with 37 additions and 3 deletions

View File

@@ -0,0 +1,12 @@
#!/usr/local/bin/perl
# Create one new repository
require './package-updates-lib.pl';
&ReadParse();
&error_setup($text{'repos_err_create'});
$repo = &software::create_repo_parse(\%in);
&error($repo) if (!ref($repo));
&software::create_package_repo($repo);
&webmin_log("create", "repo", $repo->{'id'});
&redirect("index.cgi?tab=repos");

View File

@@ -255,7 +255,11 @@ if ($has_repos) {
}
# Form to add a repo
# XXX
print &ui_form_start("create_repo.cgi", "post");
print &ui_table_start($text{'index_repoheader'}, undef, 2);
print &software::create_repo_form();
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'create'} ] ]);
print &ui_tabs_end_tab("tab", "repos");
}

View File

@@ -56,6 +56,7 @@ index_reposurl=Package URL
index_reposdisable=Disable Repositories
index_reposenable=Enable Repositories
index_reposdelete=Delete Repositories
index_repoheader=New package repository options
update_title=Update Packages
update_title2=Install Packages
@@ -136,6 +137,7 @@ system_tgz=Webmin or Usermin tar.gz
repos_err_disable=Failed to disable repositories
repos_err_enable=Failed to enable repositories
repos_err_delete=Failed to delete repositories
repos_err_create=Failed to create repository
repos_ebutton=No button clicked!
repos_enone=None selected
repos_title=Delete Repositories

View File

@@ -270,6 +270,7 @@ yum_repo_eidclash=Repository ID is already in use
yum_repo_ename=Missing repository name
yum_repo_eurl=Missing or invalid repository URL
yum_repo_egpg=GPG cert file missing or does not exist
yum_repo_efile=Repository file already exists!
urpmi_name=URPMI
urpmi_input=Package from URPMI

View File

@@ -388,7 +388,8 @@ foreach my $repo (@rv) {
$name =~ s/\s*-.*//;
$name =~ s/\s*\$[a-z0-9]+//gi;
$repo->{'name'} = $repo->{'id'}." (".$name.")";
$repo->{'url'} = $repo->{'raw'}->{'baseurl'};
$repo->{'url'} = $repo->{'raw'}->{'baseurl'} ||
$repo->{'raw'}->{'mirrorlist'};
$repo->{'enabled'} = defined($repo->{'raw'}->{'enabled'}) ?
$repo->{'raw'}->{'enabled'} : 1;
}
@@ -418,7 +419,7 @@ return $rv;
sub create_repo_parse
{
my ($in) = @_;
my $repo = { 'raw' => { } };
my $repo = { 'raw' => { 'enabled' => 1 } };
# ID must be valid and unique
$in->{'id'} =~ /^[a-z0-9\-\_]+$/i || return $text{'yum_repo_eid'};
@@ -448,6 +449,20 @@ return $repo;
# Creates a new repository from the given hash (returned by create_repo_parse)
sub create_package_repo
{
my ($repo) = @_;
my $file = "$yum_repos_dir/$repo->{'id'}.repo";
-r $file && return $text{'yum_repo_efile'};
&lock_file($file);
my $lref = &read_file_lines($file);
push(@$lref, "[$repo->{'id'}]");
foreach my $r (keys %{$repo->{'raw'}}) {
push(@$lref, $r."=".$repo->{'raw'}->{$r});
}
&flush_file_lines($file);
&unlock_file($file);
return undef;
}
# delete_package_repo(&repo)