root/trunk/tnameserver.c

Revision 1583, 13.3 KB (checked in by Gary, 19 months ago)

unxsVZ fixed major install bug missing ) in create table SQL.

  • Property svn:keywords set to id
Line 
1/*
2FILE
3        tNameserver source code of unxsVZ.cgi
4        Built by mysqlRAD2.cgi (C) Gary Wallis 2001-2007
5        $Id$
6PURPOSE
7        Schema dependent RAD generated file.
8        Program app functionality in tnameserverfunc.h while
9        RAD is still to be used.
10AUTHOR/LEGAL
11        (C) 2001-2010 Gary Wallis for Unixservice, LLC.
12        GPLv2 license applies. See LICENSE file included.
13*/
14
15
16#include "mysqlrad.h"
17
18//Table Variables
19//Table Variables
20//uNameserver: Primary Key
21static unsigned uNameserver=0;
22//cLabel: Short label
23static char cLabel[33]={""};
24//uOwner: Record owner
25static unsigned uOwner=0;
26//uCreatedBy: uClient for last insert
27static unsigned uCreatedBy=0;
28//uCreatedDate: Unix seconds date last insert
29static time_t uCreatedDate=0;
30//uModBy: uClient for last update
31static unsigned uModBy=0;
32//uModDate: Unix seconds date last update
33static time_t uModDate=0;
34
35#define VAR_LIST_tNameserver "tNameserver.uNameserver,tNameserver.cLabel,tNameserver.uOwner,tNameserver.uCreatedBy,tNameserver.uCreatedDate,tNameserver.uModBy,tNameserver.uModDate"
36
37 //Local only
38void Insert_tNameserver(void);
39void Update_tNameserver(char *cRowid);
40void ProcesstNameserverListVars(pentry entries[], int x);
41
42 //In tNameserverfunc.h file included below
43void ExtProcesstNameserverVars(pentry entries[], int x);
44void ExttNameserverCommands(pentry entries[], int x);
45void ExttNameserverButtons(void);
46void ExttNameserverNavBar(void);
47void ExttNameserverGetHook(entry gentries[], int x);
48void ExttNameserverSelect(void);
49void ExttNameserverSelectRow(void);
50void ExttNameserverListSelect(void);
51void ExttNameserverListFilter(void);
52void ExttNameserverAuxTable(void);
53
54#include "tnameserverfunc.h"
55
56 //Table Variables Assignment Function
57void ProcesstNameserverVars(pentry entries[], int x)
58{
59        register int i;
60
61
62        for(i=0;i<x;i++)
63        {
64                if(!strcmp(entries[i].name,"uNameserver"))
65                        sscanf(entries[i].val,"%u",&uNameserver);
66                else if(!strcmp(entries[i].name,"cLabel"))
67                        sprintf(cLabel,"%.32s",entries[i].val);
68                else if(!strcmp(entries[i].name,"uOwner"))
69                        sscanf(entries[i].val,"%u",&uOwner);
70                else if(!strcmp(entries[i].name,"uCreatedBy"))
71                        sscanf(entries[i].val,"%u",&uCreatedBy);
72                else if(!strcmp(entries[i].name,"uCreatedDate"))
73                        sscanf(entries[i].val,"%lu",&uCreatedDate);
74                else if(!strcmp(entries[i].name,"uModBy"))
75                        sscanf(entries[i].val,"%u",&uModBy);
76                else if(!strcmp(entries[i].name,"uModDate"))
77                        sscanf(entries[i].val,"%lu",&uModDate);
78        }
79
80        //After so we can overwrite form data if needed.
81        ExtProcesstNameserverVars(entries,x);
82
83}//ProcesstNameserverVars()
84
85
86void ProcesstNameserverListVars(pentry entries[], int x)
87{
88        register int i;
89
90        for(i=0;i<x;i++)
91        {
92                if(!strncmp(entries[i].name,"ED",2))
93                {
94                        sscanf(entries[i].name+2,"%u",&uNameserver);
95                        guMode=2002;
96                        tNameserver("");
97                }
98        }
99}//void ProcesstNameserverListVars(pentry entries[], int x)
100
101
102int tNameserverCommands(pentry entries[], int x)
103{
104        ProcessControlVars(entries,x);
105
106        ExttNameserverCommands(entries,x);
107
108        if(!strcmp(gcFunction,"tNameserverTools"))
109        {
110                if(!strcmp(gcFind,LANG_NB_LIST))
111                {
112                        tNameserverList();
113                }
114
115                //Default
116                ProcesstNameserverVars(entries,x);
117                tNameserver("");
118        }
119        else if(!strcmp(gcFunction,"tNameserverList"))
120        {
121                ProcessControlVars(entries,x);
122                ProcesstNameserverListVars(entries,x);
123                tNameserverList();
124        }
125
126        return(0);
127
128}//tNameserverCommands()
129
130
131void tNameserver(const char *cResult)
132{
133        MYSQL_RES *res;
134        MYSQL_RES *res2;
135        MYSQL_ROW field;
136
137        //Internal skip reloading
138        if(!cResult[0])
139        {
140                if(guMode)
141                        ExttNameserverSelectRow();
142                else
143                        ExttNameserverSelect();
144
145                mysql_query(&gMysql,gcQuery);
146                if(mysql_errno(&gMysql))
147                {
148                        if(strstr(mysql_error(&gMysql)," doesn't exist"))
149                        {
150                                CreatetNameserver();
151                                unxsVZ("New tNameserver table created");
152                        }
153                        else
154                        {
155                                htmlPlainTextError(mysql_error(&gMysql));
156                        }
157                }
158
159                res=mysql_store_result(&gMysql);
160                if((guI=mysql_num_rows(res)))
161                {
162                        if(guMode==6)
163                        {
164                        sprintf(gcQuery,"SELECT _rowid FROM tNameserver WHERE uNameserver=%u"
165                                                ,uNameserver);
166                                MYSQL_RUN_STORE(res2);
167                                field=mysql_fetch_row(res2);
168                                sscanf(field[0],"%lu",&gluRowid);
169                                gluRowid++;
170                        }
171                        PageMachine("",0,"");
172                        if(!guMode) mysql_data_seek(res,gluRowid-1);
173                        field=mysql_fetch_row(res);
174                sscanf(field[0],"%u",&uNameserver);
175                sprintf(cLabel,"%.32s",field[1]);
176                sscanf(field[2],"%u",&uOwner);
177                sscanf(field[3],"%u",&uCreatedBy);
178                sscanf(field[4],"%lu",&uCreatedDate);
179                sscanf(field[5],"%u",&uModBy);
180                sscanf(field[6],"%lu",&uModDate);
181
182                }
183
184        }//Internal Skip
185
186        Header_ism3(":: Container Resolver Nameserver Set",0);
187        printf("<table width=100%% cellspacing=0 cellpadding=0>\n");
188        printf("<tr><td colspan=2 align=right valign=center>");
189
190
191        printf("<input type=hidden name=gcFunction value=tNameserverTools>");
192        printf("<input type=hidden name=gluRowid value=%lu>",gluRowid);
193        if(guI)
194        {
195                if(guMode==6)
196                        //printf(" Found");
197                        printf(LANG_NBR_FOUND);
198                else if(guMode==5)
199                        //printf(" Modified");
200                        printf(LANG_NBR_MODIFIED);
201                else if(guMode==4)
202                        //printf(" New");
203                        printf(LANG_NBR_NEW);
204                printf(LANG_NBRF_SHOWING,gluRowid,guI);
205        }
206        else
207        {
208                if(!cResult[0])
209                //printf(" No records found");
210                printf(LANG_NBR_NORECS);
211        }
212        if(cResult[0]) printf("%s",cResult);
213        printf("</td></tr>");
214        printf("<tr><td valign=top width=25%%>");
215
216        ExttNameserverButtons();
217
218        printf("</td><td valign=top>");
219        //
220        OpenFieldSet("tNameserver Record Data",100);
221
222        if(guMode==2000 || guMode==2002)
223                tNameserverInput(1);
224        else
225                tNameserverInput(0);
226
227        //
228        CloseFieldSet();
229
230        //Bottom table
231        printf("<tr><td colspan=2>");
232        ExttNameserverAuxTable();
233
234        Footer_ism3();
235
236}//end of tNameserver();
237
238
239void tNameserverInput(unsigned uMode)
240{
241
242//uNameserver
243        OpenRow(LANG_FL_tNameserver_uNameserver,"black");
244        printf("<input title='%s' type=text name=uNameserver value=%u size=16 maxlength=10 "
245,LANG_FT_tNameserver_uNameserver,uNameserver);
246        if(guPermLevel>=20 && uMode)
247        {
248                printf("></td></tr>\n");
249        }
250        else
251        {
252                printf("disabled></td></tr>\n");
253                printf("<input type=hidden name=uNameserver value=%u >\n",uNameserver);
254        }
255//cLabel
256        OpenRow(LANG_FL_tNameserver_cLabel,"black");
257        printf("<input title='%s' type=text name=cLabel value=\"%s\" size=40 maxlength=32 "
258,LANG_FT_tNameserver_cLabel,EncodeDoubleQuotes(cLabel));
259        if(guPermLevel>=0 && uMode)
260        {
261                printf("></td></tr>\n");
262        }
263        else
264        {
265                printf("disabled></td></tr>\n");
266                printf("<input type=hidden name=cLabel value=\"%s\">\n",EncodeDoubleQuotes(cLabel));
267        }
268//uOwner
269        OpenRow(LANG_FL_tNameserver_uOwner,"black");
270        if(guPermLevel>=20 && uMode)
271        {
272        printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey("tClient","cLabel",uOwner),uOwner);
273        }
274        else
275        {
276        printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey("tClient","cLabel",uOwner),uOwner);
277        }
278//uCreatedBy
279        OpenRow(LANG_FL_tNameserver_uCreatedBy,"black");
280        if(guPermLevel>=20 && uMode)
281        {
282        printf("%s<input type=hidden name=uCreatedBy value=%u >\n",ForeignKey("tClient","cLabel",uCreatedBy),uCreatedBy);
283        }
284        else
285        {
286        printf("%s<input type=hidden name=uCreatedBy value=%u >\n",ForeignKey("tClient","cLabel",uCreatedBy),uCreatedBy);
287        }
288//uCreatedDate
289        OpenRow(LANG_FL_tNameserver_uCreatedDate,"black");
290        if(uCreatedDate)
291                printf("%s\n\n",ctime(&uCreatedDate));
292        else
293                printf("---\n\n");
294        printf("<input type=hidden name=uCreatedDate value=%lu >\n",uCreatedDate);
295//uModBy
296        OpenRow(LANG_FL_tNameserver_uModBy,"black");
297        if(guPermLevel>=20 && uMode)
298        {
299        printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey("tClient","cLabel",uModBy),uModBy);
300        }
301        else
302        {
303        printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey("tClient","cLabel",uModBy),uModBy);
304        }
305//uModDate
306        OpenRow(LANG_FL_tNameserver_uModDate,"black");
307        if(uModDate)
308                printf("%s\n\n",ctime(&uModDate));
309        else
310                printf("---\n\n");
311        printf("<input type=hidden name=uModDate value=%lu >\n",uModDate);
312        printf("</tr>\n");
313
314
315
316}//void tNameserverInput(unsigned uMode)
317
318
319void NewtNameserver(unsigned uMode)
320{
321        register int i=0;
322        MYSQL_RES *res;
323
324        sprintf(gcQuery,"SELECT uNameserver FROM tNameserver\
325                                WHERE uNameserver=%u"
326                                                        ,uNameserver);
327        MYSQL_RUN_STORE(res);
328        i=mysql_num_rows(res);
329
330        if(i)
331                //tNameserver("<blink>Record already exists");
332                tNameserver(LANG_NBR_RECEXISTS);
333
334        //insert query
335        Insert_tNameserver();
336        if(mysql_errno(&gMysql)) htmlPlainTextError(mysql_error(&gMysql));
337        //sprintf(gcQuery,"New record %u added");
338        uNameserver=mysql_insert_id(&gMysql);
339        uCreatedDate=luGetCreatedDate("tNameserver",uNameserver);
340        unxsVZLog(uNameserver,"tNameserver","New");
341
342        if(!uMode)
343        {
344        sprintf(gcQuery,LANG_NBR_NEWRECADDED,uNameserver);
345        tNameserver(gcQuery);
346        }
347
348}//NewtNameserver(unsigned uMode)
349
350
351void DeletetNameserver(void)
352{
353        sprintf(gcQuery,"DELETE FROM tNameserver WHERE uNameserver=%u AND ( uOwner=%u OR %u>9 )"
354                                        ,uNameserver,guLoginClient,guPermLevel);
355        MYSQL_RUN;
356        //tNameserver("Record Deleted");
357        if(mysql_affected_rows(&gMysql)>0)
358        {
359                unxsVZLog(uNameserver,"tNameserver","Del");
360                tNameserver(LANG_NBR_RECDELETED);
361        }
362        else
363        {
364                unxsVZLog(uNameserver,"tNameserver","DelError");
365                tNameserver(LANG_NBR_RECNOTDELETED);
366        }
367
368}//void DeletetNameserver(void)
369
370
371void Insert_tNameserver(void)
372{
373        sprintf(gcQuery,"INSERT INTO tNameserver SET uNameserver=%u,cLabel='%s',uOwner=%u,uCreatedBy=%u,"
374                                "uCreatedDate=UNIX_TIMESTAMP(NOW())",
375                        uNameserver
376                        ,TextAreaSave(cLabel)
377                        ,uOwner
378                        ,uCreatedBy);
379        MYSQL_RUN;
380
381}//void Insert_tNameserver(void)
382
383
384void Update_tNameserver(char *cRowid)
385{
386        sprintf(gcQuery,"UPDATE tNameserver SET uNameserver=%u,cLabel='%s',uModBy=%u,"
387                        "uModDate=UNIX_TIMESTAMP(NOW()) WHERE _rowid=%s",
388                        uNameserver
389                        ,TextAreaSave(cLabel)
390                        ,uModBy,
391                        cRowid);
392        MYSQL_RUN;
393
394}//void Update_tNameserver(void)
395
396
397void ModtNameserver(void)
398{
399        register int i=0;
400        MYSQL_RES *res;
401        MYSQL_ROW field;
402        unsigned uPreModDate=0;
403
404        //Mod select gcQuery
405        if(guPermLevel<10)
406        sprintf(gcQuery,"SELECT tNameserver.uNameserver,\
407                                tNameserver.uModDate\
408                                FROM tNameserver,tClient\
409                                WHERE tNameserver.uNameserver=%u\
410                                AND tNameserver.uOwner=tClient.uClient\
411                                AND (tClient.uOwner=%u OR tClient.uClient=%u)"
412                        ,uNameserver,guLoginClient,guLoginClient);
413        else
414        sprintf(gcQuery,"SELECT uNameserver,uModDate FROM tNameserver\
415                                WHERE uNameserver=%u"
416                                                ,uNameserver);
417        MYSQL_RUN_STORE(res);
418        i=mysql_num_rows(res);
419
420        //if(i<1) tNameserver("<blink>Record does not exist");
421        if(i<1) tNameserver(LANG_NBR_RECNOTEXIST);
422        //if(i>1) tNameserver("<blink>Multiple rows!");
423        if(i>1) tNameserver(LANG_NBR_MULTRECS);
424
425        field=mysql_fetch_row(res);
426        sscanf(field[1],"%u",&uPreModDate);
427        if(uPreModDate!=uModDate) tNameserver(LANG_NBR_EXTMOD);
428
429        Update_tNameserver(field[0]);
430        if(mysql_errno(&gMysql)) htmlPlainTextError(mysql_error(&gMysql));
431        //sprintf(query,"record %s modified",field[0]);
432        sprintf(gcQuery,LANG_NBRF_REC_MODIFIED,field[0]);
433        uModDate=luGetModDate("tNameserver",uNameserver);
434        unxsVZLog(uNameserver,"tNameserver","Mod");
435        tNameserver(gcQuery);
436
437}//ModtNameserver(void)
438
439
440void tNameserverList(void)
441{
442        MYSQL_RES *res;
443        MYSQL_ROW field;
444
445        ExttNameserverListSelect();
446
447        MYSQL_RUN_STORE(res);
448        guI=mysql_num_rows(res);
449
450        PageMachine("tNameserverList",1,"");//1 is auto header list guMode. Opens table!
451
452        //Filter select drop down
453        ExttNameserverListFilter();
454
455        printf("<input type=text size=16 name=gcCommand maxlength=98 value=\"%s\" >",gcCommand);
456
457        printf("</table>\n");
458
459        printf("<table bgcolor=#9BC1B3 border=0 width=100%%>\n");
460        printf("<tr bgcolor=black>"
461                "<td><font face=arial,helvetica color=white>uNameserver"
462                "<td><font face=arial,helvetica color=white>cLabel"
463                "<td><font face=arial,helvetica color=white>uOwner"
464                "<td><font face=arial,helvetica color=white>uCreatedBy"
465                "<td><font face=arial,helvetica color=white>uCreatedDate"
466                "<td><font face=arial,helvetica color=white>uModBy"
467                "<td><font face=arial,helvetica color=white>uModDate</tr>");
468
469
470
471        mysql_data_seek(res,guStart-1);
472
473        for(guN=0;guN<(guEnd-guStart+1);guN++)
474        {
475                field=mysql_fetch_row(res);
476                if(!field)
477                {
478                        printf("<tr><td><font face=arial,helvetica>End of data</table>");
479                        Footer_ism3();
480                }
481                        if(guN % 2)
482                                printf("<tr bgcolor=#BBE1D3>");
483                        else
484                                printf("<tr>");
485                time_t luTime4=strtoul(field[4],NULL,10);
486                char cBuf4[32];
487                if(luTime4)
488                        ctime_r(&luTime4,cBuf4);
489                else
490                        sprintf(cBuf4,"---");
491                time_t luTime6=strtoul(field[6],NULL,10);
492                char cBuf6[32];
493                if(luTime6)
494                        ctime_r(&luTime6,cBuf6);
495                else
496                        sprintf(cBuf6,"---");
497                printf("<td><input type=submit name=ED%s value=Edit> %s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s</tr>"
498                        ,field[0]
499                        ,field[0]
500                        ,field[1]
501                        ,ForeignKey("tClient","cLabel",strtoul(field[2],NULL,10))
502                        ,ForeignKey("tClient","cLabel",strtoul(field[3],NULL,10))
503                        ,cBuf4
504                        ,ForeignKey("tClient","cLabel",strtoul(field[5],NULL,10))
505                        ,cBuf6);
506        }
507
508        printf("</table></form>\n");
509        Footer_ism3();
510
511}//tNameserverList()
512
513
514void CreatetNameserver(void)
515{
516        sprintf(gcQuery,"CREATE TABLE IF NOT EXISTS tNameserver ( "
517                        "uNameserver INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,"
518                        "cLabel VARCHAR(32) NOT NULL DEFAULT '',"
519                        "uOwner INT UNSIGNED NOT NULL DEFAULT 0, INDEX (uOwner),"
520                        "uCreatedBy INT UNSIGNED NOT NULL DEFAULT 0,"
521                        "uCreatedDate INT UNSIGNED NOT NULL DEFAULT 0,"
522                        "uModBy INT UNSIGNED NOT NULL DEFAULT 0,"
523                        "uModDate INT UNSIGNED NOT NULL DEFAULT 0,"
524                        "uDatacenter INT UNSIGNED NOT NULL DEFAULT 0 )");
525        mysql_query(&gMysql,gcQuery);
526        if(mysql_errno(&gMysql))
527                htmlPlainTextError(mysql_error(&gMysql));
528}//CreatetNameserver()
529
Note: See TracBrowser for help on using the browser.