/* Copyright (C) 2012-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: itanetd.ctr */ /** @file itanetd.c The itanetd module. */ #line 10 "itanetd.ctr" #include "dk3all.h" #include "itadmin.h" #line 17 "itanetd.ctr" /** Keywords used by the module. */ static char const * const itadmin_netdocu_c8_kw[] = { /* 0 */ "\n", /* 1 */ " ", /* 2 */ "w", /* 3 */ "netdocu.tex", /* 4 */ "pdftitle={", /* 5 */ "},", /* 6 */ "pdfsubject={", /* 7 */ "pdfauthor={", /* 8 */ "pdfcreator={itadmin - http://sourceforge.net/p/dktools/wiki/itadmin/}", /* 9 */ "\\author{", /* 10 */ "\\title{", /* 11 */ "}", /* 12 */ "\\section{", /* 13 */ "\\subsection[", /* 14 */ "]{", /* 15 */ "\\subsection{", /* 16 */ "\\subsubsection{", /* 17 */ "\\clearpage", /* 18 */ "\\begin{tabular}{rl}", /* 19 */ "\\end{tabular}", /* 20 */ "\\\\*[1em]", /* 21 */ "\\begin{itemize}", /* 22 */ "\\end{itemize}", /* 23 */ "\\item{", /* 24 */ "&", /* 25 */ "\\\\", /* 26 */ "\\textbf{", /* 27 */ "\\begin{longtable}{ll}", /* 28 */ "\\endfirsthead", /* 29 */ "\\endhead", /* 30 */ "\\endfoot", /* 31 */ "\\endlastfoot", /* 32 */ "\\end{longtable}", /* 33 */ "~\\\\[0.5em]", /* 34 */ "\\begin{longtable}{|c|c|c|c|c|}", /* 35 */ "\\hline", /* 36 */ "\\multicolumn{1}{|c}{\\textbf{", /* 37 */ "\\multicolumn{1}{|c|}{\\textbf{", /* 38 */ "}}", NULL #line 181 "itanetd.ctr" }; /** Start of LaTeX source. */ static char const * const itadmin_netdocu_file_start1a[] = { "\\documentclass[titlepage,origlongtable]{scrartcl}", "\\KOMAoptions{paper=a4}", "\\KOMAoptions{fontsize=12pt}", NULL #line 193 "itanetd.ctr" }; /** Start of LaTeX source. */ static char const * const itadmin_netdocu_file_start1b[] = { "\\documentclass[12pt]{article}", NULL #line 203 "itanetd.ctr" }; /** LaTeX packages after ngerman. */ static char const * const itadmin_netdocu_file_start4[] = { "\\usepackage{ifpdf}", "\\usepackage[utf8]{inputenc}", "\\usepackage{mathptmx}", "\\usepackage[scaled=.92]{helvet}", "\\usepackage{courier}", "\\usepackage[T1]{fontenc}", "\\usepackage{textcomp}", "\\usepackage{latexsym}", "\\usepackage{varioref}", "\\usepackage{color}", "\\usepackage{makeidx}", "\\usepackage{longtable}", "\\makeindex", "\\ifpdf", "\\usepackage[activate=normal]{pdfcprot}", "\\pdfcompresslevel=9", "\\usepackage[", "pdftex,", "colorlinks=true,", "pdfpagemode=UseNone,", "pdfstartview={XYZ 0 835 1.25},", "bookmarksnumbered,", NULL #line 233 "itanetd.ctr" }; /** LaTeX package after hyperref options for title, subject, author. */ static char const * const itadmin_netdocu_file_start2[] = { "]{hyperref}", "\\else", "\\usepackage[dvips,colorlinks=true,linkcolor=black]{hyperref}", "\\fi", "\\parindent0cm", NULL #line 247 "itanetd.ctr" }; /** Renewcommand, only used for koma-script. */ static char const * const itadmin_netdocu_file_start3a[] = { "\\renewcommand*{\\sectfont}{\\bfseries}", NULL #line 257 "itanetd.ctr" }; /** Final commands after title and author. */ static char const * const itadmin_netdocu_file_start3[] = { "\\setcounter{secnumdepth}{1}", "\\begin{document}", NULL #line 268 "itanetd.ctr" }; /** LaTeX file end. */ static char const * const itadmin_netdocu_file_end[] = { "\\end{document}", NULL #line 278 "itanetd.ctr" }; /** Write section header for hosts section */ static void itadmin_netdocu_write_sh_hosts(itadmin_job *job, dk3_stream_t *os) { int ie; ie = dk3app_get_encoding(job->app); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[12]); dk3stream_strputs(os, (job->msg)[3], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } /** Write section header for one user. */ static void itadmin_netdocu_write_sh_user( itadmin_job *job, dk3_stream_t *os, itadmin_user *user ) { #if VERSION_BEFORE_20150821 int ie; ie = dk3app_get_encoding(job->app); #endif dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[13]); itadmin_tool_write_user_latex_short(job, os, user); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[14]); itadmin_tool_write_user_latex_long(job, os, user); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } /** Write section header "Other hosts" @param job Job structure. @param os Output stream. */ static void itadmin_netdocu_write_sh_others(itadmin_job *job, dk3_stream_t *os) { int ie; ie = dk3app_get_encoding(job->app); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[15]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[4], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } /** Write section header "BYOD" @param job Job structure. @param os Output stream. */ static void itadmin_netdocu_write_sh_byod(itadmin_job *job, dk3_stream_t *os) { int ie; ie = dk3app_get_encoding(job->app); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[13]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[21], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[14]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[22], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } /** Write data for one host. @param job Job structure. @param os Output stream. @param host Host to write. */ static void itadmin_netdocu_write_one_host( itadmin_job *job, dk3_stream_t *os, itadmin_host *host ) { itadmin_netgroup *ng; char const *p1; int ie; #line 377 "itanetd.ctr" ie = dk3app_get_encoding(job->app); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[16]); dk3uc2lat_c8_utf8_stputs(job->uc2l, os, host->sn); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); if(host->dp) { dk3uc2lat_stputs(job->uc2l, os, (job->msg)[20], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } else { if(host->fgu) { switch(host->fgu) { case 1: { #line 390 "itanetd.ctr" dk3uc2lat_stputs(job->uc2l, os, (job->msg)[28], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[24], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[310], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } break; case 2: { #line 400 "itanetd.ctr" dk3uc2lat_stputs(job->uc2l, os, (job->msg)[28], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[25], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[26], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[27], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } break; case 3: { #line 412 "itanetd.ctr" dk3uc2lat_stputs(job->uc2l, os, (job->msg)[23], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[311], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[312], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } break; case 4: { #line 422 "itanetd.ctr" dk3uc2lat_stputs(job->uc2l, os, (job->msg)[23], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[313], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[312], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } break; case 5: { #line 432 "itanetd.ctr" dk3uc2lat_stputs(job->uc2l, os, (job->msg)[23], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[315], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[316], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[317], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } break; case 6: { #line 444 "itanetd.ctr" dk3uc2lat_stputs(job->uc2l, os, (job->msg)[23], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[318], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[319], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[320], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } break; case 7: { dk3uc2lat_stputs(job->uc2l, os, (job->msg)[320], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } break; default : { #line 460 "itanetd.ctr" } break; } } } /* begin{tabular}.... */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[18]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); itadmin_tool_table_section_header(job, os, 5); #line 470 "itanetd.ctr" if(host->un) { itadmin_tool_table_line_start(job, os, 10); itadmin_tool_table_line_sep_rows(os); itadmin_tool_write_user_latex_long(job, os, host->un); itadmin_tool_table_line_finish(os, 0); } else { if(!(host->fgu)) { itadmin_tool_table_line(job, os, 10, NULL, 1, 0); } } #line 481 "itanetd.ctr" itadmin_tool_table_line(job, os, 6, host->co, 1, 0); /* Ort (Gebaeude und Raum) */ #line 483 "itanetd.ctr" itadmin_tool_table_line_start(job, os, 11); itadmin_tool_table_line_sep_rows(os); if(host->bu) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, (host->bu)->s); if(host->room) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[1]); dk3uc2lat_c8_utf8_stputs(job->uc2l, os, host->room); } } else { if(host->room) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, host->room); } else { itadmin_tool_table_line_no_data(job, os, 1); } } #line 498 "itanetd.ctr" itadmin_tool_table_line_finish(os, 0); itadmin_tool_table_line(job, os, 7, host->inv, 1, 0); itadmin_tool_table_line(job, os, 8, host->serno, 1, 1); itadmin_tool_table_section_header(job, os, 12); if(host->ipv4) { itadmin_tool_table_line_start(job, os, 13); itadmin_tool_table_line_sep_rows(os); itadmin_tool_stream_ip(os, host->ipv4); itadmin_tool_table_line_finish(os, 0); if(host->dnsd) { itadmin_tool_table_line(job, os, 14, host->dnsd, 0, 0); } } else { if(!(host->dc)) { itadmin_tool_table_line(job, os, 13, NULL, 1, 0); } } /* MAC-Adresse */ itadmin_tool_table_line(job, os, 15, host->maca, 1, 0); /* Datendose */ p1 = NULL; if(host->nc) { p1 = (host->nc)->s; } itadmin_tool_table_line(job, os, 16, p1, 1, 0); /* DHCP-Klasse */ if(!((host->ipv4) || (host->dp))) { p1 = NULL; if(host->dc) { p1 = (host->dc)->sn; } itadmin_tool_table_line(job, os, 17, p1, 1, 0); } /* DHCP-Gruppe */ p1 = NULL; if(host->dg) { p1 = (host->dg)->sn; } itadmin_tool_table_line(job, os, 18, p1, 0, 1); /* Netgroups */ if(host->ng) { itadmin_tool_table_section_header(job, os, 19); itadmin_tool_table_values(job, os, (host->ng)->sn, (host->ng)->ln, 1, 0); dk3sto_it_reset(job->i_ng); while(NULL != (ng = (itadmin_netgroup *)dk3sto_it_next(job->i_ng))) { if(1 == itadmin_netgroup_host_member(job, ng, host)) { itadmin_tool_table_values(job,os, ng->sn, ng->ln, 0, 0); } } } /* end{tabular} */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[19]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[17]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); #line 549 "itanetd.ctr" } /** Write data for one host. @param job Job structure. @param os Output stream. @param host Host to write. */ static void itadmin_netdocu_write_byod_host( itadmin_job *job, dk3_stream_t *os, itadmin_host *host ) { char const *p1; #if VERSION_BEFORE_20150821 int ie; #endif #line 572 "itanetd.ctr" #if VERSION_BEFORE_20150821 ie = dk3app_get_encoding(job->app); #endif dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[16]); dk3uc2lat_c8_utf8_stputs(job->uc2l, os, host->sn); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); /* begin{tabular}.... */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[18]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); if(host->un) { itadmin_tool_table_line_start(job, os, 10); itadmin_tool_table_line_sep_rows(os); itadmin_tool_write_user_latex_long(job, os, host->un); itadmin_tool_table_line_finish(os, 0); } else { } itadmin_tool_table_line(job, os, 6, host->co, 1, 0); if(host->ipv4) { itadmin_tool_table_line_start(job, os, 13); itadmin_tool_table_line_sep_rows(os); itadmin_tool_stream_ip(os, host->ipv4); itadmin_tool_table_line_finish(os, 0); } else { if(!(host->dc)) { itadmin_tool_table_line(job, os, 13, NULL, 1, 0); } } /* MAC-Adresse */ itadmin_tool_table_line(job, os, 15, host->maca, 1, 0); /* DHCP-Klasse */ if(!((host->ipv4) || (host->dp))) { p1 = NULL; if(host->dc) { p1 = (host->dc)->sn; } itadmin_tool_table_line(job, os, 17, p1, 1, 0); } /* DHCP-Gruppe */ if(host->dg) { p1 = NULL; if(host->dg) { p1 = (host->dg)->sn; } itadmin_tool_table_line(job, os, 18, p1, 0, 1); } /* end{tabular} */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[19]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); #line 618 "itanetd.ctr" } /** Check whether the host is a BRING YOUR OWN DEVICE computer. @param host The host to check. @return 1 for yes, 0 for no. */ static int itadmin_netdocu_is_byod(itadmin_host *host) { int back = 0; if(!(host->ipv4)) { if(host->dc) { if(host->fgu == 1) { back = 1; } } } return back; } /** Write hosts section of network documentation. @param job Job structure. @param os Output stream. */ static void itadmin_netdocu_write_hosts(itadmin_job *job, dk3_stream_t *os) { itadmin_user *user; itadmin_host *host; int hshw = 0; /* Flag: Host section header written. */ int ushw; dk3sto_it_reset(job->i_us); while(NULL != (user = (itadmin_user *)dk3sto_it_next(job->i_usn))) { ushw = 0; if(user->i_ho) { dk3sto_it_reset(user->i_ho); while(NULL != (host = (itadmin_host *)dk3sto_it_next(user->i_ho))) { if(!(host->snd)) { if(!(hshw)) { itadmin_netdocu_write_sh_hosts(job, os); hshw = 1; } if(!(ushw)) { itadmin_netdocu_write_sh_user(job, os, user); ushw = 1; } itadmin_netdocu_write_one_host(job, os, host); } } } } ushw = 0; dk3sto_it_reset(job->i_ho); while(NULL != (host = (itadmin_host *)dk3sto_it_next(job->i_ho))) { if(!(host->un)) { if(!(host->snd)) { if(!itadmin_netdocu_is_byod(host)) { if(!(hshw)) { itadmin_netdocu_write_sh_hosts(job, os); hshw = 1; } if(!(ushw)) { itadmin_netdocu_write_sh_others(job, os); ushw = 1; } itadmin_netdocu_write_one_host(job, os, host); } } } } ushw = 0; dk3sto_it_reset(job->i_ho); while(NULL != (host = (itadmin_host *)dk3sto_it_next(job->i_ho))) { if(!(host->un)) { if(!(host->snd)) { if(itadmin_netdocu_is_byod(host)) { if(!(hshw)) { itadmin_netdocu_write_sh_hosts(job, os); hshw = 1; } if(!(ushw)) { itadmin_netdocu_write_sh_byod(job, os); ushw = 1; } itadmin_netdocu_write_byod_host(job, os, host); } } } } if(ushw) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[17]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } } /** Write start of longtable for Netgroup member hosts. @param job job structure. @param os Output stream. */ static void itadmin_netdocu_write_netgroup_member_longtable( itadmin_job *job, dk3_stream_t *os ) { int ie; ie = dk3app_get_encoding(job->app); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[16]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[32], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[27]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[28]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[29]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[30]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[31]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } /** Write one member host to longtable. @param job Job structure. @param os Output stream. @param ho Host. @param f_d Flag: Direct member (write bold). */ static void itadmin_netdocu_write_netgroup_member_host( itadmin_job *job, dk3_stream_t *os, itadmin_host *ho, int f_d ) { if(f_d) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[26]); } dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ho->sn); if(f_d) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); if(ho->co) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ho->co); } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } /** Write netgroups section. @param job Job structure. @param os Output stream. */ static int itadmin_netdocu_write_netgroups(itadmin_job *job, dk3_stream_t *os) { itadmin_netgroup *ng; itadmin_netgroup *ng2; itadmin_host *ho; dk3_sto_it_t *i_ng2; int ng_found = 0; int sh_found = 0; int ie; int back = 1; ie = dk3app_get_encoding(job->app); dk3sto_it_reset(job->i_ng); while(NULL != (ng = (itadmin_netgroup *)dk3sto_it_next(job->i_ng))) { #if VERSION_BEFORE_20150821 sh_found = 0; #endif if(!(ng_found)) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[12]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[19], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); ng_found = 1; } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[15]); dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ng->sn); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); if(ng->ln) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ng->ln); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } i_ng2 = dk3sto_it_open(job->s_ng); if(i_ng2) { dk3sto_it_reset(i_ng2); sh_found = 0; while(NULL != (ng2 = (itadmin_netgroup *)dk3sto_it_next(i_ng2))) { if(ng->no != ng2->no) { if(dk3bm_get(job->ngdep, ng->no, ng2->no)) { if(!(sh_found)) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[16]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[29], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[18]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } sh_found = 1; dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ng2->sn); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); if(ng2->ln) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ng2->ln); } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } } } if(sh_found) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[19]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } dk3sto_it_reset(i_ng2); sh_found = 0; while(NULL != (ng2 = (itadmin_netgroup *)dk3sto_it_next(i_ng2))) { if(ng->no != ng2->no) { if(dk3bm_get(job->ngdep, ng2->no, ng->no)) { if(!(sh_found)) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[16]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[30], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[18]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } sh_found = 1; dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ng2->sn); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); if(ng2->ln) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ng2->ln); } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } } } if(sh_found) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[19]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } dk3sto_it_close(i_ng2); } /* Member hosts */ dk3sto_it_reset(job->i_ho); sh_found = 0; while(NULL != (ho = (itadmin_host *)dk3sto_it_next(job->i_ho))) { if(2 == itadmin_netgroup_host_member(job, ng, ho)) { if(!(sh_found)) { itadmin_netdocu_write_netgroup_member_longtable(job, os); } sh_found = 1; itadmin_netdocu_write_netgroup_member_host(job, os, ho, 1); } } dk3sto_it_reset(job->i_ho); while(NULL != (ho = (itadmin_host *)dk3sto_it_next(job->i_ho))) { if(1 == itadmin_netgroup_host_member(job, ng, ho)) { if(!(sh_found)) { itadmin_netdocu_write_netgroup_member_longtable(job, os); } sh_found = 1; itadmin_netdocu_write_netgroup_member_host(job, os, ho, 0); } } if(sh_found) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[32]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[17]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } return back; } /** Write DHCP pools list. @param job Job structure. @param os Output stream. */ static void itadmin_netdocu_write_dhcp_pools(itadmin_job *job, dk3_stream_t *os) { itadmin_dhcp_pool *po; int is_first = 1; int ie; ie = dk3app_get_encoding(job->app); dk3sto_it_reset(job->i_dp); while(NULL != (po = (itadmin_dhcp_pool *)dk3sto_it_next(job->i_dp))) { if(is_first) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[12]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[33], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } else { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[33]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } is_first = 0; dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[15]); itadmin_tool_stream_ip(os, po->ip4s); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[18]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[34], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); itadmin_tool_stream_ip(os, po->ip4s); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[35], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); itadmin_tool_stream_ip(os, po->ip4e); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[36], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[(po->auc) ? 39 : 40], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[37], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[(po->duc) ? 39 : 40], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); if(po->acl) { if((po->acl)->sn) { dk3uc2lat_stputs(job->uc2l, os, (job->msg)[38], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); dk3uc2lat_c8_utf8_stputs(job->uc2l, os, (po->acl)->sn); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[19]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } if(0 == is_first) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[17]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } } /** Write DHCP classes list. @param job Job structure. @param os Output stream. */ static void itadmin_netdocu_write_dhcp_classes(itadmin_job *job, dk3_stream_t *os) { itadmin_dhcp_class *dc; itadmin_host *ho; int is_first = 1; int first_host; int ie; ie = dk3app_get_encoding(job->app); dk3sto_it_reset(job->i_dc); while(NULL != (dc = (itadmin_dhcp_class *)dk3sto_it_next(job->i_dc))) { if(is_first) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[12]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[41], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } else { } is_first = 0; dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[15]); dk3uc2lat_c8_utf8_stputs(job->uc2l, os, dc->sn); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); if(dc->ln) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, dc->ln); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } if(dc->i_ho) { dk3sto_it_reset(dc->i_ho); first_host = 1; while(NULL != (ho = (itadmin_host *)dk3sto_it_next(dc->i_ho))) { if(first_host) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[27]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[28]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[29]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[30]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[31]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } first_host = 0; dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ho->sn); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); if(ho->co) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, ho->co); } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } if(!(first_host)) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[32]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[17]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } } /** Write patches list. @param job Job structure. @param os Output stream. */ static void itadmin_netdocu_write_patches(itadmin_job *job, dk3_stream_t *os) { itadmin_connect *co; int is_first = 1; int ie; #line 1060 "itanetd.ctr" ie = dk3app_get_encoding(job->app); dk3sto_it_reset(job->i_pa); while(NULL != (co = (itadmin_connect *)dk3sto_it_next(job->i_pa))) { if(is_first) { #line 1064 "itanetd.ctr" /* Section patches */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[12]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[42], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); /* begin longtable */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[34]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[35]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[36]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[43], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[38]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[36]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[44], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[38]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[36]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[45], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[38]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[36]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[46], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[38]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[37]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[47], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[38]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[35]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); /* end first header */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[28]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[35]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[36]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[43], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[38]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[36]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[44], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[38]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[36]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[45], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[38]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[36]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[46], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[38]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[37]); dk3uc2lat_stputs(job->uc2l, os, (job->msg)[47], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[38]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[35]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); /* end header */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[29]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); /* end footer */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[30]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); /* end last footer */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[35]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[31]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } is_first = 0; #line 1137 "itanetd.ctr" /* Horitontal line */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[35]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); /* Dose */ #line 1142 "itanetd.ctr" dk3uc2lat_c8_utf8_stputs(job->uc2l, os, co->s); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); /* Gebaeude + Raum */ #line 1145 "itanetd.ctr" if(co->bu) { if((co->bu)->s) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, (co->bu)->s); if(co->room) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[1]); dk3uc2lat_c8_utf8_stputs(job->uc2l, os, co->room); } } else { if(co->room) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, co->room); } } } else { if(co->room) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, co->room); } } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); /* VLAN */ #line 1164 "itanetd.ctr" if(co->vl) { if((co->vl)->s) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, (co->vl)->s); } } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); /* Speed */ #line 1171 "itanetd.ctr" if(co->sp) { if((co->sp)->s) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, (co->sp)->s); } } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); /* Hub port */ #line 1178 "itanetd.ctr" if(co->hp) { dk3uc2lat_c8_utf8_stputs(job->uc2l, os, co->hp); } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[25]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } #line 1184 "itanetd.ctr" if(!(is_first)) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[32]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } #line 1188 "itanetd.ctr" } /** Write contents of network documentation. @param job Job structure. @param os Output stream. */ static void itadmin_netdocu_write_contents(itadmin_job *job, dk3_stream_t *os) { itadmin_netdocu_write_hosts(job, os); itadmin_netdocu_write_netgroups(job, os); itadmin_netdocu_write_dhcp_pools(job, os); itadmin_netdocu_write_dhcp_classes(job, os); itadmin_netdocu_write_patches(job, os); } /** Write entire output file. @param job Job structure. @param os Output stream. */ static void itadmin_netdocu_write_file(itadmin_job *job, dk3_stream_t *os) { int ie; ie = dk3app_get_encoding(job->app); if(job->ukoma) { itadmin_tool_write_section(os, itadmin_netdocu_file_start1a); } else { itadmin_tool_write_section(os, itadmin_netdocu_file_start1b); } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_strputs(os, (job->msg)[2], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); itadmin_tool_write_section(os, itadmin_netdocu_file_start4); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[4]); dk3stream_strputs(os, (job->msg)[0], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[5]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[6]); dk3stream_strputs(os, (job->msg)[1], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[5]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); if(job->admn) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[7]); dk3stream_strputs(os, job->admn, ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[5]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[8]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); itadmin_tool_write_section(os, itadmin_netdocu_file_start2); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[10]); dk3stream_strputs(os, (job->msg)[0], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); if(job->admn) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[9]); dk3stream_strputs(os, job->admn, ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[11]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } if(job->ukoma) { itadmin_tool_write_section(os, itadmin_netdocu_file_start3a); } itadmin_tool_write_section(os, itadmin_netdocu_file_start3); itadmin_netdocu_write_contents(job, os); dk3uc2lat_final_report(job->uc2l, os); itadmin_tool_write_section(os, itadmin_netdocu_file_end); } int itadmin_netdocu(itadmin_job *job) { FILE *fipo; dk3_stream_t *os; int back = 0; #line 1274 "itanetd.ctr" fipo = dk3sf_c8_fopen_app( itadmin_netdocu_c8_kw[3], itadmin_netdocu_c8_kw[2], job->app ); if(fipo) { #line 1278 "itanetd.ctr" os = dk3stream_open_file_app(fipo, DK3_STREAM_FLAG_WRITE, job->app); if(os) { #line 1280 "itanetd.ctr" itadmin_netdocu_write_file(job, os); dk3stream_close(os); back = 1; } else { #line 1284 "itanetd.ctr" } #if DK3_CHAR_SIZE == 1 if(!dk3sf_fclose_fn_app(fipo, itadmin_netdocu_c8_kw[3], job->app)) { back = 0; } #else if(!dk3sf_fclose_fn_app(fipo, NULL, job->app)) { back = 0; } #endif } else { #line 1295 "itanetd.ctr" } #line 1297 "itanetd.ctr" return back; }