Skip to content

Commit 1825521

Browse files
MK8S-25: Create empty index.html files for repository directories
Instead of changing the health check URL, create empty index.html files in repository directories to prevent 403 errors while keeping autoindex disabled for security. This maintains the original health check functionality while preventing directory structure exposure.
1 parent e1851c5 commit 1825521

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

buildchain/buildchain/targets/repository.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,55 @@ def clean() -> None:
206206
task["file_dep"].extend([self.get_rpm_path(pkg) for pkg in self.packages])
207207
return task
208208

209+
def create_index_files(self) -> types.TaskDict:
210+
"""Create index.html files for repository directories."""
211+
212+
def create_index() -> None:
213+
"""Create empty index.html files in repository directories."""
214+
saltenv_dir = self._repo_root / self._releasever
215+
directories = [
216+
saltenv_dir, # /{saltenv}/
217+
saltenv_dir / "redhat", # /{saltenv}/redhat/
218+
saltenv_dir / "redhat" / str(self._releasever), # /{saltenv}/redhat/{os_ver}/
219+
self.rootdir, # Repository root
220+
self.rootdir / self.ARCH, # Architecture directory
221+
]
222+
223+
for directory in directories:
224+
if directory.exists():
225+
(directory / "index.html").touch()
226+
227+
saltenv_dir = self._repo_root / self._releasever
228+
task = self.basic_task
229+
task.update(
230+
{
231+
"name": self._get_task_name("create_index_files"),
232+
"actions": [create_index],
233+
"doc": f"Create index.html files for {self.name} repository directories.",
234+
"title": utils.title_with_target1("CREATE INDEX FILES"),
235+
"targets": [
236+
saltenv_dir / "index.html",
237+
saltenv_dir / "redhat" / "index.html",
238+
saltenv_dir / "redhat" / str(self._releasever) / "index.html",
239+
self.rootdir / "index.html",
240+
self.rootdir / self.ARCH / "index.html",
241+
],
242+
"uptodate": [True],
243+
"verbosity": 0,
244+
"task_dep": [self._get_task_name("build_repodata", with_basename=True)],
245+
}
246+
)
247+
return task
248+
249+
@property
250+
def execution_plan(self) -> List[types.TaskDict]:
251+
"""Override execution plan to include index.html file creation."""
252+
tasks = [self.build_repo()]
253+
if self._packages:
254+
tasks.extend(self.build_packages())
255+
tasks.append(self.create_index_files())
256+
return tasks
257+
209258
def build_packages(self) -> List[types.TaskDict]:
210259
"""Build the RPMs from SRPMs."""
211260
tasks = [self._mkdir_repo_root(), self._mkdir_repo_arch()]

0 commit comments

Comments
 (0)