/* WARNING: This file was generated by dkct. 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 */ /* Copyright (C) 2012-2017, Dirk Krause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above opyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** @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://dktools.sourceforge.net/}", /* 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 2: { #line 390 "itanetd.ctr" 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 399 "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]); } break; case 4: { #line 404 "itanetd.ctr" dk3uc2lat_stputs(job->uc2l, os, (job->msg)[31], ie); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } break; default: { #line 409 "itanetd.ctr" dk3uc2lat_stputs(job->uc2l, os, (job->msg)[23], ie); 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[20]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } 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 424 "itanetd.ctr" if(host->un) { itadmin_tool_table_line_start(job, os, 10); itadmin_tool_table_line_sep_rows(job, os); itadmin_tool_write_user_latex_long(job, os, host->un); itadmin_tool_table_line_finish(job, os, 0); } else { if(!(host->fgu)) { itadmin_tool_table_line(job, os, 10, NULL, 1, 0); } } #line 435 "itanetd.ctr" itadmin_tool_table_line(job, os, 6, host->co, 1, 0); /* Ort (Gebaeude und Raum) */ #line 437 "itanetd.ctr" itadmin_tool_table_line_start(job, os, 11); itadmin_tool_table_line_sep_rows(job, 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 452 "itanetd.ctr" itadmin_tool_table_line_finish(job, 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(job, os); itadmin_tool_stream_ip(os, host->ipv4); itadmin_tool_table_line_finish(job, 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 503 "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 526 "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(job, os); itadmin_tool_write_user_latex_long(job, os, host->un); itadmin_tool_table_line_finish(job, 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(job, os); itadmin_tool_stream_ip(os, host->ipv4); itadmin_tool_table_line_finish(job, 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 572 "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 ng Netgroup. @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_netgroup *ng, 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, ng, 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, ng, 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 1016 "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 1020 "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 1093 "itanetd.ctr" /* Horitontal line */ dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[35]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); /* Dose */ #line 1098 "itanetd.ctr" dk3uc2lat_c8_utf8_stputs(job->uc2l, os, co->s); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[24]); /* Gebaeude + Raum */ #line 1101 "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 1120 "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 1127 "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 1134 "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 1140 "itanetd.ctr" if(!(is_first)) { dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[32]); dk3stream_c8_fputs(os, itadmin_netdocu_c8_kw[0]); } #line 1144 "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(job, os, itadmin_netdocu_file_start1a); } else { itadmin_tool_write_section(job, 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(job, 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(job, 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(job, os, itadmin_netdocu_file_start3a); } itadmin_tool_write_section(job, os, itadmin_netdocu_file_start3); itadmin_netdocu_write_contents(job, os); dk3uc2lat_final_report(job->uc2l, os); itadmin_tool_write_section(job, os, itadmin_netdocu_file_end); } int itadmin_netdocu(itadmin_job *job) { FILE *fipo; dk3_stream_t *os; int back = 0; #line 1230 "itanetd.ctr" fipo = dk3sf_c8_fopen_app( itadmin_netdocu_c8_kw[3], itadmin_netdocu_c8_kw[2], job->app ); if(fipo) { #line 1234 "itanetd.ctr" os = dk3stream_open_file_app(fipo, DK3_STREAM_FLAG_WRITE, job->app); if(os) { #line 1236 "itanetd.ctr" itadmin_netdocu_write_file(job, os); dk3stream_close(os); back = 1; } else { #line 1240 "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 1251 "itanetd.ctr" } #line 1253 "itanetd.ctr" return back; }