ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/doc/reference.conf
(Generate patch)

Comparing:
ircd-hybrid-7.2/etc/example.conf.in (file contents), Revision 897 by db, Sat Nov 3 17:13:32 2007 UTC vs.
ircd-hybrid-8/etc/example.conf (file contents), Revision 1250 by michael, Sat Oct 1 10:48:16 2011 UTC

# Line 1 | Line 1
1   /* doc/example.conf - ircd-hybrid-7 Example configuration file
2 < * Copyright (C) 2000-2006 Hybrid Development Team
2 > * Copyright (C) 2000-2011 Hybrid Development Team
3   *
4   * Written by ejb, wcampbel, db, leeh and others
5   * Other example configurations can be found in the source dir under
# Line 43 | Line 43
43   */
44   serverinfo {
45          /*
46 <         * name: the name of our server.  This cannot be changed at runtime.
46 >         * name: the name of this server.  This cannot be changed at runtime.
47           */
48          name = "hades.arpa";
49  
# Line 76 | Line 76 | serverinfo {
76  
77          /*
78           * vhost: the IP to bind to when we connect outward to ipv4 servers.
79 <         * This should be an ipv4 IP only, or "* for INADDR_ANY.
79 >         * This should be an ipv4 IP only, or "*" for INADDR_ANY.
80           */
81          #vhost = "192.169.0.1";
82  
83          /*
84           * vhost6: the IP to bind to when we connect outward to ipv6 servers.
85 <         * This should be an ipv6 IP only, or "* for INADDR_ANY.
85 >         * This should be an ipv6 IP only, or "*" for INADDR_ANY.
86           */
87          #vhost6 = "3ffe:80e8:546::2";
88  
# Line 90 | Line 90 | serverinfo {
90          max_clients = 512;
91  
92          /*
93 <         * rsa key: the path to the file containing our rsa key for cryptlink.
93 >         * rsa_private_key_file: the path to the file containing our
94 >         * rsa key for cryptlink.
95           *
96           * Example command to store a 2048 bit RSA keypair in
97           * rsa.key, and the public key in rsa.pub:
98           *
99 <         *      openssl genrsa -out rsa.key 2048
99 >         *      openssl genrsa -out rsa.key 2048
100           *      openssl rsa -in rsa.key -pubout -out rsa.pub
101           *      chown <ircd-user>.<ircd.group> rsa.key rsa.pub
102           *      chmod 0600 rsa.key
# Line 104 | Line 105 | serverinfo {
105          #rsa_private_key_file = "/usr/local/ircd/etc/rsa.key";
106  
107          /*
108 <         * ssl certificate: the path to the file containing our ssl certificate
109 <         * for encrypted client connection.
108 >         * ssl_certificate_file: the path to the file containing our
109 >         * ssl certificate for encrypted client connection.
110           *
111           * This assumes your private RSA key is stored in rsa.key. You
112           * MUST have an RSA key in order to generate the certificate
# Line 122 | Line 123 | serverinfo {
123           *      E-mail: you@domain.com
124           */
125          #ssl_certificate_file = "/usr/local/ircd/etc/cert.pem";
126 +
127 +        /*
128 +         * ssl_server_protocol:
129 +         * SSL/TLS protocols we provide for incoming secure connections.
130 +         * This can be either sslv3 for SSLv3, and/or tlsv1 for TLSv1.
131 +         * SSLv2 is not suppported. This cannot be changed at runtime.
132 +         */
133 +        #ssl_server_protocol = sslv3, tlsv1;
134   };
135  
136   /*
137 < * admin {}:  contains admin information about the server. (OLD A:)
137 > * admin {}:  contains admin information about the server
138   */
139   admin {
140          name = "Smurf target";
# Line 134 | Line 143 | admin {
143   };
144  
145   /*
146 < * log {}:  contains information about logfiles.
138 < */
139 < log {
140 <        /* Do you want to enable logging to ircd.log? */
141 <        use_logging = yes;
142 <
143 <        /*
144 <         * logfiles: the logfiles to use for user connects, /oper uses,
145 <         * and failed /oper.  These files must exist for logging to be used.
146 <         */
147 <        fname_userlog = "logs/userlog";
148 <        fname_operlog = "logs/operlog";
149 <        fname_killlog = "logs/kill";
150 <        fname_klinelog = "logs/kline";
151 <        fname_glinelog = "logs/gline";
152 <
153 <        /*
154 <         * log_level: the amount of detail to log in ircd.log.  The
155 <         * higher, the more information is logged.  May be changed
156 <         * once the server is running via /quote SET LOG.  Either:
157 <         * L_CRIT, L_ERROR, L_WARN, L_NOTICE, L_TRACE, L_INFO or L_DEBUG
158 <         */
159 <        log_level = L_INFO;
160 < };
161 <
162 < /*
163 < * class {}:  contains information about classes for users (OLD Y:)
146 > * class {}:  contains information about classes for users
147   */
148   class {
149          /* name: the name of the class.  classes are text now */
# Line 241 | Line 224 | class {
224   };
225  
226   /*
227 < * listen {}:  contains information about the ports ircd listens on (OLD P:)
227 > * listen {}:  contains information about the ports ircd listens on
228   */
229   listen {
230          /*
# Line 259 | Line 242 | listen {
242           * unless you are an administrator.
243           *
244           * NOTE: The "flags" directive has to come before "port".  Always!
245 +         *
246 +         * Currently available flags are:
247 +         *
248 +         *  ssl    - Port is for SSL client connections only
249 +         *  server - Only server connections are permitted
250 +         *  hidden - Port is hidden from /stats P, unless you're an admin
251           */
252          flags = hidden, ssl;
253          host = "192.168.0.1";
# Line 276 | Line 265 | listen {
265   };
266  
267   /*
268 < * auth {}:  allow users to connect to the ircd (OLD I:)
268 > * auth {}:  allow users to connect to the ircd
269   */
270   auth {
271          /*
# Line 305 | Line 294 | auth {
294          class = "opers";
295  
296          /*
297 <         * need_password: don't allow users who haven't supplied the correct
298 <         *                password to connect using another auth{} block
299 <         *                ('&' prefix on /stats I if disabled)
300 <         * need_ident:    require the user to have identd to connect ('+' prefix on /stats I)
301 <         * spoof_notice:  enable spoofing notification to admins
302 <         * exceed_limit:  allow a user to exceed class limits ('>' prefix on /stats I)
303 <         * kline_exempt:  exempt this user from k/glines ('^' prefix on /stats I)
304 <         * gline_exempt:  exempt this user from glines ('_' prefix on /stats I)
305 <         * resv_exempt:   exempt this user from resvs ('$' prefix on /stats I)
306 <         * no_tilde:      remove ~ from a user with no ident ('-' prefix on /stats I)
307 <         * can_flood:     allow this user to exceed flood limits ('|' prefix on /stats I)
319 <         * can_idle:      exempt this user from idle restrictions ('<' prefix on /stats I)
297 >         * need_password - don't allow users who haven't supplied the correct
298 >         *                 password to connect using another auth{} block
299 >         *                 ('&' prefix on /stats I if disabled)
300 >         * need_ident    - require the user to have identd to connect ('+' prefix on /stats I)
301 >         * spoof_notice  - enable spoofing notification to admins
302 >         * exceed_limit  - allow a user to exceed class limits ('>' prefix on /stats I)
303 >         * kline_exempt  - exempt this user from k/glines ('^' prefix on /stats I)
304 >         * gline_exempt  - exempt this user from glines ('_' prefix on /stats I)
305 >         * resv_exempt   - exempt this user from resvs ('$' prefix on /stats I)
306 >         * no_tilde      - remove ~ from a user with no ident ('-' prefix on /stats I)
307 >         * can_flood     - allow this user to exceed flood limits ('|' prefix on /stats I)
308           */
309          flags = need_password, spoof_notice, exceed_limit, kline_exempt,
310 <                gline_exempt, resv_exempt, no_tilde, can_flood, can_idle;
310 >                gline_exempt, resv_exempt, no_tilde, can_flood;
311   };
312  
313   auth {
# Line 344 | Line 332 | auth {
332   };
333  
334   /*
335 < * operator {}:  defines ircd operators. (OLD O:)
335 > * operator {}:  defines ircd operators
336   *
337   * ircd-hybrid no longer supports local operators, privileges are
338   * controlled via flags.
# Line 363 | Line 351 | operator {
351  
352          /*
353           * password: the password required to oper.  By default this will
354 <         * need to be encrypted using 'mkpasswd'.  MD5 is supported.
354 >         * need to be encrypted by using the provided mkpasswd tool.
355 >         * Several password hash algorithms are available depending
356 >         * on your system's crypt() implementation. For example, a modern
357 >         * glibc already has support for SHA-256/512, and MD5 encryption
358 >         * algorithms.
359           */
360 <        password = "etcnjl8juSU1E";
360 >        password = "$5$x5zof8qe.Yc7/bPp$5zIg1Le2Lsgd4CvOjaD20pr5PmcfD7ha/9b2.TaUyG4";
361  
362          /*
363           * encrypted: controls whether the oper password above has been
364 <         * encrypted.  (OLD CRYPT_OPER_PASSWORD now optional per operator)
364 >         * encrypted.
365           */
366          encrypted = yes;
367  
# Line 390 | Line 382 | operator {
382           *
383           * +b - bots         - See bot and drone flooding notices
384           * +c - cconn        - Client connection/quit notices
385 +         * +C - cconn_full   - Client connection/quit notices full
386           * +D - deaf         - Don't receive channel messages
387           * +d - debug        - See debugging notices
388           * +f - full         - See I: line full notices
# Line 412 | Line 405 | operator {
405  
406          /*
407           * privileges: controls the activities and commands an oper is
408 <         * allowed to do on the server.  All options default to no.
408 >         * allowed to do on the server. All options default to no.
409           * Available options:
410           *
411 <         * global_kill:  allows remote users to be /KILL'd (OLD 'O' flag)
412 <         * remote:       allows remote SQUIT and CONNECT   (OLD 'R' flag)
413 <         * remoteban:    allows remote KLINE/UNKLINE
414 <         * kline:        allows KILL, KLINE and DLINE      (OLD 'K' flag)
415 <         * unkline:      allows UNKLINE and UNDLINE        (OLD 'U' flag)
416 <         * gline:        allows GLINE                      (OLD 'G' flag)
417 <         * xline:         allows XLINE                     (OLD 'X' flag)
418 <         * operwall:     allows OPERWALL
419 <         * nick_changes: allows oper to see nickchanges    (OLD 'N' flag)
420 <         *               via usermode +n
421 <         * rehash:       allows oper to REHASH config      (OLD 'H' flag)
422 <         * die:          allows DIE and RESTART            (OLD 'D' flag)
423 <         * admin:        gives admin privileges.  admins
424 <         *               may (un)load modules and see the
425 <         *               real IPs of servers.
426 <         * hidden_admin: same as 'admin', but noone can recognize you as
427 <         *               being an admin
428 <         * hidden_oper:  not shown in /stats p (except for other operators)
429 <         */
430 <        /* You can either use
431 <         * die = yes;
432 <         * rehash = yes;
433 <         *
434 <         * or in a flags statement i.e.
435 <         * flags = die, rehash;
436 <         *
437 <         * You can also negate a flag with ~ i.e.
445 <         * flags = ~remote;
446 <         *
447 <         */
448 <        flags = global_kill, remote, kline, unkline, xline,
449 <                die, rehash, nick_changes, admin, operwall;
411 >         * module       - allows MODLIST, MODRESTART, MODLOAD, MODUNLOAD
412 >         * global_kill  - allows remote users to be /KILL'd
413 >         * remote       - allows remote SQUIT and CONNECT
414 >         * remoteban    - allows remote KLINE/UNKLINE
415 >         * kline        - allows KILL, KLINE and DLINE
416 >         * unkline      - allows UNKLINE and UNDLINE
417 >         * gline        - allows GLINE
418 >         * xline        - allows XLINE
419 >         * globops      - allows GLOBOPS
420 >         * operwall     - allows OPERWALL
421 >         * nick_changes - allows oper to see nickchanges via usermode +n
422 >         * rehash       - allows oper to REHASH config
423 >         * die          - allows DIE
424 >         * restart      - allows RESTART
425 >         * admin        - gives admin privileges. admins for example,
426 >         *                may see the real IP addresses of servers.
427 >         * hidden_admin - same as 'admin', but noone can recognize you as
428 >         *                being an admin
429 >         * hidden_oper  - not shown in /stats p (except for other operators)
430 >         */
431 >        flags = global_kill, remote, kline, unkline, xline, globops, restart,
432 >                die, rehash, nick_changes, admin, operwall, module;
433 > };
434 >
435 > service {
436 >        name = "service.someserver";
437 >        name = "stats.someserver;
438   };
439  
440   /*
441 < * connect {}:  controls servers we connect to (OLD C:, N:, H:, L:)
441 > * connect {}:  controls servers we connect to
442   */
443   connect {
444          /* name: the name of the server */
# Line 478 | Line 466 | connect {
466  
467          /*
468           * encrypted: controls whether the accept_password above has been
469 <         * encrypted.  (OLD CRYPT_LINK_PASSWORD now optional per connect)
469 >         * encrypted.
470           */
471          encrypted = no;
472  
# Line 497 | Line 485 | connect {
485           */
486   #       leaf_mask = "*.uk";
487  
500        /* fakename: the servername we pretend to be when we connect */
501 #       fakename = "*.arpa";
502
488          /* class: the class this server is in */
489          class = "server";
490  
491          /*
492 <         * autoconn:    controls whether we autoconnect to this server or not,
493 <         *              dependent on class limits.  By default, this is disabled.
494 <         * compressed:  controls whether traffic is compressed via ziplinks.
492 >         * autoconn   - controls whether we autoconnect to this server or not,
493 >         *              dependent on class limits. By default, this is disabled.
494 >         * compressed - controls whether traffic is compressed via ziplinks.
495           *              By default, this is disabled
496 <         * cryptlink:   enable full encryption for all data passing between our
496 >         * cryptlink  - enable full encryption for all data passing between our
497           *              server and this link and rsa authentication.
498 <         * burst_away:  This will send the /away string that users have set
498 >         * burst_away - This will send the /away string that users have set
499           *              on the server burst.  Note this can be a lot of data
500           *              and slow down your server burst.
501 <         * topicburst:  Send topics to this server during channel burst.  Works
501 >         * topicburst - Send topics to this server during channel burst.  Works
502           *              only if the server we are connecting to is capable
503           *              of TBURST/TB.
504           */
# Line 577 | Line 562 | connect "ipv6.some.server" {
562  
563   /*
564   * cluster {}:  servers that share klines/unkline/xline/unxline/resv/unresv/locops
565 < * automatically (OLD hyb6 SLAVE_SERVERS)
565 > * automatically
566   */
567   cluster {
568          /*
# Line 611 | Line 596 | cluster {
596   };
597  
598   /*
599 < * shared {}: users that are allowed to remote kline (OLD U:)
599 > * shared {}: users that are allowed to remote kline
600   *
601   * NOTE: This can be effectively used for remote klines.
602   *       Please note that there is no password authentication
# Line 650 | Line 635 | shared {
635   };
636  
637   /*
638 < * kill {}:  users that are not allowed to connect (OLD K:)
638 > * kill {}:  users that are not allowed to connect
639   * Oper issued klines will be added to the specified kline config
640   */
641   kill {
# Line 659 | Line 644 | kill {
644   };
645  
646   kill {
647 <        user = "^O[[:alpha:]]?[[:digit:]]+(x\.o|\.xo)$@^[[:alnum:]]{4}\.evilnet.org$";
647 >        user = "^O[[:alpha:]]?[[:digit:]]+(x\.o|\.xo)$@^[[:alnum:]]{4}\.evilnet.tld$";
648 >
649 >        /*
650 >         * NOTE: You have to set type=regex; when using a regular expression
651 >         * based user entry
652 >         */
653          type = regex;
654   };
655  
# Line 673 | Line 663 | deny {
663   };
664  
665   /*
666 < * exempt {}: IPs that are exempt from deny {} and Dlines. (OLD d:)
666 > * exempt {}: IPs that are exempt from deny {} and Dlines
667   */
668   exempt {
669          ip = "192.168.0.0/16";
670   };
671  
672   /*
673 < * resv {}:  nicks and channels users may not use/join (OLD Q:)
673 > * resv {}:  nicks and channels users may not use/join
674   */
675   resv {
676          /* reason: the reason for the proceeding resv's */
677 <        reason = "There are no services on this network";
677 >        reason = "Reserved for services";
678  
679          /* resv: the nicks and channels users may not join/use */
680 <        nick = "nickserv";
681 <        nick = "chanserv";
680 >        nick = "Global";
681 >        nick = "DevNull";
682 >        nick = "Services";
683 >        nick = "StatServ";
684 >        nick = "HostServ";
685 >        nick = "NickServ";
686 >        nick = "ChanServ";
687 >        nick = "MemoServ";
688 >        nick = "OperServ";
689          channel = "#services";
690  
691          /* resv: wildcard masks are also supported in nicks only */
# Line 717 | Line 714 | gecos {
714  
715   gecos {
716          name = "^\[J[0o]hn Do[3e]\]-[0-9]{2,5}$";
717 +
718 +        /*
719 +         * NOTE: You have to set type=regex; when using a regular expression
720 +         * based name entry
721 +         */
722          type = regex;
723   };
724  
# Line 731 | Line 733 | channel {
733           *
734           *   2 | bold
735           *   3 | mirc color
736 <         *  15 | plain text
736 >         *  15 | plain text
737           *  22 | reverse
738           *  31 | underline
739           * 160 | non-breaking space
# Line 772 | Line 774 | channel {
774           * knock_delay: The amount of time a user must wait between issuing
775           * the knock command.
776           */
777 <        knock_delay = 1 minutes;
777 >        knock_delay = 5 minutes;
778  
779          /*
780           * knock_delay_channel: How often a knock to any specific channel
# Line 826 | Line 828 | channel {
828           */
829          default_split_server_count = 0;
830  
831 <        /* split no create: disallow users creating channels on split. */
831 >        /* no_create_on_split: disallow users creating channels on split. */
832          no_create_on_split = yes;
833  
834 <        /* split: no join: disallow users joining channels at all on a split */
834 >        /* no_join_on_split: disallow users joining channels at all on a split. */
835          no_join_on_split = no;
836   };
837  
# Line 874 | Line 876 | serverhide {
876          hidden_name = "*.hidden.com";
877  
878          /*
879 <         * hide_server_ips: If this is disabled, opers will be unable to see servers
880 <         * ips and will be shown a masked ip, admins will be shown the real ip.
881 <         *
882 <         * If this is enabled, nobody can see a servers ip.  *This is a kludge*, it
883 <         * has the side effect of hiding the ips everywhere, including logfiles.
879 >         * hide_server_ips: If this is disabled, opers will be unable to see
880 >         * servers ips and will be shown a masked ip, admins will be shown the
881 >         * real ip.
882 >         *
883 >         * If this is enabled, nobody can see a servers ip. *This is a kludge*,
884 >         * it has the side effect of hiding the ips everywhere, including
885 >         * logfiles.
886           *
887           * We recommend you leave this disabled, and just take care with who you
888           * give admin=yes; to.
# Line 891 | Line 895 | serverhide {
895   * compiled in options in config.h.  The general block is read at start time.
896   */
897   general {
898 <        /* max_watch: maximum WATCH entries */
899 <        max_watch = 64;
898 >        /* services_name: servername of nick/channel services */
899 >        services_name = "service.someserver";
900 >
901 >        /* max_watch: maximum WATCH entries a client can have. */
902 >        max_watch = 60;
903  
904          /*
905           * gline_min_cidr: the minimum required length of a CIDR bitmask
# Line 924 | Line 931 | general {
931  
932          /*
933           * Max time from the nickname change that still causes KILL
934 <         * automatically to switch for the current nick of that user. (seconds)
934 >         * automatically to switch for the current nick of that user.
935           */
936 <        kill_chase_time_limit = 90;
936 >        kill_chase_time_limit = 90 seconds;
937  
938          /*
939 <         * If hide_spoof_ips is disabled, opers will be allowed to see the real IP of spoofed
940 <         * users in /trace etc.  If this is defined they will be shown a masked IP.
939 >         * If hide_spoof_ips is disabled, opers will be allowed to see the real
940 >         * IP of spoofed users in /trace etc. If this is defined they will be
941 >         * shown a masked IP.
942           */
943          hide_spoof_ips = yes;
944  
# Line 977 | Line 985 | general {
985          dots_in_ident = 2;
986  
987          /*
980         * dot_in_ip6_addr: ircd-hybrid-6.0 and earlier will disallow hosts
981         * without a '.' in them.  This will add one to the end.  Only needed
982         * for older servers.
983         */
984        dot_in_ip6_addr = no;
985
986        /*
988           * min_nonwildcard: the minimum non wildcard characters in k/d/g lines
989           * placed via the server.  klines hand placed are exempt from limits.
990           * wildcard chars: '.' ':' '*' '?' '@' '!' '#'
# Line 1123 | Line 1124 | general {
1124          /* oper_pass_resv: allow opers to over-ride RESVs on nicks/channels */
1125          oper_pass_resv = yes;
1126  
1126        /*
1127         * idletime: the maximum amount of time a user may idle before
1128         * they are disconnected
1129         */
1130        idletime = 0;
1131
1127          /* REMOVE ME.  The following line checks you've been reading. */
1128          havent_read_conf = 1;
1129  
# Line 1157 | Line 1152 | general {
1152           *
1153           * +b - bots         - See bot and drone flooding notices
1154           * +c - cconn        - Client connection/quit notices
1155 +         * +C - cconn_full   - Client connection/quit notices full
1156           * +D - deaf         - Don't receive channel messages
1157           * +d - debug        - See debugging notices
1158           * +f - full         - See I: line full notices
# Line 1241 | Line 1237 | glines {
1237          duration = 1 day;
1238  
1239          /*
1240 <         * logging: which types of rules you want to log when triggered
1240 >         * log: which types of rules you want to log when triggered
1241           * (choose reject or block)
1242           */
1243 <        logging = reject, block;
1243 >        log = reject, block;
1244  
1245          /*
1246           * NOTE: gline ACLs can cause a desync of glines throughout the
# Line 1273 | Line 1269 | glines {
1269  
1270   modules {
1271          /*
1272 <         * module path: other paths to search for modules specified below
1272 >         * path: other paths to search for modules specified below
1273           * and in /modload.
1274           */
1275 <        path = "@datadir@/modules";
1276 <        path = "@datadir@/autoload";
1275 >        path = "/usr/local/ircd/lib/ircd-hybrid/modules";
1276 >        path = "/usr/local/ircd/lib/ircd-hybrid/modules/autoload";
1277  
1278          /* module: the name of a module to load on startup/rehash */
1279 <        #module = "some_module.so";
1279 >        #module = "some_module.la";
1280 > };
1281 >
1282 > /*
1283 > * log {}:  contains information about logfiles.
1284 > */
1285 > log {
1286 >        /* Do you want to enable logging to ircd.log? */
1287 >        use_logging = yes;
1288 >        timestamp = yes;
1289 >
1290 >        file {
1291 >                type = oper;
1292 >                name = "/home/ircd/var/log/oper.log";
1293 >                size = unlimited;
1294 >        };
1295 >
1296 >        file {
1297 >                type = user;
1298 >                name = "/home/ircd/var/log/user.log";
1299 >                size = 50 megabytes;
1300 >        };
1301 >
1302 >        file {
1303 >                type = kill;
1304 >                name = "/home/ircd/var/log/kill.log";
1305 >                size = 50 megabytes;
1306 >        };
1307 >
1308 >        file {
1309 >                type = kline;
1310 >                name = "/home/ircd/var/log/kline.log";
1311 >                size = 50 megabytes;
1312 >        };
1313 >
1314 >        file {
1315 >                type = dline;
1316 >                name = "/home/ircd/var/log/dline.log";
1317 >                size = 50 megabytes;
1318 >        };
1319 >
1320 >        file {
1321 >                type = gline;
1322 >                name = "/home/ircd/var/log/gline.log";
1323 >                size = 50 megabytes;
1324 >        };
1325 >
1326 >        file {
1327 >                type = debug;
1328 >                name = "/home/ircd/var/log/debug.log";
1329 >                size = 50 megabytes;
1330 >        };
1331   };

Comparing:
ircd-hybrid-7.2/etc/example.conf.in (property svn:keywords), Revision 897 by db, Sat Nov 3 17:13:32 2007 UTC vs.
ircd-hybrid-8/etc/example.conf (property svn:keywords), Revision 1250 by michael, Sat Oct 1 10:48:16 2011 UTC

# Line 1 | Line 1
1 < "Author Date Id Revision"
1 > Id Revision

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)